亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        H.265硬編碼器的高效數(shù)據(jù)存取系統(tǒng)設(shè)計

        2022-02-10 08:42:14陳業(yè)旺吳林煌楊俊偉
        電視技術(shù) 2022年12期
        關(guān)鍵詞:碼流存儲器編碼器

        陳業(yè)旺,吳林煌,楊俊偉

        (1.福州大學(xué) 先進制造學(xué)院,福建 晉江 362200;2.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)

        0 引 言

        高效視頻編碼標準H.265/HEVC(High Efficiency Video Coding,HEVC)[1-2]提供了超高清視頻的壓縮編碼方案[3-5]。在壓縮相同質(zhì)量視頻時,它比上一代編碼標準H.264提高了約50%的壓縮性能[6]。但同時,H.265標準相對H.264標準也增加了算法復(fù)雜度[7]。本文所述的編碼系統(tǒng)使用Zynq這種包 含 PL(Programmable Logic)與 PS(Processing System)的異構(gòu)平臺實現(xiàn),利用PL硬件的高度并行運算加速編碼過程,利用PS控制編碼器的編碼參數(shù)[8]。這使得編碼器既能加速編碼運算,又可向PS端CPU提供控制接口而不失靈活性。H.265硬編碼器要壓縮編碼更高清視頻,還需要解決一個重要的問題,即如何滿足其成倍增加的數(shù)據(jù)吞吐量,同時盡可能降低存取延時、減少存儲帶寬壓力。由于H.265標準中可在8×8至64×64范圍內(nèi)動態(tài)劃分CTU,支持33種幀內(nèi)預(yù)測模式[9-11],因此更增加了對內(nèi)存空間訪問的需求。

        文獻[12]將新型的非易失性存儲器如ReRAM、STT-RAM等與DRAM組成分層內(nèi)存結(jié)構(gòu),有效地節(jié)約了總體存儲器面積、降低了編碼數(shù)據(jù)存取功耗。但該方案中,DRAM與非易失性存儲器需要不同的存儲控制器管理對內(nèi)存的訪問,這無疑增加了硬件成本。文獻[13]采用現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)拓展的PCIE接口接收待編碼的視頻數(shù)據(jù)然后緩存至DDR中,再利用SRIO(Serial RapidIO)接口將FPGA預(yù)處理后的數(shù)據(jù)送至DSP芯片中,在DSP芯片上完成HEVC壓縮編碼。該方案硬件成本高,使用多個接口連接不同硬件電路,增加了系統(tǒng)的不穩(wěn)定性,也增加了視頻編碼延時,傳輸帶寬利用率不高。文獻[14]設(shè)計了DDR-BRAM-LUT三級物理存儲結(jié)構(gòu),使用DDR進行幀緩存、用BRAM行緩存、用LUT緩存參考像素,在一定程度上緩解了片外存儲器的帶寬壓力,但沒有考慮CTU在內(nèi)存中的存儲安排與DDR訪問效率的關(guān)系,數(shù)據(jù)存取效率不高。

        綜合考慮上述問題,本文設(shè)計了一種可有效提升H.265編碼器數(shù)據(jù)存取效率的硬件架構(gòu)。首先分析了DDR4訪問的特性、硬件結(jié)構(gòu)特點以及H.265編碼的特性,從而設(shè)計了以64×64的CTU為單位、以DDR4內(nèi)存頁對齊存儲、視頻幀乒乓結(jié)構(gòu)讀寫,然后介紹了基于DDR-FIFO-BRAM結(jié)構(gòu)的編碼數(shù)據(jù)存取方案,主要包括:待編碼圖像數(shù)據(jù)的存儲;重構(gòu)圖像的存儲與滑動讀取重構(gòu)圖像搜索框數(shù)據(jù),并根據(jù)當前分辨率對重構(gòu)圖像做填充,整個過程硬件流水實現(xiàn);碼流緩存控制。最后介紹了系統(tǒng)整體設(shè)計流程,并對系統(tǒng)測試結(jié)果進行了分析。本文所述方案在Xilinx的Zynq UltraScale+ MPSOC 9EG平臺上得以實現(xiàn),并通過搭建基于H.265硬編碼器的軟硬件協(xié)同工程驗證了本方案的可行性。

        1 Zynq系統(tǒng)整體設(shè)計

        本設(shè)計使用Xilinx的ZCU102套件完成方案的測試驗證。ZCU102是面向視頻等應(yīng)用設(shè)計的套件。其具有Xilinx 16nm可編程邏輯架構(gòu)的Zynq UltraScale+ MPSOC器件,具備四核ARM Cortex A53、雙核Cortex R5F實時處理器、一個Mali -400 MP2 GPU以及HDMI等外設(shè)接口。其中,H.265編碼器在FPGA端運行;視頻數(shù)據(jù)從HDMI接口接收后輸出Native Video格式數(shù)據(jù),再經(jīng)分辨率檢測、色彩空間轉(zhuǎn)換及下采樣為YUV4∶2∶0格式后通過AXI_HP口存于PS端DDR4中;H.265編碼器讀寫DDR4中的像素數(shù)據(jù),完成視頻編碼并實時輸出碼流,碼流經(jīng)控制模塊緩存輸出至PS端DDR4中;Linux操作系統(tǒng)在PS端的ARM CortexA53核上運行,操作系統(tǒng)負責(zé)把碼流封包后通過以太網(wǎng)發(fā)送至目的IP,在目標設(shè)備上接收碼流并解碼顯示。系統(tǒng)整體框圖如圖1所示。

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

        2 Zynq PS端DDR4存儲設(shè)計

        文獻[15]采用NAND flash作為編碼數(shù)據(jù)存儲單元,可實現(xiàn)掉電不丟失數(shù)據(jù),但在實時視頻編碼過程中需要頻繁訪問存儲器。使用NAND flash會帶來更高功耗,同時相較于DDR其工作頻率也更低。本文所述方案中,編碼數(shù)據(jù)與PS端CPU操作系統(tǒng)使用同一DDR4,在保證存取效率的同時,也使DDR4存儲空間得到充分利用,降低了系統(tǒng)功耗。

        2.1 存儲器結(jié)構(gòu)分析

        Zynq芯片平臺有4個AXI_HP(High Performance)接口用于提供PL與PS存儲器之間的高吞吐量數(shù)據(jù)路徑。AXI_HP接口與存儲器之間的硬件結(jié)構(gòu)如圖2所示。PL端的IP可通過4個AXI_HP接口向PS端DDR或OCM(on-chip RAM)存儲器快速傳輸數(shù)據(jù)。

        圖2 AXI_HP與存儲器結(jié)構(gòu)圖

        為了使數(shù)據(jù)訪問更高效,本設(shè)計使用DMA傳輸?shù)姆椒?,無需CPU干預(yù)。在DDR4顆粒中,同一時間只能訪問同一bank group的一個bank,而且在此bank中只能訪問其中一行。DDR4內(nèi)存頁大小為內(nèi)存整列中一行對應(yīng)的列可尋址范圍乘以DQ位數(shù),內(nèi)存頁大小如式(1)所示。

        式中:SP為DDR4內(nèi)存頁大小,C表示內(nèi)存矩陣列地址的位數(shù),O表示DDR4 DQ位數(shù)。如果要換行或bank訪問意味著存儲器需要額外的時鐘去做片選、使能控制,這會進一步降低存儲器的訪問效率。但值得注意的是,不同bank group之間可以獨立預(yù)取8位數(shù)據(jù),同一時間不同bank group的數(shù)據(jù)預(yù)取互不影響。若將數(shù)據(jù)都存放在同一bank group中,DDR4的效率會嚴重降低。另外,DDRC總線的效率與突發(fā)讀寫長度相關(guān),適當增加突發(fā)讀寫長度,可使存儲器訪問效率得以提升。

        2.2 編碼幀數(shù)據(jù)與CPU內(nèi)存使用安排

        基于以上分析,本文把DDR存儲空間分為CPU操作系統(tǒng)核心使用部分和編碼數(shù)據(jù)緩存部分,進一步把編碼數(shù)據(jù)的兩個主要部分即待編碼圖像數(shù)據(jù)和重構(gòu)圖像數(shù)據(jù)分別存放在兩個bank group中,以減少存取延時。為了避免數(shù)據(jù)的存儲與讀取發(fā)生沖突,本文將待編碼圖像數(shù)據(jù)與重構(gòu)圖像數(shù)據(jù)都做了幀乒乓存取處理。DDR4內(nèi)存空間劃分示意如圖3所示。

        圖3 DDR4內(nèi)存空間劃分

        3 H.265硬編碼器數(shù)據(jù)存取

        H.265硬編碼器在對高清視頻編碼時會產(chǎn)生大量的中間數(shù)據(jù)。這些數(shù)據(jù)需要暫存在DDR4中。如在幀內(nèi)預(yù)測時,編碼器需要參考已編碼的塊去預(yù)測當前待編碼塊消除圖像空間冗余;同時把編碼器輸出的重構(gòu)圖像寫入DDR4緩存,供幀間預(yù)測使用。本文針對待編碼圖像與重構(gòu)圖像數(shù)據(jù)的編碼特性,設(shè)計了一套高效存取FPGA硬件框架。為了適應(yīng)不同分辨率的編碼需求,首先在視頻輸入端正確識別出當前輸入的分辨率,然后將分辨率值輸出給編碼系統(tǒng)使用。在計算分辨率的同時,圖像幀的起、止信息也包含在此模塊中。為了節(jié)省資源,不再使用額外的邏輯資源去獲取幀的同步信息,本文將模塊的幀同步信息輸出給編碼器數(shù)據(jù)存取系統(tǒng),用于控制存取幀地址的切換。

        3.1 待編碼圖像數(shù)據(jù)的存取

        本文中所述H.265編碼器編碼圖像數(shù)據(jù)為YUV 4∶2∶0格式,而本設(shè)計的HDMI接口接收到的圖像為RGB 8∶8∶8格式,故需要把接收到的視頻圖像做格式轉(zhuǎn)換,并做下采樣處理。本設(shè)計先把RGB 8∶8∶8圖像格式轉(zhuǎn)為YUV 4∶4∶4,色彩轉(zhuǎn)換如式(2)所示;再把YUV 4∶4∶4下采樣為YUV 4∶2∶2,最終把YUV 4∶2∶2下采樣為YUV 4∶2∶0后存儲到DDR4中。在編碼器做率失真優(yōu)化時,只需要用到Y(jié)亮度分量數(shù)據(jù),故把Y分量與UV分量分開存儲,這樣更方便數(shù)據(jù)讀取。

        H.265編碼器是以CTU為單位編碼的,但HDMI接收到的圖像是從左上頂點開始按行接收的。如果按行存儲輸入圖像數(shù)據(jù),那么意味著讀出CTU數(shù)據(jù)的時候?qū)⑿枰龇浅7彪s的地址映射,且需要頻繁地做內(nèi)存頁、內(nèi)存bank的跳轉(zhuǎn),這會嚴重降低DDR4的訪問效率。另外,H.265編碼器的編碼單元(Coding Unit,CU)與預(yù)測單元(Prediction Unit,PU)原始數(shù)據(jù)分開讀取,意味著在DDR4中相同地址的數(shù)據(jù)可能會被重復(fù)讀取。這無疑增加了DDR4的帶寬壓力與數(shù)據(jù)讀取延時??紤]到H.265最大支持64×64的CTU塊劃分,本設(shè)計以最大支持的CTU單位劃分存儲數(shù)據(jù),這樣可兼容編碼器在不同CTU劃分下的工作模式。按照CTU的劃分,在YUV 4∶2∶0圖像格式下亮度CTB以64×64為單位存儲,將兩個32×32色度CTB拼湊為32×64的數(shù)據(jù)塊存儲。為了隔離148.5 MHz的HDMI數(shù)據(jù)接收模塊與200 MHz寫DDR4內(nèi)存模塊的時鐘域,以及控制AXI4總線讀寫突發(fā)長度,本文在這兩模塊之間插入了兩個FIFO緩存Y、UV分量數(shù)據(jù)。從FIFO讀出的數(shù)據(jù)經(jīng)過寫地址映射模塊,把按行接收到的像素數(shù)據(jù)按照CTU劃分把數(shù)據(jù)寫入到DDR4對應(yīng)的地址上。同時,寫地址模塊還會控制圖像幀的起始地址,以此實現(xiàn)幀圖像的乒乓緩存。在讀取待編碼圖像時,使用PL端的資源例化兩個64×64的乒乓RAM,用于存儲從DDR4讀取而來的同屬于同一個CTU的CU、PU數(shù)據(jù),以此實現(xiàn)使用少量邏輯資源換取降低片外存儲器帶寬壓力與減少編碼器編碼延時的效果。待編碼圖像數(shù)據(jù)的存取如圖4所示。

        圖4 待編碼圖像數(shù)據(jù)存取結(jié)構(gòu)

        把按行輸入的圖像數(shù)據(jù)轉(zhuǎn)換成按CTU方式存儲,同時還要控制圖像幀的乒乓存儲。此過程的地址控制若按照常規(guī)的方法采用狀態(tài)機實現(xiàn),將會非常煩瑣,且消耗很多FPGA資源。本文設(shè)計了一個基于地址位操作的地址控制模塊用于實現(xiàn)讀寫數(shù)據(jù)地址控制。此模塊無需任何FIFO緩存,數(shù)據(jù)輸入后僅需兩級用于防止亞穩(wěn)態(tài)傳播的同步寄存器接收后,即可把數(shù)據(jù)給到對應(yīng)的DDR4地址上。對于8 bit×64×64的Y分量數(shù)據(jù),一共需要4 kB的存儲空間;而由UV組成的數(shù)據(jù)包8 bit×2×32×32=2 kB。本文所使用的DDR4內(nèi)存矩陣有效列地址位寬為10 bit,DQ位數(shù)為16,由式(1)可得一個內(nèi)存頁恰為2 kB,故可使用一片內(nèi)存頁存儲一個UV數(shù)據(jù)包,將64×64的Y分量分為64×32×2存放在兩片內(nèi)存頁中。此后在讀取UV分量時無需做切換內(nèi)存頁操作,讀取Y分量只需做一次頁跳轉(zhuǎn),連續(xù)內(nèi)存讀取,提升了存儲器的訪問效率。比如Y分量的存儲結(jié)構(gòu)如圖5所示。

        圖5 Y分量存儲結(jié)構(gòu)示意圖

        3.2 重構(gòu)圖像數(shù)據(jù)的存取

        編碼器對原始像素編碼后,會輸出重構(gòu)圖像供幀間編碼使用。重構(gòu)像素寫入DDR4的過程與上述待編碼圖像的存儲方法一致,而重構(gòu)圖像搜索框的讀取則相對復(fù)雜。對于圖像邊緣,需要做填充處理,重構(gòu)圖像的填充如圖6所示。對于圖像邊緣的黃色正方形區(qū)域參考相應(yīng)的頂點填充,綠色區(qū)域參考相鄰邊緣像素填充。

        圖6 重構(gòu)圖像邊緣填充

        編碼器在做預(yù)測時,相鄰編碼單元使用的搜索框數(shù)據(jù)有大量重疊部分,搜索框數(shù)據(jù)移動如圖7所示。如果不做緩存處理,每個搜索框數(shù)據(jù)都讀一遍,將會使存儲帶寬的需求成倍增加。以CU大小為16×16、Y分量讀取為例,讀取示意如圖8所示。模塊以每次突發(fā)讀64×8像素點為單位將數(shù)據(jù)從DDR4中讀出,數(shù)據(jù)存儲在80行RAM中,然后對邊緣做填充,填充完成后等待編碼器讀走64行數(shù)據(jù)。第64行數(shù)據(jù)讀完后,立即開始從DDR4中繼續(xù)讀取。數(shù)據(jù)讀出后將第1—16行RAM數(shù)據(jù)覆蓋,與此同時,第65—80行數(shù)據(jù)繼續(xù)輸出給后續(xù)模塊。因為讀DDR并填充數(shù)據(jù)的速度大于編碼器請求數(shù)據(jù)的速度,因此在編碼器請求數(shù)據(jù)時,模塊總能提前準備好所需數(shù)據(jù)。UV分量重構(gòu)像素的讀取與Y分量同理。

        圖7 搜索框數(shù)據(jù)移動示意圖

        圖8 Y分量滑動讀取示意圖

        3.3 碼流輸出

        視頻圖像經(jīng)編碼器編碼后生成8 bit位寬的碼流。為了減少對DDR4的訪問次數(shù),本文先用FIFO緩存碼流數(shù)據(jù),綜合考量FIFO資源,以1 kB大小把碼流數(shù)據(jù)寫入DDR4中。每次寫完成后產(chǎn)生一個中斷信號給CPU,CPU收到中斷信號后讀取碼流并對其RTP封包。

        4 系統(tǒng)測試結(jié)果分析

        本設(shè)計從工作頻率、AXI4突發(fā)長度、功耗、資源使用等多方面綜合考慮,進一步分析、優(yōu)化編碼器存儲系統(tǒng)的性能。AXI_HP口最大支持128 bit,系統(tǒng)以流水線方式工作。

        表1為使用不同參數(shù)時,F(xiàn)PGA硬件在vivado 2020.2軟件上采用ZCU102評估板工藝節(jié)點綜合得到的數(shù)據(jù)。由表1可知,存儲系統(tǒng)工作在器件端口最高頻率333 MHz時,僅需增加小于0.1 W的功耗即可得到更高的存儲效率。以單通道128 bit總線、333 MHz為例子估算帶寬:相鄰兩次突發(fā)讀寫之間至少需要間隔兩個clk,突發(fā)長度設(shè)置為最大256,因此其最大理論帶寬約為4.92 GB·s-1,滿足8K(7 680×4 320)30 f·s-1視頻編碼帶寬需求;寫碼流模塊時鐘設(shè)為30 MHz、數(shù)據(jù)位寬32 bit時,允許的最大理論帶寬為 120 MB·s-1,約為 0.12 GB·s-1;原始圖像、重構(gòu)圖像讀寫共4個通道,總帶寬約為14.76 GB·s-1。所使用的DDR4 2133理論最大帶寬為17 GB·s-1,故PL端存儲系統(tǒng)對DDR4內(nèi)存使用的效率可達約87.52%。

        表1 FPGA存儲系統(tǒng)實現(xiàn)結(jié)果

        為了驗證本存儲系統(tǒng)是否可在硬件上成功運行,使用實驗室自研H.265內(nèi)核搭建驗證平臺,其中各功能模塊的工作時鐘如表2所示。由于實驗室自研H.265內(nèi)核目前最高支持200 MHz,為了方便與H.265內(nèi)核進行數(shù)據(jù)交互,存儲系統(tǒng)工作時鐘設(shè)置為200 MHz。抓取存儲系統(tǒng)將數(shù)據(jù)讀給編碼器的時序波形,波形如圖9所示。64×64的數(shù)據(jù)塊僅需64個clk即可全部送給編碼器。

        表2 驗證平臺各功能模塊的工作時鐘

        圖9 編碼器讀取數(shù)據(jù)塊時序圖

        使用高清攝像頭拍攝筆記本電腦播放的測試視頻,攝像頭輸出1 080P視頻給編碼器編碼,碼流由解碼板解碼播放,編解碼效果如圖10所示。

        圖10 編解碼效果圖

        5 結(jié) 語

        本文根據(jù)H.265標準對CTU劃分、編碼時對原始像素、重構(gòu)像素和預(yù)測搜索框需求的特點以及DDR4的訪問特性,設(shè)計了一種用于H.265硬編碼的實時、高效視頻數(shù)據(jù)存取方案。CPU與編碼數(shù)據(jù)共用一套DDR4以節(jié)省硬件成本,通過降低H.265硬編碼器在高清視頻編碼時對存儲器的訪問次數(shù)和帶寬的需求,更合理安排編碼數(shù)據(jù)在DDR中的存儲,減少內(nèi)存頁跳轉(zhuǎn)訪問,提高存儲器訪問效率,減少數(shù)據(jù)存取延時,能夠自適應(yīng)輸入視頻分辨率與重構(gòu)圖像邊緣填充。在實際測試中,內(nèi)存使用效率可達 87.52%,且可滿足 8K(7 680×4 320)30 f·s-1視頻編碼帶寬需求。與文獻[13]的FPGA視頻緩存所需總功耗16.242 W相比,本文方案節(jié)省了近10 W。所提框架在ZCU102平臺上完成驗證,攝像頭采集的1 080P視頻經(jīng)編解碼后顯示正常。

        猜你喜歡
        碼流存儲器編碼器
        分布式碼流實時監(jiān)控與錄制系統(tǒng)的設(shè)計與實現(xiàn)
        數(shù)字電視TS碼流協(xié)議簡要分析
        視聽(2021年8期)2021-08-12 10:53:42
        靜態(tài)隨機存儲器在軌自檢算法
        基于FPGA的同步機軸角編碼器
        基于PRBS檢測的8B/IOB編碼器設(shè)計
        JESD204B接口協(xié)議中的8B10B編碼器設(shè)計
        電子器件(2015年5期)2015-12-29 08:42:24
        一種比較ASN.1碼流差異的方法
        存儲器——安格爾(墨西哥)▲
        多總線式光電編碼器的設(shè)計與應(yīng)用
        基于梯度的CCSDS壓縮碼流控制算法研究
        亚洲人成网站色在线入口口| 少妇邻居内射在线| 久久国产综合精品欧美| 国产在线一区二区视频免费观看 | 人妻少妇乱子伦精品| 国产午夜三级一区二区三| 国产一区二区三区韩国| 亚洲区一区二区三区四| 中国黄色一区二区三区四区| 久久精品中文字幕| 欧美饥渴熟妇高潮喷水水| 国产偷国产偷亚洲欧美高清| 日本午夜一区二区视频| 男女搞事在线观看视频| 无码人妻精品一区二区三区夜夜嗨| 国产女人高潮视频在线观看 | 在线视频精品少白免费观看| 青青草在线免费视频播放| 久久不见久久见免费影院国语| 无码人妻少妇色欲av一区二区| 色婷婷狠狠97成为人免费| 中文字幕乱码在线婷婷| 色偷偷激情日本亚洲一区二区| 欧美成人片在线观看| 免费一区啪啪视频| 日本高清不卡一区二区三区| 国产剧情av麻豆香蕉精品| 亚洲香蕉成人av网站在线观看 | 久久精品有码中文字幕1| 国产91精品一区二区麻豆亚洲 | 性感熟妇被我玩弄到高潮| 国产精品美女久久久免费| 中年熟妇的大黑p| 亚洲午夜久久久久中文字幕久| 青青草在线公开免费视频| 尹人香蕉久久99天天拍| 国产精品对白刺激久久久| 亚洲精品一区网站在线观看| 偷拍视频十八岁一区二区三区| 一 级做人爱全视频在线看| 一本加勒比hezyo无码人妻|