zoukankan      html  css  js  c++  java
  • xilinx zcu106 vcu demo

    board:zcu106

    tool: vivado 2019.2   vitis 2019.2   petalinux 2019.2

    doc:PG252 UG1209

    ref:http://www.zynqnotes.com/a-simple-vcu-design

    ref:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/176783395/Zynq+UltraScale+MPSoC+VCU+TRD+2019.2

    zcu106_hdmitx

    想demo一个简单的例子,编解码SD卡上的数据,在PC上验证是否成功

    • 逻辑设计:

    vivado 2019.2

    1. 新建工程(采用zcu106模板)
    2. 添加PS:ZYNQ UltraScale+ MPSoC (Run Block Automation),可以将zcu106默认的一些器件都自动配置好,这一步不要忘
    3. 添加VCU:ZYNQ UltraScale+ VCU (Run Block Automation)

    PG252 Ch12 Design Flow Steps (P149)可以大概参考一下,可是照着做好像不行。

    VCU有6个AXI接口

    S_AXI_LITE:APU主,VCU从,用于APU访问配置VCU寄存器

    M_AXI_ENC0,M_AXI_ENC1,M_AXI_DEC0,M_AXI_DEC1,M_AXI_MCU(32bit 其余128bit):VCU主,system memory从,VCU从memory取video数据和MCU软件

    还有vcu_resetn 复位 vcu_host_interrupt 中断 还有AXI要连接一个时钟信号,已经整个vcu有一个参考时钟 pll_ref_clk

    上面这些对外管脚都要连接到APU上。

       

      4.配置 Zynq UltraScale+ MPSoC

    使能 AXI slave interfaces, clocking, 和PL-PS interrupt 

     

    5.用connection automation 连接 S_AXI_LITE interface of VCU IP to the M_AXI_HPM0_LPD interface.

    会自动加入processor system reset和AXI interconnect

    6.手动连接AXI,中断,复位和时钟等信号

            

     复位和时钟参考zcu106_hdmitx,复位最开始采用PG252方式,用了一个constant,可以生成位流,但是启动kernel时候会报错(reset没有定义之类)

    所以参考zcu106_hdmitx,从EMIO拉了reset到VCU,slice配置见下图

     

     加入clocking wizard,配置如下图:

    参考zcu106硬件原理图zcu106-schematic-xtp469

    输入时钟配置为差分,300MHz。

    输出时钟clk_out1--33.33MHz,连接至VCUpll_ref_clk,clk_out2--200MHz,连接至mspoc和VCU的AXI的aclk。

    完整连线见下图:

    7.自动分配地址(点击红框中的自动分配地址)

    对于PS端,可访问vcu的寄存器,地址为0x00_A000_0000 - 0x00_A000_FFFF

    VCU做为主,访问DDR,可访问空间为

    0x000_0000_0000 - 0x000_7FFF_FFFF

    0x008_0000_0000 - 0x00F_FFFF_FFFF

    还有OCM QSPI,这里都是自动分配好了,我还要花点时间理解一下。(可以看一下https://www.eefocus.com/antaur/blog/17-08/423773_0818c.html

    8.Validate Block Design

    9.Generate Output Products   生成Diagram Block Design的HDL源文件以及相应端口癿约束文件。

     10.Create HDL Wrapper  

     11.添加约束文件

    File-->add sources--> add or create constraints--> create file (zcu106_vcu.xdc)

    内容如下:

    set_property PACKAGE_PIN AH12 [get_ports {si570_user_clk_p}]
    set_property IOSTANDARD LVDS [get_ports {si570_user_clk_p}]

    12.Run Synthesis

    13.Run Implementation

    14.Generate Bitstream

    至此,vivado部分工作已经完成,生成了bit流

    • petalinux部分

    vcu trd 下载了 rdf0428-zcu106-vcu-trd-2019-2 

    rdf0428-zcu106-vcu-trd-2019-2apuvcu_petalinux_bsp里有bsp

    将xilinx-vcu-zcu106-v2019.2-final.bsp拷贝到ubuntu中

    1. petalinux-create -t project -s ../xilinx-zcu106-v2019.2-final.bsp

    2. cd ./xilinx-vcu-zcu106-v2019.2-final

    将vivado生成的zcu106_vcu_wrapper.xsa copy到zcu106_vcu.hw 然后传到ubuntu的xilinx-vcu-zcu106-v2019.2-final中

    3. petalinux-config --get-hw=./zcu106_vcu.hw   #参考UG1209设置为SD启动 P48

    4. vim ./project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

    加入以下部分:

    &sdhci1 {
    no-1-8-v;
    }; 

    &vcu_0 {
    reset-gpios = <&gpio 119 0>;
    };

    为了fix sd mount error和加入vcu reset (No reset gpio info from dts for vcu)

    5. petalinux-config -c rootfs   增加 packagegroup-petalinux-gstreamer。 gstreamer 是用于驱动 VCU 的软件组件。

    6. git clone git://anongit.freedesktop.org/gstreamer/common (编译过程中会报错 所以手动下载 具体依报错信息拷贝到相应目录)

    7. petalinux-build

    8. cd ./images/linux/

    9. petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --force --fpga zcu106_vcu_wrapper.bit

      

    • 运行
    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=/mnt/sun_xuan.mp4 ! qtdemux ! h264parse ! omxh264dec ! queue max-size-bytes=0 ! filesink location=./sun_xuan.yuv
    • 播放编解码后的视频文件

    在 PC 上安装 ffmpeg,运行指令 ffplay.exe -f rawvideo -pixel_format nv12 -video_size 640x360 -i suan_xuan.yuv

  • 相关阅读:
    jenkins系列---【linux安装nodejs】
    jenkins系列---【jenkins+gitlab+springCloud实现CI和CD】
    jenkins系列---【jenkins创建账号、分配角色】
    idea系列---【启动的时候报:Error running FinanceApplication. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun】
    ubuntu apt-get install xxx时一直报错E: Unable to locate package xxxxxxx
    mysql binlog 使用
    python项目导出所需要的依赖库
    mysql 导入sql文件时编码报错
    mysqldumps 远程备份
    pymongo的基本使用
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/12809821.html
Copyright © 2011-2022 走看看