本文介绍了CRC(Cyclic Redundancy Check,循环冗余校验)编码原理,特别是CRC-32编码的并行实现方法。作者通过分析CRC算法的基础,提出了一种快速并行CRC算法,该算法能够简化CRC码的逻辑推导过程,尤其适用于32位CRC-32编码。相比于传统的查表法,该并行算法无需存储大量余数表,减少了延迟,同时也适用于其他位宽的并行CRC码。
在设计过程中,作者利用Xilinx公司的Virtex2系列XC2V40-6FG256 FPGA开发板,结合ISE开发平台和Verilog HDL语言进行设计与验证。文中详细描述了验证系统的结构,包括mgen模块(用于生成m序列信号),crcgen模块(实现CRC-32编码器),sigproc模块(引入误码以进行错误检测)以及crccheck模块(进行CRC译码和检错)。
在仿真波形图中,通过分析主要信号如sdin(输入序列)、CRCout(CRC编码输出)、dataProc(含误码的传输输出)、dout(去CRC码的数据输出)和CRCcheck(CRC伴随式)等,验证了算法的正确性。例如,当输入码字为0x60E84E34H时,CRC码输出为0x7DB9CBC8H,与串行方法的结果一致。在无误码传输情况下,CRCcheck输出为0,表明数据正确;若有误码,CRCcheck不再为0,提示需要进一步处理错误。
为了符合IEEE802.3协议要求,CRC编码器需对数据前32位取反,编码后再取反得到最终的帧校验序列(FCS)。通过设计并综合一个稍作修改的CRC-32编码器,作者使用IEEE802.3提供的12字节测试序列进行验证,得到正确结果。综合后的CRC-32编码器具有较高的最大时钟频率(超过200MHz),并在资源使用方面如Slices、Slice Flip Flops、4-input LUTs和IOBs等方面给出了详细数据。
结论指出,提出的并行CRC算法不仅简化了CRC计算,而且提高了计算效率,适用于高速应用。尽管并行计算可能导致较大门延迟,但通过电路优化可以降低延迟,使其适应更高的时钟频率。设计的CRC编码器已成功应用于以太网接入系统中。