当前位置:网站首页>【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地址,行列地址
时间参数配置:
配置完成后点击保存
例化模板:
边栏推荐
猜你喜欢
基于改进YOLOv5轻量化的烟火检测
DNS separation resolution and intelligent resolution
2022-08-10 第六小组 瞒春 学习笔记
How does MSP430 download programs to the board?(IAR MSPFET CCS)
EasyCVR接入海康大华设备选择其它集群服务器时,通道ServerID错误该如何解决?
二叉树相关代码题【较全】C语言
A large horse carries 2 stone of grain, a middle horse carries 1 stone of grain, and two ponies carry one stone of grain. It takes 100 horses to carry 100 stone of grain. How to distribute it?
Design and Realization of Employment Management System in Colleges and Universities
Salesforce disbands the Chinese team, which CRM product is more suitable for the Chinese
云平台下ESB产品开发步骤说明
随机推荐
pathman_config、pathman_config_params 删除后,如何重建?
Typescript study notes | Byte Youth Training Notes
uni-app - 获取汉字拼音首字母(根据中文获取拼音首字母)
console.log alternatives you didn't know about
正式发布丨VS Code 1.70
Roewe imax8ev cube battery security, what blackening and swelling are hidden behind it?
广州纸质发票再见!开住宿费电子发票即将全面取代酒店餐饮加油站发票
Paper Accuracy - 2017 CVPR "High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis"
互换性与测量技术-公差原则与选用方法
高校就业管理系统设计与实现
【LeetCode】Day112-重复的DNA序列
音频编解码,利用FAAC来实现AAC编码
Detailed explanation of VIT source code
C language recv() function, recvfrom() function, recvmsg() function
分布式和集群的区别和联系
C语言之自定义类型------结构体
I didn't expect MySQL to ask these...
Entity to Vo conversion
Meaning of df and df -lh
oracle的基数会影响到查询速度吗?