<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 水聲OFDM系統中卷積碼譯碼設計及其DSP實(shí)現

水聲OFDM系統中卷積碼譯碼設計及其DSP實(shí)現

作者: 時(shí)間:2011-05-05 來(lái)源:網(wǎng)絡(luò ) 收藏

水聲信道可用頻帶窄,具有強多途、高噪聲,同時(shí)伴有明顯的隨機包絡(luò )起伏。這些特性使水聲信道具有典型的頻率選擇性衰落和時(shí)間選擇性衰落的特點(diǎn)。信號經(jīng)過(guò)復雜的水聲信道會(huì )出現隨機錯誤和突發(fā)錯誤。因此需要加入糾錯編碼與交織相結合的時(shí)頻編碼方案進(jìn)行錯誤糾正[1]。在水聲通信中,糾錯編碼是不可或缺的技術(shù)之一。

目前通常采用的編碼方案有卷積碼、Turbo碼和LDPC碼等。后兩者具有接近香農限的性質(zhì),在中都表現出很好的糾錯特性。在編碼增益上,卷積碼比Turbo碼和LDPC碼分別低3.8 dB和4 dB[2],但其實(shí)現簡(jiǎn)單,實(shí)時(shí)性好。因此從硬件實(shí)現的角度綜合考慮,本文采用卷積碼作為系統的差錯控制方案。

為提高系統性能和實(shí)時(shí)性,本文在方案中采用了卷積交織和Viterbi軟譯碼等方法。經(jīng)過(guò)大量仿真及水池實(shí)驗,確定了交織和編譯碼的最佳參數。在TMS320DM642上實(shí)現時(shí),通過(guò)采用蝶形運算等優(yōu)化方法減少了譯碼復雜度,提高了運算速度。最后通過(guò)海洋實(shí)驗驗證了其性能。

1 水聲OFDM通信系統原理及編譯碼方案確定

圖1為水聲OFDM基帶通信系統圖[3]。由于水聲信道存在嚴重的頻率選擇性衰落,采用卷積編碼實(shí)現各個(gè)子載波上的糾錯。為了抵抗由于時(shí)變帶來(lái)的突發(fā)錯誤,采用交織技術(shù)將突發(fā)錯誤打散為隨機錯誤。對卷積交織后的串行數據流進(jìn)行DQPSK映射、IFFT、插入循環(huán)前綴以及并串轉換后形成OFDM符號,加入同步前導符號后經(jīng)水聲信道發(fā)送出去。在接收端提取同步信息后,經(jīng)過(guò)一系列與發(fā)送端相反的逆過(guò)程實(shí)現OFDM解調,解調后的數據流再經(jīng)過(guò)解交織和Viterbi譯碼后還原數據信息。

卷積碼碼型的選擇主要根據系統的相干帶寬和相干時(shí)間來(lái)確定。為了提高水聲信道的頻帶利用率,通常采用1/2碼率的卷積碼。約束長(cháng)度的選擇以不同信噪比條件下卷積碼性能為參考。仿真和水池實(shí)驗結果表明:信噪比較高時(shí),約束長(cháng)度越大卷積碼性能越好;信噪比較低時(shí),約束長(cháng)度越小卷積碼性能越好。由于水聲信道的信噪比較低,本文最終確定使用生成矩陣為[7,5]的(2,1,3)卷積碼,從復雜度與性能上折中考慮,譯碼回溯深度定為16,Viterbi軟譯碼量化級數定為3bit均勻量化。交織長(cháng)度和深度的確定要綜合考慮實(shí)時(shí)性和譯碼性能,仿真結果表明交織長(cháng)度為4個(gè)OFDM符號時(shí),最佳交織深度為96。

該系統在Matlab平臺上進(jìn)行水池實(shí)驗,實(shí)驗結果如圖2所示。實(shí)驗中對采用三個(gè)不同方案的OFDM系統進(jìn)行了性能比較,以示波器觀(guān)測到的接收端信號幅度作為SNR大小的參照。實(shí)驗中噪聲幅度約為150 mV。從圖中可以明顯看出Viterbi軟譯碼性能最佳。

2 DSP優(yōu)化實(shí)現

2.1 交織的優(yōu)化

硬件實(shí)現時(shí)需考慮所使用的交織器類(lèi)型。常見(jiàn)的交織器主要有塊交織器、卷積交織器和隨機交織器。在相同的交織長(cháng)度和交織深度下,卷積交織器與塊交織相比延時(shí)小,與隨機交織相比硬件復雜度低,是較實(shí)用的類(lèi)型。

根據卷積交織原理[4],在DSP上實(shí)現時(shí),如果采用一般算法,則需要用到二維數組和多重嵌套循環(huán),DSP處理將耗費大量時(shí)間和存儲空間。交織的實(shí)質(zhì)是改變原始序列中數據的順序,一旦交織深度和寬度確定,其數據的順序改變規律即可相應確定。因此為了節省處理時(shí)間和片內存儲空間,本文采用查表的方法實(shí)現卷積交織。

2.2 Viterbi譯碼器的優(yōu)化

