s3c2440裸机-内存控制器3-SDRAM原理-cpu是如何访问sdram的

发布者:幸福如愿最新更新时间:2024-07-08 来源: elecfans关键字:内存控制器  SDRAM 手机看文章 扫描二维码
随时随地手机看文章

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]


再以W9825G6KH这款SDRAM为例,地址总线A0-A12,数据总线D0-D15,因此内存大小:2^13 * 2^9 = = 4194304,等于4M,加上有4个bank,数据为宽16位,因此内存大小4Mx4x2字节



框图翻译成中文形式:


CLK:时钟线,SDRAM 是同步动态随机存储器,“同步”的意思就是时钟,因此需要一根额外的时钟线,这是和 SRAM 最大的不同,SRAM 没有时钟线。

CKE:时钟使能信号线,SRAM 没有 CKE 信号。

CS:片选信号,这个和 SRAM 一样,都有片选信号。

RAS:行选通信号,低电平有效,SDRAM 和 SRAM 的寻址方式不同,SDRAM 按照行、列来确定某个具体的存储区域。因此就有行地址和列地址之分,行地址和列地址共同复用同一组地址线,要访问某一个地址区域,必须要先后发送行地址和列地址

CAS:列选通信号,和 RAS 类似,低电平有效,选中以后就可以发送列地址了。

WE:写使能信号,低电平有效

A0-A12: 地址线

DQ0-DQ15: 16位数据线

BS0-BS1: BANK 选择线

LDQM,UDQM: 高低字节数据选择线

(4)SDRAM数据访问原理:


我们知道64M=2^20*2^6=2^26,那么需要26条地址线,再看看原理图,我们发现SDRAM的地址线A[12:0]只有13条,那么最多只能访问2^13=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。


关键字:内存控制器  SDRAM 引用地址:s3c2440裸机-内存控制器3-SDRAM原理-cpu是如何访问sdram的

上一篇:s3c2440裸机-内存控制器4-SDRAM编程实现
下一篇:s3c2440裸机-内存控制器2-不同位宽外设与CPU地址总线的连接

推荐阅读最新更新时间:2026-03-01 10:32

