CRC kódu potřebné Verilog ...................

G

Guru59

Guest
ahoj ............

jsem hledal čisté a také ASIC-world.com ale nemohl dostat kód pro jednoduchý CRC ..........

Bylo by skvělé, kdyby někdo příspěvků kód pro jednoduchý CRC nebo komplexní CRC .........díky ......

 
Kód takto je CRC caculation použité v protokolu ATA.

Modul makecrc (datain, reset, CLK, dataout)
vstup [15:0] datain;
vstup reset, CLK;
výkon [15:0] dataout;
reg [15:0] dataout;

drát [15:0] tempin;

drát [16:1] tempf;/ / Podle ATA spec
/ / Set f
přiřadit tempf [1] = (datain [0]) ^ (dataout [15]);
přiřadit tempf [2] = (datain [1]) ^ (dataout [14]);
přiřadit tempf [3] = (datain [2]) ^ (dataout [13]);
přiřadit tempf [4] = (datain [3]) ^ (dataout [12]);
přidělit tempf [5] = (datain [4]) ^ (dataout [11]) ^ (tempf [1]);
přiřadit tempf [6] = (datain [5]) ^ (dataout [10]) ^ (tempf [2]);
přiřadit tempf [7] = (datain [6]) ^ (dataout [9]) ^ (tempf [3]);
přiřadit tempf [8] = (datain [7]) ^ (dataout [8]) ^ (tempf [4]);
přiřadit tempf [9] = (datain [8]) ^ (dataout [7]) ^ (tempf [5]);
přiřadit tempf [10] = (datain [9]) ^ (dataout [6]) ^ (tempf [6]);
přiřadit tempf [11] = (datain [10]) ^ (dataout [5]) ^ (tempf [7]);
přiřadit tempf [12] = (datain [11]) ^ (dataout [4]) ^ (tempf [1]) ^ (tempf [8]);
přiřadit tempf [13] = (datain [12]) ^ (dataout [3]) ^ (tempf [2]) ^ (tempf [9]);
přiřadit tempf [14] = (datain [13]) ^ (dataout [2]) ^ (tempf [3]) ^ (tempf [10]);
přiřadit tempf [15] = (datain [14]) ^ (dataout [1]) ^ (tempf [4]) ^ (tempf [11]);
přiřadit tempf [16] = (datain [15]) ^ (dataout [0]) ^ (tempf [5]) ^ (tempf [12]);

přiřadit tempin [0] = (tempf [16]);
přiřadit tempin [1] = (tempf [15]);
přiřadit tempin [2] = (tempf [14]);
přiřadit tempin [3] = (tempf [13]);
přiřadit tempin [4] = (tempf [12]);
přidělit tempin [5] = (tempf [11]) ^ (tempf [16]);
přiřadit tempin [6] = (tempf [10]) ^ (tempf [15]);
přiřadit tempin [7] = (tempf [9]) ^ (tempf [14]);
přiřadit tempin [8] = (tempf [8]) ^ (tempf [13]);
přiřadit tempin [9] = (tempf [7]) ^ (tempf [12]);
přiřadit tempin [10] = (tempf [6]) ^ (tempf [11]);
přiřadit tempin [11] = (tempf [5]) ^ (tempf [10]);
přiřadit tempin [12] = (tempf [4]) ^ (tempf [9]) ^ (tempf [16]);
přiřadit tempin [13] = (tempf [3]) ^ (tempf [8]) ^ (tempf [15]);
přiřadit tempin [14] = (tempf [2]) ^ (tempf [7]) ^ (tempf [14]);
přiřadit tempin [15] = (tempf [1]) ^ (tempf [6]) ^ (tempf [13]);

Vždy @ (posedge CLK)
začít
if (reset)
začít
dataout <= 16'h4aba;
konec
jiný
začít
dataout <= tempin;
konec
konec

endmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top