作者: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。
上图为 vcu encoder 和 decoder axi 合并成一个 axi 连接到 hp 后的框图
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
保障智能锁安全的因素都有哪些
研究人员发明新的机器学习方法,助力AI完成过于敏感的任务
浪潮信息长期赋能MAXIEYE实现云数据中心部署
智能魔镜显示屏的作用,让你的家变得智能感十足
变压器油中含气量标准_变压器油中含气量测定方法
VCU视频编解码设计案例介绍
虹科为振动台上的振动分析提供重要的质量保证参数
关于紫外线传感器的原理及其功能应用的详解
为什么要给 LM 加上神经网络?
如何选择合适的电池
通过手持糖度计来研究水果的成熟度与甜度
OPPO Reno2视频防抖究竟多厉害?两大技术加持只为“画面稳”
具市场分析指纹识别传感器市场发展前景可佳
如何测量信号完整性均衡后的符号间干扰
一加3氢OS发布Beta7更新内容 优化Wifi增加节省流量
三星Galaxy Fold在印尼推出,售价暂未公布
上海新阳:未受中美贸易战波及,原材料供应正常
电动机的短路试验
氟塑料耐油电缆的质量怎么样,它有哪些特性
企业微电网能效管理平台服务商安科瑞参展第23届全国医院建设大会