电路设计离不开存储器器件,对于一个电路系统而言,一般包含以下几种存储器:ROM、RAM、FLASH
存储器分类
ROM——存储固化程序的(存放指令代码和一些固定数值,程序运行后不可改动)
c文件及h文件中所有代码、全局变量、局部变量、’const’限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中,只可读。
RAM——程序运行中数据的随机存取(可读写,但掉电后数据消失)
整个程序中,所用到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。
FLASH——存储用户程序和需要永久保存的数据,可读写,掉电后数据不消失。
例如:现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,计算完后该次采集的数据就用完了,然后再采集下一次,因此这些值就没必要永久存储,就把它放在RAM里边。然而计算完的电度,是需要永久保存的,单片机会定时或者在停电的瞬间将电度数存入到FLASH里。
存储器运作原理
1、程序经过编译、汇编、链接后,生成固件;
2、用专用的烧录软件,通过烧录器将固件文件烧录到ROM中
注:这个时候的ROM中,包含所有的程序内容:一行一行的程序代码、函数中用到的局部变量、头文件中所声明的全局变量,const声明的只读常量等,都被生成了二进制数据。
疑问:既然所有的数据在ROM中,那RAM中的数据从哪里来?什么时候CPU将数据加载到RAM中?会不会是在烧录的时候,已经将需要放在RAM中数据烧录到了RAM中?
答:
(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、普通的flash MCU是在上电时或复位时,PC指针里面的存放的是“0000”,表示CPU从ROM的0000地址开始执行指令,在该地址处放一条跳转指令,使程序跳转到_main函数中,然后根据不同的指令,一条一条的执行,当中断发生时(中断数量也很有限,2~5个中断),按照系统分配的中断向量表地址,在中断向量里面,放置一条跳转到中断服务程序的指令,如此,整个程序就跑起来了。决定CPU这样做,是这种ROM结构所造成的。过程中中C语言编译器作了很多的工作,可仔细阅读编译器自带的help文件进行学习。
存储器详细说明
1.RAM
RAM(随机存储器,Random Access Memory)指存储内容可被快速地写入或者读出,掉电后存储内容丢失地存储器。
RAM可分为SRAM(静态随机存储器,Static RAM)和DRAM(动态随机存储器,Dynamic RAM)两种。
1)SRAM
SRAM的优点是只要器件不掉电,存储内容就不会丢失,无需刷新电路,工作速度快。缺点是集成度低,功耗大,价格高。
上图是一种典型的SRAM结构,每个存储单元由六个MOS管组成,中间四个MOS管构成双稳态触发器,两侧的两个MOS管(Q1,Q1’)的开关状态由同一个选择信号CE控制。
数据写入时,数据信号D及其取反后的信号D#分别出现在Q1和Q1’上,待选择信号CE将Q1和Q1’导通后,D和D#触发双稳态触发器,使之发生相应的翻转,并使翻转后的状态一直得到保留,直到下次数据写入事件的发生。
数据读出时,选择信号CE有效并使Q1和Q1’导通后,A和A’点的逻辑状态出现在数据信号D和D#上,从而实现数据的读取,该读取的过程并不改变存储单元内双稳态触发器的状态。
每个SRAM存储单元由六个MOS管组成,功耗大,集成度低,但由于内部采用了双稳态触发器,也无需不断地对内部存储地内容进行刷新。
2)DRAM
DRAM地优点是集成度高,功耗小,价格低。
缺点是即便器件不掉电,存储内容也只能保持很短地时间,需不断地被刷新。
典型地DRAM结构图如下:
每个存储单元由一个MOS管及其寄生电容构成。由于数据信号的状态由电容的电荷量决定,因此每隔一段时间需对电容做一次充放电的刷新操作。
2.ROM
ROM(只读存储器,Read only memory)指一旦写入,则无法擦除改写的存储器。此处,将ROM的定义做进一步的扩展,定义为非易失存储器,即器件掉电后,内部存储器内容仍保留,且支持电可擦除可改写的只读存储器。
电路设计中常用的ROM包括EEPROM(电可擦写可编程只读存储器)和FLASH(闪速存储器)
SDRAM介绍
SDRAM概述
SDRAM指同步动态随机存储器,同步指存储器的工作需要参考时钟。
SDRAM的信号输出电平为LVTTL,属单端信号。
对于同步动态存储器件,有三个与工作速率相关的重要指标:内核工作频率、时钟频率、数据传输速率。
就SDRAM而言,其内核工作频率、时钟频率和数据传输速率三者相同。
最高速率可达200MHZ,设计中常用的速率有100MHZ、133MHZ、167MHZ。
SDRAM存储空间被分为若干逻辑块(BANK),取地址时,首先需提供BANK地址以找到待操作的逻辑块,然后需提供行地址和列地址以在该BANK内定为存储单元。因此,在器件资料上,SDRAM存储容量的
定义方式是:地址数X位宽XBANK数。
例如: 512Mbit的SDRAM 规格为 32M X 4 X4
行地址信号线为A0 ~ A12共13根,可组成2^{13}个不同的行地址,列地址信号线为A0~ A9、A11、A12共12根,可组成2^{12}个不同的列地址,因此地址数为32M。数据信号线为D0~D3共四根,因此数据位宽为4位(想象每块BANK是立体的;行->高;列->长;位宽->宽),BANK信号线为B0 ~ B1共两根,因此BANK数为4(2^{2})。
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硬件设计上的区别
时钟信号。SDRAM的时钟信号CLK为单端信号,而DDR SDRAM则采用差分对时钟信号CK/CK#
信号电平。SDRAM采用LVTTL电平,接口信号为单端信号,而DDR SDRAM采用SSTL-2电平,接口信号本质上属于差分对。
电源。两种存储器的电源引脚都分为Vdd和Vddq,一般这两种引脚均可采用同一电源供电,但SDRAM的电源为3.3V,而DDR SDRAM的电源为2.5V。
电源种类。SDRAM仅需3.3V电源,而DDR SDRAM需三种电源:给Vdd/Vddq供电的2.5V,给Vref供电的1.25V,以及给SSTL-2终结电路供电的Vtt电源1.25V。
时序测试。对地址信号、控制信号,SDRAM和DDR SDRAM的时序测试方法相同,对数据信号,SDRAM为单边沿采样,DDR SDRAM为双边沿采样,且时序参考信号DQS而不是时钟信号。
输出信号驱动能力。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芯片,支持全面、功能强大
原文链接:https://blog.csdn.net/sinat_15677011/article/details/104455606
网友评论