一、在线网页生成工具 打开http://www.easics.com/webtools/crctool,根据需要设置CRC的多项式参数,点击生成就可以了。
二、命令行生成工具
回复可下载,内有使用说明。
三、代码分析比较1、网页在线生成代码
- module CRC5_D8;
-
- // polynomial: (0 2 5)
- // data width: 8
- // convention: the first serial bit is D[7]
- function [4:0] nextCRC5_D8;
-
- input [7:0] Data;
- input [4:0] crc;
- reg [7:0] d;
- reg [4:0] c;
- reg [4:0] newcrc;
- begin
- d = Data;
- c = crc;
-
- newcrc[0] = d[6] ^ d[5] ^ d[3] ^ d[0] ^ c[0] ^ c[2] ^ c[3];
- newcrc[1] = d[7] ^ d[6] ^ d[4] ^ d[1] ^ c[1] ^ c[3] ^ c[4];
- newcrc[2] = d[7] ^ d[6] ^ d[3] ^ d[2] ^ d[0] ^ c[0] ^ c[3] ^ c[4];
- newcrc[3] = d[7] ^ d[4] ^ d[3] ^ d[1] ^ c[0] ^ c[1] ^ c[4];
- newcrc[4] = d[5] ^ d[4] ^ d[2] ^ c[1] ^ c[2];
- nextCRC5_D8 = newcrc;
- end
- endfunction
- endmodule
复制代码
2、命令行方式生成代码
- // CRC module for
- // data[7:0]
- // crc[4:0]=1+x^2+x^5;
- //
- module crc(
- input [7:0] data_in,
- input crc_en,
- output [4:0] crc_out,
- input rst,
- input clk);
-
- reg [4:0] lfsr_q,
- lfsr_c;
- assign crc_out = lfsr_q;
- always @(*) begin
- lfsr_c[0] = lfsr_q[0] ^ lfsr_q[2] ^ lfsr_q[3] ^ data_in[0] ^ dat
- a_in[3] ^ data_in[5] ^ data_in[6];
- lfsr_c[1] = lfsr_q[1] ^ lfsr_q[3] ^ lfsr_q[4] ^ data_in[1] ^ dat
- a_in[4] ^ data_in[6] ^ data_in[7];
- lfsr_c[2] = lfsr_q[0] ^ lfsr_q[3] ^ lfsr_q[4] ^ data_in[0] ^ dat
- a_in[2] ^ data_in[3] ^ data_in[6] ^ data_in[7];
- lfsr_c[3] = lfsr_q[0] ^ lfsr_q[1] ^ lfsr_q[4] ^ data_in[1] ^ dat
- a_in[3] ^ data_in[4] ^ data_in[7];
- lfsr_c[4] = lfsr_q[1] ^ lfsr_q[2] ^ data_in[2] ^ data_in[4] ^ da
- ta_in[5];
-
-
- end // always
-
- always @(posedge clk, posedge rst) begin
- if(rst) begin
- lfsr_q <= {5{1'b1}};
- end
- else begin
- lfsr_q <= crc_en ? lfsr_c : lfsr_q;
- end
- end // always
- endmodule // crc
复制代码
|