历史上的今天

今天是:2024年10月13日(星期日)

正在发生

2021年10月13日 | S3C2440裸机------内存控制器

发布者:科技火箭 来源: eefocus关键字:内存控制器  GPIO 手机看文章 扫描二维码
随时随地手机看文章

1.内存接口概念

GPIO和协议类接口:我们在配置GPIO或者协议类接口(uart I2C总线)时,对于CPU 来说,它不关心这些接口,它只是去操作这些寄存器,CPU通过配置相应的寄存器,然后由GPIO控制器或uart控制器发出特定的波形,CPU是根据地址去选择不同的寄存器,cpu配置寄存器时是通过内存控制器去配置的,cpu把地址发送给内存控制器, 然后由内存控制器根据地址去选择不同的模块,然后把数据发送给模块或者从模块中读取数据。CPU发出的数据并不会直接输出到外部接口,cpu只是把数据发送给了相应的寄存器。


内存接口:对于内存设备来说,CPU发出的地址可以直接传给内存类设备,内存类设备包括norfalsh, 网卡,SDRAM,但是nandflash不属于内存类设备,对于内存类设备,我们cpu的数据总线和地址总线都是直接连接到内存类设备上的,然后我们的norfalsh,网卡,以及SDRAM是公用地址总线和数据总线的,我们需要用片选引脚来保证三个内存类设备在共用地址总线和数据总线的时候互不干扰, 当cpu发出地址时,内存控制器根据不同的地址范围产生不同的片选信号,从而选择不同的内存类设备,不同地址范围对应的片选引脚如下图所示,每一个片选信号可以选择的地址空间是128M。128M=2的27次方,至少需要A0 .... A2627根地址线,但是我们一直都说我们的CPU是32位的,为什么我们只用到了27条地址线,因为我们的cpu会把32位的地址发给内存控制器,但是我们的内存控制器只使用了其中的27位。

另外,nandflash不属于cpu统一编址,nandflash的片选信号是由nandflash的控制发出来的,只有当我们的cpu访问到nandflash控制器的某个寄存器时,才会发出片选信号选中nandflash。


另外,我们应该怎么分辨数据是由CPU写给内存设备还是cpu从内存设备读取数据呢,我们使用引脚进行确定。


2.不同位宽设备的连接

当我们外部接的是8bit的rom时,我们cpu的A0就连接rom的A0,外接的是16bit的rom时,我们cpu的A1连接rom的A0,外接的是32bit的rom时,cpu的A2连接rom的A0,具体如下

当cpu从rom读取数据时,CPU发出地质,然后rom收到地址,然后rom把数据发送给内存控制器,然后对于16bit和32bit的rom,内存控制器会从中挑出数据返回给cpu,具体如下图所示。


具体是首先根据连接到rom芯片上的地址管脚决定读取那个单元,然后根据没有连接的引脚确定从单元中取出第几个字节返回给CPU。

下面是另一个例子,这次我们要一次性读取四个字节,

另外,我们再访问芯片时怎么确定芯片的访问地址:1.根据片选信号确定基地址;2,再根据芯片所连接的地址线确定范围。


3.时序图分析示例

我们以norfalsh为例子讲解时序图,首先我们的cpu和norfalsh主要连接有地址线、数据线、片选信号、读信号、写信号。

下面是norfalsh的芯片手册里面给出的norfalsh自身的时序图:

我们看一下norflash的芯片手册里面的这个表格里面的各个名称的含义,


 Taa:在cpu发出地址信号之后,过长时间之后,我这个norfalsh的数据才能给你准备好,然后最大70ns的意思是说,同一个公司生产的芯片每个芯片之间也会有点差别,有的性能好在收到地址信号之后很快就能收到数据了,但是有的性能差,在收到地址信号之后很长时间才能收到信号,但是所有的这些芯片在70ns之后肯定都能收到数据,也就是就算是最差的芯片,那么70ns之后肯定也准备好了,但是70ns之后的不能保证数据是有效的。


Tce:当发出片选信号之后,过多长时间数据才有效,


Toe:数据在 Toe信号之后多长时间有效。


Toh:数据保持时间,最小值是0,


Tdf:我们之前说过要去访问一个芯片,先选中它,但是当我访问完一个芯片,然后片选信号释放之后,你不能立刻去访问另一个芯片,因为当前芯片片选刚被释放之后,数据线的状态还不稳定,还不是高阻状态,实际上这个值一般我们不需要理会,假设我们刚访问完这个norflash,数据还没有到高阻状态,需要等待30ns, 但是这个时候如果我再立刻开始访问这个norflash,你首先要发送片选以及地址信号,然后等待70ns才会接收数据,等到了70ns,这里的数据线早就恢复到高阻状态了,就可以访问了。


我们在访问norflash的时候,为了简单,我们把片选信号,读信号,地址信号三个同时发出。


下面我们看一下怎么设置S3C2440,S3C2440读取norfalsh的时序图如下:

我们在芯片手册里面搜索Tacc,找到BANK CONTROL REGISTER,由于我们的norfalsh是连接到bank0上面,所以我们设置BANKCON0寄存器,我们可以看到这个寄存器的Tacc位的默认值是111,是14个时钟周期,板子刚开始上电的时候时钟周期是12M,Tacc是14个时钟周期是1166ns,所以我们一上电的时候,使用最保险的参数,可以访问各种不同性能的norflash。


