Vivado简单调试技能
Vivado简单调试技能
1.关于VIO核的使用
首先配置VIO核:

配置输入输出口的数量5,5

配置输入口的位宽

配置输出口位宽和初始值。
例化与使用:
vio_0 U1 (
.clk(clk_27M), // input wire clk
.probe_in0(), // input wire [0 : 0] probe_in0
.probe_in1(), // input wire [0 : 0] probe_in1
.probe_in2(), // input wire [0 : 0] probe_in2
.probe_in3(), // input wire [0 : 0] probe_in3
.probe_in4(), // input wire [0 : 0] probe_in4
.probe_out0(), // output wire [0 : 0] probe_out0
.probe_out1(qpllreset), // output wire [0 : 0] probe_out1
.probe_out2(), // output wire [0 : 0] probe_out2
.probe_out3(), // output wire [0 : 0] probe_out3
.probe_out4() // output wire [0 : 0] probe_out4
);
一定要注意的是,准确给定这个核的时钟,probe_in端口目前还不知道怎么用,只使用了probe_out端口。使用场景就是让这个核输出某个数值到相关的信号线,比如:.probe_out1(qpllreset), // output wire [0 : 0] probe_out1;可以在调试阶段控制这个核输出0或者1给qpllreset信号,由此我们可以手动对QPLL进行复位控制了。
2.ILA核的使用
配置ILA核:

配置probes的个数,和数据采样的深度。

分别配置每个probe的位宽。
例化与使用ILA核:
ila_0 U5 (
.clk(drpclk), // input wire clk
.probe0(current_state_W), // input wire [0:0] probe0
.probe1(next_state_W), // input wire [0:0] probe1
.probe2(timeout_cntr_W),
.probe3(clear_timeout_cntr_W), // input wire [0:0] probe3
.probe4(plllock_timeout_W), // input wire [0:0] probe4
.probe5(reset_timeout_W), // input wire [0:0] probe5
.probe6(init_period_done_W), // input wire [0:0] probe6
.probe7(refclk_stable_ss_W), // input wire [2:0] probe7
.probe8(refclk_stable_s), // input wire [0:0] probe8
.probe9(pll_lock_ss_W), // input wire [2:0] probe9
.probe10(pll_lock_s), // input wire [0:0] probe10
.probe11(rxresetdone_ss_W), // input wire [2:0] probe11
.probe12(assert_pll_reset_W), // input wire [0:0] probe12
.probe13(assert_gt_reset_W), // input wire [0:0] probe13
.probe14(assert_done_W), // input wire [0:0] probe14
.probe15(assert_fail_W), // input wire [0:0] probe15
.probe16(assert_drp_req_W), // input wire [0:0] probe16
.probe17(assert_drp_busy_out_W), // input wire [0:0] probe17
.probe18(inc_retry_cntr_W), // input wire [0:0] probe18
.probe19(clear_retry_cntr_W), // input wire [0:0] probe19
.probe20(max_retries), // input wire [0:0] probe20
.probe21(rxresetdone_s) // input wire [0:0] probe21
);
同样,也需要给这个核输入时钟,probe()端口需要接入wire类型的信号,在调试的过程中我们经常需要抓取reg类型的信号进行分析,因此可以这样处理,将reg型转为wire型:
reg assert_pll_reset;
wire assert_pll_reset_W;
assign assert_pll_reset_W = assert_pll_reset; reg assert_gt_reset;
wire assert_gt_reset_W;
assign assert_gt_reset_W = assert_gt_reset; reg assert_done;
wire assert_done_W;
assign assert_done_W = assert_done; reg assert_fail;
wire assert_fail_W;
assign assert_fail_W = assert_fail; reg assert_drp_req;
wire assert_drp_req_W;
assign assert_drp_req_W = assert_drp_req;
烧写完程序之后,就可以抓这些信号的波形,得到的波形图如下:

3.关于set up debug的使用:
Set up debug算是一种自动添加ILA核的方法。在下面的对话框中加入我们要查看的信号,然后重新进行综合布局布线生成bit文件,烧写程序完成后出现波形界面。

注意其中信号的时钟域不同,生成的ILA核就不同:
手动添加的ILA核

时钟域为clk_27M

时钟域为:SDI0/SDI/CLK

时钟域为:SDI0/SDI/CLK

