1AMD EV系列器件介紹
近年來(lái),隨著音視頻應(yīng)用場(chǎng)景和內(nèi)容越來(lái)越豐富,對(duì)網(wǎng)絡(luò)傳輸和存儲(chǔ)都帶來(lái)了巨大的挑戰(zhàn)。為了應(yīng)對(duì)這一挑戰(zhàn),各種視頻編解碼技術(shù)就被提了出來(lái),其中H.264/H.265視頻編解碼協(xié)議是當(dāng)前的主流視頻編解碼標(biāo)準(zhǔn)。AMD的ZYNQ MPSOC EV系列器件,是ZYNQ MPSOC集成了H.264/H.265 Video Codec Unit (VCU)硬核的一個(gè)系列器件。

▎該系列器件支持多標(biāo)準(zhǔn)編碼/解碼支持,包括:
? ISO MPEG-4第10部分:高級(jí)視頻編碼(AVC)/ITU H.264
? ISO MPEG-H第2部分:高效視頻編碼(HEVC)/ITU H.265
? HEVC:Main、Main Intra、Main10、Main10 Intra、Main 42 10、Main 42 10 Intra〔直到Level 5.1 (High Tier)〕
? AVC:Baseline、Main、High、High10、High 42、High10 Intra、High 42 Intra(直到Level 5.2)
▎支持多達(dá)32個(gè)流的同步編碼和解碼(最大聚合帶寬為3840×2160 @ 60fps)
▎低時(shí)延速率控制
▎靈活的速率控制:CBR、VBR和常量QP
▎支持分辨率高達(dá)4K UHD @ 60 Hz的同步編碼和解碼
▎支持8 K UHD(~15 Hz)的降低幀速率
2VCU IP簡(jiǎn)介
LogiCORE IP H.264/H.265 Video Codec Unit (VCU)核支持多標(biāo)準(zhǔn)視頻編碼和解碼,包括支持符合H.264標(biāo)準(zhǔn)的高效視頻編碼(HEVC)和高級(jí)視頻編碼(AVC)。這個(gè)單元可提供編碼(壓縮)和解碼(解壓縮)功能,并且能夠同時(shí)編碼和解碼。

編碼器塊簡(jiǎn)介
編碼器引擎被設(shè)計(jì)來(lái)用HEVC和AVC標(biāo)準(zhǔn)對(duì)視頻流進(jìn)行處理。它全面支持這些標(biāo)準(zhǔn),包括支持8位和10位顏色、Y-only(單色)、40和42色度格式以及高達(dá)4K UHD @ 60 Hz的性能表現(xiàn)。下圖顯示的是編碼器塊的頂層接口和詳細(xì)架構(gòu)。編碼器還包含多個(gè)全局寄存器、一個(gè)中斷控制器和一個(gè)定時(shí)器。編碼器由微控制器(MCU)子系統(tǒng)控制。

在PS上運(yùn)行的VCU應(yīng)用通過(guò)VCU control software API與編碼器微控制器進(jìn)行交互。微控制器固件(MCU Firmware)不是用戶(hù)可修改的。APU通過(guò)32位的AXI4-Lite接口來(lái)控制MCU(以配置編碼參數(shù))。兩個(gè)128位的AXI4主接口用于將視頻數(shù)據(jù)和元數(shù)據(jù)移入、移出系統(tǒng)存儲(chǔ)器。32位的AXI4主接口用于獲取MCU軟件(指令高速緩存接口)并加載或存儲(chǔ)附加的MCU數(shù)據(jù)(數(shù)據(jù)高速緩存接口)。
APU通過(guò)32位AXI4-Lite接口控制MCU,完成編碼參數(shù)配置。
兩個(gè)128位AXI4主接口負(fù)責(zé)視頻數(shù)據(jù)和元數(shù)據(jù)的系統(tǒng)存儲(chǔ)器移入與移出。
32位AXI4主接口用于獲取MCU軟件(指令高速緩存接口),并加載或存儲(chǔ)附加MCU數(shù)據(jù)(數(shù)據(jù)高速緩存接口)。
編碼器塊包含壓縮引擎、控制寄存器、中斷控制器,以及帶存儲(chǔ)器控制器的可選編碼器緩存(緩存連接可編程邏輯中的UltraRAM或BlockRAM,通過(guò)寄存器啟用)。
MCU的AXI-4主接口與解碼器的相應(yīng)AXI-4主接口多路復(fù)用,復(fù)用器輸出可用于嵌入式VCU。
解碼器塊簡(jiǎn)介
解碼器塊可處理HEVC和AVC標(biāo)準(zhǔn)視頻流,全面兼容兩項(xiàng)標(biāo)準(zhǔn),支持8位和10位顏色深度、Y-only(單色)、40及42色度格式,性能最高可達(dá)4K UHD @ 60 Hz,內(nèi)部包含多個(gè)全局寄存器、中斷控制器和定時(shí)器。

