当前位置:网站首页>【FPGA】SDRAM
【FPGA】SDRAM
2022-08-11 03:28:00 【春风浅作序】
一、实验概述
1、概念理解
SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。是FPGA中常用的一种高速、大容量片外存储器。
同步、动态、随机是其性能特点的外在说明:
同步(Synchronous )是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准
动态(Dynamic )是指存储阵列需要不断的刷新来保证数据不丢失
随机(Random )是指数据不是线性依次存储,而是自由指定地址进行数据读写
2、实验目的

3、实验要求

4、存储器
(1)定义

计算机系统基本结构:
(2)工作原理
存储器基本结构示意图:
(3)容量计算

(4)容量扩展

a.位扩展

b.字扩展
深度加倍,由式子M*2^N可知,地址总线位宽加一位
c.位与字同时扩展

5、本存储器特点


SDRAM结构框图
基本参数
6、BANK、Row、Column
地址总线 行地址、列地址复用同一总线
数据总线 数据输入、数据输出复用同一总线
命令、数据、控制信号均在时钟上升沿锁存

BANK示意图

7、引脚介绍


二、操作指令
常用的 SDRAM 操作指令如下图:
1、禁止命令(Command Inhibit)
禁止命令 (Command Inhibit) ,其他数据手册也称为取消设备选择命令 (Device Deselect)。不论 SDRAM 处于何种状态,此命令均可被执行;执行此命令后,SDRAM 芯片不被选择,新的命令无法写入,但已经执行的命令不受影响。
2、无操作命令(No-operation)
无操作命令(No-operation),也可称为空命令、NOP命令。不论 SDRAM 处于何种状态,此命令均可被写 入,该命令给被选中的 SDRAM 芯片传递一个空操作信息,目的是为了防止 SDRAM 处于空闲或等待状态时,其他命令被写入。
3、配置模式寄存器命令(Load Mode Register)
配置模式寄存器命令(Load Mode Register),也被称为 Mode Reigister Set。此命令只有所有 Bank 均处于空闲状态时才可被写入,否则配置出错,而且在执行此命令后,SDRAM 必须等待相应的响应时间 tRSC(Register Set Cycle),模式寄存器配置周期)后,才可写入新的命令。
在写入此命令对 SDRAM 进行模式寄存器配置时,需要地址总线 A0-A11 辅助寄存器的模式设置,A0-A11 赋值不同对应寄存器配置不同模式,未使用的地址总线设置为低电平。 A0-A11 的不同赋值所对应的寄存器不同模式,具体见下图:
(1)突发长度(Burst Length)
突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Length,简称 BL)。地址总线的低三位 A0-A2 是突发长度的控制位,SDRAM 芯片的突发长度可设置为 1、2、4、8 和整页,单位为字节,整页表示一次突发传输一整行的数据量。
(2)突发类型
突发类型的设置位为 A3,可将突发类型设置为两类,顺序和隔行。一般将 A3 设置为低电平,选择顺序类型。
(3)列选通延时(CAS Latency)
列选通潜伏期是指从读命令被寄存到数据总线上到出现第一个有效数据之间的时钟周 期间隔,列选通潜伏期可被设置为 2 个或 3 个时钟周期,设置位为 A6,A5,A4。
(4)运行模式(Operating Mode)
运行模式设置位为 A7,A8,SDRAM 存在标准模式、测试模式等多种模式,但对于普通用户,只开放了标准模式,在使用 SDRAM 时只需将 A7,A8 设置为低电平进入标准模式.
(5)写模式
写模式设置位为 A9,控制 SDRAM 的写模式。当 A9 为低电平时,SDRAM 的读/写操 作均采用突发方式,突发长度由突发长度寄存器(A0-A2)设定;当 A9 位高电平时, SDRAM 的读操作依然采用突发方式,突发长度由突发长度寄存器(A0-A2)设定,但 SDRAM 的写操作不在使用突发方式,每一个写命令只能写入一个数据。
(6)A10-A12
A10-A12为保留位,对模式寄存器的配置不起作用,赋值为 0 即可。
4、预充电命令(Precharge)
预充电的作用就是关闭指定的Bank 或者全部Bank 中激活的行,预充电命令执行 后,必须等待对应的等待时间 tRP(tRP(Precharge command Period),预充电命令周期),相对应的 Bank 将可以被重新操作。
预充电命令(Precharge)命令包括两类:全部预充电(Precharge All)和指定Bank 预充电 (Precharge Bank),当 A10 为高电平发送预充电命令时,执行全部预充电命令,对所有的 Bank 进行预充电;当 A10 为高电平发送预充电命令时,只对由 BA[1:0]选定的 Bank 进行预充电。
5、刷新命令(Refresh)
SDRAM 只有通过刷新操作才能保证数据的可靠性,SDRAM 的刷新操作是周期性的,在两次刷新的间隔可以进行数据的相关操作。我们在看SDRAM芯片参数时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表 这个芯片中每个Bank的行数。
刷新命令一次仅对一行有效,也就是说在64ms内这两种规格的 芯片分别需要完成4096次和8192次刷新操作。这4096操作可以平均15.625μs刷新一次,也可以一次全部刷新完,却决于你的数据读写时序。
6、数据掩码
如果突发长度BL=4,那么也就是说一次就传送4笔数据。 但是,如果其中的第二笔数据是不需要的,怎么办?还要传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪 些输出或输入的数据。为了精确屏蔽一个数据总线位宽中的每个字节,每个DQM信号线对应一个字节(8bit)。
7、等待时间参数
以下时间参数根据芯片的不同可能存在差异:
tRP:PRECHARGE command period,发送预充电指令后进行下一个操作需要等待的时间
tRFC:AUTO REFRESH period,发送自动刷新指令后进行下一个操作需要等待的时间
tMRD:LOAD MODE REGISTER command to ACTIVE or REFRESH command,发送设置模式寄存器指令后进行下一个操作需要等待的时间
刷新优先级高于读写优先级,但正在读写时,不刷新,等读写完成后再刷新
三、项目设计
1、状态机设计

