• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的H.264碼流實時傳輸系統(tǒng)設(shè)計

      2021-06-02 02:53:22
      計算機測量與控制 2021年5期
      關(guān)鍵詞:碼流上位編碼

      (中北大學(xué) 電子測試技術(shù)國家重點實驗室,太原 030051)

      0 引言

      伴隨著移動通信技術(shù)標(biāo)準(zhǔn)從1 G~4 G,再到5 G的迭代更新,數(shù)字視頻質(zhì)量也從標(biāo)清,高清,全高清到超高清發(fā)生了翻天的改變[1],隨之而來的是海量的視頻數(shù)據(jù)和傳輸過程中的帶寬壓力。多媒體處理技術(shù)的發(fā)展產(chǎn)生諸多對龐大原始視頻數(shù)據(jù)的視頻壓縮編碼算法,應(yīng)用比較廣泛的有H.264、H.265、JPEG、MJPEG等,不同的編碼算法適用于不同的場合,從軟件處理到硬件編碼,實現(xiàn)方式也不盡相同[2-3]。國內(nèi)可查的使用嵌入式平臺進行視頻編碼的有中北大學(xué)儀器科學(xué)與動態(tài)測試教育部重點實驗室,該實驗室以TMS320C6678 DSP平臺實現(xiàn)的HEVC硬件H.265視頻壓縮算法,壓縮后視頻數(shù)據(jù)減少大約 39~74%[1],效果較好。不少學(xué)者利用計算機軟件進行編碼算法研究,如電子科技大學(xué)的朱艷玲提出的基于H.264宏塊編解碼算法的研究[4]。為了響應(yīng)國家對集成電路行業(yè)的扶持政策,本設(shè)計選用華為海思半導(dǎo)體的Hi3516A平臺,此平臺支持H.264、H.265、MPEG等編碼算法,綜合考慮編碼效率、容錯能力、網(wǎng)絡(luò)親和性等因素,選擇H.264算法進行硬件編碼。海思平臺應(yīng)用于安防監(jiān)控領(lǐng)域的多種場景,側(cè)重IP攝像機的系統(tǒng)布局[5-6]。但面對攝像頭采集的視頻數(shù)據(jù)生成的編碼碼流遠(yuǎn)距離傳輸問題,海思平臺就顯得捉襟見肘[7],因此本系統(tǒng)利用海思平臺網(wǎng)絡(luò)接口創(chuàng)造性地使用RAW_SOCKET協(xié)議將編碼碼流傳輸至FPGA平臺[8-9],F(xiàn)PGA平臺能很好地實現(xiàn)較于TCP(transmission control protocol)協(xié)議相對簡單的UDP(user datagram protocol)協(xié)議,可成功對接海思平臺,完成H.264碼流的接收。本文著重于介紹如何利用FPGA進行H.264碼流傳輸,最后介紹系統(tǒng)功能的測試。

      1 方案設(shè)計

      本系統(tǒng)主要由H.264碼流生成源Hi3516A平臺、網(wǎng)口模塊、DDR3模塊、USB2.0模塊和USB上位機軟件組成,系統(tǒng)框圖如圖1所示。

      圖1 系統(tǒng)總體框圖

      系統(tǒng)主控制器選擇賽靈思公司spartan6 xc6slx45,此芯片含有43 661個邏輯單元,54 576個觸發(fā)器,116個18 kB塊RAM,最大用戶IO可達(dá)358個,且集成有GTP、PCIE、MCB等高速硬件控制器,在電子工程領(lǐng)域應(yīng)用廣泛,因此足以支持本設(shè)計的資源需求[10-11]。Hi3516A平臺負(fù)責(zé)采集HDMI攝像頭數(shù)據(jù),采用H.264算法進行編碼壓縮,平均碼流速率控制在4 Mbps;生成的碼流由FPGA平臺網(wǎng)口模塊接收,該模塊實現(xiàn)UDP協(xié)議;系統(tǒng)選用1片2 Gbit DDR3芯片作為緩存介質(zhì),以解決速率匹配和數(shù)據(jù)緩存問題;系統(tǒng)功能的驗證由USB2.0模塊將碼流數(shù)據(jù)PC回傳,上位機軟件接收并本地保存,而后線下進行數(shù)據(jù)完整性、視頻播放流暢性等系統(tǒng)功能測試分析。

      2 H.264碼流源生成模塊介紹

      Hi3516A是華為海思半導(dǎo)體公司推出的一款多功能通信媒體處理芯片,旨在提供新一代HD IP攝像機SOC方案,其內(nèi)部集成ARM Cortex-A7處理器內(nèi)核及H.264、H.265、MJPEG、JPEG等硬件編碼器,主頻可達(dá)600 MHz;具有多路視頻實時編碼能力,支持的最大輸入分辨率可達(dá)5 M Pixel;輸入時序為8/10/12/14 bit RGB Bayer DC時序, BT.601、 BT.656、 BT.1120和MIPI、 LVDS/Sub-LVDS、HiSPi等;支持RGMII/GMII網(wǎng)口輸出。此芯片能滿足監(jiān)控領(lǐng)域的各種場景需求[12-13]。Hi3516A采用ARM+H.264/AVC硬件編碼器的方案實現(xiàn)H.264編碼,內(nèi)部各硬件模塊和控制器之間采用ARM公司先進微控制器總線結(jié)構(gòu)AMBA3.0實現(xiàn)高速互聯(lián),性能強大[14-15]。

      本設(shè)計選用Hi3516A作為HDMI高清攝像頭數(shù)據(jù)壓縮編碼平臺,利用網(wǎng)口輸出編碼碼流來為系統(tǒng)提供H.264碼流源。軟件工作流程如圖2所示。

      圖2 Hi3516A軟件實現(xiàn)流程圖

      鑒于H.264碼流接收端采用FPGA作為主控制器這一場景,以太網(wǎng)幀的構(gòu)建從前導(dǎo)碼、幀開始符、Mac幀頭、IP層到UDP層均需用戶一一實現(xiàn),且開始接收以太幀的判定邏輯是識別Mac幀頭的目的Mac地址是否為用戶所設(shè)定的。如此,在Hi3516A Linux嵌入式環(huán)境下編程實現(xiàn)普通socket協(xié)議難以滿足該場景需求,普通socket協(xié)議是以用戶IP地址為網(wǎng)絡(luò)通信基礎(chǔ)的。與Linux系統(tǒng)可實現(xiàn)復(fù)雜的網(wǎng)絡(luò)協(xié)議棧相比,F(xiàn)PGA僅實現(xiàn)簡單的UDP協(xié)議。為避免Linux系統(tǒng)和FPGA平臺對接時與數(shù)據(jù)傳輸無關(guān)的其他協(xié)議對系統(tǒng)產(chǎn)生干擾,在此Hi3516A嵌入式平臺使用RAW_SOCKET協(xié)議實現(xiàn)UDP編程,用戶指定目的Mac地址使FPGA能準(zhǔn)確接收UDP數(shù)據(jù)包。結(jié)果表明,此種方式成功解決了Hi3516A和FPGA平臺的對接問題。

      3 FPGA控制邏輯設(shè)計

      系統(tǒng)由以太網(wǎng)控制模塊,DDR3控制模塊和USB接口控制模塊組成,以太網(wǎng)控制模塊完成H.264碼流的接收,DDR3完成速率匹配和數(shù)據(jù)緩存功能,USB2.0模塊完成數(shù)據(jù)PC回傳以便系統(tǒng)功能的測試分析。

      3.1 以太網(wǎng)接收控制邏輯

      UDP,即用戶數(shù)據(jù)報協(xié)議,適用于圖像視頻傳輸及網(wǎng)絡(luò)監(jiān)控數(shù)據(jù)交換等對傳輸速度要求較高的場合,UDP協(xié)議自帶尋址信息,只提供端到端的數(shù)據(jù)傳輸服務(wù)。與TCP的復(fù)雜性相比,UDP協(xié)議在FPGA平臺具有更高的可實現(xiàn)性。綜合考慮,系統(tǒng)選用UDP協(xié)議來完成碼流接收。完整的以太網(wǎng)幀結(jié)構(gòu)層次和UDP接收數(shù)據(jù)狀態(tài)轉(zhuǎn)換邏輯如圖3~4所示。

      圖3 以太網(wǎng)幀結(jié)構(gòu)層次

      圖4 UDP接受數(shù)據(jù)狀態(tài)轉(zhuǎn)換邏輯

      3.2 DDR3控制邏輯

      硬件上選用Micron公司2Gbit容量的DDR3-SDRAM存儲芯片MT41J128M16LA-187E作為緩存介質(zhì),賽靈思公司ISE開發(fā)軟件提供MIG(Memory Interface Generator) IP核來為xc6slx45生成DDR3控制器設(shè)計模塊,MIG IP核其邏輯框圖如圖5所示[16]。此種方式屏蔽DDR3[17]復(fù)雜的接口時序設(shè)計,簡化為簡單命令FIFO和數(shù)據(jù)FIFO的操作,用戶可通過USER Logic來靈活快速地設(shè)計自己的DDR控制邏輯。

      圖5 MIG IP核邏輯功能示意圖

      本系統(tǒng)將MIG IP核配置為雙端口實現(xiàn)碼流的邊寫邊讀功能,端口Port 0和Port 1均為64 bit寬度,時鐘速率為312.5 MHz。DDR3寫FIFO時有數(shù)據(jù)64 bit對齊要求,此模塊將以太網(wǎng)模塊接收的H.264碼流字節(jié)組成64 bit寬度,以突發(fā)寫模式連續(xù)寫進DDR3中,突發(fā)長度1。DDR3的讀取控制信號由USB 2.0模塊產(chǎn)生,以突發(fā)讀模式讀取DDR3中數(shù)據(jù),突發(fā)長度為64,即一次讀取512字節(jié)(64*64 bit/8)的數(shù)據(jù)塊。為保證每次讀DDR信號到來時讀FIFO中有足夠的有效數(shù)據(jù),本模塊設(shè)計了寫計數(shù)變量receive_counter和讀計數(shù)變量read_counter,只有當(dāng)寫計數(shù)大于讀計數(shù)時才生成有效的讀命令信號。圖6為DDR讀寫數(shù)據(jù)流模式,圖7為DDR讀寫時chipscope抓取到的H.264碼流I幀Nalu單元起始碼(00 00 00 01)。

      圖6 DDR讀寫數(shù)據(jù)流模式

      圖7 DDR讀寫過程抓取Nalu起始碼

      3.3 USB2.0控制邏輯

      采用Cypress公司EZ-USB FX2LP系列的CY7C68013A作為USB接口芯片,此芯片內(nèi)部集成8 051微控制器,可支持的時鐘為48 MHz,24 MHz,12 MHz,且含有小容量片上RAM,滿足其固件程序的運行。該芯片自帶的4 kB FIFO足以支持其在Master模式或Slave模式下所有數(shù)據(jù)傳輸應(yīng)用場合[18-19]。

      本模塊通過配置FX2固件程序使該芯片工作在Slave FIFO異步讀寫模式,EP2輸出端點和EP6輸入端點各配置2個512 B的FIFO,其中一個FIFO寫滿或讀空的情況下會轉(zhuǎn)向另一個FIFO的讀寫。FX2固件相關(guān)寄存器配置如表1所示。

      4 系統(tǒng)功能測試

      通過修改FX2官方提供的上位機源碼添加接收數(shù)據(jù)的本地保存功能,此上位機可實現(xiàn)接收成功時數(shù)據(jù)自動保存到本地文件功能,輸入輸出端口選擇功能,USB設(shè)備選擇功能,傳輸數(shù)據(jù)塊大小選擇功能(僅支持512倍數(shù)的數(shù)據(jù)塊大小),數(shù)據(jù)接收成功失敗計數(shù)功能(以512 B或kB為單位)。界面如圖8所示。

      表1 FX2固件相關(guān)寄存器配置

      圖8 USB上位機界面

      系統(tǒng)功能的測試從模擬傳輸本地文件和實際傳輸Hi3516A編碼生成的H.264碼流兩方面進行。模擬本地文件傳輸示意圖如圖9所示,PC端使用RAW_SOCKET編程實現(xiàn)UDP協(xié)議,將本地8 023-2 015.pdf文件(55 844 864字節(jié))通過PC端網(wǎng)口發(fā)送到此H.264碼流傳輸系統(tǒng)。

      圖9 模擬本地文件傳輸示意圖

      通過對比原始文件和上位機接收到的數(shù)據(jù)文件來測試系統(tǒng)傳輸數(shù)據(jù)的完整性。使用UltraEdit軟件打開原始文件和接收到的數(shù)據(jù)文件,對比結(jié)果如圖10所示。

      圖10 上位機接收文件和原始本地文件數(shù)據(jù)對比

      可發(fā)現(xiàn)經(jīng)系統(tǒng)傳輸后接收文件從開始到最后地址0x03541ff0和原始文件數(shù)據(jù)相匹配,數(shù)據(jù)大小皆為55 844 864字節(jié),因此可得出數(shù)據(jù)傳輸完整的結(jié)論。

      H.264碼流傳輸實物圖如圖11所示。

      圖11 系統(tǒng)實物圖

      HDMI攝像頭,Hi3516A,F(xiàn)PGA依次上電,系統(tǒng)穩(wěn)定3 s后,在Hi3516A終端串口輸入命令./sil9135_test,測試HDMI攝像頭是否成功識別,如圖12所示。

      圖12 HDMI攝像頭視頻輸入測試

      串口打印結(jié)果mode:progressive表示視頻為逐行掃描格式,w:1920表示視頻分辨率為1 920*1 080。終端輸入./Hi3516A_hdmi_rawsocket命令啟動系統(tǒng)編碼,2 s等待編碼延遲后,啟動USB上位機接收碼流數(shù)據(jù),上位機顯示接收數(shù)據(jù)量大于51 200,即50 MB字節(jié)時,停止接收數(shù)據(jù)。

      通過MilkPlayer軟件播放保存的碼流文件,系統(tǒng)傳輸后碼流文件播放和攝像頭原始圖像顯示對比如圖13所示。

      圖13 碼流文件播放圖像和攝像頭原始圖像對比效果

      由圖13可知,畫面顯示完整,細(xì)節(jié)清晰,播放流暢,無明顯卡頓及花屏綠屏等丟幀亂碼現(xiàn)象。

      利用FFmpeg軟件[20]解碼上位機接收到的碼流文件為YUV4:2:0格式,解碼命令為ffmpeg -i MJTST.h264 -vcodecrawvideo-an MJTST.yuv。參數(shù)i指定輸入文件,vcodec指定解碼對象為視頻文件,rawvideo指定解碼為原始yuv格式視頻數(shù)據(jù)。如圖14所示。

      圖14 FFmpeg解碼H.264碼流文件

      如圖14所示,從解碼結(jié)果中可提取視頻時長、圖像大小、比特率、幀率、幀數(shù)、文件大小等信息,統(tǒng)計結(jié)果如表2所示。

      表2 FFmpeg解碼H.264碼流文件結(jié)果統(tǒng)計

      其中,平均碼率為H.264文件大小與視頻時長的比值,幀率為幀數(shù)與視頻時長的比值,壓縮比為解碼后YUV文件大小與H.264文件大小的比值。由表2統(tǒng)計結(jié)果可知圖像大小為1 920*1 080,視頻幀率為25 fps,符合編碼設(shè)定參數(shù),由5組數(shù)據(jù)可計算平均碼率為4 261.6 kbps,與設(shè)定的碼率4 096相比,有(4 261.6-4 096)/4 096=4%的誤差,平均壓縮比為143,編碼效果良好。

      經(jīng)測試,系統(tǒng)在12 h左右本地保存數(shù)據(jù)量達(dá)22.3 GB,24 h左右數(shù)據(jù)量達(dá)43.5 GB,且播放存在部分卡頓現(xiàn)象,2 s左右能自動恢復(fù)流暢播放,可認(rèn)為系統(tǒng)能夠完成長時間傳輸及存儲碼流的任務(wù)。

      綜合上述分析,可得出系統(tǒng)數(shù)據(jù)傳輸完整,編碼效果良好,傳輸及存儲碼流時長達(dá)到設(shè)計要求的結(jié)論,此系統(tǒng)成功實現(xiàn)了H.264碼流實時傳輸?shù)脑O(shè)計任務(wù)。

      5 結(jié)束語

      此設(shè)計實現(xiàn)的H.264碼流傳輸系統(tǒng)能成功對接Hi3516A平臺的網(wǎng)口,將編碼碼流通過FPGA進行處理和轉(zhuǎn)發(fā),在海思半導(dǎo)體平臺原有IP攝像機和網(wǎng)絡(luò)流媒體應(yīng)用方案的基礎(chǔ)上,極大拓展了其應(yīng)用可能性,如在航空航天等一些需要大量圖像數(shù)據(jù)遠(yuǎn)距離傳輸?shù)膱龊?,此系統(tǒng)可突破原網(wǎng)絡(luò)雙絞線傳輸百米的限制,將圖像數(shù)據(jù)從高空到地面遠(yuǎn)距離回傳以進行后續(xù)的分析利用。本系統(tǒng)也存在需改進之處,如使用USB2.0接口回傳數(shù)據(jù),在后續(xù)的研究開發(fā)中,可將其拓展為已相當(dāng)成熟的USB3.0接口,此處Hi3516 A 4 Mbps的輸出碼流速率情況下USB2.0接口也足以滿足傳輸速度需求。另外系統(tǒng)還可使用LVDS、RS485/422等其它接口進行數(shù)據(jù)的轉(zhuǎn)發(fā)處理以增加其多場合實用性。

      猜你喜歡
      碼流上位編碼
      分布式碼流實時監(jiān)控與錄制系統(tǒng)的設(shè)計與實現(xiàn)
      數(shù)字電視TS碼流協(xié)議簡要分析
      視聽(2021年8期)2021-08-12 10:53:42
      基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
      《全元詩》未編碼疑難字考辨十五則
      子帶編碼在圖像壓縮編碼中的應(yīng)用
      電子制作(2019年22期)2020-01-14 03:16:24
      Genome and healthcare
      特斯拉 風(fēng)云之老阿姨上位
      車迷(2018年12期)2018-07-26 00:42:22
      “三扶”齊上位 決戰(zhàn)必打贏
      基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
      以新思路促推現(xiàn)代農(nóng)業(yè)上位
      宁都县| 中宁县| 潮州市| 临泽县| 屯门区| 香河县| 资阳市| 东台市| 溧水县| 新建县| 彰化县| 景德镇市| 格尔木市| 闵行区| 兰坪| 江达县| 喀什市| 北安市| 雅江县| 衡南县| 正宁县| 诏安县| 军事| 南华县| 河南省| 永顺县| 河源市| 清水河县| 板桥市| 名山县| 井研县| 什邡市| 五大连池市| 澜沧| 内乡县| 南乐县| 合川市| 务川| 右玉县| 探索| 曲阳县|