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)相关推荐

  1. FPGA极易入门教程----工具篇(1)建立你的第一个FPGA工程(点亮LED)

    1.规范的文件夹 规范的文件夹划分管理也是十分重要的,若是把所有文件,例如设计文件.设计表格.图片.Quartus工程相关文件.仿真文件等不同类型的文件都统一放在一个目录下,将会使得整个文件夹臃肿不堪 ...

  2. FPGA极易入门教程----汇总篇(直达链接)

    为什么要写这个系列? 根据费曼学习法,最好的学习方法就是教会一个外行人(初学者).知识分享,独乐乐不如众乐乐.现在FPGA市场巨大,人才缺口很大.我本着能拉一个上贼船就拉一个上贼船的想法来写这个系列文 ...

  3. FPGA极易入门教程----LED篇(1)跑马灯(流水灯)跑起来

    1.LED的基本原理 LED,又名发光二极管.LED灯工作电流很小(有的仅零点几毫安即可发光),抗冲击和抗震性能好,可靠性高,寿命长.由于这些优点,LED灯被广泛用在仪器仪表中作指示灯.液晶屏背光源等 ...

  4. FPGA极易入门教程----数码管篇(1)静态显示

    1.数码管简介 数码管是一种半导体发光器件,其基本单元是发光二极管.数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示).当然也还有一些其他类型的数 ...

  5. FPGA学习笔记_Quartus II_In system sources and probes editor(ISSP)调试工具的使用

    FPGA学习笔记 Quartus II prime Standard Edition-In system sources and probes editor(ISSP)调试工具的使用 Quartus ...

  6. Python极简入门教程

    前言 为了方便各位小白能轻松入门Python,同时加深自己对Python的理解,所以创造了"Python极简入门教程",希望能帮到大家,若有错误请多指正,谢谢.极简入门教程代表着不 ...

  7. ESP32-C3入门教程 IoT篇⑥——阿里云 物联网平台 EspAliYun RGB LED 实战之设备批量生产工具

    阿里云物联网平台ESP32设备批量工具 文章目录 一.前言 二.软件框架 三.阿里云物联网平台API 3.1 查询设备 3.2 添加设备 四.二维码生成 五.csv生成 六.csv转bin 七.bin ...

  8. tensorflow平台极简方式_TensorFlow极简入门教程

    原标题:TensorFlow极简入门教程 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.本文介绍了TensorFlow 基础,包括静态计 ...

  9. 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= ...

最新文章

  1. suse 安装mysql5.6_SuSE11安装MySQL5.6.40:RPM安装方式
  2. 国内免费GPU资源哪里找,让我告诉你最新的薅羊毛“秘籍”
  3. python 条件概率_机器学习中的概率问题
  4. c++保留小数点后三位数_C++保留有效位与保留小数位
  5. jQuery 对象与Dom 对象互转
  6. jquerymobile 基础教程
  7. python numpy diff_Python numpy.uint16方法代码示例
  8. 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
  9. java webservice请求参数_Java调用WebService的方法总结
  10. android4.4.3版本root,碉堡了!ROOT精灵支持Nexus 5等Android4.4.3机型ROOT
  11. 在线作图|2分钟在线绘制三维PCOA图
  12. html表白代码大全可复制,浪漫的html表白特效网页制作源代码
  13. 【Android】dp-sp-屏幕像素密度
  14. 入门vue+springboot项目
  15. office ppsx逻辑漏洞(CVE-2017-8570)
  16. Linux,Centos下 Tomcat8 修改jvm内存配置的新方法
  17. CSS-三栏布局新手上路
  18. java游戏oppo飞鹰计划,高德发布打假平台“飞鹰计划”,首批接入200多个品牌
  19. spring cloud整合feign和nacos报错:No Feign Client for loadBalancing defined. Did you forget to include
  20. 全志T3 Linux显示驱动分析

热门文章

  1. element admin跨域问题解决
  2. 暴雪《争霸艾泽拉斯》*采用自适应 SSAO
  3. js生成二维码和解析二维码
  4. mmdetection训练voc数据集
  5. 数据结构之图论算法(五)——关键路径(Dijkstra算法与Floyd算法)
  6. 平阳万全综合高中计算机单招上线率,喜报!平阳各学校一段上线人数出炉!太厉害了...
  7. 我叫MT online
  8. PHP输出1000以内所有水仙花数
  9. 总结的几个 sql 分页存储过程
  10. python blit_pygame入门