新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的TS流的UDP封裝實(shí)現(xiàn) 

基于FPGA的TS流的UDP封裝實(shí)現(xiàn) 

作者:邵亞?wèn)| 陳為剛 時(shí)間:2016-07-28 來(lái)源:電子產(chǎn)品世界 收藏
編者按:為實(shí)現(xiàn)數(shù)字廣播接收機(jī)輸出的傳輸(TS)流方便地接入嵌入式平臺(tái),實(shí)現(xiàn)綜合業(yè)務(wù)接收,本文基于現(xiàn)場(chǎng)可編程門陣列(FPGA),實(shí)現(xiàn)了將集成DVB-T(Digital Video Broadcasting-Terrestrial)高頻頭輸出的TS流轉(zhuǎn)化為UDP協(xié)議的IP流,進(jìn)一步通過(guò)以太網(wǎng)接口進(jìn)入嵌入式平臺(tái),支持綜合業(yè)務(wù)接收。該接口轉(zhuǎn)化模塊借助FPGA,將緩存的TS流進(jìn)行有效封裝,設(shè)置以太網(wǎng)接口,輸出UDP格式的IP流。實(shí)測(cè)表明,該接口轉(zhuǎn)換模塊可實(shí)現(xiàn)TS流到IP流的轉(zhuǎn)換,支持嵌入式平臺(tái)視頻播放與綜合業(yè)務(wù)接收。

摘要:為實(shí)現(xiàn)數(shù)字廣播接收機(jī)輸出的傳輸(TS)流方便地接入嵌入式平臺(tái),實(shí)現(xiàn)綜合業(yè)務(wù)接收,本文基于現(xiàn)場(chǎng)可編程門陣列(),實(shí)現(xiàn)了將集成(Digital Video Broadcasting-Terrestrial)高頻頭輸出的TS流轉(zhuǎn)化為UDP協(xié)議的IP流,進(jìn)一步通過(guò)以太網(wǎng)接口進(jìn)入嵌入式平臺(tái),支持綜合業(yè)務(wù)接收。該接口轉(zhuǎn)化模塊借助,將緩存的TS流進(jìn)行有效封裝,設(shè)置以太網(wǎng)接口,輸出UDP格式的IP流。實(shí)測(cè)表明,該接口轉(zhuǎn)換模塊可實(shí)現(xiàn)TS流到IP流的轉(zhuǎn)換,支持嵌入式平臺(tái)視頻播放與綜合業(yè)務(wù)接收。

本文引用地址:http://2s4d.com/article/201607/294698.htm

引言

  在互聯(lián)網(wǎng)高速發(fā)展以及三網(wǎng)融合的趨勢(shì)逐步推進(jìn)的背景下,地面數(shù)字電視廣播與互聯(lián)網(wǎng)的融合得到了研究人員越來(lái)越多的重視。地面數(shù)字電視廣播[1]音視頻數(shù)據(jù)的傳輸流是編碼格式為MPEG-2(Moving Picture Experts Group-2)的TS(Transport Stream)流。因此,傳統(tǒng)廣播接收機(jī)多輸出TS流。

  為支持嵌入式平臺(tái)實(shí)現(xiàn)TS流傳輸?shù)木C合業(yè)務(wù)接收,本文在前期實(shí)現(xiàn)的數(shù)字廣播接收機(jī)的基礎(chǔ)上[2],采用作為轉(zhuǎn)接,實(shí)現(xiàn)了TS流到IP流的封裝,從而可以方便地將TS流接入嵌入式平臺(tái),實(shí)現(xiàn)利用嵌入式平臺(tái)的基于TS流的綜合業(yè)務(wù)接收。

