FPGA:zcu102学习笔记(参考自xing见博客)

1,概述

         有一个计划是打算做一个摄像头的驱动与显示。

   

       但是实际上手上只有一个zcu102开发板,没有摄像头,也没有上位机,自己也不会写。所以就将方案阉割成将录制好的视频放在SD卡里面,然后从SD卡里面读出视频来代替采集的数据。然后通过HDMI接口显示,这样就不用摄像头,也不用上位机了。这大概就是理想与显示的区别吧。这两天在研究HDMI 接口,就把官网上的DEMO跑了一下,先做个笔记

       值得注意的是,这个IP核是收费的,可以在xilinx 官网申请一个120天的试用的license。申请的license会与你的电脑IP绑定

2.新建VIVDDO工程

      1。打开vivado 软件,新建一个工程,建好工程后,打开IP catalog,搜索HDMI,选择HDMI 1.4/2.0 Transmitter Subsystem.

       

      2.双击IP核框图,将example design界面下面的design topology选择Tx Only.(为什么选择这个,不选择 pass through?因为我没有HDMI信号源,没办法产生数据啊,就只好选择这个,让他自己产生数据了。在它的example design里面,有个TPG module,可以自己产生彩色条纹数据)。其他选择默认就好,不用改。

       

       3.右键点击block design 下面的design里面的IP核名称,选择open ip example design.打开的example 框图如下

      

     4.点击generation bitstream.这个过程大概要半个小时左右。

     5.bit流生成后,点击file -> export -> export hardware。勾选include bitstream

     6.点击file -> launch sdk

     7.SDK工具打开之后,选择,file -> new ->Board Support Package.然后什么都不用该,选择finnish, 然后选择OK.

     8.在SDK工具的主界面上,system.mss tab将会被打开。在system.mss将会有一个名为Peripheral Drivers的部分。从Peripheral Drivers列表中,找到HDMI 1.4/2.0 Transmitter Subsystem driver (v_hdmi_tx_ss)并单击Import example。选择TxOnly_A53.(对应于刚刚新建IP核时选择的Tx Only 操作)

     9.右键点击window -> show view -> other ->terminal -> terminal.打开。然后配置响应的串口

      

     注意,由于申请的license是不支持HDCP功能的,所以在创建IP核的时候,HDCP选项是灰色的,不能选。所以后面的HDCP的配置也不用了。

