基於FPGA的TS over IP的設計與實現

2020-12-25 電子產品世界

編者按:隨著網際網路的發展, 數位電視信號的網絡傳輸得到了越來越多的關注,本文設計與實現了一種基於FPGA和MCU(R8051XC2)的TS over IP系統,並對傳統的TS over IP系統進行了改進。此系統通過從標準TS流接口接收TS流,將其以桌球操作的方式存放在兩個雙口RAM中,再通過一定方法封裝IP包發送至網絡,實現了TS流和網絡IP數據包的相互轉換。通過向系統推送TS流數據並使用抓包軟體對經過系統的數據進行分析統計的方法證明,得出以下結論,此系統在相同情況與有限的硬體條件下,相比傳統的使用FIFO作為

摘要:隨著網際網路的發展, 數位電視信號的網絡傳輸得到了越來越多的關注,本文設計與實現了一種基於FPGA和MCU(R8051XC2)的TS over IP系統,並對傳統的TS over IP系統進行了改進。此系統通過從標準TS流接口接收TS流,將其以桌球操作的方式存放在兩個雙口RAM中,再通過一定方法封裝IP包發送至網絡,實現了TS流和網絡IP數據包的相互轉換。通過向系統推送TS流數據並使用抓包軟體對經過系統的數據進行分析統計的方法證明,得出以下結論,此系統在相同情況與有限的硬體條件下,相比傳統的使用FIFO作為緩衝器的系統,系統運行效率有了明顯的提高。

本文引用地址:http://www.eepw.com.cn/article/279225.htm

引言

  隨著網際網路的發展,人類進入了網絡化、數位化的時代。在三網融合的政策背景下,數位電視信號的網絡傳輸得到了越來越多的關注。與此同時,先進的嵌入式技術也對數字媒體的發展起到了推動的作用。TS流是根據ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3協議而定義的一種數據流,主要用來傳輸數位電視的視頻節目、音頻節目和一些用戶信息,它是以包的方式存在,一個TS包一般為188或204位元組,其廣泛用於電視信號的傳輸中。當前的廣播電視傳輸主要是TS流在現有的有線電視網絡中進行傳輸。而本文的TS over IP技術是將TS流數據包轉換成IP數據包,並能夠在網絡中進行傳輸。使只有網絡接口的終端設備可以接收到電視信號[1]

  目前實現該技術的主要方法是通過MCU IP核在FPGA中模擬出一個控制器來控制其餘的子模塊實現[2]。本文設計的系統使用FPGA晶片和MCU晶片,兩個晶片之間通過EMIF接口進行通信,並使用兩個雙口RAM,以及DMA的方式來實現系統。

1 系統概述及流程

1.1 系統概述

  本系統實現了將從TS傳輸設備中接收到的TS流數據轉換為IP數據包,並使其能在網絡中傳輸。本系統基於FPGA實現,由一個MCU進行控制,可以通過設置初始時的IP和MAC地址將數據發送到不同的目的主機。

  目前類似的系統大都使用現成的FIFO來對TS數據進行暫時的存儲並通過現成的TCP/IP協議代碼來封裝IP包。在使用傳統的方法時,當FPGA性能不夠時會導致丟包的現象出現。而FPGA與MCU在通過FIFO進行通信交換數據與MCU的處理速度過低與數據的多次交換是導致這一現象的主要原因。所以為了提高系統的運行效率,使系統能夠在數據量非常大的情況下或者FPGA性能不是很好的情況下仍能夠正常運行,本系統採用了兩個雙口RAM通過桌球操作來完成TS數據的暫時存儲,並通過程序在RAM中寫入數據來實現IP包的封裝,封裝完成後通過DMA的方式將數據傳輸到MAC模塊中進行發送的設計,避免了FPGA與MCU進行數據交換與運行複雜的TCP/IP封裝程序的過程,從而提高系統的運行效率。

  本系統使用了FPGA+MCU進行實現,由於兩塊晶片的時鐘頻率不同,則系統涉及到了跨時鐘域通信問題以及數據的亞穩態問題,所以本系統使用了應答機制以及同步電路來避免異步時鐘域通信帶來的問題。

