CRC/奇偶校验/汉明保护16位并行总线

CRC/Parity/Hamming Protect 16-bit parallel bus

本文关键字:16位 并行 总线 保护 奇偶 偶校验 CRC      更新时间:2023-10-16

我有一个基于Cortex-M4的MCU通过16位并行内存总线接口连接到FPGA。从本质上讲,FPGA的行为就像一个映射到MCU内存空间的外部存储器:MCU呈现一个地址,后跟一个数据字(写)或读取FPGA呈现的字(读)。

我想保护读和写在寻址和数据写/读过程中不受传输错误的影响。但是,由于两部分之间的距离很短,我不希望有太多的误码。

我可以很容易地在FPGA内实现奇偶校验、汉明码或CRC的检查和生成。但是,在uC中执行相同的操作(检查和生成)似乎相对困难,因为我不想削弱吞吐量。在没有错误检测的情况下,读取和写入16位字大约需要4-6个处理器周期,因此相当快。因此,我不想在保护措施上花费数百个周期。

最后,我正在寻找一种中等效率的16位数据错误检测方法,该方法在尽可能少的周期内在uC中实现。

(根据我的经验)很少像这样保护并行总线。这当然是在PC和服务器级硬件与ECC RAM等,但很少在微控制器。

如果你的特定的Cortex-M4实现有一个硬件CRC块,你可能能够在那里流式传输数据,假设你可以简单地在每个总线传输的末尾添加一个CRC字。尽管如此,这可能仍然会使其速度减慢至少2-3倍,因为进出FPGA的每个字也必须在软件中馈送到CRC单元。