FPGA设计系统时钟的影响因素及其分析
多的异步信号(控制或地址)同时进入本时域来控制本时域的电路时,如果这些信号分别都用图12中的同步电路来同步就会出现问题,由于连线延迟或其他延迟使两个或更多的异步信号(控制或地址)之间产生了skew,那么这个skew经过图12的同步器同步进入本时域后,会产生很大的skew或产生竞争,导致本时域电路出错。
出现的问题如下图13所示:
图13 同步多个控制信号时出错
(b)如果是异步数据总线要进入本时域,同样不能用图12的电路,因为数据的变化是很随机的,其0的宽度或1的宽度和本时域时钟脉冲无关,所以图12的电路可能会采不到正确数据。
(3)注意,第二个触发器并不是避免“亚稳态的发生”,确切的说,该电路能够防止亚稳态的传播。也就是说,一旦第一个触发器发生了亚稳态(可能性存在),由于有了第二个
触发器,亚稳态不会传播到第二个触发器以后的电路中去。
(4)第一级触发器发生了亚稳态,需要一个恢复时间来稳定下来,或者叫退出亚稳态。当恢复时间加上第二级触发器的建立时间(更精确的,还要减去clock skew)小于等于时钟周期的时候(这个条件还是很容易满足的,一般要求两级触发器尽量接近,中间没有任何组合逻辑,时钟的skew较小),第二级触发器就可以稳定的采样,得到稳定的确定的数据了,防止了亚稳态的传播。
(5)FF2是采样了FF1的输出,当然是FF1输出什么,FF2就输出什么。仅仅延迟了1个周期。注意,亚稳态之所以叫做亚稳态,是指一旦FF1进入,其输出电平不定,可能正确也可能错误。所以必须说明的是,虽然这种方法可以防止亚稳态的传播,但是并不能保证两级触发器之后的数据是正确的,因此,这种电路都有一定数量的错误电平数据,所以,仅适用于少量对于错误不敏感的地方。对于敏感的电路,可以采用双口RAM或FIFO。
2 输入pulse有可能小于一个时钟周期宽度情况下的同步电路
对2的情况通常采用如下图14的反馈电路。该电路的分析如下:假设输入的数据是高电平,那么由于第一个触发器FF1是高电平清零,所有输出也是高电平,采用正确。如果输入是第电平那么被FF1被强制清零,这个时候输出位零。这样就保证了输出的正确性。
图14输入pulse有可能小于一个时钟周期宽度情况下的同步电路
- STM32学习笔记(3):系统时钟和SysTick定时器(11-28)
- C8051F340系统时钟配置(11-28)
- S5PV210(TQ210)学习笔记——系统时钟和串口(11-28)
- STM32学习笔记——RCC系统时钟配置(11-28)
- STM32 开发板入门教程 (三) 系统时钟 SysTick(11-28)
- stm32系统时钟配置问题(11-27)