嵌入式系统第七章ARM存储器系统与设计_第1页
嵌入式系统第七章ARM存储器系统与设计_第2页
嵌入式系统第七章ARM存储器系统与设计_第3页
嵌入式系统第七章ARM存储器系统与设计_第4页
嵌入式系统第七章ARM存储器系统与设计_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统第七章ARM存储器系统与设计第一页,共74页。1存储器系统第二页,共74页。第三页,共74页。S3C2410X支持大、小端模式,将存储空间分成8组(Bank),每组大小是128MB,共计1GB。第四页,共74页。表2.76组/7组的存储器映射地址第五页,共74页。第六页,共74页。各引脚功能:第七页,共74页。第八页,共74页。第九页,共74页。第十页,共74页。特殊功能寄存器

1.内存控制器(MemoryController)内存控制器为访问外部存储空间提供存储器控制信号,共有13个寄存器。表2.8内存控制器

第十一页,共74页。(1)BWSCON总线宽度控制寄存器

用来控制各组存储器的总线宽度和访问周期,各位定义:[31]ST7确定存储器7组对应UB/LB端接口,0=不使用UB/LB,UB/LB端与nWBE[3:0]相连;1=使用UB/LB,UB/LB端与nBE[3:0]相连。[27]ST6、[23]ST5、[19]ST4、[15]ST3、[11]ST2、[7]ST1同上,[30]WS7确定存储器组7的WAIT状态,0=禁止WAIT,1=使能WAIT。[26]WS6、[22]WS5、[18]WS4、[14]WS3、[10]WS2、[6]WS1同上。0=WAITdisable1=WAITenable第十二页,共74页。[29:28]DW7确定存储器7组的数据总线宽度。00=字节(8位)、01=半字(16位)、10=字(32位)、11=保留。[25:24]DW6、[21:20]DW5、[17:16]DW4、[13:12]DW3、[9:8]DW2、[5:4]DW1。同上。

[2:1]DW0确定存储器0组的数据总线宽度,只读位,由OM[1:0]状态决定。01=半字(16位)、10=字(32位)。(2)BANKCONn控制寄存器BANKCONn控制寄存器用于控制各组nGCS的时序,各位定义如下:[14:13]TacsnGCSn有效前地址的建立时间。00=0个时钟、01=1个时钟、10=2个时钟、11=4个时钟第十三页,共74页。[12:11]TcosnOE有效前芯片选择信号的建立时间。

00=0个时钟、01=1个时钟、10=2个时钟、11=4个时钟[10:8]Tacc访问周期000=1个时钟、001=2个时钟、010=3个时钟、011=4个时钟100=6个时钟、101=8个时钟、110=10个时钟、111=14个时钟[7:6]TcohnOE无效后芯片选择信号的保持时间。00=0个时钟、01=1个时钟、10=2个时钟、11=4个时钟第十四页,共74页。[5:4]TcahnGCSn无效后芯片地址信号的保持时间。00=0个时钟、01=1个时钟、10=2个时钟、11=4个时钟[3:2]Tacp页模式的访问周期。00=2个时钟、01=3个时钟、10=4个时钟、11=6个时钟[1:0]页模式的配置(每次读写周期数)00=1个时钟、01=4个时钟、10=8个时钟、11=16个时钟第十五页,共74页。

当BANKCON6和BANKCON7中的MT=11时,BANKCON0~BANKCON5的[14:0]定义与以上相同。BANKCON6和BANKCON7的[3:0]定义有所变化,具体如下:[3:2]Trkd:RAS到CAS的延时。00=2个时钟、01=3个时钟、10=4个时钟[1:0]SCAN:列地址数目00=8位、01=9位、10=10位第十六页,共74页。(3)REFRESH刷新控制寄存器[23]REFEN刷新使能SDRAM:0=禁止1=使能SDRAM的刷新[22]TREFMD设置SDRAM的刷新方式0=自动刷新方式1=自刷新方式[21:20]Trp控制SDRAM的行周期00=2个时钟周期01=3个时钟周期10=4个时钟周期11=未定义第十七页,共74页。[19:18]Tsrc控制SDRAM的列周期00=4个时钟周期01=5个时钟周期10=6个时钟周期11=7个时钟周期[17:16]

保留位[15:11]

保留位[10:0]SDRAM的刷新计数值。刷新周期=(211–刷新计数值+1)/HCLK例如:如果刷新周期是15.6us,HCLK是60MHz,则:刷新计数器的值=211+1-60x15.6=1113第十八页,共74页。在Linux系统的/include/asm-arm/arch-s3c2410/S3C2410.h头文件中定义了各寄存器,其源代码如下:#definebMEMCON(Nb) __REG(0x48000000+(Nb))#defineBWSCON bMEMCON(0)#definebBANKCON(Nb) bMEMCON((Nb+1)*4)#defineBANKCON0 bBANKCON(0)#defineBANKCON1 bBANKCON(1)#defineBANKCON2 bBANKCON(2)#defineBANKCON3 bBANKCON(3)第十九页,共74页。#defineBANKCON4 bBANKCON(4)#defineBANKCON5 bBANKCON(5)#defineBANKCON6 bBANKCON(6)#defineBANKCON7 bBANKCON(7)#defineREFRESH bMEMCON(0x24)#defineBANKSIZE bMEMCON(0x28)#defineMRSRB6 bMEMCON(0x2C)#defineMRSRB7 bMEMCON(0x30)第二十页,共74页。2.NandFlash控制器S3C2410X支持NandFlash启动,启动代码存储在NandFlash上。启动时,NandFlash的前4KB(OM[1:0]=0,地址为0x00000000)将被装载到内部的固定地址中,然后开始执行其中的启动代码。一般情况下,该启动代码会把NandFlash中的内容拷贝到SDRAM中去,拷贝完后,主程序将在SDRAM中执行。操作流程如图2.10所示。第二十一页,共74页。自动引导模式流程:

复位;

如果自动引导模式使能,NandFlash中的前4KB代码拷贝到内部的小石头区域;

小石头映射到nGCS0;

CPU开始执行小石头区域中的代码。NandFlash模式:

通过NFCONF寄存器设置NandFlash配置;

把NandFlash命令写入NFCMD寄存器;

把NandFlash地址写入NFADDR寄存器;

读/写数据同时通过NFSTAT寄存器检测NandFlash状态。读操作前或者程序执行后检查R/nB信号。第二十二页,共74页。(1)NFCONF配置寄存器[15]Enable/Disable:NANDFlash控制使能。0=禁止NANDFlash控制器

1=使能NANDFlash控制器复位后该位自动清零,访问NANDFlash,必须使该位置1。[14:13]保留位[12]初始化ECC解码/编码0=不初始化ECC,1=初始化ECC,因为S3C2410只支持512字节的ECC检测,所以,每初始化512字节需初始化ECC。[11]NANDFlash存储器的nFCE控制使能位:第二十三页,共74页。0=NANDflashnFCE(使能)、1=NANDflashnFCE(无效),(复位后,nFCE自动为无效。)[10:8]TACLS:设置TACLSCLE&ALE的持续时间,设置值为0~7。持续时间=HCLK*(TACLS+1)[7]保留位[6:4]

TWRPH0:设置TWRPH0的持续时间,设置值为0~7。持续时间=HCLK*(TWRPH0+1)[3]保留位[2:0]

TWRPH1:设置TWRPH1的持续时间,设置值为0~7。持续时间=HCLK*(TWRPH1+1)第二十四页,共74页。(2)NFCMD命令设置寄存器[15:8]保留位[7:0]Command:NANDFlash存储器命令值。(3)NFADDR地址设置寄存器[15:8]保留位[7:0]Address:NANDflash存储器地址值。(4)NFDATA数据寄存器[15:8]保留位[7:0]Data:NANDFlash存储器的读出数据或写入编程数据。(5)NFSTAT操作状态寄存器[16:1]保留位[0]RnB:NANDFlash存储器就绪/忙标志位,由R/nB引脚检测0=NANDFlash存储器为“忙”,1=NANDFlash存储器为“准备就绪”。第二十五页,共74页。(6)NFECC纠错码寄存器[23:16]ECC2:纠错码#2。[15:8]ECC1:纠错码#1。[7:0]ECC0:纠错码#0。第二十六页,共74页。在Linux系统的/include/asm-arm/arch-s3c2410/S3C2410.h头文件中定义了各NandFlash控制寄存器.其源代码如下:#definebNAND_CTL(Nb)__REG(0x4e000000+(Nb))#defineNFCONF bNAND_CTL(0x00)#defineNFCMDbNAND_CTL(0x04)#defineNFADDRbNAND_CTL(0x08)#defineNFDATAbNAND_CTL(0x0c)#defineNFSTATbNAND_CTL(0x10)#defineNFECCbNAND_CTL(0x14)第二十七页,共74页。Flash设计第二十八页,共74页。3.时钟和电源管理

