輸出[15:0]CRC _ reg;
輸出[7:0]CRC;
輸入[7:0]d;
輸入calc _ valid
輸入clk
輸入復位;
reg[15:0]CRC _ reg;
reg[7:0]CRC;
wire[15:0]next _ CRC;
始終@(posedge時鐘或posedge復位)
開始
如果(復位)
開始
crc _ reg & lt= 16 ' h 0000;
crc & lt= 8 ' h00
結束
else if (calc_valid)
開始
crc _ reg & lt= next _ crc
crc & lt=~;
結束
其他
開始
crc _ reg & lt=;
crc & lt=~;
結束
結束
分配next_crc[0]=crc_reg[12]^d[7]^crc_reg[8]^d[3];
分配next_crc[1]=crc_reg[13]^d[6]^d[2]^crc_reg[9];
分配next_crc[2]=d[5]^crc_reg[14]^d[1]^crc_reg[10];
分配next_crc[3]=d[4]^crc_reg[15]^d[0]^crc_reg[11];
分配next_crc[4]=crc_reg[12]^d[3];
分配next_crc[5]=crc_reg[12]^crc_reg[13]^d[7]^crc_reg[8]^d[3]^d[3];
分配next_crc[6]=crc_reg[13]^d[6]^crc_reg[14]^d[1]^d[2]^crc_reg[9];
分配next_crc[7]=d[5]^crc_reg[14]^crc_reg[15]^d[0]^d[1]^crc_reg[10];
分配next_crc[8]=d[4]^crc_reg[15]^d[0]^crc_reg[10]^crc_reg[11];
分配next_crc[9]=crc_reg[12]^crc_reg[1]^d[3];
分配next_crc[10]=crc_reg[13]^d[2]^crc_reg[2];
分配next_crc[11]=crc_reg[3]^crc_reg[14]^d[1];
分配next_crc[12]=crc_reg[12]^crc_reg[4]^d[7]^crc_reg[15]^d[0]^crc_reg[8]^d[3];
分配next_crc[13]=crc_reg[13]^d[6]^crc_reg[5]^d[2]^crc_reg[9];
分配next_crc[14]=d[5]^crc_reg[14]^crc_reg[6]^d[1]^crc_reg[10];
分配next_crc[15]=d[4]^crc_reg[15]^d[0]^crc_reg[7]^crc_reg[11];
末端模塊