SDRAM实战篇—SDRAM读写

SDRAM实战篇—SDRAM读写

  • 一、SDRAM简介
    • 1、存储器类型
    • 2、SDRAM
    • 3、SDRAM内部结构
    • 4、存储单元
    • 5、功能框图
  • 二、SDRAM操作时序
    • 1、初始化
    • 2、读写操作
    • 3、刷新
  • 三、程序设计
    • 1、实验任务
    • 2、设计思路
    • 3、状态机设计
    • 4、模块功能及实现

一、SDRAM简介

1、存储器类型

存储器:程序运行过程中,用于存储数据的器件;可以存放不同类型的数据
SDRAM实战篇—SDRAM读写_第1张图片

2、SDRAM

  • 英文名:Synchronous Dynamic Random Access Memory
  • 中文名:同步动态随机存储器
  • 优点:空间存储量大、读写速度快、价格相对便宜
  • 缺点:控制逻辑复杂

3、SDRAM内部结构

SDRAM寻址
SDRAM实战篇—SDRAM读写_第2张图片
指定行地址与列地址,找到存储单元

SDRAM的存储空间被划分为4个L-Bank,在寻址时需要先指定其中一个L-Bank,然后在选定的L-Bank中选择相应的行与列进行寻址。

SDRAM存储容量
SDRAM实战篇—SDRAM读写_第3张图片
S D R A M 总 存 储 容 量 = L − B a n k 的 数 量 × 行 数 × 列 数 × 存 储 单 元 的 容 量 SDRAM总存储容量=L-Bank的数量×行数×列数×存储单元的容量 SDRAM=LBank×××

4、存储单元

结构示意图
SDRAM实战篇—SDRAM读写_第4张图片

行地址与列地址选通使得存储电容与数据线导通,从而可进行放电(读取)
与充电(写入)操作。

5、功能框图

SDRAM功能框图
SDRAM实战篇—SDRAM读写_第5张图片

二、SDRAM操作时序

1、初始化

SDRAM芯片上电之后需要一个初始化的过程
SDRAM实战篇—SDRAM读写_第6张图片
模式寄存器设置
SDRAM实战篇—SDRAM读写_第7张图片

2、读写操作

行激活
无论是读操作还是写操作,都要先激活(Active)SDRAM中的一行,使之处于有效状态,因此又称行有效【#代表低电平有效】
SDRAM实战篇—SDRAM读写_第8张图片

SDRAM芯片的“片选”和L-Bank的“定址”与行激活同时进行。

列读写
行地址激活之后,需要对列地址进行寻址。读写命令是与列地址信号同时发出的
SDRAM实战篇—SDRAM读写_第9张图片
发送列读写命令时必须要与行激活命令有一个时间间隔,这个时间间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟)
SDRAM实战篇—SDRAM读写_第10张图片
数据输出(读)
在CAS发出之后,要经过一定的时间才能有数据输出。
SDRAM实战篇—SDRAM读写_第11张图片
数据输入(写)
数据与写指令同时发送。数据并非即时的写入存储单元,数据的真正写入需要一定的周期。【为了保证数据的可靠写入,都会留出足够的写入/校正实际(tWR),这个操作也被称为写回】
SDRAM实战篇—SDRAM读写_第12张图片
突发长度
突发是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度。【BL】
SDRAM实战篇—SDRAM读写_第13张图片

在MRS(模式寄存器设置)阶段除了要设定BL数值之外,还需要确定“读/写操作模式”以及“突发传输模式”

数据掩码—写
在突发传输过程中,为了屏蔽不需要的数据,采用了数据掩码【DQM0】技术

通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。

SDRAM实战篇—SDRAM读写_第14张图片
写入时,DQM与写入命令一样是立即生效。
数据掩码—读
在读取时DQM发出两个时钟周期后生效
SDRAM实战篇—SDRAM读写_第15张图片
预充电
在对SDRAM某一存储地址进行读写操作结束后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。
L-Bank关闭现有工作行,准备打开新的工作行的操作就是预充电(Precharge)
SDRAM实战篇—SDRAM读写_第16张图片
读写操作时,地址线A10控制着是否进行在读写之后对当前L-Bank自动进行预充电。
读取时预充电时序图
发出预充电命令后,要经过一段时间才能发送行激活命令打开新的工作行,这个间隔被称为tRP(预充电有效期)【CL=2,BL=4,tRP=2】
SDRAM实战篇—SDRAM读写_第17张图片
写入时预充电时序图
写操作时,预充电不能与写操作同时进行,必须要在tWR之后才能发出预充电命令,以确保数据的可靠写入,否则重写的数据可能是错的。【BL=4,tWR=1,tRP=2】
SDRAM实战篇—SDRAM读写_第18张图片

3、刷新

“动态”随机存储器就是因为它需要不断进行刷新才能保留数据,因此刷新是SDDRAM最重要的操作。
刷新操作与预充电类似,都是重写存储体中的数据。【同时刷新4个Bank中的某一行
SDRAM实战篇—SDRAM读写_第19张图片
自动刷新
自动刷新(AR)【Auto ReFresh】,SDRAM内部有一个行地址生成器(也叫刷新计数器)用来自动生成行地址。
每次刷新操作所需要的时间为自动刷新周期(tRC),在自动刷新指令发出后需要等待tRC才能发送其他指令。
自刷新
自刷新(SR)主要用于休眠模式低功耗状态下的数据保存。在发出AR指令时,将CKE置于无效状态,就进入了SR模式。
SR模式下SDRAM不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。

三、程序设计

1、实验任务

准备工作:

  • 硬件:正点原子FPGA开发板
  • 软件:Quartus18.1
  • SDRAM:W9825G6DH-6

任务:

  • 向开发板上的SDRAM中写入数据;
  • 从SDRAM存储空间的起始地址写;
  • 写完后再将数据读出;
  • 验证读出数据是否正确。

2、设计思路

系统框图
SDRAM实战篇—SDRAM读写_第20张图片
SDRAM控制器设计
SDRAM实战篇—SDRAM读写_第21张图片

3、状态机设计

初始化状态机
SDRAM实战篇—SDRAM读写_第22张图片
工作状态机
SDRAM实战篇—SDRAM读写_第23张图片

4、模块功能及实现

你可能感兴趣的:(FPGA,sdram)