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