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],如不能及時回覆請見諒!