zoukankan      html  css  js  c++  java
  • 介绍两个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
  • 相关阅读:
    Windows2016修改密码
    Linux设置文件夹的权限
    Linux防火墙的命令
    Linux安装jdk1.8.0_181
    Linux删除,重命名文件夹和文件的命令
    一次循环打印九九乘法表
    java垃圾回收机制
    操作系统常用调度算法
    Android中TextView中的文字设置为不同颜色
    自定义Dialog以及Dialog返回值到Activity
  • 原文地址:https://www.cnblogs.com/nios_ii/p/1942565.html
Copyright © 2011-2022 走看看