S3C2410X的主时钟由外部晶振或者外部时钟提供,选择后可以生成3种时钟信号,分别是CPU使用的FCLK,AHB总线使用的HCLK和APB总线使用的PCLK。时钟管理模块同时拥有两个锁相环,一个称为MPLL,用于FCLK、HCLK和PCLK;另一个称为UPLL,用于USB设备。第二十九页,共74页。(1)时钟源选择对时钟的选择是通过OM[3:2]实现的,如表2.10所示。表2.10时钟源选择

OM[3:2]=00B时,晶体为MPLLCLK和UPLLCLK提供时钟源;OM[3:2]=01B时,晶体为MPLLCLK提供时钟源,EXTCLK为UPLLCLK提供时钟源;OM[3:2]=10B时,EXTCLK为MPLLCLK提供时钟源,晶体为UPLLCLK提供时钟源;OM[3:2]=11B时,EXTCLK为MPLLCLK和UPLLCLK提供时钟。

第三十页,共74页。(2)时钟控制逻辑。时钟控制逻辑决定了所使用的时钟源,是采用MPLL作为FCLK,还是采用外部时钟。复位后,Fin直接传递给FCLK,即使不想改变默认的PLLCON值,也需要重新写一遍。FCLK由ARM920T核使用,HCLK提供给AHB总线,PCLK提供给了APB总线。S3C2410X支持HCLK、FCLK和PCLK的分频选择,其比率是通过CLKDIV寄存器中的HDIVN和PDIVN控制的,如表2.11所示。表2.11分频设定表

第三十一页,共74页。(3)电源管理。S3C2410X电源管理模块通过4种模式有效地控制功耗,即:Normal模式、Slow模式、Idle模式和Power-off模式。图2.12所示了S3C2410电源管理模式的转换关系。图2.12S3C2410电源管理转换模式

第三十二页,共74页。Normal模式:为CPU和所有的外设提供时钟,所有的外设开启时,该模式下的功耗最大。这种模式允许用户通过软件控制外设,可以断开提供给外设的时钟以降低功耗。Slow模式:采用外部时钟生成FCLK的方式,此时电源的功耗取决于外部时钟。Idle模式:断开FCLK与CPU核的连接,外设保持正常,该模式下的任何中断都可唤醒CPU。Power-off模式:断开内部电源,只给内部的唤醒逻辑供电。一般模式下需要两个电源,一个提供给唤醒逻辑,另外一个提供给CPU和内部逻辑,在Power-off模式下,后一个电源关闭。该模式可以通过EINT[15:0]和RTC唤醒。第三十三页,共74页。(4)时钟和电源管理寄存器S3C2410X通过控制寄存器实现对时钟和电源的管理,相关寄存器如表2.12所示。表2.12时钟控制器第三十四页,共74页。表2.12时钟控制器(续)第三十五页,共74页。#defineOlocktime 0x00/*R/W,PLLlocktimecountregister*/#defineoMPLLCON 0x04/*R/W,MPLLconfigurationregister*/#defineoUPLLCON 0x08/*R/W,UPLLconfigurationregister*/#defineoCLKCON 0x0C/*R/W,Clockgeneratorcontrolreg.*/#defineoCLKSLOW 0x10/*R/W,Slowclockcontrolregister*/#defineoCLKDIVN 0x14/*R/W,Clockdividercontrol*/在Linux系统的/include/asm-arm/arch-s3c2410/S3C2410.h头文件中定义了时钟和电源管理寄存器。其源代码如下:第三十六页,共74页。/*Registers*/#defineLOCKTIMEbCLKCTL(oLOCKTIME)#defineMPLLCON bCLKCTL(oMPLLCON)#defineUPLLCON bCLKCTL(oUPLLCON)#defineCLKCON bCLKCTL(oCLKCON)#defineCLKSLOW bCLKCTL(oCLKSLOW)#defineCLKDIVN bCLKCTL(oCLKDIVN)第三十七页,共74页。相关芯片引脚说明:第三十八页,共74页。第三十九页,共74页。3.1基本电路设计