Vivado简单调试技能的更多相关文章
- 11个强大的 Visual Studio 调试技能
简介 调试是软件开辟周期中很首要的一项目组.它具有挑衅性,同时也很让人困惑和懊恼.总的来说,对于稍大一点的法度,调试是不成避免的.比来几年,调试对象的成长让很多调试任务变的越来越简单和省时. 这篇文章 ...
- Xcode8的调试技能Memory Graph 实战解决闭包引用循环问题
Xcode8的调试技能又增加了一个黑科技:Memory Graph.简单的说就是可以在运行时将内存中的对象生成一张图. 那么通过一个实际项目来练习一下吧. 首先我们写了一个自定义UIView:MyVi ...
- Delphi 用Web App Debugger简单调试ISAPI 转
用Web App Debugger简单调试ISAPI 以isapi为例: 1.新建一个project,用isapi/nsapi: 2.remove这个project中所有的unit: 3.加进你用 ...
- 应该具备的调试技能(java)
------Java部分---------- 1. tomcat在eclispe中怎样启动调试模式2. 带有main方法的Java应用程序怎样启动调试模式3. 调试在eclispe中的快捷键 F5 F ...
- java调试技能之dubbo调试 ---telnet
dubbo作为一个远程调用框架,虽与同类型的框架,不知道谁优谁劣,但是就公司层面使用来说,还是很棒的.这里简单的写一下怎么使用和调试技巧,就算是作个使用总结吧,供快速使用和问题解决! dubbo是基于 ...
- linux系统下gdb的简单调试
当我们写完程序后,我们会运行程序,在这个过程中,可能程序会出现错误. 我们可以利用gdb调试去看我们运行的程序,并且我们新手通过gdb调试能更好地去读懂 别人的程序.让我们更好的学习. 我们看下面这条 ...
- gdb简单调试~core文件
1.打开终端,进入项目目录,输入ulimit -a ,可以看core文件大小设置(第一行),若为0, 则没有打开core dump设置. 2.ulimit -c unlimited ,core文件大小 ...
- 串口WIF简单调试
/*********************************************************************** Title:Wifi串口调试 Hardware: Wi ...
- VBA 简单调试
在中断模式下(ctrl+Break键),可以做: 1.执行 工具----选项----编辑器----勾选“自动显示数据提示” 则当用鼠标悬停在变量或表达式上时,会出现提示窗口,显示其名称和值! 2 ...
随机推荐
- JS获取URL中参数值(QueryString)的4种方法
方法一:正则法 function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(& ...
- 纯原生javascript实现分页效果
随着近几年前端行业的迅猛发展,各种层出不穷的新框架,新方法让我们有点眼花缭乱. 最近刚好比较清闲,所以没事准备撸撸前端的根基javascript,纯属练练手,写个分页,顺便跟大家分享一下 functi ...
- 【BFS + Hash】拼图——携程2017春招编程题2
写在前面 前天参加了携程的网测--还是感觉自己太!渣!了! _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...
- Android之AIDL知识总结
1.AIDL介绍 AIDL是一个缩写,全称是Android Interface Definition Language,翻译为Android接口定义语言.主要用于线程之间的通信,本文主要以不同应用之间 ...
- Linux Shell——bash shell 脚本简介
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...
- WPF 杂谈——资源文件
编写一个应用难免要用到WPF本身的控件.不管是WinForm还是网页都会有自己的控件.只是在写法和用法上有所不同而以.而控件命名却离不开那几个单词.所以不用担心判断不出来哪个是按扭,哪个是文本框.举个 ...
- godot新手中文系列教程1-打包安卓
国内godot qq群 302924317 我也是个新手,可以进群多多交流. 我想要吐槽一下,官方文档有点陈旧,细节缺乏,所以某些时候不要相信官方文档,可以向我们可爱的群友提问,他们一定很乐意回答. ...
- 与64位版本的Windows不兼容,masm运行不了
问题: 在Window64位运行不了的masm 解决方法: 1.下载DosBox0.74(当前最新): 2.安装后运行,运行后出现控制台: 3.在DosBox的控制台下运行 Mount x: x:/m ...
- CentOS7.2静默安装oracle11g
http://www.centoscn.com/image-text/config/2015/0528/5552.html http://www.linuxidc.com/Linux/2016-04/ ...
- poj3159 Candies SPFA
题目链接:http://poj.org/problem?id=3159 题目很容易理解 就是简单的SPFA算法应用 刚开始用STL里的队列超时了,自己写了个栈,果断过,看来有时候栈还是快啊.... 代 ...