WAIT:上电等待,200us
PRECH:预充电
AREF:自动刷新
MRS:模式寄存器设置
ACTI:行激活
READ、WRITE:列读、写
2、项目需求

3、设计方案

时钟有一定的偏移是因为,若以控制器的时钟进行采样,则可能采到不稳定的命令(命令随控制器时钟的上升沿变化,若不偏移,在此上升沿采到的数据不稳定)
模块框图如下所示:
sdram_ctrl与sdram_interface通过avalon_mm接口连接
4、信号列表
顶层模块

sdram_ctntroller模块

四、项目源码
1、sdram_interface
ip核配置步骤如下:

配置存储器参数。
数据位宽,bank地址,行列地址
时间参数配置:

配置完成后点击保存
例化模板:

边栏推荐
猜你喜欢

CTO说MySQL单表行数不要超过2000w,为啥?

rac备库双节点查询到的表最后更新时间不一致

2022-08-10 第六小组 瞒春 学习笔记

leetcode: 358. Reorder strings at K distance intervals

QueryDet: Cascading Sparse Query Accelerates Small Object Detection at High Resolution

Rotary array problem: how to realize the array "overall reverse, internal orderly"?"Three-step conversion method" wonderful array

轮转数组问题:如何实现数组“整体逆序,内部有序”?“三步转换法”妙转数组

常用认证机制

Qnet弱网测试工具操作指南

Qnet Weak Network Test Tool Operation Guide
随机推荐
获取链表长度
Idea (preferred) cherry-pick operation
What does the sanction of the mixer Tornado mean for the DeFi market?
常用认证机制
【愚公系列】2022年08月 Go教学课程 035-接口和继承和转换与空接口
A brief analysis of whether programmatic futures trading or manual order is better?
LeetCode Hot Questions (12. The Best Time to Buy and Sell Stocks)
互换性测量技术-几何误差
学编程的第十三天
STC8H development (15): GPIO drive Ci24R1 wireless module
程序化交易改变了什么?
Economic Misunderstandings in the Crypto World: Is Cash a Savings?Scarcity creates value?
21天学习挑战赛第一周总结
[DB operation management/development solution] Shanghai Daoning provides you with an integrated development tool to improve the convenience of work - Orange
(CVPR - 2017) in depth and potential body learning context awareness feature for pedestrian recognition
Unity2D animation (1) introduction to Unity scheme - animation system composition and the function of use
CSDN 博客更换皮肤
互换性与测量技术——表面粗糙度选取和标注方法
The "top pillar" slides, and new growth is extremely difficult to shoulder the heavy responsibility. Is Ali "squatting" to jump higher?
STC8H开发(十五): GPIO驱动Ci24R1无线模块