?? crc_ccit_8.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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -