FPGA在衛(wèi)星數(shù)字電視碼流轉(zhuǎn)發(fā)器設(shè)計(jì)中的應(yīng)用
由于數(shù)字電視能提供更清晰的圖像、更逼真的聲音、更大的屏幕,以及數(shù)字化傳輸方式所特有的高效數(shù)據(jù)傳輸率,可以在有限的傳輸頻帶內(nèi)傳送更多的電視節(jié)目,正成為數(shù)字化視聽(tīng)技術(shù)發(fā)展的一個(gè)新方向。作為數(shù)字電視前端設(shè)備中的衛(wèi)星數(shù)字電視碼流轉(zhuǎn)發(fā)器,簡(jiǎn)稱為碼流機(jī),其主要功能就是接收頻率為950~2 150 MHz的國(guó)內(nèi)外數(shù)字衛(wèi)星節(jié)目信號(hào)進(jìn)行QPSK解調(diào),并轉(zhuǎn)換成ASI格式的MPEG-2傳輸流,輸出給TS流復(fù)用器、QAM調(diào)制器等前端設(shè)備處理后發(fā)射到數(shù)字電視終端用戶,即相當(dāng)于有線電視臺(tái)轉(zhuǎn)播節(jié)目的信號(hào)源;同時(shí)他還輸出模擬視頻和音頻信號(hào),供管理人員監(jiān)控使用。本文主要討論如何把調(diào)諧器輸出的TS流轉(zhuǎn)換為ASI格式的MPEG-2傳輸流。
??? 衛(wèi)星數(shù)字電視碼流轉(zhuǎn)發(fā)器主要由調(diào)諧器,FPGA,ASI輸出,SPI輸出以及音視頻解碼輸出部分構(gòu)成,其中調(diào)諧器部分負(fù)責(zé)接收來(lái)自衛(wèi)星的節(jié)目信號(hào);音視頻解碼輸出是供管理人員監(jiān)控使用;FPGA主要負(fù)責(zé)ASI的數(shù)據(jù)鏈路層的具體實(shí)現(xiàn)、SPI輸出以及TS流的轉(zhuǎn)接到音視頻解碼芯片上;控制部分主要負(fù)責(zé)碼流路由選擇和音視頻解碼部分的控制。其內(nèi)部結(jié)構(gòu)如圖1所示。
????
??? 由于SPI接口采用的是低電壓差分信號(hào),其傳輸距離短、抗干擾性差,因此當(dāng)今數(shù)字電視前端設(shè)備的輸入輸出接口一般都要求配有ASI接口。DVB-ASI是一種傳輸速率恒定,允許具有不同數(shù)據(jù)速率的串行編碼傳輸系統(tǒng),我國(guó)的ASI接口沒(méi)有采用ISO/IEC規(guī)定的265.625 Mb/s傳輸速率,而是采用了270.000 Mb/s的傳輸速率。DVB-ASI接口協(xié)議是基于MPEG-2傳輸包的分層結(jié)構(gòu),共分3層[1],如圖2所示。
????
??? 第0層:物理層,傳輸介質(zhì)可以是電纜或光纖;
??? 第1層:數(shù)據(jù)鏈路層,主要定義了8 B/10 B編碼,同步
??? 字節(jié)插入以及串并轉(zhuǎn)換;
??? 第2層:傳輸層,采用MPEG-2的傳輸包,有兩種傳輸數(shù)據(jù)格式:一種是每個(gè)TS包中的188 B是連續(xù)的,同步字插在兩個(gè)包間,稱為突發(fā)模式(burst);另外一種是同步字隨機(jī)均勻地插在TS數(shù)據(jù)之間,稱為非突發(fā)模式,一般設(shè)備只支持非突發(fā)模式的傳輸。
??? 下面主要討論數(shù)據(jù)鏈路層的。FPGA的具體實(shí)現(xiàn)。
???? 3 8 B/10 B編碼的理論基礎(chǔ)
??? DVB-ASI的8 B/10 B編碼[2,3]主要包括數(shù)據(jù)編碼,插入特殊字符和誤差控制。通過(guò)8 B/10 B映射保證發(fā)射信號(hào)正負(fù)均衡,即‘O i和‘1 i為1∶1的直流信號(hào),并且不會(huì)有連續(xù)的‘0 i或連續(xù)的‘1 i。每8 b分成3 b和5 b兩組,分別映射成4 b和6 b兩部分,合起來(lái)就是10 b。其中每部分按照‘0 i和‘1 i的數(shù)量關(guān)系有惟一的奇偶特性,稱之為RD(Running Disparity),當(dāng)‘1 i的個(gè)數(shù)大于‘0 i的個(gè)數(shù)時(shí),RD為正,反之為負(fù)。個(gè)數(shù)相等時(shí),RD保持不變[4]。具體的編碼規(guī)則見(jiàn)表1。
????
??? 每個(gè)編碼字符可表示為Dx.y或Kx.y,D表示是數(shù)據(jù)信號(hào),K表示是字符信號(hào)。
????
??? 其中x,y為十進(jìn)制數(shù),編碼中依次對(duì)一個(gè)信息字符的x和y部分進(jìn)行編碼,其編碼的結(jié)果取決于當(dāng)前x或y的值和前一次編碼結(jié)果的RD。若前一次RD為正,則后一次編碼采用RD為負(fù)的碼字編碼,反之亦然。這樣編碼的結(jié)果保證傳輸信號(hào)的電平統(tǒng)計(jì)上的直流特性。
??? 在這種編碼控制下,根據(jù)RD的變化一方面可以保證比特流的直流特性且不會(huì)存在多個(gè)的連續(xù)‘O i或連續(xù)‘1 i;另一方面可以進(jìn)行自動(dòng)檢測(cè),實(shí)現(xiàn)誤差控制。ASI傳輸系統(tǒng)中的誤比特率小于10-13。系統(tǒng)中插入的特殊符號(hào)實(shí)現(xiàn)控制功能,包括同步信號(hào)K28.5,在接收端的字節(jié)同步正是依靠檢測(cè)到連續(xù)兩個(gè)K28.5的同步信息且滿足奇偶校驗(yàn),在同步信號(hào)后的比特被依次組成字節(jié),完成字節(jié)同步。
??? 4 FPGA部分的詳細(xì)設(shè)計(jì)
??? 在FPGA的設(shè)計(jì)中,我們選用Altera的EP1C3T144C8。按照自頂向下的設(shè)計(jì)思路,我們把FPGA的ASI部分詳細(xì)設(shè)計(jì)化分為5個(gè)子模塊,如圖3所示。
????
??? 4.1 輸入FIF0的設(shè)計(jì)
??? 由于從調(diào)諧器輸出的TS流與實(shí)際FPGA處理的TS流速度并不是同步的,因此在FPGA內(nèi)部建立一個(gè)FIFO對(duì)輸入的TS流進(jìn)行數(shù)據(jù)緩沖處理是必需的,但FIFO的深度是一個(gè)不容忽視的問(wèn)題,FIFO的參考設(shè)計(jì)深度為一幀TS流長(zhǎng)度的2倍,由于一個(gè)TS包的長(zhǎng)度可能是188 B,也可能是204 B,同時(shí),由于8 B/10 B模塊讀FIFO的速度是恒定的27 MHz,大于TS流的數(shù)據(jù)速率,因此FIFO是永遠(yuǎn)都不會(huì)上溢的。綜上所述,FIFO的深度選用512 B是比較合適的。
??? 4.2 8 B/10 B模塊設(shè)計(jì)
??? 在該部分設(shè)計(jì)的過(guò)程中,參照上述的8 B/10 B理論基礎(chǔ)[4],我們沒(méi)有選用CYPRESS公司的CY7B923[5]HOTLinkTM專(zhuān)用芯片,也沒(méi)有選用Altera的8 B/10 B的IP Core,而是自己開(kāi)發(fā)的8 B/10 B模塊,按照自頂向下的設(shè)計(jì)思路,我們把該部分又分為6個(gè)子模塊,其對(duì)應(yīng)的Verilog接口如下:
??? 8 B/10 B頂層模塊:module top——8B10B(clk,rst,din,dout,invalidK);
??? 3 B/4 B模塊:module e3Bto4B(clk,rst,din,kin,dout,dsp4b);
??? 5 B/6 B模塊:module e5Bto6B(clk,rst,din,kin,dout,dsp6b);
??? K字符檢測(cè)模塊:module k_detector(clk,rst,din,kin,invalidK);
??? 特殊3 B字符處理模塊:module dec_spec3b4b(clk,rst,din3b,din4b,kin,rdp,rdn);
??? RD控制模塊:module RD(clk,rst,kin,din4b,din6b,dsp4b,dsp6b,out6b,out4b,rdp,rdn);
??? 4.3 同步字節(jié)插入模塊設(shè)計(jì)
??? 當(dāng)TS流的數(shù)據(jù)速度始終小于8 B/10 B編碼模塊讀取數(shù)據(jù)的時(shí)候,FIFO就有可能下溢,當(dāng)FIFO為空時(shí),并/串轉(zhuǎn)換模塊的輸入數(shù)據(jù)為K28.5同步字節(jié)(8 B/10 B編碼后為:0011111010或1100000101)[6],以達(dá)到ASI的固定的270.000 Mb/s的傳輸速率。同步字節(jié)的插入方法有兩種:
??? (1) 由TS流中的數(shù)據(jù)有效信號(hào)來(lái)確定是否向FIFO中插入K28.5同步字節(jié);
??? (2) 由FIFO的EMPTY信號(hào)和來(lái)確定并串轉(zhuǎn)換模塊的的輸入數(shù)據(jù)為0011111010或1100000101,即不通過(guò)8 B/10 B編碼模塊。在本設(shè)計(jì)中,我們選用了方法(1)插入K28.5同步字節(jié)。
??? 4.4 并/串轉(zhuǎn)換模塊設(shè)計(jì)
??? 該模塊對(duì)10 B的并行數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換,在實(shí)際的設(shè)計(jì)中,采用1個(gè)移位寄存器和1個(gè)計(jì)數(shù)器即可完成并/串轉(zhuǎn)換操作。
??? 4.5 PLL模塊設(shè)計(jì)
???? 由于ASI的標(biāo)準(zhǔn)輸出速率是270.000 Mb/s,因此為整個(gè)并/串轉(zhuǎn)換的最小時(shí)鐘就是270 MHz,而系統(tǒng)FPGA的外部時(shí)鐘選用的是27 MHz的有源晶振,所以可以采用EPlC內(nèi)部自帶的鎖相環(huán)來(lái)提供270 MHz的內(nèi)部時(shí)鐘,實(shí)際的操作方法就是例化一個(gè)PLL模塊,把倍頻系數(shù)設(shè)置為10即可。
??? 5 系統(tǒng)測(cè)試與仿真結(jié)果
??? 對(duì)數(shù)字衛(wèi)星碼流轉(zhuǎn)發(fā)器ASI輸出的測(cè)試可以采用標(biāo)準(zhǔn)MPEG-2碼流分析儀AD953,也可以直接選用DVB解碼器,以觀看能否正確收視節(jié)目來(lái)確定ASI流是否正常。FPGA部分設(shè)計(jì)的軟件平臺(tái)選用Quartuns和仿真工具M(jìn)odelSim,部分仿真結(jié)果如圖4所示。?
????
評(píng)論
查看更多