请选择 进入手机版 | 继续访问电脑版

明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 461457|回复: 2

在线调试工具(SIGNALTAP chipscope vivado)问题【汇总帖】

[复制链接]

35

主题

57

帖子

6606

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6606

荣誉管理论坛元老

QQ
发表于 2020-3-17 12:25:13 | 显示全部楼层 |阅读模式

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

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

x

Signaltap教程


【问题1】 按以下设置采样时钟,结果提示出现wait clock,没有抓到数据。
TIM图片20200317122057.png
答:可能的原因如下:
      1.该时钟确实是没有,即一直为0,或者一直为1。
      2. 该clk不是本模块产生的,而是其他模块产生,然后在此模块使用。这个时候有可能不能作为采样时钟。
      正确的做法,哪个模块产生的就使用那个模块的信号。例如常见的PLL的C0,C1等。


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

答:假设预期一个信号低电平时间为2000个时钟周期。那么可以如下设置。
      1. 采集深度设置至少为2K,即2048个点,保证能采到一个低电平周期时间。
      2. 触发条件为:该信号的下降沿。
      当触发条件满足后,查看低电平的采样点个数,即可测量出时间。
      如果受资源限制,采样深度小于信号低电平时,可以在代码里添加计数器,通过观测计数器来推测出低电平时间。


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

TIM图片20200703135545.png
答:有可能以下几种情况,请逐个进行排除。
1. 每当修改了SIGNALTAP的设置,如添加观察信号,改变深度等,需要保存后,在QUARTUS重新编译一次,生成的文件再烧写。
2. 如果烧写后,仍然出现上面情况:一定要检查sof文件生成的日期,要确保是刚刚生成的!!(这个很重要)
3. 有部分人喜欢在programmer里烧写SOF文件,然后再在SIGNALTAP里再烧写一次。这是没有必要的。请不要使用Programmer烧写。


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


答:使用在线调试工具,是需要占用FPGA芯片资源的,特别是RAM资源。观察的信号越多,观察的深度越大,所需要的RAM资源就越多。
上面的问题是指,整体的资源(设计占用的资源 + 调试工具占用的资源)已经超过了芯片资源本身。
为了解决上面问题,可以将观察信号减少,或者将深度减小,再次编译试试。


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

TIM图片20200703155225.png

TIM图片20200703155208.png
答:上图中,add_flag由1变0条件是end_cnt_B=1。但观察到的是add_flag在end_cnt_B为1之前就变低了。
      上面已经定位到某个采样点的时刻处,这已经非常好!当定位到某个采样点,波形和代码对不上的,应该检查一下时钟:SIGNALTAP的采集时钟,
      必须与代码中的“clk”一致!如果不同,就会有异常现象,看到的也不正确。


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

TIM图片20200703181931.png
答:1. 搜索信号时,建议加上通配符*,即上面应该搜索“*dout*”。因为SIGNALTAP的信号名与代码中的并不相同,有时会加前缀和后缀。
      2. 其实如果搜索不到,那就不要搜索,直接点击查看有没有这个信号,从而定位出是“搜索问题”,还是说“本身没有此信号”。建议多动手多思考。     
      3. 将“Filter”设置为“Design entry all name”选项,再搜索。 如果此窗口都没有所需要的信号,说明就是没有。


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

答:在线调试工具在采样时钟的上升沿,对信号进行采样。
      注意,在线调试工具不是智能的,它无法判断连接到采样时钟的信号是时钟。它只是在采样时钟的上升沿,对信号采样。
      也就是说,连到“采样时钟”的信号,可以是任意信号。但一般来说,这没有任何意义。


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

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


【问题9】使用signaltap的时候,下载完程序出现如下提示,连接设置都没有问题,怎么办?
lALPGo_k8iaraUzNAuDNBVY_1366_736.png
答:一般是由于signaltap工程没有保存,点击左上角的File,选择“Save as”,另外起一个名字进行保存。


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


