基于FPGA的RS(255,239)編譯碼器設(shè)計
RS(Reed-Solomon)編碼是一種具有較強糾錯能力的多進制BCH編碼,其既可糾正隨機錯誤,又可糾正突發(fā)錯誤。RS編譯碼器廣泛應(yīng)用于通信和存儲系統(tǒng),為解決高速存儲器中數(shù)據(jù)可靠性的問題,文中提出了RS編碼的實現(xiàn)方法,并對編碼進行了時序仿真。仿真結(jié)果表明,該譯碼器可實現(xiàn)良好的糾錯功能。
本文引用地址:http://www.ex-cimer.com/article/201706/348684.htm
RS(Reed-Solomon)碼是差錯控制領(lǐng)域中的一種重要線性分組碼,既能糾正隨機錯誤,又能糾正突發(fā)錯誤,且由于其出色的糾錯能力,已被NASA、ESA、CCSDS等空間組織接受,用于空間信道糾錯。本文研究了RS碼的實現(xiàn)方法,并基于Xilinx的FPGA芯片Spartan-6 XC6SLX45完成了RS編譯碼器的設(shè)計,同時對其進行了仿真和在線調(diào)試,并給出了功能仿真圖和測試結(jié)果。時序仿真結(jié)果表明,該編譯碼器能實現(xiàn)預(yù)期功能。
1 RS編碼的實現(xiàn)方法
RS碼是一種多進制BCH(Bose-Chaudhuri-Hocquenghem)碼,在給定每個碼字所具有多少冗余量的情況下,RS碼具有極大的最小距離。即RS碼的最小距離d、信息長度k以及碼字長度n滿足d=n-k+1.而RS(255 239)碼是在伽羅華(Galois Field)GF(28)中運算得到的,編碼器實現(xiàn)的關(guān)鍵是伽羅華域乘法器的設(shè)計。設(shè)計中的乘法是2個有限域中元素的指數(shù)相加與255取模。GF(28)編碼參數(shù)如下:碼長n=255;信息位個數(shù)k=239;校驗位r=n-k=16;糾錯能力t=8;碼距d=17.生成多項式為
根據(jù)式(3)畫出RS編碼的電路圖,如圖1所示。
圖1 RS編碼的電路圖
n-k級RS編碼器主要由一組線性反饋移位寄存器和控制電路組成,其是n-k=16級編碼器,亦是線性反饋寄存器的反饋系數(shù),reg16寄存器的值與當前輸入的信息碼元異或得到的結(jié)果即為feedback寄存器的值。
編碼步驟:
步驟1將所有寄存器清零,開關(guān)放到1上,則239個信息碼元一邊依次進入除法電路,一邊依次輸出。
步驟2當最后一個信息碼進入電路后,將開關(guān)放到2上,第一個校驗位輸出。
步驟3校驗碼按時鐘節(jié)拍載入寄存器,并依次輸出。當最后一個校驗位輸出時,編碼結(jié)束。
2 RS編碼的仿真結(jié)果及分析
設(shè)計的RS(255 239)編碼器使用Verilog HDL對整個模型進行描述,以Xilinx FPGA芯片Spartan-6XC6SLX45為硬件平臺進行實現(xiàn),并利用ISim仿真工具對RS編碼進行仿真。
圖2 RS編碼器的 波形仿真圖
設(shè)計的RS(255,239)編碼器,信息位239位編碼為0,1,2,…,238,則16位校驗位的值為58,236,152,44,88,31,20,168,121,60,32,10,191,166,4,101.設(shè)計的RS(255,239)編碼器的仿真圖如圖2所示,當DI_VAL=0時,輸出239個信息位;當DI_VAL=1時,輸出16個校驗位。該編碼器實現(xiàn)了預(yù)期的編碼功能。
3 RS譯碼的實現(xiàn)方法
RS譯碼主要有時域譯碼和頻域譯碼,時域譯碼一般采用BM迭代算法或歐式算法(Euclids Algorithm)。RS譯碼中最重要的環(huán)節(jié)是求解關(guān)鍵方程,歐式算法在求解關(guān)鍵方程時需進行多項式次數(shù)的判斷,因此造成硬件電路復(fù)雜,譯碼速度下降,BM迭代算法具有快速、消耗資源少、控制電路較為簡單等優(yōu)點。文中改進后的BM迭代原理及以該算法為基礎(chǔ)的RS譯碼器的FPGA實現(xiàn)。RS譯碼可分為4步:(1)由接收到的碼組計算伴隨式。(2)求關(guān)鍵方程。(3)計算出錯誤圖樣。(4)由錯誤圖樣和接收碼組計算出可能發(fā)送的碼字。圖3給出了RS譯碼器的一般步驟框圖。
圖3 RS譯碼器的一般步驟框圖
以上運算均可用流水線結(jié)構(gòu)硬件實現(xiàn)。
圖4 伴隨式求解框圖
初始化時,所有寄存器置零。經(jīng)255個周期,接收完所有255個符號后,便可得到全部16個伴隨式。因整個譯碼器采用流水線結(jié)構(gòu),所以在伴隨式計算完后,產(chǎn)生一個時鐘周期有效的“sc_done”信號,用以啟動后續(xù)電路進行新的計算。由于在BM模塊中,用到了A(x)與S的卷積求和,因此本模塊將計算出的伴隨式序列串行輸出。
關(guān)鍵方程的計算采用BM算法,BM算法不僅在RS碼的譯碼中起著關(guān)鍵作用,且也是目前已知的求序列線性復(fù)雜度最快且最佳的方法之一。該算法采用規(guī)整的脈動陣列,硬件實現(xiàn)更為方便。通過求解關(guān)鍵方程,得到A0~A8,其為后續(xù)的Chien搜索模塊提供了參數(shù)。
圖5 chien搜索模塊框圖
圖6 譯碼的詳細過程框圖
該過程完全實現(xiàn)流水線結(jié)構(gòu),其中包括伴隨式計算、關(guān)鍵方程求解、Chien搜索、Forney算法等模塊并行工作。在經(jīng)過295個固有延遲后,每個時鐘周期均可連續(xù)輸出經(jīng)校正的碼字。
4 RS譯碼的仿真結(jié)果及分析
因設(shè)計的譯碼器最大糾錯能力為8個符號,該文設(shè)定錯誤情況是第140位到第147位全錯,正確值為140,141,142,143,144,145,146,147,錯誤值為5,11,56,98,35,15,132,159,圖7是輸入到譯碼器中含8個連續(xù)錯誤碼字的255位編碼序列,圖8是譯碼器輸出全部糾錯以后的編碼序列,由ISim仿真波形圖可知,Err_Indicator表示錯誤標志,設(shè)計的譯碼器能實現(xiàn)最大的糾錯能力。
圖7 譯碼器輸入時序圖
圖8 譯碼器輸出時序圖
5結(jié)束語
文中闡述了RS(255,239)編譯碼器的設(shè)計原理,并對編碼器給出了在ISim中的時序仿真結(jié)果,其結(jié)果證明了該編碼器設(shè)計的正確性。而在對譯碼器的設(shè)計中,假定出現(xiàn)連續(xù)8個誤碼的情況,并用ISim對所設(shè)計的譯碼器進行驗證,由時序仿真結(jié)果表明,設(shè)計的RS(255,239)譯碼器能實現(xiàn)最大的糾錯能力。設(shè)計的RS(255,239)編譯碼器達到了預(yù)定的目標,且該編譯碼器可應(yīng)用于數(shù)據(jù)通信和數(shù)據(jù)存儲系統(tǒng)的差錯控制中。
評論