使用CRC生成器完成Verilog代码的快速开发

 1 前言  

          在FPGA开发中,如果需要实现CRC校验功能但缺乏现成的代码,可以通过以下操作来快速完成开发。

2 开发网站 

        1.[Verilog代码生成工具](http://outputlogic.com/?page_id=321)

        2.[CRC在线验证工具](http://www.ip33.com/crc.html)

3 使用Verilog代码生成工具生成Verilog/vhdl代码

        点击进入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后会同一界面生成相关代码,界面如下。

4 FPGA验证

        将产生的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在线验证工具进行辅助测试。

5 结合CRC在线验证工具进行验证

        打开CRC在线测试工具后,输入Data1数据进行测试,结果如下所示:

        输入输出反转勾选后,CRC验证工具的输出为:

        发现在线运算结果和FPGA仿真中的一致,至少说明CRC工具生成的代码是正确的。当把输入和输出数据反转勾选后,计算结果就与MIPI手册一致。表示需要修改CRC校验工具生成的代码(将输入输出数据反转,即输入输出高低位互换)。把修改后的代码进行仿真,结果如下:

Data1:

Data2:

         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值