EMMC协议.ppt
《EMMC协议.ppt》由会员分享,可在线阅读,更多相关《EMMC协议.ppt(59页珍藏版)》请在冰豆网上搜索。
一eMMC的结构,设备状态与工作模式和总线模式的关系,eMMC主机的功能方框图,内部总线,RST_n控制逻辑,RST_n,CLK发送控制逻辑,CLK,CMD发送接收控制逻辑,CMD,DAT0状态检查控制逻辑,CRC7生成/校验控制逻辑,DAT1-7发送接收控制逻辑,CRC16生成/校验控制逻辑(16单元),DAT0,DAT1-7,二eMMC的内部寄存器,三命令和应答,命令:
1命令的类型有四种命令的类型:
1)无应答的广播命令(bc)2)有应答的广播命令(bcr)3)DAT上无数据传输的点对点命令(ac)4)DAT上有数据传输的点对点命令(adtc),2命令的格式所有的命令都是固定的长度48位,格式如下表所示,所有命令都是以0开始的,紧接着是传输的方向(主机发出的就为1,设备发出的就为0),接下来的6位是命令的索引,这是一组二进制码(063),设备就是对这六位译码,区分是哪种命令,还有一些命令需要arg值(比如地址),这一段的长度为32位,所有的命令都会被CRC7保护着,所以CRC保护的是之前的40位,最后以1结束。
命令的应答,应答也是由CMD传输的,由左边的位开始传输,应答位的长度根据应答的类型而定。
应答是以0开始的,紧接着是传输的方向(设备=0),接下来的值根据类型不一样也不一样,除了R3以外都会被CRC7保护着,每条命令都是以1结束的。
一共有五种类型的命令应答形式:
R1,R1b,R2,R3,R4,R5,R1:
该应答的长度为48位,45:
40显示的是命令的索引,39:
38是32位的设备状态。
R1b:
和R1的区别只是在DAT0上存在忙信号的传输。
R2:
(CID、CSD寄存器),该应答的长度为136位,CID的内容会作为CMD2和CMD10的应答发送给主机,CSD的内容会作为CMD9的应答发送给主机,仅仅只有CID和CSD的127:
1被传输,最后一位被应答的结束位所代替。
R3:
(OCR寄存器),该应答的长度为48位,OCR寄存器的值会作为CMD1的应答发送给主机。
R4:
(FastIO),该应答位的长度48位,ARG部分包括RCA的值、寄存器的值、寄存器的值,如果操作成功,状态位就会被置位。
R5:
(中断请求),该应答的长度为48位,如果应答是主机自己发送的,那么RCA的值为0x0000。
3命令和应答的时序:
无论是单倍数据率模式还是双倍数据率模式,主机的命令和设备的应答都是在时钟的上升沿采样的。
设备的识别及设备的操作条件的时序,设备的识别(CMD2)和设备的操作条件(CMD1)工作在open-drain模式下,设备给主机的应答是在NID个时钟周期后开始的。
如果在经过NID+1个时钟周期仍然没收到应答的话,主机就需要做超时报告(NID=5),给RCA赋值的时序,给RCA赋值(CMD3)也是工作在open-drain模式下,从主机发完命令道设备应答之间最小的延迟时间为NCR个时钟周期。
(NCR=2-64),数据传输模式下命令及应答的时序:
在设备接收到RCA后就会打开数据传输模式,该模式是工作在push-pull模式下的。
在发送完命令之后紧接着有两位的Z(高阻),这是给总线定义方向留的时间,之后是被应答器件设为P位,除了CMD1,2,3以外,所有的应答时序都与这个图有关。
(NCR=2-64),R1b的应答:
有些命令,比如说CMD6,在R1应答的时候需要BUSY信号,在命令传输完两个时钟周期后,BUSY信号开始,DAT0线被拉低,DATA1-7上的值无关。
(NST=2,HS200:
2-4),最后一条设备的应答-下一条是主机的命令:
主机在接收到设备最后一条应答之后,在经过至少NRC个时钟周期之后主机就可以开始下一条命令传输,这个时序图与所有的主机命令都有关。
(NRC=8),最后一条主机命令-下一条是主机命令,在主机发送完最后一条命令后,在经过至少NCC个时钟周期之后主机就可以发送最后一条命令。
(NCC=8),一种CMD命令发送控制模型,命令索引寄存器6-bit,命令Wire:
HIGH,LOW,32-bit,6-bit,命令参数寄存器32-bit,7-bit,HIGH,CRC7生成控制模块,启动和停止(计数)控制,时钟,发送控制,应答接收模块控制状态寄存器,应答(命令)参数寄存器32-bit,命令索引寄存器6-bit,应答控制状态寄存器(8-bit),发送使能,应答格式,应答格式:
0:
长度48-bit1:
长度136-bit延迟模式:
0:
NCR最小2时钟周期,最大64时钟周期1:
NID最小5时钟周期,最大5时钟周期,CRC状态,忙状态,接收使能,超时,接收完成,延迟模式,命令及应答的状态转换图,四EMMC的工作模式,eMMC有五种工作模式:
1)引导操作模式2)设备的识别模式3)中断模式4)数据传输模式5)非活动模式,引导操作模式:
在上电或软硬件复位后,在CMD1发送之前,如果保持CMD线为低不少于74个时钟周期,设备就识别出启动了引导操作模式,内部就会开始准备引导数据。
主机就会从EXT_CSD179字节的5:
3选择的引导区来读取引导数据,在将CMD线拉低1秒以后,设备就通过DAT线开始发送第一个引导数据给主机,主机必须保持CMD线为低直到读完所有的BOOT数据(push-pull模式)。
设备的识别模式;,设备的识别过程:
主机首先发送CMD1来获取设备的操作条件,对于不兼容的设备会进入非活动状态,之后主机发送广播命令CMD2来获取所有设备的CID号,所有没有定义的设备(处于ReadyState的设备)会同时发送他们的CID号,但是只会有一个设备成功的将CID号完全的发送给主机(设备可以监测发到总线上的设备号),其他设备会依然停留在ReadyState状态等待下一个识别周期。
而被选中的设备会进入设备的识别状态,之后主机会发送CMD3命令来给这些设备赋一个相对地址,以用于将来的数据传输,完成赋值后,设备就进入到Stand-by状态,同时会将输出驱动由open-drain变为push-pull。
主机会重复这样的过程,直到没有设备应答CMD2为止(等待应答的时间为NID=5个时钟周期)。
中断模式,主机通过CMD40使设备进入Wait-IRQ状态,设备就会等待内部的中断时间发生,一旦发生,设备就会给主机一个应答(open-drain),返回Stand-by状态,同时主机也会等待命令线上的起始位(0),一旦收到起始位,设备也会放弃中断模式,并进入Stand-by状态;主机也可以自己给自己发送一个CMD40应答,使设备回到Stand-by状态,发送的应答RCA=0x0000,Devicebit=0。
数据传输模式,单倍数据率的数据传输,双倍数据率的数据传输,读数据的时序:
读数据包括单倍数据率和双倍数据率模式。
单倍数据率模式下,数据被设备打出在时钟的上升沿被主机采样,每条数据线上有一个CRC。
双倍数据率模式下,数据既可以在上升沿采样也可以在下降沿采样,而且每条数据线上有两个CRC。
在这种模式下,数据块的长度应该为512B,也可以配置为4位或8位的总线宽度,奇数字节和偶数字节会分别在时钟的上升沿和下降沿被主机采样,每条有效地数据线上都会有两个CRC,分别对应256个奇数字节和256个偶数字节。
注意只有数据块和两个CRC可以在上升沿和下降沿采样,开始位和结束位只能在时钟的上升沿采样。
单个数据块的读时序:
主机通过CMD7来选中一个设备进行数据的读操作,然后通过CMD16来设置有效地数据块的长度(CMD16仅应用在单倍数据率模式下),读操作的基本的总线时序如上图所示,单个块的读操作是由CMD17开始的,arg部分包括读的开始地址,应答跟通常一样由CMD线发送。
从设备发出的数据比读命令的最后一位晚NAC个时钟周期,在最后一位数据位后面会跟上CRC校验码供主机检查传输错误。
(NCR=2-64,NAC=2-10*(TAAC*FOP+100*NSAC)HS200:
NAC=8),多数据块的读时序:
多数据块的读,停止命令下的时序,写数据的时序:
写数据包括单倍数据率模式和双倍数据率模式。
在单倍数据率模式下,数据被主机发出在时钟的上升沿被设备采样,每条数据线上有一个CRC码。
在双倍数据率模式下,主机发出的数据既可以在时钟的上升沿也可以在时钟的下降沿被采样,每条有效地数据线上有两个CRC。
这种模式下的数据块的长度为512B,可以选择4位或8位的总线配置,奇数字节被时钟的上升沿采样,偶数字节被时钟的下降沿采样,主机将会添加两个CRC码,一个给奇数字节,一个给偶数字节。
注意只有数据块和两个CRC可以在时钟的上升沿和下降沿采样,起始位和结束位以及CRC的状态位都只能在时钟的上升沿采样。
单个数据块的写:
主机通过CMD7来选中一个设备进行数据的写操作,然后通过CMD16来设置有效地数据块的长度(CMD16仅应用在单倍数据率模式下),基本的总线写操作的时序如上图所示,单个块的写操作是由CMD24开始的,arg部分包括读的开始地址,应答跟通常一样由CMD线发送。
从主机发出数据需要比收到设备的应答的晚NWR个时钟周期,在最后一位数据位后面会跟上CRC校验码供设备检查传输错误。
设备会通过DAT0返回CRC的状态来显示校验的结果,如果传输错误,CRC的状态值为“101”,如果传输正确,CRC的状态值为“010”,并开始编程状态。
NCRC定义在HS200中,只有HS200设备支持NCRC,是从数据块的结束位到CRC状态的起始位经历的时钟数,应该在2到8个时钟周期之间。
当设备编程时,就会将DAT0线拉低以显示正处于忙状态,设备一旦完成编程DAT0线就会停止被拉低。
(NWR=2,NCRC=2-8),多个数据块的写:
在不同的设备状态接收到停止命令的时序:
一种停止写数据的停止命令的发送时序:
总线测试过程的时序:
在进入Tran-state状态后,主机就可以开始总线测试了,在双数据率模式下,总线测试时无效的,主机发CMD19命令如果没有收到设备应答,主机就应当通过CMD13命令去读取设备的状态信息,主机会认为是设备不支持这个功能。
BOOT操作的时序:
DAT传输控制寄存器,数据传输控制寄存器(8-bit),数据传输命令使能,停止命令使能,引导操作直接使能,传输方向,引导状态接收使能,中断传输命令使能,数据块数寄存器7-bit,缓存起始块地址寄存器7-bit,数据传输状态寄存器(8-bit),CRC状态,忙状态,超时,传输完成,总线宽度1,总线宽度0,CLK时钟及复位控制寄存器,时钟控制寄存器(8-bit),时钟使能,时序模式0,复位使能,时序模式1,时序模式0时钟分频器(识别模式fOD),时序模式1时钟分频器(非高频模式fPP),时序模式2时钟分频器(高频模式fPP),时序模式3时钟分频器(HS200模式),数据传输部分整体结构图,数据传输控制状态图,Read状态:
该状态为一个数据块的读状态,数据块的长度为512B,多块的读则循环进入该状态,由Block_num计数,在Wait_read状态下只要有任何一根数据线上检测到起始位就会进入该状态。
该状态有三种总线宽度模式:
1BIT,4BIT,8BIT8BIT:
该状态的时间为:
512+16+1个时钟周期,以read_count计数,每个时钟计一次,小于512时RAM地址随read_count加1,等于528时跳出。
4BIT:
该状态的时间为:
512*2+16+1个时钟周期,以read_count计数小于512时每2个时钟计一次,并且RAM地址随read_count加1。
等于512后每个时钟计1次。
等于528时跳出。
1BIT:
该状态的时间为:
512*8+16+1个时钟周期,以read_count计数小于512时每8个时钟计一次,并且RAM地址随read_count加1。
等于512后每个时钟计1次。
等于528时跳出。
跳出该状态完成后,判断Block_num的值,为0则进入Idle状态,非0则进入Wait_re