SDRAM 控制器(一)

1、基础知识

        SDRAM(synchronous Dynamic Random ),同步动态随机存储器,同步指内存工作需要同步时钟,内存的命令的发送和数据的接收都以它为标准。动态是指需要不断地刷新来保证数据不丢失(电容存储),随机指的是储存位置可以随机指定,自由储存。

  • 同步(Synchronous )是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准
  • 动态(Dynamic )是指存储阵列 需要不断的刷新来保证数据不丢失
  • 随机(Random )是指数据不是线性依次存储,而是自由指定地址进行 数据读写

        SDRAM的框架:SDRAM是将存储器单元(Memory Cell)利用矩阵的方式来排列,矩阵中有列地址(Row Address)及行地址(Column Address),为了读出或写入某数据,SDRAM控制器会先传送列的地址,此时RAS信号被设定为Active状态,在存取行的地址前还需要几个执行周期,这段时间为RAS至CAS的延迟时间,而CAS信号则需经过几个时钟周期后,才开始稳定的书写数据,这段时间就是CAS延迟时间(CL)。

        表格中的每一个单元格可以类比为存储阵列的单个存储单元。若想要实现存储阵列中的某一存储单元的数据读写操作,我们要通过行地址和列地址(先行后列)精确定位到这一存储单元,进而进行数据的读写操作,这就是所谓的随机地址存取

        对于 SDRAM,我们将类比于单元格的存储空间称之为存储单元,N(行列个数乘积)个存储单元构成一个存储阵列,这个存储阵列称之为一个逻辑Bank(Logical Bank,Bank)。SDRAM 内部分割为若干个 Bank。若干 Bank 的分割,原因一是基于技术、成本考量;二是由于 SDRAM 的工作原理限制,单一 Bank 可能会造成非常严重的寻址冲突。

         这样一来,在对 SDRAM 进行数据读写时,要先确定 Bank 地址,再依次确定行地址和列地址,进而进行数据的读写操作,而且一次只能对一个 Bank 的一个存储单元进行操作。

一个Bank为:

 举例:型号-4Meg*16*4banks

            4banks:bank个数

            Meg:单个bank所包含的存储单元个数

            SDRAM总存储容量 = L-Bank的数量×行数×列数×存储单元的容量

 端口:

x4、x8、x16 分别表示位宽 4bit、8bit、16bit;#符号表示信号为低电平有效;短 划线 - 表示 x8 和 x4 引脚功能与 x16 引脚功能相同。 

CLK:SDRAM工作的时钟,并且所有的输入信号都是在CLK的上升沿进行检测的,也就是说我们给SDRAM给的任何命令,一定要在CLK的上升沿保持稳定,以免SDRAM获取我们给出的命令时出现错误

CKE:时钟使能信号,屏蔽系统时钟,冻结当前操作,高电平有效

CS#:低电平有效,片选信号,使能所有的输入输出端口

RAS#:行选通信号,行地址

CAS#:列选通信号,列地址

WE#:低电平有效,使能写操作

DQM:数据掩码信号,高电平,上升沿,数据总线高阻态

BA[1:0]:Bank地址线

A12——A0 存储地址 不同命令不同含义,当我们选择SDRAM某个Bank的Row地址的时候,需要到12根地址线(A0~A11);当选择Col地址的时候,只用A0~A8这9根线;A10这个信号可以用来控制Auto-precharge

DQ [15:0]:双向数据总线

DQ0——DQ7 8位宽数据输入输出端口

        SDRAM 内部包含一个逻辑控制单元,内部包含模式寄存器和命令解 码器。外部通过 CS_N、RAC_N、CAS_N、WE_N 这四个信号构成命令信号以及地址总线向逻辑控制单元输入命令,命令经过命令解码器进行译码后,将控制参数保存到模式寄存器中,逻辑控制单元进而控制逻辑运行。

        外部通过地址总线输入地址信息,地址信息在逻辑控制单元进行逻辑控制时起到辅助作用,除此之外,复用的地址总线与 Bank 控制逻辑、行地址复用器、列地址计数锁存 器、列地址解码器等内部器件共同作用,精确选定存储阵列中与行列地址相对应的存储单元,进而进行数据存取操作。 

