行情
HOME
行情
正文内容
nand flash vccq电压 存储芯片 emmc,Nand flash,Nor flash之间有什么区别
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

存储芯片 emmc、Nand flash、Nor flash之间有什么区别

随着存储领域的发展,有很多不同的存储介质,今天ICMAX就带大家来分一分emmc、Nand flash、Nor flash之间的区别。

一、定义及区别

emmc:全称为embeded MultiMedia Card,是一种嵌入式非易失性存储器系统,由Nand flash和Nand flash控制器组成,以BGA方式封装在一款chip上。

Nand flash:一种存储数据介质;若要读取其中的数据,需要外接的主控电路。

Nor flash:也是一种存储介质;它的存储空间一般比较小,但它可以不用初始化,可以在其内部运行程序,一般在其存储一些初始化内存的固件代码。

这里主要重点讲的是emmc 和Nand flash 之间的区别,主要区别如下:

(1) 在组成结构上:emmc存储芯片简化了存储器的设计,将NAND Flash芯片和控制芯片以MCP技术封装在一起,省去零组件耗用电路板的面积,同时也让手机厂商或是计算机厂商在设计新产品时的便利性大大提高。而NAND Flash仅仅只是一块存储设备,若要进行数据传输的话,只能通过主机端的控制器来进行操作,两者的结构图如下:

(2) 在功能上:eMMC则在其内部集成了 Flash Controller,包括了协议、擦写均衡、坏块管理、ECC校验、电源管理、时钟管理、数据存取等功能。相比于直接将NAND Flash接入到Host 端,eMMC屏蔽了 NAND Flash 的物理特性,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 NAND Flash 进行特殊的处理。同时,eMMC通过使用Cache、Memory Array 等技术,在读写性能上也比 NAND Flash要好很多。而NAND Flash 是直接接入 Host 端的,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系统来做坏块管理、ECC等的功能。另一方面,emmc的读写速度也比NAND Flash的读写速度快,emmc的读写可高达每秒50MB到100MB以上;

二、emmc的初始化和数据通信

emmc与主机之间通信的结构图:

其中包括Card Interface(CMD,DATA,CLK)、Memory core interface、总线接口控制(Card Interface Controller)、电源控制、寄存器组。

图中寄存器组的功能见下表:

CID: 卡身份识别寄存器 128bit,只读, 厂家号,产品号,串号,生产日期。

RCA: 卡地址寄存器,可写的16bit寄存器,存有Device identification模式由host分配的通信地址,host会在代码里面记录这个地址,MMC则存入RCA寄存器,默认值为0x0001。保留0x0000以用来将all device设置为等待CMD7命令状态。

CSD: 卡专有数据寄存器部分可读写128bit,卡容量,最大传输速率,读写操作的最大电流、电压,读写擦出块的最大长度等。

SCR: 卡配置寄存器, 可写的 64bit 是否用Security特性(LINUX不支持),以及数据位宽(1bit或4bit)。

OCR: 卡操作电压寄存器 32位, 只读,每隔0.1V占1位, 第31位卡上电过程是否完成。

(5)Device Identification Mode和初始化

MMC通过发CMD的方式来实现卡的初始化和数据通信

Device Identification Mode包括3个阶段Idle State、Ready State、Identification State。

Idle State下,eMMC Device会进行内部初始化,Host需要持续发送CMD1命令,查询eMMC Device是否已经完成初始化,同时进行工作电压和寻址模式协商:eMMC Device 在接收到这些信息后,会将OCR的内容(MMC出厂就烧录在里面的卡的操作电压值)通过 Response 返回给 Host,其中包含了 eMMC Device 是否完成初始化的标志位、设备工作电压范围 Voltage Range 和存储访问模式 Memory Access Mode 信息。

如果 eMMC Devcie 和 Host 所支持的工作电压和寻址模式不匹配,那么 eMMC Device 会进入Inactive State。

Ready State,MMC完成初始化后,就会进入该阶段。

在该 State 下,Host 会发送 CMD2命令,获取eMMC Device 的CID。

CID,即 Device identification number,用于标识一个 eMMC Device。它包含了 eMMC Device 的制造商、OEM、设备名称、设备序列号、生产年份等信息,每一个 eMMC Device 的 CID 都是唯一的,不会与其他的 eMMC Device 完全相同。

eMMC Device 接收到CMD2后,会将 127 Bits 的CID的内容通过 Response返回给 Host。

Identification State,发送完 CID 后,eMMC Device就会进入该阶段。

Host 会发送参数包含 16 Bits RCA 的CMD3命令,为eMMC Device 分配 RCA。设定完 RCA 后,eMMC Devcie 就完成了 Devcie Identification,进入 Data Transfer Mode。

注:emmc初始化和数据通信的过程,有点类似USB协议,USB控制器去发送请求给USB设备,以IN包和OUT包的形式去建立与USB设备之间的通信,默认状态下,USB设备也是0地址的,与控制器分配设备地址。(感兴趣的可以看一下USB2.0的协议,主要是第8和9章内容)

三、eMMC工作电压和上电过程

根据工作电压的不同,MMC卡可以分为两类:

High Voltage MultiMediaCard,工作电压为3.3V左右。

Dual Voltage MultiMediaCard,工作电压有两种,1.70V~1.95V和2.7V~3.6V,CPU可以根据需要切换

我所使用的eMMC实测工作电压VCC为2.80V~2.96V,VCCQ为1.70V~1.82V。

其中VCC为MMC Controller/Flash Controller的供电电压,VCCQ为Memory和Controller之间I/O的供电。

上电初始化阶段MMC时钟频率为400KHz,需要等电压调整到它要求的VCC时(host去获取OCR中记录的电压值,上面有说),MMC时钟才会调整到更高的正常工作频率。

eMMC深入浅出 第五章 eMMC特性 第四节 掉电提示

Section 4 Power Off Notification

第四节 掉电提示

Today we are going to talk about the PoN (Power Off Notification).

今天我们来聊聊PoN(掉电提示)。

Before we start, I have 3 questions, why we need PoN? Who will get this notification? and from whom? Like the three old classic philosophic questions by ancient Greek philosopher Pluto, ‘who am I? where am I from? where will I go?’ Luckily, we are in the digit logical world this time, it is much easier for us to answer the ‘0’’1’ question. PoN is sent from Host to eMMC device, as Host need to know when it could shut off the power by inform eMMC device in advance so that eMMC device could end its work on hand (we call it BKOPS, the abbreviation for Background Operation) within defined time.

在开始之前我有三个问题,为什么需要PoN掉电提示?谁要接收这个提示?从谁那儿接收?就像古希腊哲学家柏拉图的三个古老的经典哲学问题,‘我是谁?我从哪里来?要到哪里去?’ 幸运的是我们这次是在数字逻辑世界,回到‘0’‘1’的问题简单得多。PoN是从主机到eMMC器件,因为主机需要知道什么时候可以断电,它通过断电之前提前通知eMMC器件以便eMMC器件在规定时间里结束自己的手头工作(我们称之为BKOPS,后台操作的缩写)。

Power here refers to VCC (Voltage Common Collector) and VCCQ (Voltage Common Collector for Data signals, Q here represent data signal, sometimes we use DQ to mean data line). In the eMMC Specification, VCC is power supply for eMMC device core, while VCCQ is power supply for eMMC interface I/O(input/output). Then what exactly is this core and I/O? Core usually means the memory media that is used, here it refer to NAND flash. I/O is the part of eMMC controller. So we could simply translate it into VCC is for NAND flash while VCCQ is for controller.

这里的电源指的是VCC(共集电极电压)和VCCQ(给数据线的共集电极电压,这里Q代表数据信号, 有时候我们用DQ表示数据线)。在eMMC规范里面,VCC是给eMMC器件核心供电用的,而VCCQ是给eMMC的接口I/O(输入/输出)供电用的。那么到底是什么是核心和I/O?核心通常意味着所用的存储介质,这里指的是NAND闪存。I/O是eMMC器件的主控的一部分。所以我们可以简单翻译成,VCC是给NAND用的而VCCQ是给主控用的。

How host send this notification to eMMC device is through CMD6(SWITCH) command to access eMMC Ext_CSD byte 34. There are total 5 allowed setting.

主机是通过CMD6(切换)指令访问Ext_CSD的字节34来把这个提示发送给eMMC器件的。一共有5种容许的参数。

The default one is 0x00 which means PoN is not supported by Host. Note that eMMC device should always support for this feature as this is defined by eMMC specification and eMMC will definitely benefit from it. However, host could vary widely. Then what if host does not support this? If that is the case, eMMC device could only finger cross to pray not get too much hurt (internal firmware crash) at the end (power loss) of this relationship, and try to recover (fix the mess when next power on initialization) from the pain (last power loss).

默认的0x00指的是主句不支持PoN。注意eMMC器件应该根据eMMC规范支持这个特性,因为这个绝对会对eMMC有好处。然后,主机是多种多样的。那么如果主机不支持这个会怎样呢?如果是那样,eMMC器件只能合十祈祷在这段感情中最终(掉电)不被伤害太深(内部的固件损坏),然后从痛苦(上次掉电)中恢复(在下次上电初始化的时候修复这一团糟的场面)。

