在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2207|回复: 4

[求助] crc校验

[复制链接]
发表于 2017-11-15 21:41:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
有没有大神给我普及一下crc初始值是什么作用,还有为什么有的校验结果要进行异或,例如14443中typeB的算法,网上都找不到这些解释
发表于 2017-11-16 01:28:29 | 显示全部楼层
一般而言协议SPEC里都会给生成多项式,根据这个多项式可以直接得到LFSR的拓扑(1bit串行),
但实际上,模块的数据总线宽度都是8b/16b/32b/64b,再说1bit小水管页也不适合吞吐量大的系统,
所以对CRC电路要并行化,这个可以手推,也可以用工具直接生成这个变换逻辑。

CRC开始运算的初始值诸如0xFFFF,0x0000可以根据SPEC的规定来;它们和特定的生成多项式与数据流配合,可以保证最终得到的CRC校验满足规范要求的格式(如transpose bytes)

参考xapp209,xapp562
 楼主| 发表于 2017-11-16 09:12:11 | 显示全部楼层
回复 2# weila9


   谢谢您的解答,我发送端是做成了你说的并行方法每次处理8个bit,但是接收端是数据流的话,怎么判断接收到的是对的 1:如果发送端对生成的crc不与0xffff做异或处理的话可以直接,那么接收端接收到数据+crc之后会输出0,那么这种情况下的crc可以判断
2:第二种情况就是发送端crc生成的时候要求crc与0Xffff做异或处理才能当做最终的crc,那么接收端接收到的数据+crc按这种直接输入的方式就得不到一个定值来判断crc是否正确).
 楼主| 发表于 2017-11-16 09:51:30 | 显示全部楼层
回复 2# weila9


   谢谢你,我已经弄好了,就是在14443中不管crc怎么弄,接收端收回来连同crc一起接收不管是A卡和b卡都是一个定值,typeA是0000,typeB是of47
发表于 2017-11-16 11:28:20 | 显示全部楼层
本帖最后由 weila9 于 2017-11-16 11:33 编辑

不用谢。
发送的时候将CRC放在数据帧的指定位置如尾部,接收帧对收到的数据流通过CRC模块迭代计算,最后得到的crc_out寄存器值就是协议指定的值,一般是0x0000,或0xFFFF之类,当然也可以是其它(协议声明的)值;这个结合生成多项式和初始加载值等,一般就能得到指定结果。
可以仿真下看结果,可以弄一组激励,然后将RTL的结果和参考模型的结果比较。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 06:07 , Processed in 0.023830 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表