CRC效验码Verilog

 


前言

在学习写SD卡2.0协议的一个SD卡模型(Verilog)的时候,遇到了CRC效验码的有关问题,记录一下。


 

一、CRC效验码是什么?

CRC效验码是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。

基本思想是将传输的数据补位一定长度。将这个补位后的数除以另一个数(约定好的一个多项式 ,如x^7 + x^3 + 1,或者二进制表示10001001)。得到的余数作为校验数据附加到原数据后面。

计算方法为采用无进位的二进制加法(等价于XOR操作),最后对另一个数(约定好的一个多项式 ,如x^7 + x^3 + 1)取模。

二、在SD2.0中的CRC

1.CRC 适用于保护 SD 总线上的 SD 卡命令,响应和数据传输免于出错的。命令线上,每个命令 都会产生 CRC,而每个响应也都会检查 CRC。对于数据块来说,每一个传输的块都会产生 CRC。

CRC 的产生和检查描述如下:

CRC7 的检测是用于所有的命令,所有的响应(除了 R3),以及 CSD 和 CID 寄存器。CRC7 是一个 7bit 的数,计算方法如下: G(x) = x^7 + x^3 + 1。

M(x) = (第 1bit)*x^n + (第 2bit)*x^(n-1) + … + (n+1bit)*x^0

CRC[6:0] = [(M(x)*x^7)/G(x)]的余数

第 1bit 是相对应 bit 串(命令,响应,CID,CSD)最左边的 bit。 n 是 CRC 保护的 bit 数-1。命令和响应的保护数是 40(n=39),CSD 和 CID 是 120(n=119)。 

CRC7 的生成器和检查器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值