Resets_CDC_FIFO_总结
关于Resets,找到了两篇相关的论文。
1."Synchronous Resets?Asynchronous Resets?I am so confused! How will I ever know which to use?"
1-1. 复位的作用:
在一般的系统里都含有复位,复位能使系统回到已知的状态。
1-2. 介绍了一种编码风格:
在一个过程块里只描述一种类型的触发器
1-3. 介绍了同步复位和异步复位的区别,分析了各自的优缺点:
同步复位只有在时钟的有效沿才能改变触发器的状态。
优点:
A. 同步复位可以综合成一种较小的触发器,这在一定程度上可以减小电路规模。但对于当今die的尺寸很大时,每个触发器节省一两个门的影响不是很大。
B. 当使用cycle based simulators(不是很懂)时,同步复位更有效。
C. 同步复位确保电路是100%同步的
D. 同步复位可以过滤掉reset信号上的小毛刺,因此在复位信号由内部的逻辑生成时,建议 使用同步复位。
缺点:
A. 同步复位或许需要一个脉冲展宽器来确保reset信号足够宽,以使在时钟有效沿时仍能保持有效。
B. 在仿真时,当reset由ASIC内的组合逻辑产生或经过了许多级的组合逻辑后,reset信号可能被认为是X,造成仿真的问题。
C. 在复位时必须同时存在时钟信号。
异步复位指在复位信号有效时复位触发器,不需要等待时钟信号的有效沿。
优点:
A. Reset信号不会存在于数据路径上,这对于那些对数据路径上的时序要求很严格的设计来说很有用。
B. 复位不需要时钟信号。
缺点:
A. 如果复位信号的释放放生在时钟有效沿的附近,有可能是触发器输出亚稳态,使复位状态失效。
B. 复位信号上的毛刺可能使触发器复位
1-4. 复位信号同步器:
为解决复位信号可能在时钟沿附近释放导致触发器输出亚稳态的情况,作者描述了一种同步器。
1-5. 复位信号分布树:
与时钟信号不同,对于reset信号的歪斜问题要求并不是很严格,只要reset信号间的延迟小于一个时钟周期并且所有的reset信号满足recovery time就可以。
介绍了两种结构,第一种也是最安全的方法,使用时钟信号树上的叶子时钟作为复位同步器的时钟信号,只要这种方法能满足时序要求,则会一直安全。
第二种提高reset到达系统触发器的速度,使用了一个更早的时钟来驱动复位同步器,但必须布局后进行时序分析使reset的释放不违背触发器建立、保持时间的要求。
1-6. Reset信号毛刺的过滤:
介绍了一种使用了延迟电路来过滤毛刺对reset影响的方法。
1-7. DFT for asynchronous resets(没看懂)
1-8. 多时钟域的复位问题:
介绍了两种结构,一种是各个时钟域复位的顺序并不重要,采用分立的结构。另一种对各个模块复位的顺序有要求,逐级连接。
2. Asynchronous & Synchronous Reset Design Techniques - Part Deux
基本内容与第一篇相同,增加的一部分解释了为什么在reset释放时,复位同步器不存在输出亚稳态的问题。原因是当reset在时钟沿附近释放时,有可能使第一级触发器进入亚稳态,但第二级触发器不会进入亚稳态,因为其输入和输出都为0,不会有翻转的现象。
疑问:第一级输出亚稳态,在下一拍前有可能稳定到1或者0,假如稳定到1,打一拍reset释放,假如稳定到0,打一拍reset仍是0。会不会存在这样一种情况,有的同步器打一拍后reset释放,有的同步器仍为0,仍在复位状态,造成系统一部分正常工作了,一部分复位仍未释放?
关于跨时钟域,找到两篇相关的
1. Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog
2. Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs
跨时钟域同步方法总结:
1-1.传一位
1-1-1.当接收端的时钟频率高于发送端的时钟频率时(一般接收端时钟频率时发送端时钟频率1.5倍以上,1.25倍也可以接受),可以直接使用两级触发器级联的同步器进行同步。
1-1-2.当接收端时钟频率小于发送端时钟频率或者两者相近时可以采用的方法:一是设计时在发送端把要跨时钟域的信号多打几拍,以满足1.5倍的要求;二是使用在接受端已同步的信号作为应答信号,返回发送端释放发送端的信号,以此方法来延长发送端信号保持的周期数。
1-2.传多位
1-2-1.方法一:设计过程中,观察要进行跨时钟域传输的信号,把可以合并的信号合并,减少跨时钟传输的信号的数量。
1-2-2.方法二:
Multi-Cycle Path (MCP)方案:不需要同步数据信号,使用一个脉冲同步器,把发送端一个单周期脉冲同步到接收端一个单周期脉冲,再将接收端单周期脉冲反馈到发送端形成单周期脉冲,指示发送端可以接着发送数据。
1-2-3.方法三:异步FIFO
关于FIFO,找到两篇
1.Simulation and Synthesis Techniques for Asynchronous FIFO Design
2.Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons
FIFO设计的难点在于空或满标志的产生。
第一篇的设计思路是把读指针同步到写时钟域,对比产生满标志;把写指针同步到读时钟域,对比产生空标志。
第二盘的设计思路是将读指针和写指针直接异步比较产生空标志和满标志,空、满标志有效时是和各自的时钟域同步的,可直接通过触发器的置位传回各自时钟域;空、满标志变为无效时与各自时钟域异步,通过同步器传回各自的时钟域。