
①command

②response

③数据传输
两种传输方法,一线和四线
一线数据排布


四线数据排布




| 名字 | 位宽 | 描述 |
|---|---|---|
| CID | 128 | 相当于SD卡的身份证 |
| RAC | 16 | SD卡的相对地址 ,让host知道SD卡的位置 |
| DSR | 16 | (不重要) |
| CSD | 128 | SD卡的操作条件信息有关 |
| SCR | 64 | 配置寄存器 |
| OCR | 32 | 操作寄存器 |
| SSR | 512 | 状态寄存器,卡的属性特性 |
| CSR | 32 | 状态寄存器,卡的状态 |





CRC 适用于保护 SD 总线上的 SD 卡命令,响应和数据传输免于出错的。命令线上,每个命令
都会产生 CRC,而每个响应也都会检查 CRC。对于数据块来说,每一个传输的块都会产生 CRC。
CRC 的产生和检查描述如下:
CRC7
CRC7 的检测是用于所有的命令,所有的响应(除了 R3),以及 CSD 和 CID 寄存器
生成电路:

CRC16
使用数据线的时候,CRC16 用于有效保护块传输模式
CRC16 应该单独的用在每个数据线上,即使是宽总线模式,也要每跟数据线单独校验
生成电路









所有的响应都是通过 CMD 线发送的;响应总是从 bit 串最左边的 bit 开始发送,对应响
应码;响应的长度取决于响应的类型
R1:正常响应命令,和command格式几乎一样

R2:CID、CSD 寄存器,长度为 136bit;CID 寄存器的内容作为 CMD2 和 CMD10 的响应发;CSD 寄存器的内容作为 CMD9 的响应发送;只传输 CID 和 CSD 寄存器的[127:1]位,这些寄存器的第[0]位被响应的结束位替代了

R3:长度 48bit,OCR 寄存器的值作为 ACMD41 的响应发送

R6:发布的 RCA 寄存器响应,长度 48bit。[45:40]是响应的命令号,这里就是‘000011’,即CMD3;参数中的 16位MSB 用于产生 RCA 号

R7:长度 48bit;卡支持的电压信息通过 CMD8 的响应发送;Bit[19:16]表明卡支持的电压范围;卡接受提供的电压范围就返回 R7 响应;卡会在响应的参数中返回电压范围和检查模式













AHB_SD_HOST总的来说就是产生符合SD协议的命令和数据的操作,整体架构如下

AHB总线具体的不多阐述了,已经写在ahb2sram的文章里面了,下面是具体的接口























下面是主要的RTL设计
具体RTL设计代码: