《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析(四)DPHY ECC

D-PHY物理层的包头纠错码(Packet Header ECC)

1. 核心功能

  • 作用对象 :仅保护 长包/短包的包头(PH) (32位),包括:
    数据标识(DI, 1字节)
    字计数(WC, 2字节)
  • 核心能力
    单比特错误纠正
    双比特错误检测
  • 不覆盖范围
    包负载数据(由CRC校验)
    C-PHY物理层(仅D-PHY适用)

2. ECC实现机制

(1) 输入数据映射

将24位包头按以下顺序映射为ECC输入:

text

复制代码
D[23:16] = WC[15:8] (MSB)  
D[15:8]  = WC[7:0]  
D[7:0]   = DI[7:0]  
(2) 校验码生成
  • 表格

  • 算法 :改进型汉明码(Hamming-Modified Code)

  • 校验位 :6位

  • 生成逻辑
    python

    复制代码
    # 示例:P0计算(基于表5橙色区域)
    P0 = D0^D1^D2^D4^D5^D7^D10^D11^D13^D16^D20^D21^D22^D23
  • 输出 :8位ECC(高2位=0,低6位=校验值)


3. 接收端处理流程

  1. 重新计算ECC :对接收到的DI+WC生成新ECC'

  2. 计算症候(Syndrome)
    S = Received_ECC ⊕ ECC'

  3. 错误处理

    症候值 操作 说明
    S=0 无错误 -
    S∈表4 纠正单比特错误 查表4定位错误位并取反
    S∉表4 标记不可纠正错误(>2比特) 丢弃包或上报应用层

4. 关键设计约束

  • 位宽限制

    仅支持24位包头(64位模式禁用,ECC高位固定为0)。

  • 硬件实现

    发送端 :并行计算, 输入为3 个字节数据

  • 接收端 :syndrome查表解码

  • 错误范围

    ECC不保护负载数据(负载由CRC校验)。


5. 示例说明(图46)

  • 输入
    DI=0x37, WC_LSB=0xF0, WC_MSB=0x01
    → 映射为24位数据:0x01_F0_37
  • ECC计算
    输出 ECC=0x3F(二进制 0011_1111
  • 传输包头
    [DI=0x37] [WC_LSB=0xF0] [WC_MSB=0x01] [ECC=0x3F]

总结 :此ECC机制是D-PHY链路可靠性的核心保障,通过汉明码变种实现包头关键字段的实时纠错,但需严格限定24位输入范围。工程实现需重点优化症候查表逻辑以降低延迟。

相关推荐
白又白、2 小时前
时序优化和上板调试小结
fpga开发
Z22ZHaoGGGG4 小时前
verilog实现采样电流有效值的计算
fpga开发
fei_sun4 小时前
牛客Verilog刷题篇
fpga开发
my_daling7 小时前
DSMC通信协议理解,以及如何在FPGA上实现DSMC从设备(1)
学习·fpga开发
fei_sun18 小时前
FPGA&数字前端
fpga开发
尤老师FPGA19 小时前
HDMI数据的接收发送实验(九)
fpga开发
Flamingˢ21 小时前
ZYNQ + OV5640 视频系统开发(四):HDMI 显示链路
嵌入式硬件·fpga开发·硬件架构·音视频
LCMICRO-133108477461 天前
国产长芯微LDC5141完全P2P替代DAC80501,数模转换器 (DAC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·数模转换器 dac
Nobody331 天前
锁存器与触发器
fpga开发
Nobody331 天前
跨时钟域信号处理的办法有哪些
fpga开发·信号处理