SDRAM操作说明——打开DDR3的大门

2023-11-12

SDRAM(synchronous dynamic random access memory),同步动态随机存储器,所谓同步就是指需要时钟信号来控制命令数据,动态是指存储阵列需要不断地刷新来保证数据不会丢失,随机是指存取数据可以根据需要在不同地址上进行,不需要像FIFO一样只能线性存储。
操作芯片选型;Winbond的W9825G6KH。

一、SDRAM操作流程
1.芯片初始化,
SDRAM上电之后需要一段初始化的过程,以保证芯片按照需要进行正常工作,初始化过程如下:
上电200us稳定期,所有Bank预充电,8个自动刷新周期,模式寄存器设置周期,8个总动刷新周期

2.芯片工作状态
行激活,列写/读,数据输入/输出,突发模式,预充电,刷新,

2.1行激活
在执行任何读写操作之前,必须先激活SDRAM中的一行此时将片选信号#CS置为低电平,#RAS置为低电平、#CAS置为高电平,同时地址端口给出地址信号用来选中某一L-Bank的某一行。
行激活指令又名Bank Active,从翻译上看是对L-Bank进行激活,实际上是对具体某一L-Bank中的某一行进行激活,所以一般会直接说成行激活。
在这里插入图片描述

2.2列写/读
在行激活后,经过tRCD延迟后通过将#RAS置为高电平、#CAS低电平来进行写/读操作,同时地址端口给出地址信号用来选中被激活行中的具体某一列,即选中存储阵列中的单元此时#WE置为低电平时为写操作,#WE置为高电平时为读操作。
tRCD这一段时间可产看具体芯片的数据手册,一般会给出最小时间,在程序编写时只需要略大于这个时间即可。

注意:在SDRAM中行列地址是共用的,#RAS为低电平时地址线上的地址数据认为是行地址数据,#CAS为低电平时地址线上的地址数据认为是列地址数据。
在这里插入图片描述

2.3 数据输入/输出
2.3.1数据输入(写操作)
在列地址被选通的同时,数据端口给出数据,即进行写操作,但此时数据并没有立即写入存储单元,在经过tWR延迟后,数据才被真正写入存储单元,在W9825G6KH中tWR为2个时钟周期。

注意:在下一次读写命令开始前,即下一次行激活前,实际上还存在预充电周期tRP,这一段时间可产看具体芯片的数据手册,一般会给出最小时间,在程序编写时只需要略大于这个时间即可。
在这里插入图片描述

2.3.2数据输出(读操作)
在选定列地址后,就已经确定了具体的存储单元,接下来就是数据到达数据端口,但是在CAS发出之后,要经过一定的时间才能有数据输出,从 CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期),通过设置模式寄存器MR给出具体的CL时钟周期。
在这里插入图片描述

2.4 突发模式
由于CL的存在,导致在CL期间无法进行其他操作,浪费了时间和资源,于是突发模式诞生,突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
事实上,实际对SDRAM操作时,很少会对单一的存储单元进行读写,而是对连续的存储空间进行读写操作,那么突发模式是如何操作的呢?
只需要指定起始列地址和突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址,BL的宽度通过设置模式寄存器MR具体给出。
在这里插入图片描述

2.5 预充电
在对SDRAM某一存储地址进行读写操作结束后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。在读写过程中,工作行内的存储体由于“行激活”而使存储电容受到干扰,因此在关闭工作行前需要对本行所有存储体进行重写。预充电实际上就是对工作行中所有存储体进行数据重写,并对行地址进行复位,以准备新行工作的过程。
预充电包括自动预充电和预充电两种。
2.5.1 自动预充电
如果在发出读或写命令时 将地址位的某一位设置为高电平(W9825G6KH为A10),则进入自动预充电功能。
若为读操作,在自动预充电期间,读取命令将照常执行,但激活行将在所有突发读取周期完成之前自动开始预充电。无论突发长度如何,都会在突发读结束后的一定数量的时钟进行自动开始预充电,时钟数等于CL的时钟数。