s3c2440裸机-内存控制器4-SDRAM编程实现
配置内存控制器-SDRAM编程配置 2440内存控制器共有13个寄存器。 BANK0--BANK5只需要设置BWSCON和BANKCONx(x为0~5)两个寄存器; BANK6、BANK7外接SDRAM时,除BWSCON和BANKCONx(x为6、7)外,还要设置REFRESH、BANKSIZE、MRSRB6、MRSRB7等4个寄存器。 下面分别说明各个寄存起的设置: 1.位宽和等待控制寄存器BWSCON(BUSWIDTH&WAITCONTROLREGISTER) 我们SDRAM的位宽为32,DW6 设置成10, 没有使用等待信号,所以WS6 =0。 bank7跟随bank6的配置, 因此BWSCON寄存器的值为:0x2
[单片机]
s3c2440裸机-内存控制器(三-1、norflash编程之NorFlash原理)
1.flash种类与特性: flash一般分为nand flash和nor flash,各自特性如下表: - Nor NAND XIP(片上执行) yes no 性能(擦除) 非常慢(5s,块太大) 快(3ms) 性能(写) 慢 快 性能(读) 快 快 可靠性 高 一般(容易出现位反转) 可擦除次数 10000 ~ 100000 100000 ~ 1000000 接口 与ram类似,可直接访问任意地址 I/O接口(无地址线,必须串行访问,命令、地址、数据共用8位IO) 易用性 容易 复杂 主要用途 常用于保存代码和关键数据 用于保存数据 价格 高 低 容量 小 大 常用文件系统类型 jffs yaff
[单片机]
<font color='red'>s3c2440</font><font color='red'>裸机</font>-<font color='red'>内存</font><font color='red'>控制器</font>(三-1、norflash编程之NorFlash原理)
便携设备访问片外SDRAM的低功耗设计研究
DSP有限的片内存储器容量往往使得设计人员感到捉襟见肘,特别是在数字图像处理、语音处理等应用场合,需要有高速大容量存储空间的强力支持。因此,需要外接存储器来扩展DSP的存储空间。   在基于DSP的嵌入式应用中,存储器系统逐渐成为功耗的主要来源。例如Micron公司的MT48LC2Mx32B2-5 芯片 ,在读写时功耗最大可以到达924 mW,而大部分DSP的内核功耗远远小于这个数值。如TI的TMS320C55x系列的内核功耗仅仅为0.05 mW/MIPS。所以说,优化存储系统的功耗是嵌入式DSP极其重要的设计目标。本文主要以访问外部SDRAM为例来说明降低外部存储系统功耗的设计方法。   1 SDRAM功耗来源   SD
[电源管理]
便携设备<font color='red'>访问</font>片外<font color='red'>SDRAM</font>的低功耗设计研究
s3c2440内存控制器SDRAM基本测试
前面我们实验的LED和串口程序,是cpu发送地址给特定的寄存器,在寄存器中写相应的位,达到控制要求。 第一类是GPIO门电路如LED,第二类是协议类如串口,这些都不是cpu直接给地址信息,而是通过寄存器来控制的。 第三类是内存接口,cpu发出的地址可以直接传递给这种设备如nor flash,sdram,网卡。注意nand flash不属于这种类型。 关于SDRAM,可以参考这篇文章,这对于了解sdram很重要,非常有必要阅读一波。 《高手进阶,终极内存技术指南(完整/进阶版)》 这篇文章能够让你了解sdram这个内存介质。 然后,查看2440的芯片资料: 2440已经有针对sdram的控制器,2440可
[单片机]
<font color='red'>s3c2440</font><font color='red'>内存</font><font color='red'>控制器</font>与<font color='red'>SDRAM</font>基本测试
S3C2440内存控制器SDRAM
1、S3C2440中内存控制器的简单介绍 内存控制器的作用是什么,它有哪些特点? 内存控制器是怎么被CPU使用的? CPU的地址总线是怎么与存储类芯片进行连接的? 1、它的作用与特点如图1,以下是简单的翻译: S3C2440A内存控制器提供外部内存访问所需的内存控制信号。 S3C2440A具有以下特点: -小/大端(可由软件选择)。 -地址空间:每个BANK都有128Mb(总共1GB/8个BANK)。 -除BANK0的可编程总线位宽位(16/32位)外,其他的所有BANK的可编程总线位宽位有三种(8/16/32位)。 -总共8个BANK: BANK0 ~ BANK5 用于ROM、SRAM等。 BANK6 ~ BANK7 可
[单片机]
<font color='red'>S3C2440</font><font color='red'>内存</font><font color='red'>控制器</font>与<font color='red'>SDRAM</font>
s3c2440裸机-NorFlash1-原理
1.flash种类与特性: flash一般分为nand flash和nor flash,各自特性如下表: - Nor NAND XIP(片上执行) yes no 性能(擦除) 非常慢(5s,块太大) 快(3ms) 性能(写) 慢 快 性能(读) 快 快 可靠性 高 一般(容易出现位反转) 可擦除次数 10000 ~ 100000 100000 ~ 1000000 接口 与ram类似,可直接访问任意地址 I/O接口(无地址线,必须串行访问,命令、地址、数据共用8位IO) 易用性 容易 复杂 主要用途 常用于保存代码和关键数据 用于保存数据 价格 高 低 容量 小 大 常用文件系统类型 jffs yaffs
[单片机]
s3c2440裸机-代码重定位-2-编程实现
代码重定位(2.编程实现代码重定位) 1.引入链接脚本 我们上一节讲述了为什么要重定位代码,那么怎么去重定位代码呢? 上一节我们发现 arm-linux-ld -Ttext 0 -Tdata 0x30000000 这种方式编译出来的bin文件有800多M,这肯定是不行的,那么需要怎么把.data段重定位到sdram呢? 可以通过AT参数指定.data段在编译时的存放位置,我们发现这样指定太不方便了,而且不好确定要放在bin文件的哪个位置。这里就要引入链接脚本,它可以帮我们解决这个不必要的麻烦。 链接脚本格式 格式如下图: 我们来看一个具体的例子: SECTIONS { . = 0x00000000; //表示当前
[单片机]
s3c2440裸机-异常中断2-und未定义指令异常
1._und(未定义指令异常)介绍 我们之前分析过5种异常,那么如何进入未定义指令异常,当然是cpu读取指令发生异常,出现了指令解析异常。 我们先来看下当cpu解析到什么样的指令才会触发未定义指令异常呢? 从上面的arm指令格式中可知,只要指令码属于划线的格式,就属于未定义指令异常。 2.汇编向c函数传参 我们知道汇编给C语言函数传参是通过r0,r1,...通过堆栈的方式去传递的参数,比如r0=1, r1=2;那么在被调用的c函数中argv0就是r0, argv1就是r1...,那么我们如果通过汇编给C函数传递字符串呢? 我们可以通过这样声明und_string为一个字符串: und_string: .stri
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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