SDRAM 的工作原理 (基于JZ2440开发板)

  1. SDRAM 介绍
    SDRAM (Synchronous Dynamic Random Access Memory,同步动态随机存储器),即内存。DDR 内存,DDR2内存,DDR3内存是SDRAM的升级,大部分显卡上的显存也是SDRAM;
    内存一般是代码的执行空间,程序则是以文件的形式保存在硬盘里面的。运行程序之前,操作系统先将程序载入内存,在内存里面执行程序。由于内存是RAM(随机访问),可以通过地址去定位一个字节的数据,CPU在执行程序时将PC的值设置为程序在内存中的开始位置,之后CPU一次到内存地址中取址、译码和执行。要让程序在内存里面运行必须先对内存进行初始化,未初始化的内存是不能用来读取和存储数据的。

  2. ROM 和 RAM 的区别
    ROM(Read Only Memory):只读存储器,只能读出事先所存数据的固态半导体存储器。其特点是不能更改存储器内部的数据。适用于不需经常变更资料的系统里。其内的数据不会因为掉电而消失‘
    RAM (Random Access Memory) :随机访问寄存器,可以随意取出或存入数据,且存取的速度与存储单元的位置无关。当你给定一个随机有效的访问地址,RAM就会返回其内部存储的内容(随机寻址),访问速度与地址无关。掉电时将失去数据,主要用于存储短时间内随机访问的程序。计算机系统里内存地址一般是四字节对齐的地址(32位机),CPU的取指、执行、存储都是通过内存的;

    RAM又分为动态随机存储器(DRAM) 和 静态随机存储器(SRAM)。
    1)DRAM
    其基本元件为小电容,电容是否带电表示0和1。由于电容有放电的特性,需要定期为其充电,否则数据会丢失。一般应用于PC的内存、SDRAM,DDR,DDR2,DDR3等;
    2)SRAM
    他是一种具有静止存取功能的内存,不需要刷新电路就可以保存数据,因此存取速度快,但是体积大,功耗大,成本高,适用于CPU的L1cache 和 L2cache(一级缓存、二级缓存),寄存器等;

  3. JZ2440 开发板里面的存储介绍
    JZ2440搭载了三种存储介质:
    1)NOR Flash(2M):ROM存储器,用来保存BootLoader,引导系统启动;
    2)NAND Flash(256M):保存操作系统映像和文件系统;
    3)SDRAM(64M):内存,执行程序;

    NOR Flash:其特点是可以让应用程序直接在Flahs 闪存内运行,不必再把代码读到RAM中,可以随机寻址。NOR Flash成本高;
    NAND Flash:提供高的单元密度,写入和擦除的速度很快。其成本低,可以做嵌入式的数据存储介质,如手机存储卡,SD卡;

  4. S2C2440 的地址空间
    2440 对外引出了17根地址线Addr0~Addr26,最多只能寻址2^27 = 128MB. 而2440的寻址空间为1GB,这是因为寻址空间被分为8个Banks(Bank0~Bank7),其中每一个Bank对应一个片选信号线(nGCS0~nGCS7)。综上所述,2440 可以通过27根地址线和8根片选线,访问1GB的地址。

  5. SDRAM 的存储结构
    CPU提供的一组用于SDRAM的信号:
    1)SDRAM 的时钟有效信号SCKE;
    2)SDRAM 的时钟信号SCLK0, SCLK1;
    3)数据掩码信号DQM0, DQM1,DQM2,DQM3;
    4)SDRAM 的片选信号;
    5)SDRAM 的行地址选通脉冲信号nSRAS;
    6)SDRAM 的列地址选通脉冲信号nSCAS;

    SDRAM 的内部是一个存储阵列,类似表格一样,有行、列之分。这样我们要访问一个单元,就要先指定一个行地址和一个列地址。这里的单元一般称为存储单元,而整个表格称为逻辑Bank(Logical Bank,L-BANK),一般1个SDRAM里面有4个L-Bank。SDRAM 的逻辑结构如下图所示:
    在这里插入图片描述

  6. JZ2440 开发板的SDRAM 电路图

    JZ2440 选用2片32MB,16位的SDRAM芯片,构成一个64MB,32位的内存,原理图如下。行地址和列地址共用Addr2-Addr14这13条地址线。其中行地址输为13,列地址数为9,通过信号线nSRAS和nSCAS两根线来区分行地址和列地址。SDRAM 共有4个BanK,通过地址线Addr24和Addr25 来选择。SDRAM 是16位的芯片,1 个地址里面有2个字节工16位的bits。

在这里插入图片描述
1)为什么1个芯片的内存容量是32MB 字节?
(2^13) × (2^9) ×4×16/8 = 32M Bytes。
2)为什么SDRAM的A0引脚连线接的是2440 的Addr2?
因为2440 认为1个地址对应1个字节,而SDRAM此时组成32位的,认为1个地址对应4个字节。Addr0 和Addr1两个地址线对32位的SDRAM无效;

猜你喜欢

转载自blog.csdn.net/weixin_42547860/article/details/88998037