精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

牽手一起夢 ? 來源:電子產品世界 ? 作者:李鋒,魏子奇 ? 2020-02-07 10:04 ? 次閱讀

引言

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

目前實現該技術的主要方法是通過MCU IP核在FPGA中模擬出一個控制器來控制其余的子模塊實現。本文設計的系統使用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模塊發送到網絡之中。

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

2 系統模塊概述

2.1 系統總體結構

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

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

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

2.2 TS流接收的實現

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

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

本模塊的時鐘來自于編碼器,接收符合時序的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可以從數據搬用的工作中解脫出來,從而提高了程序運行的效率,防止了數據的溢出。

2.4.2 FPGA與MCU通信的實現

此模塊實現FPGA與MCU之間的通信,在本設計中主要采用的是EMIF接口的方式,與此同時我們還使用了MCU的通用I/O口,采用了以EMIF接口為主、通用I/O口為輔的混合通信方式,使FPGA與MCU之間的通信更加地靈活,邏輯框圖如圖4所示。

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

在本系統中R8051XC2提供了EMIF接口來訪問外部的數據或程序存儲器,該接口具有23bit的數據總線“memaddr”,可以訪問最大16MB的存儲空間;8bit的輸出數據總線“memdatao”和8bit的輸入數據總線“memdatai”,讀寫控制信號“memwr”和“memrd”,以及一個響應信號“memack”。

R8051XC2為EMIF接口提供了基于三個輸入信號的等待狀態,三種信號分別為:“mempsack”主要用于外部程序存儲器;“memack”主要用于外部數據存儲器;“sfrack”主要用于外部特殊功能寄存器。這些管腳的狀態在傳輸指令或數據時被采樣,例如,在使用“memrd”和“memwr”對外部的數據存儲器進行讀寫操作時,處理器會對“memack”進行采樣來確認外部存儲器是否已經完成操作。還提供了一個全局等待信號“waitstate”,表示插入一個等待狀態,無論是由什么原因引起的。

控制內部產生的程序或外部數據存儲器的等待狀態長度的寄存器是“ckcon”,它的值作為初始值裝入內部等待狀態的計數器中。當有一個外部數據存儲器的訪問初始化時,ckcon[2:0]的值被裝入內部等待狀態計數器,這個計數器會強制將waitstate信號置1,使處理器中的寄存器和觸發器進入等待狀態,直到計數器的值減少到0。

本文設計的系統在兩個不同的層次中包含兩個時鐘域,需要使用兩個PLL模塊來實現,其中一個在FPGA的頂層模塊中為MAC模塊和MCU接口模塊提供100MHz與80MHz的時鐘,并通過locked接口產生低有效的復位信號。另一個PLL模塊為FPGA提供運行時所需的時鐘信號。

2.4.3 異步時鐘域通信的實現

在本文介紹的系統中,存在著兩個時鐘域,其中TS模塊工作在標準中要求的27MHz的時鐘域中,處理器和MAC模塊工作在100MHz的時鐘域中,其中TS模塊需要和處理器之間進行數據傳輸。在傳輸中需要進行異步時鐘域處理的主要包括兩種信號:一種是控制信號,另一種是數據信號。在異步時鐘域的通信中需要解決兩個問題:一是信號的同步,二是盡量減少亞穩態的影響。

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

對于第一個問題,在本文中使用部分握手協議來進行信號的同步[7]。部分握手協議的過程中,兩個通信的時鐘域不需要完全了解對方的狀態,可以按順序發送或撤銷各自的握手信號。由于雙方不需要等待對方的回應,就可以撤銷自己的信號并繼續執行協議,因此相對于完全握手協議,部分握手協議的穩定性稍差,當然可以使用更少的時間完成一次握手傳輸。根據使用的信號不同,部分握手協議又可以分為兩種。第一種為使用電平和脈沖的同步握手信號。第二種為使用脈沖的同步握手信號。在此本文使用脈沖的同步握手信號,其過程如圖6所示。

在這種握手機制中采用脈沖同步器接收通信雙方的握手信號,如果時鐘域A的時鐘頻率比時鐘域B的時鐘頻率快兩倍時,可以采用邊沿同步器來收握手信號。從圖6中可以看出,這種握手機制中,時鐘域A需要2個時鐘周期,時鐘域B需要3個時鐘周期,所耗費的時鐘周期最少。

