在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
楼主: 刘兴国

[求助] CDC跨时钟域同步,多bit同步的骚操作?

[复制链接]
发表于 昨天 13:44 | 显示全部楼层


   
刘兴国 发表于 2025-8-26 13:20
异步FIFO似乎也只能保证有限个数据可以完全同步到,一旦超过深度上限,数据是不是也只能丢掉了?
...


可以用FIFO控制逻辑控制双口SRAM,你要是说这样都不满足,你要不考虑用DMA吧,毕竟通信时钟总归是慢过写入时钟的,这段时间的缓冲区空标志够硬件做很多事了
回复 支持 反对

使用道具 举报

发表于 昨天 13:50 | 显示全部楼层


   
蕾兹曼 发表于 2025-8-26 13:44
可以用FIFO控制逻辑控制双口SRAM,你要是说这样都不满足,你要不考虑用DMA吧,毕竟通信时钟总归是慢过写 ...


貌似内置DMA可能能满足你的需求,直接使用soc的sram,可以说是特别大了,也没有额外开销,就是要做好总线的仲裁。发送数据就算提前写进来也要等待当前正在发送的数据发送完毕才能加载到通信接口上。那这样的话,外设只需要一个缓冲区,用于存放下一次发送的数据就好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 14:40 | 显示全部楼层


   
蕾兹曼 发表于 2025-8-26 13:50
貌似内置DMA可能能满足你的需求,直接使用soc的sram,可以说是特别大了,也没有额外开销,就是要做好总线 ...


谢谢您!不过我们的芯片本身就很小,没有DMA也没有sram。只能考虑寄存器级的实现方式。这种方案的开销对我来说过于大了。
回复 支持 反对

使用道具 举报

发表于 昨天 15:54 | 显示全部楼层


   
刘兴国 发表于 2025-8-26 14:40
谢谢您!不过我们的芯片本身就很小,没有DMA也没有sram。只能考虑寄存器级的实现方式。这种方案的开销对 ...


我意思是单独给这个外设加个DMA逻辑,总线做一下仲裁
回复 支持 反对

使用道具 举报

发表于 昨天 16:09 | 显示全部楼层


   
蕾兹曼 发表于 2025-8-25 15:09
同步flag信号效果应该也是一样的,按照你的图示,应该用握手


没必要这么复杂, 我之前设计过的一个应该满足你的要求:
1. 当src端数据需要同步时, 产生syncing信号, 同时锁住src端数据.
2. syncing信号被dst端采到(单bit sync逻辑, 打2~3拍, 看工艺, 28以下最好打三拍, 你应该只需要2拍), 直接获取src 锁住的数据
3. syncing_ack从dst端同步到src端, 将syncing信号置0.
4. syncing信号==0后, 可以开启下次同步过程.

用到锁src数据的8个寄存器, + 同步的4个寄存器, 共12个寄存器. 具体实现你再优化优化, 可以效率很高, 中间会漏掉一些数据, 但是最后的数据一定是对的, 而且不会同步错误的数据.

回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 16:26 | 显示全部楼层


   
loglong 发表于 2025-8-26 16:09
没必要这么复杂, 我之前设计过的一个应该满足你的要求:
1. 当src端数据需要同步时, 产生syncing信号, 同 ...


这大概也是握手同步吧?如果在syncing为高期间src来了新的数据并且为最后一笔,最终数据是否会丢失?
回复 支持 反对

使用道具 举报

发表于 昨天 17:37 | 显示全部楼层


   
刘兴国 发表于 2025-8-26 13:41
数据展宽吗?展宽后,最后的数据可能就抓不到了吧?


你可以了解一下I2C strech功能,简单来说,就是一个反压机制,从机没处理完数据会拉住SCL告知master等待从机处理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 19:04 | 显示全部楼层


   
xhopo 发表于 2025-8-26 17:37
你可以了解一下I2C strech功能,简单来说,就是一个反压机制,从机没处理完数据会拉住SCL告知master等待 ...


好的,十分感谢! 但是我的设备目前不支持反压的设置,不能与主机通信。主机的动作完全不受控,随机且随意。想知道在这种限定条件之下是否有可能做到无风险的同步?还是就没有这样的电路结构,实现需要的功能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 19:06 | 显示全部楼层


   
蕾兹曼 发表于 2025-8-26 15:54
我意思是单独给这个外设加个DMA逻辑,总线做一下仲裁


我的设备也没有总线,只有SCL和SDA两根线。
回复 支持 反对

使用道具 举报

发表于 7 小时前 | 显示全部楼层


   
刘兴国 发表于 2025-8-26 19:06
我的设备也没有总线,只有SCL和SDA两根线。


我说的总线是指cpu跟外设通信的总线,在SOC内部……就是CPU给外设写数据的总线,其实就是在sram接口做个仲裁,因为你的通信外设跟CPU都有访问权限,需要避免冲突。看你是要优先级还是轮询
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-27 19:12 , Processed in 0.018330 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表