一、前言。

Signaltap是嵌入式逻辑分析仪,说到嵌入式,很容易让人想起ARM,其实Signaltap跟ARM没有半毛钱关系。这里的嵌入是嵌到FPGA的内部。

如果你用过Signaltap,就会发现,每次都要综合整个工程,再下载代码,然后才可以使用Signaltap,这说明了Signaltap是由一些逻辑电路组成,而不是仿真。

请不要把Signaltap和Modelsim混为一谈(如果是一样的话,就不用起两个名字了),就算两个软件的界面上的波形很像。

以下是Signaltap界面上的波形(代表实际的波形)。

以下是Modelsim界面上的波形(代表仿真的波形)。

二、基本操作。

首先,要确保你的工程能成功综合,并且所消耗的资源不能为0。

然后在Quartus界面下,点开Tools菜单,打开SIgnaltap。

在SIgnaltap界面下,确保Jtag和FPGA开发板能用。

设置主时钟,点击红色箭头所指的地方。

在Filter下,一般是选择Post-Compliation(综合后)。

点击List,可以看到节点名。

可以看到由原理图或者HDL文件的节点名了,这里选择clk50M。

这个clk50M不是随便选的,是原理图上的全局时钟,这里用晶振的时钟做为Signaltap的采样时钟,你也可以选PLL倍频后的时钟,这都是看具体情况而定。

选择采样深度,也就是采多少个点,这也是看具体情况而定,深度越大,需要的资源越多,这里选择128。

确保已选中Setup标签(红色箭头所指,选中为白色,未选中为灰色),然后双击红圈所示区域。

Filter同样选择综合后,同样点List列出所有节点。

选择你想要观察的节点,这里选的是dig和segment。

dig和segment,同样在原理图(或者HDL文件)中有出现过的,是有效的节点名。

成功添加节点的话,会在Setup和Data标签下,出现下图所示。

好了,现在你可以在Quartus界面下,点Save all以保存所有文件,然后综合,再到Signaltap界面下,选择sof文件,下载(红色箭头所示的图标)。

成功下载sof的话,可以看到Ready to acquire。而Instance Manager右边有四个图标,分别代表单次运行,连续运行,停止和读数据。

点连续运行,就能看到Signaltap在采集数据了(数据在不断地跳,难以观察)。

如果你不停止掉Signaltap,是不能综合代码的。

因为使用Signaltap,所以会额外消耗更多的资源,如果不想使用Signaltap的话,可以在Assignments->Settings设置一下,如下图所示。

只要去掉Enable SignalTap II Logic Analyzer前面的勾就可以了,这样,综合出来的电路就不带Signaltap了(资源会减少)。

三、高级操作。

1、条件触发。

先停止Signaltap,然后在Setup标签下,勾选条件触发下面的Basic AND,然后在下面输入想要的触发条件,这里填的是EF,意思是当dig(8bit)为十六进制的EF时,就会触发Signaltap采样,而其它情况不触发。其中Basic AND是所有触发条件相与之后为真,就触发采样,当然也可以选择Basic OR(相或为真就触发采样)和Advanced。

如果不满足触发条件,Signaltap就一直显示Waiting for trigger。

一般用上面的方法设置条件触发就够用了,如果有特殊要求,就用Signal Configuration下的条件触发,会有更强大的功能。

2、文件输出。

在File->Export,可以把Signaltap采样到的数据,保存为其它格式的文件,其中有csv,tbl,bmp,jpg,vcd,这五种格式可选。其中csv格式适合配合MATLAB使用。

3、数据格式。

在需要观察的节点上,右击。

然后在Bus Display Format下,可以选择不同的数据格式,以方便观察。其中unsigned/signed line chart是用来观察连续信号的波形,如DDS下的sin/cos,或者是FSK,QAM等。

4、设置时间单位。

在红色箭头所指的地方,右击一下,选择Time Units,可以设置时间单位。

我这里的采样时钟是50M,所以,周期是20ns。

这样,Signaltap每采一个数据,所需要的周期就是20ns。为什么这个时间单位需要人手设定?就是因为Signaltap不带频率计的功能(下面在Signaltap内部原理有讲述)。

5、MATLAB与Signaltap联合使用。

首先,要把signaltap运行起来,采集到数据。

然后,在MATLAB下,添加quartus的bin文件的路径(32位的添加bin,64位的添加bin64),然后调用alt_signaltap_run函数就可以了,但是我这里却找不到该函数,实际是有这个dll的,路径也添加正确,该方法未果。

四、Signaltap内部原理。

