Files
eb001/src/main/scala/backBoard/ebus/crc32.scala

107 lines
4.1 KiB
Scala

package BACK
import chisel3._
import chisel3.util._
// module eth_crc (Clk, Reset, Data, Enable, Initialize, Crc, CrcError);
// input Clk;
// input Reset;
// input [3:0] Data;
// input Enable;
// input Initialize;
// output [31:0] Crc;
// output CrcError;
// reg [31:0] Crc;
// wire [31:0] CrcNext;
// assign CrcNext[0] = Enable & (Data[0] ^ Crc[28]);
// assign CrcNext[1] = Enable & (Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29]);
// assign CrcNext[2] = Enable & (Data[2] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[30]);
// assign CrcNext[3] = Enable & (Data[3] ^ Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30] ^ Crc[31]);
// assign CrcNext[4] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[0];
// assign CrcNext[5] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[1];
// assign CrcNext[6] = (Enable & (Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30])) ^ Crc[ 2];
// assign CrcNext[7] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[3];
// assign CrcNext[8] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[4];
// assign CrcNext[9] = (Enable & (Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30])) ^ Crc[5];
// assign CrcNext[10] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[6];
// assign CrcNext[11] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[7];
// assign CrcNext[12] = (Enable & (Data[2] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[30])) ^ Crc[8];
// assign CrcNext[13] = (Enable & (Data[3] ^ Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30] ^ Crc[31])) ^ Crc[9];
// assign CrcNext[14] = (Enable & (Data[3] ^ Data[2] ^ Crc[30] ^ Crc[31])) ^ Crc[10];
// assign CrcNext[15] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[11];
// assign CrcNext[16] = (Enable & (Data[0] ^ Crc[28])) ^ Crc[12];
// assign CrcNext[17] = (Enable & (Data[1] ^ Crc[29])) ^ Crc[13];
// assign CrcNext[18] = (Enable & (Data[2] ^ Crc[30])) ^ Crc[14];
// assign CrcNext[19] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[15];
// assign CrcNext[20] = Crc[16];
// assign CrcNext[21] = Crc[17];
// assign CrcNext[22] = (Enable & (Data[0] ^ Crc[28])) ^ Crc[18];
// assign CrcNext[23] = (Enable & (Data[1] ^ Data[0] ^ Crc[29] ^ Crc[28])) ^ Crc[19];
// assign CrcNext[24] = (Enable & (Data[2] ^ Data[1] ^ Crc[30] ^ Crc[29])) ^ Crc[20];
// assign CrcNext[25] = (Enable & (Data[3] ^ Data[2] ^ Crc[31] ^ Crc[30])) ^ Crc[21];
// assign CrcNext[26] = (Enable & (Data[3] ^ Data[0] ^ Crc[31] ^ Crc[28])) ^ Crc[22];
// assign CrcNext[27] = (Enable & (Data[1] ^ Crc[29])) ^ Crc[23];
// assign CrcNext[28] = (Enable & (Data[2] ^ Crc[30])) ^ Crc[24];
// assign CrcNext[29] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[25];
// assign CrcNext[30] = Crc[26];
// assign CrcNext[31] = Crc[27];
// always @ (posedge Clk or posedge Reset)
// begin
// if (Reset)
// Crc <= 32'hffffffff;
// else
// if(Initialize)
// Crc <= 32'hffffffff;
// else
// Crc <= CrcNext;
// end
// assign CrcError = Crc[31:0] != 32'hc704dd7b; // CRC not equal to magic number
// endmodule
//-----------------------------------------------------------------------------
// Copyright (C) 2009 OutputLogic.com
// This source file may be used and distributed without restriction
// provided that this copyright statement is not removed from the file
// and that any derivative work contains the original copyright notice
// and the associated disclaimer.
//
// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
// OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
// WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//-----------------------------------------------------------------------------
// CRC module for data[7:0] , crc[31:0]=1+x^1+x^2+x^4+x^5+x^7+x^8+x^10+x^11+x^12+x^16+x^22+x^23+x^26+x^32;
//-----------------------------------------------------------------------------
class crc32_8() extends Module{
class crc32IO_Bundle extends Bundle{
val isEnable = Input(Bool())
val dataIn = Input(UInt(8.W))
val crc = Output(UInt(32.W))
}
val io = IO( new crc32IO_Bundle )
// val LFSR_POLY = "h4c11db7".U
io.crc := "ha1b2c3d4".U
}