SDRAM 控制器(一)

article/2025/10/26 15:10:02

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顶层模块:

 

顶层模块:


http://chatgpt.dhexx.cn/article/yfjFBWO0.shtml

相关文章

操作系统面试题(二十一):什么是DMA

DMA DMA(Direct Memory Access 直接内存访问) DMA意味着CPU授予I/O模块权限不涉及在不涉及CPU的情况下依然可以读取/写入内存,即DMA不需要CPUde支持 DMAC(DMA 控制器) 控制直接内存访问的过程 DMA的优点&#xff1a…

操作系统面试题:虚拟内存是什么,解决了什么问题,如何映射?

虚拟内存是什么? 虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术&…

Linux面试题(34道)

1、Linux中各个目录的作用 1)/ 根目录 2)/boot 引导程序,内核等存放的目录 3)/sbin 超级用户可以使用的命令的存放目录 4)/bin 普通用户可以使用的命令的存放目录 5)/lib 根目录下的所程序的共享库目录 6&…

【游戏客户端面试题干货】-- 2021年度最新游戏客户端面试干货(操作系统篇)

【游戏客户端面试题干货】-- 2021年度最新游戏客户端面试干货(操作系统篇) 大家好,我是Lampard~~ 经过一番艰苦奋战之后,我终于是进入了心仪的公司。 今天给大家分享一下我在之前精心准备的一套面试知识。 今天和大家分享的是操作系统相关的面…

操作系统和网络(一):计算机网络常见面试题

计算机网络常见面试题总结 1. OSI , TCP/IP ,五层协议的体系结构 OSI分层(7层) :物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层) :网络接…

【Java实习生】每日面试题打卡——操作系统篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day15本篇总结的是 操作系统 相关的面试题,后续会每日更新~ 1、请分别简单说一说进程和线程以及它们的区别? 根本区别:进程是操作系统资源分配的基本单位,而…

操作系统面试题(一)

请你说一下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的 参考回答: 基本概念: 进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了…

操作系统面试常问——for考研复试面试

关于操作系统的一些面试常问问题 前言: 本人22考研党已上岸,发一些复试准备整理的资料作为对考研准备的一个收尾。由于近几年基本都是线上复试,线上的话会更加注重概念的考察,本人在复试准备期间搜集了面试题,整理了…

操作系统面试题(三)

请你来说一说协程 参考回答: 1、概念: 协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适…

操作系统面试题(十四):什么是虚拟内存?

虚拟内存(virtual Memory) 日常生活中,当我们使用电脑的时候,尤其是windows电脑,经常会打开许多软件,这些软件占用的内存已经远远大于计算机的物理内存。之所以会这样,就是因为虚拟内存的存在 …

操作系统面试题:设备管理

管理什么设备? 除cpu,内存外的所有设备 怎么管理设备? 通过将物理设备映射成逻辑设备 为什么要把物理设备映射成逻辑设备? 物理设备是I/O系统中实际安装的设备,物理名通常是字符串或者ID 而逻辑设备的逻辑名比较好记 如何理解…

操作系统面试问题汇总(超详细)

操作系统的组成 1、驱动程序是最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。 2、内核是操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性…

操作系统面试题(二)

请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 参考回答: 1、互斥锁和读写锁区别: 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象。当获取锁操作失败时…

几率大的杂乱+操作系统面试题(含答案)

其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含…

操作系统常见面试题

文章目录 进程和线程进程和线程的区别协程与线程的区别进程与线程的切换流程什么是虚拟地址空间为什么虚拟地址空间切换后感觉程序变慢进程间通信方式线程(进程)间同步方式线程的分类协程(纤程)线程和协程的区别 进程(…

这可能最全的操作系统面试题

文章目录 操作系统简介篇解释一下什么是操作系统操作系统的主要功能软件访问硬件的几种方式解释一下操作系统的主要目的是什么操作系统的种类有哪些为什么 Linux 系统下的应用程序不能直接在 Windows 下运行操作系统结构单体系统分层系统微内核客户-服务器模式 为什么称为陷入内…

操作系统面试题(史上最全、持续更新)

尼恩面试宝典专题40:操作系统面试题(史上最全、持续更新) 本文版本说明:V28 《尼恩面试宝典》升级规划为: 后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼…

操作系统面试题总结(2022最新版)

关于作者 🐶 程序猿周周 ⌨️ 短视频小厂BUG攻城狮 🤺 如果文章对你有帮助,记得关注、点赞、收藏,一键三连哦,你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 4️⃣ 篇文章,该系列将整理和梳…

MFC中MENU的使用

一、创建基于对话框的应用程序框架 1.选择菜单项文件->新建->项目,弹出“新建项目”对话框。 2.直接选择“MFC应用程序”或左侧面板中模板的Visual C下选择MFC,中间窗口中选择MFC应用程序,然后在下面编辑框中键入工程名称,并…

MFC 菜单栏一片黑,界面卡顿问题

这是在公司做的一个项目, 实现可视化调节参数内容包括频段、频点、增益和Q值等,可以美化(包括丑化)和修饰声音,使声音(或音乐)风格更加鲜明突出。软件如下图所示: 但这软件开发过程中一直存在一…