文獻標識碼: A
文章編號: 0258-7998(2010)11-0066-03
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.