作者:Ricky Su
現(xiàn)有參考資料
- VCU TRD 2018.1, UG1250
- UG252
- gstreamer: https://gstreamer.freedesktop.org/
邏輯設(shè)計(jì)
1. 通過(guò) Vivado 內(nèi)置的 ZCU106 模板建立一個(gè)新工程
2. 添加 PS: ZYNQ UltraScale+ MPSoC
3. 添加 VCU: ZYNQ UltraScale+ VCU
4. 點(diǎn)擊上方綠色條形中的 Run Block Automation, 先做 MPSoC,后做 VCU,Vivado 會(huì)自動(dòng)進(jìn)行連接
5. Generate Bitstream
6. Export Design,選擇將 Bit 打包進(jìn) HDF
說(shuō)明
1. VCU 模塊在PL側(cè),一共有五個(gè)AXI接口,它們分別是兩個(gè) Encoder AXI,兩個(gè) Decoder AXI, 和一個(gè) MCU AXI。兩個(gè) Encoder/Decoder 的 AXI 接口必須都連接到 MPSoC PS,即使只用一路編碼,或者一路解碼。運(yùn)行時(shí)使用哪個(gè)引擎是 MCU 控制的,外界無(wú)法干預(yù)。
2. Block Automation 會(huì)將他們分別接在 PS 的多個(gè) HP 和 HPC 通道上,以保證有足夠的帶寬。這里用到的 HPC 接口,其實(shí)沒(méi)有使用其中的 Coherent 功能,還是當(dāng)作普通 HP 來(lái)使用的。
3. 通過(guò)雙擊 VCU IP,在界面中可以進(jìn)行內(nèi)存帶寬的預(yù)估。如果進(jìn)行分辨率比較低的編解碼,或者編解碼路數(shù)比較少,對(duì)內(nèi)存帶寬的需求較低,可以將多路 AXI 通過(guò)一個(gè) AXI Interconnect 合成一個(gè)或兩個(gè) AXI Interface,接到 HP 通道上。這樣可以節(jié)省 HP 通道,以備其他需要使用 PS DDR 的邏輯 IP 使用。
4. 如果將 VCU AXI 通過(guò) AXI Interconnect 合并,最多是 4:1, 因?yàn)?VCU 的 AXI ID 寬度是4,通過(guò) AXI Interconnect 合并 AXI 需要增加 AXI ID 位寬。 而 HP 的最大 AXI ID 只支持 6 位。
5. VCU 輸入時(shí)鐘盡量使用片外時(shí)鐘,保證較小的 Jitter。
PetaLinux
1. petalinux-create -t project --template zynqMP -n petalinux; cd petalinux 建立工程
2. petalinux-config --get-hw-description=
3. petalinux-config -c rootfs 增加 packagegroup-petalinux-gstreamer。 gstreamer 是用于驅(qū)動(dòng) VCU 的軟件組件。
4. petalinux-build 生成各組件。
5. cd images/linux; petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --fpga xx.bit 請(qǐng)將 xx.bit 替換為這個(gè)目錄下 bit 的文件名。
說(shuō)明
packagegroup-petalinux-gstreamer 具體包含哪些內(nèi)容,可以在它的描述中看到
#
GSTREAMER_PACKAGES = " /
gstreamer1.0 /
gstreamer1.0-meta-base /
gstreamer1.0-plugins-base /
gstreamer1.0-plugins-good /
gstreamer1.0-plugins-bad /
gstreamer1.0-omx /
gstreamer1.0-rtsp-server /
運(yùn)行
1. 將 images/linux 目錄下的 BOOT.BIN 和 image.ub 拷貝到 SD 卡。
2. 將 ZCU106 設(shè)置為從 SD 卡啟動(dòng): SW6[1:4] = ON, OFF, OFF, OFF,上電啟動(dòng)
3. 連接串口,Interface 0
4. Login: root, password: root
5. Mount SD 卡: mount /dev/mmcblk0p1 /mnt
6. 嘗試從 MP4 文件解碼: gst-launch-1.0 filesrc location=xx.mp4 ! qtdemux ! h264parse ! omxh264dec ! queue max-size-bytes=0 ! filesink location=yy.yuv
7. 嘗試從 RAW YUV Video 文件編碼為 MP4: gst-launch-1.0 filesrc location=xx.yuv ! videoparse format=nv12 width=WW height=HH framerate=20/1 ! omxh264enc ! queue ! h264parse ! mp4mux ! filesink location=yy.mp4
播放編解碼后視頻文件
1. 測(cè)試播放 RAW Video: 在 PC 上安裝 ffmpeg,運(yùn)行指令 ffplay -f rawvideo -pixel_format nv12 -video_size WWxHH -i xx.yuv。WW為寬度,HH為高度。因?yàn)?RAW Video 中沒(méi)有視頻信息,這些參數(shù)都需要手工輸入。
2. MP4 視頻可以用任意播放器播放。
測(cè)試版本
Vivado: 2018.1, 2018.2
FFMPEG: ffmpeg-20180708-3a2d21b-win64-static
-
mcu
+關(guān)注
關(guān)注
146文章
16898瀏覽量
349932 -
視頻編解碼
+關(guān)注
關(guān)注
2文章
54瀏覽量
11723 -
AXI
+關(guān)注
關(guān)注
1文章
127瀏覽量
16576 -
VCU
+關(guān)注
關(guān)注
17文章
80瀏覽量
20407
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論