一.内存接口的概念

S3C2440是SOC,所以会有很多外设,一般驱动外设的方法可以分为:


通过CPU访问相应的的寄存器,然后通过控制器驱动外设

CPU直接访问外设地址,驱动外设

后一种访问方式是CPU直接对内存地址的访问,即通过内存接口访问外设,CPU通过片选线选定外设,通过地址线先选定地址,通过数据线进行控制。


我们称这种外设为内存类设备,通常有:NOR FLASH、网卡、SDRAM……


那CPU是如何通过这些总线来驱动内存类设备呢?这就涉及到存储控制器了,下面就来介绍一下存储控制器的原理。


二.存储控制器(内存控制器


2.1 什么是存储控制器?

存储控制器是按照一定的时序规则对存储器的访问进行必要控制的设备,包括地址信号、数据信号以及各种命令信号的控制,使主设备(访问存储器的设备)能够根据自己的要求使用存储器上的存储资源


存储控制器可以看作CPU与内存之间沟通的桥梁,CPU通过存储控制器来访问内存,比如GPIO、UART、IIC、SDRAM……都属于CPU的统一编址,地址都是CPU统一编排的(NAND FLASH不属于),所以CPU就可以通过存储控制器来访问这些外设的地址。


2.2 S3C2440存储控制器介绍

下面是S3C2440的存储控制器介绍:

在这里插入图片描述

其中主要的信息为:


总共1GB的内存,分为8BANK,每个BANK的地址大小为128MB

BANK的位宽是可编程的

BANK0~BANK7的起始地址是固定的

此外,为了访问这1GB的空间,存储控制器引出了27根地址线ADDR0~ADDR27,这时候我们算一下:2^27=128M,这明明是一个BANK的空间呀,怎么可以访问8个BANK的空间呢?


其实还有8根片选线nGCS0~nGCS7,用来选择某一块BANK,就是8个BANK将1GB空间划分为8块128MB大小的空间,当访问某一块范围内的地址时,将此块的片选信号拉低就可以,这8个BANK的地址空间如下:

在这里插入图片描述

注意:S3C2440是32位CPU,理论上可使用的地址大小为4GB,除了上面这由于连接外设的1GB外,还有一部分空间是CPU内部寄存器使用了,剩下的地址空间没有使用。


2.3 存储控制器如何处理不同位宽的外设

有的外设位宽是8bit,有的是16bit,有的是32bit,当CPU访问这些外设的内存空间时,那要怎么办?要分情况来吗?


不需要,因为有存储控制器!CPU只需要向存储控制器提供地址,由存储控制器来解决不同位宽的问题。


以ROM为例:CPU想读取ROM中的某块地址中的数据,可ROM的位宽有8bit、16bit、32bit


下面对比一下三种位宽情况下ROM与存储控制器的接线情况:


8bit:

在这里插入图片描述

16bit:

在这里插入图片描述

32bit:

在这里插入图片描述

区别就是地址线的接法,8bit位宽是相对应的A0对A0;16bit位宽是从A1开始对齐的;32bit位宽是从A2开始对齐的,这是因为不同位宽的ROM内部构造不相同。


ROM的内部构造:


8bit带宽:每个地址的空间大小是8bit(1Byte);


16bit带宽:每个地址的空间大小是16bit(2Byte);


32bit带宽:每个地址的空间大小是32bit(4Byte);


表面上看到A0、A1没用到,实际上是起了别的作用:


8bit:内存控制器A0对应ROM的A0


16bit:内存控制器A1对应ROM的A0,内存控制器A0用来确定16bit(2Byte)中的哪一Byte


32bit:内存控制器A2对应ROM的A0,内存控制器A1A0用来确定32bit(4Byte)中的哪一Byte


实际上这些地址线都是有用的!!!


下面通过俩个例子来说明CPU在对不同位宽ROM读取数据时的差异。


例一:


#读取地址3的一个字节数据到R1寄存器

MOV Ro ,#3

LDRB R1, [R0] 


读地址3的一个字节(LDRB 代表读取一个字节),CPU会将地址3发送给ROM(通过内存控制器),此时A2A1A0对应:011


8bitROM:A0对应A0,直接取出第三个数据,1Byte


16bitROM:A1对应A0,取出第一个数据,2Byte(一个地址16bit)


32bitROM:A2对应A0,取出第0个数据,4Byte(一个地址32bit)


取出的数据中 包含有我们想要的数据,由内存控制器筛选我们所需要的数据。


过程:CPU发出地址,ROM通过存储控制器收到地址,ROM返回数据给存储控制器,存储控制器筛选所需要的数据,存储控制器返回有用数据给CPU。


存储控制器操作16bit、32bit时会根据A0、A1的信息筛选出所需数据给CPU。


例二:


#从地址4开始读取32bit数据(4Byte)

mov R0, #4

LDR R1, [R0]


CPU去地址4开始读取4Byte数据(32位ARM),地址是以Byte为单位的,地址4就是第四个Byte,此时A2A1A0对应:100


8bit:发送四次地址给ROM,每次得到一个ROM返回的字节(8bit),内存控制器整合4Byte数据


16bit:发送俩次地址给ROM,每次得到俩个ROM返回的字节(16bit),内存控制器整合得到4Byte数据


32bit:发送一次地址给ROM,ROM返回四个字节(32bit),正好是地址4开始的4Byte数据


过程:CPU发出地址给内存控制器,内存控制器收到地址转发给ROM,ROM返回数据,内存控制器组装数据后返回CPU。


2.4 怎么确定芯片的访问地址?

第一步:根据片选信号确定基地址(每个片选线确定的地址块有128MB)


第二步:根据芯片所接地址线确定范围(27根地址线)


比如:Nor FLASH

在这里插入图片描述

片选线0,基地址0X0000_0000,因为这个NOR FLASH是16位的,所以内存控制器的LADDR1接A0,LADDR0用来选择低八位还是高八位。


用到A0~A20总共21条地址线,所以NOR FLASH地址范围是:基地址+地址线确定的范围


即:0X0000_0000~0X001f_ffff 2^21=2M空间。


比如:网卡NET

在这里插入图片描述

基地址是nGCS4:0X2000_0000 内存控制器的地址线只接了LADDR2,16位数据线,意味着LADDR0也用到了。


网卡的地址范围:基地址+0b000~基地址+0b101 (LADDR1的位置无所谓)即:0X2000_0000~0X2000_0005


访问这些地址就可以访问到DM9000网卡


比如:SDRAM

在这里插入图片描述

SDRAM输出是32位,所以LADDR0、LADDR1已经包含了,加上LADDR2~LADDR14、LADDR24、LADDR25总共17条地址线,2^17=128k ,然鹅SDRAM是64M的,实际上是行地址和列地址。(这个问题会在下篇博客中细细分析)


三.时序问题

以NOR FLASH读时序为例:

在这里插入图片描述

内存控制器与NOR FLASH有地址线LADDRx、数据线LDATAx、片选信号nGCS0、读信号LnOE、写信号LnWE


这些信号控制线协调工作。


下面是芯片手册中存储控制器对芯片读数据时的时序图:

在这里插入图片描述

各个信号的持续时间根据外设芯片的性能有差异,可以根据具体芯片的手册进行设置,比如NOR FLASH:


(读时序)

在这里插入图片描述

对照AC特性:

在这里插入图片描述

然后就是配置各个信号线的时序:


可以看出,Taa=70ns时,同时发出保证了片选线、读信号线、地址线的时序,可以得到有效的数据


设置寄存器:

在这里插入图片描述

板子默认是14clocks,上电时,HCLK默认晶振12MHz,此时的Tacc=1166ns,相当于牺牲了性能来满足各种NOR FLASH。


我们配置当HCLK=100MHz时,1clock=10ns 所以选择8clock:101。


按照寄存器直接配置就可以了,可以通过烧写NOR FLASH的速度来体现时序中Tacc的影响。

关键字:S3C2440  存储控制器  访问外设 引用地址:S3C2440—7.存储控制器访问外设

上一篇:S3C2440—8.读写SDRAM
下一篇:ARM之未定义指令异常和SVC异常

推荐阅读

    8月28日,深圳赛格集团有限公司与广东惠州潼湖生态智慧区管委会举行合作备忘录签约仪式,双方将共同在潼湖生态智慧区打造赛格潼湖国际半导体产业园。据悉,潼湖管委会拟在中韩(惠州)产业园起步区(智慧区国际合作产业园)规划建设赛格潼湖国际半导体产业园,主要发展半导体和智能制造产业。赛格集团发挥在高端电子信息产业和先进制造业等方面的优...
根据美国国家公路交通安全管理局(NHTSA)调查显示,在 2017 年约有 37,000 人在美国公路上发生车祸而丧生,其中有 47% 的人没有系上安全带。有鉴于此,Honda 与安全气囊供应商 Autoliv 合作开发了新的前乘客座安全气囊,可以在不同角度发生的撞击中降低颈部与脑部受伤的机率,提升乘客安全。新安全气囊由三个部分组成:一个中央气囊和两个向外突...
中断服务函数列表IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数EXTI0_IRQHandler EXTI1_IRQHandlerEXTI2_IRQHandler EXTI3_IRQHandler EXTI4_IRQHandler EXTI9_5_IRQHandler EXTI15_10_IRQHandler 外部中断一般步骤1、开启IO口时钟,初始化IO...
致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下世平推出基于恩智浦(NXP)NCJ29D5的数字汽车钥匙解决方案。 图示1-大联大世平基于NXP产品的数字汽车钥匙解决方案的展示板图 汽车时代的到来让无线接入技术进入了大众的视野。传统采用PKE/RKE技术的电子汽车钥匙,虽然给汽车的使用带来了极大便利,但也存在着容易受到中继攻击、手机...

史海拾趣

问答坊 | AI 解惑

求教使用高频VCO过程中的其他频率干扰问题,谢谢!

最近在调试一个中频调制电路,其中使用一款VCO—MAX2609来产生本地正弦震荡,该VCO的频率变化范围为540MHz-650MHz,单独调试是能够产生预期的560MHz正弦波。但是由于在整体电路中,数字部分的器件中使用了一个44MHz的晶振,当整体调试时,就发现VCO ...…

查看全部问答∨

准备发帖的楼主们请先看一看!

      最近,论坛出于运营等多方面考虑,实现了芯币制,这样考虑有利于论坛的发展,我们也只好理解了。       但作为发帖的楼主们,能不能多为大家考虑呀,多一份奉献精神哪。我发现有些帖子的资料是“出 ...…

查看全部问答∨

申请学习

申请开发板一共学习…

查看全部问答∨

社区智能远程健康监护系统设计方案

1 引言 人口老龄化已成为当今世界的一个突出的社会问题。据联合国统计,2002年,全世界的老龄人口(60岁及60岁以上)总数已达6.29亿,占世界人口总数的10%,到2050年,将占总人口数的21%。中国是世界上老年人口最多的国家,2004年底,中国60岁及 ...…

查看全部问答∨

单片机软硬之争

引子:单片机系统是非常典型的软硬结合的系统 对软件和硬件能力的要求很平均 软件上,你会得自己处理协议、组织控制逻辑甚至加密解密等 硬件上,你们会用运放调整信号、设计合适的电源稳定的驱动电路等 在开发管理上,常见的有以下两种模式: ...…

查看全部问答∨

CE中com组件和进程通信实现??在线等,高分

在CE中 当应用程序A调用了COM组件更新数据库内容时,则需要通知应用程序B同步数据库中的内容( 通知内容是带具体数据,且都是无窗体程序); 应该如何实现?? 怎样才能效率比较高?? …

查看全部问答∨

破解无线网络密码

我电脑可以搜索很多无线网络。。。。 但有密码进不去。。。。 各位高手指点下怎么破解。。。 先说声谢谢了。。。 …

查看全部问答∨

求助:怎么取得目录占用的空间大小

各位大虾,请教:怎么获取一个目录占用的空间的大小(即目录中所有文件占用空间的和)?…

查看全部问答∨

WINCE系统下,大的位图按钮焦点切换时,位图会闪烁怎么回事?我用的是那种--选中/不选中/得到焦点各自对应一张位图的普通位图按钮类

WINCE系统下,大的位图按钮焦点切换时,位图会闪烁怎么回事?我用的是那种,选中/不选中/得到焦点各自对应一张位图的普通位图按钮类 在DRAWITEM函数里面再对各自不同的状态,BITBLT位图到当前的CDC。我的程序在PC上没这个问题,也许是PC的速度快好 ...…

查看全部问答∨

28335 烧Flash 时连接不上

安装好ccs3.3后,设置中选择了 F28335 XDS510 Emulator    (我用的是仿真器usb2.0),设置好后连接成功,仿真操作一切正常。但是在SdConfig v3.3 软件中进行设置时,端口选择0x240时却没有XDS510选项,仅有spi510,RESET时失败。请问这种 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved