📄 crc16_d8.c
字号:
class crc16_d8_t { bit[15:0] crc; task new(); task calc_crc(bit[7:0] D); function bit[15:0] get_crc();}task crc16_d8_t::new() {
crc = 16'hffff;}task crc16_d8_t :: calc_crc(bit[7:0] D0){
bit[15:0] C; bit[7:0] D; integer i; for(i=0;i<8;i++){ D[i] = D0[7-i]; } C= crc; crc[0] = D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[2] ^ D[1] ^ D[0] ^ C[8] ^ C[9] ^ C[10] ^ C[11] ^ C[12] ^ C[13] ^ C[14] ^ C[15]; crc[1] = D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[2] ^ D[1] ^ C[9] ^ C[10] ^ C[11] ^ C[12] ^ C[13] ^ C[14] ^ C[15]; crc[2] = D[1] ^ D[0] ^ C[8] ^ C[9]; crc[3] = D[2] ^ D[1] ^ C[9] ^ C[10]; crc[4] = D[3] ^ D[2] ^ C[10] ^ C[11]; crc[5] = D[4] ^ D[3] ^ C[11] ^ C[12]; crc[6] = D[5] ^ D[4] ^ C[12] ^ C[13]; crc[7] = D[6] ^ D[5] ^ C[13] ^ C[14]; crc[8] = D[7] ^ D[6] ^ C[0] ^ C[14] ^ C[15]; crc[9] = D[7] ^ C[1] ^ C[15]; crc[10] = C[2]; crc[11] = C[3]; crc[12] = C[4]; crc[13] = C[5]; crc[14] = C[6]; crc[15] = D[7] ^ D[6] ^ D[5] ^ D[4] ^ D[3] ^ D[2] ^ D[1] ^ D[0] ^ C[7] ^ C[8] ^ C[9] ^ C[10] ^ C[11] ^ C[12] ^ C[13] ^ C[14] ^ C[15]; C = crc;}function bit[15:0] crc16_d8_t :: get_crc(){ integer i; bit[7:0] tmp_byte; for(i=0;i<8;i++){ get_crc[i] = ~crc[7-i]; } for(i=0;i<8;i++){ get_crc[8+i] = ~crc[15-i]; } tmp_byte = get_crc[7:0]; get_crc[7:0] = get_crc[15:8]; get_crc[15:8] = tmp_byte;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -