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 ...
随机推荐
- bootstrap快速入门笔记(二)-栅格系统,响应式类
一,栅格系统大致有以下: 1,行row必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,一行有12列 2.“列(column)”在水平方向创建一 ...
- split()方法
split()方法用于把一个字符串分隔成字符串数组. 它有两个参数: separator:从参数指定的地方分隔字符串,必需: howmany:该参数可指定返回的数组的最大长度.如果设置了该参数,返回的 ...
- PPT要你好看---读书笔记
PPT要你好看.主要是设计的思维. 下图,对于现阶段的我来说,收获最大的是毕业答辩PPT的制作. 以及整体的PPT制作思路.
- MAMP 环境下为 php 添加 pcntl 扩展
前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...
- 蓝桥杯-分小组-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- nginx源码分析——configure脚本
源码:nginx 1.13.0-release 一.前言 在分析源码时,经常可以看到类似 #if (NGX_PCRE) .... #endif 这样的代码段,这样的设计可以在不改动源码的 ...
- iOS开发tips-UINavigationBar的切换
概述 在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏.当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A push到 B ...
- 关于BSTR和SysStringLen方法的简单研究
英文的我编不下去了,所以还是先写个中文的吧, 之前遇到了SysStringLen求Bstr长度不正确的问题,试验了几次都不行的情况下我觉得可能是这个方法的bug,所以就没管. 大概的情况是这样: in ...
- scala 异常处理机制
有经验的码农都知道,程序开发的差不多的时候,为了提高程序的稳健性,是一定要加上异常处理机制的 在scala中,用try/catch/finally实现该功能,这个在我的博客,数字转汉字小工具中有体现, ...
- java的List分页 取出数据后使用List分页
以前一直是在DAO层直接从数据库里分页,但是今天因为有些数据,需要混合展示,就是根据条件取出了多个对象的集合,然后把这些多个List放到一个List里,然后在从这个List里进行分页. MemberA ...