哪位高手看得懂这段CRC编码?是不是一个除法器的实现?
主要是主体部分的那段看不懂,是不是一个除法器的实现?module crc(crc_reg,crc,d,calc,init,d_valid,clk,reset);
output crc_reg;
output crc;
input d;
input calc;
input init;
input d_valid;
input clk;
input reset;
reg crc_reg;
reg crc;
wire next_crc;
always @(posedge clk or posedge reset)
begin
if (reset)
begin
crc_reg <= 16'h0000;
crc <= 8'h00;
end
else if (init)
begin
crc_reg <= 16'h0000;
crc <= 8'h00;
end
else if (calc & d_valid)
begin
crc_reg <= next_crc;
crc <= ~{next_crc, next_crc, next_crc, next_crc,
next_crc, next_crc, next_crc, next_crc};
end
else if (~calc & d_valid)
begin
crc_reg <= {crc_reg, 8'h00};
crc <= ~{crc_reg, crc_reg, crc_reg, crc_reg,
crc_reg, crc_reg, crc_reg, crc_reg};
end
end
assign next_crc = crc_reg ^ d ^ crc_reg ^ d;
assign next_crc = crc_reg ^ d ^ d ^ crc_reg;
assign next_crc = d ^ crc_reg ^ d ^ crc_reg;
assign next_crc = d ^ crc_reg ^ d ^ crc_reg;
assign next_crc = crc_reg ^ d;
assign next_crc=crc_reg^crc_reg^d^crc_reg^d^d;
assign next_crc = crc_reg ^ d ^ crc_reg ^ d ^ d ^
crc_reg;
assign next_crc = d ^ crc_reg ^ crc_reg ^ d ^ d ^
crc_reg;
assign next_crc = d ^ crc_reg ^ d ^ crc_reg ^ crc_reg;
assign next_crc = crc_reg ^ crc_reg ^ d;
assign next_crc = crc_reg ^ d ^ crc_reg;
assign next_crc = crc_reg ^ crc_reg ^ d;
assign next_crc = crc_reg ^ crc_reg ^ d ^ crc_reg
^ d ^ crc_reg ^ d;
assign next_crc = crc_reg ^ d ^ crc_reg ^ d ^ crc_reg;
assign next_crc = d ^ crc_reg ^ crc_reg ^ d ^ crc_reg;
assign next_crc = d ^ crc_reg ^ d ^ crc_reg ^ crc_reg;
endmodule 这什么代码啊?<br>
连一点注释都没有! 就是没有注释阿,否则就不会那么费劲了。这是从网上下的CRC编码,从输入输出端口上看是把8位的输入数据编成32位的CRC码,可主体部分的代码风格跟编码原理很不一样,不知其中用了什么技巧,哪位高手做过CRC编码? crc做过,看这个东西先从特例算起,假如只有一位的话是什么情况<br>
<br>
还有知道不知是什么crc多项式? 楼上做过CRC?知道主体那段异或是用来实现什么吗?我看出用来计算每位next_crc的crc_reg和d的位数编号相加都等于15,估计是实现多项式的相乘,不知道是不是这样。另外,这段程序没有给出生成多项式,不知是不是直接把编码和生成多项式的实现合并一起了,还请高手不吝赐教! 这个是并行CRC的实现. 楼上的高手能不能说得详细一点,谢谢! 我来看看。看有没有用。 这是XILLLINX的CRC编码并行实现,应该是CRC32啊, 好象是矩阵运算啥的
页:
[1]
2