常用存储器(ROM/RAM/FLASH/SDRAM/SRAM/DDR/EEPROM/emmc)

单片机 ROM /RAM/FLASH区别

1.ROM,RAM和FLASH在单片机中的作用

ROM——存储固化程序的(存放指令代码和一些固定数值,程序运行后不可改动)
c文件及h文件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。

RAM——程序运行中数据的随机存取(掉电后数据消失)
整个程序中,所用到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。

FLASH——存储用户程序和需要永久保存的数据。

例如:现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。

2.ROM,RAM和FLASH在单片中的运作原理

1、程序经过编译、汇编、链接后,生成hex文件;
2、用专用的烧录软件,通过烧录器将hex文件烧录到ROM中
注:这个时候的ROM中,包含所有的程序内容:一行一行的程序代码、函数中用到的局部变量、头文件中所声明的全局变量,const声明的只读常量等,都被生成了二进制数据。

疑问:既然所有的数据在ROM中,那RAM中的数据从哪里来么时候CPU将数据加载到RAM中不会是在烧录的时候,已经将需要放在RAM中数据烧录到了RAM中br> 答:
(1)ROM是只读存储器,CPU只能从里面读数据,而不能往里面写数据,掉电后数据依然保存在存储器中;RAM是随机存储器,CPU既可以从里面读出数据,又可以往里面写入数据,掉电后数据不保存,这是条永恒的真理,始终记挂在心。

(2)RAM中的数据不是在烧录的时候写入的,因为烧录完毕后,拔掉电源,当再给MCU上电后,CPU能正常执行动作,RAM中照样有数据,这就说明:RAM中的数据不是在烧录的时候写入的,同时也说明,在CPU运行时,RAM中已经写入了数据。

3、ROM中包含所有的程序内容,在MCU上电时,CPU开始从第1行代码处执行指令。这里所做的工作是为整个程序的顺利运行做好准备,或者说是对RAM的初始化(注:ROM是只读不写的),工作任务有几项:

(1)为全局变量分配地址空间—如果全局变量已赋初值,则将初始值从ROM中拷贝到RAM中,如果没有赋初值,则这个全局变量所对应的地址下的初值为0或者是不确定的。当然,如果已经指定了变量的地址空间,则直接定位到对应的地址就行,那么这里分配地址及定位地址的任务由“连接器”完成。
(2)设置堆栈段的长度及地址—用C语言开发的单片机程序里面,普遍都没有涉及到堆栈段长度的设置,但这不意味着不用设置。堆栈段主要是用来在中断处理时起“保存现场”及“现场还原”的作用,其重要性不言而喻。而这么重要的内容,也包含在了编译器预设的内容里面,确实省事,可并不一定省心。
(3)分配数据段data,常量段const,代码段code的起始地址——代码段与常量段的地址可以不管,它们都是固定在ROM里面的,无论它们怎么排列,都不会对程序产生影响。但是数据段的地址就必须得关心。数据段的数据时要从ROM拷贝到RAM中去的,而在RAM中,既有数据段data,也有堆栈段stack,还有通用的工作寄存器组。通常,工作寄存器组的地址是固定的,这就要求在绝对定址数据段时,不能使数据段覆盖所有的工作寄存器组的地址。必须引起严重关注。

注:这里所说的“第一行代码处”,并不一定是你自己写的程序代码,绝大部分都是编译器代劳的,或者是编译器自带的demo程序文件。因为,你自己写的程序(C语言程序)里面,并不包含这些内容。高级一点的单片机,这些内容,都是在startup的文件里面。
4、普通的flashMCU是在上电时或复位时,PC指针里面的存放的是“0000”,表示CPU从ROM的0000地址开始执行指令,在该地址处放一条跳转指令,使程序跳转到_main函数中,然后根据不同的指令,一条一条的执行,当中断发生时(中断数量也很有限,2~5个中断),按照系统分配的中断向量表地址,在中断向量里面,放置一条跳转到中断服务程序的指令,如此,整个程序就跑起来了。决定CPU这样做,是这种ROM结构所造成的。过程中中C语言编译器作了很多的工作,可仔细阅读编译器自带的help文件进行学习。

存储器概述

电路设计离不开存储器器件,对于一个电路系统而言,一般包含以下几种存储器:EEPROM,FLASH,SDRAM(或DDR2,SDRAM,DDR3,SDRAM等),在高性能系统中,还包括ZBT SRAM(或DDR SRAM,QDR SRAM等)。
其中EEPROM一般用于存储单板信息(如单板名称,厂家名称,单板版本 ,单板序列 等);
Flash用于存储底层驱动代码,软件代码等;
SDRAM等用于大容量的缓存;
ZBT SRAM等用于高吞吐率小容量的存储;

每个SRAM存储单元由六个MOS管组成,功耗大,集成度低,但由于内部采用了双稳态触发器,也无需不断地对内部存储地内容进行刷新。

2)DRAM
DRAM地优点是集成度高,功耗小,价格低。
缺点是即便器件不掉电,存储内容也只能保持很短地时间,需不断地被刷新。
典型地DRAM结构图如下:

DDR SDRAM

DDR指双倍速率(Double Data Rate),DDR SDRAM与SDRAM的基本结构是相似的,最基本的区别在于DDR SDRAM支持在一个时钟周期内传输两次数据,这是通过接口结构的改进而实现的。

DDR SDRAM采用2倍预取架构,即芯片内部能以两倍于时钟运行的速率预取数据,从而使得芯片内核工作速率仅为外部数据传输率的一半。
SDRAM采用1倍预取架构,即芯片内核工作速率与外部数据传输速率相同。
内核工作速率越高,芯片工艺越复杂,基于这种工艺的限制,不可能快速地提高芯片内核工作速率。在相同地内核工作速率下,DDR SDRAM地外部数据传输速率为SDRAM的两倍,从而提高存储器的传输效率。
例如,在DDR SDRAM和SDRAM的外部数据传输速率为400Mbps的情况下,对于DDR SDRAM,其内核工作速率仅需要200MHZ,而对于SDRAM,其内核工作速率需要为400MHZ。
利用这项技术,DDR SDRAM可以在不提高内核工作速率的前提下(即无需对芯片做大的技术革新),大大提高外部数据传输速率,从而获取更高的性能。

DDR SDRAM与SDRAM硬件设计上的区别

  1. 时钟信 。SDRAM的时钟信 CLK为单端信 ,而DDR SDRAM则采用差分对时钟信 CK/CK#
  2. 信 电平。SDRAM采用LVTTL电平,接口信 为单端信 ,而DDR SDRAM采用SSTL-2电平,接口信 本质上属于差分对。
  3. 电源。两种存储器的电源引脚都分为Vdd和Vddq,一般这两种引脚均可采用同一电源供电,但SDRAM的电源为3.3V,而DDR SDRAM的电源为2.5V。
  4. 电源种类。SDRAM仅需3.3V电源,而DDR SDRAM需三种电源:给Vdd/Vddq供电的2.5V,给Vref供电的1.25V,以及给SSTL-2终结电路供电的Vtt电源1.25V。
  5. 时序测试。对地址信 、控制信 ,SDRAM和DDR SDRAM的时序测试方法相同,对数据信 ,SDRAM为单边沿采样,DDR SDRAM为双边沿采样,且时序参考信 DQS而不是时钟信 。
  6. 输出信 驱动能力。DDR SDRAM输出信 的驱动能力可被设置为强驱动或者弱驱动两种模式,SDRAM则不能设置。

DDR2

DDR2(Double Data Rate2, 两倍数据速率,版本2)SDRAM
与DDR SDRAM相比,虽然其仍保持了一个时钟周期完成两次数据传输的特性,但DDR2 SDRAM在数据传输率,延时,功耗等方面有了显著提高。

DDR2 SDRAM的技术更新
DDR SDRAM的数据预取能力是2,即芯片内部能以两倍于时钟的速度来预取数据,这使得芯片内核工作频率仅需要外部数据传输率的一半。对此,DDR2 SDRAM做了进一步的改进,其数据预取能力为4,使得芯片内核工作频率仅需要为外部数据传输率的1/4。而对于SDRAM,芯片内核工作频率等于外部数据传输速率。所以,同样内核工作频率下,DDR SDRAM的数据传输率比SDRAM高一倍,而DDR SDRAM的数据传输率又比DDR SDRAM高一倍。
例如,在DDR2 和DDR SDRAM的外部数据传输率都为400Mbps的情况下,对于DDR2 SDRAM而言,其内核工作频率仅为100MHZ,而对于DDR SDRAM,其内核工作频率为200MHZ。如果是SDRAM,其内核频率需达到400MHZ,才能提供400Mbps的外部数据传输率,正是因为如此高的内核频率无法在技术和工艺上得到实现,因此SDRAM的数据传输率无法达到400Mbps。
利用这项技术,DDR2 SDRAM可以在不提高内核工作频率的前提下(即无需对芯片做大的技术革新),大大提高外部数据传输速率。

SRAM

DRAM的性能在很大程度上受刷新操作的影响,而SRAM则不涉及刷新,因此在相同时钟频率的条件下,SRAM的性能远高于DRAM。
SRAM的缺点是集成度低,容量小,功耗大,价格高。
在应用的场合上,SRAM毫不逊色于DRAM。CPU的高速缓存(如 一级缓存;二级缓存)即为SRAM,相比CPU外部1GB,甚至2GB 的DRAM存储器,CPU内SRAM的容量则小得多,且CPU内部SRAM容量的大小,在很大程度上决定了CPU性能的高低。
SRAM分为同步SRAM与异步SRAM两大类,同步SRAM街道读写指令后,需参考外部时钟信 的边沿才能发起操作,而异步SRAM则无需外部时钟,只要接到读写指令立即开始工作。
在高速电路设计中,ZBT SRAM和QDRII SRAM是常用的SRAM,这两种SRAM都属于同步SRAM。

