有关基于verilog的CRC校验的问题

2019-07-15 20:38发布

近期在做一个数据采集传输模块,采集6000多个数据打包,使用CRC校验。网上查找的相关verilog程序均是对单一数据处理的程序,没有对一个完整数据包的处理。c倒是有之前使用过的程序,但语言转换不熟练,所以暂时卡住了。望大神指教。下面贴出c的程序。
u16 cal_crc16(u8 *ptr, u16 len)
{
  u16 crc;
  u16 i;
  crc=0;
  while(len--!=0) {
      for(i=0x80; i!=0; i/=2){
          if((crc&0x8000)!=0){
              crc *= 2;
              crc ^= CRC16_CCITT;
          }
          else{
              crc *= 2;
          }
          if((*ptr&i)!=0){
              crc ^= CRC16_CCITT;
          }
      }
      ptr++;
  }
  return(crc);
}
我自己的想法还是基于网上verilog程序的思路。由于使用的是CRC_CCITT,将接收到的数据存入一个寄存器,按字节逆序,计算完毕之后再逆序。不知道这样对不对。





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。