0
收藏
微博
微信
复制链接

多位总线各打两拍,数据仍可能拼错

2026-08-31 15:15
12

多位总线各打两拍,数据仍可能拼错

多位总线各打两拍,数据仍可能拼错封面技术图

单比特异步信号常用两级触发器降低亚稳态向后传播的概率,于是有人把8位、16位总线的每一位都各打两拍。仿真里数据能过去,上板后却偶尔出现从未发送过的组合值。两级同步器解决的是单个采样点的亚稳态传播,不会保证多位信号在同一个目标时钟沿到达。总线跨域的核心是数据一致性,而不是触发器数量。只有先建立数据何时稳定、何时允许读取的协议,目标域才不会接收一个从未发送过的数。

每一位的路径不可能完全相同

源时钟域同时更新一组数据,经过组合逻辑、布线和目标触发器后,各位到达时间存在偏差。目标时钟若正好落在变化窗口,有些位可能采到旧值,有些位采到新值;各自的两级同步器还可能因为亚稳态恢复时间不同,在不同周期完成更新。最终总线会短暂或持续一个周期呈现“新旧拼接”的字。静态时序无法把异步域之间约束成普通同步路径,门级仿真也很难覆盖模拟亚稳态,所以问题常在硬件压力测试中才出现。

多位总线各打两拍,数据仍可能拼错正文技术图1:多位异步输入逐位进入同步触发器,不能自动获得同周期一致性。

图1 多位异步输入逐位进入同步触发器,不能自动获得同周期一致性。

低速配置数据可以用保持加握手

源域先把整组数据写进保持寄存器,随后翻转请求信号;请求作为单比特控制经过同步器进入目标域。目标域检测到请求后,在确认数据已经稳定足够时间的周期读取整组数据,再把应答同步回源域。源域收到应答前不得改写保持寄存器。这个协议用控制信号建立数据稳定窗口,适合寄存器配置、状态快照和低吞吐命令。握手延迟由两个时钟和同步级数决定,不能用于每拍都要传输的流数据。

多位总线各打两拍,数据仍可能拼错正文技术图2:保持寄存器与控制逻辑的组合,用稳定窗口替代逐位碰运气采样。

图2 保持寄存器与控制逻辑的组合,用稳定窗口替代逐位碰运气采样。

连续数据流交给异步FIFO

异步FIFO在双口存储器中保存数据,写端只使用写时钟,读端只使用读时钟。跨域传递的是经过格雷码处理的读写指针或状态信息,使相邻计数只有一位变化,降低多位指针被混采的风险。格雷码也不是“直接连过去就安全”,每一位仍要经过同步,且满空判断、指针位宽和复位释放都要按结构实现。FIFO深度要覆盖两个时钟平均速率差、突发长度和读端最大停顿,不能只凭经验选一个2的幂。

多位总线各打两拍,数据仍可能拼错正文技术图3:断开连接的时钟域示意可用于识别:没有协议的直接总线连接并不构成可靠通信。

图3 断开连接的时钟域示意可用于识别:没有协议的直接总线连接并不构成可靠通信。

验证要检查协议,不只检查数值

CDC静态检查应标出所有跨域端点,确认单比特控制、握手总线和FIFO分别使用正确结构;对总线逐位同步器设置规则拦截。仿真中给两个时钟设置非整数比并缓慢漂移相位,随机加入背压与复位,使用序号数据检查丢失、重复、乱序和撕裂。形式验证或断言可以约束“请求未应答前数据保持不变”“写满不得继续写”“读空不得继续读”。板级测试则用长时间计数和错误注入暴露低概率边界,而不是只跑几秒波形。

多位总线各打两拍,数据仍可能拼错正文技术图4:异步FIFO指针跨域采用格雷码与同步器,满空判断回到各自本地时钟域完成。

图4 异步FIFO指针跨域采用格雷码与同步器,满空判断回到各自本地时钟域完成。

复位也是一次跨时钟事件

多个时钟域共用异步复位时,断言可以异步,释放最好在各自时钟域同步完成。若源域已经开始发送,而目标域FIFO指针或握手状态仍在复位,首次事务就可能被当成旧请求或错误的满空状态。接口规范应写清哪个域先启动、复位期间数据是否丢弃、两端如何重新对齐。对异步FIFO,还要使用经过验证的IP或严格遵循器件厂商结构,约束同步指针路径的最大偏斜,避免格雷码多位在物理实现后同时跨越观察窗口。跨域设计的正确性来自协议、结构、约束和验证四项闭环,不来自多放几级寄存器。窄脉冲控制信号还有另一层风险:即使两级同步器没有传播亚稳态,脉冲也可能短到完全落在目标时钟两个边沿之间。源域应把事件转换为保持电平、翻转位或计数,再由目标域同步并检测变化;若事件可能在目标域确认前连续发生,则需要计数器或FIFO而不是单个翻转位。接口文档把数据吞吐、最大突发、允许丢事件和复位行为写出来,CDC结构才有明确选择依据。

选结构时只问两个问题:数据在目标域采样前能否保证整体保持不变,以及传输期间能否接受停顿。能保持、低吞吐用握手;连续流和速率解耦用异步FIFO;单比特状态才用普通同步器。跨域信号还要在物理实现后复查。同步器触发器应尽量相邻放置,减少第一级到第二级之间的延时,为亚稳态恢复留出时间;工具属性和CDC约束要跟随层次变更,避免综合优化拆散结构。

两级同步器保护的是一根异步控制线,整组数据还需要一致性协议。你们的CDC检查规则,会自动报出多位总线逐位同步这种结构吗?


声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207

登录后查看更多
0
评论 0
收藏
侵权举报
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

热门评论0

相关文章

凡亿教育

凡亿教育打通了“人才培养+人才输送”的闭环,致力于做电子工程师的梦工厂,打造“真正有就业保障的电子工程师职业教育平台”。帮助电子人快速成长,实现升职加薪。 为了满足学员多样化学习需求,凡亿教育课程开设了硬件、PCB、仿真、电源、EMC、FPGA、电机、嵌入式、单片机、物联网、人工智能等多门主流学科。

开班信息