文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)11-0066-03
RS碼是一種糾錯(cuò)能力很強(qiáng)的多進(jìn)制BCH碼,,同時(shí)具有糾正隨機(jī)和突發(fā)兩種差錯(cuò)的能力,,因此被廣泛應(yīng)用于通信系統(tǒng)中,以提高數(shù)據(jù)傳輸?shù)目煽啃?。在光通信系統(tǒng)中,,常把RS碼作為其前向糾錯(cuò)碼。近幾年,,RS碼常用于一些高速通信系統(tǒng)中作為信道編碼,,例如,802.3av協(xié)議規(guī)定RS(255,,223)作為10 G EPON的前向糾錯(cuò)碼,,這些高速系統(tǒng)對(duì)前向糾錯(cuò)的處理速率提出了更高的要求。已有文獻(xiàn)[1],,[2],,[4]中關(guān)于RS(255,223)譯碼器的設(shè)計(jì),,都難以在速度和面積上兼顧考慮,,特別是譯碼速率太慢,無(wú)法滿足高速通信系統(tǒng)的要求,。為了保證高速處理,,同時(shí)盡可能減少硬件資源的占用,提出一種合理的譯碼器結(jié)構(gòu),,從而能高效,、快速地譯碼,。
RS譯碼算法主要分為兩種:時(shí)域譯碼算法和頻域譯碼算法,。若采用硬件實(shí)現(xiàn)頻域譯碼算法,則電路結(jié)構(gòu)非常復(fù)雜,,耗費(fèi)的硬件資源非常大,。而時(shí)域譯碼算法具有速度快、硬件資源耗費(fèi)少,、控制電路少等優(yōu)點(diǎn),。因此,采用時(shí)域譯碼算法來(lái)實(shí)現(xiàn)RS(255,,223)譯碼器,。RS(255,223)的時(shí)域譯碼步驟如下:
(1)由接收碼字計(jì)算RS(255,223)的伴隨多項(xiàng)式S(x),;
(2)采用RiBM算法通過(guò)伴隨多項(xiàng)式求解關(guān)鍵方程,,從而求解出錯(cuò)誤位置多項(xiàng)式?滓(x)和錯(cuò)誤值多項(xiàng)式?棕(x);
(3)利用錢氏搜索法求解出錯(cuò)誤位置多項(xiàng)式的根,,得到錯(cuò)誤位置,;錯(cuò)誤位置多項(xiàng)式的根的倒數(shù)即是錯(cuò)誤位置;
(4)利用Forney算法由錯(cuò)誤值多項(xiàng)式求解出各個(gè)錯(cuò)誤位置對(duì)應(yīng)的錯(cuò)誤幅值,;
(5)FIFO控制器所存儲(chǔ)的接收碼字與錯(cuò)誤幅值相減得到正確的傳輸碼字,。
2 RS(255,223)譯碼器設(shè)計(jì)
為了提高譯碼器的處理速度,,采用三級(jí)流水線結(jié)構(gòu)來(lái)實(shí)現(xiàn)RS(255,,223)譯碼器,其結(jié)構(gòu)如圖1所示,。譯碼過(guò)程中的計(jì)算都是基于有限域的,,其基本計(jì)算單元是有限域乘法器和加法器。RS(255,,223)譯碼器包括:伴隨式計(jì)算模塊,、關(guān)鍵方程求解模塊、錢氏搜索模塊,、Forney算法模塊以及FIFO模塊5個(gè)部分,。
qj稱為第j步的部分和,并且有q-1=0和si=q254,。由遞歸公式(2)可知,,32個(gè)伴隨式是獨(dú)立并行計(jì)算的,且各自是遞歸運(yùn)算,,其結(jié)構(gòu)非常規(guī)則,,易于硬件實(shí)現(xiàn)。為了提高譯碼速度,,設(shè)計(jì)采用32個(gè)并行的計(jì)算模塊,,分別計(jì)算所需要的32個(gè)伴隨式。伴隨式計(jì)算模塊的電路結(jié)構(gòu)如圖2所示,,feedback信號(hào)用于控制寄存器的反饋,,當(dāng)一個(gè)碼字分組的第一個(gè)符號(hào)r254進(jìn)入譯碼器時(shí),必須使其處于低電平,,使得所有寄存器的反饋值為0,,即q-1=0,以確保當(dāng)前碼字分組的伴隨式計(jì)算不會(huì)受到前一個(gè)碼字分組的影響,。電路工作過(guò)程如下:碼元符號(hào)從r254到r0順序發(fā)送,,當(dāng)碼元符號(hào)r255-j-1到達(dá)后,,寄存器中存儲(chǔ)的部分和qj與αi相乘,然后與r255-j-1相加得到新的部分和qj+1并存入寄存器中,,當(dāng)r0到達(dá)后,,伴隨式計(jì)算完成。
2.2 關(guān)鍵方程求解模塊的電路設(shè)計(jì)
關(guān)鍵方程求解的常見(jiàn)方法主要有歐幾里得算法,、BM算法及它們的改進(jìn)形式,,這些算法都屬于快速迭代算法;其中BM 算法的譯碼時(shí)延比歐幾里得算法小,,實(shí)現(xiàn)電路較簡(jiǎn)單,,所以在工程中較為常用。文章中關(guān)鍵方程求解模塊采用RiBM算法,,與BM算法相比,,RiBM算法去掉了復(fù)雜的求逆過(guò)程,可以采用規(guī)則的脈動(dòng)陣列實(shí)現(xiàn),,控制信號(hào)少,、速度快、硬件實(shí)現(xiàn)更方便,。采用RiBM算法,,單個(gè)時(shí)鐘周期內(nèi)的運(yùn)算量減少,可以提高譯碼器的工作頻率,,因此采用RiBM算法可以顯著地提高譯碼速度,。RiBM算法的主要思路是并行實(shí)現(xiàn),其硬件結(jié)構(gòu)采用規(guī)則的脈動(dòng)陣列實(shí)現(xiàn),,RiBM算法的硬件結(jié)構(gòu)主要包括兩部分:一部分是49個(gè)功能相同的PE計(jì)算單元的串接組合實(shí)現(xiàn)多項(xiàng)式的脈動(dòng)計(jì)算,;另一部分是控制電路,實(shí)現(xiàn)差值更新[3],。其硬件實(shí)現(xiàn)結(jié)構(gòu)如圖3所示,。
3 實(shí)現(xiàn)結(jié)果的驗(yàn)證與分析
譯碼器的功能驗(yàn)證是在Modelsim SE 6.2b和QuartusⅡ7.1環(huán)境下完成的。驗(yàn)證所采用的芯片是CycloneⅡ系列芯片 EP2C8T144C8,。經(jīng)過(guò)編譯后,,占用芯片的4 327個(gè)邏輯單元,占用邏輯單元比文獻(xiàn)[4]的方案少4 855個(gè),。為了驗(yàn)證該譯碼器能否糾正16個(gè)錯(cuò)誤,,在編碼后的碼字中加入16個(gè)錯(cuò)誤,作為譯碼器datain端的輸入,,如圖6所示,correctcode為編碼器編碼后的正確碼字,,用來(lái)作為參照,;errorflag為錯(cuò)誤標(biāo)志,。譯碼輸出結(jié)果如圖7所示,outflag為高電平時(shí),,譯碼器輸出端dataout開(kāi)始輸出譯碼結(jié)果,。仿真結(jié)果顯示,該譯碼器的伴隨式計(jì)算模塊耗時(shí)約為255個(gè)時(shí)鐘周期,,關(guān)鍵方程求解模塊耗時(shí)約為32個(gè)時(shí)鐘周期,,錢氏搜索模塊和Forney算法模塊獨(dú)立并行地工作,其總耗時(shí)約為255個(gè)時(shí)鐘周期,。與ME算法相比,,關(guān)鍵方程求解采用RiBM算法,可以大大提高譯碼速度,。系統(tǒng)時(shí)鐘頻率設(shè)為100 MHz,,經(jīng)過(guò)548個(gè)時(shí)鐘周期(5.84 μs)后得到譯碼結(jié)果,與軟件譯碼方式相比,,其耗時(shí)非常少,。對(duì)圖6和圖7進(jìn)行比較,可以看出,,譯碼器成功地糾正了16個(gè)錯(cuò)誤,,證明該譯碼器能很好地實(shí)現(xiàn)譯碼功能。
文章完整地闡述了基于RiBM算法的RS(255,,223)高速譯碼器的設(shè)計(jì)以及FPGA實(shí)現(xiàn),,仿真和編譯結(jié)果表明該譯碼器與ME算法實(shí)現(xiàn)的譯碼器硬件復(fù)雜度相近,譯碼時(shí)延大大減小,,極大地提高了數(shù)據(jù)吞吐率,,其裝置可以應(yīng)用于諸如光通信系統(tǒng)等需要高速譯碼的通信系統(tǒng)中。
參考文獻(xiàn)
[1] 嚴(yán)來(lái)金,,李明,,王夢(mèng).RS(255,223)譯碼器的設(shè)計(jì)與FPGA實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,,2005,,21(1):148-149.
[2] 張玲,張立,,何偉.截短Reed-Solomon碼譯碼器的FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2009,35(7):65-67.
[3] 陳曦,,謝軍,,邱琪.基于RiBM算法的RS譯碼器設(shè)計(jì)實(shí)現(xiàn)[J].光通信技術(shù),2008(11):48-50.
[4] 向征,,劉興釗.RS(255,,223)編譯碼器的設(shè)計(jì)與FPGA實(shí)現(xiàn)[J].電視技術(shù),,2006(11):17-19.