⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc16.v

📁 crc16 module for SDIO DAT line calculation
💻 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 + -