CDC知识点总结

最近在看spyglass扯到了cdc,那借此机会把CDC的知识点过一遍
参考博客http://blog.csdn.net/u011729865/article/details/52937915,其中提到了论文《基于spyglass同步设计分析和静态验证》,这里总结并纠正一些知识点
本文结构基于论文,侵删

1. 数字设计中的常见问题

a. Setup/Hold不满足,产生了亚稳态,这个不赘述了
b. Data保持时间不满足:这个是指快时钟域->慢时钟域时,若data是一快时钟上的脉冲信号(1cycle),那慢时钟域很有可能会采不到,然后CDC就丢数了
c. 数据关联和竞争:这个指多bit CDC并采用2级触发器做同步时,由于多bit数据路径延迟不一,因此到达目的时钟域时可能会发生数据不同步情况(如:异步FIFO的地址,可以靠格雷码解决)
d. 复杂设计中常见CDC方式:异步FIFO、握手、单bit使能信号(老生常谈)
e. 异步复位:这里主要强调释放时由于需要不同时钟去采,而VLSI中异步复位信号到达不同触发器延迟不一,就会出现有的复位释放了、有的还在复位现象

2. 亚稳态和MTBF

这里提到的“危险区域”是指目的触发器自身的建立+保持时间形成的window,输入信号翻转不能落入这里

另外,触发器级联方式做的同步,增加触发器个数是为了增大亚稳态恢复时间Tr,该值越大MTBF越大,电路稳定性越好;但随频率不断上升,光靠级联也不太好解决,而且级联会增大系统整体延迟。
MTBF另一参数τ称为时间常数,该值越大MTBF越小,而τ和工作电压VDD成反比(工作电压降低,时间常数急剧增加),因此牵扯到低功耗设计中不同power domain低VDD带来的亚稳态问题。

3. 单bit CDC

3.1 慢时钟到快时钟:快时钟频率是慢时钟频率2倍以上,一般采用2级触发器同步;不足2倍则可能出现Data保持时间问题
3.2 快时钟到慢时钟:
a. 限制条件:输入连续2个脉冲时,脉冲间隔必须大于2个慢时钟周期;若1Tdst < W < 2Tdst,则可能只采到1个脉冲,若W < 1Tdst,则可能啥也采不到
CDC知识点总结_第1张图片
b.
CDC知识点总结_第2张图片

4. 多bit CDC

3.1 握手协议
a. 全握手协议
CDC知识点总结_第3张图片
b. 简化后的握手协议:注意优化后的req和ack需要自行控制持续时间,这个就需要考虑维持的周期要确保能被另一个时钟域采到
CDC知识点总结_第4张图片
CDC知识点总结_第5张图片
3.2 异步FIFO
这个太常见了,不赘述

你可能感兴趣的:(FPGA)