跨时钟域处理


跨时钟域处理

  传输信号分为控制信号数据信号

1.单bit跨时钟(控制信号)

  慢到快:由于快时钟域的可以采集到慢时钟域的信号,所以两级同步器直接 同步即可,即电平信号同步

  快到慢:此时,快时钟域的信号相对于慢时钟域而言为一个脉冲信号,所以采用脉冲信号同步。首先通过握手机制将脉冲信号展宽,然后在进行打两拍。如果要在快时钟域输出一个脉冲信号,即输出信号持续一个时钟周期,就可以在后面再加一个边沿检测同步器。


握手机制:
(1)快时钟域对脉冲信号进行采样,采样为高电平时输出高电平信号pulse_fast_r,此时不要急于将信号拉低,先保持输出信号为高电平状态。
(2)慢时钟域对快时钟域的pulse_fast_r进行延迟打拍采样,因为pulse_fast_r被快时钟域保持拉高状态,所以肯定会采集到该信号。
(3)慢时钟域确认采样得到高电平信号pulse_fast2s_r后,再反馈给快时钟域。
(4)快时钟域对反馈信号pulse_fast2s_r进行延迟打拍采样,此时拉低快时钟域的pulse_fast_r信号。

边沿检测器


2.多bit跨时钟(数据信号)

  可以通过异步FIFO和握手来实现多bit数据跨时钟传输。
当数据量少的时候用握手来实现,用FIFO的话有点浪费资源。
数据量大的时候建议用异步FIFO。


异步FIFO涉及知识点汇总:
(1)空满同步及标志的产生
(2)虚空和虚满
  对于空标志位来说,将写指针同步到读时钟域至少需要花费2个时钟,而在同步这段时间内有可能还会写入新的数据,因此同步后的写指针一定小于或等于(当且仅有同步时间内没有新数据写入的情况下才会等于)当前的写指针,所以此时判断不一定是真空;
  同理,对于满标志位来说,将读指针同步到读时钟域至少需要花费2个时钟,而在同步这段时间内有可能还会读出新的数据,因此同步后的读指针一定小于或等于当前读指针,所以此时判断并不一定是真满。
(3)异步FIFO的深度只能为2^n?
(4)深度不为2^n时,如何挑选格雷码保证地址相邻数只有1bit不同,包括绕回 https://blog.csdn.net/weixin_44101336/article/details/124263370
(5)FIFO深度计算
  要确定FIFO的深度,关键在于计算出在突发读写这段时间内有多少个数据没有被读走。也就是说FIFO的最小深度就等于没有被读走的数据个数。
  FIFO深度计算
  异步FIFO_小小verifier的博客
  备战秋招[六]-FIFO深度计算
(6)异步FIFO的端口信号,模块框架图及代码
(7)二进制和格雷码相互转换方法及代码
  二进制和格雷码相互转换
https://blog.csdn.net/sinat_25326461/article/details/52384968
(8)异步FIFO测试点
(9)画出同步FIFO和异步FIFO地电路结构框图
(10)异步FIFO的Verilog代码


参考文章

  1. 跨时钟域传输:快到慢
  2. 边沿检测器
  • 0
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值