Quartus的Signal Tap II的使用技巧

2023-12-28 15:44
文章标签 使用 技巧 ii signal quartus tap

本文主要是介绍Quartus的Signal Tap II的使用技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述:

Signal Tap II全称Signal Tap II Logic Analyzer,是第二代系统级调试工具,它集成在Quartus II软件中,可以捕获和显示实时信号,是一款功能强大、极具实用性的FPGA片上调试工具软件。

传统的FPGA板级调试是由外接的逻辑分析仪连接到FPGA的控制引脚,将内部信号引出至引脚I/O上,接着进行板级调试。

        note:这种方法缺点是,需要逻辑分析仪,且效率很低,经常需要飞线,而且如果要测10个信号以上就非常庞杂,而且,考虑到100Mhz左右的信号完整性,不能用逻辑分析仪,要用高性能的示波器,测量的信号质量也存在失真的情况。

Signal Tap II在线逻辑分析仪克服了以上所有缺点,将采样逻辑电路编程后放在FPGA中,即,用FPGA资源来构成了嵌入式逻辑分析仪。

操作:

1、打开Signal Tap Logic Analyzer

在Quartus软件中打开待测工程,然后选择Signal Tap Logic Analyzer,

在弹出的New File from Template窗口选择Default (default selection)即可;

弹出Signal Tap Logic Analyzer界面,包含例化管理器(Instance Manager)、JTAG链配置(JTAG Chain Configuration)、节点列表和触发条件(Data与Set两个子界面可选)、信号配置(Signal Configuration)、分层设计(Hierarchy Display,分层显示)以及数据日志(Data Log),如下图。

2、实例管理

首先选择例化管理器,选中默认的auto_signaltap_0,可以增加、删除、重命名实例,这里一个实例可以理解为一组信号对+一个配置时钟,可以通过Enabled来选择该实例是否被编译到该工程中,因此可以有多组实例,方便分析各不同模块的信号。

3、时钟配置

选择信号配置,进行实例的时钟配置。

这里注意:只有在工程已进行过分析与阐释后,才能在signal tap中添加想要观察的时钟或者信号

弹出的Node Finder界面中,首先在Options-Filter栏选择:Signal Tap: Pre-synthesis,在Options-Look in栏中选择down_sampling_top.v模块,接着输入想要在down_sampling_top.v模块中查看的信号的时钟:clk_7_148m,然后search搜索,在Matching Nodes中双击即可将clk_7_148m添加到Nodes Found栏,并单击ok即可完成时钟的添加,如下图:

完成后根据需要选择采样深度即可,其他默认,如下图:

4、添加待抓取信号

双击节点列表和触发条件界面,弹出Node Finder窗口,与上一步添加时钟信号一样的设置,选择自己想要的信号,最后要记得单击insert按键才能正常将信号成功添加。

5、设置信号触发条件

默认如下,但是可以根据需要对各个信号进行单独设置触发条件:

Don't Care不设置触发方式
Low低电平触发
Falling Edge下降沿触发
Rising Edge上升沿触发
High高电平触发
Either Edge双边沿触发

6、记得保存

选择保存路径为工程所在的quartus文件夹下,打开所在目录会发现多了一个stp1.stp文件,该文件即上述添加至工程中的分析文件。

7、开始编译

在工具栏选择Start Compilation 开始编译,等待工程编译完成即可。

8、选择烧录文件并下载

首先连接JTAG烧录器与FPGA板,并给FPGA板子上电,接着Scan Chain,识别FPGA器件,然后选择生成的sof文件,并单击开始下载。

9、查看抓取的波形

单击Run Analysis运行分析一次,也就是刷新采样一次,单击Autorun Analysis自动连续运行分析,也就是一直刷新采样。

补充:

1、在打开的波形窗口,左键单击放大波形窗口,右键单击缩小波形窗口;

2、波形窗口的数据默认16进制,可以选中信号名后,右键单击-Bus Display Format中选择十进制或者其他进制;

3、在Signal Tap Logic Analyzer中下载程序时软件比较卡,可以在Quartus 的Programmer中下载好以后直接在Signal Tap Logic Analyzer分析;

4、在上述第4步添加待住区信号时,如果有些wire/reg定义的信号不能被观察到,或者说stp1.stp中有的信号/时钟显示红色如下:

这表示sof文件烧录到fpga的逻辑资源中没有tx_vid_clk,可能是原来有后来.v模块中删除了,更有可能是有,但是被Quartus软件优化掉了,导致无法使用Signal Tap II观察,针对模块中有,但是signaltap中没有的情况,有两种解决办法:

        方法一、将wire/reg定义的信号改成端口信号(这种方法繁琐不推荐);

        方法二、在待观察的wire/reg定义的信号后面添加特殊字符:

wire        [9:0]       time_cnt  /*synthesis keep*/ ;

reg         [9:0]        time_cnt /*synthesis keep*/;

或者

(* noprune *) wire        [9:0]       time_cnt ;

(* noprune *) reg        [9:0]       time_cnt ;

5、Signal Tap II除了支持电平、边沿触发外,还支持计数触发,如可以对time_cnt计数器设置具体的值来触发。

参考链接:

noprune keep preserve 区别


 

这篇关于Quartus的Signal Tap II的使用技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546457

相关文章

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c