1 硬件系統(tǒng)結(jié)構(gòu)

  硬件系統(tǒng)主要包括電源部分、集成高頻頭[3]及其配置電路部分、FPGA部分和以太網(wǎng)接口輸出部分。其工作原理如下:系統(tǒng)啟動(dòng)之后,由配置電路中單片機(jī)首先對(duì)集成高頻頭進(jìn)行配置,然后FPGA等待接收由集成高頻頭輸出的數(shù)據(jù),接收的數(shù)據(jù)經(jīng)過(guò)格式封裝后,經(jīng)以太網(wǎng)接口模塊以UDP格式[4]的IP流輸出。輸出的負(fù)載數(shù)據(jù)為MPEG-2標(biāo)準(zhǔn)的TS包,可以在任何支持該標(biāo)準(zhǔn)解碼的終端進(jìn)行實(shí)時(shí)播放。

  系統(tǒng)的硬件結(jié)構(gòu)如圖1所示,系統(tǒng)實(shí)現(xiàn)的是以FPGA為控制核心的接收、處理和轉(zhuǎn)發(fā)系統(tǒng),下面介紹每個(gè)部分的具體實(shí)現(xiàn)。

  (1)電源部分

  電源部分采用TI公司的LP3906電源管理芯片,該電源芯片被廣泛應(yīng)用于低功耗FPGA、嵌入式微處理器、DSP等系統(tǒng)的電源管理。其性能優(yōu)秀,最高輸出效率為96%,最大輸出電流為1.5A。該芯片的輸入電壓為5V直流,由外部電源適配器提供。

  (2)集成高頻頭及其配置電路部分

  本部分電路由集成高頻頭以及其配置電路組成。集成高頻頭采用夏普公司的VA4M1EE6159。該器件功能是將天線接收到的標(biāo)準(zhǔn)信號(hào)變頻為中頻信號(hào)[5],通過(guò)解調(diào)、基帶處理和打包,最終輸出TS(Transport Stream)流[6]。TS流輸出有兩種常用接口,分別是異步串行接口(ASI,Asynchronous Serial Interface)和同步并行接口(SPI,Synchronous Parallel Interface),VA4M1EE6159采用同步并行接口,該接口共有11位信號(hào)線,包括3位控制信號(hào)線和8位數(shù)據(jù)信號(hào)線。3位控制信號(hào)分別為時(shí)鐘信號(hào)MCL、同步信號(hào)SYN和數(shù)據(jù)有效信號(hào)VALID。其中,集成高頻頭的時(shí)鐘信號(hào)MCL輸出為9MHz。SPI接口使用同步控制信號(hào),所以傳輸速率由實(shí)際情況決定。

  配置電路采用Silicon Lab公司的C8051F120單片機(jī)作為集成高頻頭的配置電路控制器。該款單片機(jī)兼容8051單片機(jī)的指令集,速度是普通8051單片機(jī)的數(shù)十倍,外部無(wú)源晶振為25MHz,最高速度可達(dá)100MIPS(百萬(wàn)指令集每秒),支持JTAG(Joint Test Action Group)調(diào)試接口。該單片機(jī)具有較高處理速度,對(duì)于實(shí)現(xiàn)嚴(yán)格時(shí)序有很大的優(yōu)勢(shì)。

  (3)FPGA部分

  FPGA部分由FPGA電路及其配置電路組成。FPGA采用的是Xilinx公司的Spartan-3系列XC3S700A芯片。該芯片最大用戶I/O數(shù)量為372,具有分布式RAM為92kb、塊RAM為360kb,擁有8個(gè)數(shù)字時(shí)鐘管理單元(DCM,Digital Clock Manager),slice數(shù)量為5888。配置模式為JTAG模式和主串(Active Serial)模式。采用的存儲(chǔ)芯片是XCF04S,存儲(chǔ)空間為4M,外部為50MHz無(wú)源晶振。

  FPGA是系統(tǒng)的控制和計(jì)算核心[7],負(fù)責(zé)接收集成高頻頭的TS流數(shù)據(jù),將接收的數(shù)據(jù)緩存、計(jì)算、打包,并驅(qū)動(dòng)DM9000AEP芯片,將處理完成的數(shù)據(jù)以IP數(shù)據(jù)報(bào)的形式輸出。FPGA芯片使用11個(gè)通用I/O與集成高頻頭相連,模擬SPI接口時(shí)序接收數(shù)據(jù)。作為DM9000AEP的驅(qū)動(dòng)源,F(xiàn)PGA的物理管腳與DM9000AEP連接,用于按其控制時(shí)序驅(qū)動(dòng)芯片工作。

  (4)以太網(wǎng)輸出部分

  以太網(wǎng)輸出部分使用的是10M/100M自適應(yīng)的MAC層接口芯片DM9000AEP。該芯片是支持物理層自協(xié)商,支持IEEE802.3u全雙工流量控制的快速以太網(wǎng)接口控制器。輸出物理接口與RJ45相連。該以太網(wǎng)控制器使用的是25MHz的無(wú)源晶振,外部電路簡(jiǎn)潔。

  DM9000AEP擁有4K雙字大小的SRAM塊,可以作為以太網(wǎng)幀結(jié)構(gòu)的緩存。由于以太網(wǎng)幀結(jié)構(gòu)最大為1500字節(jié),所以可以緩存多個(gè)相同的幀結(jié)構(gòu)。DM9000AEP有兩個(gè)方面的功能。首先是完成與后級(jí)網(wǎng)絡(luò)設(shè)備的物理層協(xié)商,建立鏈路;其次是接收FPGA的指令,執(zhí)行指令、發(fā)送已經(jīng)存在于緩存中的以太網(wǎng)幀以及完成相關(guān)鏈路層功能。

  系統(tǒng)硬件電路由LP3906模塊提供統(tǒng)一的電源管理。集成高頻頭在配置電路完成配置之后,與天線相連,從天線接收信號(hào)并將信號(hào)解調(diào)處理,以SPI接口輸出TS流,是整個(gè)系統(tǒng)的數(shù)據(jù)源。FPGA是系統(tǒng)中樞,它模擬SPI時(shí)序接收TS流數(shù)據(jù)并打包為UDP格式,控制DM9000AEP以IP流輸出。DM9000AEP完成與接收者的物理鏈路建立及輔助的鏈路層功能。

