陳慶旭,孫 曼,植 涌
(四川大學(xué)電氣信息學(xué)院,四川 成都 610065)
由于種種原因造成數(shù)字信號(hào)傳輸?shù)臄?shù)據(jù)流出現(xiàn)誤碼,從而導(dǎo)致接收端產(chǎn)生圖像不連續(xù)、跳躍等現(xiàn)象,因此信道編碼就顯得尤為重要。信道編碼可增加通信的可靠性,極大地避免傳送碼流中誤碼的發(fā)生,并在信道中加入糾錯(cuò)、交織等處理誤碼的技術(shù)。該文介紹了DVB-C系統(tǒng)中編碼器的實(shí)現(xiàn),將其分為擾碼、RS編碼、卷積交織、QAM調(diào)制4個(gè)部分,并對(duì)其中的RS編碼和卷積交織做了重點(diǎn)介紹,提出一種基于FPGA的實(shí)現(xiàn)方案。
圖1為DVB-C編碼系統(tǒng)的硬件實(shí)現(xiàn)圖。
圖1 DVB-C編碼系統(tǒng)的硬件實(shí)現(xiàn)圖
DVB-C編碼系統(tǒng)的硬件實(shí)現(xiàn)包括5個(gè)部分:
1)PCI接口。該系統(tǒng)采用Altera公司CPLD MAXII系列中的EPM1270256C5實(shí)現(xiàn)PCI接口。因?yàn)镸AXII的功耗和成本大幅降低,資源密度和性能卻顯著提升,非常適用于接口協(xié)議,又因?yàn)橹辉贓PM1270和EPM2210的I/O Bank 3中有PCI鉗位二極管,故此設(shè)計(jì)選用EPM1270256C5[1]。
2)DVB-C編碼器。該系統(tǒng)采用Altera公司的CycloneIII系列中的EP3C55F484C6完成了編碼器的設(shè)計(jì)。
3)ADC。ADC模塊采用ADI公司的AD9777數(shù)模轉(zhuǎn)化器,它非常適合那些要求高調(diào)制精度(即64 QAM以上)的應(yīng)用,可以抑制模擬混頻操作固有的鏡像,從而減少濾波級(jí)的數(shù)量,降低實(shí)現(xiàn)3G和寬帶頻譜發(fā)射所需硬件的成本[2]。
4)I/Q調(diào)制器、本振信號(hào)。I/Q調(diào)制器采用ADL5385,它是一款硅單芯片正交調(diào)制器,設(shè)計(jì)用于50~2200 MHz頻率范圍。其出色的相位精度和幅度平衡可以為通信系統(tǒng)提供高性能中頻或直接射頻調(diào)制。ADL5385 從兩路差分基帶輸入獲得信號(hào),并將其調(diào)制到兩個(gè)彼此正交的載波上。兩個(gè)內(nèi)部載波均源自一路單端、外部本振輸入信號(hào),其頻率為目標(biāo)載波輸出頻率的兩倍。經(jīng)過調(diào)制的兩路信號(hào)通過差分轉(zhuǎn)單端放大器相加,驅(qū)動(dòng)50 Ω負(fù)載。該振信號(hào)的產(chǎn)生采用的是 ADF4351,其輸出頻率范圍為35 ~4400 MHz。
5)濾波電路。濾波網(wǎng)絡(luò)采用低通濾波器,將濾波器的截止頻率分成 80 MHz,120 MHz,180 MHz,225 MHz,400 MHz,630 MHz,1200 MHz共7 個(gè)等級(jí)。
圖2為DVB-C系統(tǒng)編碼器的FPGA過程圖。
圖2 DVB-C系統(tǒng)編碼器過程
DVB-C系統(tǒng)編碼器的過程分為4個(gè)部分:
1)同步反轉(zhuǎn)數(shù)據(jù)擾碼。在DVB-C標(biāo)準(zhǔn)中,每188個(gè)字節(jié)組成1個(gè)MPEG-2數(shù)據(jù)幀,每個(gè)MPEG-2的第1個(gè)字節(jié)(47 H)為同步字節(jié)。每8個(gè)MPEG-2數(shù)據(jù)幀組成1個(gè)傳輸包,并且每1個(gè)傳輸包的第1個(gè)字節(jié)要取反輸出[3]。然后進(jìn)行擾碼處理,避免出現(xiàn)長(zhǎng)串的0或1。
2)RS編碼。在每1幀的數(shù)據(jù)輸入之后,要進(jìn)行RS編碼,編碼的目的是為了糾正突發(fā)錯(cuò)誤。編碼過后會(huì)產(chǎn)生16個(gè)校驗(yàn)位,每1幀的字節(jié)長(zhǎng)度變成204。
3)卷積交織。卷積交織加入之后可以進(jìn)一步增強(qiáng)抵御突發(fā)差錯(cuò)的能力,卷積交織改變數(shù)據(jù)的傳輸順序從而提高抗突發(fā)誤碼的能力。
4)QAM調(diào)制。QAM調(diào)制分為從字節(jié)到字符的轉(zhuǎn)換、差分編碼、星座映射3個(gè)部分組成。字節(jié)到字符的轉(zhuǎn)換把字節(jié)轉(zhuǎn)化成調(diào)制需要的符號(hào)流,在轉(zhuǎn)換完成后,應(yīng)對(duì)符號(hào)的最高2位進(jìn)行差分編碼,經(jīng)過星座映射完成I/Q正交。
在信號(hào)初始化的過程中,數(shù)據(jù)要進(jìn)行同步翻轉(zhuǎn),即每1個(gè)傳輸包的第1幀同步字節(jié)應(yīng)該取反輸出,然后對(duì)數(shù)據(jù)進(jìn)行擾碼(即能量擴(kuò)散)。在DVB-C系統(tǒng)中傳輸?shù)臄?shù)據(jù)流為了保證出現(xiàn)“0”與“1”的概率相等,即各為50%,必須對(duì)輸入的數(shù)據(jù)流進(jìn)行擾碼。擾碼是通過偽隨機(jī)二進(jìn)制序列發(fā)生器來完成的。DVB-C系統(tǒng)中實(shí)現(xiàn)擾碼的偽隨機(jī)序列的生成的多項(xiàng)式為
經(jīng)過擾碼處理后,輸出的數(shù)據(jù)流出現(xiàn)“0”與“1”的概率近似相等了,而且減小了對(duì)其他通信設(shè)備的干擾,有利于載波的恢復(fù)。
2.2.1 RS編碼原理
RS碼既可以糾正隨機(jī)誤碼,也可以糾正突發(fā)誤碼,它廣泛應(yīng)用在數(shù)字電視傳輸系統(tǒng)中。RS碼是目前效率最高、應(yīng)用最廣的糾錯(cuò)編碼之一。
經(jīng)過擾碼之后的數(shù)據(jù)流要進(jìn)行RS編碼,在DVB-C系統(tǒng)中,它采用 RS(204,188,8)碼[2],每 1 個(gè)數(shù)據(jù)幀要用16個(gè)校驗(yàn)符號(hào),即188個(gè)符號(hào)產(chǎn)生16個(gè)校驗(yàn)符號(hào),編碼后總數(shù)為204 個(gè)符號(hào)。RS(204,188,8)是 RS(255,235,8)的截短碼,它是在GF(28)域上得到的[4]。GF(28)域上的生成多項(xiàng)式為
碼字生成多項(xiàng)式為
2.2.2 RS編碼的實(shí)現(xiàn)
圖3為RS編碼器的頂層模塊實(shí)現(xiàn)框圖,DataIn[7..0]和DataOut[7..0]分別為RS編碼的輸入和輸出,cklin為時(shí)鐘信號(hào),aclr為復(fù)位信號(hào)。FrameErr為監(jiān)視信號(hào)的同步。根據(jù)RS編碼原理,在送入第188個(gè)數(shù)據(jù)后就必須停止輸入,直到校驗(yàn)數(shù)據(jù)全部輸出為止。圖4為RS編碼的仿真,輸入為1~188的循環(huán)。輸出前188個(gè)字節(jié)為1 ~188,16 個(gè)校驗(yàn)位195,231,90,194,142,112,85,171,63,242,251,154,1,82,33,222。
2.3.1 卷積交織的原理
交織主要是把連續(xù)出現(xiàn)的突發(fā)誤碼散成便于糾正的隨機(jī)誤碼,為正確譯碼創(chuàng)造條件。交織過程中只需要打亂碼元的順序排列,因此不會(huì)降低傳輸效率,經(jīng)過交織之后,系統(tǒng)的糾錯(cuò)能力得到進(jìn)一步提高。在DVB-C系統(tǒng)中采用卷積交織方法[5],卷積交織的基本原理如圖5所示。其中I表示交織深度。交織器由I=12個(gè)分支組成,每1個(gè)分支都有先進(jìn)先出(FIFO)(其中M=17)移位寄存器。經(jīng)過RS編碼的數(shù)據(jù)按照順序分別進(jìn)入I條分支延遲器,每1路分支延遲各不相同。第1路無延遲,接下來的每1路分支以延遲M=17個(gè)周期遞增,直到第12路的分支延遲為17×11。
圖5 卷積交織與解交織
2.3.2 卷積交織的實(shí)現(xiàn)
為了實(shí)現(xiàn)延遲,最簡(jiǎn)單的方法就是給每條延遲通道分配一定長(zhǎng)度的FIFO移位寄存器,但是這種方法需要的FIFO移位寄存器為1122 個(gè)。該設(shè)計(jì)采用雙端口RAM代替FIFO移位寄存器,采用RAM整塊循環(huán)移位法,從而節(jié)省大量的存儲(chǔ)單元,且代價(jià)小,是理想的方法[6]。圖6為卷積交織的設(shè)計(jì)流程圖,其中Ci為第I道的計(jì)數(shù)值,F(xiàn)i為通道的首地址,Li為通道的尾地址。RAM的讀寫規(guī)律為:
圖6 卷積交織的設(shè)計(jì)流程圖
第I通道讀地址為Ci+Fi。
相對(duì)應(yīng)的寫地址為L(zhǎng)i,當(dāng)Ci不為0時(shí),Ci+Fi-1;當(dāng)Ci為0 時(shí),為 Li。
圖7為卷積交織器的頂層模塊圖,其中clkin為系統(tǒng)時(shí)鐘信號(hào),aclr為復(fù)位信號(hào),DataIn[7..0]是數(shù)據(jù)輸入端,DataOut[7..0]是數(shù)據(jù)輸出端,RrAddr[10..0]為雙口RAM的數(shù)據(jù)讀地址,WrAddr[10..0]為雙口RAM的數(shù)據(jù)寫地址。圖8為卷積交織的仿真,輸入為0~255的循環(huán)。這是第2幀的輸出,第2幀的第1個(gè)字節(jié)輸出為204,第2個(gè)字節(jié)為前1幀的第2個(gè)字節(jié),即1。
DVB-C系統(tǒng)采用了多電平正交幅度調(diào)制技術(shù)(MQAM),可以在2m-QAM(m=4,5,6,7,8)中選擇。為了調(diào)制的方便,在2m-QAM調(diào)制之前,要進(jìn)行字節(jié)到符號(hào)的映射。映射的符號(hào)高位取字節(jié)的高位,這個(gè)字節(jié)剩下的位和下個(gè)字節(jié)的高位組成下個(gè)符號(hào)。圖9是64-QAM的映射過程。
圖9 64-QAM時(shí)字節(jié)到m比特字符的轉(zhuǎn)換
經(jīng)過字節(jié)到符號(hào)的轉(zhuǎn)化后,需要對(duì)符號(hào)進(jìn)行映射,同時(shí)為了獲得π/2旋轉(zhuǎn)不變QAM星座圖,需要對(duì)每個(gè)m比特符號(hào)的最高位Ak與次高位Bk進(jìn)行差分編碼[7],公式為
圖10是QAM調(diào)制的過程,QAM調(diào)制采用雷格碼在星座圖上的差分編碼映射,這樣能夠消除相位模糊的問題。
圖10 QAM調(diào)制過程
采用Altera公司的EP3C55F484C6芯片設(shè)計(jì)了DVB-C系統(tǒng)的編碼器,此芯片有55856 個(gè)邏輯單元,整個(gè)編碼器用了1391 個(gè)邏輯單元,占用率不到1%。通過實(shí)現(xiàn)了DVB-C系統(tǒng)編碼器的設(shè)計(jì),所有模塊都在Quartus II 10.0中通過了驗(yàn)證,且用modelsim進(jìn)行了仿真,并給出了整個(gè)編碼器的仿真結(jié)果,仿真如圖11所示。
圖11 仿真結(jié)果(截圖)
[1]MAX II Device handbook chapter 8:using MAXII Devices in multi-voltage systems[EB/OL].[2011-09-10].http://www.altera.com/literature/hb/max2/max2_mii51009.pdf.
[2]AD9777:16-Bit,160 MSPS 2x/4x/8x Interpolating Dual TxDAC+D/A Converter[S].2006.
[3]GB20600—2006,F(xiàn)raming structure,channel coding and modulation for digital television terrestrial broadcasting system[S].2006.
[4]梁煒新,王群生.基于FPGA的通用RS編解碼器的VHDL設(shè)計(jì)方法[J]. 電視技術(shù),2004,28(3):16-20.
[5]梁小萍,肖嵩.卷積交織器和解交織器的VHDL設(shè)計(jì)和FPGA實(shí)現(xiàn)[J]. 制造與設(shè)計(jì),2004,27(20):102-103.
[6]HANNA S A.Convolutional interleaving for digital radio communications[C]//Proc.ICUPC 1993.[S.l.]:IEEE Press,1993:443-447.
[7]KOUKOURLIS C S,HOULIS P H,SAHALOS J N.A general purpose differential digital modulator implementation incorporating a direct digital synthesis method.member[J].IEEE Trans.Broadcasting,1993,39(4):383-389.