3.1.1电源电路设计

S3C2410X需要3.3V和1.8V两种供电电压,是由5V电源电压经LM1085-3.3V和AS1117-1.8V分别得到3.3V和1.8V的工作电压。开发板上的芯片多数使用了3.3V电压,而1.8V是供给S3C2410内核使用的。5V电压供给音频功放芯片、LCD、电机、硬盘、CAN总线等电路使用。具体如图3.1所示。第四十页,共74页。第四十一页,共74页。RTC电路的电压是1.8V,实际是将电池电压或3.3V电压经过两个BAV99(等价于4个二极管串联)降压后得到的。如图3.2所示。图3.2RTC电路的电压原理图

第四十二页,共74页。3.1.2复位电路设计硬件复位电路实现对电源电压的监控和手动复位操作。IMP811T的复位电平可以使CPUJTAG(nTRST)和板级系统(nRESET)全部复位;RESET反相后得到nRESET信号。

图3.3系统的复位电路第四十三页,共74页。3.1.3晶振电路设计S3C2410X微处理器的主时钟可以由外部时钟源提供,也可以由外部振荡器提供,通过引脚OM[3:2]来进行选择。OM[3:2]=00时,MPLL和UPLL的时钟均选择外部振荡器;OM[3:2]=01时,MPLL的时钟选择外部振荡器;UPLL选择外部时钟源;OM[3:2]=10时,MPLL的时钟选择外部时钟源;UPLL选择外部振荡器;OM[3:2]=11时,MPLL和UPLL的时钟均选择外部时钟源。第四十四页,共74页。该系统中选择OM[3:2]均接地的方式,即采用外部振荡器提供系统时钟。外部振荡器由12MHz晶振和2个15pF的微调电容组成。如图3.4所示,

图3.4晶振电路原理图第四十五页,共74页。

图3.5所示的是S3C2410X应用系统所需的RTC时钟电路图,电路由12MHz晶振和2个15pF的电容组成,振荡电路的输出接到S3C2410X微处理器的XTlpll脚,输入由XTOpll提供。12MHz的晶振频率经S3C2410X内部PLL电路的倍频后可达203MHz。

图3.5系统时钟的选择第四十六页,共74页。3.2存储器系统设计

在嵌入式应用系统中,通常使用3种存储器接口电路,NorFlash接口、NandFlash接口和SDRAM接口电路。引导程序既可存储在NorFlash中,也可存储在NandFlash中。而SDRAM中存储的是执行中的程序和产生的数据。存储在NorFlash中的程序可直接执行,与在SDRAM执行相比速度较慢。存储在NandFlash中的程序,需要拷贝到RAM中去执行。第四十七页,共74页。3.2.18位存储器接口设计

由于ARM微处理器的体系结构支持8位/16位/32位的存储器系统,相应地可以构建8位的存储器系统、16位的存储器系统或32位的存储器系统,在采用8位存储器构成8位/16位/32位的存储器系统时,除数据总线的连接不同之处,其它的信号线的连接方法基本相同。第四十八页,共74页。1.构建8位的存储器系统

采用8位存储器构成8位的存储器系统。此时,在初始化程序中还必须通过BWSCON寄存器中的DWn设置为00,选择8位的总线方式。●存储器的nOE端接S3C2410X的nOE引脚;●存储器的nWE端接S3C2410X的nWE引脚;●存储器的nCE端接S3C2410X的nGCSn引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR15~ADDR0]相连;●存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连。第四十九页,共74页。2.构建16位的存储器系统

采用两片8位存储器芯片以并联方式可构成16位的存储器系统,此时,在初始化程序中将BWSCON寄存器中的DWn设置为01,选择16位的总线方式。●存储器的nOE端接S3C2410X的nOE引脚;●低8位的存储器的nWE端接S3C2410X的nWBE0引脚,高8位的存储器的nWE端接S3C2410X的nWBE1引脚;●存储器的nCE端接S3C2410X的nGCSn引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR16~ADDR1]相连;●低8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA7~DATA0]相连,高8位的存储器的8位数据总线[DQ7~DQ0]与S3C2410X的数据总线[DATA15~DATA8]相连。第五十页,共74页。3.构建32位的存储器系统采用四片8位存储器芯片以并联方式可构成32位的存储器系统,如图3.8所示,此时,在初始化程序中将BWSCON寄存器中的DWn设置为10,选择32位的总线方式。●存储器的nOE端接S3C2410X的nOE引脚;●低8位的存储器的nWE端接S3C2410X的nWBE0引脚,次低8位的存储器的nWE端接S3C2410X的nWBE1引脚,次高8位的存储器的nWE端接S3C2410X的nWBE2引脚,高8位的存储器的nWE端接S3C2410X的nWBE3引脚;●存储器的nCE端接S3C2410X的nGCSn引脚;●存储器的地址总线[A15~A0]与S3C2410X的地址总线[ADDR17~ADDR2]相连。第五十一页,共74页。图3.832位存储器系统