解碼器由MCU子系統(tǒng)控制,APU通過(guò)32位AXI4-Lite從接口實(shí)現(xiàn)控制MCU,相關(guān)交互邏輯與編碼器一致(APU上的VCU應(yīng)用通過(guò)賽靈思VCU Control Software API與解碼器微控制器交互,MCU不可由用戶(hù)修改)。具體接口與結(jié)構(gòu)特性如下:
兩個(gè)128位AXI4主接口負(fù)責(zé)視頻數(shù)據(jù)和元數(shù)據(jù)的系統(tǒng)存儲(chǔ)器移入與移出。32位AXI4主接口用于獲取MCU軟件(指令高速緩存接口),并加載或存儲(chǔ)附加MCU數(shù)據(jù)(數(shù)據(jù)高速緩存接口)。
解碼器塊包含H.265/H.264解壓縮引擎、控制寄存器、中斷控制器塊,以及橋接單元和一組內(nèi)部存儲(chǔ)器(橋接單元用于管理解碼器所需外部存儲(chǔ)器訪(fǎng)問(wèn)的仲裁請(qǐng)求、突發(fā)地址和突發(fā)長(zhǎng)度)。
系統(tǒng)CPU通過(guò)32位AXI-Lite從接口控制MCU,完成解碼器參數(shù)配置、視頻幀處理啟動(dòng)及狀態(tài)與結(jié)果獲取。
兩個(gè)128位AXI-4主接口負(fù)責(zé)視頻輸入數(shù)據(jù)的獲取和視頻輸出數(shù)據(jù)的存儲(chǔ)(均與系統(tǒng)存儲(chǔ)器交互)。
AXI-4主接口同時(shí)用于獲取MCU軟件,并對(duì)其他MCU數(shù)據(jù)執(zhí)行加載或存儲(chǔ)操作。
3VCU軟件架構(gòu)
視頻編解碼器單元(VCU)軟件堆棧具有軟件開(kāi)發(fā)者可在多個(gè)抽象層級(jí)進(jìn)行編程的分層架構(gòu),如下圖所示。從高層到低層的應(yīng)用接口如下所列:
GStreamer
OpenMAX Integration Layer
VCU Control Software

各層級(jí)核心說(shuō)明如下:
GStreamer是跨平臺(tái)開(kāi)源多媒體框架,提供集成多個(gè)多媒體組件、創(chuàng)建流水線(xiàn)的基礎(chǔ)架構(gòu),其支持OpenMAX Integration Layer API。
OpenMAX Integration Layer API定義了標(biāo)準(zhǔn)化媒體組件接口,助力開(kāi)發(fā)者與平臺(tái)提供商實(shí)現(xiàn)與硬件或軟件多媒體編解碼器的集成與通信。
VCU Control Software是VCU應(yīng)用開(kāi)發(fā)者可接觸的最低級(jí)軟件,所有VCU應(yīng)用均需直接或間接使用AMD提供的該軟件,其包含定制內(nèi)核模塊、定制用戶(hù)空間庫(kù)及AL_Encode和AL_Decode應(yīng)用。
4VCU Control Software介紹
VCU Control Software是VCU應(yīng)用開(kāi)發(fā)人員可接觸到的最低層級(jí)軟件。它包含定制化內(nèi)核模塊、定制化用戶(hù)空間庫(kù),以及ctrlsw_encoder和contrlsw_decoder應(yīng)用程序。
下面的流程圖詳細(xì)定義了VCU Control Software中編碼任務(wù)的執(zhí)行鏈路,明確了緩沖區(qū)管理、編碼流程控制、回調(diào)處理的協(xié)同邏輯,是開(kāi)發(fā)者理解AL_Encoder API調(diào)用時(shí)序、資源管理機(jī)制的核心參考。

