基于NI技術(shù)設計的OFDM發(fā)射接收系統

對于單線(xiàn)程系統,一般分為數據的采集模塊、分析處理模塊、顯示存儲模塊。這三個(gè)模塊在時(shí)間上是順序執行的,即后一個(gè)模塊需等待前一個(gè)模塊數據的到來(lái)時(shí)才開(kāi)始工作。然而本系統對實(shí)時(shí)性要求比較高,比如在收端,USB聲卡的播放需要收端的音頻譯碼模塊在400ms內處理完一幀,才能及時(shí)提供給USB聲卡樣點(diǎn)連續地播放聲音,這就需要音頻譯碼模塊前的所有基帶處理部分需要在400ms內完成一個(gè)物理幀到音頻幀的解調。同樣在發(fā)端,USB聲卡每秒采集19200個(gè)樣點(diǎn)給音頻編碼模塊進(jìn)行編碼,每400ms輸出一音頻編碼幀,FEC、映射及OFDM成幀等模塊也必須在400ms內處理完成,否則會(huì )出現丟幀和覆蓋的現象??梢钥隙?,用單線(xiàn)程這種順序化的執行方式效率很低,每個(gè)模塊都要等待前一個(gè)模塊的數據,對于實(shí)時(shí)性要求較高和復雜性較高的系統不適用。
本系統使用的是多線(xiàn)程技術(shù),可以將處理模塊拆分成多個(gè)線(xiàn)程,使多個(gè)線(xiàn)程并行運行,只要保證每個(gè)線(xiàn)程的運行時(shí)間小于音頻處理模塊,系統就會(huì )正常工作。其中發(fā)端算法用3個(gè)線(xiàn)程完成音頻編碼,FEC、映射、OFDM成幀等處理,并將OFDM數據寫(xiě)到板卡RAM中。收端算法用6個(gè)線(xiàn)程完成從板卡RAM中讀取OFDM基帶數據、同步、均衡、FFT、解映射、解FEC等處理,最后由音頻譯碼模塊將音頻幀送給USB聲卡進(jìn)行播放。為了保證線(xiàn)程間數據傳遞有序進(jìn)行,CVI還提供了事件通知、安全隊列、線(xiàn)程優(yōu)先級等函數,保證線(xiàn)程間的同步和數據的傳遞。本系統使用的是全局BUFFER和安全隊列回調函數方式使兩個(gè)線(xiàn)程間獲得同步。即兩個(gè)線(xiàn)程間共享一個(gè)BUFFER和安全隊列,前一個(gè)線(xiàn)程將每次計算得到的數據寫(xiě)到BUFFER中,并產(chǎn)生一標志位FLAG,寫(xiě)入安全隊列,后一線(xiàn)程捕捉到安全隊列中的FLAG,判斷是否滿(mǎn)足回調函數的條件,滿(mǎn)足則啟動(dòng)該線(xiàn)程,并將BUFFER中的數據讀出,不滿(mǎn)足則繼續捕捉FLAG。通過(guò)對安全隊列中FLAG的讀寫(xiě),控制線(xiàn)程啟動(dòng)的時(shí)間,使得兩線(xiàn)程對數據的讀寫(xiě)達到平衡。程序中控制流程如圖3所示。圖4為由PXI5671輸出到頻譜儀E4440A的OFDM頻譜。

圖3 線(xiàn)程控制流程圖

圖4 PXI5671輸出的OFDM頻譜
結論
本系統用LabWindows/CVI8.5軟件完成OFDM的數字基帶處理,在PXI硬件平臺上完成射頻信號的處理,有效地對OFDM系統進(jìn)行驗證。而搭建FPGA PCB平臺完成OFDM Demo樣機,首先在芯片的選型、制板上就需要大量的時(shí)間和人員,且具有一定的風(fēng)險性;其次在軟件代碼開(kāi)發(fā)方面,需要花大量的時(shí)間對FPGA代碼進(jìn)行仿真測試和集成,而且改動(dòng)起來(lái)靈活性差。然而基于NI技術(shù)的OFDM系統的開(kāi)發(fā),由于在軟件上仿真代碼的可移植性,和上變頻等硬件平臺的實(shí)用性,減少了OFDM系統的開(kāi)發(fā)周期,節約了開(kāi)發(fā)成本和人員。
評論