Board logo

标题: SDRAM操作小结[转帖] [打印本页]

作者: linuxarm    时间: 2006-9-10 13:20     标题: SDRAM操作小结[转帖]

前几天看到有一个家伙问SDRAM的问题,什么地址线连接啊,操作啊,看完后,只能轻叹一声,菜鸟啊,估计SDRAM从来没使用过,只会使用普通的一些存储器的家伙。回想一下自己这3年来做过的系统,用了各种各样的存储器,想想是不是要小结一下,以至纪念我的技术岁月,因为以后打算开始混日子了。


1,SDRAM的地址线,


在我们一般用的什么SRAM啊,PSRAM啊,RAM啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如有11根地址线,那寻址空间就是2的11次方减1。但是SDRAM是分列地址和行地址的,行、列地址线是复用的,所以有时候我们看到说寻址空间有多大多大,但是看看地址线怎么就那么几根啊,呵呵。SDRAM一般还有2根BANK的线,分成4个BANK,在有的处理器的SDRAM控制模块中,这两根线可能映射到地址线的某两根去。一般芯片常按照以下方式写芯片的配置,比如4Meg x 4 x 16,那这个芯片就是256Mbits。其中16指数据线是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后面要做一个读的操作,这个操作最主要的是在SDRAM的寻址空间里设置的地址必须是A10是高的。


在输入Auto-refresh命令后,一般要跟几句空操作或者读什么之类的,反正要达到延迟的目的,以使得SDRAM有时间来完成refresh。


之后就是要设置SDRAM的模式寄存器,这个寄存器里一般设置了burst长度,CAS,burst类型,操作模式,还有是设置SDRAM是工作在单个读写操作还是burst操作下。而这个寄存器的设置也是通过地址线来设置的,所以在发出Load Mode Register命令后要做一个操作可是使得在SDRAM的地址线上出线的值就是你要设置的值。这里很有必要提醒的一下的是,这个操作是8位的操作,切记切记。


设置完模式寄存器后就进入正常操作模式。


实际上具体的操作要跟选用的处理器的SDRAM控制模块相结合来设置。对于这些初始化命令比较直观的理解就是拿逻辑分析仪来分析。


 


在这里需要提醒一下CAS这个参数很重要。还有SDRAM必须要刷新的,因此刷新频率可以按照手册算出来的,但是设置的高一点也是可以的。常常SDRAM都有工作频率,但是也可以工作在低一点的频率上,比如PC133的,你工作到100也是可以的,设置基本不需要修改。


 


3,其他


我们有时候看到有的原理图上数据线有倒过来接的,其实这个无所谓的,反过接,写进去的就是反的,但是读出又反了一下,反反两次正好没反。


延伸一下到DDR,其实DDR就是SDRAM外面加了一个乌龟壳。因此初始化是一样的。当然DDR一是多了一个把时钟频率反相的时钟,因此有2个相位差180度的时钟。这两个一般都是用同一个时钟源产生,一致性会比较好。还有多了2个DQS,这个也是一个时序要求,一般CPU的控制模块都有设置好了。如果你使用的CPU不含有控制模块,那用FPGA去做一个控制模块的话,那就要好好研究时序了。


 


在有些处理器的控制模块中,由于EMI的设置,地址线映射关系复杂,因此推算会比较麻烦,一般如果没有什么映射的话,还是很容易操作的。


作者: luogongqiang    时间: 2006-11-26 09:55

不错!就是东西还是比较少!


作者: 窗的颜色    时间: 2006-11-28 22:34

已经非常好拉呵呵


作者: zorone    时间: 2010-7-28 13:39

学习  ,,,,等待楼主更多的讲解
作者: 一十一点七    时间: 2010-7-30 00:42

有没下载地址阿~~(另外,太监了的,就不用推荐了,只要完本哦)
作者: 地狱虫虫    时间: 2010-7-30 00:43

看得出楼主有一定功力,红心支持,呵呵。不信消息,这条最适用,包括任何方面的。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0