亚稳态问是时序电路中寄存器的信号传输问题,也是老生常谈。
1. 亚稳态定义
对于一个寄存器来说,需要posedge clk采样D端的信号嘛,采样之后还需要寄存器将D端的信号驱动到Q端嘛。
为了保证采样和驱动的稳定,就需要在posedge clk之前D端信号就得稳定了,并且要一直稳定到Q端被正确驱动之后。
所以有了以下两个寄存器特性
● 建立时间 T s e t u p T_{setup} Tsetup:触发器CK端有效时钟沿到来之前,D端输入数据保持稳定的最短时间。
● 保持时间 T h o l d T_{hold} Thold:触发器CK端有效时钟沿到来之后,D端输入数据保持稳定的最短时间。
● 亚稳态:触发器建立时间或保持时间不满足,导致Q端输出电平为介于高电平和低电平之间的第三稳定点。
需要一定时间恢复
2. 亚稳态的原因
2.1. 同步时钟
静态时序分析(Static Timing Analysis, STA)
2.2. 异步时钟
其实STA的分析是对于同步电路而言,异步电路同样会出现亚稳态问题,就是跨时钟域了。
跨时钟域
就是两个触发器用的时钟频率不相同,那么UFF1/CK采样的时候采样或驱动时UFF1/D端不稳定那可太常见了。
3. 亚稳态 的解决方案
亚稳态问题解决方案总结如下。
类型 | 方法 | 本质 |
---|---|---|
同步时钟 | 流水线 | |
异步 单bit 快采慢 | 电平同步 | |
异步 单bit 慢采快 && pulse间隔>2*Tbclk | 打拍展宽or异或展宽 | |
异步 单bit 慢采快 && pulse间隔≤2*Tbclk | 异或握手展宽 | |
异步 多bit 快采慢 && 允许中间值 && 变化慢 | 电平同步 | |
异步 多bit 快采慢 && 不允许中间值 && 变化慢 | valid DMUX | |
异步 多bit 慢采快 && 变化慢 | valid打拍展宽MUX or valid异步握手展宽MUX | |
异步 多bit 数据流 | 异步FIFO |
3.1. 同步时钟
3.2. 异步时钟
异步跨时钟域解决方案总结如下: