文獻(xiàn)標(biāo)識(shí)碼: A
文章編號: 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)對前向糾錯(cuò)的處理速率提出了更高的要求。已有文獻(xiàn)[1],[2],[4]中關(guān)于RS(255,223)譯碼器的設(shè)計(jì),都難以在速度和面積上兼顧考慮,特別是譯碼速率太慢,無法滿足高速通信系統(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í)域譯碼算法來實(shí)現(xiàn)RS(255,223)譯碼器。RS(255,223)的時(shí)域譯碼步驟如下:
(1)由接收碼字計(jì)算RS(255,223)的伴隨多項(xiàng)式S(x);
(2)采用RiBM算法通過伴隨多項(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ò)誤位置對應(yīng)的錯(cuò)誤幅值;
(5)FIFO控制器所存儲(chǔ)的接收碼字與錯(cuò)誤幅值相減得到正確的傳輸碼字。
2 RS(255,223)譯碼器設(shè)計(jì)
為了提高譯碼器的處理速度,采用三級流水線結(jié)構(gòu)來實(shí)現(xiàn)RS(255,223)譯碼器,其結(jié)構(gòu)如圖1所示。譯碼過程中的計(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信號用于控制寄存器的反饋,當(dāng)一個(gè)碼字分組的第一個(gè)符號r254進(jìn)入譯碼器時(shí),必須使其處于低電平,使得所有寄存器的反饋值為0,即q-1=0,以確保當(dāng)前碼字分組的伴隨式計(jì)算不會(huì)受到前一個(gè)碼字分組的影響。電路工作過程如下:碼元符號從r254到r0順序發(fā)送,當(dāng)碼元符號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)鍵方程求解的常見方法主要有歐幾里得算法、BM算法及它們的改進(jìn)形式,這些算法都屬于快速迭代算法;其中BM 算法的譯碼時(shí)延比歐幾里得算法小,實(shí)現(xiàn)電路較簡單,所以在工程中較為常用。文章中關(guān)鍵方程求解模塊采用RiBM算法,與BM算法相比,RiBM算法去掉了復(fù)雜的求逆過程,可以采用規(guī)則的脈動(dòng)陣列實(shí)現(xiàn),控制信號少、速度快、硬件實(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)過編譯后,占用芯片的4 327個(gè)邏輯單元,占用邏輯單元比文獻(xiàn)[4]的方案少4 855個(gè)。為了驗(yàn)證該譯碼器能否糾正16個(gè)錯(cuò)誤,在編碼后的碼字中加入16個(gè)錯(cuò)誤,作為譯碼器datain端的輸入,如圖6所示,correctcode為編碼器編碼后的正確碼字,用來作為參照;errorflag為錯(cuò)誤標(biāo)志。譯碼輸出結(jié)果如圖7所示,outflag為高電平時(shí),譯碼器輸出端dataout開始輸出譯碼結(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)過548個(gè)時(shí)鐘周期(5.84 μs)后得到譯碼結(jié)果,與軟件譯碼方式相比,其耗時(shí)非常少。對圖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)來金,李明,王夢.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.