FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)
1、什么是ISSP?ISSP有什么用?
Quartus II提供了In-System Sources and Probes Editor调试工具,通过JTAG接口使用该工具可以驱动和采样内部节点的逻辑值。即通过 Sources功能来驱动fpga内部信号,通过Probes功能来探测内部节点的逻辑值。在系统设计还不完整的时候可以利用该工具模拟众多的输入激励。比如,可以通过该IP核来实时修改内部某些寄存器的值,而不用重新修改代码,再全编译,再下载调试。
通俗来说,使用ISSP IP核可以对被测模块提供输入,而这个输入是可以在线更改的;同时,还可以检测被测模块的输出值(作用类似Signaltap)。
2、ISSP的使用
在数码管的静态显示章节(FPGA极易入门教程----数码管篇(1)静态显示)我们编写了动态驱动代码,并使用定时生成数据的方式对驱动代码进行了测试。这种测试方式的覆盖率高,但是不够灵活。我们如果使用ISSP IP核来测试就可以直接在线修改输入,起到特定的调试作用。
1、先新建一个工程issp_test
2、新建数码管驱动文件并将其添加到工程
//6位8段式数码管静态显示驱动//端口定义
module dis_sta_dri (input sys_clk , //时钟信号input sys_rst_n , //复位信号(低有效)input [3:0] num, //数码管显示的十进制数output reg [5:0] dis_sel, //数码管位选output reg [6:0] dis_seg, //数码管段选output dis_dp //数码管小数点
);assign dis_dp = 1'b1; //小数点,我们暂时不同,使其无效即可//控制数码管位选信号(低电平有效),选中所有的数码管
always @ (posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n)dis_sel <= 6'b111111; //复位熄灭所有数码管elsedis_sel <= 6'b000000; //复位完成后给所有数码管供电
end//根据数码管显示的数值,控制段选信号(低电平有效)
always @ (posedge sys_clk or negedge sys_rst_n) beginif (!sys_rst_n)dis_seg <= 7'b111_1111; //复位时熄灭数码管(这一条用处不大,因为复位时数码管也不供电)else begincase (num)4'h0 : dis_seg <= 7'b000_0001; //显示数字“0”,则数码管的段选编码为7'b000_00014'h1 : dis_seg <= 7'b100_1111;4'h2 : dis_seg <= 7'b001_0010;4'h3 : dis_seg <= 7'b000_0110;4'h4 : dis_seg <= 7'b100_1100;4'h5 : dis_seg <= 7'b010_0100;4'h6 : dis_seg <= 7'b010_0000;4'h7 : dis_seg <= 7'b000_1111;4'h8 : dis_seg <= 7'b000_0000;4'h9 : dis_seg <= 7'b000_0100; //显示数字“9”,则数码管的段选编码为7'b000_0100default : dis_seg <= 7'b111_1111; //其他数字(16进制的数字相对10进制无效)则熄灭数码管endcaseend
endendmodule
3、进入IP选择界面
4、例化In-System Sources and Probes Editor IP核,名(随便取)为Sou_Pro ,点击 Next进入 IP参数设置界面。
5、按以下设置IP参数
(1)选择是否指定例化IP的编号,默认设置,不用修改
(2)是否设置IP核的ID号。因为在一个工程中,可以例化多个In-System Sources and Probes Editor IP核,该ID号就是用来区分不同的IP核
(3)用来设置探测(Probes)端口,probe功能我们用来检测数码管的段选值,以此验证输入数值是否能有对应的正确输出,位宽设置为7,
(4)用来设置驱动(Sources)端口,source位宽设为20(注意图片不一致),与数码管驱动数字的位宽一致
(5)高级设置选项。可以用来设置驱动 信号的初始值以及发送驱动信号是否与源时钟同步。(通常保持默认即可)
6、一直点next直到finish,完成IP的创建。
7、编写顶层文件并将其添加到工程,例化数码管驱动和ISSP IP核,如下:
//ISSP IP 测试文件
module issp_test(input sys_clk , //时钟信号input sys_rst_n , //复位信号(低有效)output [5:0] dis_sel , //数码管位选output [6:0] dis_seg , //数码管段选output dis_dp //数码管小数点);wire [3:0] num; //数码管显示的十进制数,10进制,范围0-9//例化数码管驱动
dis_sta_dri dis_sta_dri_inst(.sys_clk (sys_clk ), .sys_rst_n (sys_rst_n ), .num (num ), .dis_sel (dis_sel ), .dis_seg (dis_seg ), .dis_dp (dis_dp )
);//例化ISSP IP核
Sou_Pro Sou_Pro_inst (.probe (dis_seg ), //探测数码管段选.source (num ) //生成数码管显示数据
);endmodule
8、全编译工程,并将生成的文件下载到FPGA
至此就完成了IP核的创建,接下来就使用在线调试工具对被测模块进行调试。
3、测试过程与结果
1、打开在线调试工具,如下:
2、窗口右边选择自己的JTAG接口
3、界面如下:
4、右击probe和source,可以选择数据的进制,分别将 probe设置为2进制,将source设置为10进制
5、我们在source窗口输入1,然后读取探测数据,此时读到的数码管段选值为10011111,与预计一致
同时发现我们的开发板上的数码管显示111111,与预计一致
6、我们在source窗口输入7,然后读取探测数据,此时读到的数码管段选值为00011111,与预计一致
同时发现我们的开发板上的数码管显示777777,与预计一致
4、其他
- 创作不易,如果本文对您有帮助,还请多多点赞、评论和收藏。您的支持是我持续更新的最大动力!
- 关于本文,您有什么想法均可在评论区留言。如果需要整个工程,请在评论留下邮箱或者私信我邮箱(注意保护隐私)。
- 自身能力不足,如有错误还请多多指出!
版本信息
文件:V1.0
编号:0003
Quartus II:Quartus II 13.1 (64-bit)
FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)相关推荐
- FPGA极易入门教程----工具篇(1)建立你的第一个FPGA工程(点亮LED)
1.规范的文件夹 规范的文件夹划分管理也是十分重要的,若是把所有文件,例如设计文件.设计表格.图片.Quartus工程相关文件.仿真文件等不同类型的文件都统一放在一个目录下,将会使得整个文件夹臃肿不堪 ...
- FPGA极易入门教程----汇总篇(直达链接)
为什么要写这个系列? 根据费曼学习法,最好的学习方法就是教会一个外行人(初学者).知识分享,独乐乐不如众乐乐.现在FPGA市场巨大,人才缺口很大.我本着能拉一个上贼船就拉一个上贼船的想法来写这个系列文 ...
- FPGA极易入门教程----LED篇(1)跑马灯(流水灯)跑起来
1.LED的基本原理 LED,又名发光二极管.LED灯工作电流很小(有的仅零点几毫安即可发光),抗冲击和抗震性能好,可靠性高,寿命长.由于这些优点,LED灯被广泛用在仪器仪表中作指示灯.液晶屏背光源等 ...
- FPGA极易入门教程----数码管篇(1)静态显示
1.数码管简介 数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示).当然也还有一些其他类型的数 ...
- FPGA学习笔记_Quartus II_In system sources and probes editor(ISSP)调试工具的使用
FPGA学习笔记 Quartus II prime Standard Edition-In system sources and probes editor(ISSP)调试工具的使用 Quartus ...
- Python极简入门教程
前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...
- ESP32-C3入门教程 IoT篇⑥——阿里云 物联网平台 EspAliYun RGB LED 实战之设备批量生产工具
阿里云物联网平台ESP32设备批量工具 文章目录 一.前言 二.软件框架 三.阿里云物联网平台API 3.1 查询设备 3.2 添加设备 四.二维码生成 五.csv生成 六.csv转bin 七.bin ...
- tensorflow平台极简方式_TensorFlow极简入门教程
原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...
- linux usb3.0改2.0,TX1入门教程硬件篇-切换USB2.0与USB3.0
TX1入门教程硬件篇-切换USB2.0与USB3.0 说明: 介绍如何切换TX1USB口的为2.0或3.0版本 步骤: 编辑extlinux.conf文件,修改usb_port_owner_info= ...
最新文章
- suse 安装mysql5.6_SuSE11安装MySQL5.6.40:RPM安装方式
- 国内免费GPU资源哪里找,让我告诉你最新的薅羊毛“秘籍”
- python 条件概率_机器学习中的概率问题
- c++保留小数点后三位数_C++保留有效位与保留小数位
- jQuery 对象与Dom 对象互转
- jquerymobile 基础教程
- python numpy diff_Python numpy.uint16方法代码示例
- 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
- java webservice请求参数_Java调用WebService的方法总结
- android4.4.3版本root,碉堡了!ROOT精灵支持Nexus 5等Android4.4.3机型ROOT
- 在线作图|2分钟在线绘制三维PCOA图
- html表白代码大全可复制,浪漫的html表白特效网页制作源代码
- 【Android】dp-sp-屏幕像素密度
- 入门vue+springboot项目
- office ppsx逻辑漏洞(CVE-2017-8570)
- Linux,Centos下 Tomcat8 修改jvm内存配置的新方法
- CSS-三栏布局新手上路
- java游戏oppo飞鹰计划,高德发布打假平台“飞鹰计划”,首批接入200多个品牌
- spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include
- 全志T3 Linux显示驱动分析