基于FPGA的卷積編譯碼器的設(shè)計(jì)與實(shí)現(xiàn)
4 譯碼器設(shè)計(jì)中改進(jìn)和優(yōu)化算法
本文采取狀態(tài)路徑和判決比特同時(shí)存儲(chǔ),在表示狀態(tài)信息的比特前加上1位判決比特來(lái)表示相應(yīng)狀態(tài)的輸入支路的譯碼信息,因此,譯碼器在回溯時(shí)就可直接輸出判決比特作為譯碼器的輸出,降低了譯碼器的判決難度,節(jié)省了存儲(chǔ)回溯路徑所需要的內(nèi)存,從而降低了譯碼器結(jié)構(gòu)復(fù)雜性。
本設(shè)計(jì)中譯碼器在計(jì)算所有狀態(tài)的路徑量度的同時(shí)進(jìn)行路徑存儲(chǔ),從而大大提高了譯碼速度。路徑量度是指每個(gè)狀態(tài)的2條輸入支路和2條輸出支路,路徑存儲(chǔ)指的是狀態(tài)存儲(chǔ)以及相應(yīng)的譯碼判決比特存儲(chǔ)。該結(jié)構(gòu)的譯碼器對(duì)每一個(gè)狀態(tài)都具有獨(dú)立的處理單元,彼此互補(bǔ)影響,并行工作,提高了譯碼速度。對(duì)于(2,1,3)卷積碼,一個(gè)時(shí)鐘需要進(jìn)行2x2x2m=32次路徑量度計(jì)算和2m=8次4比特存儲(chǔ)操作。充分發(fā)揮了FPGA擁有大量LCS和RAM的優(yōu)勢(shì)。
在網(wǎng)格圖中,隨著狀態(tài)的改變,每個(gè)狀態(tài)的輸出支路的路徑量度逐漸增加,造成存儲(chǔ)資源壓力增大,設(shè)計(jì)中在每次進(jìn)行路徑量度計(jì)算時(shí),將該狀態(tài)的量度值與上次剩余路徑量度的最小值做差后進(jìn)行保存,以達(dá)到減小存儲(chǔ)器空間的需求。對(duì)于編碼效率為1/2的卷積碼,以上差值最大不超過(guò)2m,因此,路徑量度的量化寬的為1b(2m)。對(duì)于(2,1,3)卷積碼,存儲(chǔ)路徑量度的寄存器位寬為lb(2×3)=3。
5 驗(yàn)證仿真
本設(shè)計(jì)采用Xilinx公司的ISE 9.2i為開(kāi)發(fā)平臺(tái),選用的是Xilinx Virtex 4 FPGA為開(kāi)發(fā)芯片用于設(shè)計(jì)和驗(yàn)證所提出的卷積編碼和維特比(Veterbi)譯碼算法。
5.1 卷積編碼器
如圖6所示,clk為時(shí)鐘信號(hào),reset為復(fù)位信號(hào),din為輸入信號(hào),out_1,out_2為編碼后得到的并行碼字序列??煽闯觯狠斎氪a元為“101010111011 000100011011111111100……”經(jīng)過(guò)編碼得到編碼結(jié)果為“1101000100010010101000101011001101110011101001010101010 10101011”結(jié)果正確。本文引用地址:http://www.ex-cimer.com/article/191469.htm
5.2 Verterbi譯碼器
Vertrbi譯碼器仿真波形如圖7所示,rev[1:0]為輸入譯碼器的接收序列,clk為時(shí)鐘信號(hào),rst為復(fù)位信號(hào),enable為使能信號(hào),h_out為譯碼器輸出序列??煽闯觯鹤g碼輸出碼元為“10101011101100010001101111111l100……”。結(jié)果正確。
6 結(jié)束語(yǔ)
通過(guò)對(duì)卷積編碼原理與維特比譯碼算法的深入研究,在理解傳統(tǒng)實(shí)現(xiàn)方法的基礎(chǔ)上提出適合FPGA存儲(chǔ)器和獨(dú)立運(yùn)算單元豐富的特點(diǎn)的優(yōu)化算法,有效地提高了譯碼器的處理速度,簡(jiǎn)化了譯碼器的復(fù)雜程度。
評(píng)論