zoukankan      html  css  js  c++  java
  • SDRAM学习笔记(二)

      上一篇博客主要讲解了一下SDRAM整体结构以及PCB方面的注意事项。接下来讲解一下需要用到的一些命令。

    1.常用命令的缩写

    image

    上述是常用到的一些指令集。

    2.模式寄存器

    image

      (1)突发长度

      通过对A0~A11的控制来实现SDRAM的常用配置。首先A0~A2是突发长度的控制。突发长度的控制如下图,有突发长度1,2,4,8,还有全页长度。

      突发读写方式,突发指的是在同一行中相邻的存储单元连续进行数据传输的方式,连续传输 的周期数就是突发长度,只要指定起始列地址与突发长度,寻址与数据的读取将自动进行,只需控制好两端突发读取命令的间隔周期就能做到连续的突发传输。突发长度在模式寄存器的配置中有1.2.4.8,以及256个数据的操作模式。

      突发读写实现的是连续的读写操作,在结束完一次突发读写前,不需要进行地址的索引,但需要注意的是,这个连续的读写操作是操作的连续,不是地址的连续。

    wpsEF7.tmp

      SDRAM的读写方式,既可以通过地址的索引实现单个逻辑单元数据的读/写,也可以通过 突发连续读/写实现最多256个数据的连续操作,为了实现更高的带宽,可以采用突发连续读/写方式来实现海量数据的高速读/写。

      (2)突发类型和读写方式

      在模式寄存器配置中还可以设定SDRAM突发读写方式为顺序读写或者交错读写。

    wps9F62.tmp

      为了实现海量数据的传输,这里选择突发读写,突发类型选择连续。

    3.SDRAM初始化时序

      有严格的流程:

      板卡上电初始化---200us等待SDRAM启动(手册中至少需要100us)----所有L-BANK预充电(给所有L-BANK的电容充电,准备预刷新)-----8个预先刷新周期(手册规定至少2个周期来刷新逻辑块,在设计中一般直接给8个周期)----模式寄存器的配置(寄存器配置完毕后,输出SDRAM_init_done信号 ,标志初始化完毕)。

    4.数据手册相关内容

    image

      笔者之前使用过的一款SDRAM芯片,驱动时钟133MHz,CAS潜伏周期时间为3,这个参数决定了SDRAM的最高运行速率。

    image

      总容量 = 行数 x 列数 x bank 数 x 位宽 = 1 bank单元数 x bank 数 x 位宽 ;

      DQM的位宽 = 数据宽度/8,如32bit的SDRAM,DQM[2]对应DQ[23:16].

      关于DQM的作用是起到掩膜作用,就是指定输出时候,某一段是不输出的。下图是DQM的时序图。

    image

    5.SDRAM读写时序图

    image

        在上述模式寄存器控制中,A10控制着读写当前L-Bank自动进行预充电,再发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔称为预充电有效周期,tRP。

        刷新

        SDRAM刷新包括自刷新(self refresh)和自动刷新(auto refresh),不论是何种方式,不用提供外部行地址信息,这是一个内部自动操作。

        预充电是对一个 或所有的L-Bank中的工作行操作,不是定期的。刷新是固定的周期,依次对所有行进行操作,以保留那些久久没经过重写的存储体中的数据。

       由于SDRAM内部是电容结构,需要不断刷新才能够保存数值,存储体中电容的数据有效保存期上限是64ms,刷新速度就是 4096/64ms。也就是64ms必须刷新完所有的行。

    6.行有效时序图

    image

    image  7.列读写  tRCD

    image

    image

    image

    image

    8.tCL 数据输出延时时间

    image

    image

    image image

    image

    9.tWR 数据写入延时时间

    image

    10.突发长度

    image

    image

    image 11.页传输

      full page (全页)突发传输是指L-Bank里的一行中所有存储单元从头至尾进行连续传输,具体的突发长度要看芯片的内容情况。

      针对芯片的页是狭义的,常用的是广义上的页。

    image

    image

    image

    //========================================================

    对于上述的方法进行总结,SDRAM的驱动方式如下:

      首先器件上电----对SDRAM进行初始化(因为内部有逻辑电路部分,状态机部分)----对SDRAM进行200us的稳定期(参数INIT_PER)----预充电,对所有的L-Bank进行预充电(预充电时间间隔tRP)----8个预先刷新周期(手册规定至少2个周期来刷新逻辑块,在设计中一般直接给8个周期,参数REF_PER)----模式寄存器的配置(行选通周期参数tRCD,由于SDRAM内部结构导致更新存储阵列需要时间---数据输出延时时间tCL---突发长度BL设置)

    //========================================================

    //=======================================================================

    更多详细的资料下载可以登录笔者百度网盘:

    网址:http://pan.baidu.com/s/1bnwLaqF

    密码:fgtb

    //=======================================================================

  • 相关阅读:
    Taro 自定义组件样式不生效及解决方案
    Taro 实现多行文本溢出省略效果
    taro路由传参this.$router.params获取不到值
    taro版本切换及报错解决
    fabricjs实现图片加备注文字并下载效果
    html2canvas实现DOM导出为图片(入门)
    [Vue warn]: Error in render: "TypeError: Cannot read property 'length' of null"
    svn识别不出修改的文件
    prefer-object-spread
    JAVA学习(一)——基本语法
  • 原文地址:https://www.cnblogs.com/raymon-tec/p/5147217.html
Copyright © 2011-2022 走看看