下面是CRC校验码产生程序,求大神解释它是怎么实现他的功能的。我研究两天了都没搞明白。
module CRC16_SER(
Reset,Gclk,Soc,Data_in,Crc_out);
input Reset,Gclk,Soc,Data_in;
output[15:0] Crc_out;
wire Reset,Gclk,Soc,Data_in;
reg[15:0] Crc_out;
reg Temp;
integer i,j,k,l;
parameter U_DLY=1;
always@(posedge Reset or posedge Gclk)
begin
if(Reset)
Crc_out<=#U_DLY 16'b0;
else if(Soc==1'b1)
Crc_out<=#U_DLY 16'b0;
else
begin
Temp=Data_in^Crc_out[15];
for(j=15;j>12;j=j-1)
Crc_out[j]<=#U_DLY Crc_out[j-1];
Crc_out[12]<=#U_DLY Temp^Crc_out[11];
for(k=11;k>5;k=k-1)
Crc_out[k]<=#U_DLY Crc_out[k-1];
Crc_out[5]<=#U_DLY Temp^Crc_out[4];
for(l=4;l>0;l=l-1)
Crc_out<=#U_DLY Crc_out[l-1];
Crc_out[0]<=#U_DLY Temp;
end
end
endmodule
上面代码按照CRC公式编写的代码。
一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
串行输入并行输出的问题!
一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!