亚稳态
亚稳态的定义;亚稳态产生的原因;亚稳态的解决方法;
知识准备
- setup time & hold time :为了保证捕获数据的稳定,我们规定了时钟沿前后,数据需要保持稳定的最小时间为 建立保持时间
- 同步和异步
亚稳态是什么
- 当一个信号在规定的建立保持时间内没有稳定下来,那么这个信号作为输入的寄存器,输出信号可能会进入亚稳态。
- 亚稳态中,寄存器输出在0和1中间震荡,也就是说,输出转换到一个指定的0或者1的状态所需要的的时间超过Tco;
- Tco:clock-to-output delay
为什么会产生亚稳态
- SR锁存器,s和r同时跳转时会产生亚稳态(课程内容)
- 同步系统中,输入信号必须满足寄存器的建立保持时间要求,亚稳态通常不会发生
- 亚稳态通常发生在一个信号传输经过两个不相关的时钟域或者异步时钟域。在跨时钟域情况下,设计人员不能保证信号到达时间。信号可能在目标域时钟的任意节点到达。
- 并不是所有信号不满足寄存器建立保持时间的都会给出一个亚稳态输出
- 寄存器输入亚稳态后,根据厂商器件工艺不同,寄存器回归稳定状态的时间也不同。大多时候,寄存器会很快回到稳定状态
亚稳态怎么消除(预防)
- 同步寄存器链或者同步器
- 链中寄存器时钟驱动为同一个或者相位相关的clk
- 链中的第一个寄存器是被异步时钟域输出驱动的
- 链中寄存器扇出仅到一个寄存器,除了链中最后一级寄存器
- 同步寄存器链的长度是同步时钟域中寄存器的个数
- DCFIFO(dual-clock FIFO)
- hand-shaking logic