集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2003|回复: 5

SDRAM理论基础讲解

[复制链接]
晓灰灰 发表于 2017-3-24 11:07:44 | 显示全部楼层 |阅读模式
一、SDRAM常识性知识普及

关于SDRAM的基本概念,在这先引用《终极内存指南》这篇文章中的一段话,

“SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证存储的数据不丢失,因为SDRAM中存储数据是通过电容来工作的,大家知道电容在自然放置状态是会有放电的,如果电放完了,也就意味着SDRAM中的数据丢失了,所以SDRAM需要在电容的电量放完之前进行刷新;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。”

这只是对SDRAM的概念介绍,下面再简单的看一下SDRAM的内部结构。
对于SDRAM的内容结构,就如同Excel的表格:

其中的一个小表格就是SDRAM内部的一个存储单元,而要确定这个存储单元的为止,只需要知道行地址(row  address)和列地址(col  address)就可以了。

这样的一张表格就相当于是SDRAM的一个Bank,一般SDRAM有4个Bank,也就是相当于有4张这样的表格。

所以SDRAM的容量计算方式为:
SDRAM容量 = 数据位宽 x 存储单元数量(行地址 x 列地址 x Bank数)

二、SDRAM引脚介绍

讲SDRAM的引脚,就必须要看SDRAM的datasheet。


三、学习SDRAM初始化的配置过程

对于的初始化,也是需要参考官方文档的。

对于初始化过程,首先需要有200us的一个延时,在延时满足之后,给一次Precharge命令,之后再给两次Auto-refresh命令,最后进行模式寄存器配置。

当然对于这些命令与命令之间的延时参数,也是需要结合文档来确定的。

在设置模式寄存器的时候,需要配置潜伏期、突发类型、突发长度这几个参数。这几个参数是在进行配置命令时给addr这些引脚赋值决定的。

四、编写SDRAM初始化模块并进行仿真

对于SDRAM初始化模块的编写,我们可以先学习下SDRAM的初始化时序图,然后再根据时序图设计初始化模块的时序。

下边是简单设计的一个时序图:

对这个时序图,相信大家已经不用太多的解释就可以看懂了。

关于初始化模块的代码,就由大家自己来完成了哦。

编写完代码后,就进入到了SDRAM的仿真阶段,仿真的话,需要用到SDRAM的仿真模型,并且修改对应的参数。

在例化好模块之后,可以先让Modelsim运行201us,若初始化模块编写正确,就可以再Modelsim中看到如下的打印信息了:

这些信息中包含了模式寄存器的配置信息。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 晓灰灰 发表于 2018-3-26 14:41:06 | 显示全部楼层
SDRAM理论基础讲解
zxopenhl 发表于 2018-3-27 15:05:11 | 显示全部楼层
谢谢楼主分享!
wang3613 发表于 2018-3-27 18:00:47 | 显示全部楼层

谢谢楼主分享!
大鹏 发表于 2022-5-23 14:22:57 | 显示全部楼层
SDRAM理论基础讲解
zxopenhl 发表于 2022-5-26 16:54:05 | 显示全部楼层
SDRAM理论基础讲解
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 09:45 , Processed in 0.061376 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表