So for the nowadays system design, although not forcedly required, host should implement this feature as setting 0x01 to the Ext_CSD byte 34 when system booting to let eMMC know.

所以在今天的系统设计中,虽然不被强制要求,主机应该要实现这个特性,通过在系统上电的时候Ext_CSD字节34里写0x01来让eMMC知道。

The next following two setting 0x02 and 0x03 are the Power off Notification to the eMMC device how long time that Host could wait before power off. Setting 0x02 is named as ‘SHORT’ and setting 0x03 ‘LONG’. ‘SHORT’ and ‘LONG’ parameter define the maximum time out tolerable by host, ‘SHORT’ time is defined in the Ext_CSD byte 248, while ‘LONG’ is in Ext_CSD Byte 247. Once host send one of above two to the eMMC device, host will wait for the maximum agreed time by both sides as set.

后面跟着的两个设置0x2和0x03是发给eMMC的掉电提示主机到底在断电之前能够等待多久。0x02设置的名字叫‘短’,0x03叫‘长’。‘长’和‘短’‘的参数定义了主机容忍的最大的超时时间,‘短’时间定义在Ext_CSD的字节248,而‘长’时间定义在Ext_CSD的字节247. 一旦主机发送了上述两个中的一个给eMMC器件,主机会根据设定等待双方达成一致的最大时间。

What eMMC device need to do is to finish its work on hand as soon as possible within this limited time, by pulling down the D0 (Data Line 0) signal to show its busy status. Once finish earlier than time out setting, it should inform host by pulling up the D0 signal to save host waiting time. On the contrary, if eMMC device expire this time, host will not wait and could shut down power (VCC and VCCQ together) at any time. This is the daily life mode between the master(host) and slave(eMMC), slave gets the master’s order to execute immediately but will get punished once not finishing in time.

eMMC器件所要做的是在有限时间里尽快完成自己的手头工作,通过把D0(数据线0)信号拉低表示忙状态。一旦在超时设置前完成,它需要通过拉高D0信号线来通知主机以节省主机的等待时间。反之,如果eMMC超过了这个时间,主机将不会等待而可以在任何时候切断电源(VCC和VCCQ一起)。这个就是主导方(主机)和从属方(eMMC)的日常生活模式。从属方得到主导方指令并立即执行,但是会因为没有及时完成而受到惩罚。

The last one 0x04 is a little different then brothers ‘SHORT’ and ‘LONG’. It is called sleep notification introduced in eMMC specification 5.0. Sleep means only power supply VCC for NAND flash could be cut off after this notification interaction is done, but power supply VCCQ for controller remains on so that eMMC device could be waked up and not go through the full initialization procedure next time. eMMC device receive this sleep notification and after that host will send CMD7 with parameter card deselection to release the device and then send CMD5 with parameter sleep to the eMMC device. Finally host wait eMMC device busy end indication on D0 to know it is in sleep mode and could shut down the VCCQ.

最后一个0x04和之前的 ‘短’‘长’两兄弟不太一样。它在eMMC规范5.0被引入,称为睡眠通知。睡眠指的是在这个通知之后可以仅仅是NAND闪存的供电电压VCC被关掉,而主控的供电电压VCCQ保持打开,这样eMMC可以在下次不需要走完整的初始化流程而仅仅是被唤醒就可以了。eMMC接受到这个睡眠提示,然后主机会用CMD7带卡选空参数来释放,然后发送给eMMC器件CMD5带睡眠参数。最后主机会等待eMMC器件在D0上提示忙结束知道它已经进入睡眠模式,然后关掉VCCQ。

The main benefit for the sleep is to save the power consumption, and also save the next wakeup time if no need duplicated initialization. By the way, wakeup is also with CMD5 and CMD7 combination with different parameter which is CMD5 with parameter wakeup and CMD7 with parameter card selection.

睡眠的主要好处是为了节省功耗,同时因为不需要再重复初始化也节省了下次唤醒的时间。

顺便提一下,唤醒同样用的是CMD5和CMD7的组合,只不过参数不同。CMD5带唤醒参数,而CMD7带卡选择参数。

相关问答

如何看待长江存储宣布128层闪存芯片研发成功,每颗1.33Tb?

2020年4月13日,长江存储科技宣布其128层QLC3DNAND闪存研已经发成功,并已通过多家控制器厂商SSD等终端存储产品使用验证(型号:X2-6070),并且同时发布了12...国...

 y400n-ifi  分量接口 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部