xilinx FPGA在线调试方法总结(vivado+ila+vio)
本文主要介绍xilinx FPGA开发过程中常用的调试方法,包括ILA、VIO和TCL命令等等,详细介绍了如何使用。
一、FPGA调试基本原则
根据实际的输出结果表现,来推测可能的原因,再在模块中加ILA信号,设置抓信号条件,逐步定位问题模块和原因,最终解决bug。
二、FPGA常用调试方法
1、调用IP
(1)ILA
第1步:在vivado中,打开IP核目录(IP Catalog),在搜索框中输入ILA(不区分大小写),按图示方式进行选择即可。

第2步:设置ILA参数
探针数根据需要采集的信号数设定,或者直接设定一个信号;
采样数据深度可根据实际需要和资源消耗情况进行设置,一般选择默认的1024即可;

第3步:测量信号的位宽进行设置


第4步:在IP source区,打开ILA,添加例化模板, 在代码中插入例化,把VIO的输出口连接到模块的输入。
ila_0 u_ila( .clk(clk), .probe0(probe0), .probe1(probe1), .probe2(probe2));(2)VIO IP
VIO的输出可以控制测试模块的输入,VIO的输入可以显示模块的输出值。
第1步: 例化一个VIO核,根据需要设定输入输出的数目

第2步:设置vio输出端口的位宽与初始值:

第3步:在代码中插入例化,把VIO的输出口连接到模块的输入。
vio_0 u_vio( .clk(clk), .probe_out0(probe_out0));2、添加调试信号
(1)在Verilog HDL文件中直接添加,特点是防止信号被优化,最大可能保留信号原本的名称。
在input/output前或在声明变量前添加(* mark_debug = “true” *)
(* mark_debug = "true" *) wire done;(* mark_debug = "true" *) reg cnt;(2)标记Debug mark方法,可以在原理图(block design)或在综合后的网表(Netlist)中添加。
A、在原理图(block design)右击添加“Mark Debug”,工程综合后,在SYNTHESIS > Open Synthesized Design,在Netlist窗口中选择需要调试的网络节点,进行调试。

右键单击任意网络节点,点击Mark Debug,该网络节点会出现小甲虫标记。

对于已经选中Mark Debug的网络节点,也可以取消调试。右键单击该网络节点,选择Unmark Debug即可
B、在综合后,Flow Navigator > SYNTHESIS > Open Synthesized Design > Schematic下打开的原理图(Schematic)中通过右键单击选中线路,添加Mark Debug信号,和Unmark Debug信号
点击 Windows > Debug,即可出现Debug窗口,在这里可以观察到已经mark debug的信号。

(3)使用Tcl命令,直接修改*.xdc文件,和添加ILA( Integrated Logic Analyzer) IP核完成.
set_property MARK_DEBUG true [get_nets [list {control_reg[0]} {control_reg[1]} \ {control_reg[2]} {control_reg[3]} {control_reg[4]} {control_reg[5]} \ {control_reg[6]} {control_reg[7]} {control_reg[8]} {control_reg[9]} \ {control_reg[10]} {control_reg[11]} {control_reg[12]} {control_reg[13]} \ {control_reg[14]} {control_reg[15]} {control_reg[16]} {control_reg[17]} \ {control_reg[18]} {control_reg[19]} {control_reg[20]} {control_reg[21]} \ {control_reg[22]} {control_reg[23]} {control_reg[24]} {control_reg[25]} \ {control_reg[26]} {control_reg[27]} {control_reg[28]} {control_reg[29]} \ {control_reg[30]} {control_reg[31]}]]create_debug_core u_ila_0 ilaset_property port_width 1 [get_debug_ports u_ila_0/CLK]connect_debug_port u_ila_0/CLK [get_nets [list wbClk ]]set_property port_width 32 [get_debug_ports u_ila_0/PROBE0]connect_debug_port u_ila_0/PROBE0 [get_nets [list {control_reg[0]} {control_reg[1]} {control_reg[2]} {control_reg[3]} {control_reg[4]} \ {control_reg[5]} {control_reg[6]} {control_reg[7]} {control_reg[8]} \ {control_reg[9]} {control_reg[10]} {control_reg[11]} {control_reg[12]} \ {control_reg[13]} {control_reg[14]} {control_reg[15]} {control_reg[16]} \ {control_reg[17]} {control_reg[18]} {control_reg[19]} {control_reg[20]} \ {control_reg[21]} {control_reg[22]} {control_reg[23]} {control_reg[24]} \ {control_reg[25]} {control_reg[26]} {control_reg[27]} {control_reg[28]} \ {control_reg[29]} {control_reg[30]} {control_reg[31]} ]]以上就是本次分享的xilinx FPGA调试方法总结,希望大家阅读完后,有所收获。

相关文章:
xilinx FPGA在线调试方法总结(vivado+ila+vio)
本文主要介绍xilinx FPGA开发过程中常用的调试方法,包括ILA、VIO和TCL命令等等,详细介绍了如何使用。一、FPGA调试基本原则根据实际的输出结果表现,来推测可能的原因,再在模块中加ILA信号,设置抓信号条件,逐…...
自动化测试——css元素定位
文章目录一、css定位场景二、css相对定位的优点三、css的调试方法1、表达式中含有字符串:表达式中的引号一定和外面字符串的引号相反四、css基础语法1、标签定位2、class定位特别注意:当class类型的属性值包含多个分割值,$(.s_tab s_tab_1z9n…...
ChatGPT可能马上取代你,这是它能做的十个工作
ChatGPT 的横空出世,在业界掀起了惊涛骇浪。专家表示,ChatGPT 和相关人工智能技术可能会威胁到一些工作岗位,尤其是白领工作。 自去年11月发布以来,新型聊天机器人模型 ChatGPT 已经被用于各种各样的工作:撰写求职信、编写儿童读物,甚至帮助学生在论文中作弊。谷歌公司发…...
ubuntu转储coredump
方法一: 输入以下命令即可,其中${USER}为自己电脑的用户名: ulimit -c unlimited echo "/home/${USER}/core.%p" > /proc/sys/kernel/core_pattern 方法二: Disable apport : sudo systemctl stop apport.servicesudo system…...
基于单片机的毕业设计推荐
** 2023基于单片机的毕业设计推荐: ** 1、基于51单片机的多功能门禁系统(低端、功能限制较大)。 2、基于单片机的多功能实时时钟。 3、基于单片机的音乐播放器。 4、基于STM32单片机的多功能门禁系统(高端、没有限制)…...
APP测试中ios和androis的区别,有哪些注意点
目录 一、运行机制不同 二、对app内存消耗处理方式不同 三、后台制度不同 四、最高权限指令不同 五、推送机制不同 六、抓取方式不同 七、灰度发版机制不同 八、审核机制不同 总结感谢每一个认真阅读我文章的人!!! 重点:…...
使用 Xcode 创建第一个 Objective-C 命令行程序 HelloWorld
总目录 iOS开发笔记目录 从一无所知到入门 文章目录创建项目运行项目,查看日志输出同一项目下新增子目录,切换要运行的 Target创建项目 打开 Xcode ,Create a new Xcode project 接下来的默认界面: 切换到 macOS 下ÿ…...
【蓝桥杯集训8】哈希表专题(3 / 3)
目录 手写哈希表 1、开放寻址法 2、拉链法 字符串前缀哈希表法 2058. 笨拙的手指 - 哈希表 秦九韶算法(进制转换) 枚举 秦九韶算法——将x进制数转化为十进制数 手写哈希表 活动 - AcWing 1、开放寻址法 设 h(x)k,也就是 x 的哈希值…...
Java Scanner 类,超详细整理,适合新手入门
目录 一、什么是 Java Scanner 类? 二、引用数据类型 1、引用数据类型的定义 三、Scanner 类有哪些常用方法? hasNext()用法 四、next() 与 nextLine() 区别 next(): nextLine(): 五、使用 next 方法 五、使用 nextLine方法 一、什…...
干货 | 中小企业选型 Elasticsearch 避坑指南
1、线上常见问题在我线下对接企业或线上交流的时候,经常会遇到各种业务场景不同的问题。比如,常见问题归类如下:常见问题1:ES 适合场景及架构选型问题。公司的核心业务是做企业员工健康管理,数据来自电子化后的员工体检…...
全局组件和局部组件
全局组件第一种定义方法:A、创建自己的组件:Loading.vueB、在main.js文件中引入组件并注册import Vue from vue import App from ./App.vue import * as filters from ./filterimport quanjuzujian from ./components/quanjuzujian.vueVue.component(qua…...
提取括号中的内容
正则能解决不嵌套的括号内容提取问题遇到一个问题,就是需要提取字符串中每一个中括号里的内容,在网上搜了一下,发现用正则表达式(\[[^\]]*\])可以提取中括号中的内容,以下面文本为匹配对象:PerformanceManager[第1个中…...
数据结构-算法的空间复杂度(1.2)
目录 1.空间复杂度 1.1 例子 1.2 空间的特殊性质 写在最后: 1.空间复杂度 空间复杂度也是一个数学表达式, 是对一个算法在运行过程中临时占用存储空间大小的量度。 他也是用大O渐进表示法。 1.1 例子 例1: 冒泡排序: v…...
【总结】python3启动web服务引发的一系列问题
背景 在某行的实施项目,需要使用python3环境运行某些py脚本。 由于行内交付的机器已自带python3 ,没有采取自行安装python3,但是运行python脚本时报没有tornado module。 错误信息 ModuleNotFoundError:No module named ‘torn…...
Linux:基于libevent读写管道代码,改进一下上一篇变成可以接收键盘输入
对上一篇进行改进,变成可以接收键盘输入,然后写入管道: 读端代码: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <s…...
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
凡事发生必将有益于我,高手,从来都不仅仅是具备某种思维的人,而是那些具备良好学习习惯的人,成为高手,无他,手熟尔!加油在最近的学习之中,对于格式化输出这个知识点,这里…...
Nginx之反向代理、负载均衡、动静分离。
Nginx之反向代理、负载均衡、动静分离。 1、Nginx是啥? 轻量级Web服务器、反向代理服务器、电子邮件(IMAP/POP3)代理服务器 在 BSD-like 协议下发行、占内存少、并发高(同时处理请求能力)。 2、安装 官网…...
0401不定积分的概念和性质-不定积分
文章目录1 原函数与不定积分的概念1.1 原函数1.2 原函数存在定理1.3 不定积分2 不定积分的性质3 基本积分表4 例题后记1 原函数与不定积分的概念 1.1 原函数 定义1 如果在区间I上,可导函数F(x)的导航为f(x),即对任一x∈Ix\in Ix∈I,都有 F′…...
数组中的各种迭代API方法手写
js的数组上有很多实用的方法,不论是在遍历数组上,还是在操作数组内元素上,它有许多不同的遍历数组的方法,同时它还有着可以直接操作数组中间元素的方法。 接下来,我来带大家手写数组里的 遍历方法 。 Array.forEach(…...
详解量子计算:相位反冲与相位反转
前言 本文需要对量子计算有一定的了解。需要的请翻阅我的量子专栏,这里不再涉及基础知识的科普。 量子相位反冲是什么? 相位反转(phase kickback)是量子计算中的一种现象,通常在量子算法中使用,例如量子…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
HTML版英语学习系统
HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具,使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章,系统朗读帮助练习听力和发音,适合跟读练习,模仿学习;实时词典查询 - 双…...
【JavaEE】万字详解HTTP协议
HTTP是什么?-----互联网的“快递小哥” 想象我们正在网上购物:打开淘宝APP,搜索“蓝牙耳机”,点击商品图片,然后下单付款。这一系列操作背后,其实有一个看不见的“快递小哥”在帮我们传递信息,…...
