《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的高速RS譯碼器設計
基于FPGA的高速RS譯碼器設計
來源:電子技術應用2010年第11期
殷愛菡,,劉方仁,,陳燕燕
華東交通大學 信息工程學院,,江西 南昌330013
摘要: 提出了一種基于RiBM算法的RS(255,,223)高速譯碼器設計方案,,并采用FPGA和Verilog HDL實現(xiàn)了該譯碼器,。譯碼器采用三級流水線結構實現(xiàn),,其中關鍵方程求解模塊采用RiBM算法,,具有譯碼速度快,、占用硬件資源少等優(yōu)點。仿真結果驗證了該譯碼器設計方案的有效性和可行性,。
中圖分類號: TN919
文獻標識碼: 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碼是一種糾錯能力很強的多進制BCH碼,,同時具有糾正隨機和突發(fā)兩種差錯的能力,,因此被廣泛應用于通信系統(tǒng)中,,以提高數(shù)據傳輸?shù)目煽啃浴T诠馔ㄐ畔到y(tǒng)中,,常把RS碼作為其前向糾錯碼,。近幾年,RS碼常用于一些高速通信系統(tǒng)中作為信道編碼,,例如,,802.3av協(xié)議規(guī)定RS(255,223)作為10 G EPON的前向糾錯碼,,這些高速系統(tǒng)對前向糾錯的處理速率提出了更高的要求,。已有文獻[1],[2],,[4]中關于RS(255,,223)譯碼器的設計,都難以在速度和面積上兼顧考慮,,特別是譯碼速率太慢,,無法滿足高速通信系統(tǒng)的要求。為了保證高速處理,,同時盡可能減少硬件資源的占用,,提出一種合理的譯碼器結構,從而能高效,、快速地譯碼,。

    RS譯碼算法主要分為兩種:時域譯碼算法和頻域譯碼算法。若采用硬件實現(xiàn)頻域譯碼算法,,則電路結構非常復雜,,耗費的硬件資源非常大。而時域譯碼算法具有速度快,、硬件資源耗費少,、控制電路少等優(yōu)點。因此,,采用時域譯碼算法來實現(xiàn)RS(255,,223)譯碼器。RS(255,,223)的時域譯碼步驟如下:
    (1)由接收碼字計算RS(255,,223)的伴隨多項式S(x);
    (2)采用RiBM算法通過伴隨多項式求解關鍵方程,,從而求解出錯誤位置多項式?滓(x)和錯誤值多項式?棕(x),;
    (3)利用錢氏搜索法求解出錯誤位置多項式的根,得到錯誤位置;錯誤位置多項式的根的倒數(shù)即是錯誤位置,;
    (4)利用Forney算法由錯誤值多項式求解出各個錯誤位置對應的錯誤幅值,;
    (5)FIFO控制器所存儲的接收碼字與錯誤幅值相減得到正確的傳輸碼字。
2 RS(255,,223)譯碼器設計
    為了提高譯碼器的處理速度,,采用三級流水線結構來實現(xiàn)RS(255,223)譯碼器,,其結構如圖1所示,。譯碼過程中的計算都是基于有限域的,,其基本計算單元是有限域乘法器和加法器,。RS(255,223)譯碼器包括:伴隨式計算模塊,、關鍵方程求解模塊,、錢氏搜索模塊、Forney算法模塊以及FIFO模塊5個部分,。


qj稱為第j步的部分和,,并且有q-1=0和si=q254。由遞歸公式(2)可知,,32個伴隨式是獨立并行計算的,,且各自是遞歸運算,其結構非常規(guī)則,,易于硬件實現(xiàn),。為了提高譯碼速度,設計采用32個并行的計算模塊,,分別計算所需要的32個伴隨式,。伴隨式計算模塊的電路結構如圖2所示,feedback信號用于控制寄存器的反饋,,當一個碼字分組的第一個符號r254進入譯碼器時,,必須使其處于低電平,使得所有寄存器的反饋值為0,,即q-1=0,,以確保當前碼字分組的伴隨式計算不會受到前一個碼字分組的影響。電路工作過程如下:碼元符號從r254到r0順序發(fā)送,,當碼元符號r255-j-1到達后,,寄存器中存儲的部分和qj與αi相乘,然后與r255-j-1相加得到新的部分和qj+1并存入寄存器中,,當r0到達后,,伴隨式計算完成。