Flash

电路设计中,一般采用Flash存储大容量的底层驱动程序或软件程序。
目前常用的FLASH 芯片有NOR 和 NAND两种规格。
NOR FLASH和NAND FLASH 的区别列举如下:
(1)信 线区别:NOR FLASH有独立的地址、数据引脚,与SRAM类似;而NAND FLASH的地址、数据引脚是复用的。
(2)读取方式: NOR FLASH的应用特点是片上运行,即,由于其读取方便,程序可直接在FLASH中运行,而无需导入SDRAM等高速存储器件,适合于引导程序的存储。NAND FLASH的应用特点是高密度大容量,适合于大规模容量软件的存储,如上层应用软件的存储,但由于其地址、数据引脚复用在一起,操作时,需使用专门的驱动代码将读取指令转换为NAND FLASH可以识别的指令,读取操作复杂,运行时,需将软件程序导入SDRAM等器件后再执行。
(3)编程方式:NOR FLASH的擦除和写入速度较慢,达到秒级;而NAND FLASH的擦鞋和写入速度快,仅为毫秒级;NOR FLASH 和NAND FLASH均可对片内某个块(block)单独擦除,同时保留其他地址空间的存储内容,不过,NAND FLASH的擦除单元块相对更小。
(4)存储容量:基于同样的价格,NAND FLASH的容量更大。

FLASH 是易损器件,设计中注意事项:
(1)ESD。调试和生产时,若不采取防静电措施,FLASH器件极易遭到损坏,设计时,应尽量使FLASH远离单板边缘。
(2)机械损坏。由于FLASH器件较薄,且横截面积相对较大,容易遭到机械损坏,设计时应注意FLASH器件不能布放在单板易弯曲处。

EEPROM

EEPROM常用于单板信息的存储(如单板名称、厂家名称、单板版本 、单板序列 等),EEPROM在应用上的特点是:容量小(SDRAM的存储容量一般为几百兆至几吉比特位;FLASH的容量一般为几百兆位,而EEPROM的存储容量一般仅为几千比特位)、非易失、读取方便(使用IIC总线)。
ATMEL公司的AT24C系列EEPROM器件:
AT24C01 1Kbit
AT24C02 2Kbit
AT24C04 4Kbit
AT24C08 8Kbit
AT24C16 16Kbit

NorFlash、NandFlash、eMMC闪存的比较与区别

NorFlash

NOR Flash需要很长的时间进行抹写,但是它提供完整的寻址与数据总线,并允许随机存取存储器上的任何区域,这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码,例如电脑的BIOS或机上盒(Set-top Box)的固件。NOR Flash可以忍受一万到一百万次抹写循环,它同时也是早期的可移除式快闪存储媒体的基础。CompactFlash本来便是以NOR Flash为基础的,虽然它之后跳槽到成本较低的 NAND Flash。

NandFlash

NAND Flash式东芝在1989年的国际固态电路研讨会(ISSCC)上发表的, 要在NandFlash上面读写数据,要外部加主控和电路设计。
NAND Flash具有较快的抹写时间, 而且每个存储单元的面积也较小这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍然而NAND Flash 的I/O接口并没有随机存取外部地址总线,它必须以区块性的方式进行读取,NAND Flash典型的区块大小是数百至数千比特。
因为多数微处理器与微控制器要求字节等级的随机存取,所以NAND Flash不适合取代那些用以装载程序的ROM。从这样的角度看来,NAND Flash比较像光盘、硬盘这类的次级存储设备。NAND Flash非常适合用于储存卡之类的大量存储设备。第一款创建在NAND Flash基础上的可移除式存储媒体是SmartMedia,此后许多存储媒体也跟着采用NAND Flash,包括MultiMediaCard、Secure Digital、Memory Stick与xD卡。

EMMC

emmc存储器eMMC (Embedded Multi Media Card) 为MMC协会所订立的,eMMC 相当于 NandFlash+主控IC对外的接口协议与SD、TF卡一样,主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的NAND供应商来说,同样的重要。
eMMC由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备(Nand Flash)及主控制器,所有都在一个小型的BGA 封装。接口速度高达每秒52MBytes,eMMC具有快速、可升级的性能。同时其接口电压可以是 1.8v 或者是 3.3v。
现在很多智能电视已经逐步抛弃Nor或Nand,使用更为先进的eMMC芯片,然而普通编程器无法读写eMMC芯片,新开发的可支持eMMC芯片烧写的编程器性价比高,还能支持Nor、Nand芯片,支持全面、功能强大


整理自《高速电路设计实践》

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月22日
下一篇 2020年1月22日

相关推荐