📄 crc16.v
字号:
// CRC-16: x16 + x15 + x2 + 1
module crc16 (
reset_n,
reset_s,
clk,
d,
data_out,
hold
);
input clk, clr;
input hold;
input [7:0] d;
output [15:0] data_out;
wire [15:0] xor_out;
reg [15:0] r;
wire [13:0] temr;
assign temr[0] = d[7] ^ d[6];
assign temr[1] = temr[0] ^ d[5];
assign temr[2] = temr[1] ^ d[4];
assign temr[3] = temr[2] ^ d[3];
assign temr[4] = temr[3] ^ d[2];
assign temr[5] = temr[4] ^ d[1];
assign temr[6] = temr[5] ^ d[0];
assign temr[7] = r[15] ^ r[14];
assign temr[8] = temr[7] ^ r[13];
assign temr[9] = temr[8] ^ r[12];
assign temr[10] = temr[9] ^ r[11];
assign temr[11] = temr[10] ^ r[10];
assign temr[12] = temr[11] ^ r[9];
assign temr[13] = temr[12] ^ r[8];
assign xor_out[0] = temr[6] ^ temr[13];
assign xor_out[1] = temr[5] ^ temr[12];
assign xor_out[2] = temr[6] ^ temr[4] ^ temr[13] ^ temr[11];
assign xor_out[3] = temr[5] ^ temr[3] ^ temr[12] ^ temr[10];
assign xor_out[4] = temr[4] ^ temr[2] ^ temr[11] ^ temr[9];
assign xor_out[5] = temr[3] ^ temr[1] ^ temr[10] ^ temr[8];
assign xor_out[6] = temr[2] ^ temr[0] ^ temr[9] ^ temr[7];
assign xor_out[7] = temr[1] ^ d[7] ^ temr[8] ^ r[15];
assign xor_out[8] = temr[0] ^ temr[7] ^ r[0];
assign xor_out[9] = d[7] ^ r[15] ^ r[1];
assign xor_out[10] = r[2];
assign xor_out[11] = r[3];
assign xor_out[12] = r[4];
assign xor_out[13] = r[5];
assign xor_out[14] = r[6];
assign xor_out[15] = temr[6] ^ temr[13] ^ r[7];
always @(posedge clk or negedge reset_n)
begin
if (!reset_n || reset_s)
r <= 0;
else if (!hold)
r <= xor_out;
end
assign data_out = r;
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -