【FPGA |
您所在的位置:网站首页 › cdc是什么意思的缩写 › 【FPGA |
前言
跨时钟域(Clock Domain Conversion,CDC),无论是招聘笔试还是实际应用,都是数字IC前端的常见问题;还可变向地称为“脉冲同步问题”,“脉冲检测问题”等。 一、跨时钟域场景跨时钟域场景可分为以下几种: 单bit信号 1)从慢时钟域到快时钟域(快采慢)。 2)从快时钟域到慢时钟域(慢采快)。 多bit信号1)异步FIFO(地址:格雷码) 2)握手机制? 二、各常见应对方法 2.1 单bit信号 - 快采慢1.整倍数的快信号,无论相位如何,都可以采样到慢信号 2.不是整倍数的快信号,有可能出现采集不到???
做三级D触发器,判断???原因是防毛刺吗?? 最简单的单比特信号处理通常采用两级DFF串联进行同步,如下图所示:
从时钟域A(CLKA)传过来的信号a_in, 直接用时钟域B CLKB采用很容易产生亚稳态,用两级DFF 敲过后再使用就可以把亚稳态概率降到一个合理的值。 很多人可能会问,为什么是两级DFF呢?一级或者三级DFF行不行呢?这里有一个平均失效间隔时间MTBF(Mean Time Between Failure)的考虑。MTBF时间越长,出现亚稳态的概率就越小,但是也不能完全避免亚稳态。注意采样时钟频率越高,MTBF可能会迅速减小。 有文献给出的数据:对于一个采样频率为200Mhz的系统,如果不做同步MTBF是2.5us,一级DFF同步的MTBF大概是23年,两级DFF同步的大约MTBF大概是640年,MTBF越长出错的概率越小。所以一级看上去不太稳,二级差不多够用了,至于三级可能会影响到系统的性能,而且增加面积,所以看上去没什么必要。 两级DFF同步器听起来够简单的吧?这个方法虽然很简单,但是很多人用起来还是常常会犯错。 错误1 :时钟域A的组合逻辑信号直接敲两级DFF同步到时钟域B 如下图(1)所示虽然时钟域A的逻辑信号c0 传输到时钟域B的时候,也用了两级DFF 同步器,但我们知道组合逻辑电路各个输入信号的不一致性以及组合逻辑内部路径的延时时间不一样,运算后的信号存在毛刺如图(2),而我们又无法预先知道CLKB 的上升沿何时会到来,CLKB 采样到的信号就无法预知,这显然不是我们想要的结果。
因此,要想CLKB 能采到稳定的信号,时钟域A的信号必须是经过CLKA 敲过,在一个时钟周期内是稳定的信号,如图(3)所示:
错误2 : Clock-gating enable 信号没有经过异步处理 作者:IC君 链接:https://www.jianshu.com/p/81eec134a8c2 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 module cdc_1bit_slow2fast( input i_clk, input i_rst, input i_cdc_signal, output reg o_cdc_signal ); reg s_cdc_signal_d1; reg s_cdc_signal_d2; reg s_cdc_signal_d3; always@(posedge i_clk) begin s_cdc_signal_d1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |