我有8位输入数据,我必须计算输入字节的累积CRC-16。请帮助我生成CRC的verilog代码-16代与多项式0x8408。16位CRC生成与8408 8位输入数据verilog中的polisomial
function bit [15:0] ecc::cal_crc(input bit [31:0] data[$]);
bit [15:0] rCRC = 16'hFFFF;
bit [31:0] payload;
begin
foreach(data[i])
begin
payload = data[i];
rCRC[0] = rCRC[0]^rCRC[4]^rCRC[5]^rCRC[6]^rCRC[10]^rCRC[12]
^rCRC[13]^payload[0]^payload[1]^payload[1]^payload[2]
^payload[2]^payload[4]^payload[5]^payload[6]^payload[8]
^payload[8]^payload[9]^payload[9]^payload[10]^payload[12]
^payload[13]^payload[16]^payload[16]^payload[17]^payload[17]
^payload[20]^payload[21]^payload[24]^payload[28];
rCRC[1] = rCRC[0]^rCRC[1]^rCRC[5]^rCRC[6]^rCRC[7]^rCRC[11]^ rCRC[13]^rCRC[14] ^payload[0]^payload[1]^payload[2]^payload[2]^payload[3]^payload[3]^payload[5]^payload[6]^payload[7]^payload[9]^payload[9]^payload[10]^payload[10]^payload[11]^payload[13]^payload[14]^payload[17]^payload[17]^payload[18]^payload[18]^payload[21]^payload[22]^payload[25]^payload[29];
rCRC[2] = rCRC[1]^rCRC[2]^rCRC[6]^rCRC[7]^rCRC[8]^rCRC[12]^rCRC[14]^rCRC[15] ^payload[1]^payload[2]^payload[3]^payload[3]^payload[4]^payload[4]^payload[6]^payload[7]^payload[8]^payload[10]^payload[10]^payload[11]^payload[11]^payload[12]^payload[14]^payload[15]^payload[18]^payload[18]^payload[19]^payload[19]^payload[22]^payload[23]^payload[26]^payload[30];
rCRC[3] = rCRC[0]^rCRC[2]^rCRC[3]^rCRC[7]^rCRC[8]^rCRC[9]^rCRC[13]^rCRC[15] ^payload[0]^payload[2]^payload[3]^payload[4]^payload[4]^payload[5]^payload[5]^payload[7]^payload[8]^payload[9]^payload[11]^payload[11]^payload[12]^payload[12]^payload[13]^payload[15]^payload[16]^payload[19]^payload[19]^payload[20]^payload[20]^payload[23]^payload[24]^payload[27]^payload[31];
rCRC[4] = rCRC[0]^rCRC[1]^rCRC[3]^rCRC[5]^rCRC[6]^rCRC[8]^rCRC[9]^rCRC[12]^rCRC[13]^rCRC[14] ^payload[0]^payload[1]^payload[1]^payload[1]^payload[2]^payload[2]^payload[3]^payload[4]^payload[4]^payload[5]^payload[5]^payload[5]^payload[6]^payload[8]^payload[9]^payload[9]^payload[9]^payload[10]^payload[10]^payload[12]^payload[13]^payload[14]^payload[16]^payload[17]^payload[20]^payload[21]^payload[25];
rCRC[5] = rCRC[0]^rCRC[1]^rCRC[2]^rCRC[4]^rCRC[6]^rCRC[7]^rCRC[9]^rCRC[10]^rCRC[13]^rCRC[14]^rCRC[15]^payload[0]^payload[1]^payload[2]^payload[2]^payload[2]^payload[3]^payload[3]^payload[4]^payload[5]^payload[5]^payload[6]^payload[6]^payload[6]^payload[7]^payload[9]^payload[10]^payload[10]^payload[10]^payload[11]^payload[11]^payload[13]^payload[14]^payload[15]^payload[17]^payload[18]^payload[21]^payload[22]^payload[26];
rCRC[6] = rCRC[1]^rCRC[2]^rCRC[3]^rCRC[5]^rCRC[7]^rCRC[8]^rCRC[10]^rCRC[11]^rCRC[14]^rCRC[15] ^payload[0]^payload[0]^payload[1]^payload[2]^payload[3]^payload[3]^payload[3]^payload[4]^payload[4]^payload[5]^payload[6]^payload[6]^payload[7]^payload[7]^payload[7]^payload[8]^payload[10]^payload[11]^payload[11]^payload[11]^payload[12]^payload[12]^payload[14]^payload[15]^payload[16]^payload[18]^payload[19]^payload[22]^payload[23]^payload[27];
rCRC[7] = rCRC[0]^rCRC[2]^rCRC[3]^rCRC[4]^rCRC[6]^rCRC[8]^rCRC[9]^rCRC[11]^rCRC[12]^rCRC[15] ^payload[0]^payload[0]^payload[0]^payload[1]^payload[1]^payload[2]^payload[3]^payload[4]^payload[4]^payload[4]^payload[5]^payload[5]^payload[6]^payload[7]^payload[7]^payload[8]^payload[8]^payload[8]^payload[9]^payload[11]^payload[12]^payload[12]^payload[12]^payload[13]^payload[13]^payload[15]^payload[16]^payload[17]^payload[19]^payload[20]^payload[23]^payload[24]^payload[28];
rCRC[8] = rCRC[1]^rCRC[3]^rCRC[4]^rCRC[5]^rCRC[7]^rCRC[9]^rCRC[10]^rCRC[12]^rCRC[13] ^payload[0]^payload[0]^payload[1]^payload[1]^payload[1]^payload[2]^payload[2]^payload[3]^payload[4]^payload[5]^payload[5]^payload[5]^payload[6]^payload[6]^payload[7]^payload[8]^payload[8]^payload[9]^payload[9]^payload[9]^payload[10]^payload[12]^payload[13]^payload[13]^payload[13]^payload[14]^payload[14]^payload[16]^payload[17]^payload[18]^payload[20]^payload[21]^payload[24]^payload[25]^payload[29];
rCRC[9] = rCRC[2]^rCRC[4]^rCRC[5]^rCRC[6]^rCRC[8]^rCRC[10]^rCRC[11]^rCRC[13]^rCRC[14] ^payload[0]^payload[0]^payload[1]^payload[1]^payload[2]^payload[2]^payload[2]^payload[3]^payload[3]^payload[4]^payload[5]^payload[6]^payload[6]^payload[6]^payload[7]^payload[7]^payload[8]^payload[9]^payload[9]^payload[10]^payload[10]^payload[10]^payload[11]^payload[13]^payload[14]^payload[14]^payload[14]^payload[15]^payload[15]^payload[17]^payload[18]^payload[19]^payload[21]^payload[22]^payload[25]^payload[26]^payload[30];
rCRC[10] = rCRC[0]^rCRC[3]^rCRC[5]^rCRC[6]^rCRC[7]^rCRC[9]^rCRC[11]^rCRC[12]^rCRC[14]^rCRC[15] ^payload[0]^payload[1]^payload[1]^payload[2]^payload[2]^payload[3]^payload[3]^payload[3]^payload[4]^payload[4]^payload[5]^payload[6]^payload[7]^payload[7]^payload[7]^payload[8]^payload[8]^payload[9]^payload[10]^payload[10]^payload[11]^payload[11]^payload[11]^payload[12]^payload[14]^payload[15]^payload[15]^payload[15]^payload[16]^payload[16]^payload[18]^payload[19]^payload[20]^payload[22]^payload[23]^payload[26]^payload[27]^payload[31];
rCRC[11] = rCRC[0]^rCRC[1]^rCRC[5]^rCRC[7]^rCRC[8]^rCRC[15] ^payload[0]^payload[1]^payload[3]^payload[3]^payload[4]^payload[4]^payload[5]^payload[7]^payload[8]^payload[11]^payload[11]^payload[12]^payload[12]^payload[15]^payload[16]^payload[19]^payload[23]^payload[27];
rCRC[12] = rCRC[0]^rCRC[1]^rCRC[2]^rCRC[6]^rCRC[8]^rCRC[9] ^payload[0]^payload[1]^payload[2]^payload[4]^payload[4]^payload[5]^payload[5]^payload[6]^payload[8]^payload[9]^payload[12]^payload[12]^payload[13]^payload[13]^payload[16]^payload[17]^payload[20]^payload[24]^payload[28];
rCRC[13] = rCRC[1]^rCRC[2]^rCRC[3]^rCRC[7]^rCRC[9]^rCRC[10] ^payload[1]^payload[2]^payload[3]^payload[5]^payload[5]^payload[6]^payload[6]^payload[7]^payload[9]^payload[10]^payload[13]^payload[13]^payload[14]^payload[14]^payload[17]^payload[18]^payload[21]^payload[25]^payload[29];
rCRC[14] = rCRC[2]^rCRC[3]^rCRC[4]^rCRC[8]^rCRC[10]^rCRC[11] ^payload[0]^payload[0]^payload[2]^payload[3]^payload[4]^payload[6]^payload[6]^payload[7]^payload[7]^payload[8]^payload[10]^payload[11]^payload[14]^payload[14]^payload[15]^payload[15]^payload[18]^payload[19]^payload[22]^payload[26]^payload[30];
rCRC[15] = rCRC[3]^rCRC[4]^rCRC[5]^rCRC[9]^rCRC[11]^rCRC[12] ^payload[0]^payload[0]^payload[1]^payload[1]^payload[3]^payload[4]^payload[5]^payload[7]^payload[7]^payload[8]^payload[8]^payload[9]^payload[11]^payload[12]^payload[15]^payload[15]^payload[16]^payload[16]^payload[19]^payload[20]^payload[23]^payload[27]^payload[31];
end
cal_crc = rCRC;
end
endfunction
这是在我的系统verilog设计。我驾驶4个字节的数据; 32'h000000B0
。预期的结果是62BD
但我得到了56F1
。
任何人都可以建议我解决这个问题吗?
到目前为止你做了什么? – e19293001
你需要先显示你的努力。那么只有人可以帮助你。 – ssgr
请阅读http://stackoverflow.com/help/how-to-ask这将帮助您重新解释您的问题,以便您可以得到可能的答案。 –