cdc(clock domain crossing)

1. CDC

CDC要解决的问题是由于不同时钟域导致的数据采样不稳定。

Mentor 0-in工具报告了三种类型的CDC问题,如下所示:

·两个时钟域之间不同步

·异步复位无同步

·同步器之前的组合逻辑

·重聚(Reconvergence)

2.两个时钟域之间不同步

时钟域的设计的具有时钟异步的(或在ISA截面具有

可变的相位关系)设计中的另一个时钟。例如,假设一个时钟通过时钟分频器从另一个时钟输出。这两个时钟具有恒定的相位关系 ;因此,使用这些时钟的两部分设计实际上属于同一个时钟域(图2-1 A)。但是,supposet的时钟频率为50 MHz和33 MHz。这些时钟的相位关系随时间而变化; 因此,他们计时两个不同的时钟域(图2-1 B)。

图2-1。时钟域

2.1.One-bit syn

2.1。DMUXSynchronizer(数据总线同步器)

从传输域控制信号由2DFF同步器同步,此时数据可认为稳定,此时可用tx_sel_r2来采样数据。

2.2.异步FIFO同步器

多锁,多访问FIFO将传输的数据排队。


2.3。多位数据同步器

2DFF同步器对每个位进行同步,但是在任何接收时钟周期内,一次只能改变一个同步位。同时改变的两个数据,在经过D触发器采样后,由于不同的delay,采样后的数据可能会存在一个CLK的位差。

2.4.Handshakes

先将数据同步到新的时钟域,然后反馈ACK信号至数据源,然后数据源发出使信号使能数据。

3.异步重置无同步

保证同一个d触发器的d端,RESET端,SET端等都是同一个时钟域。

 

总是@(posedge clk,negedge rst_async_n) 
如果(!rst_async_n) 
开始
     rst_s1 <= 1'b0;  
结束
其他的开始
     rst_s1 <= 1'b1;  
结束
总是@(posedge clk,negedge rst_async_n)  
如果(!rst_async_n)开始
    rst_s2 <= 1'b0;  
结束
其他的开始
    rst_s2 <= rst_s1;  
结束
分配rst_sync_n = rst_s2;   

4.同步器之前的组合逻辑

异步路径中的组合逻辑对同步信号来说是一个重大问题,因为用于确定同步路径上可接受的故障率的数据在每个时钟周期期间都会在CDC信号上进行单个转换。但是如果将组合逻辑放在路径上,那么这个假设由于毛刺传播而是错误的结果,错误率显着上升为了解决这个问题,你应该从逻辑路径中删除所有组合逻辑。在设计中,一般在模块的输出端用D触发器作模块间的隔离,既可以取消跨时钟域的组合逻辑,又减少了模块间的布线延迟。

5.重聚(Reconvergence)

该字的各个位与接收时钟域同步,但每个位都受到可变延迟的影响。同样,FSM next_state输入可以表示与当前状态不一致的命令。

好的方案当相应的异步FIFO读取数据值被保证准备好时,仲裁器选择接收数据值。即用同步过的选通信号去选取稳定的数据。

不好的实现会导致模拟或硬件实现中的不可恢复的错误。在下面的不良方案的例子中,可变延迟会导致将错误的命令应用于数据。




 

  • 4
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值