作者:Ricky Su
現有參考資料
- VCU TRD 2018.1, UG1250
- UG252
- gstreamer: https://gstreamer.freedesktop.org/
邏輯設計
1. 通過 Vivado 內置的 ZCU106 模板建立一個新工程
2. 添加 PS: ZYNQ UltraScale+ MPSoC
3. 添加 VCU: ZYNQ UltraScale+ VCU
4. 點擊上方綠色條形中的 Run Block Automation, 先做 MPSoC,后做 VCU,Vivado 會自動進行連接
5. Generate Bitstream
6. Export Design,選擇將 Bit 打包進 HDF
說明
1. VCU 模塊在PL側,一共有五個AXI接口,它們分別是兩個 Encoder AXI,兩個 Decoder AXI, 和一個 MCU AXI。兩個 Encoder/Decoder 的 AXI 接口必須都連接到 MPSoC PS,即使只用一路編碼,或者一路解碼。運行時使用哪個引擎是 MCU 控制的,外界無法干預。
2. Block Automation 會將他們分別接在 PS 的多個 HP 和 HPC 通道上,以保證有足夠的帶寬。這里用到的 HPC 接口,其實沒有使用其中的 Coherent 功能,還是當作普通 HP 來使用的。
3. 通過雙擊 VCU IP,在界面中可以進行內存帶寬的預估。如果進行分辨率比較低的編解碼,或者編解碼路數比較少,對內存帶寬的需求較低,可以將多路 AXI 通過一個 AXI Interconnect 合成一個或兩個 AXI Interface,接到 HP 通道上。這樣可以節省 HP 通道,以備其他需要使用 PS DDR 的邏輯 IP 使用。
4. 如果將 VCU AXI 通過 AXI Interconnect 合并,最多是 4:1, 因為 VCU 的 AXI ID 寬度是4,通過 AXI Interconnect 合并 AXI 需要增加 AXI ID 位寬。 而 HP 的最大 AXI ID 只支持 6 位。
5. VCU 輸入時鐘盡量使用片外時鐘,保證較小的 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 是用于驅動 VCU 的軟件組件。
4. petalinux-build 生成各組件。
5. cd images/linux; petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --fpga xx.bit 請將 xx.bit 替換為這個目錄下 bit 的文件名。
說明
packagegroup-petalinux-gstreamer 具體包含哪些內容,可以在它的描述中看到
#
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 /
運行
1. 將 images/linux 目錄下的 BOOT.BIN 和 image.ub 拷貝到 SD 卡。
2. 將 ZCU106 設置為從 SD 卡啟動: SW6[1:4] = ON, OFF, OFF, OFF,上電啟動
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. 測試播放 RAW Video: 在 PC 上安裝 ffmpeg,運行指令 ffplay -f rawvideo -pixel_format nv12 -video_size WWxHH -i xx.yuv。WW為寬度,HH為高度。因為 RAW Video 中沒有視頻信息,這些參數都需要手工輸入。
2. MP4 視頻可以用任意播放器播放。
測試版本
Vivado: 2018.1, 2018.2
FFMPEG: ffmpeg-20180708-3a2d21b-win64-static
-
mcu
+關注
關注
146文章
17301瀏覽量
352131 -
視頻編解碼
+關注
關注
2文章
54瀏覽量
11786 -
AXI
+關注
關注
1文章
128瀏覽量
16678 -
VCU
+關注
關注
17文章
82瀏覽量
20602
發布評論請先 登錄
相關推薦
評論