DDR SDRAM的内部结构Cell Structure(预充电+刷新)

2023-11-15


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
以上图Cell0为例子

读过程(包含预充电步骤)

  1. 首先关闭所有字线,W0,W1…Wn。让所有FET均不导通。
  2. 然后将位线B0通过预充电开关Precharge(图中未画出)拉到Vcc/2,即VB0=Vcc/2。(这个操作就是预充电Precharge)【读操作,位线,需要预充电至Vcc/2
  3. 再断开预充电开关Precharge Switch,停止充电。
  4. 将W0置为高电平Vcc,此时Cell0的FET导通。

如果原来存储的是1,Cbit电压大于VB0,那么Cbit会对字线B0充电,使得VB0>Vcc/2,此时VB0经过放大器Sense AMP后放大电压到VCC电平,即读出1。

如果原来存储的是0,Cbit电压小于VB0,于是字线B0会对Cbit充电,使得VB0<VCC/2,此时VB0经过放大器Sense AMP后电压被拉直GND,即读出0。

写过程

写0

  1. 首先将位线B0拉低
  2. 然后将W0拉高,打开FET,Cbit通过B0放电置GND
  3. 拉低W0,完成写入0

写1

  1. 首先将位线B0拉高
  2. 然后将W0拉高,打开FET,Cbit通过B0充电至VCC
  3. 拉低W0,完成写入1

DDR为什么要刷新

其实了解了Cell结构,这个答案就很清楚了,DDR的数据保存就是通过Cbit电容保存电荷,因为漏电流的存在,如果长时间不操作Cell,那么电荷就会漏光,保存的数据就没有了。

所以为了保存住数据,需要定期对Cell单元里面的数据进行读取,然后再写入,这个过程就叫刷新。

————————————————
版权声明:本文为CSDN博主「硬件工程师炼成之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42005993/article/details/103864181

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

DDR SDRAM的内部结构Cell Structure(预充电+刷新) 的相关文章

  • 在 Verilog 中生成 For 循环中实例化模块

    我正在尝试使用 Verilog 实例化一些模块generate块 因为我将实例化可变数量的它们 genvar i generate for i 1 i lt 10 i i 1 begin status whatever status clk
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • x 和 z 值在 Verilog 中到底代表什么?

    Verilog 标准定义了四种类型的位值 0 1 x 和 z 其中 0 表示低 1 表示高 x 表示未知 z 表示未驱动网络 有几个问题 x 是否意味着我们不知道该值是 0 还是 1 0 或 1 或 z 或者该值是未知的并且可以是 0 1
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • 如何在RTL中使用时钟门控?

    我正在对一些时钟进行门控latch以及我设计中的逻辑 我在综合和布局布线方面没有太多经验 在 RTL 中实现时钟门控的正确方法是什么 示例1 always comb begin gated clk clk latch update en e
  • 使用 Verilator 和 VPI 读取寄存器数组

    所以我在我的verilog中定义了以下寄存器 reg 31 0 register mem 0 15 verilator public 我的目标是从我的 verilator c 代码中读取存储在其中的 16 个值中的每一个 我发现有关 VPI
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • Verilog:添加寄存器的各个位(组合逻辑,寄存器宽度可参数化)

    我正在尝试想出一种方法来添加寄存器的各个位 例如 if regA 111000 then regB 3 位的总和regA 1 Verilog或SystemVerilog中是否有可以直接使用的可综合函数 运算符来执行此操作 如果不是 那么问题
  • verilog 中的“<<”运算符

    我有一个verilog代码 其中有一行如下 parameter ADDR WIDTH 8 parameter RAM DEPTH 1 lt lt ADDR WIDTH 这里将存储什么RAM DEPTH以及什么是 lt lt 操作员在这里做
  • 如何在 Verilog 中综合 While 循环?

    我尝试设计一个 Booth 乘法器 它在所有编译器中运行良好 包括 Modelsim Verilogger Extreme Aldec Active Hdl 和 Xilinx Isim 我知道模拟和综合是两个不同的过程 而且只有少数Veri
  • 我们可以在 C 或 SystemVerilog 中使用 ifdef MACROS 中的条件吗?

    我想要那样的东西 ifdef N O gt N I define GREATER 1 else define LESSER 1 endif 但做不到 有什么解决方案或阅读吗 我很努力地想要做到这一点 但是却做不到 Verilog 不提供这样
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • 标识符必须用端口模式声明:busy。 (Verilog)

    我有如下所示的 Verilog 代码 当我编译它时 我收到以下错误消息 并且代码的第一行突出显示 Error 标识符必须用端口模式声明 busy Code module main clk rst start busy ready cnt s
  • 具有 +1 逻辑的 4 位计数器 D 触发器

    我正在尝试通过 Verilog 实现带有 1 逻辑的 D 触发器计数器 但是我收到了很多有关网络多个常量驱动程序的错误代码 有人可以帮我吗 这是到目前为止的代码 module LAB clk clear Enable Q input clk
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • Verilog 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 X 发送到 Y 时 会给出一个单独的 发送 信号 当 Y 接收
  • Verilog 数组语法

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做
  • 模块不是任务或 void 函数

    我正在尝试在 Verilog 中创建一个用于进位选择加法器的模块 除了以下部分导致编译错误之外 一切正常 module csa a b s cout input 15 0 a b output 15 0 s output cout wire

