《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速RS譯碼器設(shè)計(jì)
基于FPGA的高速RS譯碼器設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2010年第11期
殷愛菡,劉方仁,陳燕燕
華東交通大學(xué) 信息工程學(xué)院,江西 南昌330013
摘要: 提出了一種基于RiBM算法的RS(255,223)高速譯碼器設(shè)計(jì)方案,并采用FPGA和Verilog HDL實(shí)現(xiàn)了該譯碼器。譯碼器采用三級流水線結(jié)構(gòu)實(shí)現(xiàn),其中關(guān)鍵方程求解模塊采用RiBM算法,具有譯碼速度快、占用硬件資源少等優(yōu)點(diǎn)。仿真結(jié)果驗(yàn)證了該譯碼器設(shè)計(jì)方案的有效性和可行性。
中圖分類號: TN919
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號: 0258-7998(2010)11-0066-03
Design of the high speed RS decoder based on FPGA
YIN Ai Han,LIU Fang Ren,CHEN Yan Yan
School of Information Engineering, East China Jiaotong University,Nanchang 330013,China
Abstract: The design proposal of the RS(255,223) high speed decoder based on RiBM algorithm is put forward, and the decoder is implemented with FPGA and Verilog HDL. The decoder has advantages of high decoding speed and occupancy less hardware resources, which is realized with three-level pipeline structure and the module of key equation solution is implemented with RiBM algorithm. The simulation result validates the validity and feasibility of the design proposal of the decoder.
Key words : RS(255,223);FPGA;RiBM algorithm

    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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。