• 
    

    
    

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

      基于FPGA開發(fā)平臺(tái)的H.264視頻編碼系統(tǒng)設(shè)計(jì)*

      2017-11-09 01:11:36,,
      關(guān)鍵詞:宏塊碼字后綴

      ,,

      (東北大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110819)

      基于FPGA開發(fā)平臺(tái)的H.264視頻編碼系統(tǒng)設(shè)計(jì)*

      李貞妮,李晶皎,榮超群

      (東北大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110819)

      針對傳統(tǒng)基于嵌入式平臺(tái)或DSP構(gòu)建的H.264編碼系統(tǒng)編碼性能差,可擴(kuò)展性低的缺點(diǎn),提出基于FPGA開發(fā)平臺(tái)設(shè)計(jì)的H.264視頻編碼SoC系統(tǒng)。本文主要介紹了其中最重要的熵編碼模塊。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的基于嵌入式處理器的編碼系統(tǒng)相比,基于FPGA開發(fā)平臺(tái)的編碼系統(tǒng)可以實(shí)現(xiàn)視頻采集、實(shí)時(shí)編碼和存儲(chǔ),編碼后視頻播放流暢,無數(shù)據(jù)丟失或數(shù)據(jù)出錯(cuò)等情況,系統(tǒng)各項(xiàng)功能運(yùn)行良好,并且系統(tǒng)具有很好的可移植性與可配置性,占用資源少、速度快、具有廣泛的應(yīng)用前景。

      FPGA;SoC;H.264;熵編碼;Zynq

      引 言

      H.264以其優(yōu)異的性能在實(shí)時(shí)網(wǎng)絡(luò)視頻通信、數(shù)字廣播電視及高清視頻存儲(chǔ)播放等方面獲得廣泛應(yīng)用,其目標(biāo)是高視頻分辨率,提高圖像質(zhì)量,并能夠覆蓋所有低帶寬和高帶寬的應(yīng)用[1]。但是由于H.264編碼算法比較復(fù)雜、計(jì)算量大,需要處理的數(shù)據(jù)量也比較大,因此基于傳統(tǒng)的嵌入式處理器平臺(tái)所實(shí)現(xiàn)的H.264編碼系統(tǒng),其主要核心算法依然通過軟件實(shí)現(xiàn),編碼系統(tǒng)性能較差,很難達(dá)到高實(shí)時(shí)性的要求。而基于專用編碼芯片或視頻編碼DSP所實(shí)現(xiàn)的編碼系統(tǒng),雖然編碼性能較好,但系統(tǒng)接口和功能固定,可升級性和可擴(kuò)展性較差。

      因此,本文提出基于FPGA平臺(tái)的H.264編碼系統(tǒng)設(shè)計(jì)方案,利用FPGA平臺(tái),通過設(shè)計(jì)構(gòu)建基于片上系統(tǒng)(System on Chip,SoC)的完整的H.264編碼系統(tǒng),其編碼性能高,可編程性強(qiáng),彌補(bǔ)了上述編碼系統(tǒng)的不足。

      1 SoC和Zynq7000 FPGA

      SoC是系統(tǒng)級芯片的簡稱,系統(tǒng)不僅包含了處理器內(nèi)核、存儲(chǔ)器等硬件系統(tǒng),而且還含有相應(yīng)的嵌入式軟件,是一個(gè)真正的軟、硬件均具備的完整體系。利用SoC設(shè)計(jì)方法可以將一個(gè)復(fù)雜的系統(tǒng)集成到單一芯片中,并具有低功耗、低成本及高速性的特點(diǎn)。與利用ASIC實(shí)現(xiàn)的SoC相比,利用FPGA實(shí)現(xiàn)的SoC具有可配置性的特點(diǎn),因此具有更好的可擴(kuò)展性和可移植性。[2-3]

      Zynq-7000系列是Xilinx公司提出的一款高性能和低功耗的處理器平臺(tái),是靈活和可擴(kuò)展的解決方案。Zynq-7000 AP SoC平臺(tái)采用ARM+FPGA的體系結(jié)構(gòu)。Zynq-7000系列包含了完整的ARM處理子系統(tǒng),每一顆Zynq-7000系列的處理器都包含了雙核的Cortex-A9處理器,而且處理器子系統(tǒng)中集成了內(nèi)存控制器和大量的外設(shè),使Cortex-A9的核在Zynq-7000中完全獨(dú)立于可編程邏輯單元。另外,可編程邏輯部分緊密地與ARM處理單元相結(jié)合。FPGA用于擴(kuò)展子系統(tǒng),具有豐富的擴(kuò)展能力,有超過3 000個(gè)內(nèi)部互連,連接資源非常豐富,可提供100 Gb/s以上的內(nèi)部帶寬。

      2 H.264編碼系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

      本文提出的H.264編碼系統(tǒng)在結(jié)構(gòu)設(shè)計(jì)上分為三個(gè)層次,分別為SoC系統(tǒng)及外設(shè)硬件設(shè)計(jì)、Linux對外設(shè)的驅(qū)動(dòng),以及Linux下的系統(tǒng)應(yīng)用軟件設(shè)計(jì)。

      SoC系統(tǒng)及外設(shè)硬件設(shè)計(jì)主要完成基于ARM Cortex-A9硬核的SoC系統(tǒng)的搭建,以及各處理模塊或接口模塊與外設(shè)器件的連接。Linux對外設(shè)的驅(qū)動(dòng)主要完成的是對底層模塊的驅(qū)動(dòng)和訪問。系統(tǒng)應(yīng)用軟件設(shè)計(jì)是在底層模塊的驅(qū)動(dòng)下實(shí)現(xiàn)各模塊之間的數(shù)據(jù)傳輸,并編寫QT GUI界面。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖如圖1所示。

      圖1 H.264編碼系統(tǒng)系統(tǒng)結(jié)構(gòu)圖

      3 H.264編碼算法的IP核設(shè)計(jì)

      本文提出了一種將H.264編碼算法作為IP核的設(shè)計(jì)方法,也是基于FPGA的H.264編碼系統(tǒng)的SoC設(shè)計(jì)的核心部分。依據(jù)H.264的編碼框架,采用模塊化設(shè)計(jì)方式,根據(jù)具體的數(shù)據(jù)流向?qū).264幀內(nèi)編碼IP核劃分為如下具體模塊:幀內(nèi)亮度預(yù)測模塊(Intra4×4)、幀內(nèi)色度預(yù)測模塊(Intra8×8Chroma)、整數(shù)DCT變換模塊(DCT)、哈達(dá)瑪變換模塊(DCHadamard)、量化模塊(Quantisation)、逆整數(shù)DCT變換(iDCT)、逆量化模塊(deQuantisation)、CALVC熵編碼(CALVC)、重建模塊(Reconstruction)、位轉(zhuǎn)字節(jié)模塊等。同時(shí),AXI Stream接口和存儲(chǔ)RAM數(shù)據(jù)寬度為32位,因而總線接口數(shù)據(jù)寬度也限制為32位。H.264編碼IP核設(shè)計(jì)框架圖如圖2所示,后面主要討論熵編碼模塊的設(shè)計(jì)實(shí)現(xiàn)。

      3.1 熵編碼模塊的設(shè)計(jì)實(shí)現(xiàn)

      CALVC熵編碼模塊是本設(shè)計(jì)的核心內(nèi)容,為了使熵編碼處理速度更快,采用將殘差數(shù)據(jù)進(jìn)行逆Zigzag掃描的方法。在CALVC熵編碼模塊外需要一個(gè)RAM來存儲(chǔ)一行40個(gè)宏塊的NC(Number Current)值,這里選取的RAM大小為512×5位。而在CALVC熵編碼模塊內(nèi)部建立含有8個(gè)5位寄存器的寄存器組,來分別存儲(chǔ)左側(cè)亮度宏塊和色度宏塊的NC值。在整個(gè)編碼模塊中,首先要獲得的是統(tǒng)計(jì)信息,即編碼一個(gè)4×4塊前先得到該塊的非零系數(shù)數(shù)目和拖尾系數(shù)數(shù)目,同時(shí)也需要獲得計(jì)算后的NC值,用來判斷查找表。

      圖2 H.264編碼IP核設(shè)計(jì)框架圖

      經(jīng)過16個(gè)時(shí)鐘周期,經(jīng)過逆Zigzag掃描后的4×4塊系數(shù)串行讀入到CALVC編碼器的寄存器中。與此過程中,幅值計(jì)數(shù)器分別判斷輸入的系數(shù)值是0還是非0值。如果輸入的系數(shù)是非0值,則存入到幅值寄存器中。在此同時(shí),拖尾系數(shù)計(jì)數(shù)器、非零系數(shù)計(jì)數(shù)器和零值個(gè)數(shù)計(jì)數(shù)器將在每讀入一個(gè)系數(shù)時(shí)更新一次。16個(gè)時(shí)鐘周期掃描結(jié)束后,將根據(jù)查表序號寄存器獲得查找表的地址,然后輸出查表后得到的碼字。

      熵編碼模塊主要?jiǎng)澐譃槿缦滦∧K:統(tǒng)計(jì)模塊、NC計(jì)算模塊、編碼coeff_token、編碼trailingone_sign、編碼levels和編碼totalzeros。由于待編碼系數(shù)數(shù)據(jù)塊有4×4和2×2兩種,輸入的數(shù)據(jù)數(shù)有16、15、4三種情況,統(tǒng)計(jì)模塊通過計(jì)數(shù)輸入的有效數(shù)據(jù)數(shù)目maxcoeffs來判定當(dāng)前處理的是4×4塊還是2×2塊。如果maxcoeffs為4,則當(dāng)前處理的是2×2塊,那么在對coeff_token和totalzeros進(jìn)行編碼時(shí),需要選擇直流編碼表格。

      計(jì)算模塊根據(jù)當(dāng)前4×4塊的位置確定使用NC的來源,計(jì)算結(jié)果暫存在NC寄存器中。coeff_token的碼字從4個(gè)變成表和一個(gè)定長表中獲得,totalcoeffs和trailingones是表的索引。如果使用H.264的標(biāo)準(zhǔn)表,碼字最長為16位,在構(gòu)建碼表時(shí)需要設(shè)計(jì)數(shù)據(jù)位數(shù)為16位的ROM區(qū),會(huì)浪費(fèi)較多的資源。通過對4個(gè)變長表進(jìn)行研究,發(fā)現(xiàn)碼字的構(gòu)成都是若干個(gè)0作為前綴,后綴為“有意義”的碼字,而后綴長度均不超過6位。因此,本文對原有的碼表進(jìn)行了改造。并且,為了減少邏輯資源,用判斷NC高位是否為零代替判斷NC的取值范圍。trailingone_sign編碼碼字由統(tǒng)計(jì)模塊完成,碼字的長度等于trailingone。totalzeros的編碼通過查表完成,同樣為了節(jié)省硬件資源,對該碼表進(jìn)行了精簡改造。

      圖3 CAVLC熵編碼模塊仿真圖

      用查表法計(jì)算Exp-Golumb熵編碼,會(huì)占用較多的硬件資源。通過歸納總結(jié)Exp-Golumb熵編碼的編碼規(guī)律,通過使用構(gòu)造碼字的方式計(jì)算碼字。對于ue(v),設(shè)定編碼后碼字的比特串格式為“前綴+后綴”,從而有:

      ① 后綴=codeNum+1。如codeNum=3,則后綴值為4,后綴的比特串為100。

      ② 前綴的比特?cái)?shù)較后綴的比特?cái)?shù)少1,且前綴的各位比特為0,如codeNum=3,則最終編碼所得的比特串為00100。

      表1 語法元素值與codeNum關(guān)系

      對于se(v),則按照表1進(jìn)行轉(zhuǎn)換 ,其中Ceil()函數(shù)表示向上取整。

      ① 語法元素值為負(fù)數(shù),則乘2取反,轉(zhuǎn)換成 “;”。

      ② 語法元素值為正數(shù),則乘2減1,轉(zhuǎn)換成“?!?。

      然后按ue(v)編碼規(guī)則進(jìn)行編碼。

      因而,對于16位的有符號語法元素signNum[15:0],若最高位為0,則語法元素值為正,那么后綴suffix=signNum×2-1+1=signNum×2,通過右移1位完成;若最高位為1,則語法元素值為負(fù),那么后綴suffix=-signNum×2+1, signNum的負(fù)值使用減法器完成,將結(jié)果右移1位,并將最低位置1。得到后綴suffix后,再確定碼字的長度codelenth,并將高位補(bǔ)零。碼字長度的確定方法如下:碼字的長度一定是奇數(shù),而且是后綴長度suffixlenth的兩倍加1。通過判斷suffix高位零的個(gè)數(shù)就可以得到suffixlenth。如果suffix[15:1]均為零,那么suffix只可能是0或者1,因而suffixlenth=1,沒有前綴,codelenth=1;如果suffix[15:2]均為零,那么suffix只可能是2、3,因而suffixlenth=2, codelenth=3;其他高位為零的判斷情況類似。高位為零的判斷使用優(yōu)先級選擇器。

      4 實(shí)驗(yàn)結(jié)果

      4.1 熵編碼模塊的仿真測試結(jié)果

      針對實(shí)現(xiàn)的熵編碼模塊,使用ModelSim 10.0a對其進(jìn)行功能仿真,并使用Xilinx ISE測試模塊的最大工作頻率Fmax。

      根據(jù)表1可知,0的有符號Exp-Golumb熵編碼后的碼字是1’b1,;1編碼后的碼字是3’b010,碼字長度為3;-1編碼后的碼字是3’b011,碼字長度為3;2編碼后的碼字是5’b00100,碼字長度為5;-2編碼后的碼字是5’b00101,碼字長度為5。Exp-Golumb熵編碼仿真圖如圖4所示。

      圖4 ExpGolumb熵編碼模塊仿真圖

      4.2 H.264編碼系統(tǒng)的性能測試結(jié)果

      測試采用的硬件開發(fā)平臺(tái)為FPGA Zynq-7000,開發(fā)環(huán)境為Xilinx ISE 14.4 (64位)。使用Xilinx XPS (Xilinx Platform Studio) 構(gòu)建SoC系統(tǒng),將H.264 編碼 IP核以及HDMI控制IP核添加到SoC上。為了比較準(zhǔn)確地得到測試數(shù)據(jù),系統(tǒng)并非實(shí)時(shí)采集和編碼,而是采集完一定幀數(shù)后再進(jìn)行編碼過程。同時(shí),由于所實(shí)現(xiàn)的編碼系統(tǒng)只針對分辨率為640×480的視頻,業(yè)內(nèi)并無這樣分辨率的標(biāo)準(zhǔn)測試視頻,因而無法將本編碼系統(tǒng)與其他編碼系統(tǒng)直接進(jìn)行對比測試。為了解決該問題,本文提出采用宏塊編碼速度,即以宏塊為單位來考慮編碼系統(tǒng)的性能。宏塊編碼速度MBencodespeed的定義如下:

      MBencodespeed=MBtotal/t=Frametotal×MBnum/t

      (1)

      其中,MBtotal是編碼宏塊總數(shù),F(xiàn)rametotal是編碼幀總數(shù),而MBnum是編碼一幀中宏塊總數(shù)。MBencodespeed的單位是宏塊每秒(mbps)。

      為了測試系統(tǒng)的編碼性能,在設(shè)定QP=28的前提下,使用編碼系統(tǒng)對不同場景進(jìn)行多次編碼,并分別計(jì)算編碼速度、壓縮比以及PNSR,以確定編碼效率。對比測試對象為在ARM926EJ-S平臺(tái)實(shí)現(xiàn)的H.264編碼系統(tǒng),QP=28。在關(guān)閉QT界面下只進(jìn)行編碼測試,編碼速度對比測試結(jié)果如表2所列。

      表2 編碼速度對比測試表

      可知本系統(tǒng)的平均編碼速度能夠達(dá)到21.69 fps(26 030 mbps),是ARM926EJ-S平臺(tái)的88.9倍。由于本系統(tǒng)只實(shí)現(xiàn)幀內(nèi)預(yù)測編碼,并沒有實(shí)現(xiàn)幀間預(yù)測,因而本系統(tǒng)在壓縮性能上和ARM926EJ-S平臺(tái)仍有一定差距,可通過后續(xù)添加幀間預(yù)測模塊來改善。編碼后視頻Y分量、Cr和Cb分量的平均PSNR分別達(dá)到均36.92 dB、39.59 dB和38.06 dB,編碼后視頻質(zhì)量良好。

      結(jié) 語

      [1] 羅軍,黃啟俊,常勝,等. H.264中整數(shù)變換與量化的FPGA實(shí)現(xiàn)[J].中國圖像圖形學(xué)報(bào),2011,16(5):740-745.

      [2] L Pei, Z Jian.A high reliable SoC on-board computer based on Leon3[J].2012 IEEE International Conference on Science and Automation Engineering(SCAE 2011),2012(1):360-363.

      [3] H ChunMing, W ChienMing, Y Chih-Chyau, et al.Programmable System-on-Chip (SoC) for silicon prototyping[J].IEEE Transactions on Industrial Electronics, 2011,58(3): 830-838.

      H.264EncodingSystemDesignBasedonFPGAPlatform

      LiZhenni,LiJingjiao,RongChaoqun

      (College of Information Science and Engineering,Northeastern University,Shenyang 110819,China)

      The H.264 encoding system based on the traditional embedded developing platform has many disadvantages such as has low encoding performance,low extensibility and so on.In order to solve the problems,the H.264 video encoding SoC system based on FPGA development platform design is proposed.The most important module is the entropy encoding module in the system.The experiment results indicate that,the encoding system can realize the video collecting,encoding,and storage comparing with the H.264 encoding system based on the traditional embedded developing platform.After encoding,the video plays smoothly,without data missing or errors.Furthermore,the system has good portability and configurability,therefore it has a broad application prospects.

      FPGA;SoC;H.264;entropy encoding;Zynq

      國家自然科學(xué)基金資助項(xiàng)目(61370153)。

      TP391.41

      A

      2017-06-07)

      猜你喜歡
      宏塊碼字后綴
      放 下
      數(shù)據(jù)鏈系統(tǒng)中軟擴(kuò)頻碼的優(yōu)選及應(yīng)用
      放下
      河北霸州方言后綴“乎”的研究
      TalKaholic話癆
      說“迪烈子”——關(guān)于遼金元時(shí)期族名后綴問題
      基于選擇特征宏塊的快速視頻穩(wěn)像
      一種基于后綴排序快速實(shí)現(xiàn)Burrows-Wheeler變換的方法
      長為{4,5,6}的完備刪位糾錯(cuò)碼的存在性*
      基于宏塊合并的H.264模式選擇算法
      安多县| 永修县| 抚松县| 卢湾区| 阿合奇县| 巧家县| 青海省| 恩施市| 新源县| 青海省| 杭锦后旗| 灵武市| 锡林浩特市| 凤凰县| 新泰市| 商城县| 光泽县| 凤山市| 旅游| 敦煌市| 莎车县| 无极县| 灵宝市| 文水县| 溧水县| 广南县| 周口市| 确山县| 张家港市| 科技| 家居| 保亭| 综艺| 上蔡县| 永修县| 阿荣旗| 资兴市| 繁峙县| 济南市| 广元市| 民权县|