3.在A53上驱动参考工程

      1.打开Start > All Programs > Xilinx Designols > Vivado 2018.2 > Vivado 2018.2 Tcl Shell.

      2.按顺序输入如下命令:

         1. 更改到示例设计项目目录

                   Vivado%  cd ./<IP instance name>_ex

         2. 调用Xilinx系统调试器(xsdb)

                   Vivado%  xsdb

         3. 建立与调试目标的连接

                   xsdb%  connect

         4. 列出所有可用的JTAG目标

                   xsdb%  targets

                   

         5. 下载比特流到FPGA                

      xsdb% targets -set 4 (PSU)

      xsdb% rst -system

      xsdb% after 3000

      xsdb% target -set 3 (PL)

      xsdb% fpga -file ./<IP instance name>_ex.runs/impl_1/exdes_wrapper.bit

   6.设置目标处理器。

      xsdb% target -set 8 (APU)

      xsdb% source ./<IP instance name>_ex.sdk/exdes_wrapper_hw_platform_0/psu_init.tcl

      xsdb% psu_init

      xsdb% after 1000

      xsdb% psu_ps_pl_isolation_removal

      xsdb% after 1000

      xsdb% psu_ps_pl_reset_config

      xsdb% catch {psu_protection}

      xsdb% target -set 9 (Cortex-A53 #0)

      xsdb% rst -processor

   7.下载software.elf到FPGA  

      xsdb% dow ./<IP instance name>_ex.sdk/<name of bsp>_xhdmi_example_zynq_us_1/Debug/<name of bsp>_xhdmi_example_zynq_us_1.elf

   8.运行软件

      xsdb% con。

    这时候,打开SDK软件,在下面的terminal 1窗口可以看到串口打印出来的信息

    

    这时候,看你的hdmi显示屏,会看到彩色条纹。并伴有嘀,嘀,嘀。。。的声音。这是因为它这个自带的design example同时产生了彩色条纹数据和音频数据,然后经过HDMI tx module整合成一个hdmi流显示出来。下一步的实验就是在这个example中,把音频数据去掉。只显示图像数据。

    9.退出XSDB命令提示符。

       xsdb% exit

 

    注意:在进行该实验的时候,要把zcu102开发板的模式调试QSPI模式。

    说明:以上步骤根据PG235 数据手册,结合自己的实际情况做出了一点修改得来的。

 

 

1.改进概述

      上篇说到,调用跑HDMI IP核自带的design example,跑出来的结果是显示屏显示彩条,并伴有嘀,嘀,嘀。。。的声音。因为在实际项目中,我们只需要图像,不需要声音的,所以我要把声音给去掉。现在就做个笔记记录一下。

2.vivado工程修改

      1.将上篇文章里面的HDMI IP 核的design example 工程打开。点击 open block design,会显示出结构框图。在结构框图中会看到audio_ss_0这个结构如下

          

     点击它左上角的“+”号,会展开它里面的组成部分,如下。这些就是产生那个嘀,嘀,嘀。。。声音的来源,我们要把这些删掉。

      

     2.直接将audio_ss_0这个结构删掉,然后将v_hdmi_tx_ss模块的s_axis_audio_aclk连接到s_axi_cpu_aclk。

     3.因为我们把audio_ss_0这个结构删掉了,所以我们要把他的两个约束文件修改一下,就是把删掉的管脚的约束屏蔽掉,不然会报严重的warning.其实步修改也没啥影响。

         

        把上图中的AudioGen.xdc 和 hdmi_acr_ctrl.xdc里面的内容全部屏蔽掉就好了。

        到这vivado工程就修改完了。

        然后就是像上文一样,首先生成bitstream文件,然后file -> export -> export hardware,勾选include bitstream. 接着 file -> launch SDK.

3.SDK工程修改

       SDK工程打开之后,还是像上文一样

       1.file -> new ->Board Support Package.然后什么都不用该,选择finnish, 然后选择OK.

       2.在SDK工具的主界面上,system.mss tab将会被打开。在system.mss将会有一个名为Peripheral Drivers的部分。从Peripheral Drivers列表中,找到HDMI 1.4/2.0 Transmitter Subsystem driver (v_hdmi_tx_ss)并单击Import example。选择TxOnly_A53.

       3.这时候,在SDK工具主界面的左侧的Project explorer 下面的standalone_bsp_0_TxOnly_A53_1文件夹。在他下面有个src文件夹,并且是带有红色的“x”的。也就是说有错误。

       4.打开那个提示错误的文件(xhdmi_memu.c),定位到提示错误的那一行,然后把提示错误的那几行全注释掉就好了,对,就是这么简单粗暴。

          

          5.后面的就全跟上文一样,在A53上驱动参考程序,把哪些命令再敲一遍就好了。

         下一步工作想试着把那个彩色条纹的数据改成我自己想要的数据,估计有点难度。

         最后附上一个效果图:说明,下图中屏幕上的白色区域是反光造成的。

         

 

 

参考自xing见博客:https://www.cnblogs.com/xingjian92/p/9871445.html#commentform#undefined

在此表示由衷感谢!

<think>好的,用户想要查找关于FPGA ZCU102和Vivado的开发资料或解决方案,特别是教程、配置指南和项目示例。首先,我需要回想之前提供的引用内容,看看有没有相关的信息。引用1提到了ZCU106开发板的MIPI摄像头示例程序移植,虽然用户现在关注的是ZCU102,但可能类似的方法适用。引用2和3则涉及ZCU102HDMI示例和AXI_LITE实验,这些可能对用户有帮助。 用户可能需要基础的配置指南,比如如何在Vivado中创建项目,配置ZCU102的硬件,以及如何导出到SDK进行软件开发。引用3中的helloworld.c示例代码展示了如何通过AXI-LITE接口控制LED和读取按钮状态,这可能是一个有用的项目示例。此外,引用2提到了使用xsdb下载ELF文件到开发板,这也是开发流程的一部分。 接下来,我应该整理出结构清晰的步骤,涵盖从环境搭建到具体项目示例。需要确保每个步骤都有具体的操作指导,并引用相关的参考资料。例如,创建Vivado项目时可以参考引用1中的移植思路,尽管是针对ZCU106的,但流程类似。硬件配置部分可以引用2中的HDMI示例和引用3的AXI-LITE实验。 另外,用户可能需要常问题的解决方法,比如时钟配置或外设驱动问题,引用中的示例可能提供了相关的线索。最后,生成相关问题时要围绕用户可能的后续需求,比如性能优化、外设扩展和高级应用,这些都可以基于现有的引用内容来设计。</think>### FPGA ZCU102 Vivado开发指南 #### 一、开发环境配置 1. **软件准备** - 安装Vivado Design Suite 2021.1或更新版本(需包含Vitis统一开发平台) - 下载ZCU102板级支持包(BSP)[^2] - 配置License文件(包含Zynq UltraScale+ MPSoC相关IP) 2. **硬件连接** ```tcl # Vivado Tcl命令查看设备连接 connect_hw_server open_hw_target ``` #### 二、基础项目搭建(以AXI-LITE实验为例) 1. **创建Vivado工程** - 选择ZCU102开发板预设文件(`xczu9eg-ffvb1156-2-i`) - 添加AXI-Lite IP核(参考引用[3]的从机接口设计) 2. **硬件配置** ```verilog // AXI-Lite从机接口定义示例 module slave_axi_lite_v1_0 #( parameter C_S_AXI_DATA_WIDTH = 32, parameter C_S_AXI_ADDR_WIDTH = 4 )( input wire S_AXI_ACLK, input wire S_AXI_ARESETN, // AXI-Lite接口信号... ); ``` 通过Block Design连接PS和PL部分[^3] 3. **软件工程开发** ```c // Vitis中的基础控制代码(引用[3]修改版) Xil_Out32(XPAR_MY_AXI_LITE_0_BASEADDR, 0x1); // LED控制 uint32_t sensor_data = Xil_In32(XPAR_SENSOR_IP_BASEADDR); // 传感器读取 ``` #### 三、典型项目示例 1. **HDMI视频处理(引用[2]扩展)** ```python # 生成视频时序的Python模型(用于PL验证) def generate_timing(h_total, v_total): h_count = 0 v_count = 0 while True: yield (h_count, v_count) h_count = (h_count + 1) % h_total if h_count == 0: v_count = (v_count + 1) % v_total ``` 2. **MIPI摄像头移植要点(基于引用[1]方法)** - 修改约束文件中Bank电压等级: ```xdc set_property IOSTANDARD LVDS_25 [get_ports cam_clk] ``` - 重新配置时钟网络(ZCU102ZCU106的时钟架构差异) #### 四、调试技巧 1. **硬件调试** ```tcl # 在Vivado Hardware Manager中读取寄存器 read_hw_reg [get_hw_regs reg_0x1234] ``` 2. **性能分析** $$ T_{exec} = N_{cycles} \times t_{clk} + T_{setup} $$ 其中$t_{clk}$为系统时钟周期,$T_{setup}$为外设初始化时间[^2] #### 五、开发资源推荐 1. Xilinx官方文档: - UG1182: Zynq UltraScale+ MPSoC Embedded Design Tutorial - UG1209: ZCU102 Evaluation Board User Guide 2. 扩展IP核库: - AXI Video Direct Memory Access (VDMA) - Video Processing Subsystem
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值