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


    一、在线网页生成工具

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

    二、命令行生成工具

    点此下载

    内有使用说明。

    三、代码分析比较

    1、网页在线生成代码

    1 module CRC5_D8;
    2
    3 // polynomial: (0 2 5)
    4 // data 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
  • 相关阅读:
    wireshark 导出所有filter出来的包
    ubuntu 14.04安装pypcap
    激活windows7 企业版小记
    ubuntu 14.04 以root权限启动chrome
    git clone Linux 源码并切换TAG
    ubuntu 14.04 ns2.35 ***buffer overflow detected **: ns terminated解决办法
    我离baidu.com有几跳
    linux tcp超时重传实现分析
    dpctl 工具使用
    由于log太多导致ubuntu硬盘空间满了,进入不了系统解决办法
  • 原文地址:https://www.cnblogs.com/nios_ii/p/1942565.html
Copyright © 2020-2023  润新知