【问题2】模块A的时钟clka为100MHz,模块B的时钟clkb为300MHz。现在模块A要把32bit的数据送给模块B。模块A要如何发送,模块B要如何接收呢?答:方法1:采用异步FIFO的方法。
方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。
需要注意的,VLD的信号是让模块B周期的三倍或以上。由于clka是100M,产生的vld是10ns,而clkb是300M,周期是3.33ns。所以模块A只要产生1个时钟的vld给模块B即可。
【问题3】模块A的时钟clka为300MHz,模块B的时钟clkb为100MHz。现在模块A要把32bit的数据送给模块B。模块A要如何发送,模块B要如何接收呢?
答:方法1:采用异步FIFO的方法。
方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。需要注意的,VLD的信号是让模块B周期的三倍或以上。
由于clka是300M,产生的vld是3.33ns,而clkb是100M,周期是10ns。所以模块A要产生10个时钟的vld给模块B。
【问题4】一块电路板上,有两个芯片,芯片A的时钟clka为100MHz,芯片B的时钟clkb为100MHz。现在芯片A要把32bit的数据送给芯片B。模块A要如何发送,模块B要如何接收呢?
答:方法1:采用异步FIFO的方法。
方法2:采用指令信号的方法传输,模块A产生vld信号给模块B,模块B对vld进行同步化处理(打两拍)后,检测同步化信号的上升沿。需要注意的,VLD的信号是让模块B周期的三倍或以上。
虽然clka和clkb都是100M,但他们不是同一个晶振产生的,因此都是异步时钟。为了满足以上要求,所以模块A要产生3个时钟的vld给模块B。
【问题5】A, B时钟都是50M,但是他们不相关,为了防止编译器把他们默认为同一个时钟,是不是要用一个异步时钟组约束,来告诉编译器他们是不同的两个时钟?
答:一般分别产生A和B的时钟约束即可。
【问题6】 建立时间可以是负值吗?
答:建立时间当然可以是负数了。负数表示,可以在时钟上升沿后数据才变化。(建立时间是器件的属性,至于怎么器件怎么做到的,那就要问器件工程师了)
【问题7】 程序原本时序可以通过,加上singalTap节点之后时序不通过是什么原因
答:增加signaltap ILA等在线调试工具时,需要使用到内部的资源,例如RAM、选择器、寄存器等,增加后再去综合和布局布线。由于改变了资源,因此肯定对时序是有影响的,有可能改善了也有可能恶化了。如果时序有问题,分析路径,如果是在线调试工具路径,评估是否会有风险,没风险就算了
【问题8】时序约束什么时候要做?
答: 1.在需要的时钟频率下,如果逻辑功能不稳定,那么就需要时序约束。
2.一般时钟大于100M的时候,我们就要做一下时序约束。
【问题9】时序约束建立时间和保持时间的生活案例。
答:可以想象,有一个人从家里出发去机场,搭乘13点的飞机。
1. 13点起飞,起飞前15分钟要到机场,这个15分钟,就类似于建立时间要求。
2. 机场每小时有要飞一趟飞机,每个小时表示的是时钟周期。
3. 飞机起飞后,机场要保持10分钟,之后才能来下一批乘客,这个10分钟就是保持时间。
4. 这个人出发去搭13点的飞机,因此他要在12点45分之前到机场,并且是12点10分之后到机场。既不能早到,也不能晚到机场。
5. 如果这个人12点45分之后才到机场,那就搭不上本趟飞机,即违反了建立时间要求。(建立时间影响的是自己坐飞机)
6. 如果这个人12点10分前就到了机场,那就会因此上一趟飞机的起飞,即违反了保持时间要求。(保持时间不满足,影响的是上一批乘客坐飞机)
7. 这个人是计划去机场,因此他要估算几点能到机场。首先他会算所有情况下的最大延迟,如刚到路口红灯就来了、走路最慢等,在这种最慢的情况下,如果能在12点45分前到,说明建立时间没问题。然后,他会算所有情况下的最小延迟,如刚到路口绿灯,走路最快,在这种最快的情况下,如果能在12点10分后才,那说明保持时间没问题。
【问题10】为什么建立时间分析的时钟到达时间要加一个时钟周期而保持时间分析则不用呢?
答: 因为建立时间是源寄存器发出数据,目的寄存器采集,也就是上一个时钟发出来,本时钟采集。这里有一个时钟周期的因素,所以要加1个时钟周期。而保持时间分析,则是“本个时钟”发出数据后,如果延时太小,会影响“本个时钟”对上一个数据的采集,因为不需要加1个时钟周期。另外,要注意一点,保持时间是跟时钟周期无关的。
【问题11】系统同步只可能是单沿采集?没法像DDR那样双沿采集?
答:系统同步也是可以是双沿采集的,但比较少。课程里,只是介绍了部分情形。如果想看所有情形有哪些,可以打开VIVADO的时序约束向导,可以设置INPUT DELAY窗口查看。
【问题12】QUARTUS生成SDC时,默认出现的那条时钟约束是正常的么?我自己删掉就行了?
答:默认生成的当然是不正常。
|