前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SDRAM随机读写控制器

SDRAM随机读写控制器

作者头像
数字积木
发布2021-04-15 10:51:06
7880
发布2021-04-15 10:51:06
举报
文章被收录于专栏:数字积木

1,SDRAM控制模块介绍

SDRAM,同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)。SDRAM利用内部的电容来储存数据,具有较高容量,成本低的优点。在FPGA设计中,与FPGA的片上储存空间(十到百KB量级,较高级的FPGA拥有上MB的片上储存空间)相比,SDRAM拥有较大的储存空间(10MB量级到100MB量级均有)。故SDRAM可用来储存大容量的数据,在图像处理时有着大量的应用。

常见的SDRAM控制器代码都是基于连续突发读写模式的,在需要传输连续地址的大批量数据时十分方便。但是需要进行随机的地址读写时,突发读写的控制器便不方便使用。例如将SDRAM作为CPU的内存模块使用时,常常需要访问和修改随机地址的数据,故需要设计SDRAM随机读写控制器。

本文介绍SDRAM的基本知识后,详细介绍SDRAM随机读写控制器的设计和使用。本SDRAM随机读写控制器是基于altera的nios ii 处理器的sdram控制器设计而成。用户端基于Avalon-MM接口进行控制。

2,控制器的端口描述

常见的SDRAM的引脚如下图所示:

各个引脚的功能如下:

CLK:

SDRAM工作的时钟,并且所有的输入信号都是在CLK的上升沿进行检测的,也就是说我们给SDRAM给的任何命令,一定要在CLK的上升沿保持稳定,以免SDRAM获取我们给出的命令时出现错误。

CKE:

时钟使能信号,是用来控制SDRAM内部时钟是否工作的一个信号(在SDRAM内部也是有时钟的哦)

CS:

片选信号,这里需要注意的是,如果要对SDRAM进行操作,必须要将片选信号拉低

BA0,BA1:

Bank地址线,用来给bank的地址,可以控制SDRAM的4个bank

A0~A11:

地址线,当我们选择SDRAM某个Bank的Row地址的时候,需要到12根地址线(A0~A11);当选择Col地址的时候,只用A0~A8这9根线;A10这个信号可以用来控制Auto-precharge。

RAS、CAS、WE:

这三根线就是用来给SDRAM发命令的,包括初始化、读、写、自动充电等命令。

UDQM、LDQM:

数据输入/输出掩码。

DQ0~DQ15:

SDRAM的数据线,为双向的,向SDRAM写数据或者从SDRAM中读出来的数据都是在DQ上进行传输的

3,SDRAM操作流程

SDRAM的操作步骤可分为如下几项:

  • 上电延时等待。
  • 芯片初始化,配置操作模式。
  • 行地址有效。
  • 列读写。
  • 数据输出(读)。
  • 数据输入(写)。
  • SDRAM的自动刷新操作。

首先,芯片上电后延时等待大约200us的时间,然后进行芯片的初始化,进行操作模式配置。初始化成功后便可以进行数据的读写操作。在进行数据读写时,先进行行选中,然后进行列选中,同时根据控制端口的信号,进行数据的读或写操作。读和写操作可以配置成突发模式,一次可以连续传输多个数据。每个操作都需要延迟一定的时钟周期。

另外,还需要对芯片进行定期的刷新操作,以保证SDRAM内部的数据不被丢失,两次刷新之间的最大时间间隔为15us。同时提醒大家,SDRAM每进行一次刷新,是对每一行进行操作的,并不是单独针对每一个电容进行充电,所以每进行一次刷新,该行中的电容进行充电我们可以理解为是同步发生的。

在进行不同的操作步骤时,都有对应的控制指令,用以区分这些操作步骤,下面介绍控制指令。正常操作下,保持CKE=1,CSn=0。

初始化操作过程如下

具体步骤为:一次预充电--->两次自刷新--->模式配置。每一次操作之间都要有一定的延迟时间。

4,模块接口描述

该控制器的功能方块图如下所示:

SDRAM端口外接到SDRAM芯片。Avalon-MM为用户控制信号。SDRAM的端口不在介绍。下面介绍下Avalon-MM接口。

Avalon 接口是 Altera FPGA的Qsys软核系统使用的总线协议。Avalon-MM是Avalon Memory Mapped Interface的简称,是基于地址读写典型的主从连接关系的接口。Avalon-MM 接口信号类型,如下表所示。

在该控制模块中,使用的端口如下。

5,数据读写操作流程

上电启动后,控制模块会自动完成sdram的初始化,模式配置,并自动进行周期性自刷新。用户只需要利用Avalon-MM接口便可以进行数据的读写。

写数据操作:进行写数据操作时,将写地址和写数据放置在az_addr和az_data端口,同时将写使能信号az_wr_n置低,直到za_waitrequest信号为低时,数据写入成功,然后将写使能信号az_wr_n置高即可。

读数据操作:进行读数据操作时,将读地址放置在az_addr端口,同时将读使能信号az_rd_n置低,等到返回数据有效信号za_valid为高时,有效的读数据在za_data端口输出,然后将读使能信号az_rd_n置高即可。此时数据读操作完成。

空闲时,保持写使能信号az_wr_n和读使能信号az_rd_n为高。

6,在线调试波形图

利用该模块,建立一个sdram设计读取的dome,并利用signaltap工具进行在线调试,抓取模块运行时的波形。

(1)初始化时序图

该模块在运行初始化时,进行了1次预充电,7次自刷新,和一次模式寄存器配置。

(2)初始化寄存器配置

在进行模式配置时,由于是对数据进行随机地址读写,不需要进行数据的连续传输,即将突发长度配置为1即可,使得每次只读写一个数据。

(3)自动刷新

初始化配置完成后,该模块便自动进行周期的自刷新操作。

(4)读数据操作

(5)写数据操作

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字积木 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,SDRAM控制模块介绍
  • SDRAM,同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)。SDRAM利用内部的电容来储存数据,具有较高容量,成本低的优点。在FPGA设计中,与FPGA的片上储存空间(十到百KB量级,较高级的FPGA拥有上MB的片上储存空间)相比,SDRAM拥有较大的储存空间(10MB量级到100MB量级均有)。故SDRAM可用来储存大容量的数据,在图像处理时有着大量的应用。
  • 2,控制器的端口描述
  • 4,模块接口描述
  • 6,在线调试波形图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档