数字IC设计-CDC跨时钟域

#学习记录#

1  CDC跨时钟域

   在同步设计中,整个设计都是使用同一个时钟源,所有的时钟的频率和相位都可以事先预知。在异步设计中有两个或以上的时钟,且时钟之间是同频不同相或不同频的关系异步时序设计的关键就是把数据或者控制信号正确的进行跨时钟域传输。

CDC:信号由一个时钟域传入另一个异步时钟域。

2  CDC产生的问题

2.1  亚稳态

CDC会导致后续触发器的亚稳态,这也是绝大部分CDC问题的本质。

解决办法:

对于单信号来说,使用double ff构成同步器来进行信号的同步。

但使用double ff 只能保证c端结果的稳定,并不能保证c 端结果的正确性。

2.2  数据收敛

情况一:若不考虑CLKB时钟域的亚稳态问题,仅考虑延迟A与延迟B不同,则如下图所示:

 情况二:若考虑CLKB的亚稳态,不考虑延迟A与延迟B的不同则如下图所示:

解决方法:

1、对于连续变化的信号如:FIFO的读写地址,可以采用格雷码编码。

2、对于无法使用格雷码编码的信号,可采用握手协议。

发送端将并行的数据驱动到总线上,同时发出一个“数据有效”的请求信号REQ

接收端识别到REQ有效,接收这组数据

接收完毕之后向发送端返回一个响应信号ACK

发送端识别响应信号ACK

撤销请求信号REQ

接收端检测请求信号REQ无效

将响应信号ACK撤销

发送端检测到应答信号ACK无效,开始新一轮的数据传输

如图,REQ经过两级同步触发器传入接收端,ACK经过两级同步触发器传入发送端。握手协议有效期间,发送端必须保证数据总线上的数据稳定不变。

3、FIFO

发送端将数据写入FIFO中,接收端将数据读出,不存在跨时钟域问题。但是 数据在写入FIFO前需要检查FIFO是否满了,检查FIFO是否满需要将接收端读指针与发送端写指针对比,引入了读写指针的跨时钟域问题,同理数据在读出时也需要检查FIFO是否为空,同样存在此问题。但由于读写地址都是连续变化的,所以可以用格雷码编码的方式解决跨时钟域问题 。

FSM用来实现对FIFO的读写功能

比较器用来判断FIFO是否为空或者是否为满

同步read_addr/write_addr用于将读写指针同步到相应的时钟域中

2.3  数据丢失

输入端信号不能保持足够的时间使得接收端不能采样到数据导致数据丢失。

解决方法:

1、延长输入信号

2、脉冲信号触发电路

无论Q持续多久,输出只有一个周期的高电平。

若Q变化太快则会导致输出的高电平连在一起。

2.4  多路扇出

同一信号源经过不同的路径跨时钟域之后,多路扇出的值不一定相同。 

 

解决办法:

将信号同步之后再多路扇出

2.5  异步复位

恢复时间:在有效的时钟沿到来之前,触发器的异步复位信号释放时所要提前释放的最小时间。

移除时间:在有效的时钟沿到来之后,触发器的异步复位信号释放时所要保持不变的最小时间。

异步复位信号释放时不满足恢复时间和移除时间。

解决办法:

异步复位信号同步电路

参考文献

[1] CDC.CDC_哔哩哔哩_bilibili

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
同步时钟的跨时钟域转换是指将信号从一个时钟域传递到另一个时钟域的过程。在跨时钟域转换中,需要考虑时钟频率的差异以及保持时间的要求。 根据引用\[1\],跨时钟域转换需要考虑保持时间,即输入信号需要在时钟信号上升沿到来之后保持一定时间的不变。这个保持时间取决于具体的设计需求和时钟频率差异。 引用\[2\]指出,在从快时钟域向慢时钟域传递时钟周期的脉冲信号时,信号很可能会被滤掉。为了确保信号被采到,信号必须持续至少一个同步时钟周期。因此,在跨时钟域转换中,边沿同步器是一种常用的设计选择。 此外,引用\[3\]提到,目标时钟频率必须是源时钟频率的1.5倍或以上,才能满足跨时钟域转换的要求。如果目标时钟域的频率较慢,可以考虑使用握手信号来确保数据的可靠传输。 综上所述,同步时钟的跨时钟域转换需要考虑保持时间、时钟频率差异以及采用合适的同步器或握手信号来确保数据的正确传输。 #### 引用[.reference_title] - *1* [【CDC 设计】FPGA 跨时钟域设计方法](https://blog.csdn.net/m0_61298445/article/details/124533588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【FPGA】跨时钟域问题(二)(单bit信号跨时钟域 1. 电平同步器 2. 边沿同步器 3. 脉冲检测器)](https://blog.csdn.net/lihuanyu520/article/details/126135231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [跨时钟域处理方法](https://blog.csdn.net/qq_44933149/article/details/126363670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值