第五十二页,共74页。3.2.2SDRAM接口电路设计在ARM嵌入式应用系统中,SDRAM主要用于程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动程序代码,完成系统的初始化后,为提高系统的运行的速度,程序代码通常装入到SDRAM中运行。在S3C2410X片内具有独立的SDRAM刷新控制逻辑电路,可方便地与SDRAM接口。目前常用的SDRAM芯片有8位和16位的数据宽度、工作电压一般为3.3V。主要生产厂商有HYUNDAI、Winbond等,下面以K4S561632C-TC75为例说明其与S3C2410X的接口方法,构成16Mx32位的存储系统。第五十三页,共74页。

K4S561632C-TC75存储器是4组×4M×16位的动态存储器,工作电压为3.3V,其封装形式为54脚TSOP,兼容LVTTL接口,数据宽度为16位,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh)。其引脚如图3.9所示,引脚功能如表3.1所示。图3.9K4S561632C-TC75引脚图

第五十四页,共74页。引脚名称说明CLK时钟时钟输入CKE时钟使能片内时钟信号使能CS*片选为低电平时芯片才能工作BA0、BA1组地址选择用于片内4个组选择A12~A0地址总线为行、列的地址线RAS*行地址锁存低电平时锁存行地址CAS*列地址锁存低电平时锁存列地址WE*写使能使能写信号和允许列改写,WE*和CAS*有效时锁存数据LDQM、UDQM数据I/O屏蔽在读模式下控制输出缓冲,写模式下屏蔽输入数据DQ15~DQ0数据总线数据输入/输出引脚VDD/VSS电源/地内部电源及输入缓冲电源/地VDDQ/VSSQ电源/地输出缓冲电源/地NC空空引脚表3.1K4S561632C-TC75引脚功能表

第五十五页,共74页。

采用两片K4S561632C-TC75存储器芯片可组成16M×32位SDRAN存储器系统,其片选信号CS*接S3C2410X的nGCS6引脚,具体连线如图3.10所示。图3.10K4S561632C-TC75组成的32位SDRAM存储器系统第五十六页,共74页。3.2.3Flash接口电路设计

Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。目前所做用的Flash芯片主要有NorFlash和NandFlash两种。但这两种Flash芯片在某些方面存在一定的差异,如:Nand器件执行擦除操作简单,而Nor则要求在进行写入前先将目标块内所有的位都写为0;Nor的读速度比Nand稍快一些;Nand的写入速度比Nor快很多,Nand需4ms擦除,而Nor需要5s快。NandFlash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,其价格低。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是十万次。第五十七页,共74页。Nor具有XIP(eXecuteInPlace,芯片内执行)特性,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。在接口方面,NorFlash和NandFlash也存在着差别。NorFlash带有SRAM接口,Nand器件使用复杂的I/O口来串行存取数据。第五十八页,共74页。1.NorFlash与S3C2410X微处理器接口设计SST39LF/VF160是1MX16位的CMOS芯片,SST39LF160工作电压为3.0~3.6V,SST39VF160工作电压为2.7~3.6V,采用48脚TSOP封装或TFBGA封装,16位数据宽度,以字模式(16位数据宽度)的方式工作。SST39VF160的在系统编程和编程操作仅需3.3V电压,通过命令可以对芯片进行编程(烧写)、擦除(整片擦除和按扇区擦除)以及其他操作。SST39LF/VF160的引脚图如图3.11所示,引脚功能如表3.2所示。第五十九页,共74页。图3.11SST39LF/VF160的引脚图

第六十页,共74页。表3.2SST39LF160/SST39VF160引脚功能表引脚名称说明CE*片选为低电平时芯片才能工作OE*输出使能用于片内4个组选择A19~A0地址总线地址线WE*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论