用NI技術(shù)設(shè)計的OFDM發(fā)射接收系統(tǒng)
本文引用地址:http://2s4d.com/article/157424.htm
對于單線程系統(tǒng),一般分為數(shù)據(jù)的采集模塊、分析處理模塊、顯示存儲模塊。這三個模塊在時間上是順序執(zhí)行的,即后一個模塊需等待前一個模塊數(shù)據(jù)的到來時才開始工作。然而本系統(tǒng)對實時性要求比較高,比如在收端,USB聲卡的播放需要收端的音頻譯碼模塊在400ms內(nèi)處理完一幀,才能及時提供給USB聲卡樣點連續(xù)地播放聲音,這就需要音頻譯碼模塊前的所有基帶處理部分需要在400ms內(nèi)完成一個物理幀到音頻幀的解調(diào)。同樣在發(fā)端,USB聲卡每秒采集19200個樣點給音頻編碼模塊進(jìn)行編碼,每400ms輸出一音頻編碼幀,F(xiàn)EC、映射及OFDM成幀等模塊也必須在400ms內(nèi)處理完成,否則會出現(xiàn)丟幀和覆蓋的現(xiàn)象??梢钥隙?,用單線程這種順序化的執(zhí)行方式效率很低,每個模塊都要等待前一個模塊的數(shù)據(jù),對于實時性要求較高和復(fù)雜性較高的系統(tǒng)不適用。
本系統(tǒng)使用的是多線程技術(shù),可以將處理模塊拆分成多個線程,使多個線程并行運行,只要保證每個線程的運行時間小于音頻處理模塊,系統(tǒng)就會正常工作。其中發(fā)端算法用3個線程完成音頻編碼,F(xiàn)EC、映射、OFDM成幀等處理,并將OFDM數(shù)據(jù)寫到板卡RAM中。收端算法用6個線程完成從板卡RAM中讀取OFDM基帶數(shù)據(jù)、同步、均衡、FFT、解映射、解FEC等處理,最后由音頻譯碼模塊將音頻幀送給USB聲卡進(jìn)行播放。為了保證線程間數(shù)據(jù)傳遞有序進(jìn)行,CVI還提供了事件通知、安全隊列、線程優(yōu)先級等函數(shù),保證線程間的同步和數(shù)據(jù)的傳遞。本系統(tǒng)使用的是全局BUFFER和安全隊列回調(diào)函數(shù)方式使兩個線程間獲得同步。即兩個線程間共享一個BUFFER和安全隊列,前一個線程將每次計算得到的數(shù)據(jù)寫到BUFFER中,并產(chǎn)生一標(biāo)志位FLAG,寫入安全隊列,后一線程捕捉到安全隊列中的FLAG,判斷是否滿足回調(diào)函數(shù)的條件,滿足則啟動該線程,并將BUFFER中的數(shù)據(jù)讀出,不滿足則繼續(xù)捕捉FLAG。通過對安全隊列中FLAG的讀寫,控制線程啟動的時間,使得兩線程對數(shù)據(jù)的讀寫達(dá)到平衡。程序中控制流程如圖3所示。圖4為由PXI5671輸出到頻譜儀E4440A的OFDM頻譜。
圖3 線程控制流程圖
圖4 PXI5671輸出的OFDM頻譜
結(jié)論
本系統(tǒng)用LabWindows/CVI8.5軟件完成OFDM的數(shù)字基帶處理,在PXI硬件平臺上完成射頻信號的處理,有效地對OFDM系統(tǒng)進(jìn)行驗證。而搭建FPGA PCB平臺完成OFDM Demo樣機(jī),首先在芯片的選型、制板上就需要大量的時間和人員,且具有一定的風(fēng)險性;其次在軟件代碼開發(fā)方面,需要花大量的時間對FPGA代碼進(jìn)行仿真測試和集成,而且改動起來靈活性差。然而基于NI技術(shù)的OFDM系統(tǒng)的開發(fā),由于在軟件上仿真代碼的可移植性,和上變頻等硬件平臺的實用性,減少了OFDM系統(tǒng)的開發(fā)周期,節(jié)約了開發(fā)成本和人員。
評論