版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于基于ARM的的 嵌入式嵌入式系统原理及应用系统原理及应用 刘彦文刘彦文 编著编著 2017年年2月月 第5章 主存储器及主存储器及Nand Flash存储器组成存储器组成 高等院校信息技术规划教材高等院校信息技术规划教材本课件的配套教材本课件的配套教材基于基于ARM的的嵌入式嵌入式系统原理及应用系统原理及应用 刘彦文刘彦文 清华大学出版社 2017/2 第5章 主存储器及主存储器及 Nand Flash存储器组成存储器组成5.1 S3C2440A/S3C2410A 存储器控制器5.1.1 S3C2440A与存储器相关的特性n S3C2440A存储器控制器提供了访问存储器的控制信号,另外S
2、3C2440A还提供了与存储器相关的地址总线、数据总线等总线控制器信号。nS3C2440A与存储器相关的特性如下: 存储器采用字节编址的方法,即存储器中每个单元为一字节(8位二进制数),每个单元有一个单独的物理地址; 通过软件选择,系统支持大/小端数据存储格式; . 全部可寻址空间为1GB,分为8个banks(体),每个bank为128MB; 使用nGCS0nGCS7作为对应各bank选择信号; 系统支持存储器与I/O端口统一寻址,SFR Area(特殊功能寄存器区)为I/O端口寻址空间; bank0bank7中每个bank的数据总线宽度单独可编程,bank0通过编程可以设置为16/32位数据
3、总线,bank1bank7通过编程可以设置成8/16/32位数据总线; 每个bank的存储器访问周期可编程; 支持各bank产生等待信号(nWAIT),用来扩展总线周期; bank0bank5可以使用ROM(含EEPROM、Nor Flash等)和SRAM,bank6和bank7可以使用ROM/SRAM/SDRAM; bank0bank6开始地址固定; bank7开始地址和bank大小可编程; 对SDRAM,在POWER_OFF模式,支持自己刷新(self-refresh)模式; 支持使用Nor/Nand Flash、EEPROM等作为引导ROM。 S3C2440A/S3C2410A Rese
4、t后存储空间图。 n参见图5.1,图中表示bank6和bank7实际安装的存储器容量可以各为2MB、4MB、128MB。因此bank6的终了地址不同,bank7的起始地址也不同,但是要求bank6和bank7实际安装的容量相同,详见表5-1。n另外,图5.1中最上方OM1:0的含义,表示在Reset期间,由于连接到S3C2440A/S3C2410A的操作模式输入引脚OM1:0逻辑电平的不同,分别表示使用Nand Flash作为引导ROM与否,以及在不使用Nand Flash作为引导ROM时,bank0数据总线的宽度或测试模式,详见表5-2(P146)。n对应于图5.1左半部,在不使用Nand
5、Flash作为引导ROM时,需要使用bank0(nGCS0)中安装的芯片作为引导ROM。由于在第一次访问引导ROM前必须先确定bank0数据总线的宽度,所以bank0的数据总线宽度要求由Reset时的OM1:0引脚输入逻辑电平确定,而bank1bank7各个bank的数据总线宽度,可以通过对特殊功能寄存器编程确定。 5.1.2 与存储器芯片连接的S3C2440A 引脚信号及使用 与存储器芯片连接的S3C2440A引脚信号n对于存储器,S3C2440A一般可以与ROM(如Nor Flash)、SRAM和SDRAM芯片连接。S3C2440A与存储器相关的引脚信号一般可以分为两组,一组是S3C244
6、0A总线控制器引脚信号,另一组是S3C2440A存储器控制器引脚信号,分别见表5-3和5-4(P147)。n表中地址总线为ADDR26:0,而图5.1中地址总线为ADDR29:0,其中ADDR29:27经译码产生nGCS7:0或nSCS1:0信号。 地址总线与存储器芯片地址引脚的连接n对ROM/SRAM/SDRAM,地址总线中的ADDR29:27经译码器产生nGCS7:0或nSCS1:0信号,某一时刻只有一个信号有效。而地址总线中的ADDR26:0应该与各bank的存储器芯片对应引脚连接,但ADDR1和ADDR0在某个bank实际使用的数据总线宽度不同的情况下,可能不连接到存储器芯片;并且地址
7、总线中的ADDR26:0与存储器芯片地址引脚的连接也可能不是一一对应关系,详见表5-5。在本章,地址总线中的ADDR26:0有时也简单写作A26:0。n表5-5中(P148),当某bank数据总线宽度为8位时,地址总线中的ADDR0与芯片地址引脚A0连接,ADDR1与A1连接,依此类推,一一对应连接。表中当某bank数据总线宽度为16位时,地址总线中的ADDR0不与存储器芯片连接,而用ADDR1与芯片地址引脚A0连接。表中当某bank数据总线宽度为32位时,地址总线中的ADDR1:0不与存储器芯片连接,而用ADDR2与芯片地址引脚A0连接。 存储器数据总线宽度的确定nS3C2440A支持8/1
8、6/32位数据总线宽度。同一个bank的数据总线宽度必须相同,不同bank的数据总线宽度可以不同,并且有以下特征: bank0在不使用Nand Flash时,数据总线宽度可以选择16位或32位,由OM1:0输入引脚在Reset时的逻辑电平决定; bank1bank7中的每个bank的数据总线宽度可以分别设置,可选择8位、16位或32位中的一种,设置方法在特殊功能寄存器中讲述。 bank0与ROM芯片的连接n在不使用Nand Flash作为引导ROM时,参考图5.1左半部分,使用bank0作为引导ROM区,可以连接Nor Flash或EEPROM等。由于Nor Flash片内带有SRAM接口,因
9、此可以直接与存储器控制器连接。另外,Nor Flash芯片价格比EEPROM低,所以通常使用Nor Flash芯片较多。n加电之前,bank0数据总线宽度必须通过OM1:0提前设置好,只能设置为16位或32位。另外,信号nGCS0作为bank0的选择信号。 bank0使用16位数据总线与ROM芯片的连接 图5.2表示bank0与2片ROM、数据总线为16位时的连接。 ROM指Nor Flash或EEPROM。 bank0使用32位数据总线与ROM芯片的连接 图5.3表示bank0与4片ROM、数据总线为32位时的连接。 (见P149) bank1bank7与SRAM芯片的连接芯片的连接n图5.
10、4(a)给出了使用1片SRAM、16位数据总线,连接到bank1的一个例子。(见P150)n图5.4(b)给出了使用2片SRAM、32位数据总线,连接到bank1的一个例子。nbank6和bank7常常与SDRAM连接。n图中nBE3、nBE2、nBE1和nBE0分别连接到芯片的nUB和nLB引脚,表示选择高字节(nUB)或低字节(nLB)。这是由于在32位数据总线时,一次总线访问周期可以控制只传送1字节、半字(2字节)或字(4字节)数据的原因。 bank6或bank7与SDRAM芯片的连接n在SDRAM芯片内部,通常分为2个体或4个体,也用Bank表示,但与存储器的bank不同。SDRAM芯
11、片内部的体,一般称为片内Bank。另外SDRAM地址还分行地址和列地址,行地址的长度(位数)可以与列地址的长度(位数)相等(对称地址)或不等(非对称地址)。S3C2440A特殊功能寄存器中允许设置列地址长度,详见5.1.4节中BANKCON6和BANKCON7寄存器含义。 SDRAM片内Bank选择引脚与地址总线的连接n表5-6给出了当S3C2440A存储器bank实际大小不同、数据总线宽度不同、芯片容量不同、芯片内部构成和使用的芯片数量不同时,片内Bank选择引脚BA与高位地址总线连接的例子。n表5-6中第一行的含义为:当S3C2440A的bank6使用SDRAM,bank实际大小为8MB时
12、,并且该bank总线宽度为16位,使用的芯片容量为64Mb,芯片内部为1M16位4Banks,只用一片,那么地址总线ADDR22:21与芯片的片内Bank选择引脚BA1、BA0连接。具体连接见图5.5。 bank6使用16位数据总线与SDRAM芯片的连接n图5.5中存储器bank实际大小为8MB,使用1片,片内为1M16位4Banks芯片。8MB需要23条地址总线,即ADDR22:0,其中ADDR22:21与芯片BA1、BA0连接;由于数据总线为16位,所以地址总线ADDR0不与芯片连接;地址总线ADDR12:1分2次分别传送行地址信号和列地址信号。n为简单起见,图中用A22:0代替ADDR2
13、2:0。 bank6使用32位数据总线与SDRAM芯片的连接n图5.6中存储器bank实际大小为16MB,由2片组成,每片为1M16位4Banks。由于数据总线为32位,所以地址总线ADDR1:0不与芯片连接。n图5.5中DQM1、DQM0用于表示对数据总线D15-D8、D7-D0屏蔽与否;n图5.6中DQM3、DQM2、DQM1、DQM0用于表示对数据总线D31-D24、D23-D16、D15-D8、D7-D0屏蔽与否。在存储器访问周期读写1字节、半字(2字节)或字(4字节)数据时,这些信号的状态不同。5.1.3 S3C2440A存储器总线周期定时关系举例存储器总线周期定时关系举例nS3C2
14、440A存储器控制器有13个特殊功能寄存器,它们中的一些寄存器,通过设置不同的值,可以允许/禁止nWAIT;也可以改变ROM/SRAM/SDRAM的总线读写周期的时间长度等。n另外,虽然特殊功能寄存器不能控制nXBREQ/nXBACK的定时关系,但是也在这一节一并给予介绍。 nXBREQ/nXBACK与其他信号之间的定时关系与其他信号之间的定时关系nnXBREQ称为总线保持请求信号,低电平表示S3C2440A芯片外部其他的总线主设备请求控制局部总线,响应信号为nXBACK。nnXBACK称为总线保持响应信号,低电平表示S3C2440A允许其他的总线主设备控制和占用局部总线,这时S3C2440A
15、不对数据总线、地址总线和存储器控制器输出信号(SCKE、nGCS、nOE、nWE和nWBE)进行控制。S3C2440A与这些总线和信号之间处于高阻状态,与SCLK也处于高阻状态。 见P153图5.7。 nWAIT引脚信号对总线读写周期的影响引脚信号对总线读写周期的影响n在5.1.4节中,通过对 BWSCON寄存器中的WS7、WS6、 WS1设置不同的值,表示允许bank7、bank6、 bank1使用WAIT(等待)功能与否。n如图5.8所示,存取周期Tacc=4,在第3个存取周期结束处,S3C2440A采样nWAIT引脚信号,如果为低电平,则扩展相应信号。 见P154。 ROM/SRAM总线
16、读、写周期定时举例总线读、写周期定时举例 可以对存储器特殊功能寄存器设置不同的值,改变总线读、写周期的定时关系。(1) ROM/SRAM单个读周期n单个读周期指S3C2440A发出一次读存储器数据操作后,间隔一段时间再访问存储器。n在特殊功能寄存器中设定了具体数值以后,S3C2440A发出的单个读周期信号定时关系如图5.9所示。 (见P154) (2) ROM/SRAM单个写周期n在特殊功能寄存器中设定了具体数值以后,S3C2440A发出的单个写周期信号定时关系如图5.10所示。(p155)(3) 页模式的读周期和写周期n在5.1.4节中,会讲到在特殊功能寄存器BANKCON5BANKCON0
17、中,允许对ROM/SRAM使用页模式存取。当这些寄存器中的PMC=00时,表示单个读或写周期;而PMC=01/10/11时,表示1页大小分别为4/8/16个数据。 ROM/SRAM总线读、写周期定时参数含义n在图5.9和图5.10中,某些定时参数的时间长度值不能在存储器控制器特殊功能寄存器中设置,它们的含义见表5-7。n而图5.9和图5.10中另外一些定时参数的时间长度值可以在存储器控制器特殊功能寄存器中设置,设置方法见5.1.4节,它们的含义见表5-8。 SDRAM总线读、写周期总线读、写周期 SDRAM总线读、写周期在5.2.2节中与SDRAM芯片一起介绍。5.1.4 S3C2440A存储
18、器控制器特殊功能寄存器存储器控制器特殊功能寄存器nS3C2440A支持的bank7bank0中,各个bank的访问(access,指读或写)时间的长短,均可以在特殊功能寄存器中设置。n除了bank0,bank7bank1数据总线的宽度,可以在特殊功能寄存器中分别设定。bank0数据总线宽度设定,见表5-2。另外,特殊功能寄存器中还可以设定一些其他参数。 存储器控制器存储器控制器13个特殊功能寄存器个特殊功能寄存器n13个特殊功能寄存器的名称、地址与Reset值见P157表5-9。 数据总线宽度与等待状态控制寄存器数据总线宽度与等待状态控制寄存器n数据总线宽度与等待状态控制寄存器BWSCON,可
19、以对bank7bank0设置或读取如下信息: 使用UB/LB(高字节/低字节)与否; 支持WAIT(等待)状态与否; 分别设置bank7bank1的数据总线宽度(8/16/32位),不包括bank0; 读入bank0数据总线宽度值。(见P157表5-10) BANKCON0BANKCON5控制寄存器控制寄存器nBANKCON0BANKCON5描述了使用nGCS0nGCS5信号的bank0bank5,在读或写方式时各信号之间时间长度值的设置方法。nBANKCON0BANKCON5控制寄存器具体含义见P159表5-11。 BANKCON6和BANKCON7控制寄存器控制寄存器nBANKCON6和B
20、ANKCON7描述了使用信号nGCS6和nGCS7(或nSCS0和nSCS1)的bank6和bank7,在读或写方式时各信号之间时间长度值的设置方法。nBANKCON6和BANKCON7控制寄存器具体含义见P159表5-12。 SDRAM刷新控制寄存器刷新控制寄存器nSDRAM刷新控制寄存器REFRESH,通过设置不同的值,实现对SDRAM刷新控制并确定预充电时间,具体含义见P160表5-13。 BANKSIZE寄存器寄存器nBANKSIZE寄存器主要用来设置bank6/7存储器实装容量(大小)等参数,具体含义见P161表5-14。 SDRAM模式寄存器设置寄存器(MRSR)n如果bank6和
21、bank7使用SDRAM芯片,SDRAM芯片要求在加电之后的初始化阶段,由存储器控制器发出“装入模式寄存器设置”命令。换句话说,S3C2440A在Reset后,首先要通过编程方式,设置存储器控制器特殊功能寄存器中的SDRAM模式寄存器设置寄存器(MRSR)的初值,之后存储器控制器通过命令将这个初值送到SDRAM芯片的模式寄存器。n当代码正在从SDRAM中取出运行时,不要对模式寄存器设置寄存器进行配置,一般情况应当在代码从ROM中取出时,对其进行配置。模式寄存器设置寄存器具体含义见P161表5-15。5.2 S3C2440A/S3C2410A 存储器组成举例存储器组成举例5.2.1 使用Nor
22、Flash芯片作为引导ROM 对应图5.1的左半部,引导ROM即bank0,可以使用Nor Flash存储器芯片 闪存基础知识闪存基础知识 闪存概述n闪速存储器(flash memory)属于半导体存储器,简称闪存。闪存芯片在断电后仍能保持芯片内信息不丢失,而在恢复正常供电时,可以读出原来保存的信息,这些特性与EPROM芯片相同。n与EPROM芯片不同的是,擦除EPROM芯片内容时,需要将芯片从电路板上拔下来,放入专用的紫外线擦除器照射;而闪存芯片在电路板加电状态下,设备(即芯片)收到处理器的擦除命令序列,系统自身(In_System)控制擦除操作。 n对闪存芯片的编程(写入芯片指定单元、页面
23、程序或数据)操作,与对EPROM芯片的编程操作也不相同。EPROM芯片要从电路板上拔下来,插入另外的专用设备进行编程;而闪存芯片在电路板加电状态下,设备(即芯片)收到处理器的编程命令序列和相应的程序或数据,系统自身控制编程操作。n一片闪存芯片,也称为一个设备。闪存芯片内部结构通常可分为扇区,也称为块;扇区大小为4KB64KB不等;擦除操作是针对设备或扇区的。扇区下面通常还以字节或字划分存储单元,也有将若干字节作为一个页面的结构。n目前常用的闪存主要有两种类型,一种是Nor Flash(称为或非型闪存、Nor闪存),另一种是Nand Flash(称为与非型闪存、Nand闪存)。nNor Flas
24、h扇区下通常以字节划分存储单元,编程以字节为单位,可以随机编程。换句话说,不要求编程地址是顺序的。编程字节单元所在扇区应该是擦除过并且该字节还没有进行过编程,才能编程;不能对已经编程过的单元不经擦除,再次编程。读出操作以字节为单位,是可以随机读的。nNand Flash块下通常分为页,页下再分为字节,编程以页为单位,不能以字节为单位编程。编程以前,编程页所在的块应该是擦除过的,或者说已经编程过的页不经擦除不能再次编程,再次编程之前必须先进行擦除。Nand Flash以页为单位读出。n对闪存设备、扇区(块)进行擦除(erase)操作,指的是将设备、扇区(块)中各存储单元的内容清除,并且使其处于一
25、种可编程(写入)状态。一个存储单元如果要再次编程,再次编程前必须先进行擦除操作。n编程(program)操作,即向闪存写入程序或数据,也称为烧写芯片或扇区。n对闪存进行读操作,指的是读出Nor Flash指定字节地址对应单元的内容,或读出Nand Flash指定页地址对应一页单元的内容。 Nor Flash闪存芯片内部操作nNor Flash芯片内通常会有一个命令寄存器,一个内部状态机(internal state machine),以及内嵌的擦除、编程算法。n设备(芯片)接收从微处理器送来的命令序列,保存到命令寄存器,命令寄存器的内容作为输入送到内部状态机,由内部状态机控制擦除和编程电路。n
26、从设备读出数据较为简单,与EPROM设备类似,Nor Flash设备会从指定地址读出数据送到数据总线。n一个设备或一个扇区被擦除后,其中每个单元的每一位都被写入1。编程可以使某一位由1变0;一旦某一位变为0,这一位不能通过编程使其变为1。因此只有经过擦除,才能再编程。 采用Nor Flash技术的芯片特点 芯片的地址线与数据线引脚是分开的,Nor Flash芯片片内带有SRAM接口。 芯片支持以字节为单位随机读写。 芯片内的代码不需要复制到SRAM、SDRAM中再读出执行,而是可以直接从Nor Flash芯片中一条一条地读出执行。 Am29LV160芯片介绍芯片介绍nAm29LV160芯片是A
27、MD公司生产的一种Nor Flash芯片,芯片引脚逻辑符号如图5.11所示,芯片引脚信号含义见表5-16。(见P163,164)n表5-17给出了Am29LV160芯片常用操作对应的引脚信号。 Am29LV160芯片内部功能模块芯片内部功能模块nAm29LV160芯片内部功能模块见P165图5.12。 Am29LV160芯片常用命令芯片常用命令n通过写指定地址和数据命令或命令序列到芯片命令寄存器,使得芯片内部能够开始指定的操作。表5-18列出了定义的部分常用的合法的命令序列。写一个不正确的地址和数据,或以不正确的序列写它们,会导致进入复位(reset)。 读出数据命令 编程命令 整片擦除命令
28、Am29LV160与S3C2440A连接举例连接举例 n 连接举例见P167图5.13。n图5.13中,S3C2440A产生的选择引导ROM(即bank0)的信号nGCS0,连接到2片芯片的nCE。图中nBYTE通过电阻连接到VCC(3.3V),因此芯片工作方式为1M16位。图中芯片的RY/nBY引脚没有与系统连接,可以通过软件的方法,读DQ7、DQ6和DQ5的状态,判断编程或擦除操作是否完成。n图5.13中,2片Nor Flash分别连接数据总线的高16位和低16位,也就是说bank0使用32位数据总线,因此S3C2440A输入引脚OM1:0应该为10b,见表5-2。另外,数据总线32位时,
29、地址总线的最低2位不使用。 5.2.2 使用SDRAM芯片举例芯片举例 SDRAM基础知识基础知识 nSDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)是在标准DRAM(动态随机存储器)中加入同步控制逻辑,利用一个单一的系统时钟同步所有的地址、数据和控制信号,使得SDRAM能够与系统工作在相同的频率上。nSDRAM芯片由于存储密度大,读、写速度快,支持突发式读、写操作以及相对低廉的价格,在嵌入式系统中得到了广泛的应用。nSDRAM内部操作可以对应多个命令,不同的命令是由芯片控制引脚不同的电平决定的。常用的命令有:模式寄存器设置、空
30、操作、Bank激活、读等等,详见表5-20。对SDRAM的访问是由一系列的命令完成的。nSDRAM内部可以分为多个Banks(体),每个Bank就是一块存储区(或称为一块存储阵列),常见的SDRAM有2个或4个Banks。选择芯片内部某一指定的存储单元,使用的地址可以分为Bank、行、列地址三部分。 SDRAM初始化、常用命令和操作介绍初始化、常用命令和操作介绍 SDRAM初始化n初始化过程如下:加电之后,需要延时200微秒,使得系统能够得到稳定的工作电压和时钟频率,这时SDRAM处于器件未选中或空操作状态。之后存储器控制器发出一个对片内所有Banks预充电的命令,接着存储器控制器发出连续8个
31、自动刷新命令,SDRAM进行8个刷新周期的自动刷新。自动刷新完成后,存储器控制器发出装入模式寄存器设置(Mode Register Set,MRS)命令,至此结束初始化过程。只有经过初始化过程,SDRAM芯片才可以正常进行突发读、写等操作。 模式寄存器设置(MRS)n参阅5.1.4节中的表5-15,在S3C2440A中有2个SDRAM模式寄存器设置寄存器,分别对应bank6和bank7。这2个寄存器中保存的参数,包括写突发长度、测试模式、CAS潜伏时间(列选通到数据有效时间)、突发类型和突发长度,都要在初始化时通过装入模式寄存器设置命令,送到SDRAM芯片。命令具体格式和含义在随后表5-20、
32、表5-21和表5-22中介绍。 预充电(precharge)n预充电命令分为对指定Bank预充电和对所有Banks预充电两种。对指定Bank预充电,需要指定Bank地址;对所有Banks预充电则不需要指定Bank地址。n一旦某个Bank被预充电,则SDRAM进入空闲状态,直到该Bank收到读/写命令或Bank/行激活命令为止。例如,指定Bank的某行数据读取之后,该行作为工作行,与放大器处于连通状态。n如果存储器控制器下一次要访问同一Bank的不同行,必须先发出预充电命令,关闭当前工作行。nSDRAM芯片收到预充电命令,执行关闭当前工作行操作需要一定的时间,称为Trp(Row Precharg
33、e Command period,行预充电命令周期),单位为系统时钟周期。之后,存储器控制器才可以发出打开新的行(包括Bank)的命令。 自动预充电(auto precharge)n对SDRAM进行读,分为读命令和带自动预充电的读命令。n对SDRAM进行写,分为写命令和带自动预充电的写命令。n带自动预充电的读命令,执行一次突发读操作,数据传送结束后,该行自动被预充电,而不需要存储器控制器发出预充电命令。n读命令执行一次突发读操作,数据传送结束后,该行继续保持打开状态,如果下一次要访问不同的行,存储器控制器应先发出预充电命令,否则该行将继续保持打开状态。 Bank/行激活和列地址送出及读(写)n
34、从SDRAM中读出数据(或写入数据)之前,存储器控制器一般应先发出预充电命令,然后发出Bank/行激活命令,同时送出Bank地址和行地址。经过一段时间Trcd(RAS to CAS delay,行地址到列地址时间,单位为系统时钟周期)之后,存储器控制器才可以发出读(写)命令,同时发出列地址,读出(写入)数据。被激活的行将一直保持激活状态,直到遇到预充电命令。 突发传输n突发(burst)传输,也称猝发传输,这里指的是执行一次读或写命令,读或写SDRAM同一Bank中同一行相邻的多个单元的数据的一种传输方式。连续传输数据的个数就是突发长度(Burst Length,BL)。在SDRAM中,从传输
35、的第一个数据开始,每个系统时钟周期传输一个数据。突发传输过程中从地址总线送出的列地址保持不变。 自动刷新与自己刷新n自动刷新(auto refresh)命令由存储器控制器发出,刷新地址由SDRAM自己产生,刷新地址会自动增加。n自己刷新(self refresh)命令分为进入自己刷新和从自己刷新退出,命令由存储器控制器发出。进入自己刷新以后,刷新过程由SDRAM自己进行,功耗较低。 HY57V561620芯片介绍芯片介绍 HY57V561620芯片是Hynix 公司生产的一种SDRAM芯片,容量为4M16b4Banks,即32MB。 HY57V561620芯片主要特点: 单一的3.30.3V电
36、源; 所有引脚与LVTTL接口兼容; 所有输入与输出以系统时钟上升沿为基准; 使用UDQM、LDQM实现数据屏蔽功能; 片内有4个Banks; 支持自动刷新和自己刷新; 每64ms有8192个刷新周期; 可编程的突发长度和突发类型: 对顺序突发传输,传输长度为1,2,4,8或 全页; 对交替(interleave)突发传输,传输长度为 1 ,2,4,8。 行地址到列地址时间Trcd可编程:2个或3个系统时钟周期; 读或写突发周期能被命令停止,或能被中断。 HY57V561620芯片引脚n芯片引脚逻辑符号见P170图5.14。nHY57V561620芯片引脚信号含义见表5-19。 HY57V56
37、1620芯片内部功能模块nHY57V561620内部功能模块见P171图5.15。n图5.15有4个Banks,每个Bank为4M16b。使用系统地址总线中的高2位连接BA1、BA0,用来选择Bank3Bank0。图中A12A0分时传送行地址RA12RA0,列地址CA8CA0,允许行、列地址长度不对称,列地址的长度要在存储器控制器特殊功能寄存器中设定。n图中UDQM和LDQM决定访问数据是16位、高8位或低8位。n图中CKE、nCS、nRAS、nCAS和nWE在时钟上升沿的状态,决定具体操作(命令)的动作,地址线A12A0和Bank选择线在某些操作动作中,作为操作的辅助参数输入,具体见表5-2
38、0。 HY57V561620芯片命令真值表nHY57V561620命令真值表,见P171表5-20。n表中每一行命令,都是在系统时钟上升沿,由各控制信号(CKEn-1、CKEn、nCS、nRAS、nCAS、nWE)的状态决定的。SDRAM芯片采集这些状态并执行对应命令规定的操作,这些状态是由存储器控制器引脚信号产生的。n表5-20中命令举例说明如下: 模式寄存器设置命令n表中第一行为模式寄存器设置命令,由控制信号决定了在模式寄存器设置命令的同时,地址线上传送的是操作码(OP code),它们的格式见表5-21和表5-22。地址线上传送的操作码将被送往SDRAM的模式寄存器。n表5-21中A9对
39、应的值通常为0,A8和A7对应的值通常为00,其余位含义见表5-22。n模式寄存器设置以后,随后进行的突发读或写,突发长度被确定了,所有的访问操作都以这个突发长度进行操作,不需要在突发读或写命令中指定。 由存储器控制器控制完成一次突发写操作(突发长度=1)n由存储器控制器控制完成一次突发写操作,当突发长度=1时,存储器控制器发出三个命令。先发出预充电命令,关闭先前工作的行;之后发出Bank/行激活命令,将BA1、BA0指定的Bank和A12A0指定的行激活;最后发出写命令(同时发出列地址、用A10/AP指定是否自动预充电),同时将数据总线上的数据写入SDRAM。具体定时关系参见图5.18。 由
40、存储器控制器控制完成一次突发读操作(突发长度=8)n存储器控制器发出的仍然是三个命令,与突发长度=1的操作完全相同,只不过在初始化过程时模式寄存器中已经指定了突发长度为8,而不是指定突发长度为1。具体定时关系参见图5.19。 HY57V561620 SDRAM芯片 与S3C2440A连接举例 nS3C2440A为SDRAM预留了bank6和bank7的位置,bank6的起址为0 x30000000。在本例中,bank6的选体信号nGCS6/nSCS0作为2片SDRAM的片选信号,没有使用bank7的选体信号。n在系统的引导ROM中要编写初始化存储器控制器特殊功能寄存器的代码。另外系统启动后存储
41、器控制器要对SDRAM初始化。nP174图5.16给出了HY57V561620芯片与S3C2440A的连接实例。 S3C2440A SDRAM定时举例定时举例 n在图5.17中,首先出现的是Bank预充电命令。n之后是Bank和Row(行)激活命令,地址总线上出现的是行地址RA。n然后是写命令(对应nWE=0),A10/AP=0表示非自动预充电,与写命令同时出现在地址总线上的Ca是列地址、出现在数据总线上的是要写入指定单元的数据Da,Da被写入SDRAM芯片。n之后是读命令,连续从SDRAM芯片读出4个数据送数据总线。n图5.17中,BA表示Bank地址;nRA表示行地址;nCa、Cb、Cc、
42、Cd、Ce表示连续的列地址;nDa表示写入SDRAM芯片的数据;nDb、Dc、Dd和De表示从SDRAM芯片读出数据;nDATA(CL=2)表示从列地址选通到(读出)数据有效时间为2个HCLK周期,BL=1表示突发长度为1,图中上方T1、 T13,分别表示第1个时钟脉冲上升沿、第13个时钟脉冲上升沿。n参见表5-20和图5.17,T2上升沿锁存的命令为Bank预充电命令,因为nSCS=0,nSRAS=0,nWE=0。这时A10/AP=0则预充电选择的Bank,A10/AP=1则预充电所有的Banks。对于预充电选择的Bank,由BA信号指示所选择的Bank。n经过预充电时间Trp,T4上升沿锁
43、存的命令为Bank和Row(行)激活命令,这时Bank地址BA和行地址RA有效,A10/AP传送的是行地址中的一位。n经过从Bank/Row激活到写命令的时间Trcd,对应T6存储器控制器送出了列地址Ca、Bank选择BA、写入的数据Da以及写信号nWE。这时A10/AP=0,表示非自动预充电,在写操作完成后不进行自动预充电。如果A10/AP=1,则表示写操作完成后要自动预充电。另外,由于送出的列地址比较短,列地址不会使用A10,所以使用A10/AP作为自动预充电指示。 n在T6上升沿,数据总线上的数据Da写入SDRAM的BA、RA和Ca所确定的单元。n在T7上升沿,BA保持原值,行地址不变,
44、列地址锁定为Cb,nWE=1,为读SDRAM命令,从T7到T9,经过2个时钟周期(CL=2),DATA(CL=2)数据总线上出现了从SDRAM读出的数据Db,随后每个时钟脉冲读出一个数据,分别是Dc、Dd和De。DATA(CL=3)表示从T7到T10经过3个时钟周期才读出数据。n如果SDRAM数据线为16位,要读写高、低8位或16位,那么由图中DQM信号进行控制。 S3C2440A SDRAM单个写定时和单个突发读定时举例 n在随后的图5.18和图5.19中,某些定时参数的时间长度是常数值,参数对应的符号、参数名称及时间长度见P175表5-23;另外一些定时参数的时间长度,可以通过设置存储器控
45、制器特殊功能寄存器的值而改变,或者由于SDRAM工作速度不同而不同,详见P176表5-24。n对某些定时参数设定了具体数值后,S3C2440A对SDRAM的单个写定时图见P176图5.18。n从图5.18可以看出,写SDRAM数据是由三条命令组成的:预充电命令、Bank/行激活命令和写命令(同时传送列地址)。nP177图5.19是突发长度为8的单个读定时图。5.3 S3C2410A存储器控制器与存储器控制器与 以太网控制器连接举例以太网控制器连接举例nS3C2440A、S3C2410A采用了存储器地址与I/O端口地址统一编址方式。也就是说,存储器控制器不仅可以连接存储器芯片,也可以连接输入/输
46、出设备接口、输入/输出控制器等。nP178图5.20给出了S3C2410A存储器控制器与RTL8019AS以太网控制器连接的一个例子,图中省略了以太网控制器与电阻、电容、电源、晶振、地的连接。图中使用了bank5的选择信号nGCS5作为以太网控制器的片选信号。由于数据总线使用16位,所以地址总线最低位A0没有与RTL8019AS的地址线连接。5.4 S3C2410A存储器控制器存储器控制器 初始化设置举例初始化设置举例nU-Boot是比较常用的一款装载引导程序(bootloader),一种可用的方案是将U-Boot存储在Nand Flash中。系统启动时,S3C2410A硬件自动读入Nand
47、Flash前4KB内容(bootloader头部),送到bank0的4KB静态存储器SRAM中,这其中有一段程序是对存储器控制器进行初始化设置的,也就是将事先定义好的13个字数据,写入13个特殊功能寄存器中。只有对存储器控制器进行过初始化设置以后,SDRAM才能使用。 【例5.1】 U-Boot对SMDK2410评估板存储器控制器进行初始化设置的代码及注释见P178。n说明:本段代码可以在学习过第7章特殊功能寄存器地址定义方法后再阅读。5.5 S3C44B0X存储器组成举例存储器组成举例5.5.1 存储器控制器概述5.5.2 存储器控制器选择大/小端数据格式 及数据总线宽度5.5.3 存储器控
48、制器特殊功能寄存器5.5.4 存储器组成举例5.5.5 存储器控制器初始化设置举例存储器控制器初始化设置举例5.6 K9F1208U0M Nand Flash芯片应用基础芯片应用基础5.6.1 两种引导模式两种引导模式n参见本章图5.1,由S3C2440A/S3C2410A组成的系统有两种引导模式。一种对应图5.1左半部,bank0可以使用前面讲过的Nor Flash芯片,Reset后从地址0开始执行引导程序。另一种对应图5.1右半部,使用Nand Flash芯片,Reset后,系统自动读出Nand Flash芯片前4KB内容,送到位于bank0的内部4KB SRAM中,执行SRAM中的引导程
49、序。nNand Flash芯片前4KB保存的是引导程序头部,后面的存储空间可以作为一般的固态盘使用,通常保存引导程序的后续部分、嵌入式操作系统如Linux、应用程序等。另外bank0中4KB SRAM在引导程序执行后,还可以作为通常SRAM使用。5.6.2 Nand Flash概述概述n与Nor Flash一样,Nand Flash中保存的信息,在供电电源切断(关闭)后,能够长期保存,通常能保存10年。这一特点也称为不挥发、非易失性。 n采用Nand Flash技术的芯片有以下特点: 芯片地址线与数据线引脚是共用的,区分它们还需要一些额外的控制引脚信号。芯片接口与ROM、SRAM不兼容。 芯片
50、通常有一个8位或16位的I/O端口,对Nand Flash芯片发送的编程、读、擦除等命令,以及指定的芯片内部地址,传输的数据,都是通过I/O端口串行地传送。 芯片不支持以字节为单位随机读、编程。芯片读、编程操作以页为单位,页大小一般为(512+16)字节。 擦除以块为单位进行。擦除后每字节单元内容为FFh。 对1页再次编程前,必须先擦除该页所在的块。 芯片中的代码,需要在别的程序支持下,以页为单位串行地将内容复制到SRAM或SDRAM中,然后才能一条一条取出执行,不适合直接作引导芯片。 Nand Flash芯片可靠性比Nor Flash低,因此在Nand Flash芯片中,每一页都有若干字节的
51、备用区。但是Nand Flash芯片的前4KB区域,生产厂商还是可以保证其可靠性的。 5.6.3 K9F1208U0M Nand Flash芯片特点及结构芯片特点及结构 K9F1208U0M主要特点主要特点 芯片使用单一电源,通常为3.3V,可用范围为2.73.6V。 芯片提供的8位I/O端口,可分别传输命令/地址/数据。 芯片总容量为64MB+2048KB,分为4096块,128K页;块大小为16KB+512B,一块由32页组成;页大小为512B+16B。 芯片也被分为4个平面(plane),每个平面有一个512B+16B的页寄存器(page register)。 芯片内部有命令寄存器,根据
52、接收到的命令,能够自动进行编程和擦除等操作,编程以页为单位,擦除以块为单位。 对于页读出操作,随机访问1页最长等待时间为12s;页中顺序读出1字节最短时间为50ns;通过8位I/O端口,一次最多可以顺序读出512B+16B。 典型的块(16KB+512B)擦除时间为2ms,典型的页(512B+16B)编程时间为200s。 支持后拷贝(copy-back)操作;支持同时发生的4页编程/4块擦除操作。 编程/擦除10万次,常温下数据可保存10年。 芯片引脚信号含义芯片引脚信号含义nK9F1208U0M芯片引脚排列见P187图5.24,引脚信号含义见表5-29。 功能框图功能框图nK9F1208U0
53、M功能框图见P188图5.25。n图5.25中K9F1208U0M由512Mb+16Mb存储单元阵列组成,用字节表示为64MB+2048KB。2048KB为备用空间也称为备用区,用于存放错误校正码(Error Correcting Code,ECC)校验信息或其他信息。n通过I/O0I/O7端口传送到设备的命令,保存在命令寄存器。通过I/O0I/O7端口传送到设备的地址,分别保存在Y方向缓冲器锁存器(A0A7)和X方向缓冲器锁存器(A9A25)。Y方向缓冲器锁存器保存的地址A8,不是经由I/O0I/O7在传送地址时传送过来的,而是由命令00h将A8置为0,或者由命令01h将A8置为1。n设备的
54、页大小为512B+16B,其中16B为备用区。1页也称为1行。n由Y方向缓冲器锁存器保存的地址A0A8,称为列地址,9位地址可对1页中的0511地址寻址,指定编程/读出操作的起始地址。n1页中16B的备用区,对应的地址为512527,寻址时首先由命令50h将地址指针置于这一空间,然后用地址A0A3指定备用空间16B的起始地址,设备不关心地址A4A7。 n设备内共有128K页(131072页),使用X方向缓冲器锁存器中的17位地址(A9A25)寻址。X方向寻址也称为行寻址或页寻址。编程/读出操作使用A9A25地址一次选择1页(行)的存储单元,连接到页寄存器。而地址A0A8,实际上只是指定了页寄存
55、器中的起始地址。页寄存器大小为512B+16B,与存储单元阵列中行地址选中的1页内容对应。编程时,处理器通过I/O0I/O7将要写入的内容送页寄存器,然后通过页寄存器写入指定的1行(页);读出操作将指定1行(页)的内容先送页寄存器,然后通过I/O缓冲器与锁存器、输出驱动器,送到I/O0I/O7引脚,被处理器读回。 存储单元阵列结构存储单元阵列结构nK9F1208U0M存储单元阵列结构见P189图5.26。n图5.26中,上面阴影部分表示1页,大小为512B+16B,分为3部分,分别是第1个半页256B、第2个半页256B和备用区16B。编程/读出操作使用A9A25地址选择了这1页(行)后,这1
56、页与图中下面阴影部分表示的页寄存器进行数据传输。n页寄存器在设备中实际上有4个,每个平面有1个,见图5.27。 用4个平面表示的存储器阵列结构nK9F1208U0M设备被安排成4个平面(plane),每个平面有1024块和528字节的页寄存器,每个块有32页,见P190图5.27。n页读(page read)和页编程(page program)操作期间,528字节的页寄存器,连接到A9A25地址选中的页(行)地址对应的数据存储单元。设备被分为4个平面可以使某些操作同时发生,例如可以指定4个平面中每个平面的1块同时进行擦除操作;也可以指定4个平面中每个平面的1页同时进行编程操作。 n图5.27中
57、,块地址的安排使得多平面编程/擦除操作,可以按每4个顺序的块同时操作的方式被执行。 地址传送地址传送n由处理器送往K9F1208U0M的地址,分为4组,每次1组,通过I/O0I/O7引脚传送到设备,如P190表5-30所示。n表中A0A7作为列地址,A8没有传送。可以通过00h或01h命令将片内A8地址对应位设置为0或1,A0A8可对1页512字节寻址。表中A9A25分3次传送,作为行(页)地址,可寻址128K行(页)。第4周期传送时,I/O1I/O7必须为L(低电平)。5.6.4 K9F1208U0M Nand Flash 芯片命令集和状态寄存器芯片命令集和状态寄存器 K9F1208U0M命
58、令集命令集nK9F1208U0M命令集如P191表5-31所示。n表中Read1功能,用00h命令设置地址A8为0,同时表示读第1个半页寄存器(前256B),页内起始地址由后续传输的A0A7决定;用01h命令设置地址A8为1,同时表示读第2个半页寄存器(后256B),页内起始地址由后续传输的A0A7决定。 n表中Read2功能,用50h命令表示读1页中16B的备用区,起始地址由后续传输的A0A3决定,A4A7不必关心。nRead1功能中的00h/01h命令,除了表示读操作外,还用来在页编程命令前,设置A8为0(00h)或A8为1(01h)。也就是说页编程命令80h前,微处理器应该先向芯片传送0
59、0h或01h命令。nRead ID功能,用90h命令表示读芯片ID号。随后读出的4字节值为:ECh(制造者代码)、76h(设备代码)、A5h(不必关心)、C0h(支持多平面操作)。Reset功能,用FFh命令表示对设备(芯片)复位。 nPage Program(True)只对1个平面的1页编程;Page Program(Dummy)对2/3/4个平面中每个平面指定的1页编程。nCopy-Back Program(True)功能,能够读出1个平面中的1页,存放在这个平面的页寄存器中,然后将这个平面的页寄存器内容编程(写入)到这个平面中的另1页。与以往拷贝1页的不同之处是,以往需要微处理器先将芯片
60、中1页的内容,读出到芯片外的一个缓冲区,然后微处理器再将芯片外缓冲区的内容,编程(写入)到芯片内某1页。nCopy-Back Program(Dummy)功能,能够将2/3/4个平面中的每个平面的1页,拷贝到同一平面的另1页。nBlock Erase功能,擦除1个平面中的1个块。nMulti-Plane Block Erase功能,擦除多个平面中每个平面的1个块。nRead Status、Read Multi-Plane Status功能的区别详见表5-32。 K9F1208U0M状态寄存器n设备(芯片)含有一个状态寄存器,能够在编程或擦除操作完成后被微处理器读出,用来查看编程或擦除操作完成的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 修改补充合同范例
- 外包水暖合同模板
- 国企建筑合同范例
- 原料药合同模板
- 临建内部装修合同范例
- 乡村旅游概念规划合同范例
- 分款合同范例
- 大树修剪合同范例
- 个人纠纷合同范例
- 企业风险防范合同模板
- 2022版小学道德与法治课程标准测试题
- GB/T 27021.1-2017合格评定管理体系审核认证机构要求第1部分:要求
- GB/T 22796-2021床上用品
- 中国联通LAN工程施工及验收规范
- 中间表模式接口相关-住院与his-adt方案
- 临床PCR检验的室内质控方法课件
- 计算机解决问题的过程-优质课课件
- 作文讲评-“忘不了……”课件
- 深基坑安全管理(安全培训)课件
- 12月4日全国法制宣传日宪法日宪法知识科普宣教PPT教学课件
- 血液透析营养管理课件
评论
0/150
提交评论