1 跨时钟域的亚稳态现象
建立时间:输入信号在时钟上升沿来临之前,应该保持数据稳定的最短时间,否则数据不能被正常采样;
保持时间:输入信号在时钟上升沿来临之后,数据保持稳定的时间,否则数据不能被正常传输。
对于时序电路,在不同时钟域之间进行数据传输时,因为异步时钟沿可能在任何时刻到来,当寄存器输出信号不满足建立时间和保持时间时,输出端的信号很有可能出现亚稳态现象。 但当存在亚稳态现象,也可能是半导体工艺或者芯片在不同的环境下工作导致信号从亚稳态回到稳定状态的时间长短不一。
2 跨时钟域处理
单bit信号跨时钟域处理:
单径 两级触发器同步器。 在单bit信号的跨时钟域传输处理中,可以通过两级触发器进行同步。
适用单比特信号从慢速时钟域同步到快速时钟域
打两拍可以减小亚稳态发生的概率 这里用两级DFF的目的就是给亚稳态留出一个DFF的工作时钟周期,如果第一级DFF的输出出现亚稳态,那么在一个时钟周期内,让亚稳态变成稳定态。 这样第二级DFF采样第一级DFF的输出时,第一级DFF的输出早就稳定了,因此不会出现亚稳态的传播。 使用两级触发器对异步信号进行同步处理只能减少亚稳态产生的概率,无法彻底消除亚稳态的现象
相位控制
在单bit信号的跨时钟域同步处理时,如果一个时钟的周期和另一个时钟周期有倍数关系,并且其中一个时钟可以由内部PLL或DLL控制时,进行相位匹配处理可以消除时序冲突。但是一般不奢望能控制时钟域的相位关系。
多径与多级寄存器同步链
信号经过不同的路径传输到同步触发器上,由于布线延迟的不一致,无法保证到达输出端的时间一致,这可能导致电路行为不一致的后果。造成电路功能异常。
可以采用先处理再分发。先对信号进行同步,再分发
组合逻辑信号的同步化
与单一跨时钟域信号的多径传输不同,跨时钟域组合逻辑信号的同步化是指多个异步信号先经过组合逻辑,再由寄存器链进行同步。
改变寄存器输出的好处是 降低了数据的翻转率,并且不会出现毛刺信号和短脉宽信号。
快时钟域信号的同步化: 处理脉冲宽度不够的方法 握手信号
当信号从快时钟域同步到慢时钟域时,有可能造成信号的丢失。 因为慢时钟域很难正确采样到。
处理脉冲宽度不够的做法,扩大脉冲宽度。 扩大到可以被慢时钟域采集。一般宽度达到慢时钟域1.5个周期,就可以正常采集到数据。通过引入反馈信号,当b信号发生电平跳变时,跳变后的逻辑保持在高电平,因此clk2时钟域有足够的时间对信号b进行捕捉。信号b完成同步后,通过寄存器链反馈回clk1时钟域,当clk1时钟域检测到信号b的高电平。已经传输到ack2时,信号b返回低电平。完成信号的传输。
采用反馈电路处理跨时钟域信号的好处是明显的,任何时候都不担心信号丢失,但是这种依赖于clk1和clk2会存在一种隐患,就别人使用这个程序时,时钟域都和原来的不一样,导致电路发生灾难性错误。同时电路需要反馈信号来判断合适改变信号b,导致信号b的操作周期变长,即速度变慢了。
3 多bit信号的跨时钟域处理
(1)异步FIFO
异步FIFO是处理多bit数据跨时钟域处理的一个常用方法
(2)双口RAM 握手信号
双口RAM在应用上,与FIFO类似,不同的是使用双口RAM是,需要设计者自己设计握手信号的产生、同步和握手。在一般的应用中,可以把RAM地址划分为高地址空间和低地址空间,在设计中,通过对某一地址进行比较,并判断双口RAM中的数据量情况,以此控制双口RAM的读/写。