跨时钟(CDC)处理
当设计中存在多个时钟域,信号从一个时钟域传入另一个时钟域时,即存在Clock Domain Crossing(CDC),需要小心处理,防止出现亚稳态
按时钟快慢来划分,跨时钟域问题可以分成从慢时钟域到快时钟域以及从快时钟域到慢时钟域两种场景;按信号位宽来划分,可以分为单比特跨时钟域问题与多比特跨时钟域问题
对于单比特跨时钟域问题来说,在不握手的机制下,最基本的处理是需要打两拍。而如果为从快时钟域到慢时钟域,则需要将信号展宽,以确保慢时钟域下能够采样到。展宽的基本要求通常为展宽至慢时钟周期的1.5倍以上,或者说,要求展宽后的信号要跨越慢时钟3个时钟沿,为了保证代码更迭所可能存在的时钟比变化而导致的跨时钟处理失败,可在此处插入断言
跨时钟问题需要灵活处理,对于多个关联控制信号的跨时钟处理,往往可以通过分析它们之间的逻辑关系,做辅助信号或者辅助逻辑来变为单比特跨时钟域来处理
对于多比特的数据信号,可以通过多周期路径或者FIFO来处理,多周期路径即通过一个辅助控制信号握手来确保数据的顺利采样
更多详细内容,请参考:
http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf