mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
//-----------------------------------------------------
 | 
						|
// Design Name : serial_crc_ccitt
 | 
						|
// File Name   : serial_crc.v
 | 
						|
// Function    : CCITT Serial CRC
 | 
						|
// Coder       : Deepak Kumar Tala
 | 
						|
//-----------------------------------------------------
 | 
						|
module serial_crc_ccitt (
 | 
						|
clk     ,
 | 
						|
reset   ,
 | 
						|
enable  ,
 | 
						|
init    , 
 | 
						|
data_in , 
 | 
						|
crc_out
 | 
						|
);
 | 
						|
//-----------Input Ports---------------
 | 
						|
input clk     ;
 | 
						|
input reset   ;
 | 
						|
input enable  ;
 | 
						|
input init    ;
 | 
						|
input data_in ;
 | 
						|
//-----------Output Ports---------------
 | 
						|
output [15:0] crc_out;
 | 
						|
//------------Internal Variables--------
 | 
						|
reg   [15:0] lfsr;
 | 
						|
//-------------Code Start-----------------
 | 
						|
assign crc_out = lfsr;
 | 
						|
// Logic to CRC Calculation
 | 
						|
always @ (posedge clk)
 | 
						|
if (reset) begin
 | 
						|
  lfsr <= 16'hFFFF;
 | 
						|
end else if (enable) begin
 | 
						|
  if (init) begin
 | 
						|
    lfsr <=  16'hFFFF;
 | 
						|
  end else begin
 | 
						|
    lfsr[0]  <= data_in ^ lfsr[15];
 | 
						|
    lfsr[1]  <= lfsr[0];
 | 
						|
    lfsr[2]  <= lfsr[1];
 | 
						|
    lfsr[3]  <= lfsr[2];
 | 
						|
    lfsr[4]  <= lfsr[3];
 | 
						|
    lfsr[5]  <= lfsr[4] ^ data_in ^ lfsr[15];
 | 
						|
    lfsr[6]  <= lfsr[5];
 | 
						|
    lfsr[7]  <= lfsr[6];
 | 
						|
    lfsr[8]  <= lfsr[7];
 | 
						|
    lfsr[9]  <= lfsr[8];
 | 
						|
    lfsr[10] <= lfsr[9];
 | 
						|
    lfsr[11] <= lfsr[10];
 | 
						|
    lfsr[12] <= lfsr[11] ^ data_in ^ lfsr[15];
 | 
						|
    lfsr[13] <= lfsr[12];
 | 
						|
    lfsr[14] <= lfsr[13];
 | 
						|
    lfsr[15] <= lfsr[14];
 | 
						|
  end
 | 
						|
end 
 | 
						|
 | 
						|
endmodule
 |