若为写操作,SDRAM 在突发写入周期后经过两个时钟延迟后才能自动进入预充电操作。此延迟称为写入 tWR。在满足 tWR 和 tRP 之前,无法重新激活正在进行 Auto-precharge 的 bank。这称为 tDAL,即数据输入到活动延迟 (tDAL = tWR + tRP)。使用自动预充电命令时,行激活命令和内部预充电操作开始之间的间隔必须满足 tRAS (min)。

2.5.2 预充电
与自动预充电不同的是预充电是在读写操作后对控制端口进行高低电平控制后手动进行预充电,当 #CS、 #RAS 和 #WE 为低电平且 #CAS为高电平进入预充电。预充电命令可用于单独预充电每个 Bank 或同时预充电所有 Bank。三个地址位 A10、BS0和BS1用于定义在发出命令时要对哪些Bank进行预充电。预充电命令和下一次行激活命令之间的延迟必须大于等于预充电时间 tRP。

2.6 刷新
SDRAM之所以称为同步“动态”随机存储器,就是因为它要不断进行刷新才能保留住数据,因此刷新是SDRAM最重要的操作。刷新电包括自动预刷新和自刷新两种。
2.6.1自动刷新(AR)
对于自动刷新,SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动生成行地址。由于刷新是针对一行中的所有存储体进行,所以无需列寻址。在自动刷新过程中,所有L-Bank都停止工作。每次刷新操作所需要的时间为自动刷新周期 (tRC),在自动刷新指令发出后需要等待tRC才能发送其他指令。显然,刷新操作肯定会对SDRAM的性能造成影响,但这是没办法的事情,也是DRAM相对于SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价。
通过将CKE、#WE置为高电平,将#CS、#RAS、#CAS置为低电平即为自动刷新模式。

注意:tRC数据手册中查到,需要注意的是要将所有的行在tRC时间段内完成刷新,比如W9825G6KH行地址为A0-A12共8192行。
2.6.2 自刷新(SR)
自刷新(SR)主要用于休眠模式低功耗状态下的数据保存,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在SR期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新将CKE置为高电平才能退出自刷新模式并进入正常工作状态。
通过将#WE置为高电平,将CKE、#CS、#RAS、#CAS置为低电平即为自刷新模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SDRAM操作说明——打开DDR3的大门 的相关文章

  • 机械孔与盲孔

    过孔是什么 过孔 Via 电路板上的孔 连接不同层之间的线路 把电路板从平面结构变成立体结构 单层线路想不交叉太难了 双层或更多层线路 必须通过过孔来连接 通过孔壁上的铜 连通上下层的电路铜线 单层PCB 有些时候无法布线 必须通过过孔换层
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • FPGA Lattice Diamond 开发环境搭建

    FPGA Lattice Diamond 开发环境搭建 Lattice Diamond 软件下载 在浏览器中输入 Lattice 的官网地址 http www latticesemi com 进入官网首页在上方选择产品系列选项 出现如下图所
  • 数字信号处理_第4个编程实例(信号的采样与重建)

    配套的讲解视频详见 数字信号处理14 1 模拟信号转换至数字信号的过程 哔哩哔哩 bilibili 数字信号处理14 2 冲激串的傅里叶变换及采样过程的时频域表示 哔哩哔哩 bilibili 数字信号处理14 3 信号重建与采样定理及Mat
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • 波端口的使用

    波导端口代表了计算域的一种特殊边界条件 它既可以激发能量 也可以吸收能量 这种端口模拟了连接到该结构的无限长波导 波导模式从结构向边界平面传播 从而以非常低的反射水平离开计算域 当端口中的波导模式与结构内部波导的模式完全匹配时 可以实现非常
  • 安装 运行 gemmini 和chipyard

    安装gemmini 和chipyard过程 安装版本 chipyard 版本是1 8 1 gemmini版本0 7 0 tip 如果在base里安装conda lock觉得缓慢 可以新建新的环境时就指定安装conda lock conda
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 异步FIFO设计之格雷码

    目录 二进制转格雷码 格雷码转二进制 相邻的格雷码只有1bit的差异 因此格雷码常常用于异步fifo设计中 保证afifo的读地址 或写地址 被写时钟 或读时钟 采样时最多只有1bit发生跳变 在不考虑路径延时的情况下 因为源数据 读写地址
  • 在 C 中操作 80 位数据类型

    我正在用 C 实现一些加密算法 其中涉及 80 位密钥 特定操作涉及将密钥旋转移位 x 个位数 我已经尝试过 long double 类型 如果我没记错的话 它是 80 位 但这不适用于位移运算符 我能想到的唯一替代方案是使用 10 个元素
  • 使用 VHDL 实例化 FPGA 中的 RAM

    我试图按照中的指导实现双端口 RAM这篇优秀的博文 http danstrother com 2010 09 11 inferring rams in fpgas 然而 ModelSim 在编译时给出以下警告 Warning fifo ra
  • allegro画PCB如何更新元件的PCB封装

    allegro画PCB如何更新元件的PCB封装 一 更新单个器件的PCB封装 首先菜单栏选择Place gt Update Symbols 如下图 注意此案例是更新了C0805封装 中更新封装 就将上图第二个红色方框中的勾选即可 二 更新某
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • Linux驱动程序DMA传输到PC作为主机的PCIe卡

    我正在开发一个 DMA 例程 将数据从 PC 传输到 PCIe 卡上的 FPGA 我阅读了 DMA API txt 和 LDD3 ch 15 详细信息 但是 我不知道如何从 PC 到 PCIe 卡上的一致 iomem 块进行 DMA 传输
  • 模拟器和合成器之间初始化状态机的差异

    我的问题是关于合成状态机中使用的第一个状态 我正在使用莱迪思 iCE40 FPGA 用于仿真的 EDA Playground 和用于综合的莱迪思 Diamond Programmer 在下面的示例中 我生成一系列信号 该示例仅显示引用状态机
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更

