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
  • 相关阅读:
    nvm切换node失效
    React.memo is not a function
    Path must be a string. Received true
    如何通过node读取excel文件内的数据
    js中四舍五入的方法
    为什么不推荐使用数组的includes方法---记两次includes引起的问题
    改变input复选框样式
    如何使用伪元素扩大按钮可点击区域
    简单实用的纯css按钮效果
    ie6 ie7 ie8 ie9和FireFox Chrome中css区别总结
  • 原文地址:https://www.cnblogs.com/nios_ii/p/1942565.html
Copyright © 2011-2022 走看看