📄 crc1.v
字号:
/////////////////////////////////////////////////////////////
// din:输入信号clk:全局时钟 ///
//en1:使能控制sel1:信息位与校验位的区分1为信息位,0为校验位//
//reset:复位 crcout:输出 clkout:位定时信号 //
/////////////////////////////////////////////////////////////
module crc1(din,clk,en1,sel1,reset,crcout,clkout);
input din,clk,sel1,en1,reset;
output crcout,clkout;
reg crcout;
reg[15:0] crc_reg;
integer j;
reg[4:0] count;
wire clkout;
assign clkout=clk&&en1;
always@(posedge clkout or posedge reset)
begin
if (reset) begin
crc_reg<=16'hffff; count<=15;
end
else if (sel1) begin
crcout<=din;
for(j=14;j>11;j=j-1) begin
crc_reg[j+1]<=crc_reg[j];
end
crc_reg[12]<=crc_reg[11]^crc_reg[15]^din;
for(j=10;j>4;j=j-1)begin
crc_reg[j+1]<=crc_reg[j];
end
crc_reg[5]<=crc_reg[4]^crc_reg[15]^din;
for(j=3;j>=0;j=j-1)begin
crc_reg[j+1]<=crc_reg[j];
end
crc_reg[0]<=din^crc_reg[15];
end
else begin
crcout<=crc_reg[count];
if(count>0)count<=count-1;
else count<=15;
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -