eMMC协议分析

在进行电路设计之前,必须要明白具体实现的原理,因此本文首先要研究eMMC5.0的协议,这个协议是经过电子设备工程联合委员会JEDEC制定的全球统一标准,对eMMC的具体电路的功能实现和规范进行了统一的制定。本章会对这个协议中与设计相关的协议进行研究总结,而且对该课题用到相关重要部分进行深入研究,是之后硬件电路设计的基础。

eMMC设备和系统:

eMMC系统有三个模块,分别是主机、eMMC设备和eMMC控制器(eMMC HOST)。eMMC设备里面又包含了FLASH的存储单元和它的控制单元,主机即可通过eMMC HOST来访问设备。eMMC协议规定了接口的功能和设备控制器。协议对eMMC整个系统的规定是指它外面的控制器以及相关设备,接口在协议中完整阐述,但是对外部的eMMC控制器不做规范,具体内部的Flash的控制器是由各个厂家规定的,只需要满足符合eMMC协议的标准的MMC接口即可。系统的描述图在下图列出,描述图中不同颜色表示了eMMC协议中规定的部分。如图1是eMMC系统协议的系统图。

eMMC协议分析_第1张图片

                                                                                图1. eMMC协议的系统图

在eMMC协议中,eMMC总线和eMMC供电的协议是有明确协议的,因此对于符合eMMC协议的设备,本文只要根据eMMC总线和eMMC供电的协议来设计硬件电路和eMMC的控制器就行。

本文要设计的主控制器的系统的描述框图如下图2所示。

eMMC协议分析_第2张图片

图2. 系统描述框图

每个制造商在制作基于eMMC协议的芯片的过程中可能都不一样,但是有一点不变的是,所有设备的引脚和内部的结构都是符合eMMC协议规定的规范的。

协议规定的引脚有:

CLK:这是设备的输入时钟,由主机提供的信号,在时钟到来的时候才可以发送接收命令和数据。在SDR模式下,一个时钟周期可以传输1位的信号。在DDR模式下,可以在一个时钟周期传输2位的信号。CLK的频率在0到最大的频率之间。

CMD:它是双向传输的命令线,用于主机和设备的数据通信。它有开漏和推挽两种模式,分别用来应对初始化和应对快速的命令传输。它能够双向传输,当主机发送命令之后,设备会给主机应答,通过CMD线可以返回给主机。

Reset:单向的复位信号线,是用主机发送的。

DAT0~DAT7:eMMC的双向数据总线,用于主机和设备之间的数据通信。它工作在应对快速的命令传输的推挽模式。DAT线在某一时刻只能支持单向传输,只能被设备或eMMC HOST一方控制。默认下,当用户上电或者复位的时候,仅能用DAT0一根线传输数据。同时,用户可以自己配置想要使用的DAT线的数量,也可以选择4根或者8根。当用户选择4根时,eMMC设备会断DAT1-3的内部上拉,如果用户选择的是8根,那么同理会断开DAT1-7的上拉。

Data Strobe:这是数据的锁存线,它主要用于eMMC5.0提出的HS400模式下,设备要锁存输出信号。

eMMC5.0协议是向之前版本的协议兼容,在速度方面是兼容低速度模式。

eMMC5.0协议规定了5种总线数据模式,前三种速度模式可以兼容协议4.5版本之前的协议,后面两种可以支持HS200和HS400模式,但是本文系统设计的时候没有设计到,因此也不进行具体的介绍。

表1.种速度模式

模式名 数据速率模式 IO电压 总线位宽 时钟速率 最大数据传输速率
兼容MMC模式 SDR 3/1.8/1.2V 1、4、8bit 0~26MHz 26MHz
高速SDR模式 SDR 3/1.8/1.2V 1、4、8bit 0~52MHz 52MHz
高速DDR模式 DDR 3/1.8/1.2V 4、8bit 0~52MHz 104MHz
HS200模式 SDR 1.8/1.2V 4、8bit 0~200MHz 200MHz
HS400模式 DDR 1.8/1.2V 8bit 0~200MHz 400MHz

eMMC设备的内部寄存器

如下表2所示,总共有6种。它们可以得到设备的相关内容以及设置工作时的控制对象,在读写数据前的步骤操作相对应的寄存器实现。因此协议中明确定义所用寄存器的含义。

表2.协议规定的寄存器

名称 大小(Bytes) 描述 选用要求
CID 16 设备识别寄存器,包含识别设备的唯一号码 强制
RCA 2 相关设备地址,在初始化过程中由主机控制器动态分配的系统地址 强制
DSR 2 驱动等级寄存器,配置设备的输出驱动 可选
CSD 16 设备具体数据寄存器,包含了设备操作状态的具体信息 强制
OCR 4 操作状态寄存器,通过广播命令获取寄存器信息,包含设备的供电类型 强制
EXT_CSD 512 扩展设备具体数据寄存器,包含设备的容量和当前模式信息 强制

设备识别寄存器

这是128bits的寄存器,里面存放单个设备独一无二的信息,它符合eMMC协议,当设备处于识别状态的时候,信息能够被主机访问。具体信息见下表3列出了具体意义。

eMMC协议分析_第3张图片

                                                                         图3. 设备识别寄存器位

相对地址寄存器

这是16bits的寄存器,一旦设备被识别,设备会被主机指定相对的地址,它存在其中。当传输数据的时候,主机利用这些信息选择设备,规定这个寄存器默认的值为0X0001。如果地址变成0X0000,那么只有发送CMD7指令才可让设备处于Stand-by State
才可用。

驱动等级寄存器

这是16bits的寄存器,它规定设备的等级,设备能通过主机进行设置来增强设备的性能,例如总线的长度、传输的速率等参数。在设备具体数据寄存器中包括了这个寄存器使用方式的内容。这个寄存器的默认值是0x404。

 

 

 

 

 

 

 

 

你可能感兴趣的:(Linux驱动)