随机推荐

  • 如何在 Ubuntu 22.04 上安装和配置 Ansible

    介绍 配置管理系统旨在简化管理员和运营团队控制大量服务器的过程 它们允许您从一个中心位置以自动化方式控制许多不同的系统 虽然有许多流行的配置管理工具可用于 Linux 系统 例如Chef and Puppet 这些通常比许多人想要或需要的更
  • 了解 R 中的plot() 函数 - 图形绘制基础知识

    在本教程中 让我们首先了解 R 中使用plot 函数的基础知识 R 语言以其精美的图形而闻名 它具有丰富的函数来构建和格式化任何类型的图形以及plot 函数族之一可以帮助我们构建这些函数 R 中的plot 函数不是单个定义的函数 而是一系列
  • 如何在 Ubuntu 14.04 上安装 Tinc 并设置基本 VPN

    介绍 在本教程中 我们将介绍如何使用 Tinc 一个开源虚拟专用网络 VPN 守护程序 来创建一个安全的 VPN 您的服务器可以在该 VPN 上进行通信 就像在本地网络上一样 我们还将演示如何使用 Tinc 建立通往专用网络的安全隧道 我们
  • 如何使用 Python WebSSH 从浏览器连接到终端

    介绍 通常 您使用终端中的命令行应用程序或包含 SSH 客户端的终端仿真器软件连接到 SSH 服务器 一些工具 例如 Python 的WebSSH 可以通过 SSH 连接并直接在 Web 浏览器中运行终端 这在许多情况下都很有用 当以具有视
  • 在 Ubuntu 18.04 上使用 Nginx 安装 WordPress

    WordPress是最受欢迎的开源内容管理系统 CMS 之一 与 Drupal 或 Joomla 等其他 CMS 相比 拥有高达 60 的市场份额 WordPress 可用于开发任何类型的网站 无论是博客 小型企业还是大型企业 凭借其免费和
  • Java中的模板方法设计模式

    模板方法是行为设计模式 模板方法设计模式用于创建方法存根并将某些实现步骤推迟到子类 模板方法设计模式 模板方法定义了执行算法的步骤 并且它可以提供可能对所有或某些子类通用的默认实现 让我们通过一个例子来理解这个模式 假设我们想提供一种建造房
  • 如何在虚拟专用服务器上配置 Nginx Web 服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化

    介绍 蟒蛇pandas包用于数据操作和分析 旨在让您以直观的方式处理标记数据或关系数据 The pandas软件包提供了电子表格功能 但由于您使用的是 Python 因此它比传统的图形电子表格程序更快 更高效 在本教程中 我们将介绍如何设置
  • 如何使用 Nginx 创建临时和永久重定向

    介绍 HTTP重定向是将一个域或地址指向另一个域或地址的方法 有几种不同类型的重定向 每种重定向对于客户端浏览器来说都有不同的含义 两种最常见的类型是临时重定向和永久重定向 临时重定向 响应状态码302 找到 如果临时需要从不同位置提供 U
  • 如何在 Ubuntu 12.04 LTS 上设置 nginx 虚拟主机(服务器块)

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Hibernate 多对多映射 - 连接表

    今天我们将研究Hibernate 多对多映射使用 XML 和注释配置 之前我们研究过如何实施一对一 and 一对多映射在休眠状态下 休眠多对多 多对多映射通常在数据库中使用连接表 例如我们可以有Cart and Item表和Cart Ite
  • 春季面试问题及解答

    我发了很多帖春季教程最近 这篇文章将帮助您解决 Spring 面试问题 详细解释核心概念 Spring框架是最流行的 Web 应用程序 Java EE 框架之一 依赖注入面向方面编程是 Spring 框架的核心 如果你擅长 Spring 框
  • 运算符

    运算元 运算符应用的对象 1 2 3 1 2就是运算元 一元运算符 只有一个运算元的运算符 var a 1 a a 表达式 由运算符和变量 常量组成的式子 a 1 1 2 3 5 5 4 a b c d 常见的数学运算符 指数 多个数字和字
  • 电子科技大学软件工程期末复习笔记(三):需求分析

    目录 前言 重点一览 需求分析 需求的定义 需求的特性 功能性需求与非功能性需求 需求分析的四个步骤 结构化需求分析方法 结构化需求分析建模的核心 围绕该核心建立的三种图 绘制数据流图 重点 绘制数据流图实例 面向对象分析 面向对象分析的三
  • 网络中的注意力机制-CNN attention

    网络中的注意力机制 CNN attention 前言 网络结构 SEnet CBAM GSoP Net AA Net ECA Net 前言 Attention机制就是加权 目前实现形式主要包括三个方面 CNN Attention 图像 RN
  • 百度飞浆行人多目标跟踪笔记

    开源地址 PaddleDetection configs mot at release 2 3 PaddlePaddle PaddleDetection GitHub 百度飞浆集成了多目标跟踪的多种算法 地址 PaddleDetection
  • 基于MES系统的离散制造车间的设备,实现设备全方位维护

    离散制造的产品多为多品种小批量 生产组织复杂 计划排产困难 需要综合考虑人机料各种因素 另外 临时插单多 多数订单具有定制化特点 车间质量 工艺等异常多 造成生产节奏不稳定 进而影响设备维保执行的及时性 规范性 造成设备的突发故障较多 若设
  • Apache架构师都遵循的30条设计原则

    Srinath 通过不懈的努力最终总结出了 30 条架构原则 他主张架构师的角色应该由开发团队本身去扮演 而不是专门有个架构师团队或部门 Srinath 认为架构师应该扮演的角色是一个引导者 讨论发起者 花草修建者 而不是定义者和构建者 S
  • java audioinputstream 读取音频文件,从最初获得高达一些X字节的AudioInputStream(切割音频文件)...

    How can i read an AudioInputStream upto a particular number of bytes microsecond position For example AudioInputStream a
  • SDRAM操作说明——打开DDR3的大门

    SDRAM synchronous dynamic random access memory 同步动态随机存储器 所谓同步就是指需要时钟信号来控制命令数据 动态是指存储阵列需要不断地刷新来保证数据不会丢失 随机是指存取数据可以根据需要在不同