2.2 關鍵方程求解模塊的電路設計
    關鍵方程求解的常見方法主要有歐幾里得算法、BM算法及它們的改進形式,,這些算法都屬于快速迭代算法,;其中BM 算法的譯碼時延比歐幾里得算法小,實現(xiàn)電路較簡單,,所以在工程中較為常用,。文章中關鍵方程求解模塊采用RiBM算法,與BM算法相比,,RiBM算法去掉了復雜的求逆過程,,可以采用規(guī)則的脈動陣列實現(xiàn),控制信號少,、速度快,、硬件實現(xiàn)更方便。采用RiBM算法,,單個時鐘周期內的運算量減少,,可以提高譯碼器的工作頻率,因此采用RiBM算法可以顯著地提高譯碼速度,。RiBM算法的主要思路是并行實現(xiàn),,其硬件結構采用規(guī)則的脈動陣列實現(xiàn),RiBM算法的硬件結構主要包括兩部分:一部分是49個功能相同的PE計算單元的串接組合實現(xiàn)多項式的脈動計算,;另一部分是控制電路,,實現(xiàn)差值更新[3]。其硬件實現(xiàn)結構如圖3所示,。


3 實現(xiàn)結果的驗證與分析
    譯碼器的功能驗證是在Modelsim SE 6.2b和QuartusⅡ7.1環(huán)境下完成的,。驗證所采用的芯片是CycloneⅡ系列芯片 EP2C8T144C8。經過編譯后,,占用芯片的4 327個邏輯單元,,占用邏輯單元比文獻[4]的方案少4 855個。為了驗證該譯碼器能否糾正16個錯誤,,在編碼后的碼字中加入16個錯誤,,作為譯碼器datain端的輸入,如圖6所示,,correctcode為編碼器編碼后的正確碼字,,用來作為參照;errorflag為錯誤標志,。譯碼輸出結果如圖7所示,,outflag為高電平時,譯碼器輸出端dataout開始輸出譯碼結果,。仿真結果顯示,,該譯碼器的伴隨式計算模塊耗時約為255個時鐘周期,,關鍵方程求解模塊耗時約為32個時鐘周期,錢氏搜索模塊和Forney算法模塊獨立并行地工作,,其總耗時約為255個時鐘周期,。與ME算法相比,關鍵方程求解采用RiBM算法,,可以大大提高譯碼速度,。系統(tǒng)時鐘頻率設為100 MHz,經過548個時鐘周期(5.84 μs)后得到譯碼結果,,與軟件譯碼方式相比,,其耗時非常少。對圖6和圖7進行比較,,可以看出,,譯碼器成功地糾正了16個錯誤,證明該譯碼器能很好地實現(xiàn)譯碼功能,。

    文章完整地闡述了基于RiBM算法的RS(255,,223)高速譯碼器的設計以及FPGA實現(xiàn),仿真和編譯結果表明該譯碼器與ME算法實現(xiàn)的譯碼器硬件復雜度相近,,譯碼時延大大減小,極大地提高了數(shù)據吞吐率,,其裝置可以應用于諸如光通信系統(tǒng)等需要高速譯碼的通信系統(tǒng)中,。
參考文獻
[1] 嚴來金,李明,,王夢.RS(255,,223)譯碼器的設計與FPGA實現(xiàn)[J].微計算機信息,2005,,21(1):148-149.
[2] 張玲,,張立,何偉.截短Reed-Solomon碼譯碼器的FPGA實現(xiàn)[J].電子技術應用,,2009,,35(7):65-67.
[3] 陳曦,謝軍,,邱琪.基于RiBM算法的RS譯碼器設計實現(xiàn)[J].光通信技術,,2008(11):48-50.
[4] 向征,劉興釗.RS(255,,223)編譯碼器的設計與FPGA實現(xiàn)[J].電視技術,,2006(11):17-19.

此內容為AET網站原創(chuàng),未經授權禁止轉載,。