【问题11】在线调试工具严格反应FPGA内部数据么?为什么我的波形不对?
答:在线调试工具肯定是要严格反应内部数据的,如果这都做不了,那这FPGA也不用玩了。
      波形不对,只能说明 1. 你工具使用不当;2. 这波形确实是不对。


【问题12】抓取CLK信号来看,发现它一直为1,明明是有时钟的,为什么看不到变化?如下图
mmexport1611564595068.png
答:注意一下SIGNALTAP中“采样时钟”和采集信号“CLK”的关系。如果“采样时钟”就是“CLK”,想象一下会发生什么现象?
要知道SIGNATAP的原理,它是在“采样时钟”的上升沿,去采信号“CLK”。由于“采样时钟”和“CLK”是同一个信号。
当“采样时钟”上升沿的时候,同时也意味着“CLK”的上升沿,它们是同频同相的,所以你会永远采到同一个值:一直为1或者一直为0。
不管运行多久时间,都不会变化的。这不是CLK没有,而是“观测”的缺陷是这样的。

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

        1. 上面是在线调试工具的波形图,下面是对应的代码。
        2. 哪个信号有错误,就看哪个代码。
        3. 波形图要放大,能看到错误时刻"某一个采样点",如图中的最上行。
        4. 波形图要将代码中出现的所有信号拉出来。
        5. 波形图的信号排列顺序是:复位、条件、结果信号。
        6. 哪一个时刻有错,要按上图的箭头标示出来。
        7. 特别注意:在线调试工具的采样时钟,必须为该信号的工作时钟!!!
        8. 如果组合逻辑信号不能观察,那可以拉组成该组合逻辑的所有信号,然后推测出结果。
        9. 对于觉得上面步骤太麻烦的,我只想说一句:如果你能定位出问题,可以不这么仔细。如果你都定位不出来了,此时不就是要更加认真仔细一些吗


【问题13】 只有波形图,但没有代码fpga仿真输出是对的,但是用signaltap显示出来就一直为零,为什么?
TIM图片20200805193447.jpg
答:本问题,只有波形图,但没有代码。请按 【在线调试工具求助技巧】中第1点来截图讨论。


【问题14】我们做了一个工程,用SOF文件运行不正常,但是加上逻辑分析仪检测数据正常运行,将该SOF生成JIC仍然不可以,一般遇到这种情况,什么原因啊?
答:一般是可以考虑时序不满足而导致的,具体请看时序报告


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


答:在线调试工具没有触发,只能“实实在在说明”一点:触发条件不满足! 满足了,就一定会触发!
      1. 比较多错误的一点是:多个信号是相与还是相或的关系。例如上图中,其触发条件是:rst_n上升沿 并且 cnt值为5。只是rst_n上升沿了,而cnt不等于5,也不会触发。
      2. 假设上图中触发条件“只有rst_n为上升沿”,如果按了按键后,还是没触发。这已经给你提示了:rst_n信号和按键之间有问题,例如管脚没配对;例化不正确等,你需要检查这些。


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

微信图片_20200823205928.jpg
答:添加的信号,如何是红色,其可能的原因有:
1. 该信号可能一直处于固定值,例如固定为0,固定为1,或者其他数。
2. 该信号可能没有”用“,从而被优化了。这里没有用,可能是直接的,也可能是间接的。
a. 直接是指,如设计了信号A,但信号A没有作为条件来产生任何信号,那么A就是没用的,会被优化;
b. 间接是指,如设计了信号A,然后使用A作为条件产生了信号B,但B没有拿去用,那么B是无用的,间接说明A也是无用的,B和A都会被优化。
3. 该信号是组合逻辑产生的信号。组合逻辑产生的信号,在SIGNALTAP中可能不可观察,但VIVADO不存在此问题。


