精华内容
下载资源
问答
  • 具体操作如下,先选择好深度,将信号抓到,在信号附近鼠标右击,会有一个选项create signaltap II list file,点击保存后,在工程目录下会自动产生一个.txt文件,里面便是你刚抓的波形,只是全部以数字的形式出现...
  • 使用这个工具差不多两年了,大致总结一下目前遇到的一些问题,这些问题的根本原因,我还是没有深入研究,但是后续会对这些问题进行跟踪,得出一些规律。
  • signal tap简单详细使用

    2020-08-10 22:52:51
    在quartus中的signal tap 就是能够方便的抓取模块中的信号,这类似与ISE的chipscope,但是在vivado中就没有了,必须内部例化ila,抓取的数据也不太方便,所以个人对vivado的使用还是感觉不太方便。言归正传,这里将...
  • SignalTap II仿真步骤

    2015-11-27 17:55:23
    Quartus ii中SignalTap II最简单的仿真步骤。
  • 随着芯片集成度的提高及封装技术的发展,系统设计与调试变得越来越困难,基于Quartus II软件自带的第二代系统级调试工具SignalTap II,采用EP4CE15F17C8的FPGA开发板为实验平台,以AD9280为核心进行数据采集系统的...
  • Quartus II design 是最高级和复杂的,用于system-on-a-programmable-chip (SOPC)的设计环境。 Quartus II design 提供完善的 timing closure 和 LogicLock™ 基于块的设计流程。Quartus II design是唯一一个包括以...
  • 该文档为黑金最新教程,详细写了SignalTap的基础教程,文档基于quartus17.1,如果需要软件可以到私信我或者在我的相关博客下留言,博客链接:https://blog.csdn.net/VCA821/article/details/80503200
  • 一种matlab调用signaltap采集数据的方法
  • SignalTap II 的出现解决了 FPGA 设计中信号分析的难题,SignalTap II 全称为 SignalTap II Logic Analyzer,从名称上可以看出它本质上就是一个逻辑分析仪,不同的是它是免费的:硬件部分用 FPGA 内部资源实现,软件...

    1.1对于 FPGA 开发者而

    SignalTap II 的出现解决了 FPGA 设计中信号分析的难题,SignalTap II 全称为 SignalTap II Logic Analyzer,从名称上可以看出它本质上就是一个逻辑分析仪,不同的是它是免费的:硬件部分用 FPGA 内部资源实现,软件集成在了 Quartus II中。它可以对 FPGA 的输入输出管脚及任意内部信号进行逻辑分析,能迅速分析电路某些信号的运行状态和锁定设计问题,方便 FPGA 开发者对设计进行调试。SignalTap II 占用的是 FPGA 的内部资源(以 RAM 资源为主),其工作原理为:将采样的经过修改的综合门电路信号存储到内部 RAM 中,通过 JTAG 传到 PC 机上,在软件上显示供开发者观察分析。其采样深度会受 FPGA 内部 RAM 资源容量的限制,但对采样深度要求不是很高的信号来说,已经足够使用。总之, SignalTap II 这个免费的逻辑分析仪在 FPGA 开发过程中应用非常广泛,很多情况下能替代逻辑分析仪进行信号分析。下面就正式介绍 SignalTap II 的使用方法。

    2.signalTap 的使用

    有了已经编译完成的综合门电路工程,我们就可以正式介绍 SignalTap II 的使用了。一般来讲, SignalTap II 的使用流程分为四个步骤:

    创建 SignalTap II 文件、

    设置 SignalTap II文件、

    捕获信号、

    分析信号

    下面详细介绍以上四个步骤:

    2.1 创建 SignalTap II 文件

    要使用 SignalTap II 分析信号,首先要在 Quartus II 中创建一个 SignalTap II 文件,并将其添加到对应工程中。需要注意的是,每个 Quartus II 工程中可能有多个 SignalTap II 文件,但只能使能( enable)其中的一个,使能后的 SignalTap II 文件才能被编译进工程和正常使用。

    打开创建并编译完成的 Quartus II 工程 ,首先创建 SignalTap II 文件。在 Quartus II主界面选择菜单栏的 Tools->SignalTap II Logic Analyzer,打开 SigalTap II 软件,如下图红框所示。

    点击后就进入了 SignalTap II 软件的工作界面,如下图所示。 VITO 把 SignalTap II 软件的主界面分为四个区域,分别是:状态区(显示 SignalTap II 运行状态)、 JTAG 区(检测 JTAG连接情况及下载固件)、设置区(对 SignalTap 各项参数进行设置)和数据区(显示捕获到的信号数据)。

    其中数据区与设置区是重叠的两个栏,上图中显示的是设置区,点击下边栏的 Data,我们把显示切换为数据区,数据区还没有任何数据

    在 SignalTap II 主界面下选择 File->Save(或直接 Ctrl+S)保存文件,点击后得到下图,名称就用其默认名称 stp1,点击保存,完成 SignalTap 文件的保存。注意观察对话框的下部有一个选择 Add file to current project,即是否把文件添加到当前工程中,默认是勾选的,我们自然要把 stp1 添加进工程,所以无需改变设置。

    提示:

    因为创建的 Quartus II 工程中没有 SignalTap II 文件,所以打开 SignalTap II 软件后它会自动为我们创建一个(未保存的) 。如果工程中已有文件的话,打开软件则会显示已有的 SignalTap II 文件,这时想要新建 SigalTap II 文件的方法为: 在 SignalTap II 主界面下选择 File->New File,即可新建一个 SignalTap II 文件。此外,再强调一下本节开始提到的一点:一个 Quartus II 工程中可以有多个 SignalTap II文件,但只能使能一个。我们在完成 SignalTap II 的创建与设置后,要重新编译工程,也只有被使能的 SignalTap II 文件会被编译进工程中,占用 FPGA 的资源。编译后,也只有被使能的 SignalTap II 文件能够使用,如果想使用工程中其它文件,需要重新使能其它文件和编译。

    2.2 设置 SignalTap II文件

    下面进行关键的一步,设置 SignalTap II 文件。一般来讲,一个 SignalTap II 文件在使用前需要进行的设置有: 添加采样时钟、 添加信号、设置采样方式、设置触发方式、设置触发条件

    首先添加采样时钟

    我的板子上采用的是 50MHz 的晶振,在引脚分配时已经将它作为输入的时钟信号 clk,我们把它作为采样时钟。方法是在 SignalTap II 软件的主界面,点击设置区下图红框所示的位置,就会弹出 Node Finder 对话框,我们要记住这个对话框,因为一会添加信号时还会遇到它。

    下图红框的选项用于筛选信号,一般用得较多的是 Named、 Filter 和 Look in,下面分别介绍这三个选项。

    Named 是通过信号名称筛选信号,默认为“*”,表示跳过名称筛选。比如我们已经知道输入时钟的名称为 clk,在选项框中输入 clk,点击 List,则 Node Found 列表中就列出了名称为 clk 的信号,如下图所示。

    Filter 是根据信号类型来筛选信号,常用的有 pre_synthesis 和 post-fitting,如下图红框所示,其中 pre-synthesis 代表综合前设计中的信号,与 Verilog 设计中存在的信号最为贴近;而 post-fitting 则添加了综合优化、布局布线之后的一些信号,与设计电路的物理结构最为贴近。一般来讲,我们使用 pre_synthesis 已经足够。

    Look in 可以将信号筛选锁定在某个层次和模块进行。比如一个复杂的工程包含多个不同
    层次的模块,我们在寻找信号前需要锁定信号所在的层次和模块再去寻找,方法是点击下图红
    框位置按钮,弹出 Select Hierarchy Level 对话框。因为 本工程只有一个模块,无需修改。

    介绍完筛选信号后,下面正式把 clk 添加为采样时钟信号。我们用 Filter 筛选信号,选择
    pre_synthesis 类型,点击 List,列出了所有信号。
    首先介绍下 Nodes Found 和 Selected Nodes 两个列表框(分别以左框和右框代替),左框中列出了所有筛选合格的信号,右框中列出了所有将被添加的信号。我们的工作就是挑选左框中的信号,将想要添加到 SignalTap II 中的信号移到右框。在左框或右框中,单击某个信号代表选中信号,双击对于左框会把信号添加到右框中,对于右框则会移除信号。此外,还有在
    两框之间的四个按键可进行信号添加删除工作,它们的功能如下图所示。

    上图已经将 clk 信号添加完毕,点击 OK 就完了了采样时钟的添加,此时再观察设置区的

    Clock 一栏,可以看到 clk 信号已经被添加,如下图所示。

    接下来添加信号。在设置区的左边空白部分右键单击,选择 Add Nodes,如下图框 1 所示。当然也可以直接双击空白部分,正如框 2 提示的那样。

    然后弹出我们并不陌生的 Node Finder 对话框,采用 Filter 的 pre_synthesis 方式筛选出信号,并将除 clk 和 rst_n 之外的信号添加到 Selected Nodes 中,如下图所示,点击 OK 完成。

    这时观察设置区左边的空白部分,可以看到已经添加进来的信号。

    2.3 捕获信号 设置采样方式

    接下来设置采样方式。第一步是设置采样深度。采样深度的设置位于设置区右边的 Sampledepth 选项处,深度从 0 到 128k 可选,单位为样点数。比如设置为 128,代表采样深度为 128,即可以采 128 个样点的信号,因为工程较简单,我们把深度设为 128 就足够了。

    第二步是设置采样模式。采样模式分为分段采样和非分段采样(也叫循环采样),如果没有
    勾选上下图红框所示的 segment( 分段),就是非分段采样,在信号触发后就连续采样至采样
    深度,即填满整个 SignalTap II 的存储。我们还要选择 Type(类型),一般设置为 Continuous 即可。

    如果勾选上了 segment,就是分段采样,将采样深度分为 N 段,信号每触发一次就采样

    一段长度的数据,需要连续触发 N 次来填满整个存储。我们需要选择采样的段数及每段长度,如图中所示, 8 16sample segments 代表分成 8 段,每段 16 个采样点。

    以上就是采样方式的介绍。我们设置采样深度为 128,模式为连续采样, Type 选择Continuous,完成后如下图所示。

     设置触发方式

    接下来是设置触发方式。触发方式的设置分为触发流程控制( Trigger flow control)、触发位置( Trigger position)和触发条件( Trigger conditions),如下图所示,下面分别介绍这三个选项。

    触发流程控制分别为 Sequential(顺序的)和 State-based(基于状态的)两种, State-based 用于较复杂的触发控制,对于一般的信号分析选择 Sequential 即可。

    触发位置分为前端触发( Pre)、中间触发( Center)和后端触发( Post),它决定了信号触发点在整个采样数据中的位置,这里我们选择前端触发

    触发条件选项可以选择触发条件的级别,最多可以设置 10 个级别的触发条件。以Sequential 控制触发为例,对于多个级别的触发条件,其工作原理如下图:对于非分段采样,先等待判断 1 级触发条件是否满足,若满足则跳到触发条件 2 等待判断,否则继续等待,直到最后一级的触发条件判断满足后,正式开始捕获信号;对于分段采样,最后一级触发条件满足后开始捕获第一段信号,后面只需满足最后一级触发条件条件就再次捕获一段(这里我们可以理解为前面级别的触发条件满足一次即可)。对于简单的信号分析,1 个触发条件级别已经够用,我们选择 1

    以上就是触发方式的介绍。我们设置触发流程控制为 Sequential,触发位置为前端触发,触发条件为 1 个,如下图所示。

    设置触发条件

    设置 SignalTap 文件的最后一步就是触发条件的设置了。触发条件的类型分为 Basic 和Advanced,如下图红框所示,一般选择 Basic 即可。

    触发条件的设置对象是添加的信号,方法是选中某个信号,右键单击,得到下图红框所示的触发条件: Don’ t Care 代表任意条件都触发, Low 表示信号低电平时触发, Falling Edge表示信号下降沿时触发, Rising Edge 表示信号上升沿时触发, High 表示信号高电平时触发,Either Edge 表示任意沿触发。需要注意的是,同一列中的 Trigger Conditons 属于同一级别,
    可以给该列中多个信号同时设置触发条件( 注意这里与上面设置触发条件级别的区别!),比如给 in1、 in2 都设为 Low,那么当 in1、 in2 信号都为低电平时,才会触发采样我们设置的触发条件为 in1:Low,即 in1 为低电平时触发。这样触发条件的设置也完成了。至此,整个 SignalTap II 文件的设置也就结束了。下面是设置区的截图,大家可以对比下设置。别忘了设置完成后保存文件!最好是边设置边保存!

    捕获信号

    SignalTap 设置完成后,要想用其捕获信号,还要编译下 Quartus II 工程。因为此时 stp1文件已经是 Quartus II 工程的有效 SignalTap II 文件,我们无需其它设置,直接编译工程即可。

    编译完成后,打开 SignalTap II 软件,在运行 SignalTap II 之前,需要打开 TIGER BOARD,用 USB Blaster 连接开发板与 PC。 我们需要将 SOF 文件通过 JTAG 区下载到开发板中。此时JTAG 区如下图所示,标红内容显示没有发现器件。

    这时我们在 Hardware 中选择对应的 USB Blaster,得到下图,可以看到刚才标红的内容变成了 JTAG Ready,表示 JTAG 已经就绪。 Device 一栏的内容也显示出来了(如果仍然没有发现 Device,可以点击右边的 Scan Chain 搜索器件)。

    然后添加 SOF 文件,点击下图红框位置,找到工程的 sof 文件,点击 Open 完成添加。
    添加 SOF 文件完成后就可以下载 SOF 了,点击下图红框所示按键下载 SOF 文件到板子中。

    SOF 文件下载完成后, SignalTap II 运行的一切准备工作就 OK 了,我们再将目光锁定在控制区,如下图所示: 1 键是运行键,点击一次捕获一次信号; 2 键是连续运行键,点击一次捕获连续进行; 3 键是停止键,可以中止当前的信号捕获。 Status 栏显示着捕获状态,分为Not running(未运行)、 Waiting for trigger(等待触发)和 offloading acquired data(导出捕获到的数据), 此时显示 Not running,表示捕获未运行。

    点击运行键,开始捕获信号,捕获完成后,设置区会自动切换到数据区,得到下图所示的数据 :

    至此捕获信号就完成了。

    最后,功能测试正常之后,是要从工程中移除signaltap的, 因为使用Signaltap,所以会额外消耗更多的资源 :

    下面这张图是包含 signaltap 的资源使用情况:

    面这张图是不包含 signaltap 的资源使用情况:

    下面介绍从工程中移除 signaltap 的方法:

    1、 Assignments->Settings设置一下,如下图所示。

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

    展开全文
  • FPGA控制AD9226进行采样,采样频率可设置,并用signaltap成功验证其可行性!
  • B5517AF1-98C9-4593-A79D-746BA1A589BA.png (34.05 KB, 下载次数: 13) 2020-8-8 11:38 上传 答:出现这种问题一般是由于触发条件第一次成立和下一次成立之间的间隔,小于signaltap设置的一个窗口的采样深度造成的。...

    马上注册,看完整文章,学更多FPGA知识。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    a59f4e43d2cf1451bbf2f16d0a0cd660.gif

    x

    Signaltap教程

    【问题1】 按以下设置采样时钟,结果提示出现wait clock,没有抓到数据。

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200317122057.png (4.59 KB, 下载次数: 8)

    2020-3-17 12:21 上传

    答:可能的原因如下:

    1.该时钟确实是没有,即一直为0,或者一直为1。

    2. 该clk不是本模块产生的,而是其他模块产生,然后在此模块使用。这个时候有可能不能作为采样时钟。正确的做法,哪个模块产生的就使用那个模块的信号。例如常见的PLL的C0,C1等。

    【问题2】 如果使用在线调试工具,测量一个信号低电平的间隔。

    答:假设预期一个信号低电平时间为2000个时钟周期。那么可以如下设置。

    1. 采集深度设置至少为2K,即2048个点,保证能采到一个低电平周期时间。

    2. 触发条件为:该信号的下降沿。

    当触发条件满足后,查看低电平的采样点个数,即可测量出时间。

    如果受资源限制,采样深度小于信号低电平时,可以在代码里添加计数器,通过观测计数器来推测出低电平时间。

    【问题3】SIGNALTAP每次后,总是出现红色提示,如下图。

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200703135545.png (55.2 KB, 下载次数: 10)

    2020-7-3 13:57 上传

    答:有可能以下几种情况,请逐个进行排除。1. 每当修改了SIGNALTAP的设置,如添加观察信号,改变深度等,需要保存后,在QUARTUS重新编译一次,生成的文件再烧写。

    2. 如果烧写后,仍然出现上面情况:一定要检查sof文件生成的日期,要确保是刚刚生成的!!(这个很重要)

    3. 有部分人喜欢在programmer里烧写SOF文件,然后再在SIGNALTAP里再烧写一次。这是没有必要的。请不要使用Programmer烧写。

    【问题4】在SIGNALTAP添加信号,编译时出现如下错误。

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200703154526.png (41.43 KB, 下载次数: 8)

    2020-7-3 15:48 上传

    答:使用在线调试工具,是需要占用FPGA芯片资源的,特别是RAM资源。观察的信号越多,观察的深度越大,所需要的RAM资源就越多。

    上面的问题是指,整体的资源(设计占用的资源 + 调试工具占用的资源)已经超过了芯片资源本身。

    为了解决上面问题,可以将观察信号减少,或者将深度减小,再次编译试试。

    【问题5】 SIGNALTAP观察的现象和代码对不上的问题。如下图

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200703155225.png (24.95 KB, 下载次数: 12)

    2020-7-3 15:53 上传

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200703155208.png (5.46 KB, 下载次数: 11)

    2020-7-3 15:54 上传

    上图中,add_flag由1变0条件是end_cnt_B=1。但观察到的是add_flag在end_cnt_B为1之前就变低了。

    答:上面已经定位到某个采样点的时刻处,这已经非常好!

    当定位到某个采样点,波形和代码对不上的,应该检查一下时钟:SIGNALTAP的采集时钟,必须与代码中的“clk”一致!

    如果不同,就会有异常现象,看到的也不正确。

    【问题6】在添加信号时,搜索框中搜索不到所需要的信号,如下图

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200703181931.png (16.58 KB, 下载次数: 11)

    2020-7-3 18:20 上传

    答:1. 搜索信号时,建议加上通配符*,即上面应该搜索“*dout*”。因为SIGNALTAP的信号名与代码中的并不相同,有时会加前缀和后缀。

    2. 其实如果搜索不到,那就不要搜索,直接点击查看有没有这个信号,从而定位出是“搜索问题”,还是说“本身没有此信号”。建议多动手多思考。       3. 将“Filter”设置为“Design entry all name”选项,再搜索。 如果此窗口都没有所需要的信号,说明就是没有。

    【问题7】 采样时钟必须是时钟信号吗?

    答:在线调试工具在采样时钟的上升沿,对信号进行采样。

    注意,在线调试工具不是智能的,它无法判断连接到采样时钟的信号是时钟。它只是在采样时钟的上升沿,对信号采样。

    也就是说,连到“采样时钟”的信号,可以是任意信号。但一般来说,这没有任何意义。

    【问题8】signaltap在使用多窗口进行触发的时候,捕捉到的波形出现空白的情况,是什么原因?

    8b03aefba3539d2975172f15f167b167.gif

    B5517AF1-98C9-4593-A79D-746BA1A589BA.png (34.05 KB, 下载次数: 13)

    2020-8-8 11:38 上传

    答:出现这种问题一般是由于触发条件第一次成立和下一次成立之间的间隔,小于signaltap设置的一个窗口的采样深度造成的。

    【问题9】使用signaltap的时候,下载完程序出现如下提示,连接设置都没有问题,怎么办?

    8b03aefba3539d2975172f15f167b167.gif

    lALPGo_k8iaraUzNAuDNBVY_1366_736.png (116.86 KB, 下载次数: 14)

    2020-8-12 09:53 上传

    答:一般是由于signaltap工程没有保存,点击左上角的File,选择“Save as”,另外起一个名字进行保存。

    【问题10】在线调试工具采集到的信号,其时间是怎么算的?

    答:在线调试工具,每次触发时,只能看到 时间 =  采样时钟频率*采样深度。 例如说采样时钟是50M,采样深度为2000个点,那么将只看到20*2000ns内的信号。

    【问题11】在线调试工具严格反应FPGA内部数据么?为什么我的波形不对?答:在线调试工具肯定是要严格反应内部数据的,如果这都做不了,那这FPGA也不用玩了。

    波形不对,只能说明 1. 你工具使用不当;2. 这波形确实是不对。

    【问题12】抓取CLK信号来看,发现它一直为1,明明是有时钟的,为什么看不到变化?如下图

    8b03aefba3539d2975172f15f167b167.gif

    mmexport1611564595068.png (15.64 KB, 下载次数: 7)

    2021-1-25 16:52 上传

    答:注意一下SIGNALTAP中“采样时钟”和采集信号“CLK”的关系。如果“采样时钟”就是“CLK”,想象一下会发生什么现象?

    要知道SIGNATAP的原理,它是在“采样时钟”的上升沿,去采信号“CLK”。由于“采样时钟”和“CLK”是同一个信号。

    当“采样时钟”上升沿的时候,同时也意味着“CLK”的上升沿,它们是同频同相的,所以你会永远采到同一个值:一直为1或者一直为0。不管运行多久时间,都不会变化的。这不是CLK没有,而是“观测”的缺陷是这样的。

    使用在线调试工具定位的技巧

    【在线调试工具求助技巧】!!!在线调试工具,定位时,正确的求助方式。(请按下面方式截图)!!!!

    8b03aefba3539d2975172f15f167b167.gif

    003014pqfnqq2nwz6fryrc.png (107.41 KB, 下载次数: 11)

    2020-8-5 19:38 上传

    1. 上面是在线调试工具的波形图,下面是对应的代码。        2. 哪个信号有错误,就看哪个代码。

    3. 波形图要放大,能看到错误时刻"某一个采样点",如图中的最上行。

    4. 波形图要将代码中出现的所有信号拉出来。

    5. 波形图的信号排列顺序是:复位、条件、结果信号。

    6. 哪一个时刻有错,要按上图的箭头标示出来。

    7. 特别注意:在线调试工具的采样时钟,必须为该信号的工作时钟!!!

    8. 如果组合逻辑信号不能观察,那可以拉组成该组合逻辑的所有信号,然后推测出结果。

    9. 对于觉得上面步骤太麻烦的,我只想说一句:如果你能定位出问题,可以不这么仔细。如果你都定位不出来了,此时不就是要更加认真仔细一些吗?

    【问题2.1 只有波形图,但没有代码】fpga仿真输出是对的,但是用signaltap显示出来就一直为零,为什么?

    8b03aefba3539d2975172f15f167b167.gif

    TIM图片20200805193447.jpg (30.38 KB, 下载次数: 10)

    2020-8-5 19:36 上传

    答:本问题,只有波形图,但没有代码。请按 【在线调试工具求助技巧】中第1点来截图讨论。

    【问题11】我们做了一个工程,用SOF文件运行不正常,但是加上逻辑分析仪检测数据正常运行,将该SOF生成JIC仍然不可以,一般遇到这种情况,什么原因啊?

    答:一般是可以考虑时序不满足而导致的,具体请看时序报告

    【问题12】在线调试工具一直处于等待触发的状态。如下图。

    8b03aefba3539d2975172f15f167b167.gif

    6F23A3EA-F95B-4266-89C6-F2A387DF2C6C.png (23.25 KB, 下载次数: 11)

    2020-8-22 11:41 上传

    答:在线调试工具没有触发,只能“实实在在说明”一点:触发条件不满足! 满足了,就一定会触发!

    1. 比较多错误的一点是:多个信号是相与还是相或的关系。例如上图中,其触发条件是:rst_n上升沿 并且 cnt值为5。只是rst_n上升沿了,而cnt不等于5,也不会触发。

    2. 假设上图中触发条件“只有rst_n为上升沿”,如果按了按键后,还是没触发。这已经给你提示了:rst_n信号和按键之间有问题,例如管脚没配对;例化不正确等,你需要检查这些。

    【问题13】SIGNALTAP添加的信号,显示的是红色,表示什么含义?

    8b03aefba3539d2975172f15f167b167.gif

    微信图片_20200823205928.jpg (32.97 KB, 下载次数: 9)

    2020-8-23 21:00 上传

    答:添加的信号,如何是红色,其可能的原因有:

    1. 该信号可能一直处于固定值,例如固定为0,固定为1,或者其他数。

    2. 该信号可能没有”用“,从而被优化了。这里没有用,可能是直接的,也可能是间接的。

    a. 直接是指,如设计了信号A,但信号A没有作为条件来产生任何信号,那么A就是没用的,会被优化;

    b. 间接是指,如设计了信号A,然后使用A作为条件产生了信号B,但B没有拿去用,那么B是无用的,间接说明A也是无用的,B和A都会被优化。

    3. 该信号是组合逻辑产生的信号。组合逻辑产生的信号,在SIGNALTAP中可能不可观察,但VIVADO不存在此问题。

    【问题14】在ISE,chipscope中抓取信号发现,触发位置并不是设置的触发点,稍微滞后了半个采样周期,这个是我哪儿设置的不对吗,还是本来就是这样的。

    8b03aefba3539d2975172f15f167b167.gif

    1.png (60.7 KB, 下载次数: 12)

    2020-8-24 10:16 上传

    答:在线调试工具,都是一个上升沿采样一个点,所以只有第1个采样点,第2个采样点的概念,绝对没有“中间点”的概念。图上,只不过是chipscope把“这个点”标在数据中间而已,只是一个显示的方式。

    【问题15】这种波形窗口能增高的吗?  要看有符号数 ADC波形,这个窗口高度太低了,看不见波形了

    8b03aefba3539d2975172f15f167b167.gif

    微信图片_20200919165236.png (42.95 KB, 下载次数: 6)

    2020-9-19 16:53 上传

    答:这个波形看起来小,主要是由于数值相对于位宽来说太小。例如该信号是16位的,可表示0~65535,而数值只有几十的话,那自然就很小了。

    从波形上看,该信号的高位都是0。所以可以只取该信号的低8位,组成一个新信号,那么波形自然就放大了。

    【问题16】如何使Quartus再综合的时候,不带signal'tap的逻辑?

    答:按照下图进行设置

    8b03aefba3539d2975172f15f167b167.gif

    QQ截图20201028092207.png (37.47 KB, 下载次数: 15)

    2020-10-28 09:25 上传

    8b03aefba3539d2975172f15f167b167.gif

    qq.png (49.96 KB, 下载次数: 16)

    2020-10-28 09:25 上传

    【问题17】使用ila的时候,有的信号看不到位宽定义,该怎么在ila中设置位宽?

    答:没有位宽定义的信号位宽就是1bit的

    【问题18】如果我想看抓“模块的时钟”,看其波形是否正确,如何做?即观察信号是“时钟”。答:通常想看“时钟信号”,一般的需求是2个。1. 看时钟有没有;2. 看频率正不正确。

    看时钟有没有:可以用一个更高频的时钟,作为“采样时钟”,对时钟信号进行观察,如果频率更高,就能看到是否有变化。

    看频率正不正确:在线调试工具没法解决这个问题。建议将该信号拉到IO口,通过示波器来观察。

    【问题19】VIVADO加载ILA时不能正确加载,提示如下错误(就是ILA需要free clock)。

    8b03aefba3539d2975172f15f167b167.gif

    57048875da163d9552d672d4c2028c0.png (57.63 KB, 下载次数: 0)

    2021-3-16 16:55 上传

    答:当VIVADO刚下载到FPGA时,就搜索ILA,如果搜索不到或者时钟没有,就会提示上面的错误。这意味着,时钟要在上电的时候就应该有了,如果某些时钟要上电比较久之后才出现(如锁相环输出时钟、外部芯片输入的时钟等),就可能出问题。

    上面的建议,是采用晶振出来的时钟。

    解决思路大致如下:

    1. 按建议,采用晶振出来的时钟。

    2. 如果确实是需要一个延迟比较大的时钟怎么办?你可以再另外新建一个ILA,这个ILA使用的是晶振时钟,看的信号随便。 这样,系统上电后,就发现这个ILA后,就能启动了,然后就能启动你所需要的ILA了。

    【问题20】在线调试工具抓取三态门信号,会报错,该如何解决?

    答:一般三态门是放在接口上的,内部不会有三态信号。FPGA三态信号一般可分解成如下:

    assign sdio = sdio_en?sdio_w:1'bz;

    assign sdio_in = sdio ;

    您可以抓取sdio_en和sdio_w来观察。

    展开全文
  • FPGA零基础学习:Signal tap 逻辑分析仪使用教程 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入...

    FPGA零基础学习:Signal tap 逻辑分析仪使用教程

    本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

    系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用。话不多说,上货。

     

    signal tap 逻辑分析仪使用教程

    作者:郝旭帅 校对:陆辉

    在之前的设计开发时,利用modelsim得出中间某单元的数据,并且输入也是设计者在testbench中自己给出的。但是,实际应用时,外部输入的信号不一定和我们在testbench中所描述输入的信号相同,就有可能导致RTL仿真成功,但是下板测试失败。

    signal tap logic analyzer 采集并显示FPGA设计中的实时信号行为,从而无需额外的I/O管脚或者外部实验室设备即可检查正常器件操作期间内部信号的行为。

    在数据获取期间,器件中的存储器模块存储采集的数据,然后通过JTAG通信电缆将数据传输到逻辑分析仪。

    下图为signa

    展开全文
  • FPGA|Signal Tap抓取波形

    千次阅读 2021-04-08 19:57:57
    2、以刚做完的实验为例(*实现四个数码管以1HZ的频率进行跳变,从“0000”~“EEEE”一共16个状态的循环跳变*),观察SignalTap波形抓取结果,并分析一下实验中遇到的问题以及解决办法。实验代码和BDF原理图会在篇末...

    本篇内容包括两部分:
    1、介绍一下Signal Tap如何抓取波形。
    2、以刚做完的实验为例(实现四个数码管以1HZ的频率进行跳变,从“0000”~“EEEE”一共16个状态的循环跳变),观察SignalTap波形抓取结果,并分析一下实验中遇到的问题以及解决办法。实验代码和BDF原理图会在篇末给出。


    1 SignalTap如何抓取波形

    1. 编译无误且programming到板子上结果正确后,点击File→New…→SignalTap II Logic Analyzer File→OK
      在这里插入图片描述
      下面逐一对SignalTap页面进行功能及其相应的配置方法介绍。
    2. ①在setup页面的右上角 Hardware那栏点击 setup… ,在弹出的框框里Current selected hardware 的下拉菜单中选择USB-Blaster→Close
      Device 那栏会显示你的芯片型号,点击Scan Chain会自动扫描。如图显示的是我板子的型号EP3C16。
      ③在SOF Manager 那一栏点击**…** 按键,在弹出的框框里选择生成的 .sof 文件 →打开 →点击左侧带有箭头的蓝色小图标 进行烧录。
      在这里插入图片描述
    3. Signal Configuration板块:
      Clock:点击右侧的 按钮 在弹出框框里 Filter的下拉菜单里选择Design Entry(all name)→ 点击list,可以看到 Nodes Found下面的方框□里列出了project里所有的管脚→选中clk(也就是我们定义的时钟)→ 点击(位于Nodes Found和Selected Nodes两栏中间那里),在Selected Nodes里会看到刚刚选择的clk →OK在这里插入图片描述
      Sample depth 表示采样深度(从0~128k),表示采取多少个样点,可以在下拉菜单里进行设置。
      在这里插入图片描述
      segmented(分段采样模式:如果想要通过segmented触发-捕获模式进行波形抓取,可以勾选上。在它的下拉菜单里有很多选项,这里以其中一个为例进行解释,如2 256sample segment的含义是分成2段,每段采样256个样本在这里插入图片描述
      ③也可以选择storage qualifier → type (循环采样模式,包括多种方式:continuous(连续采样)、……。一般选择continuous。
      在这里插入图片描述
    4. Trigger
      Trigger flow control(触发流程控制有两个选项:“Sequential”(顺序的)、“State-based”(基于状态的在这里插入图片描述
      Trigger position(触发位置
      :有三个选项:“Pre trigger position”(触发位置在前面)、Center trigger position(触发位置在中间)、Post trigger position(触发位置在后面
      在这里插入图片描述
      Trigger Conditions(触发条件(这个还不太会用……以后写)
      在这里插入图片描述
    5. trigger一栏 双击 ,在弹出框里,Filter选择Design Enty(all names)→ 点击 list→Nodes Found里选择想要观察的引脚 点击 ,在Selected Nodes里面会看到刚刚选中的引脚 →OK。这时就会在这个trigger下的框里看到刚刚选出来的引脚。选中想要观察的引脚 鼠标🖱️停留在 Trigger Condition→ 右键,会出现几个选项 “Don’t care”、“Low”(低电平时触发)、“Falling Edge”(下降沿触发)、“Rising Edge”(上升沿触发)、“High”(高电平时触发)、“Either Edge”(上升沿和下降沿都触发 ,可以选择其中的一种。
      【本实验想要观察OUT[6…0],选中这7个输出,鼠标🖱️停留在Trigger Condition 右键,选择“Either Edge”】
      在这里插入图片描述
    6. “红色部分”会提示你此时应该进行编译。
      在这里插入图片描述
    7. 回到project,点击紫色小箭头进行编译。在这里插入图片描述
    8. 编译时会弹出框框让你保存SignalTap文件,自己给它命名并保存就好。
    9. 编译完成后回到SignalTap文件,此刻红色提示内容显示让你把程序下载到板子上。
      在这里插入图片描述
    10. 回到project中,programming,把程序下载到板子。在这里插入图片描述
    11. 再次回到SignalTap,会看到提示Ready to acquire。在抓取波形前要先点击SOF Manager 那里的蓝色小按钮,把程序烧录到板子里。接着可以点击带有🔍的红色小三角如下图中橙色框框所示),它表示单次运行,抓取到的是静态波形;也可以点击带有旋转箭头的红色小三角如下图中蓝色框框所示),它表示连续运行,抓取到的是动态波形。(下图中紫色框框里的是暂停 按钮,当开始抓取波形时,暂停按钮会变成黑色的。如需暂停抓取波形,点击它就好)
      在这里插入图片描述
      上图中Status状态分为:Not running(未运行)、Waiting for trigger(等待触发)、Acquiring post-trigger data(正在捕获data)、offloading acquire data(导出捕获到的data

    2.1 问题与解答

    问题:当笔者点红色的小三角抓取波形的时候,发现没有波形,此时的Status 是绿色的Waiting for trigger,这是为什么呢?应该如何解决?
    答:waiting for trigger的意思是没有达到触发条件。比如说把OUT设为上升沿触发,那么只有当OUT出现上升沿时(比如由0变为1),SignalTap才会开始波形抓取,其余时间都是处于waiting for trigger状态,也就是陷入僵局。
    ②因为在本实验的SignalTap中笔者添加了一组七段数码管的管脚OUT1[6…0],将它们trigger 设置的是Either Edge。那么只有当7个输出同时出现上升沿(0→1)或者同时出现下降沿(1→0)时,SignalTap才会开始波形抓取,否则就会一直Waiting for trigger
    ③但经过分析发现,0→1→…→E→F变化时,7个输出并没有同时出现上升沿或下降沿,所以就会出现波形抓不出来的结果。
    ④为了验证笔者的猜想,现在把OUT1[0]trigger变为Rising Edge,把OUT1[6…1]变为Don’t care。点击带有旋转箭头的红色小三角进行波形抓取,发现只有当OUT1[0]从0变为1时,state为抓取数据的状态(如下图所示Acquiring post-trigger data、offloading acquired data),同时在下边的大框里可以看到抓出来的波形。其余时间都是waiting for trigger
    在这里插入图片描述
    在这里插入图片描述
    因此解决办法为:把7个输出的trigger全部改为Don’t care,也就是随即抓波形,不用等触发条件到才抓取。
    在这里插入图片描述
    点击红色小箭头抓取波形,成功!

    2.2 波形抓取结果分析

    如图所示是笔者抓到的一个波形,由逻辑值OUT1=7’b 1000000,可以知道抓到的这个是**“0”**的波形。每次点“单次运行”红色的小三角,都会抓到一个波形。点“连续运行”红色小三角就会看到波形的动态变化过程。在这里插入图片描述

    ✨ 笔者想把0~F的波形显示在一个页面上,直观地看波形的变化,但是试了好多次都没有成功

    以下是试过两种方法:
    ①增加采样点,即增加sample depth的值
    ②更改时间轴范围(如下图)在这里插入图片描述

    解决方法:

    SignalTap用50MHz的采样频率太大了,应该把时钟频率设置为信号频率的十倍左右。本实验信号频率是1Hz,所以把时钟频率设置为10Hz。具体方法就是编写一个分频器,生成频率为10Hz的CLK1信号,把它作为SignalTap的时钟。
    生成10HZ的CLK1代码(在原时钟模块添加这段代码)

    Module clk(
        CNT,
        CLK1);
    output [32-1:0] CNT;
    output CLK1;
    
    reg [32-1:0] CNT;
    reg CLK1;
    
    always @(posedge CLK) begin
      if(CNT >= MAX)    
      CNT <= 0;  
      else     
      CNT <= CNT + 1'b1;
      end
      
    always @(CNT) begin  
    if (CNT == MAX)    
    CLK1 = 1'b1;  
    else    
    CLK1 = 1'b0;
    end
    

    在BDF中引出CLK1
    在这里插入图片描述
    在SignalTap中clk里添加CLK1,编译后进行波形抓取
    在这里插入图片描述
    就可以清楚地看到波形的变化了。图中两个黑色竖线中间的16个状态是一个周期。


    附上“代码”和BDF原理图

    代码

    module clk(
      CLK   ,   // clock
      CNTVAL,   // counter value
      OV    );  // overflow
    input CLK;
    output [32-1:0] CNTVAL;
    output OV;
    parameter MAX_VAL = 500_000;
    reg [32-1:0] CNTVAL;
    reg OV;
    
    always @ (posedge CLK) begin
      if(CNTVAL >= MAX_VAL)
        CNTVAL <= 0;
      else
        CNTVAL <= CNTVAL + 1'b1;
    end
    
    always @ (CNTVAL) begin
      if(CNTVAL == MAX_VAL)
        OV = 1'b1;
      else
        OV = 1'b0;
    end
    endmodule
    //
    module cnt_en_0to1(
      CLK   ,   // clock
      CNTVAL,   // counter value
      EN    ,); 
    input CLK;
    input EN;
    output [4-1:0] CNTVAL;
    
    reg [4-1:0] CNTVAL;
    reg OV;
    
    always @ (posedge CLK) begin
      if(EN) begin  // work enable
        if(CNTVAL >= 15)
          CNTVAL <= 0;
        else
          CNTVAL <= CNTVAL + 1'b1;
      end
      else
        CNTVAL <= CNTVAL ;  // hold same value
    end
    endmodule
    
    module dec_4to7(
        IN  ,
        OUT1,
        OUT2,
        OUT3,
        OUT4);
    input  [4-1:0]IN;
    output [7-1:0] OUT1 ;
    output [7-1:0] OUT2 ;
    output [7-1:0] OUT3 ;
    output [7-1:0] OUT4 ;
    
    reg [7-1:0] OUT1 ;
    reg [7-1:0] OUT2 ;
    reg [7-1:0] OUT3 ;
    reg [7-1:0] OUT4 ;
    
    always @ (IN) begin
      case(IN)
        4'b 0000: OUT1 = 7'b 1000000;
        4'b 0001: OUT1 = 7'b 1111001;
        4'b 0010: OUT1 = 7'b 0100100;
        4'b 0011: OUT1 = 7'b 0110000;
        4'b 0100: OUT1 = 7'b 0011001;
        4'b 0101: OUT1 = 7'b 0010010;
        4'b 0110: OUT1 = 7'b 0000010;
        4'b 0111: OUT1 = 7'b 1111000;
        4'b 1000: OUT1 = 7'b 0000000;
        4'b 1001: OUT1 = 7'b 0010000;
        4'b 1010: OUT1 = 7'b 0001000;
        4'b 1011: OUT1 = 7'b 0000000;
        4'b 1100: OUT1 = 7'b 1000110;
        4'b 1101: OUT1 = 7'b 1000000;
        4'b 1110: OUT1 = 7'b 0000110;
        4'b 1111: OUT1 = 7'b 0001110;
      endcase
      case(IN)
        4'b0000: OUT2 = 7'b 1000000;
        4'b0001: OUT2 = 7'b 1111001;
        4'b0010: OUT2 = 7'b 0100100;
        4'b0011: OUT2 = 7'b 0110000;
        4'b0100: OUT2 = 7'b 0011001;
        4'b0101: OUT2 = 7'b 0010010;
        4'b0110: OUT2 = 7'b 0000010;
        4'b0111: OUT2 = 7'b 1111000;
        4'b1000: OUT2 = 7'b 0000000;
        4'b1001: OUT2 = 7'b 0010000;
        4'b1010: OUT2 = 7'b 0001000;
        4'b1011: OUT2 = 7'b 0000000;
        4'b1100: OUT2 = 7'b 1000110;
        4'b1101: OUT2 = 7'b 1000000;
        4'b1110: OUT2 = 7'b 0000110;
        4'b1111: OUT2 = 7'b 0001110;
      endcase
      case(IN)
        4'b0000: OUT3 = 7'b 1000000;
        4'b0001: OUT3 = 7'b 1111001;
        4'b0010: OUT3 = 7'b 0100100;
        4'b0011: OUT3 = 7'b 0110000;
        4'b0100: OUT3 = 7'b 0011001;
        4'b0101: OUT3 = 7'b 0010010;
        4'b0110: OUT3 = 7'b 0000010;
        4'b0111: OUT3 = 7'b 1111000;
        4'b1000: OUT3 = 7'b 0000000;
        4'b1001: OUT3 = 7'b 0010000;
        4'b1010: OUT3 = 7'b 0001000;
        4'b1011: OUT3 = 7'b 0000000;
        4'b1100: OUT3 = 7'b 1000110;
        4'b1101: OUT3 = 7'b 1000000;
        4'b1110: OUT3 = 7'b 0000110;
        4'b1111: OUT3 = 7'b 0001110;
      endcase
      case(IN)
        4'b0000: OUT4 = 7'b 1000000;
        4'b0001: OUT4 = 7'b 1111001;
        4'b0010: OUT4 = 7'b 0100100;
        4'b0011: OUT4 = 7'b 0110000;
        4'b0100: OUT4 = 7'b 0011001;
        4'b0101: OUT4 = 7'b 0010010;
        4'b0110: OUT4 = 7'b 0000010;
        4'b0111: OUT4 = 7'b 1111000;
        4'b1000: OUT4 = 7'b 0000000;
        4'b1001: OUT4 = 7'b 0010000;
        4'b1010: OUT4 = 7'b 0001000;
        4'b1011: OUT4 = 7'b 0000000;
        4'b1100: OUT4 = 7'b 1000110;
        4'b1101: OUT4 = 7'b 1000000;
        4'b1110: OUT4 = 7'b 0000110;
        4'b1111: OUT4 = 7'b 0001110;
      endcase
    end
    endmodule
    

    BDF原理图
    在这里插入图片描述
    fpga板子结果
    在这里插入图片描述
    在这里插入图片描述

    --------------------------------- 完 ---------------------------------

    展开全文
  • Quartus II SignalTap使用

    千次阅读 2019-12-18 13:48:28
    首先说一下SignalTap和ModuleSim的区别,很显然这是两个不同的东西,SignalTap是集成于Quartus II的,是通过JTAG来抓取实际信号用于分析的,而ModuleSim则是独立于Quartus II,是用于进行功能仿真的一个软件。...
  • SignalTap II使用技巧_1

    千次阅读 2020-04-06 10:06:40
    工作的原因,开始真正的去用signaltap,以前在校时,也就是随便玩玩,看看波形,找找感觉,把示波器搬到电脑上。 前几天开始要用的时候,才发现基本上参数都不懂,当时那种似懂非懂的感觉非常不爽。所以开始仔细的去...
  • Signaltap II Logic Analyzer->去掉Enable Signaltap II Logic Analyzer前面的勾勾】 文件输出:【File-Export】可以把Signalt采样到的数据保存为其他格式的文件。其中有csv【适合配合MATLAB使用】,tbl,bmp,...
  • Signaltap的使用记录前言一、操作步骤二、注意事项三、其他问题总结 前言 Signaltap是Quartus提供的一个仿真工具。与modelsim相比,modelsim是基于软件层面的仿真,而Signaltap则是基于时序、FPGA资源等的 一、...
  • signaltap skill.doc

    2019-05-16 09:48:44
    Quartus II內的SignalTap II是debug Verilog很好的工具,不過似乎有時無法顯示reg的值,我發現一個小技巧可解決這個問題。 Introduction 使用環境:Quartus II 7.2 SP1 + DE2(Cyclone II EP2C35F627C6) 本文是我較...
  • SignalTap 它们都是调试工具。然而,所谓调试就是一边观察对象,一边将操作逼近预 期的结果。调试在宏观上可以是观察输出,或说可视化调试对象的行为... 可是在微观 观上,调试可以是捕捉一些内部的细节变化。
  • 1.为什么要用SignalTap ii:   在上板运行前都需要进行仿真,Modelsim 的使用可以使 FPGA 设计的许多错误扼杀在上板运行前,但这并不代表有了 Modelsim,我们的设计就天衣无缝了。实际上,在真正的上板运行时,...
  • Signaltap的使用

    千次阅读 2018-10-24 16:31:50
    版权声明:本文为博主原创文章,未经博主允许不得转载。 ... 一、前言。 Signaltap是嵌入式逻辑分析仪,说到嵌入式,很容易让人想起ARM,其实Signaltap跟ARM没有半毛钱关系...
  • SignalTap操作演示

    2021-04-14 20:36:58
    所以现在想用SignalTap显示一下波形,第一次使用SignalTap,顺便把SignalTap如何操作给学习了。 来源:整理自网络 将开发板和计算机连接好,这里会显示“ready” 1、设置主时钟 2、点击list,显示节点名 ...
  • Quartus基础功能和SignalTap基本使用方法基础:项目创建、编译和下载FPGA译码器组合逻辑2_4译码器计数器波形仿真和SignalTap0-9计数器0-17计数器及signaltap检验0-17计数及方波发生器显示输出显示的问题SignalTap ...
  • 软件篇 SignalTap II软件的使用ppt,软件篇 SignalTap II软件的使用
  • Quartus的SignalTap的使用

    2021-11-22 16:42:00
    一、SignalTap II Logic Analyzer 简介 SignalTap II Logic Analyzer(信号逻辑分析仪),用于FPGA烧录调试时,抓取指定引脚、寄存器、ROM地址等所存储的数据值。它使用的是FPGA的片上资源(逻辑资源、RAM资源),...
  • 本文的主要内容是Quartus II下SignalTap仿真的介绍。 设计一个计数器,当计数值为0-8时,OV输出为0,当计数值为9-17时,OV输出1。
  • 使用Signal Tap II采集到的数据进行Matlab仿真在使用FPGA进行无线通信或者进行信号处理时,一般按照这样的步骤进行:(1)利用matlab进行浮点算法仿真(2)将matlab浮点算法转换为定点算法,进行仿真,并与浮点算法的...
  • signaltap 功能演示 (正弦波形发生器).doc
  • Quartus用SignalTap 2 Logic Analyzer JTAG能烧录程序并且开发板流水灯有实验现象 ,但是软件里面显示Invalid JTAG configuration,点击run后 显示instance not found

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,318
精华内容 1,327
关键字:

SignalTap