IC验证-SDHOST项目2

从验证编写的代码可以看出,SDhost项目的代码量是SRAMC的10倍,所以自学起来会有一定难度。关于SDhost的Datasheet、验证计划、和SD协议等相关文件,可以私信我。SDhost项目是针对SD卡的,要了解这个项目就要熟悉两个协议,一是AHB协议,二是SD协议。这里关于SDhost项目的内容均是对各个协议的理解,以及面试中的重点,要比真实的协议与手册更加容易理解。

系统上电或者搜寻SD卡时,SD卡应处于识别模式(IDLE状态),SD卡的识别模式(进入重点,面试比较爱问):在这种模式下,控制器会检验SD卡的工作电压范围,识别SD卡类型,并要求它们发送各自的地址,这些操作在SD卡各自的CMD线上进行,所有的操作均使用默认的SD卡识别时钟频率。

首先是卡的工作条件检测:在控制器和SD卡进行任何通信之前,控制器不清楚SD卡支持的工作电压范围,故而控制器首先使用默认的电压发送一条reset指令(CMD0),紧跟着的CMD8指令,用于取得SD卡支持工作电压数据范围,SD卡通过检测CMD8的参数部分,来检查控制器使用的工作电压,控制器通过分析回传的CMD8参数部分来校验SD卡是否可以在所给电压下工作。如果SD卡可以在所给电压下工作,它会送回CMD8的命令响应字,如果SD卡不支持所给电压,则SD卡不会给出任何响应信息,并继续处于IDLE状态接下来是卡的初始化和识别过程:根据协议,在执行ACMD41之前,必须执行CMD8,这个ACMD41其实是两个命令的组合。即CMD55+ACMD41,二者必须一起发,该命令是配置卡的操作条件,收到ACMD41之后,SD卡开始进行初始化操作。然后发送CMD2,查询各个卡的CID值,也就是卡的ID信息,然后SD卡进入识别状态,然后控制器发送CMD3命令,要求各个SD卡发送一个新的相对地址RCA,RCA在之后的数据传输模式中用来寻址,RCA发送完成后,卡进入Stand-by状态,在这个状态,如果控制器想要给SD卡分配一个新的RCA,它可以发送另一条CMD3命令给SD卡,最后发布的RCA为SD卡真实的RCA。

接下来是数据传输模式:

在SD卡识别模式结束之前,控制器使用的时钟频率均为Fod,在数据传输模式,控制器可能会使用Fpp频率,控制器发送CMD9命令来获取SD卡的CSD寄存器里面的描述值,比如长度,卡容量等内容。随后发送CMD7命令,该命令用来选择某个SD卡,使其进入Transfer状态,在指定时间段内,只有一个卡能处于Transfer状态,当某个先前选中的处于Transfer状态的SD卡接收到CMD7之后,会释放与控制器的连接,进入stand-by状态。CMD7之后,还有命令ACMD6,它是两个命令的组合(CMD55+ACMD6),是用来配置使用的数据线位宽,判断数据位宽是4还是1。随后是命令CMD16,它是用来配置数据块大小的命令。

数据传输模式下,各个状态的转换关系总结下:

任何的数据读命令都可以被命令(CMD12)在任意时刻终止,数据传输会终止,SD卡返回Transfer状态。单块读命令CMD17,多快读命令CMD18。写命令同理,单块写命令CMD24,多块写命令CMD25

 

介绍一下SD卡中使用频率最高的六个寄存器。

OCR:保存卡的操作电压范围;CID:卡的身份信息;CSD:保存卡的配置信息;RCA:保存卡的地址信息;DSR:用于配置卡;SCR:保存卡的特定信息。

总结:上述命令以及寄存器中的每一位,都要认真掌握,实际在写testcase时,就是要对寄存器进行配置,命令也是通过寄存器去传送的,然后命令控制卡,再对比其行为是否正确。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值