mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-27 10:55:51 +00:00
initial import
This commit is contained in:
commit
7764d0ba1d
481 changed files with 54634 additions and 0 deletions
53
tests/asicworld/code_hdl_models_parallel_crc.v
Normal file
53
tests/asicworld/code_hdl_models_parallel_crc.v
Normal file
|
@ -0,0 +1,53 @@
|
|||
//-----------------------------------------------------
|
||||
// Design Name : parallel_crc_ccitt
|
||||
// File Name : parallel_crc.v
|
||||
// Function : CCITT Parallel CRC
|
||||
// Coder : Deepak Kumar Tala
|
||||
//-----------------------------------------------------
|
||||
module parallel_crc_ccitt (
|
||||
clk ,
|
||||
reset ,
|
||||
enable ,
|
||||
init ,
|
||||
data_in ,
|
||||
crc_out
|
||||
);
|
||||
//-----------Input Ports---------------
|
||||
input clk ;
|
||||
input reset ;
|
||||
input enable ;
|
||||
input init ;
|
||||
input [7:0] data_in ;
|
||||
//-----------Output Ports---------------
|
||||
output [15:0] crc_out;
|
||||
//------------Internal Variables--------
|
||||
reg [15:0] crc_reg;
|
||||
wire [15:0] next_crc;
|
||||
//-------------Code Start-----------------
|
||||
assign crc_out = crc_reg;
|
||||
// CRC Control logic
|
||||
always @ (posedge clk)
|
||||
if (reset) begin
|
||||
crc_reg <= 16'hFFFF;
|
||||
end else if (enable) begin
|
||||
if (init) begin
|
||||
crc_reg <= 16'hFFFF;
|
||||
end else begin
|
||||
crc_reg <= next_crc;
|
||||
end
|
||||
end
|
||||
// Parallel CRC calculation
|
||||
assign next_crc[0] = data_in[7] ^ data_in[0] ^ crc_reg[4] ^ crc_reg[11];
|
||||
assign next_crc[1] = data_in[1] ^ crc_reg[5];
|
||||
assign next_crc[2] = data_in[2] ^ crc_reg[6];
|
||||
assign next_crc[3] = data_in[3] ^ crc_reg[7];
|
||||
assign next_crc[4] = data_in[4] ^ crc_reg[8];
|
||||
assign next_crc[5] = data_in[7] ^ data_in[5] ^ data_in[0] ^ crc_reg[4] ^ crc_reg[9] ^ crc_reg[11];
|
||||
assign next_crc[6] = data_in[6] ^ data_in[1] ^ crc_reg[5] ^ crc_reg[10];
|
||||
assign next_crc[7] = data_in[7] ^ data_in[2] ^ crc_reg[6] ^ crc_reg[11];
|
||||
assign next_crc[8] = data_in[3] ^ crc_reg[0] ^ crc_reg[7];
|
||||
assign next_crc[9] = data_in[4] ^ crc_reg[1] ^ crc_reg[8];
|
||||
assign next_crc[10] = data_in[5] ^ crc_reg[2] ^ crc_reg[9];
|
||||
assign next_crc[11] = data_in[6] ^ crc_reg[3] ^ crc_reg[10];
|
||||
|
||||
endmodule
|
Loading…
Add table
Add a link
Reference in a new issue