news 2026/3/27 0:44:05

项目开发中常用的Vivado软件调试技巧(一)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
项目开发中常用的Vivado软件调试技巧(一)

技巧一: 高效利用高速采样时钟采样低频数据

在项目中,利用JTAG采样低频数据时,受限于片上BRAM资源,采样的数据深度不能太深;另外,通常会受限于JTAG仿真器时钟也不能设置太低频率(如图1所示),所以对于低频数据进行调试或者排查偶发故障需要多次抓取故障附近数据时,简单采用如图2所示触发方式,只能在①处触发条件时采样一个重复很多次的"H"数据,不能采集到完整的串口指令,不方便调试问题。

图1:JTAG clock频率设置

图2:默认简单触发条件设置

因此,在利用高频时钟采样低频数据时,可以在图3所示,在①处Nuber of windows采样窗口设置40个,即将2048个采样深度分为40段,每段满足④处触发条件时,都会采样数据,这样就可以删除大量重复数据,得到我们想要观察的完整串口通信指令。

图3:采用多段触发采样

技巧二:选择合适的ILA核端口例化参数方式

在利用ILA核调试Verilog代码时,有时需要观察的信号非常多,调试过程中还要不断修改要观察的信号,如果采用如图4所示方式,需要不断修改ILA核信号位宽,以满足要观察的信号,不便于调试。

图4:ILA核调用方式1

这时,可以利用如图5所示方式,ILA核port设置为1个,观察信号位宽设置为较宽值,方便添加或修改要观察的信号,而无需每次修改ILA核设置。

图5:ILA核调用方式2

注意:在使用图5所示ILA核方式调试时,如果触发逻辑设置为如图6所示,<,<=,>,=>时,软件将产生错误,如图7所示,这种情况下可以使用图4所示调用方式。

图6:ILA核调用方式2触发逻辑选择

图7:ILA核调用方式2触发错误情况

技巧三:Vivado中未分配管脚IO不检查约束设置

在顶层文件FPGA外部接口有时会添加一些调试IO口,这些IO口如果不分配管脚约束,Vivado软件编译检查IO约束时就会报错,此时可以在.xdc文件中添加以下语法,跳过未分配IO语法检查。

set_property SEVERITY {Warning} [get_drc_checks NSTD-1]

set_property SEVERITY {Warning} [get_drc_checks RTSTAT-1]

set_property SEVERITY {Warning} [get_drc_checks UCIO-1]

技巧四:压缩比特流文件,提高Flash下载速度

FPGA编译后的程序往往较大,通过压缩,可以减少比特流文件大小,提到下载速度快,加载速度更快。在约束文件中可以增加以下约束:

set_property BITSTREAM.GENERAL.COMPRESS true [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]

需要注意的是:设置Flash配置速度、位宽、时钟加载沿仅对FPGA有用,ZYNQ SOC不支持。


欢迎关注FPGA技术实战公众号,喜欢就多多转发吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/11 20:28:11

如何挑战自己的分析,避免他人挑战

原文&#xff1a;towardsdatascience.com/how-to-challenge-your-own-analysis-so-others-wont-b3745919d098?sourcecollection_archive---------2-----------------------#2024-07-03 掌握合理性检查的艺术&#xff0c;提升你的工作质量 https://medium.com/twalbaum?sourc…

作者头像 李华
网站建设 2026/3/16 17:37:02

使用HID进行固件升级(DFU模拟):创新方案实战

用HID玩转固件升级&#xff1a;不靠Bootloader的轻量级DFU实战你有没有遇到过这样的场景&#xff1f;一款基于STM32G0的小型IoT传感器节点&#xff0c;Flash只有64KB。为了支持远程维护&#xff0c;团队想加入固件升级功能。但传统的双Bank DFU方案光是Bootloader就占了12KB&am…

作者头像 李华
网站建设 2026/3/22 21:38:16

快速理解虚拟串口软件:安装前必须知道的5件事

虚拟串口不是“装上就能用”——工程师踩坑前必须搞懂的5个硬核真相你有没有遇到过这种情况&#xff1a;调试一个Modbus从设备&#xff0c;手头只有笔记本电脑&#xff0c;连个RS-232接口都没有&#xff1f;或者远程客户现场的PLC突然通信中断&#xff0c;你却没法亲自插根串口…

作者头像 李华
网站建设 2026/3/23 1:16:24

数据库性能优化实战:从工程架构到SQL深度调优的全面指南

数据库性能优化实战:从工程架构到SQL深度调优的全面指南 你是否曾因数据库性能瓶颈而焦头烂额?当业务量激增时,响应时间飙升、查询超时频繁发生,这些问题是否让你夜不能寐? 在数字化浪潮席卷的今天,数据库作为企业核心数据的存储中枢,其性能直接决定了业务系统的运行效率…

作者头像 李华
网站建设 2026/3/21 1:59:29

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(八)

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能&#xff08;八&#xff09; Flutter: 3.35.7 前面我们实现了元素的变换操作&#xff0c;单纯的变换操作只是为了后续功能的实现&#xff0c;接下来我们就开始扩展容器的属性。 我们要新增容器功能的扩展&#xff0c;那么…

作者头像 李华
网站建设 2026/3/22 13:56:08

MDK在分布式控制系统中的实践案例

MDK如何让分布式控制系统“稳、准、快”——一个水处理厂的实战启示在工业自动化现场&#xff0c;你是否也遇到过这样的困境&#xff1f;多个控制节点各自为政&#xff0c;调试靠“猜”&#xff0c;通信总超时&#xff0c;固件升级要人扛着笔记本满厂跑。更头疼的是&#xff0c…

作者头像 李华