2 基于FPGA的封裝轉(zhuǎn)發(fā)實(shí)現(xiàn)

  在系統(tǒng)實(shí)現(xiàn)過(guò)程中,TS流的接收、處理和轉(zhuǎn)發(fā)部分都在FPGA內(nèi)部實(shí)現(xiàn)。圖2為FPGA實(shí)現(xiàn)的封裝轉(zhuǎn)發(fā)功能的邏輯結(jié)構(gòu)圖。主體由數(shù)據(jù)接收模塊、控制計(jì)算模塊和DM9000AEP驅(qū)動(dòng)模塊三個(gè)模塊組成。數(shù)據(jù)接收模塊模擬SPI接口時(shí)序接收集成高頻頭的輸出數(shù)據(jù);控制計(jì)算模塊負(fù)責(zé)將接收的數(shù)據(jù)有序地存入RAM,并將RAM中的數(shù)據(jù)打包為IP格式;DM9000AEP驅(qū)動(dòng)模塊將IP格式的數(shù)據(jù)通過(guò)網(wǎng)口輸出。

2.1 數(shù)據(jù)接收模塊

  數(shù)據(jù)接收模塊的功能是模擬SPI接口時(shí)序接收由集成高頻頭輸出的TS流格式的數(shù)據(jù)。集成高頻頭數(shù)據(jù)輸出寬度為8bit,接口時(shí)鐘頻率為9MHz。當(dāng)有數(shù)據(jù)輸出時(shí),有效信號(hào)變?yōu)楦唠娖健]敵龅腡S流數(shù)據(jù)包含有4字節(jié)的首部和184字節(jié)的數(shù)據(jù),總計(jì)大小為188字節(jié),數(shù)據(jù)格式如圖3所示。

  TS流數(shù)據(jù)輸出為突發(fā)模式,即在一個(gè)周期內(nèi)只有小部分時(shí)間有數(shù)據(jù)輸出,大部分時(shí)間沒(méi)有數(shù)據(jù)輸出。突發(fā)瞬時(shí)速率最高可達(dá)到72Mbps,這里的72Mbps為裸數(shù)據(jù),增加數(shù)據(jù)頭部等,最高瞬時(shí)速率將會(huì)增加到80~85Mbps之間。DM9000AEP的理論最高速率為100Mbps。由于在DM9000AEP的驅(qū)動(dòng)中有額外開銷,數(shù)據(jù)很難做到最大帶寬。所以使用FIFO作為緩沖來(lái)匹配前后兩者的速率差,既可以防止數(shù)據(jù)丟失,也方便進(jìn)行數(shù)據(jù)處理。當(dāng)FIFO中的TS流數(shù)據(jù)包的數(shù)量超過(guò)閾值時(shí),則讀有效信號(hào)為高電平,數(shù)據(jù)線輸出數(shù)據(jù)。本部分電路實(shí)現(xiàn)的結(jié)構(gòu)圖如圖4所示。