【问题17】在ISE,chipscope中抓取信号发现,触发位置并不是设置的触发点,稍微滞后了半个采样周期,这个是我哪儿设置的不对吗,还是本来就是这样的。
1.png
答:在线调试工具,都是一个上升沿采样一个点,所以只有第1个采样点,第2个采样点的概念,绝对没有“中间点”的概念。
图上,只不过是chipscope把“这个点”标在数据中间而已,只是一个显示的方式。



【问题18】这种波形窗口能增高的吗?  要看有符号数 ADC波形,这个窗口高度太低了,看不见波形了
微信图片_20200919165236.png
答:这个波形看起来小,主要是由于数值相对于位宽来说太小。例如该信号是16位的,可表示0~65535,而数值只有几十的话,那自然就很小了。
      从波形上看,该信号的高位都是0。所以可以只取该信号的低8位,组成一个新信号,那么波形自然就放大了。


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

答:按照下图进行设置 QQ截图20201028092207.png qq.png



【问题20】使用ila的时候,有的信号看不到位宽定义,该怎么在ila中设置位宽?
答:没有位宽定义的信号位宽就是1bit的


【问题21】如果我想看抓“模块的时钟”,看其波形是否正确,如何做?即观察信号是“时钟”。
答:通常想看“时钟信号”,一般的需求是2个。1. 看时钟有没有;2. 看频率正不正确。看时钟有没有:可以用一个更高频的时钟,作为“采样时钟”,对时钟信号进行观察,
       如果频率更高,就能看到是否有变化。看频率正不正确:在线调试工具没法解决这个问题。建议将该信号拉到IO口,通过示波器来观察。


【问题22】VIVADO加载ILA时不能正确加载,提示如下错误(就是ILA需要free clock)。
57048875da163d9552d672d4c2028c0.png
答:当VIVADO刚下载到FPGA时,就搜索ILA,如果搜索不到或者时钟没有,就会提示上面的错误。这意味着,时钟要在上电的时候就应该有了,
       如果某些时钟要上电比较久之后才出现(如锁相环输出时钟、外部芯片输入的时钟等),就可能出问题。上面的建议,是采用晶振出来的时钟。
       解决思路大致如下:
      1. 按建议,采用晶振出来的时钟。
      2. 如果确实是需要一个延迟比较大的时钟怎么办?你可以再另外新建一个ILA,这个ILA使用的是晶振时钟,看的信号随便。 这样,系统上电后,就发现这个ILA后,
      就能启动了,然后就能启动你所需要的ILA了。



【问题23】在线调试工具抓取三态门信号,会报错,该如何解决?
答:一般三态门是放在接口上的,内部不会有三态信号。FPGA三态信号一般可分解成如下:
      assign sdio = sdio_en?sdio_w:1'bz;assign sdio_in = sdio ;您可以抓取sdio_en和sdio_w来观察。


【问题24】在明德扬提供的SIGNALTAP练习中,找到错误后,要如何修改?
答:明德扬提供的SIGNATAP练习,为了不让学员看到答案,专心找BUG,特意将有错误的代码封装成IP核的形式,即QXP格式文件。
          该格式文件的内容是不可观看的。所以这些练习只要找到错误即可,不必修改。


【问题25】在抓取信号时,信号名后面都加有数字,跟我命名的不同,这是为什么?例如 定义中没有Add1,怎么在Nodes Found中有Add1~2.add~4


答:QUARTUS或者VIVADO会对代码进行综合,即变成电路。在进行综合变成电路的时候中,工具会自动产生很多信号来命名每个电路线。所以这是正常的现象。
甚至原有的信号也会改变(如会加数字,会加reg等),所以在看信号的时候,要仔细观察,不用太在意后续。
当然,多尝试抓几次就好。





0

主题

2

帖子

117

积分

注册会员

Rank: 2

积分
117
发表于 2020-8-5 19:02:26 来自手机 | 显示全部楼层
学习学习,好资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2023-9-29 11:11 , Processed in 0.050890 second(s), 25 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表