[verilog] 有关CRC校验的问题

[复制链接]
126|4
 楼主 | 2019-3-11 15:16 | 显示全部楼层 |阅读模式
近期在做一个数据采集传输模块,采集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);
}
 楼主 | 2019-3-11 15:21 | 显示全部楼层
我自己的想法还是基于网上verilog程序的思路。由于使用的是CRC_CCITT,将接收到的数据存入一个寄存器,按字节逆序,计算完毕之后再逆序。不知道这样对不对。
| 2019-3-11 22:57 | 显示全部楼层
我觉得思路还是边接收边计算   计算结果和最后的CRC位进行对比   
如果可以就是将接收完成的包进行计算对比   
计算方法就是上次的计算结果和下一个新的数据进行计算    这样持续下去
 楼主 | 2019-3-12 09:27 | 显示全部楼层
zhangmangui 发表于 2019-3-11 22:57
我觉得思路还是边接收边计算   计算结果和最后的CRC位进行对比   
如果可以就是将接收完成的包进行计算对比 ...

提供了新的思路,谢谢了。
| 2019-3-13 22:56 | 显示全部楼层
幽白 发表于 2019-3-12 09:27
提供了新的思路,谢谢了。

有好的方法了    同样求分享
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /2 下一条

快速回复 返回顶部 返回列表