我有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這將幫助您重新解釋您的問題,以便您可以得到可能的答案。 –