左側(cè)主流程(main):涵蓋編碼器初始化(Initialize Encoder Settings)、實(shí)例創(chuàng)建(AL_Encoder_Create)、緩沖區(qū)分配(流緩沖區(qū)與源緩沖區(qū)的創(chuàng)建/入池)、數(shù)據(jù)填充、編碼處理(AL_Encoder_Process)、任務(wù)銷(xiāo)毀及資源釋放等關(guān)鍵步驟,是編碼任務(wù)從啟動(dòng)到結(jié)束的主線(xiàn)邏輯。
右側(cè)回調(diào)流程:包含Unref Source callback(源緩沖區(qū)回池)、Unref Stream callback(流緩沖區(qū)回送編碼器)、EndEncoding callback(編碼結(jié)束后的資源釋放與狀態(tài)通知),用于處理編碼過(guò)程中的異步回調(diào)與資源回收邏輯。
下面的流程圖詳細(xì)定義了VCU Control Software中解碼任務(wù)的執(zhí)行鏈路,明確了緩沖區(qū)管理、編碼流程控制、回調(diào)處理的協(xié)同邏輯,是開(kāi)發(fā)者理解AL_Decode API調(diào)用時(shí)序、資源管理機(jī)制的核心參考。

左側(cè)主流程(main):包含解碼器實(shí)例創(chuàng)建(AL_Decoder_Create)、流緩沖區(qū)分配(AL_Buffer_Create_And_Allocate或AL_Buffer_Create)、數(shù)據(jù)填充與推送(Fill one Stream Buffer、AL_Decoder_PushBuffer)、解碼結(jié)束處理(AL_Decoder_Flush、Wait End of Decoding)、實(shí)例銷(xiāo)毀及資源釋放等關(guān)鍵步驟,是解碼任務(wù)從啟動(dòng)到結(jié)束的主線(xiàn)邏輯。 右側(cè)回調(diào)流程:ResolutionFound callback:用于在識(shí)別到視頻分辨率后分配解碼緩沖區(qū)(AL_Buffer_Create_And_Allocate或AL_Buffer_Create),并將其推入解碼器(AL_Process_DisplayPicture)。 Display callback:處理解碼后幀的輸出邏輯,包含幀緩沖區(qū)判空、輸出(Output Frame Buffer)、顯示幀推送(AL_Decoder_PutDisplayPicture)及解碼結(jié)束信號(hào)通知。
5VCU Control Software開(kāi)發(fā)流程
下面以AMD VCU Control Software參考設(shè)計(jì)為例,簡(jiǎn)要介紹control software的開(kāi)發(fā)流程。該參考設(shè)計(jì)分為編碼部分和解碼部分。其中編碼部分框圖如下:

APU(四核Cortex A53)運(yùn)行Linux系統(tǒng),并搭載ctrlsw_encoder組件,負(fù)責(zé)幀緩沖區(qū)(framebuf)的寫(xiě)入緩沖控制、編碼器控制,以及比特流文件寫(xiě)入和UDP流傳輸。
RPU(實(shí)時(shí)處理單元)/Microblaze運(yùn)行裸機(jī)應(yīng)用,負(fù)責(zé)采集流水線(xiàn)的初始化,具體包括:HDMI輸入、VPSS(視頻處理子系統(tǒng))、YUV重排及幀緩沖區(qū)寫(xiě)入。解碼部分框圖如下:

APU(四核Cortex A53)運(yùn)行Linux系統(tǒng),并搭載ctrlsw_decoder組件,負(fù)責(zé)文件輸入、解碼器控制,以及混合器(Mixer)顯示緩沖區(qū)地址指針配置。
RPU(Cortex R5)運(yùn)行裸機(jī)應(yīng)用,負(fù)責(zé)顯示流水線(xiàn)的初始化,具體包括:幀緩沖區(qū)讀?。‵ramebuf read)、YUV重排、混合器(Mixer)處理及HDMI輸出。
Block Design設(shè)計(jì)
VCU配置

