Altera提供的sdram+ip+core应用小节.doc_第1页
Altera提供的sdram+ip+core应用小节.doc_第2页
Altera提供的sdram+ip+core应用小节.doc_第3页
Altera提供的sdram+ip+core应用小节.doc_第4页
Altera提供的sdram+ip+core应用小节.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Altera提供的sdram ip core应用小节1.SDRAM是一种高速高容量同步动态存储器。其原理介绍参考sdram原理和时序.pdf2.SDRAM时序控制SDRAM的正常操作包括:初始化(initialize),寄存器定义(register definition),激活(active),读(read),写(write),预充电(precharge),自动预充电(auto precharge),自发停止命令(Burst Terminate),自动刷新(auto refresh),自我刷新(self refresh),空操作(NOP)。2.1初始化(initialize)SDRAM上电后必须按一种确定的方式初始化。一旦SDRAM上的电压加至Vdd并且时钟稳定后,SDRAM需要有100us的时间不接受除NOP以外的任何命令。当100us过后,应该对SDRAM发出预充电(precharge)命令,使得SDRAM所有bank预充电,这样bank都进入idle状态。之后,要使SDRAM连续执行两个auto refresh 周期。当这两个周期完毕之后,就可以对SDRAM的模式寄存器(mode regester)进行操作。2.2寄存器定义(register definition)模式寄存器(mode regester)用来决定SDRAM用何种工作模式工作。模式寄存器(mode regester)定义了 :何种读写模式(burst 或 fullpage),burst长度(burst length),CAS延时。从下图看出,模式寄存器(mode regester)的M0-M2位定义了burst长度,M3定义了burst的类型(连续的或交叉存取的),M4-M6位定义了CAS延时。M7和M8定义工作模式。M9定义写burst模式。00000000000010001001112.3 激活命令(active) reada,writea激活命令用来打开某一特定bank的一row,BA0和BA1上的值选择了某个bank,地址线A0-A11的值对应着某一row。被激活的row在未接到precharge命令之前会保持原状态。如果需要切换bank地址进行操作,就必须在两个命令之间插入precharge命令。2.4 读(read)和写(whrit)操作读命令是在激活的一row上开始一个burst或fullpage读或写操作。BA 0 BA1上的值选择了bank,A0-A9 (x4), A0-A8 (x8), or A0-A7 (x16)选择了起始column地址。A10的值决定了是否选择autoprecharge模式。在模式寄存器中已经设置了读或写的工作方式。2.5 预充电(precharge)预充电命令用来使激活的row关闭。A10决定是只关闭一个bank或着全部的bank。在切换地址时,如果需要有bank的变动,需要在读写之前插入precharge命令。2.6 自动预充电(auto precharge) fullpage mode不支持autoprecharge,A10=0A10为1时, 除了在 burst工作模式下,在读或写结束后都会进行一次自动预充电。2.7自发停止命令(Burst Terminate)自发停止命令用于在一个连续的读或写命令中插入,提前结束这一串的数据的读或写。2.7 自动刷新(auto refresh)和自我刷新(self refresh)每过15.6us就refresh一次1行 一共212 故15.6us409664ms为保持SDRAM上的数据不丢失,必须定时刷新,刷新计数器决定了刷新的时间间隔,刷新计数器要保证每个单元都能按一定周期刷新。SDRAM提供两种类型的刷新模式:自动刷新和自我刷新。自动刷新在正常操作中进行,但不持久,因此需要定时进行刷新,这样就会占用系统资源,降低系统性能。而自刷新模式无需系统时钟就能保持数据不丢失。两种模式相比,自动刷新实现较为简单,而自刷新功耗更小。2.8 SDRAM操作指令指令对应于RAS_N,CAS_N,WE_N接口部件控制命令表3 ALTERA提供的通用SDRAM控制器的结构这是总体示意图,左边是用户操作端,右边则与SDRAM相连。该通用控制器由3部分组成,分别是:commend,control_interface,str_data_path。主要功能是将外部提供的read write precharge等命令转化为SDRAM理解的RAS_N,CAS_N,WE_N指令。1:control_interface功能:从CMD2:0接收外部指令,ADDR21:0接受地址,REF_ACK接收refresh的反馈信号。CM_ACK接收命令结束信号反馈。本模块将CMD编码信号转化为逐个的单个信号,将lode mode中的控制信息也存入寄存器。再传给下一级commend模块。2:commend功能:将上一级control_interface模块初步翻译过的单个控制命令翻译成RAS_N,CAS_N,WE_N组合的指令。并且将控制信息中的延时信息体现出来。OE是用来使能str_data_path模块中数据是否可以出现在数据线上的。只有当写有效时才会令其使能。特别指出的是如果外部输入的控制命令是read/write,则本模块将此命令转化为两步,先输出一个 RAS_N,CAS_N,WE_N组合的active 命令,再输出一个RAS_N,CAS_N,WE_N组合的 read/write命令。3:str_data_path功能:控制有效数据出现在数据线上,有OE提供使能。外部数据由此进入,SDRAM的数据也由此读出。该通用控制器具有极大的开放性,即没有归定死某个读写流程。但需要在外部加一个适合应用环境的状态控制模块来配合使用。该控制模块可以有使用者自由设计,只要读写时序正确,就可以正常使用SDRAM。相对于一些专用的控制器而言,其开放性还体现在模式控制的重新设定。比如在fullpage和burst方式间的切换,只要在100us的NOP命令之后重新做一次初始化命令即可。4 功能时序操作FULLPAGE 方式下SDRAM控制步骤:一 初始化:对SDRAM IP左端依次输入 10个clk的 nop命令(CMD=3b000),10个clk的precharge命令(CMD=3b100),20个clk的refresh命令,10个clk的precharge命令(CMD=3b011)。接下来写控制字:1 装载SDRAM模式寄存器-确定控制信息 CMD=3b101; ADDR=ASIZEb0000000000001000100111;2 装载REG2-选择fresh周期 CMD=3b111; ADDR=1000;3 装载REG1-确定控制信息 CMD=3b110; ADDR=ASIZEb0000000000000101111100;3者之间相隔10个CLK即可;二 写操作再执行完上述操作后,输入如下命令:CMD=3b010;-输入写命令ADDR=22b0000000000000000000000;-输入写地址执行写命令时我们设定一个计数器counter。在计数器counter=0时发出写命令,则在counter=5时写的数据是第一个有效数据,是可以读出来的。接着从5到260 共256个数据均为有效写数据。在第一个写有效信号发出后,要把发出NOP命令CMD=3b000。在数据接受完之前,counter=259时发出precharge命令CMD=3b100。维持prcharge的时间要延续 7个clk。二 读操作输入如下命令并启用计数器counter:CMD=3b001;-输入读命令ADDR=22b00000000000000000000000;-输入读地址在计数器counter=0时发出读命令,并发出地址信号,保持5个相同输出。8时读到第一个有效数据。在counter=5时CMD=3b000发出nop命令。这时都有数据读出。263时读出最后一个数据。但是必须在计数器counter=259时发出precharge命令。Fullpage模式下注意事项:1.refresh操作,full page的refresh的命令要靠你自己来发,这确实是一个英明的决策,因为只有把这个控制权交给你,你才会在既保证数据不会丢失的情况下,也能保证刷新的完成,给出refresh命令以后必须要注意一点就是后面必须给出一段空操作的延时,或者是读操作,要不然数据就会丢哦!2.关于precharge 和burst terminate 有一个小小的分歧。结束full page 读写操作用的是precharge的命令,如果在没有给出正确的refresh操作情况下, 其实实际中解析出来的却是burst terminate的波形,要再发一次precharge 才能真正的产生precharge 的波形。在refresh操作正确的情况下可产生正确的precharge波形。3.如果验证是不是读写正常,最好是一次大量写入很多的数据,然后再一次读出很多行,这样才能找到问题,如果是写一行就读出来,可能不容易发现问题的,就像上面提到的刷新,很可能会被写一行读一行的操作给掩盖掉!BURST8方式下SDRAM控制步骤:一 初始化:对SDRAM IP左端依次输入 10个clk的 nop命令(CMD=3b000),10个clk的precharge命令(CMD=3b100),20个clk的refresh命令(CMD=3b011),10个clk的precharge命令。接下来写控制字:1 装载SDRAM模式寄存器-确定控制信息 CMD=3b101; ADDR=ASIZEb0000000000000000110011;2 装载REG2-选择fresh周期 CMD=3b111; ADDR=1000;3 装载REG1-确定控制信息 CMD=3b110; ADDR=ASIZEb0000000001000001111111;3者之间相隔10个CLK即可;二 写操作再执行完上述操作后,输入如下命令:CMD=3b010;-输入写命令ADDR=22b0000000000000000000000;-输入写地址执行写命令时我们设定一个计数器counter。在计数器counter=0时发出写命令,则在counter=5时写的数据是第一个有效数据,是可以读出来的。接着从5到32 共8个数据均为有效写数据。在第一个写有效信号发出后,要把发出NOP命令CMD=3b000。在数据接受完之前,counter=31时发出precharge命令CMD=3b100。维持prcharge的时间要延续 7个clk。二 读操作输入如下命令并启用计数器counter:CMD=3b010;-输入写命令ADDR=22b00000000000000000000000;-输入写地址在计数器counter=0时发出写命令,并发出地址信号,保持5个相同输出。8时读到第一个有效数据。在counter=5时CMD=3b000发出nop命令。这时都有数据读出。263时读出最后一个数据。但是必须在计数器counter=10时发出precharge命令。注:write read命令发出后要发出nop命令(否则读出的数据是写数据的最后几位)。Precharg的时间点要恰好(影响到最后几位的数据正常写入读出)。Precharg的时间要够长(不够长的话,bank不能正常关闭,下一次读写虽然换了地址,但是还是会读写上一次的地址)。另外:1.CAS是行地址有效时的延迟,RAS是列地址有效时的延迟,BURST LENGTH(1,2,4,5 and full page

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论