1.SDRAM原理

black

(1)SDRAM内部存储结构

(2)再看看与2440连接的SDRAM原理图

sdram引脚说明:

A0-A12:地址总线
D0-D15:数据总线(位宽16,2片级联成位宽32)
BA0-BA1:bank选择
nSCS:片选
nSRAS:行地址选择
nSCAS:列地址选择
nWE:写使能
SCLK:时钟
SCKE:时钟使能

(3)SDRAM的地址范围:

之前我们讲“二、不同位宽外设与CPU地址总线的连接”这一节的时候,我们留下了一个问题,SDRAM的地址范围是多少?

我们知道地址范围肯定是base_addr + size。我们根据片选接了nGCS6,base_addr=0x3000,0000,那么size是多大呢?

下图是我截取的sdram手册上的特性描述:

我们看见容量为:4M word x 16-bit x 4-bank = 32M,再看原理图我们是两片级联,所以容量为4M word x 32-bit x 4-bank=64M。所以地址范围是[0x3000_0000 ~ 0x33ff_ffff]

(4)SDRAM数据访问原理:

我们知道64M=220*26=226,那么需要26条地址线,再看看原理图,我们发现SDRAM的地址线A[12:0]只有13条,那么最多只能访问213=8K的数据,地址线明显配不上这么大的容量,那么它是如何解决的呢?

答:当然是拆分地址了,地址分多次传输。我们从SDRAM的内部存储结构得知要确定SDRAM的一个存储单元,先确定是哪个bank,然后再确定在哪一行、哪一列即可。

SDRAM有4个bank,由BA0、BA1决定选中哪个bank,查看SDRAM手册见下图;

然后通过选中nSRAS选中行地址,从而发送行地址;最后通过选中nSCAS选中列地址,从而发送列地址。

举个栗子:

CPU执行如下指令:

ldr	r0, =0x30000000;
ldr r1, [r0]; 从SDRAM基地址读取4byte数据

过程分析:

1.发出片选信号nGCS6,选中SDRAM
2.发出bank选中信号(BA0,BA1),确定是SDRAM上的哪个bank,从原理图得知CPU的ADDR24、ADDR25对应SDRAM上的BA0,BA1,所以让BA0、BA1=00,选中bankA。

从SDRAM手册确定行列地址的数目,如下图:

3.发出行地址信号nSRAS,使能行地址传输。传输行地址,确定是哪一行(看SDRAM手册确定行地址数(A12-A0)13条)

4.发出列地址信号nnSCAS,使能列地址传输。传输列地址,确定是哪一列(看SDRAM手册确定列地址(A8-A0)9条)

从而发送完整的0x30000000地址到了SDRAM,SDRAM返回4byte数据给CPU。

s3c2440裸机-内存控制器(四、SDRAM原理-cpu是如何访问sdram的)的更多相关文章

  1. s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)

    不同位宽设备的连接 black 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的. 8bit rom与CPU地址线的连接 8bit*2 rom与CPU地址线的连接 8bit*4 r ...

  2. s3c2440裸机-内存控制器(一、内存控制器的原理)

    1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nan ...

  3. s3c2440裸机-内存控制器(五、SDRAM编程实现)

    配置内存控制器-SDRAM编程配置 2440内存控制器共有13个寄存器. BANK0--BANK5只需要设置BWSCON和BANKCONx(x为0-5)两个寄存器: BANK6.BANK7外接SDRA ...

  4. s3c2440裸机-内存控制器(三、norflash初始化-时序设置)

    1.norflash与2440的硬件连接 2.初始化nor,配置nor时序 1.如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部设备的性能进行配置,这里先列出时间参数 ...

  5. s3c2440内存控制器与SDRAM基本测试

    前面我们实验的LED和串口程序,是cpu发送地址给特定的寄存器,在寄存器中写相应的位,达到控制要求. 第一类是GPIO门电路如LED,第二类是协议类如串口,这些都不是cpu直接给地址信息,而是通过寄存 ...

  6. 十二、S3C2440 裸机 — SDRAM

    12.1 SDRAM 介绍 12.1.1 SDRAM 定义 SDRAM(Synchronous Dynamic Random Access Memory):同步动态随机存储器-内存条 同步是指内存工作 ...

  7. S3C2440内存控制器详解

    S3C2440A Memory Map after Reset S3C2440的内存空间划分为不同的块,当CPU向内存控制器发出地址,内存控制器根据地址范围,发出对应片选信号到片选引脚,实现对不同设备 ...

  8. S3C2440—7.存储控制器访问外设

    文章目录 一.内存接口的概念 二.存储控制器(内存控制器) 2.1 什么是存储控制器? 2.2 S3C2440存储控制器介绍 2.3 存储控制器如何处理不同位宽的外设 2.4 怎么确定芯片的访问地址? ...

  9. CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上

    一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...

随机推荐

  1. String and Arrays

    Description 有一个N*N的字符矩阵,从上到下依次记为第1行,第2行,--,第N行,从左至右依次记为第1列,第2列,--,第N列.    对于这个矩阵会进行一系列操作,但这些操作只有两类:  ...

  2. windows程序设计04_显示汉字的16进制

    看下面的代码 //utf-8编码 #include<stdio.h> int main() { char a[] = "中国"; printf("%x\n&q ...

  3. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  4. PAT1057 Stack(树状数组+倍增)

    目录 题目大意 题目分析 题目大意 要求维护一个栈,提供压栈.弹栈以及求栈内中位数的操作(当栈内元素\(n\)为偶数时,只是求第\(n/2\)个元素而非中间两数的平均值).最多操作100000次,压栈 ...

  5. 为什么使用HTTP2?

    最近我们公司的官网由原来的http1.1已升级到http2,而我们前端开发对http2还是一片懵懂,更不知道为何换成了这个,故此补充了下http2的相关知识. http1.1相比于http1.0有哪些 ...

  6. c++之运算符

    运算符分为:算数运算符.赋值运算符.比较运算符.逻辑运算符 算数运算符:+(正) -(负) + - * / % i++(先赋值后自增) ++i(先自增后赋值) i--(先赋值后自减) --i(先自减后 ...

  7. python安装pymssql等包时出现microsoft visual c++ 14.0 is required问题无需下载visualcppbuildtools的解决办法

    如题,在练习python安装一些包时,出现了microsoft visual c++ 14.0 is required问题.网上有很多资料:一是下载对应的.whl文件,然后pip install安装: ...

  8. 这几天加班熬夜把所有Python库整理了一遍,非常全面!

    库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码.colorama 主要用来给文本添加各种颜色,并且非常简单易用.Prettytable 主要用于在终端或浏览器端构建格 ...

  9. Mysql中处理JSON字段

    处理json字段,可以用json_extract函数: select * from (select json_extract(ext_value,'$.high')+0 highx,batch_id ...

  10. Cortex-M7,A8,A9,A15与ADI的BlackFin以及SHARC的DSP性能PK

    说明:1.通过此贴让我们对M4和M7的DSP性能有个全面的认识.2.测试数据来源于DSP Concepts,对于这家公司的名字,大家可能比较陌生.我们现在用的CMSIS-DSP软件就是由ARM委托这家 ...