實(shí)現Viterbi譯碼可以分為初始化、度量值更新和回溯跟蹤三部分,其中最復雜的是第二部分。本文從兩個(gè)方面進(jìn)行了優(yōu)化:一是對計算量最多的蝶形運算采用宏定義的方式,并在記錄度量長(cháng)度時(shí)采用雙數組,能夠加快譯碼計算速度;二是定義了一種軟判決量度,減少計算復雜度。

2.2.1 蝶形運算

在Viterbi譯碼程序設計中,使用對稱(chēng)的蝶形運算實(shí)現。(2,1,3)卷積碼的蝶形結構如圖3所示。每一個(gè)蝶形包括當前狀態(tài)為i(i=0,1)和i+2的兩個(gè)節點(diǎn)的加_比較_選擇運算,它們的0和1分支在籬笆圖的下一個(gè)節點(diǎn)合并。為了加快運算速度,程序設計上對蝶形運算采用宏定義的方式,定義兩個(gè)蝶形運算的宏[5]。一個(gè)設當前度量為old_pm[ ], 經(jīng)過(guò)分支度量計算后得到下一狀態(tài)度量new_pm[ ]。另一個(gè)則從下一狀態(tài)new_pm[ ]開(kāi)始,經(jīng)過(guò)分支度量計算后得到old_pm[ ]。

通過(guò)宏定義,大量的蝶形運算在編譯時(shí)間里進(jìn)行宏展開(kāi)代入表達式,這樣運算速度會(huì )比子程序設計快, 而且不需要大量的寄存器變量。程序中還定義了兩個(gè)記錄度量長(cháng)度的數組,循環(huán)進(jìn)行數組更新,不需要再定義中間變量或指針進(jìn)行數組的更新,可以提升DSP運算速度。

2.2.2 軟判決量度

計算接收到的比特與理論輸出比特的距離度量公式為:bm[i0 i1]=metric[i0 r0]+metric[i1 r1]。其中i0、i1為理論輸出數據,r0、r1為接收到的數據, metric[ ]為分支度量。軟判決的分支度量值為歐氏距離,即metric[A B]=,如果直接計算,將大大增加計算復雜度。從角度考慮,用另一個(gè)軟判決量度來(lái)代替歐氏距離。此量度必須滿(mǎn)足兩個(gè)要求:(1)其大小要體現歐氏距離的大??;(2)計算簡(jiǎn)單,易于??梢杂脷W氏距離平方代替歐氏距離,即metric[A B]=(A+B)2=A2+B2+2AB。由于i0、i1的值為1或-1,可以證明,對于給定的r0、r1,不同的i0、i1,計算bm[i0 i1]=metric[i0 r0]+metric[i1 r1],其分解后的平方項都是相等的,區別僅在于2r0、2r1項前符號的正負。因此可以將軟判決距離度量公式修改為bm[i0 i1]=i0×r0+i1×r1。

優(yōu)化后的程序流程如圖4所示。先對譯碼器的各種參數初始化,然后讀入輸入字節,每次取兩位計算分支度量, 進(jìn)行加_比較_選擇,從當前度量old_pm[ ]計算后得到下一狀態(tài)度量new_pm[ ],再讀取兩位計算分支度量,調用蝶形運算2,從new_pm[ ]計算后得到old_pm[ ]。循環(huán)進(jìn)行上述數組更新運算,直到所有輸入字節處理結束。中間加入一些判斷語(yǔ)句以控制程序進(jìn)行回溯,將得到的譯碼輸出位存儲到輸出字節[5]。

比較Viterbi譯碼DSP優(yōu)化前后所需時(shí)鐘周期數,以發(fā)送1個(gè)OFDM符號為參考,如表1所示。由表中數據可知,優(yōu)化后發(fā)送接收一個(gè)OFDM符號節省了1 027 692個(gè)時(shí)鐘周期。TMS320DM642主頻600 MHz,可以計算出所節省的時(shí)延為1.7 ms。

3 海洋實(shí)驗

該DSP系統在廈門(mén)五緣灣海域進(jìn)行點(diǎn)對點(diǎn)通信實(shí)驗,通信距離為800 m,收發(fā)換能器距海面2.5 m。海洋實(shí)驗發(fā)送的總數據量為32 640 bit,選取了3組典型數據,將DSP譯碼結果與Matlab譯碼結果進(jìn)行對比,如表2所示。

由表2可以看出,原始誤碼個(gè)數在2 800~3 100范圍內時(shí),DSP硬譯碼糾錯個(gè)數為2 200左右,軟譯碼糾錯個(gè)數為2 400左右,并且DSP譯碼與Matlab譯碼性能相當。

本文將卷積交織、卷積編碼和Viterbi譯碼引入了,根據水聲信道特點(diǎn)和多次水池實(shí)驗確定其參數。在TMS320DM642上實(shí)現時(shí),對于卷積交織采用查表法,對于Viterbi譯碼采用蝶形運算宏定義和雙數組循環(huán)更新以減小時(shí)延,保證了譯碼實(shí)時(shí)性。通過(guò)海洋實(shí)驗驗證了軟硬譯碼的性能。



關(guān)鍵詞: 水聲OFDM系統 DSP實(shí)現

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>