上图是signaltap的内部结构图,它是利用JTAG边界扫描的原理来读取FPGA内部节点的值,然后送到buffer(缓冲器),再由JTAG把数据送到quartus下的signaltap软件。

整个过程,都只有读取数据的作用,至于数据的频率(如DDS下的sin信号的频率)是无法直接知道的,只能让设计者自己计算得出。

五、其它问题。

为什么在clk50M下面,会产生clk50M~clkctrl这个信号?

在工艺映射表(适配后),可以查看到这个信号。

其实clk50M~clkctrl就是clk50M的buffer而已,用于提高扇出系数,这里fan-out=274。

版权声明:本文为博主原创文章,未经博主允许不得转载。

彻底掌握Quartus——Signaltap篇相关推荐

  1. FPGA开发 Quartus Signaltap的基本使用

    一.前言 Signaltap是嵌入式逻辑分析仪,说到嵌入式,很容易让人想起ARM,其实 Signaltap 跟 ARM 没有半毛钱关系.这里的嵌入是嵌到 FPGA 的内部. 如果你用过Signalta ...

  2. 应力波通信系统实现(四)——通信信号处理技巧

    扩频调制与DDS工具使用 [基础]Modelsim的基本使用 Modelsim仿真如何查看内部信号 通过文件读写方式实现Matlab和Modelsim的联合仿真 Matlab和Modelsim联合仿真 ...

  3. (筆記) 如何增加SignalTap II能觀察的reg與wire數量? (SOC) (Quartus II) (SignalTap II)

    Abstract 無法在SignalTap II觀察reg與wire,主要都是因為被Quartus II優化的關係,在Quartus II簡單的設定,就能增加SignalTap II能觀察的數量. I ...

  4. FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)

    1.什么是ISSP?ISSP有什么用? Quartus II提供了In-System Sources and Probes Editor调试工具,通过JTAG接口使用该工具可以驱动和采样内部节点的逻辑 ...

  5. Quartus II工具1——signaltap

    工作的原因,开始真正的去用signaltap,以前在校时,也就是随便玩玩,看看波形,找找感觉,把示波器搬到电脑上. 前几天开始要用的时候,才发现基本上参数都不懂,当时那种似懂非懂的感觉非常不爽.所以开 ...

  6. (原創) 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)

    Abstract 撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-tim ...

  7. 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)

    Abstract 撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-tim ...

  8. Quartus II SignalTap使用

    首先说一下SignalTap和ModuleSim的区别,很显然这是两个不同的东西,SignalTap是集成于Quartus II的,是通过JTAG来抓取实际信号用于分析的,而ModuleSim则是独立 ...

  9. Quartus II SignalTap使用心得

    最近在研究SignalTap,翻了许多博客,也请教了好多前辈,收获了不少,在此做一个总结. 我用的Quartus II版本是64-Bit Version 15.0.2 Build 153,所用的语言是 ...

最新文章

  1. 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)
  2. gz解压java,java 解压gz
  3. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
  4. python——全局变量和局部变量
  5. 编写程序来模拟计算机LRU算法,操作系统-页式虚拟存储管理程序模拟.doc
  6. 公司行为(Corporate Actions)
  7. Asp.Net WebForm生命周期的详解
  8. Discuz 论坛实现qq小程序
  9. QuickWebApi2:使用Lambda方式,完成对WebApi的开发和调用-文档的生成
  10. HDU 4915 Parenthese sequence
  11. Python 之 解析xml
  12. 救济金发放_通过专门的视频游戏提供癌症救济
  13. chemdraw如何改中文_教您如何掌握ChemDraw页面设置技巧
  14. 大学物理复习--变化的电磁场
  15. uniapp中app、h5、小程序引入高德地图定位,并封装起来调用。
  16. ckeditor富文本解决文段首行缩进问题
  17. springboot 整合lombok
  18. mysql按1-12月查询统计数据
  19. 天津大学计算机系专业,请问天大计算机专业的研究生怎么样啊?
  20. 浅谈链改_羊了个羊_应如何设计通证模型?

热门文章

  1. 解决Win10 丢失蓝牙功能的问题
  2. Android 字体库的使用。引入外部字体
  3. Netty源码解析-Netty内存泄露检测
  4. 我工作上常用的--测试用例文档模板
  5. Linux操作系统下复现github上的项目(一):下载项目、配置环境
  6. Stratifyd入驻腾讯云市场,AI赋能品牌数字化升级
  7. 地瓜叶:高纤高铁多 ,全身是宝
  8. 小繁的Binary_Indexed_Tree学习笔记
  9. ESP8266安卓TCP客户端开发(含全部源码)
  10. 夜神模拟器和安卓连接