赞
踩
在FPGA开发中,如果需要实现CRC校验功能但缺乏现成的代码,可以通过以下操作来快速完成开发。
1.[Verilog代码生成工具](http://outputlogic.com/?page_id=321)
2.[CRC在线验证工具](http://www.ip33.com/crc.html)
点击进入Verilog代码生成工具后为如下界面 :
当输入数据位宽为8,输出数据位宽为16,并且选择自定义校验规则时,Step1界面如下图所示:
点击Apply后,点击Step2后进入界面如下,并勾选自定义校验和的规则,最后选择生成Verilog代码还是VHDL代码。
使用MIPI CSI-2的CRC16进行举例,其校验结构如下:
同时,MIPI手册上提供了C语言的代码并提供了两个例子供参考。
下面使用CRC软件来生成Verilog代码。首先选择8bit输入、16bit输出、自定义CRC校验规则(x^16 + x^12 + x^5 + x^0),输入数据并点击Apply后界面如下所示。
点击Step2后勾选CRC校验规则并点击Generate Verilog Code后会同一界面生成相关代码,界面如下。
将产生的CRC校验代码复制到FPGA工具中进行验证,使用MIPI提供的两组数据进行测试。
Data1:FF 00 00 02 B9 DC F3 72 BB D4 B8 5A C8 75 C2 7C 81 F8 05 DF FF 00 00 01
Checksum LS byte and MS byte: F0 00
Data2:FF 00 00 00 1E F0 1E C7 4F 82 78 C5 82 E0 8C 70 D2 3C 78 E9 FF 00 00 01
Checksum LS byte and MS byte: 69 E5
从仿真图中可以看出,校验结果与MIPI手册输入不一致,表明工具生成的代码并不能直接使用,要想使代码输出结果与手册输出一致,还需要做以下操作:
1:确认输入输出是否需要翻转
2:输出要不要异或ffff 或者是0000
此时直接改代码测试是比较麻烦的,下面使用CRC在线验证工具进行辅助测试。
打开CRC在线测试工具后,输入Data1数据进行测试,结果如下所示:
输入输出反转勾选后,CRC验证工具的输出为:
发现在线运算结果和FPGA仿真中的一致,至少说明CRC工具生成的代码是正确的。当把输入和输出数据反转勾选后,计算结果就与MIPI手册一致。表示需要修改CRC校验工具生成的代码(将输入输出数据反转,即输入输出高低位互换)。把修改后的代码进行仿真,结果如下:
Data1:
Data2:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。