推薦文檔列表

高速Viterbi譯碼器的優(yōu)化和實(shí)現(xiàn)

時(shí)間:2021-10-01 08:04:53 電子通信論文 我要投稿

高速Viterbi譯碼器的優(yōu)化和實(shí)現(xiàn)

摘要:大約束度卷積碼作為信道糾錯(cuò)編碼在通信中得到了廣泛的應(yīng)用,而其相應(yīng)的Viterbi譯碼器硬件復(fù)雜度大,限制了譯碼速度。分析了Viterbi譯碼器的結(jié)構(gòu),優(yōu)化了各模塊,合理地組織了存儲(chǔ)器結(jié)構(gòu),簡(jiǎn)化了接口電路。用FPGA實(shí)現(xiàn)Viterbi譯碼器,提高了譯碼器速度。

    關(guān)鍵詞:卷積碼 Viterbi譯碼 ACS 路徑度量存儲(chǔ) FPGA實(shí)現(xiàn)

Viterbi算法是一種基于最大后驗(yàn)概率的卷積譯碼算法,應(yīng)用廣泛。CDMA的IS-95標(biāo)準(zhǔn)和WCDMA 3 GPP標(biāo)準(zhǔn)將卷積碼作為高速實(shí)時(shí)數(shù)據(jù)傳輸?shù)男诺兰m錯(cuò)編碼,使Viterbi譯碼器成為移動(dòng)通信系統(tǒng)的重要組成部分。

為保證糾錯(cuò)性能,卷積碼結(jié)束度一般選擇比較大的,在3 GPP中規(guī)定約束度K=9。出于實(shí)時(shí)性的考慮,移動(dòng)通信系統(tǒng)中對(duì)譯碼時(shí)延的要求比較高,需要高速譯碼器的支持?墒荲iterbi譯碼算法的復(fù)雜度、所需存儲(chǔ)器容量與結(jié)束長(zhǎng)度成指數(shù)增長(zhǎng)關(guān)系,成為限制譯碼器速度的瓶頸。Viterbi譯碼器每解碼一位信息位就需對(duì)2 k-1個(gè)寄存器的狀態(tài)進(jìn)行路徑度量,并對(duì)相應(yīng)的存儲(chǔ)單元進(jìn)行讀寫(xiě)。這種情況下,可以采用狀態(tài)路徑存儲(chǔ)單元分塊的方法,以提高其譯碼性能,缺點(diǎn)是ACS單元與存儲(chǔ)器之間的接口電路十分復(fù)雜,不易實(shí)現(xiàn)。

本文分析和優(yōu)化了Viterbi譯碼器的結(jié)構(gòu),提出了一種FPGA實(shí)現(xiàn)方案,簡(jiǎn)化了接口電路,提高了速度。用這種結(jié)構(gòu)實(shí)現(xiàn)的單片集成譯碼器譯碼速率達(dá)350kbps、時(shí)鐘頻率30MHz。以下先分析譯堿器總體結(jié)構(gòu),然后對(duì)各模塊設(shè)計(jì)和實(shí)現(xiàn)做詳細(xì)說(shuō)明。

1 算法簡(jiǎn)述及譯碼器結(jié)構(gòu)

本文采用3 GPP標(biāo)準(zhǔn)規(guī)定的K=9,碼率r=1/2的(753,561)卷積碼,卷積編碼器送出的碼序列C,經(jīng)過(guò)信道傳輸后送入譯碼器的序列為R。譯碼器根據(jù)接受序列R,按最大似然準(zhǔn)則力圖找出正確的原始碼序列。

Viterbi譯碼過(guò)程可用狀態(tài)圖表示,圖1表示2個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)移圖。Sj,t和Sj+N/2,t表示t時(shí)刻的兩個(gè)狀態(tài)。在t+1時(shí)刻,這兩個(gè)狀態(tài)值根據(jù)路徑為0或者1,轉(zhuǎn)移到狀態(tài)S2j+1和S2j+1,t+1。每一種可能的狀態(tài)轉(zhuǎn)移都根據(jù)接收到的有噪聲的序列R計(jì)算路徑度量,然后選擇出各個(gè)狀態(tài)的最小度量路徑(幸存路徑)。Viterbi算法就是通過(guò)在狀態(tài)圖中尋找最小度量路徑向前回溯L步,最后得到的即為譯碼輸出。

    本設(shè)計(jì)采用Xilinx Virtex600E FPGA芯片,在ALDEC公司的Active-HDL仿真環(huán)境下,用Verilog語(yǔ)言完成,并用Xilinx的ISE4綜合實(shí)現(xiàn)。Viterbi譯碼器系統(tǒng)框圖如圖2所示,主要由BMG(路徑計(jì)算模塊)、ACS(加比選模塊)、TB(路徑回溯模塊)、MMU(路徑存儲(chǔ)模塊)等部分組成。采用并行流水線結(jié)構(gòu),各個(gè)模塊在控制信號(hào)統(tǒng)一監(jiān)控下工作,減少了讀取數(shù)據(jù)所需時(shí)間,充分發(fā)揮了FPGA高速計(jì)算的特性,提高了整個(gè)系統(tǒng)的效率。

2 子模塊的優(yōu)化和實(shí)現(xiàn)

2.1 ACS模塊

由于采用的卷積碼約束度K=9,在譯碼過(guò)程中,每一時(shí)刻有2k-1=256個(gè)狀態(tài),512個(gè)度量路徑值,為了獲得高速率,需采用盡

[1] [2] [3]