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

时间:2014-05-08 09:48:24

标签: c++ c crc parity hamming-code

我有一个基于Cortex-M4的MCU通过16位并行存储器总线接口链接到FPGA。本质上,FPGA的行为类似于映射到MCU存储空间的外部存储器:MCU提供一个地址,后跟数据字(写入)或读取FPGA提供的字(读取)。

我想在寻址和数据写/读期间保护读和写传输错误。但是,由于两个部分之间的距离很短,我不希望发生很多误码。

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

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

1 个答案:

答案 0 :(得分:1)

根据我的经验,很难保护这样的并行总线。它当然是在带有ECC RAM等的PC和服务器级硬件中完成的,但很少在微控制器中完成。

如果您的特定Cortex-M4实现具有硬件CRC块,您可能能够在那里传输数据,假设您可以在每次总线传输结束时简单地添加CRC字。这可能仍然会减慢至少2-3倍,因为每个进出FPGA的字也必须用软件馈送到CRC单元。