指令集与时序:

COMMAND INHIBIT :禁止命令

        禁止命令 (Command Inhibit) ,其他数据手册也称为取消设备选择命令 (Device Deselect)。不论 SDRAM 处于何种状态,此命令均可被执行;执行此命令后,SDRAM 芯片不被选择,新的命令无法写入,但已经执行的命令不受影响。

NO OPERATION :无操作命令,空闲时占据着

         无操作命令(No-operation),也可称为空命令、NOP命令。不论 SDRAM 处于何种状态,此命令均可被写 入,该命令给被选中的 SDRAM 芯片传递一个空操作信息,目的是为了防止 SDRAM 处于空闲或等待状态时,其他命令被写入。

LOAD MODE REGISTER (LMR) : 加载模式寄存器 所有的bank空闲时才能被写入

                MODE REGISTER :配置定义

        配置模式寄存器命令(Load Mode Register),也被称为 Mode Reigister Set。此命令只有所有 Bank 均处于空闲状态时才可被写入,否则配置出错,而且在执行此命令后,SDRAM 必须等待相应的响应时间 tRSC(Register Set Cycle),模式寄存器配置周期)后,才可写入新的命令。

        在写入此命令对 SDRAM 进行模式寄存器配置时,需要地址总线 A0-A11 辅助寄存器的模式设置,A0-A11 赋值不同对应寄存器配置不同模式,未使用的地址总线设置为低电平。 

Burst Length:突发长度(连续传输所涉及到的存储单元的数量)

          突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Length,简称 BL)。地址总线的低三位 A0-A2 是突发长度的控制位,SDRAM 芯片的突发长度可设置为 1、2、4、8 和整页,单位为字节,整页表示一次突发传输一整行的数据量。

        M0 M1 M2:突发长度的配置(五种突发长度)

        M3:突发类型(0:顺序突发 1:隔行突发) 一般为0

        M4 M5 M6:列选通潜伏期

        M7 M8:运行模式 00

        M9:当 A9 为低电平时,SDRAM 的读/写操 作均采用突发方式,突发长度由突发长度寄存器(A0-A2)设定;当 A9 高电平时, SDRAM 的读操作依然采用突发方式,突发长度由突发长度寄存器(A0-A2)设定,但 SDRAM 的写操作不在使用突发方式,每一个写命令只能写入一个数据。

        M10 M11 M12:0

预充电命令(Precharge)
        预充电的作用就是关闭指定的Bank 或者全部Bank 中激活的行,预充电命令执行后,必须等待对应的等待时间 tRP(tRP(Precharge command Period),预充电命令周期),相对应的 Bank 将可以被重新操作。

        预充电命令(Precharge)命令包括两类:全部预充电(Precharge All)和指定Bank 预充电 (Precharge Bank),当 A10 为高电平发送预充电命令时,执行全部预充电命令,对所有的 Bank 进行预充电;当 A10 为高电平发送预充电命令时,只对由 BA[1:0]选定的 Bank 进行预充电。

刷新命令(Refresh)
        SDRAM 只有通过刷新操作才能保证数据的可靠性,SDRAM 的刷新操作是周期性的,在两次刷新的间隔可以进行数据的相关操作。我们在看SDRAM芯片参数时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表 这个芯片中每个Bank的行数。

        刷新命令一次仅对一行有效,也就是说在64ms内这两种规格的 芯片分别需要完成4096次和8192次刷新操作。这4096操作可以平均15.625μs刷新一次,也可以一次全部刷新完,却决于你的数据读写时序。
数据掩码
        如果突发长度BL=4,那么也就是说一次就传送4笔数据。 但是,如果其中的第二笔数据是不需要的,怎么办?还要传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。为了精确屏蔽一个数据总线位宽中的每个字节,每个DQM信号线对应一个字节(8bit)。

2、模块设计

sdram控制模块:

fifo控制模块:(对输入SDRAM的数据和读出的数据进行锁存,实现跨时钟域处理)

 

sdram顶层模块:

 

顶层模块:

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光中请勿扰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值