随机推荐

  • Linux驱动入门(1)hello驱动

    前言 1 学习韦东山老师的Linux 因为他讲的很精简 以至于很多人听不懂 接下来我讲介绍韦东山老师的驱动实验班的第一个Hello程序 2 注意 请先学习完视频再来看这个教程 本文仅供入门学习 如需深入 请搜索其他博客 3 gitee仓库
  • osgEarth的Rex引擎原理分析(七十七)rex引擎中绘制瓦片的调度过程原理

    目标 七十二 中的问题151 主要是分析瓦片什么时候进入场景树 什么时候从场景树中移出 1 初始化 osgEarthDrivers engine rex RexTerrainEngineNode cpp void RexTerrainEng
  • Git 常见错误 之 fatal: Authentication failed 简单解决方法

    Git 常见错误 之 fatal Authentication failed 简单解决方法 目录 Git 常见错误 之 fatal Authentication failed 简单解决方法 一 简单介绍 二 问题现象 三 解决方法 1 修改
  • ADS1115(ADC)16 位分辨率的高精度模数转换器的操作步骤

    ADS1113 ADS1114 和ADS1115 是具有16 位分辨率的高精度模数转换器 ADC 采用超小型的无引线QFN 10 封装或MSOP 10 封装 ADS1113 4 5 在设计时考虑到了精度 功耗和实现的简易性 ADS1113
  • Java的反射技术(Class类,Constructor类,Method类, Field类)

    Java编码时知道类和对象的具体信息 此时直接对类和对象进行操作即可 无需反射 如果编码时不知道类或者对象的具体信息 此时应该使用反射来实现 为什么要使用反射 反射就是把Java类中的各种成分映射成一个个的java对象 例如 一个类有 成员
  • 基于QT:温度串口图像显示

    用Qt自己写一个上位机 将串口发过来的温度信息 显示出来 并且绘画出温度曲线 上图 采用QT绘画曲线 首先当然是采用 qwt控件 而Qt没有自带的qwt控件 所以需要按住移植qwt控件方法具体步骤如下 1 Download and inst
  • 图表、数据可视化笔记

    框架 Echarts Three js ECharts Echarts在线例子 EChartsGallary https www makeapie com explore html sort ranktimeframe allauthor
  • 多操作系统的服务器虚拟化详解 蓝色梦想网

    虚拟化有很多种技巧 这里我们将主要解释有关在硬件上模拟运行两个或者更多操作系统的服务器虚拟化 可以说 因为虚拟化技术避免了服务器使用浪费 所以这项技术获得了广泛应用 一般来说 一台服务器装载和使用一个物理服务器操作系统 一般服务器的平均CP
  • docker应用笔记

    三个概念 Image 只读模板 可以创建docker容器 docker images 列出本地镜像 docker rmi IDXXX 移除镜像 Container 从镜像创建的运行实例 docker ps 运行中的容器 docker ps
  • 用OpenWrt软路由做旁路由-VMWARE版

    1 环境准备 OpenWrt镜像 在vmware中安装的镜像源下载地址 openwrt releases安装包下载 开源镜像站 阿里云本例使用的是22 03 2版本 下载地址https mirrors aliyun com openwrt
  • 3ds max文件打包?max插件CG Magic一键打包整起!

    3ds max文件如何打包 这个问题 小编听到不少网友的提问 今天CG Magic小编来和大家聊聊 文件更高效的操作 如何打包处理呢 3DMAX这款软件的受众群体是比较高的 在工作方便的同时 共享打包也是比较方便的 3DMAX创建的文件打包
  • 基于Linux下的TCP编程

    基于Linux的TCP网络编程 一 Linux下TCP编程框架 TCP网络编程的流程包含服务器和客户端两种模式 服务器模式创建一个服务程序 等待客户端用户的连接 接收到用户的连接请求后 根据用户的请求进行处理 客户端模式则根据目的服务器的地
  • 低版本IBM MQ API在MQ7.5/8版本上正常运行的程序修改方法

    一 测试前准备 所有数据测试前 先替换成对应版本的jar包 二 MQ7 5 MQ7 5跟以前版本的区别是 更加安全的认证 API的option发生了变化 测试环境 操作系统 服务器 MQ版本 SUSE 11 192 168 32 144 7
  • LeetCode 1769. 移动所有球到每个盒子所需的最小操作数

    有 n 个盒子 给你一个长度为 n 的二进制字符串 boxes 其中 boxes i 的值为 0 表示第 i 个盒子是 空 的 而 boxes i 的值为 1 表示盒子里有 一个 小球 在一步操作中 你可以将 一个 小球从某个盒子移动到一个
  • Java使用Milo实现OPC UA客户端

    文章目录 一 Milo库 二 OPC UA服务端及客户端 三 Java连接OPC UA服务端 3 1 依赖 3 2 创建opc ua客户端 3 3 遍历树形节点 3 4 读取节点数据 3 5 写入节点数据 3 5 订阅 单个 3 6 批量订
  • java 多线程学习笔记之 线程同步

    在前面我们将了很多关于同步的问题 然而在现实中 需要线程之间的协作 比如说最经典的生产者 消费者模型 当队列满时 生产者需要等待队列有空间才能继续往里面放入商品 而在等待的期间内 生产者必须释放对临界资源 即队列 的占用权 因为生产者如果不
  • 携程连接服务器失败显示0048,携程网回应:携程服务器出故障期间可访问艺龙旅行网...

    2015年5月28日 携程服务器出故障后 官方回应 这期间消费者可访问艺龙旅行网 28日 很多人的朋友圈被一则携程服务瘫痪的消息刷屏 震惊了业界和消费者 记者28日登录携程系统发现 携程官方网站今日突然陷入瘫痪 打开主页后点击时均显示 Se
  • [VS Code]跟我一起在Visual Studio Code 添加自定义snippet(代码段),附详细配置

    Add code snippets for CLANG in VS Code 日志 2021 12 16 VSCode 自 v1 40 起 引入新的变量 WORKSPACE FOLDER RANDOM 和 RANDOM HEX 自 v1 4
  • PostgreSQL 用户和角色管理

    PostgreSQL的用户管理 用户和角色的区别 用户有权限 角色没有权限 一 组角色管理 使用组角色的概念管理数据库访问权限 1 创建组角色 一个组角色可以看做是一组数据用户 组角色可以拥有数据库对象 比如表 以及可以把这些对象上的权限赋
  • DDR SDRAM的内部结构Cell Structure(预充电+刷新)

    文章目录 读过程 包含预充电步骤 写过程 写0 写1 DDR为什么要刷新 以上图Cell0为例子 读过程 包含预充电步骤 首先关闭所有字线 W0 W1 Wn 让所有FET均不导通 然后将位线B0通过预充电开关Precharge 图中未画出