OpenCores
URL https://opencores.org/ocsvn/10_100m_ethernet-fifo_convertor/10_100m_ethernet-fifo_convertor/trunk

Subversion Repositories 10_100m_ethernet-fifo_convertor

[/] [10_100m_ethernet-fifo_convertor/] [verilog/] [CRC_Module.v] - Blame information for rev 10

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 antiquity
module CRC_Module(Clk, Reset, Data, Enable, Initialize, Crc, CrcError);
2
 
3
input Clk;
4
input Reset;
5
input [3:0] Data;
6
input Enable;                   //should be valid from the destination address until the data before the CRC checksum
7
input Initialize;               //need to initialize before data in
8
 
9
output [31:0] Crc;
10
output CrcError;
11
 
12
reg  [31:0] Crc;
13
 
14
wire [31:0] CrcNext;
15
 
16
 
17
assign CrcNext[0] = Enable & (Data[0] ^ Crc[28]);
18
assign CrcNext[1] = Enable & (Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29]);
19
assign CrcNext[2] = Enable & (Data[2] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[30]);
20
assign CrcNext[3] = Enable & (Data[3] ^ Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30] ^ Crc[31]);
21
assign CrcNext[4] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[0];
22
assign CrcNext[5] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[1];
23
assign CrcNext[6] = (Enable & (Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30])) ^ Crc[ 2];
24
assign CrcNext[7] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[3];
25
assign CrcNext[8] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[4];
26
assign CrcNext[9] = (Enable & (Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30])) ^ Crc[5];
27
assign CrcNext[10] = (Enable & (Data[3] ^ Data[2] ^ Data[0] ^ Crc[28] ^ Crc[30] ^ Crc[31])) ^ Crc[6];
28
assign CrcNext[11] = (Enable & (Data[3] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[31])) ^ Crc[7];
29
assign CrcNext[12] = (Enable & (Data[2] ^ Data[1] ^ Data[0] ^ Crc[28] ^ Crc[29] ^ Crc[30])) ^ Crc[8];
30
assign CrcNext[13] = (Enable & (Data[3] ^ Data[2] ^ Data[1] ^ Crc[29] ^ Crc[30] ^ Crc[31])) ^ Crc[9];
31
assign CrcNext[14] = (Enable & (Data[3] ^ Data[2] ^ Crc[30] ^ Crc[31])) ^ Crc[10];
32
assign CrcNext[15] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[11];
33
assign CrcNext[16] = (Enable & (Data[0] ^ Crc[28])) ^ Crc[12];
34
assign CrcNext[17] = (Enable & (Data[1] ^ Crc[29])) ^ Crc[13];
35
assign CrcNext[18] = (Enable & (Data[2] ^ Crc[30])) ^ Crc[14];
36
assign CrcNext[19] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[15];
37
assign CrcNext[20] = Crc[16];
38
assign CrcNext[21] = Crc[17];
39
assign CrcNext[22] = (Enable & (Data[0] ^ Crc[28])) ^ Crc[18];
40
assign CrcNext[23] = (Enable & (Data[1] ^ Data[0] ^ Crc[29] ^ Crc[28])) ^ Crc[19];
41
assign CrcNext[24] = (Enable & (Data[2] ^ Data[1] ^ Crc[30] ^ Crc[29])) ^ Crc[20];
42
assign CrcNext[25] = (Enable & (Data[3] ^ Data[2] ^ Crc[31] ^ Crc[30])) ^ Crc[21];
43
assign CrcNext[26] = (Enable & (Data[3] ^ Data[0] ^ Crc[31] ^ Crc[28])) ^ Crc[22];
44
assign CrcNext[27] = (Enable & (Data[1] ^ Crc[29])) ^ Crc[23];
45
assign CrcNext[28] = (Enable & (Data[2] ^ Crc[30])) ^ Crc[24];
46
assign CrcNext[29] = (Enable & (Data[3] ^ Crc[31])) ^ Crc[25];
47
assign CrcNext[30] = Crc[26];
48
assign CrcNext[31] = Crc[27];
49
 
50
 
51
always @ (posedge Clk or posedge Reset)
52
begin
53
  if (Reset)
54
    Crc <=  32'hffffffff;
55
  else
56
  if(Initialize)
57
    Crc <=  32'hffffffff;
58
  else
59
    Crc <=  CrcNext;
60
end
61
 
62
assign CrcError = Crc[31:0] != 32'hc704dd7b;  // CRC not equal to magic number
63
 
64
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.