DDR基础知识点汇总

2023-11-13

文档推荐

  • ddr3/4等协议eetop.cn_JESD79-3F.pdf
  • 【理解SDRAM颗粒的入门中文手册,强烈推荐】eetop.cn_高手进阶,终极内存技术指南——完整.pdf
  • 【理解DRAM电路结构和时序参数】https://linux.codingbelief.com/zh/memory/dram/dram_storage_cell.html

DDR颗粒的电路图来源

可以去网站搜索镁光DDR4 SDRAM关键词。
找出micron DDR4 SDRAM datasheet.pdf点击相关链接

上面网址资料应该更全,但是速度太慢。下面网址速度更快:https://pdf.ic37.com/

网上很多图非常不清楚,下面给一张DDR3和DDR4的高清图。

DDR3 SDRAM电路结构高清图

DDR3

DDR4 SDRAM电路结构高清图

在这里插入图片描述

DDR3-1866控制器/PHY/颗粒之间的带宽关系

举例,DDR3-1866,意味着芯片与颗粒之间的传输速率是1866bps(单指一根DDR数据信号线,一般DDR3芯片引脚是32bit),
芯片PHY的DDR管脚信号线对应的时钟频率是1866/2=933MHz,因为上下边沿采样原理。
假设芯片接口,DDR数据位宽支持32bit,那么,
控制器如果是128bit数据位宽,那么时钟频率是=(1866*32)/ 128 = 466MHz。

channel > DIMM > rank > chip > bank > row/column

channel (对应多个DDR控制器)> DIMM(内存插槽) > rank(一次访问位宽决定,也成物理bank,对应cs chip sel功能。) > chip(1个chip大多是4bit/8bit/16bit等,组成一个rank,配合完成一次访问的位宽要求。这就是颗粒) > bank(颗粒里的logic-bank,DDR3一般对应8个bank存储体) > row/column

DDR页和行的概念理解

  • DDR logic bank的row就是行,对应行地址选中等。
  • DDR页的概念,是针对刷新或者访问来说的,举例,一个rank可能有4个chip组成,一个chip里可能有8个bank,每一个bank有N个行。页指的是一个rank里每个chip,所有bank的一个行地址;注意不是一行,是多行,行数是chip数目*bank数目。
  • 所以,DDR页,可以讲为一个rank里每个chip的行地址
  • (ps:在一个rank里,每个chip的地址是相同的。因为多个chip组成一个总数据位宽。DDR接口的cs信号,虽然叫chip select,其实是rank(一组chip)的 select)。
  • DDR页的概念,后续会讲到页命中、页miss等,跟cache page原理一样。

DDR3 8Bit数据预取技术的理解

参考文章:
土老冒谈硬件 深度解析DDR3内存新特性

  • SDRAM最开始是时钟下降沿采样,数据传输速率和频率是1:1关系,即一个周期可传输1bit数据;
  • DDR1,采用时钟双边沿采样,即上升沿、下降沿都采样。一个时钟周期可传输2bit数据,这个时候,就叫预取2bit技术了(因为一拍需要预取2bit数据)。可知预取2bit技术的基础,就是双边沿采样。
  • DDR2,预取4bit。
  • DDR3,预取8bit。举例,DDR3-800内存的存储核心频率其实仅有100MHz,其输入/输出时钟频率为400MHz,利用双边沿采样技术,有效数据传输频率则为800MHz。

预取bit的意思,我理解就是一个时钟周期时间内,从DDR存储cell能够做到取出多少bit数据。如果一次预取16bit,DDR传输速率就又翻倍了。

一般,协议里称为8n prefetch。这个n,我理解就是DQ位宽。所以一个DDR3 16bit SDRAM内存颗粒,其一次读写访问的数据量是8*16=128bit。

DDR burst相关概念

BL,是burst length。对应预取bit数目,DDR3对应的BL是8
BC,是burst chop,中文理解是burst剁开切开,是为了兼容DDR2的burst length为4的情况。DDR3兼容DDR2时,8个burst,只保留前面4个burst有意义,后面4个burst内容无异议被mask掉。

DDR SDRAM的时序参数和读写访问过程

链接文章的时序讲解,图和文字很生动。时序参数和读写访问过程,结合在一起描述的
https://linux.codingbelief.com/zh/memory/dram/dram_timing.html?q=#additive-latency
在这里插入图片描述
DDR2-800内存的标准时序:5-5-5-18,
DDR3-800内存的标准时序则达到了6-6-6-15
DDR3-1066为7-7-7-20
DDR3-1333更是达到了9-9-9-25