握手機制的優點是可以在時鐘頻率相差較大的時鐘域之間進行通信,可以進行多位傳輸。缺點是需要額外的多個時鐘周期完成握手的流程,降低了系統的效率。

對于亞穩態的減少,使用常用的同步電路的方法來處理,同步電路的原理是降低出現亞穩態的概率,由圖6中可分析出,第一個時鐘域的信號到達第二個時鐘域的第一個觸發器時,很可能無法滿足建立和保持時間,從而導致在觸發器的輸出端出現亞穩態,當這種狀態持續不到一個周期時,可以通過增加一級觸發器來消除該亞穩態,這樣第二個觸發器的輸出信號就可以滿足同步信號的要求,可以達到異步電路同步化的效果[4]。

3 系統狀態機及各狀態說明

下面主要對執行TS over IP操作時系統的狀態轉換情況進行說明。系統狀態轉換圖如7所示。

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

信號說明:

wdata1,wdata2 :RAM1和RAM2的可寫數據信號。

wchk1,wchk2 :RAM1和RAM2的可寫包頭信息信號。

rdata1,rdata2 :RAM1和RAM2的可讀信號。

狀態圖說明,除開始和結束狀態外,本系統共包含六個狀態:

1) 初始化狀態:

a) 配置本機的MAC地址,IP地址以及要發送的目標的IP地

b) 完成硬件初始化

c) 置wdata1=1,wdata2=0,wchk1=0,wchk2=0,rdata1=0,rdata2=0

d) 跳轉到S1_1

2) S1_1:

a) 若此時wdata1=1,rdata1=1,則說明數據溢出,跳轉到溢出狀態

b) 向RAM1中寫入TS流數據

c) 數據量達到1316個字節后,置wdata1=0,wchk1=1

d) 同時處理器讀取RAM2中的數據,讀取結束時置rdata2=0

e) 跳轉到狀態S1_2

3) S1_2:

a) 將修改后的包頭信息寫入RAM1中

b) 寫入完成后置wchk1=0,wdata2=1, rdata1=1

c) 通知處理器可讀取RAM1中的數據

d) 跳轉到S2_1

4) S2_1:

a) 若此時wdata2=1,rdata2=1,則說明數據溢出,跳轉到溢出狀態

b) 向RAM2中寫入TS流數據

c) 數據量達到1316個字節后,置wdata2=0,wchk2=1

d) 同時處理器讀取RAM1中的數據,讀取結束時置rdata1=0

e) 跳轉到狀態S2_2

5) S2_2:

a) 將修改后的包頭信息寫入RAM2中

b) 寫入完成后置wchk2=0,rdata2=1,wdata1=1

c) 通知處理器可讀取RAM2中的數據

d) 跳轉到S1_1

6) 溢出狀態:

a) 在S1_1或S2_1狀態時,當CPU沒有完成數據的讀取,卻要求再次寫入時,則視為數據溢出

b) 通知CPU數據溢出,并停止系統的運行

c) 跳轉到結束狀態

4 結論

本文闡述了一種基于FPGA和MCU芯片的TS over IP系統的設計方法,說明了系統各個部分的功能和實現,詳細敘述了系統工作流程。同時還相較以往的系統進行了改進,通過使用雙RAM進行乒乓操作存儲并轉換數據,并通過DMA的方式進行RAM與MAC模塊數據交換等方法提高了系統運行效率。本系統在FPGA查找表(LUT)資源為6144,MCU頻率為100MHz的條件下,完成了視屏TS數據的傳輸,網絡傳輸速率達到30Mbit/s。

同時本文還在相同的硬件條件下,對使用FIFO作為緩沖器的系統和本系統在處理不同傳輸率的TS流時的系統性能做了對比,其中對比的主要參數是在不同數據傳輸速率下丟包率的多少,丟包率計算方法如下:

丟包率 = (發包數 — 收包數)/ 發包數

對比結果如表1所示。從表1中可以看出,在相同的硬件條件下,改進后的本系統的性能與運行效率有了明顯的提高,達到了實驗目的。

基于FPGA技術和微控制器實現將TS流數據轉換為IP數據包的設計

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1626

    文章

    21678

    瀏覽量

    602045
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17019

    瀏覽量

    350375
  • 控制器
    +關注

    關注

    112

    文章

    16214

    瀏覽量

    177483