假设HCLK是100M,那么时钟周期是10ns,那么我们设置Tacc是8个时钟即可。


接下来看一下访问norflash还有哪些寄存器需要设置。

关键字:内存控制器  GPIO 引用地址:S3C2440裸机------内存控制器

上一篇:S3C2440裸机------SDRAM
下一篇:S3C2440裸机------从零实现用于裸机调试的printf函数

推荐阅读

在电视盒子领域,泰捷WEBOX电视盒子是非常出名的,它家主打的“无广告”是业内独一家,吸引了很多用户。但不少盒子厂商嘲讽“无广告”只是噱头,泰捷WEBOX坚持不了多久的。 然而时光荏苒,从泰捷WEBOX面世到现在,已经过去了很多年,如今的泰捷WEBOX不仅被称为“盒子里的苹果手机”,还是网上最火的网红电视盒子,在京东销量排行榜上更是占据了第一名的好...
ABB正式启用其位于美国休斯敦德州医学中心(TMC)的全新医疗保健研究中心,并展示了一系列概念技术,包括旨在协助医务人员和实验室工作人员完成医院实验室及物流任务的可移动Yu机器人。 ·在美国休斯敦德州医学中心,ABB正式启用其全球首家医疗保健研究中心,致力于为未来医院开发全新的机器人技术 ·自由移动、自主工作的YuMi实验室机器人未来将与医...
10月13日消息,据外媒报道,索尼Xperia 5 Ⅱ在美开启预订,售价950美元(约合人民币6400元)。  值得注意的是,索尼Xperia 5 Ⅱ美国上市时间还需要等将近一个月时间,具体上市日期是12月4日。  更重要的是,和Xperia 1 Ⅱ一样,索尼Xperia 5 Ⅱ美版不支持5G网络,而欧洲、日本发售的版本则支持5G。  作为Xperia的新旗舰,索尼Xperi...
据外媒报道,当地时间10月11日,帮助企业和组织激活大数据的技术开发商Tsecond推出了一个强大且独一无二的解决方案BRYCK,其可以轻松地从任何地方捕获、处理和存储数据。用户可以在该便携式媒体设备BRYCK中收集多达1PB的数据,并且以极快的速度进行存储和恢复,而且该设备非常小,可以单手携带,也非常坚固,可应对最恶劣的环境。BRYCK可应用于数据密集型...

史海拾趣

问答坊 | AI 解惑

请教:实现毫秒级脉冲序列延时的电路

做触发电路设计的时候,需要对某一路的脉冲序列进行毫秒级时间延时后输出,请问用硬件如何实现? 谢谢!…

查看全部问答∨

电子设计训练题汇总

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 电子设计竞赛题目“电子密码锁”(A题) 题目概述 在日常生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用机械式钥匙开锁,人们常 ...…

查看全部问答∨

直流电机驱动.rar

直流电机驱动.rar…

查看全部问答∨

人力单轨车,超有创意的概念

人力单轨车,超有创意的概念 在油价高涨的今天,各种各样节俭能源的设计层出不穷。有些设计虽然履行起来比较艰苦,但是却充满了想象力。为大家介绍的这款人力单轨车就是这样一款新鲜的概念产品。 人力单轨车非常有创意,就好像是一个小孩子去了 ...…

查看全部问答∨

浅析汽车防盗报警系统的工作原理与检测

检修汽车防盗报警器所需的工具仪器     检修汽车防盗报警器除了一些常用的工具,除偏嘴钳、尖镊子、大小十:宇螺钉旋具感螺钉旋具、医用针头、电烙铁和万用表外,还应具备以下几种工具仪器。     1.提供报警器维修时的供电电 ...…

查看全部问答∨

在ARM9环境下用EMVC制作二位曲线

如何制作一个实时二位曲线,高手能给出制作步骤吗?主要是如何在界面上显示动态的线条,和坐标线。 …

查看全部问答∨

关于linux开发圣经《linux设备驱动程序》3rd中的信号量机制问题

《linux设备驱动程序》3rd 简称ldd3,在第三章高级字符设备驱动中介绍了信号量机制后,我查看了ldd3附带的源代码,对其中某些部分不理解,请教各位:        在scull.h中定义结构的,如下      /* &nb ...…

查看全部问答∨

PB帮助文档内关于2D硬件加速部分的一处说明

小弟现在正在做WINCE5.0显示驱动2D硬件加速部分的开发,对PB帮助文档内的一处说明不太理解,即 ---Display Driver Extensions---Display Driver Recommendations的最后几行: The following list shows the display hardware that can accelerate ...…

查看全部问答∨

不同模块用到的变量定义问题,这样做有无问题?

最近读到一些资料:永远不要在.h文件中定义变量! 正确的做法是: /*m1.h*/ extern int a; /*m1.c*/ #include "m1.h" int a=5; /*m2.c*/ #include "m1.h"//模块2中包含模块1的.h文件 /*m3.c*/ #include "m1.h"//模块3中 ...…

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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