这4个数字的含义依次为:CAS Latency(简称CL值)内存CAS延迟时间,这也是内存最重要的参数之一,一般来说内存厂商都会将CL值印在产品标签上。
第二个数字是RAS-to-CAS Delay(tRCD),代表内存行地址传输到列地址的延迟时间。第三个则是Row-precharge
Delay(tRP),代表内存行地址选通脉冲预充电时间。第四个数字则是Row-active Delay(tRAS),代表内存行地址选通延迟。
除了这四个以外,在AMD K8处理器平台和部分非Intel设计的对应Intel芯片组上,如NVIDIA nForce 680i SLI芯片组上,还支持内存的CMD 1T/2T Timing调节,CMD调节对内存的性能影响也很大,其重要性可以和CL相比。
这些参数越低,代表延迟越小。但是系统出了DDR3芯片之外,还有颗粒、PCB板等,需要综合考虑,DDR3延迟不一定比DDR2慢。

一、影响性能的主要时序参数
  所谓的影响性能是并不是指SDRAM的带宽,频率与位宽固定后,带宽也就不可更改了。但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。但这些操作占用的时间越短,内存工作的效率越高,性能也就越好。
  非数据传输时间的主要组成部分就是各种延迟与潜伏期。通过上文的讲述,大家应该很明显看出有三个参数对内存的性能影响至关重要,它们是tRCD、CL和tRP。每条正规的内存模组都会在标识上注明这三个参数值,可见它们对性能的敏感性。
  以内存最主要的操作——读取为例。tRCD决定了行寻址(有效)至列寻址(读/写命令)之间的间隔,CL决定了列寻址到数据进行真正被读取所花费的时间,tRP则决定了相同L-Bank中不同工作行转换的速度。现在可以想象一下读取时可能遇到的几种情况(分析写入操作时不用考虑CL即可):
  1、要寻址的行与L-Bank是空闲的。也就是说该L-Bank的所有行是关闭的,此时可直接发送行有效命令,数据读取前的总耗时为tRCD+CL,这种情况我们称之为页命中(PH,Page Hit)。
  2、要寻址的行正好是前一个操作的工作行,也就是说要寻址的行已经处于选通有效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为CL,这就是所谓的背靠背(Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或页直接命中(PDH,Page Direct Hit)。
  3、要寻址的行所在的L-Bank中已经有一个行处于活动状态(未关闭),这种现象就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效命令。结果,总耗时就是tRP+tRCD+CL,这种情况我们称之为页错失(PM,Page Miss)。
  显然,PFH是最理想的寻址情况,PM则是最糟糕的寻址情况。上述三种情况发生的机率各自简称为PHR——PH Rate、PFHR——PFH Rate、PMR——PM Rate。因此,系统设计人员(包括内存与北桥芯片)都尽量想提高PHR与PFHR,同时减少PMR,以达到提高内存工作效率的目的。

计算DDR容量的方法

在这里插入图片描述
由图可以归纳出:

  1. bank有8个;对应BA[2:0];
  2. 行地址有15bit;列地址有10-3=7bit(其中低3bit不会用于列寻址);
  3. 每个bank的数据量

每个bank的数据量 =行单元存储bit数=2^15 * 2^7 * 128bit=512Mbit
【这个128bit是怎么搞的,最开始理解一个存储cell的容量,就是数据信号线位宽16bit。这里DDR3是指预取8bit技术,8*16bit=128bit,一个地址对应8个预取pre-fetch的16bit数据。可以这样理解,DQ数据线宽是16bit,每一根DQ数据信号线,支持预取8次。】

在这里插入图片描述
4. 所以,内存颗粒的容量= 8 * 512bit = 4Gbit=512MB,根据DDR数据信号线位宽,描述上图产品的规格,即256 * 16bit。

DDR控制器架构

DDR控制器功能简介

  1. 对DDR存储颗粒进行初始化;
  2. AXI等总线简单读写,和 DDR存储颗粒复杂的读写时序,做相互转换。让DDR IP使用者,可以像操作RAM一样操作DDR。
  3. 控制器要产生DDR颗粒需要的周期性的刷新指令,不需要用户的干预。
  4. DDR控制器接收的请求,一般没有顺序性,访问DDR颗粒的数据传输中,存在大量非数据的传输,即保证DDR颗粒时序的命令配置信息传输。会导致DDR带宽利用率低。因此,出现指令调度和重排序设计。

图摘自《DDR3存储控制器的设计与实现_彭陈.caj》
在这里插入图片描述
一些理解点:

  • DDR控制器负责配置远程DDR颗粒的命令过程;穿插在数据传输里;占用一部分带宽;
  • DDR控制器,输入是SOC总线读写请求;输出是DFI接口请求(图中称为配置请求,或者存储请求)。其中DFI接口通过PHY连接芯片外的DDR颗粒。
  • DDR控制器需要访问调度,主要是因为颗粒是多bank的,跨bank的访问请求,会增加latency,减少带宽有效数据传输效率。
  • 当前参与项目的DDR控制器,接收的SOC总线读写请求接口,会有多个。因为SOC总线用的NOC架构,有打包解包过程,对latency影响较大。如有latency性能要求,则需要直接在DDR控制器里进行类似数据总线的请求调度。

DDR自动刷新和自刷新,以及与预充电的关系

DDR的最小存储单元电路形式是电容,是通过充放电,实现0,1值存储。
如果长时间维持1值,会因为电路漏电特性,把电容里的电荷释放掉。
所以出现自动刷新概念,把DDR里的数据再次充电刷新一次,目的是保留DDR存储值。

根据协议定义,可知bank里的一行最大自动刷新间隔是7.8us;一个bank最大自动刷新间隔是64ms。由此,常见设计,一个bank的行数是8192。因为协议推导出的最大bank行数=64ms/7.8us=8205。

也就是说,DDR控制器需要每次7.8us时,做一次自动刷新的指令。

self-refresh和auto-refresh的区别,个人理解

  1. 自动刷新是指控制器必须参与发起每一个自动刷新请求。适合正常工作的时候,由控制器来主导刷新操作。
  2. 自刷新是指控制器只发起刷新开始和结束两个请求。适合休眠,DRAM颗粒自己负责刷新操作。
  3. 自动刷新和自刷新,接口指令是类似的,除了CKE为低表明自刷新开始。

预充电和刷新,都是为了保持电荷存储,做出的电路重写动作。

  • 预充电是针对一个bank或者所有bank的一行的操作;是伴随读写命令操作之后执行的。
  • 刷新是同时对所有bank的所有行操作。

DDR 扰码解码:obfuscation Scamble.

意义是对DDR数据进行加密。
一个实践的方法是芯片TRNG产生伪随机数,然后跟真实数据XOR实现。

ZQC和ODT意义

  • DDR3新增管脚ZQ,接高精度240欧姆。意义是提供精准电阻参考,该电阻对芯片内温度不敏感。ZQC,就暗示ZQ电阻的calibration校准。
  • ODT,是利用ZQ电阻值,实现精确的阻抗匹配。保证DDR PHY + PCB走线 + DDR SDRAM这一个系统数据通路的信号完整性,比如解决信号反射问题等。具体详见:《聊一聊DDR3中的ODT(On-die termination)
  • 总之,ZQC和ODT一起,在不同温度下,解决信号的完整性问题。

另外,关于ZQ校准,有两个命令:ZQCL (ZQ CALIBRATION LONG )和ZQ CALIBRATION SHORT (ZQCS)

  • ZQCL主要用于系统上电初始化和器件复位,一次完整的ZQCL需要512个时钟周期,在随后(初始化和复位之后),校准一次的时间要减少到256周期。
  • ZQCS在正常操作时跟踪连续的电压和温度变化,ZQCS需要64个时钟周期。

Write Leveling是什么?

Write Leveling的功能是调整DRAM颗粒端DQS信号和CLK信号边沿对齐。
只有使用了fly-by的情况下需使能write leveling。

所谓的fly-by 布线,指地址、命令和时钟(下图黄色单词看不清楚,是clk/addr/command的意思)的布线依次经过每一颗DDR memory芯片。而dq和dqs作了点到点的连接。VTT表示这些信号都接了ODT端接电阻。fly-by 结构相对于T布线,有助于降低同步切换噪声(Simultaneous Switching Noise)。
在这里插入图片描述
备注:下图是T型布线。
在这里插入图片描述

参考文章:
https://blog.csdn.net/tbzj_2000/article/details/88304245

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

DDR基础知识点汇总 的相关文章

  • 何时使用tick(')进行Verilog数组初始化?

    数组初始化可以通过或不通过 int a 8 0 1 2 3 4 5 6 7 Packed int b 8 0 1 2 3 4 5 6 7 Unpacked 有没有correct方式 假设数组使用不可打包的类型 例如int string ET
  • 在verilog中使用for循环生成

    我试图理解为什么我们在verilog 中使用generate 和for 循环 一起使用生成和 for 循环 reg 3 0 temp genvar i generate for i 0 i lt 3 i i 1 begin always p
  • 为什么我的输出没有被赋值?

    我正在为一个更大项目的一部分开发解码器 我有两个计数器充当该模块的输入 其中一个计数器计数 0 15 另一个计数器在第一个计数器达到 15 时递增一次 根据计数器的值 解码器输出不同的值 通常它是 0 1 或 1 但有时它必须是 0 707
  • |变量在verilog中是什么意思?

    我想知道什么assign hd trs detected hd trs match Verilog 中的意思 我最感兴趣的是 hd trs match部分 我知道 表示按位或 但不确定如何解释它之前没有值 它是可理解的 1 还是 0 如果它
  • 如何使用触发器输出作为复位信号的输入

    我在柜台里放了 3D 触发器 一旦达到 5 101 我想将 FF 复位输入设置为高 使用或门 复位为低电平有效 这几乎可以工作 但是 当我最初运行程序时 触发器的 Q 输出都是未知的 因此 最初 或门的复位输入为低电平 但是 因为一开始 Q
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg
  • 用于 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
  • Verilog 最佳实践 - 递增变量

    我绝不是 Verilog 专家 我想知道是否有人知道这些增加值的方法中哪一种更好 抱歉 如果这个问题太简单了 Way A 在组合逻辑块中 可能在状态机中 some condition count next count 1 然后在一个连续块中
  • 在逻辑中使用单端端口期待差异对?

    我使用的逻辑被设置为需要一个差分对时钟端口 然而 对于一个特定的应用程序 我只能输入一个单端时钟 由于硬件限制 修改逻辑以接受单端时钟不是一种选择 因为涉及许多文件和代码行 有没有办法可以输入单端端口并以某种方式将其馈送到模块的差异对端口
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • 如何在 Verilog 中综合 While 循环?

    我尝试设计一个 Booth 乘法器 它在所有编译器中运行良好 包括 Modelsim Verilogger Extreme Aldec Active Hdl 和 Xilinx Isim 我知道模拟和综合是两个不同的过程 而且只有少数Veri
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 我怎样才能让我的verilog移位器更通用?

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

    我在一个项目中遇到了一个非常具体的问题 这个问题已经困扰我好几天了 我有以下 RAM 模块的 Verilog 代码 module RAM param clk addr read write clear data in data out pa
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使

随机推荐

  • 硬盘柱面损坏怎么办_最靠谱的机械硬盘坏道修复工具一:DiskGenius

    DiskGenius是一款硬盘分区 数据修复软件 DiskGenius的功能非常丰富 然而很多时候 我们都只是用DiskGenius来分区硬盘 对硬盘进行一些常规性能的操作 常常忽略了DiskGenius最重要的一个功能 那就是机械硬盘的坏
  • vue 按钮权限

    项目中按钮的操作权限我们可以直接使用 v if 判断就行 但是每个页面都要写一堆判断不太雅观 所以 可以写一个全局函数或者自定义指令 两种方式优雅的实现 一 全局函数 一般在登陆接口中后台就把权限列表信息提供了 可以把他存到缓存或者vuex
  • 从零开始完成YOLOv5目标识别(三)用PyQt5展示YOLOv5的识别结果

    往期内容 从零开始完成Yolov5目标识别 二 制作并训练自己的训练集 从零开始完成Yolov5目标识别 一 准备工作 目录 往期内容 一 项目框架 二 核心内容 1 QtDesign设计 2 检测部分 2 1 导包 2 2 main py
  • js-image-compressor 图片压缩插件

    1 安装插件 npm i js image compressor 2 引入 import ImageCompressor from js image compressor 3 使用 compressionImage file return
  • 加入ehcache后,系统出现内存泄漏,解决办法

    最近在系统中 加入缓存ehcache 但发现 每隔一天 服务器就会报出内存溢出 问题严重 后来在网上查资料发现 一篇解释的网文 spring中的提供了一个名为org springframework web util Introspector
  • Android从源码分析RecyclerView四级缓存复用机制一(缓存ViewHolder)

    RecyclerView相比较ListView先说多了多布局和缓存 目前已经在Android列表中大量普及使用 面试中也经常问到 所以对于RecyclerView的四级缓存机制也叫复用回收机制的分析很有必要 这部分很重要请 全村人来听 先说
  • Understanding Dataset Design Choices for Multi-hop Reasoning

    Understanding Dataset Design Choices for Multi hop Reasoning NAACL 2019 阅读笔记 记录论文中几个有趣的实验 1 单句包含答案实验 首先做了一个简单的实验 给模型输入一个
  • 游戏盾原理和优势

    什么是游戏盾呢 游戏盾是DDoS高防IP产品系列中针对游戏行业的安全解决方案 游戏盾专为游戏行业定制 针对性解决游戏行业中复杂的DDoS攻击 游戏CC攻击等问题 目前以对抗的形式存在的高防产品形态 也就是防御带宽要大于攻击者的流量 游戏盾有
  • 最大熵算法及简单例子

    最近在学模式识别 正在看Introduction to Pattern Recognition这本书 挺不错的一本书 好 下面和大家一起来学习最大熵算法 首先 最大熵算法是干什么的呢 一般是用来估计一个分布 至于把分布估计出来之后用来干什么
  • 程序员必备的画图工具

    作者 CUGGZ 来源 前端充电宝 XMind 是一个跨平台的思维导图软件 具有多种结构样式 除了普通的思维导图 还包括树形图 逻辑图 鱼骨图 时间轴 树状表格等等 不同的结构样式可以自由组合混用 同时支持一键更换结构样式 最近经常有小伙伴
  • 编译安装 Nginx 提示:/configure: error: C compiler cc is not found

    问题产生背景 反向代理服务器需要增加探活功能 需要对前置nginx 进行重新编译安装第三方模块 发现在编译安装配置时候一直过不去 百度查询过很多解决办法 基本都是没有安装好编译环境之类的说法 但是在确定编译环境所涉及的包全部都安装以后 还是
  • idea必备开发插件.

    1 lombok 支持lombok的各种注解 从此不用写getter setter这些 可以把注解还原为原本的java代码 非常方便 https plugins jetbrains com plugin 6317 lombok plugin
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-RC-u5 树与二分图

    2022 RoboCom 世界机器人开发者大赛 本科组 省赛 RC u5 树与二分图 文章目录 2022 RoboCom 世界机器人开发者大赛 本科组 省赛 RC u5 树与二分图 题目描述 输入格式 输出格式 输入样例 输出样例 思路 A
  • 感知机分类学习

    感知机 perceptron 是一种二类分类的线性分类模型 也就是说 使用于将数据分成两类的 并且数据要线性可分的情况 线性可分是指存在一个超平面能够将空间分成两部分 每一部分为一类 感知机的目的就在于找这样的一个超平面 假设输入数据形式为
  • pandas入门

    pandas is a fast powerful flexible and easy to use open source data analysis and manipulation tool 一 读取文本文件中的数据 导入pandas
  • Python之创建多级菜单

    方法一 usr bin env python coding utf 8 Time 2021 11 25 19 09 Author Argonaut FileName 创建多级菜单 py 功能 可进可退的功能菜单 while True pri
  • 将C盘和桌面所在的E盘合并分区后,出现的路径问题解决方案

    问题一 开机时出现警告 由于启动计算机时出现页面配置问题 Windows在您的计算机上创建了一个临时页面文件 所有的磁盘驱动器的总页面大小可能稍大于您所指定的大小 解决方案 照着做就行 问题二 Windows 10系统开机显示 位置不可用C
  • shell脚本整段注释

    摘自 http zhidao baidu com link url XmCCZmfluRe6n8TjPRKJTx4GGOUPSGX1VNBm euqGdpKGpveTESxC0HL90UBNT5nZCvmvfq2oIJdP3JO5EoPSq
  • STM32关于PVD低电压能检测的知识

    在实际工程运用中需要对突发情况作出及时的相应 通常都需要考虑当系统电压下降或断电时 需要对控制系统加以保护 这时候就需要在程序中加入系统电压监测 PVD 供电电压降低到某一个电压值时 需要系统进入保护状态 执行紧急关闭任务 对系统数据进行保
  • DDR基础知识点汇总

    文章目录 文档推荐 DDR颗粒的电路图来源 DDR3 SDRAM电路结构高清图 DDR4 SDRAM电路结构高清图 DDR3 1866控制器 PHY 颗粒之间的带宽关系 channel gt DIMM gt rank gt chip gt