收藏 人收藏

    評論

    相關推薦

    將UDP數據包發送到廣播IP地址時遇到的疑問求解

    保持不變,包括傳輸的數據。 此外,當 wroom 充當客戶端時,我們可以通過遠程主機(WIFI 路由)廣播 UDP 數據包,方法是使用主機 IP 在 wroom 上創建到主機的 U
    發表于 07-16 06:07

    使用AT SAVETRANSLINK時UDP數據包丟失怎么解決?

    收來自微控制器數據包,并在UDP,IP 192.168.4.2,端口2345上發送,Android成功接收到該數據包。 這在一段時間內工作正常。Android 發送的所有
    發表于 07-18 07:17

    怎么通過FPGA實現微控制器

    FPGA實現這個微控制器。 (例如,在opencores站點中有一些微型ip核心。)。那么我們應該怎樣處理之前編寫的代碼(用C語言編寫)?我希望我能夠說出我的問題。問候,Ghasem以
    發表于 03-22 07:32

    AXI數據包傳輸問題

    數據包結構:“ccccdddd”,“計數”,“00000000”,“00000000”,“00000000”,“00000000”,“00000000”,“00000000”,“deadbeef
    發表于 04-15 13:51

    DDR3存儲接口控制器IP助力數據處理應用

    :視頻處理框圖FPGA獲取并緩存四個視頻源的數據流。這些FIFO緩沖由DDR3存儲控制器
    發表于 05-24 05:00

    基于FPGA數據采集控制器IP核的設計方案和實現方法研究

    此提供了新的解決方案。IP核(IP Core)是具有特定電路功能的硬件描述語言程序,可較方便地進行修改和定制,以提高設計效率[3]。本文研究了基于FPGA數據采集
    發表于 07-09 07:23

    如何用固定Ip數據包觸發中斷?

    現在出現的問題是只要是個數據包都會觸發以太網中斷而我要的結果是固定Ip數據包才能觸發中斷,where is 大神!
    發表于 08-02 04:37

    怎樣利用FPGA實現IPV6數據包的拆裝?

    怎樣利用FPGA實現IPV6數據包的拆裝?IPV6數據包的包頭和數據部分的拆分過程是怎樣進行的?
    發表于 04-28 06:05

    基于FPGA的IPV6數據包的拆裝是如何實現的?

    基于FPGA的IPV6數據包的拆裝是如何實現的?
    發表于 05-28 06:23

    基于數據包標記的偽造IP DDoS攻擊防御

    提出一種基于數據包標記的偽造IP DDoS攻擊防御方案,該方案在IP數據包中嵌入一個路徑相關的16位標識,通過檢測標識計數臨界值判斷是否發
    發表于 04-14 09:54 ?21次下載

    網絡數據包捕獲機制研究

    網絡數據包捕獲技術,是實現入侵檢測、網絡安全審計的關鍵技術。本文改進了國外傳統的數據包捕獲函數庫Libpcap 捕獲
    發表于 09-01 10:09 ?9次下載

    基于Jpcap的數據包捕獲的設計與實現

    本文研究了以太網數據包的捕獲機制,實現了基于JPcap的網絡數據包捕獲工具,其基本原理是通過調用Jpcap庫捕獲本地網絡上的所有數據包,然后對數據包
    發表于 01-15 13:47 ?38次下載

    數據包過濾原理

    數據包過濾技術數據包過濾原理              數據包過濾
    發表于 06-16 23:44 ?4587次閱讀
    <b class='flag-5'>數據包</b>過濾原理

    什么是數據包

    什么是數據包? 您在互聯網上做的一切都涉及到數據包。例如,您接收的每個網頁都以一系列數據包的形式傳入,您發送的每封電子郵件都以一系列數據包的形式傳出。以
    發表于 08-03 09:13 ?2011次閱讀

    數據包的發送流程

    一個數據包,從聊天框里發出,消息會從聊天軟件所在的用戶空間拷貝到內核空間的發送緩沖區(send buffer),數據包就這樣順著傳輸層、網絡層,進入到數據鏈路層,在這里數據包會經過
    的頭像 發表于 08-19 14:38 ?2616次閱讀