crc_16.v

来自「MATLAB嵌入式信号处理系统 基于MATLAB的」· Verilog 代码 · 共 56 行

V
56
字号
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    00:50:09 10/09/2007 
// Design Name: 
// Module Name:    crc_16 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module crc_16(clk, reset, x, crc_reg, crc_s);
input clk;            //系统归工作时钟
input reset;          // 复位信号
input x;             //串行输入数据
output [15:0] crc_reg; //CRC编码输出
output crc_s;   //CRC同步信号,标志着一帧编码的结束

reg [15:0] crc_reg;
reg crc_s;
reg [3:0] cnt;
wire [15:0] crc_enc;

always @(posedge clk) begin
	if(!reset) begin
		crc_reg <= 0;
		cnt <= 0;
	end
	else begin
	   crc_reg <= crc_enc;
		cnt <= cnt +1;
		if(cnt == 0)
		  crc_s <= 0;
		else
		  crc_s <= 1;
	end
end

assign crc_enc[0] = crc_reg[15]^x;
assign crc_enc[1] = crc_reg[0];
assign crc_enc[2] = crc_reg[1]^crc_reg[15]^x;
assign crc_enc[14:3] = crc_reg[13:2];
assign crc_enc[15] = crc_reg[14]^crc_reg[15]^x;

endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?