Max WellPERSONAL NOTES
工作技术 / ASYNC FIFO & CDC

一种非 2 次幂深度异步 FIFO:物理指针、Gray 进度计数与准静态数据跨域

把“访问哪个 entry”“已经推进多少事务”和“跨域何时可见”分开,理解非 2 次幂存储深度与 Gray 进度同步如何配合。

工作技术 · 预览稿异步 FIFO / Gray / bundled-data CDC

物理 Ptr 管理 slot,Gray Cnt 传递累计进度。目的域可以跳过中间 Gray state;Data 的安全捕获依赖稳定窗口和实际时序预算。

01存储位置与 FIFO 深度

D 是 FIFO 深度。它用于覆盖 entry 被占用到释放 credit 返回发送端的延时。先按发送速率与延时预算选择深度,再配置进度计数器范围。

图 1|七个 slot 与读选择路径深度 7 仅为教学示例。Slot 0 到 Slot 6 分别存放 Data 与 Metadata,七路数据从左向右进入梯形 MUX。Rx RdPtr 反向选择 slot;选中数据送入 Rx capture。Gray 进度单独双向同步。Tx Clock DomainRx Clock DomainFIFO Storage · 示例 D=7 Slot 0Data + MetadataSlot 1Data + MetadataSlot 2Data + MetadataSlot 3Data + MetadataSlot 4Data + MetadataSlot 5Data + MetadataSlot 6Data + Metadata Read MUX7:1 Rx capture stageselected Data RdPtr物理 slot 选择反向读选择 WrCnt → GraySynchronizer → WrCntSync RdCntSync ← SynchronizerGray ← RdCnt
图 1|七个 slot 与读选择路径 · 深度 7 为教学示例。每个 slot 的 Data 与 Metadata 进入 7:1 MUX;Rx RdPtr 选择读取位置。写、读进度分别跨域同步。
状态解决的问题配置依据
WrPtr / RdPtr下一次访问哪个物理 entry按实际深度 D 循环
WrCnt / RdCnt写入、读取累计推进了多少步使用完整的 2 次幂 Gray 状态空间;范围足以区分 0 到 D 项
FIFO 深度 Dcredit 返回前,继续承接发送端的数据数据传递、消费与 credit 返回延时;兼顾 burst 和需要覆盖的停顿
增加深度可以减少等待 credit 的停顿、吸收突发;若长期生产速率高于消费速率,有限 FIFO 仍会填满。

02累计进度怎样跨域

操作:单步观察 → 连续播放 → 暂停接收端,观察 Full 与 credit 返回。完整窗口打开动画 ↗
交互演示 · 由所提供的动画改为通用教学模型。所有数值仅用于演示;显示功能事件与标称同步过程,不模拟亚稳态。
目的端观察含义行为
跳过中间 Gray state看到了更新的累计进度不要求为每个 Packet 单独观察一次源状态
RdCnt == WrCntSyncEmpty禁止读取不存在的数据
(WrCnt − RdCntSync) mod M 达到 D写端可见占用量达到深度Full;禁止覆盖未确认释放的 entry
读进度同步滞后写端看到的可用空间偏少可能延迟恢复发送;不会由滞后凭空产生 credit
图中的状态跳步以 Gray crossing 满足物理传播与同步要求为前提。计数进度和 Packet 排队过程应分别观察。

03数据何时可以安全捕获

图 2|准静态数据的稳定窗口示意图不按时间比例绘制。Data 必须在目的端捕获前稳定,并在捕获所需窗口内保持;控制可见性延迟提供预算,不能代替物理时序检查。Data pathTx storageRx capture Control pathProgress counterSynchronizerData valid 源端变化Data 已稳定控制可见 / 之后捕获
图 2|准静态数据的稳定窗口 · 示意图不按时间比例绘制。Data 必须在目的端捕获前稳定,并在捕获所需窗口内保持;控制可见性延迟提供预算,不能代替物理时序检查。
图 3|Rx 发起并结束的 round-trip pathRdPtr 从 Rx 寄存器出发,经过组合 MUX,再由 Rx 寄存器捕获数据。该路径需要按实际 launch/capture 关系检查。Rx RdPtrRxClk launchRead MUX组合选择逻辑Rx captureRxClk captureTx StorageselectData穿过区域边界,不等于可以切断时序
图 3|Rx 发起并结束的 round-trip path · RdPtr 从 Rx 寄存器出发,经过组合 MUX,再由 Rx 寄存器捕获数据。该路径需要按实际 launch/capture 关系检查。
观察指标条件或标称关系边界
同步状态可见φ + (S−1) × TdestS 为同步级数;0 ≤ φ < Tdest
首包捕获若目的端下一拍捕获:φ + S × Tdest功能级标称关系;亚稳态可能延长可见时间
Valid 首次置位Empty → Non-Empty后续 Packet 还受到排队、服务和 downstream blocking 影响
Ready 恢复Full → Non-Fullcredit 更新不一定产生 Ready 的 0 → 1
Slot Metadata和 Data 存入、读取同一个 slot具有相同 Packet lifetime
实时 Sideband表示当前状态,独立同步不随 FIFO 排队

04约束与验证边界

路径类型必须检查的关系
Gray progress → 目的域同步器限制跨域传播,保持源状态变化所需的物理时序假设
准静态 Data / Slot Metadata目的端捕获前完成稳定,并满足捕获所需保持窗口
Rx RdPtr → MUX → Rx capture按实际 Rx launch/capture 关系检查 round-trip path
实时 Sideband → 独立同步器按各自 CDC mechanism 检查
图 4|同一时间的边沿使用同一旧状态同时计算 Tx 和 Rx 的 next state,再原子提交,最后重算组合输出。模型不允许同一时间产生零周期 CDC 传播。PRE-EDGE STATECalculate Tx next stateCalculate Rx next stateATOMIC COMMIT提交后重算组合输出
图 4|同一时间的边沿使用同一旧状态 · 同时计算 Tx 和 Rx 的 next state,再原子提交,最后重算组合输出。模型不允许同一时间产生零周期 CDC 传播。
验证场景必须保持的行为
Empty 后首包 / 连续 burst有效后再捕获;Packet 顺序不变
Full / Full 后释放一个 entry禁止覆盖;credit 穿过 CDC 后才能解除相应 backpressure
两域边沿同时发生都读取同一 pre-edge state,再原子提交
Source 更快 / Destination 更快允许目的域跳步;双向进度传递均正确
Downstream stall允许时延增加;不 underflow、不 overwrite,占用量保持在 0 到 D
本文是通用架构说明。图示与功能模型不能代替物理 CDC 验证;约束应匹配具体 crossing mechanism。