CRC kôd potreban u VERILOG ...................

G

Guru59

Guest
bok ............

Imam traženje mreže i također ASIC-world.com, ali nije mogao dobiti kod za jednostavno CRC ..........

Internet bi bilo velik ako netko posts kod za jednostavno CRC ili složene CRC .........hvala ......

 
Koda kao što slijedi je CRC caculation koriste u ATA protokol.

modul makecrc (datain, reset, CLK, dataout)
input [15:0] datain;
ulaz reset, CLK;
izlaz [15:0] dataout;
reg [15:0] dataout;

žice [15:0] tempin;

žice [16:1] tempf;/ / prema ATA spec
/ / set f
dodijeliti tempf [1] = (datain [0]) ^ (dataout [15]);
dodijeliti tempf [2] = (datain [1]) ^ (dataout [14]);
dodijeliti tempf [3] = (datain [2]) ^ (dataout [13]);
dodijeliti tempf [4] = (datain [3]) ^ (dataout [12]);
dodijeliti tempf [5] = (datain [4]) ^ (dataout [11]) ^ (tempf [1]);
dodijeliti tempf [6] = (datain [5]) ^ (dataout [10]) ^ (tempf [2]);
dodijeliti tempf [7] = (datain [6]) ^ (dataout [9]) ^ (tempf [3]);
dodijeliti tempf [8] = (datain [7]) ^ (dataout [8]) ^ (tempf [4]);
dodijeliti tempf [9] = (datain [8]) ^ (dataout [7]) ^ (tempf [5]);
dodijeliti tempf [10] = (datain [9]) ^ (dataout [6]) ^ (tempf [6]);
dodijeliti tempf [11] = (datain [10]) ^ (dataout [5]) ^ (tempf [7]);
dodijeliti tempf [12] = (datain [11]) ^ (dataout [4]) ^ (tempf [1]) ^ (tempf [8]);
dodijeliti tempf [13] = (datain [12]) ^ (dataout [3]) ^ (tempf [2]) ^ (tempf [9]);
dodijeliti tempf [14] = (datain [13]) ^ (dataout [2]) ^ (tempf [3]) ^ (tempf [10]);
dodijeliti tempf [15] = (datain [14]) ^ (dataout [1]) ^ (tempf [4]) ^ (tempf [11]);
dodijeliti tempf [16] = (datain [15]) ^ (dataout [0]) ^ (tempf [5]) ^ (tempf [12]);

dodijeliti tempin [0] = (tempf [16]);
dodijeliti tempin [1] = (tempf [15]);
dodijeliti tempin [2] = (tempf [14]);
dodijeliti tempin [3] = (tempf [13]);
dodijeliti tempin [4] = (tempf [12]);
dodijeliti tempin [5] = (tempf [11]) ^ (tempf [16]);
dodijeliti tempin [6] = (tempf [10]) ^ (tempf [15]);
dodijeliti tempin [7] = (tempf [9]) ^ (tempf [14]);
dodijeliti tempin [8] = (tempf [8]) ^ (tempf [13]);
dodijeliti tempin [9] = (tempf [7]) ^ (tempf [12]);
dodijeliti tempin [10] = (tempf [6]) ^ (tempf [11]);
dodijeliti tempin [11] = (tempf [5]) ^ (tempf [10]);
dodijeliti tempin [12] = (tempf [4]) ^ (tempf [9]) ^ (tempf [16]);
dodijeliti tempin [13] = (tempf [3]) ^ (tempf [8]) ^ (tempf [15]);
dodijeliti tempin [14] = (tempf [2]) ^ (tempf [7]) ^ (tempf [14]);
dodijeliti tempin [15] = (tempf [1]) ^ (tempf [6]) ^ (tempf [13]);

Uvijek @ (posedge CLK)
započeti
if (reset)
započeti
dataout <= 16'h4aba;
kraj
drugi
započeti
dataout <= tempin;
kraj
kraj

endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top