主要配置參數(shù)介紹
Coding Standard:選擇AVC或HEVC,AVC:H264 HEVC:H265
Coding Type:選擇要用于編碼的GOP結(jié)構(gòu)
- Intra Frame Only-僅限I幀
- Intra & Inter Frame-I幀、B幀和P幀
只有在選擇Intra和Inter Frame時(shí)才能啟用編碼器的緩存。
Resolution:選擇以下分辨率之一
- 1280×720
- 1920×1080
- 3840×2160
- 4096×2160
- 7680×4320
Frames Per Second:幀率選擇,選擇15、30、45或60 fps。在7680×4320分辨率下,只有15fps可用。
Color Format:選擇以下顏色格式之一
- 40-單色
- 40
- 42
Color Depth:選擇每通道8位或10位。
Use Encoder Buffer:選擇是否要使用編碼器緩存。只有在選擇了Intra和Inter Frame之后才能啟用編碼器的緩存。編碼器緩存通過(guò)緩存可編程邏輯中的數(shù)據(jù)來(lái)減少外部存儲(chǔ)器的帶寬,但它可能會(huì)略微降低視頻的質(zhì)量。
Memory Resource Type:選擇下列存儲(chǔ)器類(lèi)型選項(xiàng):
- URAM ONLY
- BRAM ONLY
- COMBINATION-URAM&BRAM
Max Number of Encoder Streams:選擇1到8個(gè)流。

僅當(dāng)“Basic Configuration”標(biāo)簽設(shè)置如下時(shí),系統(tǒng)才會(huì)啟用編碼器緩存的高級(jí)配置選項(xiàng):
▎“Coding Type”是“Intra & Inter Frame”
▎“Use Encoder Buffer”被選中
“Advanced Configuration”標(biāo)簽上的參數(shù)設(shè)置如下:
▎Manual Override:選擇此選項(xiàng)可覆蓋由IP集成器計(jì)算的編碼器緩存存儲(chǔ)器的大小。
▎Memory Depth (Kbytes):如果選中“Manual Override”復(fù)選框,則可以輸入0到7,000Kbyte的存儲(chǔ)器大小。
▎B Frame:選擇以下選項(xiàng)之一:
NONE-最低時(shí)延
STANDARD-GOP配置IPPP(內(nèi)部周期為30 ms)
▎Motion Vector Range:決定編碼器緩存的大?。?/p>
LOW
MEDIUM
HIGH
▎CORE Clk (MHz):選擇1-667 MHz的時(shí)鐘頻率
其余部分Block Design連接按照參考設(shè)計(jì)圖所示添加并連接。

手動(dòng)添加頂層封裝文件zcu106_hdmirx_wrapper.v和約束文件vcu_hdmirx.xdc。只需點(diǎn)擊“Generate Bitstream”按鈕生成比特流。比特流生成完成后,選擇“File->Export->Export Hardware”,導(dǎo)出供Vitis和Petalinux使用的XSA文件,注意需勾選“include bitstream”(包含比特流)選項(xiàng)。
Vitis流程
1、先使用之前從Vivado生成的XSA文件創(chuàng)建一個(gè)新平臺(tái)。并添加新的應(yīng)用項(xiàng)目名稱(chēng)(例如r5_hdmirx_yuv444),然后選擇psu_cortexr5_0作為該應(yīng)用項(xiàng)目的目標(biāo)處理器。