2.2 控制計(jì)算模塊

  控制計(jì)算模塊由控制部分、計(jì)算部分和雙端RAM部分組成。本部分電路實(shí)現(xiàn)的結(jié)構(gòu)圖如圖5所示。

  其中,雙端RAM內(nèi)存儲(chǔ)一個(gè)完整的以太網(wǎng)幀,RAM中不同部分的功能如圖6。源MAC地址設(shè)置為本機(jī)地址,目的MAC地址為廣播地址,類型為IP數(shù)據(jù)報(bào)。IP數(shù)據(jù)報(bào)中版本、首部長(zhǎng)度、服務(wù)類型、標(biāo)志位、片偏移、TTL、協(xié)議、源IP以及目的IP為常量。其中,源IP設(shè)置為本機(jī)IP,目的IP為廣播地址,TTL為64。以太網(wǎng)幀的數(shù)據(jù)大小范圍是46~1500字節(jié)。為了最大限度地提高傳輸效率,取7個(gè)TS包作為一個(gè)以太網(wǎng)幀的數(shù)據(jù)部分,即1316字節(jié)。

  以太網(wǎng)幀中數(shù)據(jù)段、標(biāo)識(shí)字段和校驗(yàn)字段為變量。數(shù)據(jù)段由傳輸?shù)腡S流數(shù)據(jù)決定;標(biāo)識(shí)字段為依次遞增;校驗(yàn)字段則是將字段本身置為零之后,對(duì)IP數(shù)據(jù)報(bào)中每16比特進(jìn)行二進(jìn)制反碼求和,將結(jié)果存入校驗(yàn)字段。這部分運(yùn)算在計(jì)算部分實(shí)現(xiàn)。

  控制部分時(shí)刻監(jiān)視讀有效信號(hào)的狀態(tài)變化。當(dāng)發(fā)現(xiàn)信號(hào)狀態(tài)變化為有效,則接收前級(jí)模塊的輸出數(shù)據(jù),并且按地址存入RAM。與此同時(shí),在數(shù)據(jù)輸入路徑上的計(jì)算模塊對(duì)數(shù)據(jù)進(jìn)行反碼求和運(yùn)算,得到校驗(yàn)字段,并且進(jìn)行遞增運(yùn)算,得到標(biāo)識(shí)字段。計(jì)算完成后,兩個(gè)字段分別按地址存入RAM中。此時(shí),RAM中是一個(gè)完整的以太網(wǎng)幀結(jié)構(gòu)??刂撇糠謱?huì)給出指示信號(hào),通知DM9000AEP驅(qū)動(dòng)模塊可以讀取UDP幀數(shù)據(jù)。

2.3 DM9000AEP驅(qū)動(dòng)模塊

  DM9000AEP驅(qū)動(dòng)模塊通過(guò)狀態(tài)機(jī)實(shí)現(xiàn),負(fù)責(zé)對(duì)DM9000AEP芯片進(jìn)行初始化及功能驅(qū)動(dòng)。

  DM9000AEP的初始化過(guò)程首先進(jìn)行物理層(PHY)上電。物理層上電第一步是對(duì)DM9000AEP芯片內(nèi)部的GPR寄存器清零,然后最低位賦值為1。在對(duì)物理層上電之后,延時(shí)應(yīng)該超過(guò)2ms,最佳為5ms。第二步是將NCR寄存器進(jìn)行兩次軟件復(fù)位,兩次軟件復(fù)位的目的是確保軟件復(fù)位成功。每次軟件復(fù)位延時(shí)30μs,正常的時(shí)間間隔是20μs左右。然后依次按著時(shí)序?qū)SR、ISR、TCR、BPTR、FCTR、SMCR的寄存器和物理地址進(jìn)行設(shè)置。為了確保數(shù)據(jù)的通用性,物理地址設(shè)為廣播地址。寄存器設(shè)置成功表示DM9000AEP初始化完成。

  初始化完成后的DM9000AEP在檢測(cè)到控制計(jì)算模塊的指示信號(hào)變化后,在雙端RAM的右端進(jìn)行讀取,將RAM中的一個(gè)以太網(wǎng)幀數(shù)據(jù)寫入DM9000AEP的buffer中,并查詢標(biāo)志位,直到標(biāo)志位變化表示發(fā)送完成。由于DM9000AEP的發(fā)送速度大于集成高頻頭的數(shù)據(jù)平均輸出速率,所以不會(huì)出現(xiàn)雙端RAM中數(shù)據(jù)被重復(fù)寫的情況。

  FPGA部分的三個(gè)模塊采用的是流式的處理過(guò)程。數(shù)據(jù)接收模塊模擬接口時(shí)序接收集成高頻頭的輸出數(shù)據(jù),是整個(gè)FPGA邏輯的數(shù)據(jù)源??刂朴?jì)算部分負(fù)責(zé)對(duì)IP數(shù)據(jù)報(bào)進(jìn)行計(jì)算打包,并且將完整的以太網(wǎng)幀存入雙端RAM,完成之后通知驅(qū)動(dòng)部分。DM9000AEP的驅(qū)動(dòng)部分負(fù)責(zé)按時(shí)序初始化DM9000AEP,并在得到控制計(jì)算模塊的通知后,發(fā)送雙端RAM中的以太網(wǎng)幀。

