⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc16_d8.c

📁 USB2.0通信中的CRC16算法 循环校验算法
💻 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 + -