栗芬環(huán)
(華南理工大學(xué) 電子與信息學(xué)院,廣東 廣州 510640)
廣電局頒布的移動(dòng)電視傳輸標(biāo)準(zhǔn)CMMB中,信道傳輸協(xié)議是重要的組成部分[1]。其中,前向糾錯(cuò)碼(FEC)在信道傳輸中尤其重要。RS糾錯(cuò)碼是FEC的重要組成部分。RS編碼是多元BCH碼的一種[2-3],在線(xiàn)性分組碼中,它的糾錯(cuò)能力和編碼效率都是最高的。在短碼和中等碼長(zhǎng)的條件下性能接近Shannon限。本文著重介紹標(biāo)準(zhǔn)中RS的特點(diǎn)、編碼的FPGA實(shí)現(xiàn)。
根據(jù)標(biāo)準(zhǔn)描述,RS編碼和字節(jié)交織是列輸入和列輸出,按行編碼的方式進(jìn)行。RS碼長(zhǎng)為240 byte的RS(240,k)截短碼。 該碼由原始的 RS(255,M)系統(tǒng)碼通過(guò)截短產(chǎn)生,其中M=k+15。k為一個(gè)碼字中信息序列的字節(jié)數(shù),校驗(yàn)字節(jié)數(shù)為(240-k)。 RS(240,k)碼有 4 種模式,分別為 k=240,k=224,k=192,k=176。RS 碼的每個(gè)碼元取自域GF(256),標(biāo)準(zhǔn)選擇的生成多項(xiàng)式為
產(chǎn)生截短碼的過(guò)程為:
1) 在 k 個(gè)輸入信息字節(jié)(m0,m1,…,mk-1)前添加 15個(gè)全“0”字節(jié),構(gòu)造為原始的 RS(255,m)。 系統(tǒng)碼的輸入序列為(0,0,…,0,m0,m1,…,mk-1)。
2) 編碼后生成的碼字為(0,0,…,0,m0,m1,…,mk-1,p0,p1,…,p255-M-1)。
從碼字中刪去添加的字節(jié),得到240 byte的RS截短碼。為驗(yàn)證標(biāo)準(zhǔn)中的系數(shù)與設(shè)計(jì)實(shí)現(xiàn)是否一致,編寫(xiě)Matlab驗(yàn)證代碼為FPGA提供驗(yàn)證數(shù)據(jù)源。對(duì)mode=224,設(shè)計(jì)信息為從0~223,共224個(gè)信息字節(jié)。編碼所采用的Matlab程序如下:
余項(xiàng)結(jié)果如下:
Columns 225 through 240246 90 157 163 59 74 124 45 229 106 182 124 69 49 50 11
對(duì)于RS編碼,存在軟件編碼和硬件編碼方法。軟件編碼可以采用信息字節(jié)m(x)和生成矩陣G(x)相乘得到碼字[4]。硬件編碼常采用線(xiàn)性移位寄存器(LFSR)電路實(shí)現(xiàn)。
圖1給出了標(biāo)準(zhǔn)中RS(240,176)的硬件編碼電路,實(shí)現(xiàn)了多項(xiàng)式的乘法和除法運(yùn)算[5]。采用該電路組成的編碼器在初始化時(shí),需要對(duì)寄存器清零。信息字節(jié)的高位先進(jìn)先出,通過(guò)開(kāi)關(guān)A和B進(jìn)行選擇。編碼開(kāi)始時(shí),開(kāi)關(guān)打到A。當(dāng)k個(gè)信息字節(jié)全部進(jìn)入編碼器后,開(kāi)關(guān)打到B處。此時(shí),LFSR把0不斷地從左邊的r0移進(jìn)編碼寄存器。這一過(guò)程完成了兩項(xiàng)操作:余項(xiàng)從B開(kāi)關(guān)處讀出的同時(shí)進(jìn)行了寄存器的清零。經(jīng)過(guò)N個(gè)周期(標(biāo)準(zhǔn)為240)即可完成對(duì)k個(gè)信息字節(jié)的編碼。此后對(duì)后k個(gè)信息字節(jié)進(jìn)行編碼的時(shí)候就不需要重新對(duì)寄存器清零。
上述電路都采用了有限域的乘法器,其系數(shù)由生成多項(xiàng)式產(chǎn)生,標(biāo)準(zhǔn)中產(chǎn)生系數(shù)的辦法如下
不同于標(biāo)準(zhǔn)DVB-C/T的生成多項(xiàng)式[4]為
設(shè)計(jì)符合k=224,k=192及k=176三種模式的編碼模塊。為了提高綜合效率,只須針對(duì)k=176設(shè)計(jì),節(jié)約編碼成本。對(duì)于k=224及k=192模式,只須加載不同的乘法系數(shù)即可。例如,對(duì)于k=192模式,系數(shù)g0~g15為0,系數(shù)g16~g63加載k=192時(shí)對(duì)應(yīng)的有限域乘法系數(shù)。對(duì)于k=224 模式,系數(shù) g0~g47為 0,系數(shù) g48~g63加載 k=224 模式下對(duì)應(yīng)的有限域乘法系數(shù)。
圖2為編碼器硬件模塊結(jié)構(gòu)??刂颇K發(fā)出協(xié)調(diào)信號(hào),控制字節(jié)交織(采用RAM實(shí)現(xiàn))和編碼通路選擇,以達(dá)到編碼流水線(xiàn)操作。
控制模塊發(fā)送有效數(shù)據(jù)至LDPC編碼模塊之間的時(shí)序關(guān)系如圖3所示。
RS模塊與LDPC模塊之間數(shù)據(jù)通信通過(guò)ldpcen信號(hào)、ldpcz信號(hào)與data信號(hào)。當(dāng)ldpcen信號(hào)拉高,告知LDPC模塊開(kāi)始復(fù)位,準(zhǔn)備接受RS編碼模塊發(fā)送的數(shù)據(jù)。當(dāng)ldpcz信號(hào)拉高一個(gè)周期,意味著RS模塊發(fā)送的數(shù)據(jù)有效,直至ldpcen信號(hào)拉低。
對(duì)設(shè)計(jì)模塊進(jìn)行FPGA綜合驗(yàn)證,綜合工具為QuartusII6.0;功能仿真工具為Modelsim6.1。器件選擇EP2S30F484C3。綜合結(jié)果為:Total ALUTs為1 572,占用6%;Total Memory bits為 1 049 600,占用 77%。
綜合結(jié)果符合標(biāo)準(zhǔn)的字節(jié)交織深度最大為432,則432×240×8=829 440。 使用了 FPGA 內(nèi)部 2 片 65 536×8 bit的RAM組成,從而占用了大量的內(nèi)存。
功耗分析結(jié)果如下:設(shè)置device power characteristics為typical,工作溫度為25°。靜態(tài)功耗為367.5 mW,動(dòng)態(tài)功耗為71.33 mW,I/O熱功率為27.78 mW,分析結(jié)果可信程度顯示為高。
可見(jiàn),為降低功耗以及成本,經(jīng)過(guò)FPGA驗(yàn)證后,有必要采用ASIC流程進(jìn)行芯片設(shè)計(jì)。給出其中k=224編碼模塊的經(jīng)QuartusII綜合布線(xiàn)后仿真波形(見(jiàn)圖4):設(shè)置時(shí)鐘頻率為 85 MHz; 余項(xiàng)數(shù)據(jù)為 246,90,157,163,59 74,124,45,229,106,182,124,69,49,50,11,與 Matlab 編碼結(jié)果數(shù)據(jù)一致。
CMMB RS編碼器的驗(yàn)證由隨機(jī)驗(yàn)證和FPGA上板測(cè)試組成,隨機(jī)驗(yàn)證通過(guò)Matlab平臺(tái)產(chǎn)生隨機(jī)函數(shù),通過(guò)Modelsim驗(yàn)證平臺(tái)讀入隨機(jī)數(shù)據(jù),并灌入所設(shè)計(jì)的Verilog模塊,輸出寫(xiě)成txt文本,由Matlab平臺(tái)讀入校驗(yàn)[5]。實(shí)時(shí)編碼硬件驗(yàn)證需要把Quartus生成的bitfile下載到Altera EP2S30F484C3中。為方便驗(yàn)證,直接使用了計(jì)算機(jī)VGA輸出作為動(dòng)態(tài)編碼數(shù)據(jù)源,通過(guò)對(duì)數(shù)據(jù)流“編碼-解碼-重現(xiàn)”的過(guò)程,驗(yàn)證信道編碼的正確性。FPGA驗(yàn)證流程如圖5所示。
圖5中,ERC為error rate calculate模塊。經(jīng)過(guò) “編碼-解碼-重現(xiàn)”,當(dāng)隨機(jī)錯(cuò)誤產(chǎn)生器產(chǎn)生的加性誤碼干擾在信道RS編碼糾錯(cuò)范圍外,顯示圖像存在雜點(diǎn)(誤碼干擾)。當(dāng)隨機(jī)錯(cuò)誤產(chǎn)生器產(chǎn)生的加性誤碼干擾在信道RS編碼糾錯(cuò)范圍內(nèi),顯示圖像無(wú)雜點(diǎn)(無(wú)誤碼干擾),如圖6所示。
筆者對(duì)移動(dòng)多媒體新標(biāo)準(zhǔn)RS碼特點(diǎn)進(jìn)行了分析,采用Verilog語(yǔ)言實(shí)現(xiàn)編碼的FPGA驗(yàn)證與實(shí)現(xiàn)。結(jié)合標(biāo)準(zhǔn)中FEC特點(diǎn),編碼硬件模塊在字節(jié)交織的同時(shí)進(jìn)行數(shù)據(jù)發(fā)送,實(shí)現(xiàn)流水線(xiàn)操作,以此減少相應(yīng)的等待延時(shí)。結(jié)合CMMB編碼特點(diǎn),結(jié)合RS編碼原理,只須設(shè)計(jì)k=176編碼器,通過(guò)加載不同信息長(zhǎng)度的編碼系數(shù),實(shí)現(xiàn)k=224,k=192模式下的RS編碼。并通過(guò)“編碼-解碼-重現(xiàn)”驗(yàn)證了RS編碼器的實(shí)際工作效果。
:
[1]國(guó)家廣播電影電視總局.GY/T 220.1-2006中華人民共和國(guó)廣播電影電視行業(yè)標(biāo)準(zhǔn)[S].2006.
[2]梁煒新,王群生,牟剛.基于FPGA的通用RS編解碼器的VHDL設(shè)計(jì)方法[J].電視技術(shù),2004,28(3):16-20.
[3]王新梅,肖國(guó)鎮(zhèn).糾錯(cuò)碼原理與方法[M].西安:西安電子科技大學(xué)出版社,2001.
[4]馬紅學(xué),劉青.RS編碼器的CPLD實(shí)現(xiàn)[J].電視技術(shù),2002,26(10):52-54.
[5]栗芬環(huán).Matlab和Modelsim數(shù)字前端設(shè)計(jì)、仿真驗(yàn)證平臺(tái)[EB/OL].[2010-02-10].http://www.leaderstudio.cn/meeting/qth/14th/other1.html.