3 系統(tǒng)測(cè)試

  為驗(yàn)證系統(tǒng)接收數(shù)據(jù)的正確性及系統(tǒng)運(yùn)行的實(shí)際效果,對(duì)系統(tǒng)進(jìn)行實(shí)測(cè)。

  發(fā)送端采用PC機(jī)控制調(diào)制卡DTA-115產(chǎn)生符合DVB-T標(biāo)準(zhǔn)[8-9]的調(diào)制信號(hào)。其中,DTA-115為DekTec公司生產(chǎn)的多制式數(shù)字電視調(diào)制卡。發(fā)射端采用QPSK調(diào)制,中心頻率為226.5MHz,帶寬為7MHz,2K模式,7/8碼率,發(fā)射功率-3dBm。

  數(shù)字廣播接收系統(tǒng)的數(shù)據(jù)輸出連接至具有MPEG-2解碼播放功能的嵌入式平臺(tái)。單片機(jī)設(shè)置高頻頭的對(duì)應(yīng)接收參數(shù),F(xiàn)PGA實(shí)現(xiàn)數(shù)據(jù)處理轉(zhuǎn)發(fā),嵌入式平臺(tái)實(shí)現(xiàn)TS流的解碼播放。最后嵌入式平臺(tái)上測(cè)試結(jié)果如圖7所示。視頻流數(shù)據(jù)可以進(jìn)行流暢播放。

4 結(jié)論

  本文利用FPGA實(shí)現(xiàn)了集成高頻頭輸出的TS流轉(zhuǎn)換為嵌入式平臺(tái)可以讀取的IP流。系統(tǒng)通過(guò)集成高頻頭接收DVB-T標(biāo)準(zhǔn)[10]廣播信號(hào),由高頻頭完成廣播信號(hào)的接收,得到TS流數(shù)據(jù)。利用FPGA實(shí)現(xiàn)了高頻頭輸出的突發(fā)數(shù)據(jù)的平滑封裝至基于UDP協(xié)議的IP數(shù)據(jù)流。經(jīng)過(guò)測(cè)試[11],基于FPGA的封裝模塊輸出的IP流可以在嵌入式平臺(tái)播放。

參考文獻(xiàn):

  [1]楊知行,王軍,王昭誠(chéng),等.數(shù)字電視傳輸技術(shù)[M].北京:電子工業(yè)出版社. 2011.

  [2]戴軍忠,陳為剛,趙玉冰,等. DTMB數(shù)字電視接收機(jī)電路設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)科技論文在線,2014-12-12.

  [3]Nguyen TT, Dang KL, Nguyen HV, Nguyen PH. A Real-Time FPGA Implementation of Spectrum Sensing Applying for DVB-T Primary Signal [J]. Proceedings International Conference on Advanced Technologies for Communications, 2013:164-169.

  [4]史蒂文斯(W.Richard Stevens).TCP/IP詳解卷1:協(xié)議 [M].北京:機(jī)械工業(yè)出版社.2000.4.

  [5]Gholami M, Rahimpour H, Ardeshir G, Miar-Naimi H. A new fast-lock, low-jitter, and all-digital frequency synthesizer for DVB-T receivers [J]. International Journal of Circuit Theory and Applications, 2015, 43: 566-578.

  [6]丁法珂,基于FPGA的PCM-FM遙測(cè)中頻接收機(jī)設(shè)計(jì)與實(shí)現(xiàn)[J].電子產(chǎn)品世界,2015,6:54-59.

  [7]張黎明, 高性能數(shù)字接收機(jī)FPGA設(shè)計(jì)[J].電子產(chǎn)品世界,2013,5:40-42.

  [8]Torio P, Sanchez MG. Reconciling the ETSI coverage requirements for DVB-T with the ITU-R recommendations[J].Telecommunication Systems, 2014,57:217-222.

  [9]DVB Document A122. Digital Video Broadcasting (DVB). Frame structure channel coding and modulation for a second generation digital terrestrial television broadcasting system. v1.3.1 [S]. 2011.

  [10]ETSI EN 300 744 V1.6.1 Digital Video Broadcasting (DVB). Framing structure, channel coding and modulation for digital terrestrial television [S]. 2009.

  [11]陳為剛,趙干,李思,等. 基于USRP的DVB-T接收機(jī)實(shí)現(xiàn) [J]. 電視技術(shù),2014,38(9):155-159.

本文來(lái)源于中國(guó)科技期刊《電子產(chǎn)品世界》2016年第7期第51頁(yè),歡迎您寫論文時(shí)引用,并注明出處。



關(guān)鍵詞: FPGA DVB-T TS流轉(zhuǎn)IP流 201608

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