⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc_ccit_8.v

📁 用于计算CRC的verilog HDL源码
💻 V
字号:
////////////////////////////////////////////////////////////////////////////////// crc calculation// This VERILOG code was generated using CRCGEN.PL version 1.6// Last Modified: 02/26/2001// Options Used://    Module Name = crc32//      CRC Width = 16//     Data Width = 8//     CRC Init   = 0//     Polynomial = [0 -> 16]//        1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1//// Disclaimer: THESE DESIGNS ARE PROVIDED "AS IS" WITH NO WARRANTY //             WHATSOEVER AND XILINX SPECIFICALLY DISCLAIMS ANY //             IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR//             A PARTICULAR PURPOSE, OR AGAINST INFRINGEMENT.//// Copyright (c) 2001 Xilinx, Inc.  All rights reserved.//////////////////////////////////////////////////////////////////////////////////module crc32 (   crc_reg,    crc,   d,   calc,   init,   d_valid,   clk,   reset   );output [31:0] crc_reg;output [7:0]  crc;input  [7:0]  d;input         calc;input         init;input         d_valid;input         clk;input         reset;reg    [31:0] crc_reg;reg    [7:0]  crc;//////////////////////////////////////////////////////////////////////////////// Internal Signals//////////////////////////////////////////////////////////////////////////////wire   [31:0] next_crc;//////////////////////////////////////////////////////////////////////////////// Infer CRC-16 registers// // The crc_reg register stores the CRC-16 value.// The crc register is the most significant 8 bits of the // CRC-16 value.//// Truth Table:// -----+---------+----------+----------------------------------------------// calc | d_valid | crc_reg  | crc // -----+---------+----------+----------------------------------------------//  0   |     0   | crc_reg  | crc //  0   |     1   |  shift   | bit-swapped, complimented msbyte of crc_reg//  1   |     0   | crc_reg  | crc //  1   |     1   | next_crc | bit-swapped, complimented msbyte of next_crc// -----+---------+----------+----------------------------------------------// ////////////////////////////////////////////////////////////////////////////// always @ (posedge clk or posedge reset)begin   if (reset) begin      crc_reg <= 16'h0000;      crc     <= 8'h00;   end      else if (init) begin      crc_reg <= 16'h0000;      crc     <=  8'h00;   end   else if (calc & d_valid) begin      crc_reg <= next_crc;      crc     <= ~{next_crc[8], next_crc[9], next_crc[10], next_crc[11],                   next_crc[12], next_crc[13], next_crc[14], next_crc[15]};   end      else if (~calc & d_valid) begin      crc_reg <=  {crc_reg[7:0], 8'h00};      crc     <= ~{crc_reg[0], crc_reg[1], crc_reg[2], crc_reg[3],                   crc_reg[4], crc_reg[5], crc_reg[6], crc_reg[7]};   endend//////////////////////////////////////////////////////////////////////////////// CRC XOR equations//////////////////////////////////////////////////////////////////////////////assign next_crc[0] = crc_reg[12] ^ d[7] ^ crc_reg[8] ^ d[3];assign next_crc[1] = crc_reg[13] ^ d[6] ^ d[2] ^ crc_reg[9];assign next_crc[2] = d[5] ^ crc_reg[14] ^ d[1] ^ crc_reg[10];assign next_crc[3] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[11];assign next_crc[4] = crc_reg[12] ^ d[3];assign next_crc[5] = crc_reg[12] ^ crc_reg[13] ^ d[7] ^ crc_reg[8] ^ d[2] ^ d[3];assign next_crc[6] = crc_reg[13] ^ d[6] ^ crc_reg[14] ^ d[1] ^ d[2] ^ crc_reg[9];assign next_crc[7] = d[5] ^ crc_reg[14] ^ crc_reg[15] ^ d[0] ^ d[1] ^ crc_reg[10];assign next_crc[8] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[0] ^ crc_reg[11];assign next_crc[9] = crc_reg[12] ^ crc_reg[1] ^ d[3];assign next_crc[10] = crc_reg[13] ^ d[2] ^ crc_reg[2];assign next_crc[11] = crc_reg[3] ^ crc_reg[14] ^ d[1];assign next_crc[12] = crc_reg[12] ^ crc_reg[4] ^ d[7] ^ crc_reg[15] ^ d[0] ^ crc_reg[8] ^ d[3];assign next_crc[13] = crc_reg[13] ^ d[6] ^ crc_reg[5] ^ d[2] ^ crc_reg[9];assign next_crc[14] = d[5] ^ crc_reg[14] ^ crc_reg[6] ^ d[1] ^ crc_reg[10];assign next_crc[15] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[7] ^ crc_reg[11];endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -