1、使用usrp的收发测试:usrp_txrx.c
b210:2.4g 采样速率默认的7.68M ok
n310:2.4g 采样速率默认的7.68M ok
3.5g 采样速率默认的7.68M ok
n310在3.5g时收到的信号幅度大于2.4g,因为天线为3.5Ghz
2、使用uhd自带的测试:txrx_loopback_to_file
命令具体在benchmark文件中 (需要设置--type float,转换文件只支持float类型)
n310 3.5GHZ master_clock_rate 122.88Mhz
千兆方式:
1通道 采样速率为15.36M时ok
30.72M时会打印UUUUL之类的信息(王老师说是因为处理不过来,30.72M*32bit = 983Mbit/s,接近千兆很可能处理不过来)
4通道 采样速率为 3.84M时ok,4个通道的接收波形均使用matlab分析过
采样速率为7.68M时,会打印大量UUUULLLL信息,有时会报错ERROR_CODE_LATE_COMMAND,猜测原因同上(7.68MHZ*32bit*4 =983Mbit/s)
10g光口:
4通道:采样率测试 30.72MHZ ok (61.44MHZ会报错);收发数据测试报错
1通道:30.72mhz ok 61.44mhz ok 122.88mhz(采集时间长会失败,短时间ok)
3、修改说明
修改代码为收发信号均放保存在文件里,转换成matlab可识别的格式。
resave_file_complex_float.c 文件为将采集到的数据转换为实部和虚部的matlab文件格式(转换文件只支持float类型)
resave_file_complex_float_fragment.c 数据超过1M时matlab处理比较慢甚至无法读取,以1M为单位对原始数据进行分片转换并存储
可以将文件用gcc编译生成可执行文件,然后执行可执行文件
gcc resave_file_complex_float.c -o resave_file_complex_float
./resave_file_complex_float
注意:
(1)为了在matlab中画图,需要使用float类型
(2)采样速率只能为master_clock_rate整除(2^n)
(3)速率和频率之类的在参数中使用e6,不要使用六个零
(4)usrp_txrx_multi.c 代码未调通
dpdk-uhd测试:
1、使用txrx_loopback_to_file测试
单通道:可以达到122.88MPS/S
两通道:可以122.88MPS/S 从matlab看输出的数据有丢包,中间有一部分没有波形
四通道:在30.72MHZ时,还有少量丢包
从数据看使用dpdk并没有明显的提升
查看了优化文档:将cpu调至performance模式,提高主频,丢包减少
2.单发单收测试
参考txrx_loopback_to_file,写新文件一个只发送,一个只接收,为了使写文件不影响性能,只保存最后一帧发送和接收的数据。
开始使用1通道3.5GHZ载频3.84m的采样率进行调试,发现收到的数据的噪声,没有接收到想要的数据。
使用gnuradio,和n310一起模拟一个软件的频谱仪,发现在3.5ghz确实有信号,当时也有其他测试系统的信号,因此将载频调整3.4ghz;而且增益在50多db时信号强度才比较大;
将载频设置为3.4GHZ,增益调整为60db,保存最后接收的数据,使用matlab画图,果然是正确的!!!
既然通道开始上测试吧!
1通道:122.88m采样率 ok
2通道:122.88m采样率 ok
3通道:122.88m采样率 ok
4通道:122.88m采样率 发现只有数据有丢包现象,想着能搞的优化都搞过了,就这样吧!这天正好是周五,周末有事没能来加班。
周一早上想再确认下,又试了一遍还是丢包。看了下主频很低,并没有达到最大,原来高性能模式失效了。
手动重启了一下cpufreq服务,又测试了一遍,完美的波形没有丢包。
rx_multi_samples.cpp 只接收
tx_multi_samples.cpp 只发送
usrp.grc 使用gnuradio实现软件频谱仪的流程图
resave_file_complex_float.c 资源在https://download.csdn.net/download/wangpanpan1989/11956736
usrp.grc 资源在https://download.csdn.net/download/wangpanpan1989/11956739
没有积分的,如需要资源可以发送邮件索取:[email protected],如不能及时回复请见谅!