EMMC5.1协议讲解(错误保护)

8 错误保护 

CRC旨在保护eMMC命令、响应和数据传输免受eMMC总线上的传输错误。为每个命令生成一个CRC,并检查CMD行上的每个响应。对于数据块,每个传输块生成一个CRC。

8.1 纠错代码(ECC)

为了检测设备上的数据缺陷,主机可以在有效载荷数据中包含纠错代码。对于无错误的设备,不需要使用此功能。通过关闭设备实现纠错,可以实现最佳的硬件共享。另一方面,系统中的代码种类必须受到限制,或者一个系统将需要一个可编程的ECC控制器,这超出了eMMC适配器的意图。

如果eMMC需要外部纠错(设备外部的外部手段),则必须在eMMC主机中实现ECC算法。CSD寄存器中的DEFAULT_ECC字段定义了为设备推荐的ECC算法。

选择缩短的BCH(542,512)代码是为了满足以最低成本具有高效率的要求。表195给出了简要概述此代码

8.2 循环冗余码(CRC)

CRC旨在保护eMMC命令、响应和数据传输免受eMMC总线上的传输错误。为每个命令生成一个CRC,并检查CMD行上的每个响应。对于数据块,每个传输块,每个数据行,生成一个CRC。CRC的生成和检查方法如下所述。

8.2.1 CRC7 

CRC7检查用于所有命令,除类型R3之外的所有响应,以及CSD和CID寄存器。CRC7为7位值,计算方法如下:

Generator polynomial G(x) = x 7 + x 3  + 1

M(x) = (first bit) × xn + (second bit) × x n-1 + …+ (last bit) × x 0

CRC [6:0] = Remainder[(M(x) × x7 )/ G(x)]

所有的CRC寄存器都被初始化为零。第一个位是对应位字符串(命令、响应、CID或CSD)的最左位。多项式的度n是CRC保护位数减少1。命令和响应需要保护的位数为40(n=39),CSD和CID为120(n=119)。

8.2.2 CRC16 

CRC16用于块传输模式下的有效载荷保护。CRC校验和为16位值,计算方法如下:

Generator polynomial G(x) = x16 + x12 + x5 + 1

M(x) = (first bit) × xn + (second bit) × xn-1 + …+ (last bit) × x 0

CRC [15:0] = Remainder[(M(x) × x16)/ G(x)]

CRC寄存器被初始化为零。第一位是对应块的第一个数据位。多项式的度n表示数据块的比特数减少了1(例如,n = 4095表示块长度为512字节)。生成器多项式Gx是一个标准的CCITT多项式。该代码的最小距离为d=4,用于高达2048字节的有效负载长度(n <= 16383)。

所有总线配置都使用相同的CRC16计算方法。在4位和8位总线配置中,对每条线分别计算CRC16。发送CRC是同步的,因此CRC代码在所有行中同时传输。

9 EMMC 机械标准

eMMC和e2MMC离散模块和eMMC多芯片模块在MCP或PoP部分的JESD21C中定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNtao99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值