栗芬環
(華南理工大學 電子與信息學院,廣東 廣州 510640)
廣電局頒布的移動電視傳輸標準CMMB中,信道傳輸協議是重要的組成部分[1]。其中,前向糾錯碼(FEC)在信道傳輸中尤其重要。RS糾錯碼是FEC的重要組成部分。RS編碼是多元BCH碼的一種[2-3],在線性分組碼中,它的糾錯能力和編碼效率都是最高的。在短碼和中等碼長的條件下性能接近Shannon限。本文著重介紹標準中RS的特點、編碼的FPGA實現。
根據標準描述,RS編碼和字節交織是列輸入和列輸出,按行編碼的方式進行。RS碼長為240 byte的RS(240,k)截短碼。 該碼由原始的 RS(255,M)系統碼通過截短產生,其中M=k+15。k為一個碼字中信息序列的字節數,校驗字節數為(240-k)。 RS(240,k)碼有 4 種模式,分別為 k=240,k=224,k=192,k=176。RS 碼的每個碼元取自域GF(256),標準選擇的生成多項式為

產生截短碼的過程為:
1) 在 k 個輸入信息字節(m0,m1,…,mk-1)前添加 15個全“0”字節,構造為原始的 RS(255,m)。 系統碼的輸入序列為(0,0,…,0,m0,m1,…,mk-1)。
2) 編碼后生成的碼字為(0,0,…,0,m0,m1,…,mk-1,p0,p1,…,p255-M-1)。
從碼字中刪去添加的字節,得到240 byte的RS截短碼。為驗證標準中的系數與設計實現是否一致,編寫Matlab驗證代碼為FPGA提供驗證數據源。對mode=224,設計信息為從0~223,共224個信息字節。編碼所采用的Matlab程序如下:

余項結果如下:
Columns 225 through 240246 90 157 163 59 74 124 45 229 106 182 124 69 49 50 11
對于RS編碼,存在軟件編碼和硬件編碼方法。軟件編碼可以采用信息字節m(x)和生成矩陣G(x)相乘得到碼字[4]。硬件編碼常采用線性移位寄存器(LFSR)電路實現。
圖1給出了標準中RS(240,176)的硬件編碼電路,實現了多項式的乘法和除法運算[5]。采用該電路組成的編碼器在初始化時,需要對寄存器清零。信息字節的高位先進先出,通過開關A和B進行選擇。編碼開始時,開關打到A。當k個信息字節全部進入編碼器后,開關打到B處。此時,LFSR把0不斷地從左邊的r0移進編碼寄存器。這一過程完成了兩項操作:余項從B開關處讀出的同時進行了寄存器的清零。經過N個周期(標準為240)即可完成對k個信息字節的編碼。此后對后k個信息字節進行編碼的時候就不需要重新對寄存器清零。

上述電路都采用了有限域的乘法器,其系數由生成多項式產生,標準中產生系數的辦法如下

不同于標準DVB-C/T的生成多項式[4]為

設計符合k=224,k=192及k=176三種模式的編碼模塊。為了提高綜合效率,只須針對k=176設計,節約編碼成本。對于k=224及k=192模式,只須加載不同的乘法系數即可。例如,對于k=192模式,系數g0~g15為0,系數g16~g63加載k=192時對應的有限域乘法系數。對于k=224 模式,系數 g0~g47為 0,系數 g48~g63加載 k=224 模式下對應的有限域乘法系數。
圖2為編碼器硬件模塊結構??刂颇K發出協調信號,控制字節交織(采用RAM實現)和編碼通路選擇,以達到編碼流水線操作。

控制模塊發送有效數據至LDPC編碼模塊之間的時序關系如圖3所示。

RS模塊與LDPC模塊之間數據通信通過ldpcen信號、ldpcz信號與data信號。當ldpcen信號拉高,告知LDPC模塊開始復位,準備接受RS編碼模塊發送的數據。當ldpcz信號拉高一個周期,意味著RS模塊發送的數據有效,直至ldpcen信號拉低。
對設計模塊進行FPGA綜合驗證,綜合工具為QuartusII6.0;功能仿真工具為Modelsim6.1。器件選擇EP2S30F484C3。綜合結果為:Total ALUTs為1 572,占用6%;Total Memory bits為 1 049 600,占用 77%。
綜合結果符合標準的字節交織深度最大為432,則432×240×8=829 440。 使用了 FPGA 內部 2 片 65 536×8 bit的RAM組成,從而占用了大量的內存。
功耗分析結果如下:設置device power characteristics為typical,工作溫度為25°。靜態功耗為367.5 mW,動態功耗為71.33 mW,I/O熱功率為27.78 mW,分析結果可信程度顯示為高。
可見,為降低功耗以及成本,經過FPGA驗證后,有必要采用ASIC流程進行芯片設計。給出其中k=224編碼模塊的經QuartusII綜合布線后仿真波形(見圖4):設置時鐘頻率為 85 MHz; 余項數據為 246,90,157,163,59 74,124,45,229,106,182,124,69,49,50,11,與 Matlab 編碼結果數據一致。

CMMB RS編碼器的驗證由隨機驗證和FPGA上板測試組成,隨機驗證通過Matlab平臺產生隨機函數,通過Modelsim驗證平臺讀入隨機數據,并灌入所設計的Verilog模塊,輸出寫成txt文本,由Matlab平臺讀入校驗[5]。實時編碼硬件驗證需要把Quartus生成的bitfile下載到Altera EP2S30F484C3中。為方便驗證,直接使用了計算機VGA輸出作為動態編碼數據源,通過對數據流“編碼-解碼-重現”的過程,驗證信道編碼的正確性。FPGA驗證流程如圖5所示。

圖5中,ERC為error rate calculate模塊。經過 “編碼-解碼-重現”,當隨機錯誤產生器產生的加性誤碼干擾在信道RS編碼糾錯范圍外,顯示圖像存在雜點(誤碼干擾)。當隨機錯誤產生器產生的加性誤碼干擾在信道RS編碼糾錯范圍內,顯示圖像無雜點(無誤碼干擾),如圖6所示。

筆者對移動多媒體新標準RS碼特點進行了分析,采用Verilog語言實現編碼的FPGA驗證與實現。結合標準中FEC特點,編碼硬件模塊在字節交織的同時進行數據發送,實現流水線操作,以此減少相應的等待延時。結合CMMB編碼特點,結合RS編碼原理,只須設計k=176編碼器,通過加載不同信息長度的編碼系數,實現k=224,k=192模式下的RS編碼。并通過“編碼-解碼-重現”驗證了RS編碼器的實際工作效果。
:
[1]國家廣播電影電視總局.GY/T 220.1-2006中華人民共和國廣播電影電視行業標準[S].2006.
[2]梁煒新,王群生,牟剛.基于FPGA的通用RS編解碼器的VHDL設計方法[J].電視技術,2004,28(3):16-20.
[3]王新梅,肖國鎮.糾錯碼原理與方法[M].西安:西安電子科技大學出版社,2001.
[4]馬紅學,劉青.RS編碼器的CPLD實現[J].電視技術,2002,26(10):52-54.
[5]栗芬環.Matlab和Modelsim數字前端設計、仿真驗證平臺[EB/OL].[2010-02-10].http://www.leaderstudio.cn/meeting/qth/14th/other1.html.