譚澤富 謝 紅
(1.重慶郵電大學(xué)通信與信息工程學(xué)院,重慶 400065)
(2.重慶三峽學(xué)院物理與電子工程學(xué)院,重慶 404100)
全球移動(dòng)由中國國家廣電總局發(fā)布的行業(yè)標(biāo)準(zhǔn)CMMB(China Mobile Multimedia Broad-Casting,中國移動(dòng)多媒體廣播)采用衛(wèi)星和地面網(wǎng)絡(luò)相結(jié)合的“天地一體、星網(wǎng)結(jié)合、統(tǒng)一標(biāo)準(zhǔn)、全國漫游”的技術(shù)體系,可實(shí)現(xiàn)我國幅員遼闊,環(huán)境復(fù)雜的有效覆蓋.其核心技術(shù)——STiMi技術(shù),與大多數(shù)其他移動(dòng)多媒體標(biāo)準(zhǔn)一樣,采用具有高性能的RS碼作為外碼.不同的是,它采用LDPC碼作為內(nèi)碼,與RS碼一起構(gòu)成CMMB的兩級(jí)信道編碼體系,兩級(jí)信道編碼在通信系統(tǒng)中可以有效抵抗干擾,其支持移動(dòng)性的能力要好于一級(jí)信道編碼.
RS碼是一種特殊的分組線性碼,由于它編碼簡(jiǎn)單、構(gòu)造方便,并且代數(shù)結(jié)構(gòu)非常嚴(yán)格,所以在同樣的編碼冗余度下,RS碼的糾錯(cuò)能力最強(qiáng),特別是在短的中等碼長(zhǎng)下,其編碼性能幾乎接近于理論值,[1]故在無線通信領(lǐng)域中得到非常廣泛的應(yīng)用.本文探討了CMMB系統(tǒng)中RS編碼的基本原理,并根據(jù)其原理,給出了基于FPGA的RS編碼器的設(shè)計(jì).
RS(Reed Solomon)碼是一類糾錯(cuò)能力極強(qiáng)的多進(jìn)制BCH循環(huán)碼,能糾正多個(gè)錯(cuò)誤,特別針對(duì)大容量的存儲(chǔ)設(shè)備,無線和移動(dòng)通信設(shè)施,數(shù)字電視(DTV),衛(wèi)星通信,數(shù)字視頻廣播(DVB)和寬帶調(diào)制解調(diào)器等突發(fā)性錯(cuò)誤.
在CMMB系統(tǒng)中,RS編碼器并不是完全獨(dú)立的,通常和字節(jié)交織器一起使用,如圖1所示.來自上層的比特?cái)?shù)據(jù)流按低位優(yōu)先的方式劃分為字節(jié),逐字節(jié)從左至右按列填滿字節(jié)交織器的信息區(qū)(圖1中白色區(qū)域),然后按行進(jìn)行RS編碼,字節(jié)交織器的校驗(yàn)區(qū)(圖1中灰色區(qū)域)為RS碼字的校驗(yàn)字節(jié),每個(gè)RS碼字的校驗(yàn)序列和該碼字的信息序列在字節(jié)交織器的同一行,當(dāng)編碼完成之后,字節(jié)交織器中的數(shù)據(jù)就會(huì)逐字節(jié)按列從左至右取出.CMMB中采用的編碼長(zhǎng)為240字節(jié)的RS(240, K)截短碼,該RS碼由原始RS(255, I)系統(tǒng)碼通過截短產(chǎn)生,其中 I=K+15.K為一個(gè)碼字中信息序列的字節(jié)數(shù),校驗(yàn)字節(jié)數(shù)為240-K.RS(240, K)碼有4種工作模式,分別對(duì)應(yīng)的K值為240,224,192,176.其中碼的糾錯(cuò)能力為(240-K)/2個(gè)字節(jié).很明顯,K越小,該RS碼的糾錯(cuò)能力就越強(qiáng),但信息冗余會(huì)相應(yīng)地增大.[2]
根據(jù)CMMB標(biāo)準(zhǔn)規(guī)定每個(gè)經(jīng)過隨機(jī)化的K = 240,K = 224,K = 192,K = 176字節(jié)的傳輸包都要進(jìn)行RS編碼.經(jīng)過RS編碼,每個(gè)傳輸包后面分別增加0,l6,48,64個(gè)校驗(yàn)字節(jié),成為240個(gè)字節(jié)組成的錯(cuò)誤保護(hù)包,記為RS(240, K).當(dāng)K = 224時(shí),RS (240, 224)就具有t = (240-224)/2 = 8字節(jié)的糾錯(cuò)能力.
圖1 字節(jié)交織和RS編碼
RS (255, K)碼是基于有限域GF (256)的循環(huán)碼,集合GF (256)包含的元素為:
截短碼RS(240, K)的生成多項(xiàng)式表示為:
輸入的信息序列多項(xiàng)式表示為:
輸出的系統(tǒng)碼多項(xiàng)式為:
其中
在一些特定的應(yīng)用域中,RS碼的設(shè)計(jì)與實(shí)現(xiàn)是比較困難的.RS碼由于在有限域上進(jìn)行的代數(shù)運(yùn)算,因而與其他常用的二進(jìn)制系統(tǒng)有所不同,實(shí)現(xiàn)相對(duì)復(fù)雜一些,其復(fù)雜度主要取決于有限域的大小、碼字的長(zhǎng)度、采用的編碼算法等.編碼器的實(shí)現(xiàn)方式主要有:微處理器實(shí)現(xiàn)、DSP實(shí)現(xiàn)、ASIC實(shí)現(xiàn)和FPGA實(shí)現(xiàn).[3]其中利用FPGA實(shí)現(xiàn)CMMB系統(tǒng)中RS編碼是最簡(jiǎn)單的方法.FPGA能夠既快速又經(jīng)濟(jì)地將電路描述轉(zhuǎn)化為硬件實(shí)現(xiàn),而且對(duì)設(shè)計(jì)的修訂也比較方便.而通常的ASIC需要的設(shè)計(jì)時(shí)間較長(zhǎng),成本高,靈活性差,所以本文是基于FPGA設(shè)計(jì)RS編碼的結(jié)構(gòu).
令CMMB系統(tǒng)中RS (240, K)碼的K個(gè)信息符號(hào)序列m=(mk-1,mk-2,…,m1,m0),該信息的多項(xiàng)式可以用(1)式表示,首先將 m(x)左移240-k位得到多項(xiàng)式 m(x)x240-k,然后將它與生成多項(xiàng)式 g(x)相除,就可以得到RS編碼后的多項(xiàng)式c(x),其中 r(x)為效驗(yàn)多項(xiàng)式,是 m(x)x240-k除以g(x)后的余式,其次數(shù)低于240-k.當(dāng)且僅當(dāng)域元素(c0 ,c1, …,c 239)組成的向量是生成多項(xiàng)式g(x)的倍數(shù)時(shí),此向量才能為碼字,當(dāng)在 CMMB系統(tǒng)中能完全糾正(24 0-k)/2個(gè)錯(cuò)誤時(shí),RS編碼的生成多項(xiàng)式的表達(dá)式為:
其中α是有限域 GF (2m)的元素.設(shè)輸入信息碼為 m(x),編碼后的碼組為 c(x),則
因?yàn)閏(x )=m(x)x240-k+ r(x ),r(x)為多項(xiàng)式
m(x)x240-k除以 g(x)的余式.因此可以用240-k階除法電路構(gòu)成編碼器.又由于生成多項(xiàng)式
所以RS編碼器的結(jié)構(gòu)圖可以設(shè)計(jì)為如圖2所示.
圖2 RS編碼器結(jié)構(gòu)圖
此編碼器的工作原理為:
1)將寄存器b0,b1 , …, b 239-k全部清零,打開門1,關(guān)閉門2,然后送入信息碼組 m0, m1 , … ,mk-1.信息碼組在電路中被分為兩路,一路經(jīng)過數(shù)據(jù)選擇器直接輸出,一路乘以 x240-k后進(jìn)入 g(x)除法電路并移位,每個(gè)時(shí)鐘移一個(gè)字節(jié).
2)經(jīng)k次移位后,信息碼組全部進(jìn)入電路,然后完成除法運(yùn)算,此時(shí)電路中移位寄存器內(nèi)保存的就是余式 r(x)的系數(shù),也就是RS碼的效驗(yàn)碼組.
3)當(dāng)k+1個(gè)時(shí)鐘到來時(shí),信息碼組暫停輸入,關(guān)閉門1,打開門2,這時(shí)經(jīng)過240-k次移位后的數(shù)據(jù)全部移出,得到240-k個(gè)效驗(yàn)碼組,跟在原來長(zhǎng)為k的信息碼組后面,就組成(24 0,k)碼輸出,這就完成了RS碼的一組編碼.
4)寄存器 b0,b1 , …, b 239-k全部清零,重復(fù)步驟(1)、(2)、(3),繼續(xù)對(duì)下一組RS碼進(jìn)行編碼.
從 RS編碼器結(jié)構(gòu)圖可以看出編碼器包含240-k個(gè)有限域乘法器,有限域乘法器是實(shí)現(xiàn)RS編碼器的關(guān)鍵.它一般可以用查表法,線性反饋移位寄存器法[4],Messey-Omura法[5]和Berlekamp位串法[1,6]實(shí)現(xiàn).為了實(shí)現(xiàn)高速可靠的計(jì)算,本文所使用的乘法器為并行結(jié)構(gòu),乘數(shù)與被乘數(shù)均使用標(biāo)準(zhǔn)基表示,不需要基與基之間的轉(zhuǎn)換,其應(yīng)用廣泛,結(jié)構(gòu)簡(jiǎn)單,且易于擴(kuò)展至高階有限域中.
CMMB系統(tǒng)中的RS碼是基于有限 GF (28)的,GF (28)域中,本原多項(xiàng)式為x8+ x 4+ x3+ x2+1=0設(shè)a,b,c ∈GF (28),且c=a×b, GF (28)中的任何元素都可以表示為x的0~7次方的組合.
式中的⊕表示異或運(yùn)算,可見結(jié)構(gòu)中的乘法運(yùn)算轉(zhuǎn)換成了一組數(shù)字邏輯運(yùn)算,而且結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn).盡管在實(shí)現(xiàn)邏輯運(yùn)算時(shí)需要較多的門數(shù),但可以節(jié)約大量的寄存器,從而可以明顯減少芯片的面積.
當(dāng)傳輸CMMB信號(hào)數(shù)據(jù)流時(shí),傳輸信道中存在著各種干擾,嚴(yán)重影響傳輸信號(hào)的質(zhì)量.為了提高數(shù)據(jù)的抗干擾能力及傳輸?shù)目煽啃裕仨殞?duì)信號(hào)數(shù)據(jù)進(jìn)行RS糾錯(cuò)編碼處理,這種編碼具有發(fā)現(xiàn)和修正信號(hào)在傳輸過程中產(chǎn)生誤碼的功能,從而提高了CMMB的通信質(zhì)量.本設(shè)計(jì)實(shí)現(xiàn)了CMMB系統(tǒng)中RS(240, K)的編碼器設(shè)計(jì),并通過FPGA來實(shí)現(xiàn),與其他實(shí)現(xiàn)方法相比,用FPGA實(shí)現(xiàn)的RS編碼電路更為簡(jiǎn)單,成本更低.其中乘法器是電路中的關(guān)鍵部分,合理的選擇乘法器可以高速可靠的完成乘法運(yùn)算,最終完成差錯(cuò)率低,延遲小的RS編碼.
[1]王新梅,肖國鎮(zhèn)編著.糾錯(cuò)碼-原理與方法[M].西安:西安電子科技大學(xué)出版社,2002.
[2]中華人民共和國廣播電影電視行業(yè)標(biāo) GY/T 220.1-2006,CMMB廣播信道幀結(jié)構(gòu)、信道編碼和調(diào)制[S]. 2006.
[3]何秋陽.基于FPGA的RS編碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2009,22(2):44-46.
[4]Laws Jr BA,Rushforth C K.. A cellular-array multiplier for GF(2m)[J]. IEEE Trans Computer.1971.
[5]Wang C C.. VLSI architectures for computing multiplications and inverses in GF(2m)[J].IEEE Trans Computer,1985,34(8).
[6]Berlekamp E R.. Bit-serial Reed-Solomon encoders[J]. IEEE Trans Information Theory,1982,28(6).