SDRAM初始化

上传人:豆浆 文档编号:874784 上传时间:2017-05-20 格式:DOCX 页数:7 大小:17.70KB
返回 下载 相关 举报
SDRAM初始化_第1页
第1页 / 共7页
SDRAM初始化_第2页
第2页 / 共7页
SDRAM初始化_第3页
第3页 / 共7页
SDRAM初始化_第4页
第4页 / 共7页
SDRAM初始化_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《SDRAM初始化》由会员分享,可在线阅读,更多相关《SDRAM初始化(7页珍藏版)》请在金锄头文库上搜索。

1、1, SDRAM 的地址线, 在我们一般用的什么 SRAM 啊,PSRAM 啊,RAM 啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如有 11 根地址线,那寻址空间就是 2 的 11 次方。但是 SDRAM 是分列地址和行地址的,行、列地址线是复用的,所以有时候我们看到说寻址空间有多大多大,但是看看地址线怎么就那么几根啊,呵呵。SDRAM 一般还有2 根 BANK 的线,分成 4 个 BANK,在有的处理器的 SDRAM控制模块中,这两根线可能映射到地址线的某两根去。一般芯片常按照以下方式写芯片的配置,比如 4Meg x 4 x 16,那这个芯片就是 256Mbits。其中 16

2、指数据线是16 根,中间一个 4 是只分 4 个 BANK, 每个 BANK 是4Meg。 2 ,SDRAM 的初始化 SDRAM 上电后使用前必须要经过一段初始化操作才可以使用。这个操作过程是标准的过程。这个过程如下 A: precharge B: auto-“refresh” C: Load Mode Register D: Normal Read/Write 在上电后输入初始化命令值前,最少要 100us 延迟(这个其实很容易满足,呵呵)。 在输入 precharge 命令后,因为必须是对所有 BANK进行 Precharge,所以 A10 这个管脚要设置成高,因此在 Precharge

3、 后面要做一个读的操作,这个操作最主要的是在 SDRAM 的寻址空间里设置的地址必须是 A10 是高的。 在输入 Auto-“refresh”命令后,一般要跟几句空操作或者读什么之类的,反正要达到延迟的目的,以使得 SDRAM 有时间来完成“refresh”。 之后就是要设置 SDRAM 的模式寄存器,这个寄存器里一般设置了 burst 长度,CAS,burst 类型,操作模式,还有是设置 SDRAM 是工作在单个读写操作还是 burst 操作下。而这个寄存器的设置也是通过地址线来设置的,所以在发出 Load Mode Register 命令后要做一个操作可是使得在 SDRAM 的地址线上出线

4、的值就是你要设置的值。这里很有必要提醒的一下的是,这个操作是 8 位的操作,切记切记。 设置完模式寄存器后就进入正常操作模式。 实际上具体的操作要跟选用的处理器的 SDRAM 控制模块相结合来设置。对于这些初始化命令比较直观的理解就是拿逻辑分析仪来分析。 在这里需要提醒一下 CAS 这个参数很重要。还有SDRAM 必须要刷新的,因此刷新频率可以按照手册算出来的,但是设置的高一点也是可以的。常常 SDRAM 都有工作频率,但是也可以工作在低一点的频率上,比如PC133 的,你工作到 100 也是可以的,设置基本不需要修改。 3 ,其他 我们有时候看到有的原理图上数据线有倒过来接的,其实这个无所谓

5、的,反过接,写进去的就是反的,但是读出又反了一下,反反两次正好没反。 延伸一下到 DDR,其实 DDR 就是 SDRAM 外面加了一个乌龟壳。因此初始化是一样的。当然 DDR 一是多了一个把时钟频率反相的时钟,因此有 2 个相位差 180 度的时钟。这两个一般都是用同一个时钟源产生,一致性会比较好。还有多了 2 个 DQS,这个也是一个时序要求,一般 CPU 的控制模块都有设置好了。如果你使用的 CPU不含有控制模块,那用 FPGA 去做一个控制模块的话,那就要好好研究时序了。 在有些处理器的控制模块中,由于 EMI 的设置,地址线映射关系复杂,因此推算会比较麻烦,一般如果没有什么映射的话,还

6、是很容易操作的。4,补充:SDRAM 的自动刷新和自刷新刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self Refresh,简称 SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于 AR, SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址,或者说 CAS 在 RAS 之前有效。所以,AR 又称 CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有 L-Bank,因此在刷新过程中,所有L-Bank 都停止工作,而每次刷

7、新所占用的时间为 9 个时钟周期(PC133 标准),之后就可进入正常的工作状态,也就是说在这 9 个时钟期间内,所有工作指令只能等待而无法执行。64ms 之后则再次对同一行进行刷新,如此周而复始进行循环刷新。显然,刷新操作肯定会对SDRAM 的性能造成影响,但这是没办法的事情,也是DRAM 相对于 SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价。 SR 则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是 STR(Suspend to RAM,休眠挂起于内存)。在发出 AR 命令时,将 CKE 置于无效状态,就进入了 SR 模式,此时不再依靠系统时钟工作

8、,而是根据内部的时钟进行刷新操作。在 SR 期间除了 CKE 之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使 CKE 有效才能退出自刷新模式并进入正常操作状态。SDRAM 的初始化我看到有两种初始化方法,在等待时间和刷新次数上有所不同。可能是因为芯片的不同。法一:(1) 电源和时钟稳定;(2) 至少等待 100us 以稳定内部电路,在此期间至少发出一次 NOP 操作;(3) 用 PRECHARGE 命令对所有的 Bank 充电(A10 设为高) ,使所有的 Bank 都处于 IDLE 状态;(4) 执行两次 AUTO REFRESH 自动刷新操作;(5 )设置工作模式寄存器并

9、等待 20ns,此时 SDRAM 初始化完毕并进人 IDLE 状态。法二:(1 )上电后,保持 200us 稳定时间;(2 )对器件的所有 Bank 发预冲命令;(3 )发出八个自动刷新命令;(4 )发出模式设置命令来设置器件的工作模式。两个命令之间要有几个空操作,使命令有时间执行完操作。具体间隔看芯片手册。DDR SDRAM 的初始化(1 )上电,时钟稳定后经过 200s 延时,执行一次空操作(DESELECT 或 NOP 命令)且CKE 为高。(2 )对所以块进行预充电(PRECHARGE ALL 命令) 。(3 )设置扩展模式寄存器(LMR 命令且 BA1 为低电平 BA0 为高电平)使能 DLL(延时锁相环) 。(4 )设置模式寄存器(LMR 命令且 BA1,BA0 均为低电平)复位 DLL。(5 )执行一次预充电命令(PRECHARGE ALL), 所以的块进入空闲(idle)状态。(6 )再经过两个自刷新(Auto refresh)命令后再次设置模式寄存器设置操作模式(7 )延时 200 个周期,因为在设置模式寄存器复位 DLL 后必须经过 200 个周期才能够执行读操作。其实是第三步设置扩展模式寄存器到 DDR SDRAM 开始工作输入的命令之间要延时 200 个周期。第七步再延时也可,多延时几个周期不会产生问题,别少延时了。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号