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简单调试技能的更多相关文章

  1. 11个强大的 Visual Studio 调试技能

    简介 调试是软件开辟周期中很首要的一项目组.它具有挑衅性,同时也很让人困惑和懊恼.总的来说,对于稍大一点的法度,调试是不成避免的.比来几年,调试对象的成长让很多调试任务变的越来越简单和省时. 这篇文章 ...

  2. Xcode8的调试技能Memory Graph 实战解决闭包引用循环问题

    Xcode8的调试技能又增加了一个黑科技:Memory Graph.简单的说就是可以在运行时将内存中的对象生成一张图. 那么通过一个实际项目来练习一下吧. 首先我们写了一个自定义UIView:MyVi ...

  3. Delphi 用Web App Debugger简单调试ISAPI 转

    用Web App Debugger简单调试ISAPI   以isapi为例: 1.新建一个project,用isapi/nsapi: 2.remove这个project中所有的unit: 3.加进你用 ...

  4. 应该具备的调试技能(java)

    ------Java部分---------- 1. tomcat在eclispe中怎样启动调试模式2. 带有main方法的Java应用程序怎样启动调试模式3. 调试在eclispe中的快捷键 F5 F ...

  5. java调试技能之dubbo调试 ---telnet

    dubbo作为一个远程调用框架,虽与同类型的框架,不知道谁优谁劣,但是就公司层面使用来说,还是很棒的.这里简单的写一下怎么使用和调试技巧,就算是作个使用总结吧,供快速使用和问题解决! dubbo是基于 ...

  6. linux系统下gdb的简单调试

    当我们写完程序后,我们会运行程序,在这个过程中,可能程序会出现错误. 我们可以利用gdb调试去看我们运行的程序,并且我们新手通过gdb调试能更好地去读懂 别人的程序.让我们更好的学习. 我们看下面这条 ...

  7. gdb简单调试~core文件

    1.打开终端,进入项目目录,输入ulimit -a ,可以看core文件大小设置(第一行),若为0, 则没有打开core dump设置. 2.ulimit -c unlimited ,core文件大小 ...

  8. 串口WIF简单调试

    /*********************************************************************** Title:Wifi串口调试 Hardware: Wi ...

  9. VBA 简单调试

    在中断模式下(ctrl+Break键),可以做: 1.执行    工具----选项----编辑器----勾选“自动显示数据提示” 则当用鼠标悬停在变量或表达式上时,会出现提示窗口,显示其名称和值! 2 ...

随机推荐

  1. 深入理解MVC

    首先我们来看看MVC架构的示意图:             和访问者交互的是控制层(Controller层),控制器(controller)是同类交互的集合,每一个交互的操作,都对应了一个动作(act ...

  2. 在Ubuntu中使用JAVA与tomcat搭建web服务器

    一:材料 1.操作系统:ubuntu16.04 2.JAVA: jdk1.8.0 3.Tomcat:tomcat 8 4.域名:zhuandshao.cn 二:过程 1.安装java 1)在官网下载j ...

  3. 原生ajax实现http请求

      1⃣️先简单了解一下HTTP协议: http是计算机通过网络进行通信的一种规则,它是一种无状态协议(不建立持久链接,直白点儿说就是请求响应完事儿之后,链接就断开)  2⃣️一个完整的http请求有 ...

  4. 使用Perl提取Excel中的IO_MUX

    使用Perl提取Excel中的IO_MUX 关键问题 提取数据 格式化输出 循环嵌套 数据结构构建 坐标映射,逆向提取关键字 描述 在IC集成中,我们使用Excel表格规划设计的IC引脚功能映射需要转 ...

  5. easyUI中datagrid的使用

    easyUI中的datagrid数据表格经常被用到,结合项目中的使用情况,总结一下datagrid使用中需要注意的一些问题.使用datagrid展示数据,需要在html.css.js中都要编写代码,h ...

  6. 内存管理之slab分配器

    基本思想 与传统的内存管理模式相比, slab 缓存分配器提供了很多优点.首先,内核通常依赖于对小对象的分配,它们会在系统生命周期内进行无数次分配.slab 缓存分配器通过对类似大小的对象进行缓存而提 ...

  7. Measuring & Optimizing I/O Performance

    By Ilya Grigorik on June 23, 2009 Measuring and optimizing IO performance is somewhat of a black art ...

  8. CSS3 02. 边框、边框圆角、边框阴影、边框图片、渐变、线性渐变、径向渐变、背景、过渡transition、2D转换

    边框圆角 border-radius 每个角可以设置两个值,x值.y值 border-top-left-radius:水平半径 垂直半径 border-radius:水平半径/垂直半径 border- ...

  9. Visual Lisp获得网络时间的方法

    (defun c:tt (/ ie-obj) (setq ie-obj (vlax-get-or-create-object "Msxml2.xmlhttp")) ) (vlax- ...

  10. Yomob广告在cocos2dx安卓平台的Demo

    Yomob 也是一个广告平台:他的使用方式比较简单哈,这里只说说他的步骤 按照官方文档说明配置环境,我使用的是eclipse,在eclipse上自己将文件copy到项目proj.android下,覆盖 ...