news 2026/9/21 17:45:19

项目开发中常用的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/9/21 12:59:24

DeepSeek V3.2 技术解读:一次不靠“堆参数”的模型升级

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 引言 近年来&#xff0c;大语言模型&#xff08;Large Language Mode…

作者头像 李华
网站建设 2026/9/22 3:28:55

Babel中实现ES6函数扩展的深度剖析

Babel如何让现代函数语法在旧引擎中“复活”&#xff1f;你有没有想过&#xff0c;当你写下这样一段简洁的ES6代码时&#xff1a;function greet(name Guest, ...messages) {return messages.map(msg > ${msg}, ${name}!); }它究竟是怎么在IE11这种连const都不认识的老浏览…

作者头像 李华
网站建设 2026/9/21 19:12:01

驱动开发中WinDbg分析DMP蓝屏文件的完整指南

驱动开发中的“破案神器”&#xff1a;用WinDbg精准解剖蓝屏DMP文件你有没有遇到过这样的场景&#xff1f;系统运行得好好的&#xff0c;突然“啪”一下蓝屏重启。日志里只留下一句模糊的提示&#xff1a;“意外中断”&#xff0c;或者一个看不懂的错误码0x0000007E。设备管理器…

作者头像 李华
网站建设 2026/9/21 14:18:12

Flutter AR 开发:打造厘米级精度的室内导航应用

Flutter AR 开发&#xff1a;打造厘米级精度的室内导航应用 引言 “AR 导航漂移严重&#xff0c;用户绕圈找不到出口&#xff01;” “在商场里定位误差高达 5 米&#xff0c;完全不可用&#xff01;” “手机发热严重&#xff0c;AR 模式只能坚持 3 分钟&#xff01;” ——这…

作者头像 李华
网站建设 2026/9/21 7:43:04

Flutter 与 TensorFlow Lite:在手机上实时运行 YOLOv8 目标检测

Flutter 与 TensorFlow Lite&#xff1a;在手机上实时运行 YOLOv8 目标检测 引言 “模型加载慢&#xff0c;用户等得不耐烦&#xff01;” “检测延迟高达 2 秒&#xff0c;根本没法用于扫码或安防&#xff01;” “App 体积暴涨到 300MB&#xff0c;商店审核直接拒收&#x…

作者头像 李华
网站建设 2026/9/22 0:07:09

sprintf 和 printf

sprintf 和 printf 的核心区别在于输出目的地不同&#xff1a;printf 直接将结果打印到屏幕&#xff08;如控制台&#xff09;&#xff0c;而 sprintf 将结果保存到指定的字符串缓冲区中。 &#x1f4a1; 功能与输出printf&#xff1a;格式化输出到标准输出&#xff08;通常是屏…

作者头像 李华