微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 异步fifo设计中使用格雷码方案时时序约束问题

异步fifo设计中使用格雷码方案时时序约束问题

时间:10-02 整理:3721RD 点击:
在异步fifo设计中常常使用gray编码方案,但相关文档中未提及timing约束问题,个人觉得在读写两个时钟域之间传递gray码需要设置bus delay skew类似约束,否则系统会异常,这在系统工作在较高时钟时会比较明显。请各位同学拍砖!

HELP,这里的人呢?

我觉得不需要特别的约束了吧,因为gray编码方案目的是为了async处理的问题。



    在频率较低时,允许的gray bus的delay skew会比较大,而频率较高时,允许的gray bus的delay skew则变小。
for example, 写时钟频率500M,读时钟频率为500M,写时钟域向读时钟域传递gray code,序列如下:对应2次写
3'b000--->3'b001--->3'b011,如果不对bus delay skew作约束,会出现如下情况,graybus[0]的delay 12ns, 而graybus[1]的delay 1ns,这样, 写时钟域graycode从3'b000变化到3'b011需要2个cycle(4ns),而5ns处读时钟域采样的gray bus值为3'b010(即3),这样,读时钟域就可能读出错误的数据(读3次)。当然,这是一种比较极限的情况,通常不加约束,且频率较低时是不会出现上述问题。 个人觉得加上约束会更稳妥。
    不知各位同学的意见如何?

你要是讨论这种极限情况,那基本上所有的跨时钟路径都需要约束
约束也是以软件运行时间为代价的
这种发生概率超级小的事件,除非仿真过程中发现它会发生,否则都不用管

在系统运行频率较低的情况下是小概率时间,但在频率较高时,存在的风险会较大。

跨时钟域信号一般没有组合逻辑,线延时很小,不会出现小编说的情况。FPGA里面可能连线延时较大,可能与ASIC有些不同吧(不过跑500M的FPGA……)


纯属探讨时序分析的严谨性问题,哈哈,大家伙明白有这么一回事就够了,实际过程中用不用大家依情况自己决定啊!
本讨论就此打住。

看看

的确需要约束路径延时

频率高的话 max delay check 一把,看看skew的情况。

一般来讲,频率超过300M,位宽超过256bit,答主都会进行bus delay skew约束。 这样稳妥些,尤其是在一些高性能企业及路由器交换机的设备上,约束是必要的。
时序是设计出来的,稳定性是良好的设计和追求卓越的约束精神才可以保证的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top