(转)介绍两个CRC源码生成工具,可生成Verilog和VHDL

介绍两个CRC源码生成工具,可生成Verilog和VHDL

一、在线网页生成工具

打开http://www.easics.com/webtools/crctool,根据需要设置CRC的多项式参数,点击生成就可以了。

 

二、命令行生成工具

点此下载

内有使用说明。

 

三、代码分析比较

1、网页在线生成代码

复制代码
   
   
1 module CRC5_D8; 2 3 // polynomial: (0 2 5) 4 // data width: 8 5 // convention: the first serial bit is D[7] 6   function [ 4 : 0 ] nextCRC5_D8; 7 8 input [ 7 : 0 ] Data; 9 input [ 4 : 0 ] crc; 10 reg [ 7 : 0 ] d; 11 reg [ 4 : 0 ] c; 12 reg [ 4 : 0 ] newcrc; 13 begin 14 d = Data; 15 c = crc; 16 17 newcrc[ 0 ] = d[ 6 ] ^ d[ 5 ] ^ d[ 3 ] ^ d[ 0 ] ^ c[ 0 ] ^ c[ 2 ] ^ c[ 3 ]; 18 newcrc[ 1 ] = d[ 7 ] ^ d[ 6 ] ^ d[ 4 ] ^ d[ 1 ] ^ c[ 1 ] ^ c[ 3 ] ^ c[ 4 ]; 19 newcrc[ 2 ] = d[ 7 ] ^ d[ 6 ] ^ d[ 3 ] ^ d[ 2 ] ^ d[ 0 ] ^ c[ 0 ] ^ c[ 3 ] ^ c[ 4 ]; 20 newcrc[ 3 ] = d[ 7 ] ^ d[ 4 ] ^ d[ 3 ] ^ d[ 1 ] ^ c[ 0 ] ^ c[ 1 ] ^ c[ 4 ]; 21 newcrc[ 4 ] = d[ 5 ] ^ d[ 4 ] ^ d[ 2 ] ^ c[ 1 ] ^ c[ 2 ]; 22 nextCRC5_D8 = newcrc; 23 end 24 endfunction 25   endmodule 26  
复制代码

2、命令行方式生成代码

 

复制代码
   
   
1 // CRC module for 2   // data[7:0] 3   // crc[4:0]=1+x^2+x^5; 4   // 5 module crc( 6 input [ 7 : 0 ] data_in, 7 input crc_en, 8 output [ 4 : 0 ] crc_out, 9 input rst, 10 input clk); 11 12 reg [ 4 : 0 ] lfsr_q, 13 lfsr_c; 14 assign crc_out = lfsr_q; 15 always @( * ) begin 16 lfsr_c[ 0 ] = lfsr_q[ 0 ] ^ lfsr_q[ 2 ] ^ lfsr_q[ 3 ] ^ data_in[ 0 ] ^ dat 17 a_in[ 3 ] ^ data_in[ 5 ] ^ data_in[ 6 ]; 18 lfsr_c[ 1 ] = lfsr_q[ 1 ] ^ lfsr_q[ 3 ] ^ lfsr_q[ 4 ] ^ data_in[ 1 ] ^ dat 19 a_in[ 4 ] ^ data_in[ 6 ] ^ data_in[ 7 ]; 20 lfsr_c[ 2 ] = lfsr_q[ 0 ] ^ lfsr_q[ 3 ] ^ lfsr_q[ 4 ] ^ data_in[ 0 ] ^ dat 21 a_in[ 2 ] ^ data_in[ 3 ] ^ data_in[ 6 ] ^ data_in[ 7 ]; 22 lfsr_c[ 3 ] = lfsr_q[ 0 ] ^ lfsr_q[ 1 ] ^ lfsr_q[ 4 ] ^ data_in[ 1 ] ^ dat 23 a_in[ 3 ] ^ data_in[ 4 ] ^ data_in[ 7 ]; 24 lfsr_c[ 4 ] = lfsr_q[ 1 ] ^ lfsr_q[ 2 ] ^ data_in[ 2 ] ^ data_in[ 4 ] ^ da 25 ta_in[ 5 ]; 26 27 28 end // always 29 30 always @( posedge clk, posedge rst) begin 31 if (rst) begin 32 lfsr_q <= { 5 { 1 ' b1}}; 33 end 34 else begin 35 lfsr_q <= crc_en ? lfsr_c : lfsr_q; 36 end 37 end // always 38 endmodule // crc 39
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值