2、修改R5的BSP設(shè)置,將uart1配置為標(biāo)準(zhǔn)打印輸出。
3、將R5的源代碼復(fù)制到src文件夾中。
4、右鍵點(diǎn)擊r5_hdmirx_yuv444_system,選擇“Build Project”,此步驟會(huì)生成 r5_hdmirx_yuv444.elf文件,該文件將用于Petalinux打包。
Petalinux流程
1、使用xilinx-vcu-zcu106-v2020.2-final.bsp創(chuàng)建Petalinux項(xiàng)目,具體可參考鏈接:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/176914576/Zynq+UltraScale+MPSoC+VCU+TRD+2020.2+-+Run+and+Build+Flow
$ petalinux-create -t project -s xilinx-vcu-zcu106-v2020.2-final.bsp
2、在新建的Petalinux項(xiàng)目目錄下,創(chuàng)建一個(gè)名為XSA的文件夾(示例),將之前從Vivado生成的.xsa文件復(fù)制到該文件夾中,然后通過(guò)該xsa文件配置Petalinux項(xiàng)目。
$ petalinux-config --get-hw-description=./XSA
3、進(jìn)入配置界面后,在“Subsystem AUTO Hardware Settings”(子系統(tǒng)自動(dòng)硬件設(shè)置)中,選擇“Memory Settings”(內(nèi)存設(shè)置),將系統(tǒng)內(nèi)存大?。⊿ystem Memory Size)設(shè)置為0x6FFFFFFF。

4、由于hdmirx、vphy、frmbuf_wr和vproc_ss等組件是在r5驅(qū)動(dòng),所以需要在petalinux設(shè)備數(shù)中將這些節(jié)點(diǎn)刪除。

5、編譯petalinux工程
$ petalinux-build
6、打包生成BOOT.bin文件,執(zhí)行命令:
$ petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --add r5_hdmirx_yuv444.elf --cpu=r5-0
至此,我們即完成了編碼端的開(kāi)發(fā)流程,解碼端開(kāi)發(fā)流程也和編碼端類(lèi)似。
關(guān)于安富利
安富利是全球領(lǐng)先的技術(shù)分銷(xiāo)商和解決方案提供商,在過(guò)去一個(gè)多世紀(jì)里一直秉持初心,致力于滿(mǎn)足客戶(hù)不斷變化的需求。通過(guò)遍布全球的專(zhuān)業(yè)化和區(qū)域化業(yè)務(wù)覆蓋,安富利可在產(chǎn)品生命周期的每個(gè)階段為客戶(hù)和供應(yīng)商提供支持。安富利能夠幫助各種類(lèi)型的公司適應(yīng)不斷變化的市場(chǎng)環(huán)境,在產(chǎn)品開(kāi)發(fā)過(guò)程中加快設(shè)計(jì)和供應(yīng)速度。安富利在整個(gè)技術(shù)價(jià)值鏈中處于中心位置,這種獨(dú)特的地位和視角讓其成為了值得信賴(lài)的合作伙伴,能夠幫助客戶(hù)解決復(fù)雜的設(shè)計(jì)和供應(yīng)鏈難題,從而更快地實(shí)現(xiàn)營(yíng)收。
-
amd
+關(guān)注
關(guān)注
25文章
5686瀏覽量
140010 -
編解碼器
+關(guān)注
關(guān)注
0文章
286瀏覽量
25405 -
音視頻
+關(guān)注
關(guān)注
4文章
594瀏覽量
31393 -
VCU
+關(guān)注
關(guān)注
17文章
86瀏覽量
21580
原文標(biāo)題:AMD技術(shù)干貨|AMD EV系列器件VCU Control Software簡(jiǎn)介
文章出處:【微信號(hào):AvnetAsia,微信公眾號(hào):安富利】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【AMD】BIOS Engineer
【AMD】BIOS Engineer
AMD超威半導(dǎo)體熱招 Senior Multi Media Diagnostics Software Engineer
【AMD社招】Graphics Driver Software Engineer
VCU(整車(chē)控制器)簡(jiǎn)介
AMD發(fā)布Radeon Software Adrenalin 21.10.3版驅(qū)動(dòng)
AMD Software:Adrenalin Edition 2022版本發(fā)布
MPSoC VCU Ctrl-SW 2020.2編碼不同Stride的YUV文件
P_數(shù)據(jù)表(S-1):HEV/EV Motor Control IP MILS Models
P_數(shù)據(jù)表(S-1):HEV/EV Motor Control IP MILS Models
AMD EV系列器件VCU Control Software簡(jiǎn)介
評(píng)論