1.2 系統流程

  如圖1所示,系統流程由3個部分組成。首先,在程序啟動後,由MCU來對整個系統進行初始化配置,為之後系統的運行做好準備。接著MCU通知FPGA初始化完成,開始接收TS數據,並將這些數據儲存在RAM中,當接收7個TS包以後,程序會檢測是否由於傳輸數據過快出現數據溢出。完成溢出檢測後,系統會對RAM中的IP包頭信息進行更新,信息更新完成之後的IP包會以DMA的方式傳輸到MAC中並最後由MAC模塊發送到網絡之中。

2 系統模塊概述

2.1 系統總體結構

  該系統主要由TS接收模塊、IP包封裝模塊、IPCHK模塊、DMA模塊、EMIF接口等模塊組成。通過這些模塊我們實現了TS流的接收、網絡傳輸協議以及系統內各模塊通信等功能。系統結構圖如圖2所示。

  其中,TS接收模塊、MAC模塊以及接口模塊由FPGA實現。IP包封裝模塊、片選模塊、IPCHK模塊以及DMA控制模塊在MCU中實現。

2.2 TS流接收的實現

  系統中設計的TS接收模塊可以直接與TS流的編碼器相連接,其基本結構如圖3所示。

  本模塊的時鐘來自於編碼器,接收符合時序的SPI形式的TS流數據。接收模塊接收數據後將數據存儲到RAM之中。如圖3所示,本模塊使用了兩個RAM進行存儲與分裝IP包,並使用桌球操作對兩個RAM進行控制,在雙RAM桌球操作的模式下,系統可以在處理前一批數據的同時繼續接收數據,從而提高系統的運行速度,防止數據溢出[8]。同時由於本設計使用UDP協議發送TS包,每個TS數據包的長度為188位元組,而IP包的最大長度為1500位元組,RAM 0~41的空間用來存放IP包頭數據,所以TS數據從第43個地址開始存放,直到接收到7個TS包即到地址1357後切換另一個RAM。在一個RAM存滿之後,接收模塊會通過標誌位通知MCU進行接下來的工作。

2.3 網絡協議的實現

2.3.1 IP包封裝模塊

  IP包封裝模塊即網絡協議的實現模塊是在開機時運行,主要負責對MAC模塊進行初始化配置與設置初始的IP位址和MAC地址。由於為了節省FPGA與MCU數據交換以及運行TCP/IP程序的開銷,本系統將IP包的封裝是由MCU直接對RAM寫入數據來完成的,根據TCP/IP協議的規定,IP包封裝模塊將已經設置好的IP包頭數據分別寫入兩個RAM地址的0~41之中,將其作為IP包的包頭信息。完成IP包的包頭信息寫入之後,本模塊通過置位標誌位通知TS接收模塊開始工作。

2.3.2 IPCHK模塊

  IPCHK模塊實現了IP包頭的更新功能,本模塊是在MCU接到RAM滿的信號後進行調用。為了省去運行複雜的TCP/IP程序所用的時間,需要手動完成對IP包包頭更新以及校驗和的計算。首先IPCHK模塊會對IPID進行刷新,之後對IPID更新後的IP包的校驗和進行重新計算,並在計算完成之後將新的IPID檢驗和寫入RAM的12、13、18、19號地址 之中,最後通知系統準備調用DMA模塊。

2.3.3 MAC模塊

  本系統中,MAC模塊通過MCU接口模塊與MCU晶片進行通信,並由MCU進行初始化,初始化完成後對PHY晶片進行配置,將接收到的含有TS數據的IP包發送給PHY晶片,進而傳輸到網絡中。由於基於FPGA的MAC IP core已經非常成熟,這裡不再贅述。

2.4 系統各模塊間的通信

2.4.1 DMA控制模塊

  本系統中PHY晶片與FPGA的數據交換是用過DMA來實現的,DMA模塊是在IPCHK完成後進行調用。此時,DMA模塊根據FPGA返回的RAM片選控制信息,以DMA的方式將RAM中的數據傳輸到MAC中。DMA模塊使得MCU可以從數據搬用的工作中解脫出來,從而提高了程序運行的效率,防止了數據的溢出。


tcp/ip相關文章:tcp/ip是什麼


