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. python代码零散知识点

    1.用python读入csv文件 green_taxi1=pd.DataFrame(pd.read_csv('../../../../MatlabCode/data/green/green_tripd ...

  2. DirectFB、Layer、Window、Surface之间关系

    层(Layers) 表示一块儿独立的图像缓冲区.大多数的嵌入式设备都有多个层.他们由硬件使用合适的alpha值来blending,然后显示. 表面 (Surface) 用来保存像素数据的保留内存区域. ...

  3. MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  4. 利用GDB进行多线程调试

    一.多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break file.c:100 ...

  5. java线程(二)

    线程范围变量 我们知道线程在cpu上的使用权并不是长时间的,因为计算机的cpu只有一个,而在计算上运行的进程有很多,线程就更不用说了,所以cpu只能通过调度来上多个线程轮流占用cpu资源运行,且为了保 ...

  6. 我眼中的微信小程序

    开始关注微信小程序是从去年8月份开始,当时它还没这么"火",而且当时我个人对其的发展也并不看好. 其一:是因为微信是第三方软件,把我的用户数据和信息挂载在微信上这样真的可靠吗?有朋 ...

  7. Ubuntu14.04双网卡主备配置

    近日有个需求,交换机有两台,做了堆叠,服务器双网卡,每个分别连到一台交换机上.这样就需要将服务器的网卡做成主备模式,以增加安全性,使得当其中一个交换机不通的时候网卡能够自动切换. 整体配置不难,网上也 ...

  8. Volley使用指南

    1.什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(A ...

  9. 运用三角不等式加速Kmeans聚类算法

    运用三角不等式加速Kmeans聚类算法 引言:最近在刷<数据挖掘导论>,第九章, 9.5.1小节有提到,可以用三角不等式,减少不必要的距离计算,从而达到加速聚类算法的目的.这在超大数据量的 ...

  10. 谷歌IAP:skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items.

    这几天在接谷歌的支付,在拉谷歌商品列表的时候转菊花,长时间不返回(querySkuDetails),一开始以为因为IAP有key不对导致的,查了下发现没有问题. 再看logcat,发现了这行: Inp ...