相關焦點

  • 基於CORDIC 2FSK調製器的FPGA設計
    提出一種基於流水線CORDIC算法的2FSK調製器的FPGA實現方案,可有效地節省FPGA的硬體資源,提高運算速度。最後,給出該方案的硬體測試結果,驗證了設計的正確性。0 引言 頻移鍵控(FSK)是用不同頻率的載波來傳送數位訊號,並用數字基帶信號控制載波信號的頻率。
  • 3G系統中AGC的FPGA設計實現
    agc增益控制算法在數字部分來實現,在本設計中,agc電路可以有效提高鏈路的動態範圍(+25~-105 dBm),提高ADC輸出的SNR,以使DSP能更容易地實現Dw-PTS同步。agc在系統中的位置如圖1虛線框所示:    3 agc系統的fpga實現    根據agc所實現的功能  ,在fpga中將agc模塊分為如下幾個部分來實現:  3.1 數據幹路模塊    從RSP接口來10位二進位補碼數據I1和Q1,與求指數模塊傳送來的預放大增益
  • 基於FPGA的m序列信號發生器設計
    基於FPGA與Verilog硬體描述語言設計井實現了一種數據率按步進可調、低數據誤碼率、反饋多項式為本文引用地址:http://www.eepw.com.cn/article/263588.htm    1 m序列信號發生器的組成  基於FPGA的m序列信號發生器硬體結構極其簡單,僅需兩個獨立按鍵(一個是復位按鍵與另一個控制數據率切換按鍵)、一個48 MHz的用於提供系統時鐘有源晶振、系統電源、一塊配置晶片、幾個簡單的電阻與電容即可實現。
  • 基於FPGA的DisplayPort設計與實現
    在顯示市場上,VESA 通過DisplayPort 引領著從 VGA、DVI 以及HDMI 等協議成功升級至高速串行收發器、基於包的層架構協議。與並行協議不同,串行分組協議在實現和維持連接或鏈路方面要多一層複雜性。在 VESA DisplayPort 1.1a 規範中,控制功能被劃分為 Link Policy Maker 和 Stream Policy Maker。
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    一、引言本文引用地址:http://www.eepw.com.cn/article/245960.htm本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路
  • 基於FPGA的任意分頻器設計
    儘管目前在大部分設計中還廣泛使用集成鎖相環(如Altera的PLL,Xilinx的DLL)來進行時鐘的分頻、倍頻以及相移設計,但是,對於時鐘要求不太嚴格的設計,通過自主設計進行時鐘分頻的實現方法仍然非常流行。首先這種方法可以節省鎖相環資源,再者這種方式只消耗不多的邏輯單元就可以達到對時鐘的操作目的。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 一種基於FPGA的視頻邊緣檢測系統設計
    摘要:對於視頻圖像檢測與識別的需要,提出了一種基於FPGA的視頻邊緣檢測系統設計方案,並完成系統的硬體設計。通過FPGA控制攝像頭進行視頻採集,雙埠SDRAM對圖像數據進行緩存,FPGA再對數據進行實時處理。
  • 用matlab來實現fpga功能的設計
    首先,DSP開發人員不熟悉硬體設計,尤其是FPGA。他們使用Matlab驗證算法,運用C語言或彙編語言編程,通常不會使用硬體描述語言(VHDL或Verilog)實現數字設計。其次,雖然VHDL語言也提供了許多高層次的語言抽象,但是基於並行硬體系統的VHDL程序設計與基於微處理器的串行程序設計有很大的不同。
  • 基於JTAG接口實現ARM的FPGA在線配置
    SDR終端的實現往往都是基於可重配置的硬體環境,如現場可編程邏輯陣列(Field Programmable Gate Array,FPGA)、數位訊號處理器(Digital Signal Processor,DSP),而不是專用集成電路(Application Specific Integrated Circuit,ASIC)等特定的硬體電路和晶片。
  • 基於FPGA的RISC微處理器的設計與實現
    摘要:基於FPGA和電子設計自動化技術,採用模塊化設計的方法和VHDL語言,設計一個基於FPGA的RISC微處理器。仿真結果表明,基於FPGA的RISC微處理器的時鐘頻率為23.02MHz,且功能完全達到設計要求。
  • 基於Modelsim FLI接口的FPGA仿真技術
    1、Modelsim 及 FLI接口介紹本文引用地址:http://www.eepw.com.cn/article/273718.htm  Modelsim是 Model Technology(Mentor Graphics的子公司)的 HDL 硬體描述語言仿真軟體,可以實現
  • 基於FPGA IP核的FFT實現與改進
    FFT運算複雜,需要大量的存儲器和運算單元,其硬體實現平臺多種多樣。DSP需要外置存儲器和特定接口,限制了運算速度。ASIC雖能滿足速度要求,但其硬體電路複雜、可擴展性差、且價格昂貴。FPGA具有陝速並行運算、高集成度、低功耗等特點,且具有豐富的IP核資源,方便調用,適合FFT算法的實現。
  • 基於FPGA的自然對數變換器的設計與實現
    引言  在需要硬體實現對數運算的場合[1],其精度和速度是必須考慮的問題。目前硬體實現對數變換的方法主要有查表法、泰勒公式展開法和線性近似法。查表法[2]所需要的存儲單元隨著精度的增加或輸入值範圍的增大而成指數增加;泰勒公式展開法[3]需要乘法器,面積大不易實現;線性近似法[4]的精度有限,且需要誤差校正電路,實現較難。
  • 如何基於Python實現MySQL查詢的API設計,附上完整腳本
    如果是基於Shell的方式,很容易出現一個使用瓶頸,那就是如果通過shell去查看一個表的數據,那麼輸出是沒有規範的格式的,Shell執行是最簡單最基本的調用模式,我們也可以利用資料庫服務端的特性來輸出相應的數據格式,但是基於資料庫版本的差異,有些低版本是不支持輸出一些格式的,所以使用Shell來輸出SQL查詢的結果顯然不是一個通用而且優雅的實現方式。
  • 基於FPGA的帶Cache的嵌入式CPU的設計與實現
    本文引用地址:http://www.eepw.com.cn/article/201706/349054.htm1 基於MIPS指令集的CPU流水線結構1.1 指令集的選取設計實現了指令兼容MIPS系列RISC處理器的指令集。
  • 基於FPGA的可擴展高速FFT處理器的設計與實現
    摘 要:本文提出了基於FPGA實現傅立葉變換點數可靈活擴展的流水線FFT處理器的結構設計以及各功能模塊的算法實現特別是多級流水線處理的FFT結構使得基於FPGA器件的FFT處理器完成不同點數的FFT計算時可以通過增減模塊級數很容易地實現。
  • 基於FPGA的搶答器設計與實現
    I/O 口不足的情況;本設計採用FPGA 來做增強了時序控制的靈活性,同時由於FPGA 的I/O 埠資源豐富,可以在本設計基礎上稍加修改可以設計具有多組輸入的搶答器。(注各組初始成績為10 分)  設計架構  本文以FPGA 為基礎設計的電子搶答器,根據設計功能要求,改設計主要包括搶答輸入鍵盤,數碼管顯示,報警及FPGA 最小系統。搶答器結構簡圖如圖1所示。
  • 基於FPGA的高速流水線浮點乘法器設計與實現
    同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。本文介紹了 32 位浮點乘法器的設計,採用了基4 布思算法,改進的4:2 壓縮器及布思 編碼算法,並結合FPGA自身特點,使用流水線設計技術,在實現高速浮點乘法的同時,也 使是系統具有了高穩定性、規則的結構、易於FPGA 實現及ASIC 的HardCopy 等特點。
  • 線性調頻信號基於FPGA IP核的脈衝壓縮設計
    摘要:為實現線性調頻信號的數字脈衝壓縮,設計一個FPGA硬體平臺,並著重提出一種基於FPGA IP核的脈衝壓縮設計方法。針對脈衝壓縮進行了理論分析和Matlab仿真,設計完成後對系統軟、硬體進行了全面測試,並根據實測數據對脈衝壓縮結果進行了分析。結果表明,該系統可實現1 024點的脈衝壓縮功能,主副瓣比、主瓣寬度等指標與理論仿真結果一致。該方法的參數設置靈活,可以簡化軟體設計,縮短研發周期。