当前位置: 首页 > news >正文

爆肝1个月:DDR4 的信号完整性(万字长文SI)

在这里插入图片描述

前言:

      大学里面,总有很多课程,很浪费时间,学了没点用处,问过老师,为什么信号完整性,示波器使用等课程不开呢,这种是对工作真实有帮助的?
      老师:因为老师可能也不会。💇 💇 💇
      您可能都熟悉 DDRx 计算机 RAM(其中 x 是一代)。我想从 SI (Signal Integrity) 的角度和跟踪此接口的原理来告诉您。
      阅读各种 CLU、FPGA、DSP、ASIC 的文档,您可以看到许多不同的建议,即所谓的“经验法则”,用于跟踪 DDR3/4 SDRAM(双倍数据速率同步动态随机存取存储器)。但是在其中您很少能找到为什么需要这样做的信息。在本文中,我将尝试向您解释在电路和拓扑方面改进 SI 的不同方式。
      本文参考谢尔盖的一篇著作,他是一名从事电路和 PCB 拓扑学的大佬。
      由于我只是在自学,我引用德州仪器 (TI) 的话:
在这里插入图片描述
翻译一下:以下应用程序部分中的信息不是Tl组件规范的一部分,Tl不保证其准确性或完整性。Ti的客户有责任确定组件是否适合其用途。客户应该验证和测试他们的设计实现,以确认系统功能。😂😂😂😂😂

相关词语概念:
IBIS:
IBIS模型是一种基于表格的、用于描述集成电路I/O缓冲器行为的模型。它通过提供电压和电流之间的关系来模拟信号的传输特性,从而帮助工程师在设计阶段预测信号完整性问题。说白了,就是仿真模型,一般原厂提供,在vivado中可以找到常见模型。

目录

  • 前言:
  • 一、介绍
    • 1.1 发射器侧的串行匹配
    • 1.2 接收器侧的并行
  • 二、内存连接类型及PCB配置
  • 2.1 内存配置类型:
  • 2.2 数据计算分析
    • 2.2.1 数据控制器到芯片(1 rank)
    • 2.2.2 数据控制器到 2 个芯片(2 rank)
    • 2.2.3 数据 1DPC (1 rank)
    • 2.2.4 数据 1DPC (2 rank)
    • 2.2.5 数据 2DPC (1 rank)
        • 2.2.5.1 内存条上的拓补电阻
    • 2.2.6 数据 2DPC (2 rank)
  • 2.2 PCB过孔影响
  • 三、总结

一、介绍

      我们应该从提高传输速度时遇到的主要问题开始我们的对话:来自 SDRAM 数据线末端的信号反射。为了减少这些反射,从 DDR2 开始添加了内置的片上终止 (ODT)。

      因此,让我们了解一下阻抗匹配是如何发生的。理想情况下,来自驱动器的信号沿着 PCB 传输线传播到负载,并在那里被完全吸收。但是,每当信号通过阻抗变化的部分时,信号就会被反射。例如,驱动器的输出阻抗通常在 15-30 欧姆范围内,传输线为 50 欧姆,而带有 CMOS 逻辑的接收器具有数百千欧姆量级的非常大的输入阻抗。在这种情况下,主要使用两种类型的端接:发射器侧的串行匹配和接收器侧的并行:
在这里插入图片描述

1.1 发射器侧的串行匹配

      在实施例1中,Rs_Term串联终端电阻与R_Driver驱动器的输出阻抗之和必须等于传输线 Z 的波阻抗。在这种情况下,来自线路近端的信号的反射系数为零。

      当设置为 1 时,由于产生的分压器 R_Driver + Rs_Term 和 Z 线的阻抗,等于驱动器电压一半的信号将沿传输线传播。线远端的反射系数为 +1(意味着从远端反射回来的信号与入射信号的幅度相同,但方向相反。反射信号和入射信号将完全叠加。)。由于入射信号和反射信号重叠,接收器输入端的信号将增加到驱动器电压。 反射信号(半振幅)返回到驱动器输入端,并被 R_Driver + Rs_Term 负载完全吸收。但是,如果传输线上有两个接收器(两个内存模块),那么位于线路中间的接收器将具有与分频器之后接收到的信号相同的信号,并且在一段时间后,反射信号将从远处的接收器到达,取决于线的长度 (Vser_mid:表格红色线 ):
在这里插入图片描述
在这里插入图片描述
Vser_mid – 第一个接收器的电压。
Vser_far – 远接收器电压。
从以上可以看出,这种类型的方案并不适合 DDR。

简单分析一下这个表格信号:
中间接收器的信号(红线)比较低,主要是因为:
1、反射信号的延迟导致信号的叠加发生在不同的时间点,导致中间接收器的信号幅度较低。
2、反射信号和直接信号在中间接收器处可能部分抵消,尤其是由于传输线长度引起的时延和相位差异。(反射系数是 +1,表示反射信号与入射信号的幅度相等且相位相反。远端接收器的反射信号会增强远端接收器的信号,但在中间的接收器处,由于信号的反射时间和相位的差异,叠加效果较弱。此时,两个信号(直接信号和反射信号)可能部分抵消,导致中间接收器的信号幅度较低。)

更直白的说:
      远端接收器的反射信号路径相对较简单。当信号从驱动器发出,经过传输线到达远端接收器时,反射信号直接返回到远端接收器。远端接收器会立即接收到反射信号(因为它没有中间的接收器阻止信号的返回)。
      中间接收器的情况较为复杂。当信号从驱动器出发并传播到中间接收器时,反射信号必须从中间接收器传播到远端接收器,再反射回来到中间接收器。这个过程涉及到两段信号传播:
反射信号从中间接收器到达远端接收器,然后再反射回来,这个过程比远端接收器直接接收到反射信号的时间要长。

1.2 接收器侧的并行

      第二种类型是接收方并行协商。在该方案中,电阻并联连接的等效电阻Rp_Term选择等于传输线的波阻抗 Z,即 Rp_Term=2*Z。因此,负载上不会有反射,因此线路中第二个接收器的信号将具有良好的形状:
在这里插入图片描述
在这里插入图片描述
      因此,这种类型的协商适合在 DDR 中使用。这就是 DDR1-DDR3 选择具有类似协商的短截线系列端接逻辑 (SSTL) 类型的原因。DDR 接口中的这些反向端电阻器称为 ODT。它与线路的连接及其电阻由控制器在配置过程中确定,通过 RTT_PARK、RTT_NOM RTT_WR 进行设置。

      还值得注意的是,由于负载侧的匹配,在容性负载下运行时,瞬态响应上升时间将是发射器侧匹配传输线的一半。
      SSTL 逻辑的输入可以使用两个电阻器连接,一个连接到 VDDQ,另一个连接到 GND,或者一个连接到 VDDQ/2:
在这里插入图片描述
从 DDR3 切换到 DDR4 时,负载侧(接收器)协商方案从中心抽头 I/O 接口更改为伪开漏 (POD) I/O 接口。
中心抽头IO:
在这里插入图片描述
伪开漏IO:
在这里插入图片描述
      这样做是为了减少电流消耗。也就是说,使用 POD 终端时,直流电 (DC) 仅在驱动器设置零时发生。同时,还添加了一个有趣的功能 – DBI(数据总线反转)。如果准备将一个字节的数据传输到包含 0 多于 1 的总线,它还有助于通过反转数据来减少消耗。也就是说,在数据传输期间,总线上最多可以有一半的 0。因此,由于同时进入电流流动状态的端口较少,因此电源中的噪声较小。
      使用 DBI 函数时的数据转换示例:

数据来自 COREDM/DBIDM/DBI
1110 101011110 1010
1000 100000111 0111

      由于迁移到 POD,Vref 选择方案已更改。Vref 是参考电压,相对于该电压确定锁存器 1 或 0 的阈值电平。对于 DDR1-DDR3,无论选择何种 ODT 值,该电压都是固定的,并且等于 VDDQ 电压的一半。在 DDR4 中,有必要将其移位,因为由于产生的分压器,电平 0 会根据电阻器的 ODT 和驱动器的阻抗而变化。这发生在配置开始时的所谓训练期间。
在这里插入图片描述
在这里插入图片描述
      可以从以下范围内选择R_ODT:34、40、48、60、80、120、240 欧姆。选择这组电阻主要是为了在将 2 个内存条连接到一个 DDR 控制器时能够很好地匹配线路,同时也是为了降低功耗。所选的 ODT 值越低,消耗的能量就越高。
      R_Drive可以从以下范围内选择:34、48 欧姆。根据标准,这些阻抗是指 SDRAM,但控制器可能具有不同的这些值集。
      让我们看一下具有不同 ODT 值的所谓“眼”图。建模方案经过简化(R_driver=48 欧姆,线路阻抗=50 欧姆,ODT 已更改):
在这里插入图片描述
3200Mb 时的仿真结果:

在这里插入图片描述
      随着 ODT 值的增加,“眼”的跨度增加,但由于符号间干扰 (ISI) 和反射的增加,其失真也会增加。 (有关眼图的相关知识,可以自己找文章或者视频研究一下,这里不做讲解)

      ISI 是由于高频信号(01010101 位序列)没有时间达到标称值,并且在切换状态时更快地返回到相反的值,这与低频序列 (00001111) 相反:
在这里插入图片描述
随着 ODT 电阻的增加,信号的上升时间增加,反射增加:(红线更接近0)
在这里插入图片描述
      ODT=48 Ω的线路上出现的反射很可能是由于 SDRAM 输入电容造成的,这会给线路带来不均匀性。
      现在让我们看看不同的内存连接配置以及它们对 DATA 和 ADDR/CMD 线路的协商基础。


2024.11.10 21:45

二、内存连接类型及PCB配置

2.1 内存配置类型:

      DDR 接口可以有很多不同的选项将内存芯片连接到控制器,这对于能够连接不同数量的内存和不同的数据总线宽度(即不同数量的 SDRAM 芯片)是必要的。

有以下选项:
控制器到 DQ 上的 1 个芯片,即 1 rank;
(换句话说,该配置中的每个Rank仅由一个物理芯片组成,且该芯片的所有数据引脚都直接与内存控制器的数据总线相连。)(类似国内很多FPGA开发板一样,上面有1个或若干个DDR颗粒)

控制器到 DQ 上的 2 个芯片,即 2 rank;

1DPC 1R - 每个通道 1 个 DIMM(双列直插式内存模块),1 rank;

1DPC 2R - 每个通道 1 个 DIMM ,2 rank;

2DPC 1R - 每个通道 2 个 DIMM,1 rank;

2DPC 2R - 每个通道 2 个 DIMM,2 rank;

2.2 数据计算分析

2.2.1 数据控制器到芯片(1 rank)

      这很容易连接,因为这种连接具有“最大的安全边际”。因此,例如,最困难的选择是当 4 个存储芯片(2DPC 和 2 列)连接到一条数据线时。因此,在我们的例子中,你至少可以使用 ODT - 240 欧姆,这将减少消耗和加热。在这样的拓扑中,最好多注意串扰。

      但有一个有趣的点,在具有 34 欧姆驱动器和 34 欧姆线路的线路中,抖动高于具有不同 ODT 选项的 34 欧姆驱动器和 50 欧姆线路。现在弄清楚为什么会发生这种情况,以及信号是如何形成和反映的(为了清楚起见,简化了此操作):
在这里插入图片描述

由于使用了 POD,因此可以假设电压会相对于 1.2V 发生变化。
计算分析:

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

让我们看看使用理想线、负载和驱动器获得的图表:
发射器:
在这里插入图片描述
接收器:
在这里插入图片描述
使用 IBIS 模型构建的信号图表:

在发射器上:在接收器上:
在这里插入图片描述
      这些电平与上述图表不同,因为电阻本身在不同条件下可能与 IBIS 中的标称值不同,并且由于芯片输入/输出的寄生参数不同。

反射信号与有用信号的比值为:0.335V 至 0.6V = 0.558反射信号与有用信号的比值为:0.238V 至 0.714V = 0.333

      由于反射水平较高(该变体具有 34 欧姆驱动器,线路阻抗为 34 欧姆),它们将对驱动器的输出电流产生更强的影响,即输出电流与不同数据序列的分散,因此,不同的反射会更大。这将影响输出信号的上升和下降速率:

      蓝色表线的长度等于信号波长的一半。红色表线的长度等于传输信号波长的四分之一。通过这种方式,我们可以模拟信号的最大和最小反射情况。
在这里插入图片描述
      这些图表显示,阻抗为 50 欧姆的线路的电流上升速率差异小于阻抗为 34 欧姆的线路的电流上升率差异。这就是为什么 50 欧姆线的抖动更小的原因。

2.2.2 数据控制器到 2 个芯片(2 rank)

      这是一种连接选项,其中数据信号(DQx、DM、DQSx)并联连接到两个 SDRAM 芯片。这些 SDRAM 依次工作,哪一个由片选 (CS) 信号决定。在电路板上执行此操作的最简单方法是将芯片彼此安装在一起(镜像)。连接将如下所示:
在这里插入图片描述
通常,线路的阻抗始终等于 50 欧姆。但对于对齐来说,这是一个糟糕的选择,因为在线条的发散点会有反射。这可以通过使用以下 topology 选项来避免:
在这里插入图片描述
      但是由于波阻力的线路非常不同,因此此选项很难实现。但是,即使我们做出微小的差异,也会对减少反射产生积极影响。例如,我们可以追踪到 40 欧姆的叉子 (TL0) 并追踪到 60 欧姆的芯片 (TL1, TL2)。同时,ODT 也对最终的眼睛有很大影响,因为它结果是两个 ODT 的并联连接,如果你选择一个较小的值,例如 48 欧姆,眼睛的张开度会大大变窄高度。

以下是两种拓扑的示例、它们的眼图以及它们之间的区别:
在这里插入图片描述

      可以看出,有明显的效果。虽然两种选择都有很大的余量,但考虑到串扰以及电源噪声,“眼睛”仍然会闭合。因此,这种改进可能是有益的。

      眼图的张开度也受从线路发散点到芯片的区域长度的影响,因此这与 2DPC 等连接选项更相关。但还有其他减少反射的选项,我们将进一步考虑。

2.2.3 数据 1DPC (1 rank)

我们来看一下 1DPC (1 Rank) 的数据连接图:
在这里插入图片描述
此处,插槽 1 是具有 1 列的双列直插式内存模块 (DIMM)。

Rstub 是一个 15 欧姆的电阻器,放置在内存芯片上,它的用途是什么,我们将进一步考虑。

TL1 是内存模块电路板上的一条走线,阻抗为 50 欧姆。因此,如果只使用板上的一个插槽,建议使用阻抗为 50 欧姆的 TL0。

带有 34 欧姆驱动器的选项在这里比使用 48 欧姆的效果更好,因为它提供了更大的眼图开放度。为了清楚起见,让我们考虑几个选项:
在这里插入图片描述
      有趣的是,值得注意的是,Rstub 电阻器减少了眼图的张开度,但由于内存模块是标准配置,因此它存在于所有模块上。它有助于提高使用 2DPC 时的 SI:(下图可以看出来)

在这里插入图片描述
增加终端电阻的 ODT 值将增加眼图的张开度并降低电流消耗。

2.2.4 数据 1DPC (2 rank)

我们来看看 1DPC (2 Rank) 的数据连接图:
在这里插入图片描述
在这里插入图片描述
此处,插槽 1 是 Rank 为 2 的内存 DIMM。

Rstub 是放置在内存芯片上的 15 欧姆电阻器。

TL1、TL2 是内存模块电路板上的走线,阻抗为 50 欧姆。因此,如果只使用板上的一个插槽,建议使用阻抗为 50 欧姆的 TL0。

34 欧姆驱动器选项在这里和 48 欧姆一样有效,因为它提供了更多的眼图开放性。为清楚起见,请考虑以下几个选项:
在这里插入图片描述

在这里插入图片描述
您可以看到,当切换到 ODT 240 Ohm 时,信号就很差了,但同时抖动和过冲增加,并且轨道更容易出现串扰。


2024.12.21 15:20

2.2.5 数据 2DPC (1 rank)

我们来看一下 2DPC (1 Rank) 的数据连接图:
在这里插入图片描述
在这里插入图片描述
连接器区域中的拓扑部分示例:
在这里插入图片描述
此处,插槽 1.2 是具有 1 个列的内存 DIMM。

Rstub 是放置在内存芯片上的 15 欧姆电阻器。

TL1 是内存模块电路板上的走线,阻抗为 50 欧姆。

      此选项适用于两个 1 列的 DIMM 连接到同一控制器时。此拓扑的主要问题是,如果信号写入其中一个 DIMM,例如,写入插槽 2,则由于部分信号将从插槽 1 反射并到达插槽 2,因此信号将在那里发生失真:
在这里插入图片描述
      可以减少这种反射。这可以通过在插槽 1 中包含 ODT=48 Ω来实现,这将使我们免于反映在线路的那一端。当在插槽 2 中使用时,ODT=48 Ω,它将大大减少眼图的张开度,因为两个 48 Ω的 ODT 将并联。但是由于我们不担心我们写入的插槽会有反射,因为它们实际上不会影响这个插槽中的信号质量,因此最好对插槽 2 使用高电阻端接:
在这里插入图片描述
在这里插入图片描述
考虑到建模中有许多简化,利润率非常低。
在这里插入图片描述
这种终止对眼图的张开效果明显更好。

这同样适用于从内存中读取:
在这里插入图片描述
在这里插入图片描述
可以看出,有了这样的 ODT 组合,边际就更大了。还可以清楚地看到,由于过冲和抖动增加,不建议使用 240 欧姆。

提高 SI 的另一种方法是降低数据线到连接器的阻抗,以减少并行化点的反射。上面讨论过:
在这里插入图片描述
由于内存模块上的阻抗固定为 50 欧姆,因此我们只能降低连接器的阻抗。
在这里插入图片描述
可以看出,眼图张开度的增加发生了大约 55 mv 的高度。

我们可以进行的下一个改进是连接器的对称连接:
在这里插入图片描述
或此选项:
在这里插入图片描述
在这里插入图片描述
正确的选项提供大约 +35mV 的高度。

从内存中读取:
在这里插入图片描述

2.2.5.1 内存条上的拓补电阻

在阅读时,您还可以看到这种拓扑的优势。

Rstub 中:

现在是时候弄清楚 Rstub 的用途了。

rstub 是一个电阻器,位于 DIMM 上,尽可能靠近边缘连接器:

在这里插入图片描述
      这个电阻器乍一看似乎是 SDRAM 的串联端接电阻器,但这不是必需的,因为驱动器的内部阻抗可以是 34 欧姆或 48 欧姆。它用于抑制多 DIMM 配置中当前未使用的模块的反射,从而提高信号质量(很好地抑制过冲并减少抖动)。该电阻器的值为 15 欧姆,与 ODT=34 欧姆一起,您将在线路末端获得良好的匹配。

记录:
在这里插入图片描述
高于过冲和抖动。
在这里插入图片描述
左侧版本的过冲和抖动略少,但右侧版本的眼图张开度更高。

读数:
在这里插入图片描述
在阅读时,您可以特别清楚地看到过冲和抖动放大倍率,尽管眼图张开度几乎相同。
在这里插入图片描述
在读取时,过冲和抖动放大倍率特别清晰可见。

2.2.6 数据 2DPC (2 rank)

我们来看看 2DPC (2 Rank) 的数据连接方案:
在这里插入图片描述
在这里插入图片描述
此处,插槽 1.2 是具有 2 个列的内存 DIMM。

Rstub 是放置在内存芯片上的 15 欧姆电阻器。

TL1 是内存模块电路板上的一条走线,阻抗为 50 欧姆。

当两个 DIMM 各具有 2 列时,此选项适用于连接到同一控制器的情况。此拓扑中的主要问题与 2DPC(1 列)变体中的主要问题相同,并且是如果信号写入其中一个 DIMM(例如,插槽 2),它将在那里失真,因为部分信号将从插槽 1 反射并到达插槽 2:
在这里插入图片描述
提高信号质量的选项与上面提到的完全相同。

以下是基于模块数量、排名和写入或读取的数据行协商示例:

写入的 SDRAM ODT 矩阵:
在这里插入图片描述
SR: single-ranked DIMM;

DR: dual-ranked DIMM.

用于读取的 SDRAM ODT 矩阵:
在这里插入图片描述
SR: single-ranked DIMM;

DR: dual-ranked DIMM

ADDR/CMD通用
DDR3/4 对地址和命令使用飞越式拓扑,具有尽可能小的内存存根和线尾终止(因为这些信号没有内部 ODT):
在这里插入图片描述

R_term 的值范围很广,在内存模块中R_term通常在 40 欧姆的范围内。

在 UDIMM 中,单个地址/命令行可以连接到 9 个内存芯片(如果使用 ECC),如果是单列,则连接到 18 个芯片(如果是两个列):
在这里插入图片描述
如果使用 2 个插槽,那么最大可能的是将一条线连接到 36 个芯片并在两个内存模块上热化。这样,地址/命令行就连接到了繁重的负载。

例如,RDIMM 内存在一个模块中已经可以有多达 36 个芯片(如果使用
具有 4 位数据的 SDRAM),因此它们在地址上使用缓冲区,从而提高信号质量:

在这里插入图片描述
线路末端需要一个端接电阻器,这样就不会有反射,不会使其余芯片上的信号严重失真:
在这里插入图片描述
由于每条 ADDR/CMD 线可以连接大量芯片,因此值得密切关注线的均匀性,以免沿途发生反射。

ADDR/CMD 1 芯片
我见过许多使用单个 SDRAM 芯片来应用线路末端端接的设计,但这不是必需的。当使用 2 个或更多芯片时(并且远程芯片上的信号良好),这成为强制性的:
在这里插入图片描述
在这里插入图片描述
ADDR/CMD 9 芯片
在分配地址和命令时,阻抗必须恒定,并且与信号整个路径上的R_term相对应,这一点尤为重要。否则,将发生反射,导致 SDRAM 上的信号严重失真。但这很难确保,因为在飞越拓扑中,沿路径存在许多阻抗不均匀性,例如过孔和芯片 SDRAM 的电容负载。

让我们看一下以下连接:
在这里插入图片描述
Rterm=40 Ω

TDR:
在这里插入图片描述
您可以看到阻抗下降到 Rterm 以下,这是由于芯片的 SDRAM 的输入容量,这些 SDRAM 沿地址线分布。

眼图:
在这里插入图片描述
在这里插入图片描述
远处芯片上眼图的最佳开口是靠近终端电阻器。这是因为 SDRAM 输入电容会产生沿相反方向传播的信号反射。

原理图上,地址行中的 SDRAM 输入容量可以表示如下:
在这里插入图片描述
在这里插入图片描述
这种不均匀性(电容)的影响可以通过补偿不均匀性(电感)来减弱。一种异质性将补偿另一种异质性。也就是说,通过改变电容两侧的线宽(增加其阻抗),可以补偿其异质性。从电容不均匀性反射的负极性信号被走线狭窄部分反射的正极性信号所抵消。

它看起来像这样:

在这里插入图片描述
在这里插入图片描述
增加阻抗可以降低反射信号的高度,前提是迎面而来的信号边缘的上升或下降时间超过线路校正部分产生的有效延迟量。例如,L-comp 基于相同的原理:
在这里插入图片描述
相对于 Z=Rterm 的阻抗越高(导体越窄),可以实现的校正区域的截面就越短,因此阻抗跳跃就越小。例如,在 UDIMM 模块中,SDRAM 之间的走线为 0.075mm,宽点为 0.15mm。

这是减少 UDIMM 模块中使用的不均匀性的方法:
在这里插入图片描述
TDR:
在这里插入图片描述

可以看出,阻抗保持在 Rterm 区域 (40 欧姆)。

眼图:

在这里插入图片描述
在这里插入图片描述
可以看出,与前一种情况相比,眼图的张开度有了明显的改善。例如,这里是两个选项(第一个筹码)最坏情况的眼图轮廓:
在这里插入图片描述
~30% 改进

2.2 PCB过孔影响

现在让我们试着弄清楚 make 的影响是什么。在前面的配置中,以下 interlayer 连接结构用于连接地址总线上的 SDRAM 芯片:
在这里插入图片描述
这就是 UDIMM 内存模块通常的分离方式,使用这种拓扑结构需要最少的层数。这种通孔具有电容特性,并被添加到 SDRAM 输入电容中,这就是为什么需要如此大的阻抗差来衰减这些不均匀性的原因。

您可以使用以下连接:
在这里插入图片描述
通过这样的连接,电感已经存在,因此需要更小的阻抗差来均衡 TDR。

让我们看一下与此类过孔的连接,其中 Rterm=40 欧姆:

在这里插入图片描述
TDR:
在这里插入图片描述
通过这样的过孔,可以看出,与第一种层间连接选项相比,TDR 明显更高,因此需要更小的阻抗差来补偿这些不均匀性。

因此,拓扑中的每种情况都是唯一的,您需要选择布线、过孔的参数和信号层的位置。在这里,我们只能建议在所有地址进行相同类型的连接,这将有助于拓扑参数的选择。下面是一个拓扑示例,由于密度的原因,建立了不同类型的连接(这是一个等级,一些芯片在顶部,一些在底部):

在这里插入图片描述
对于这样的拓扑结构,设计结构来补偿不均匀性非常困难且耗时。

此行的 TDR 如下:
在这里插入图片描述
我们可以在 TDR 上观察到大量导致反射的不均匀性。

三、总结

      从本文中可以看出,从 SI 的角度来看,DDR4 SDRAM 接口是一件非常重要的事情。开发它的工程师做了大量工作,以提高每个新版本界面的运行速度。在以后的文章中,我将尝试告诉您有关SDRAM 跟踪的同样重要的事情,例如信号对齐和串扰。

相关文章:

爆肝1个月:DDR4 的信号完整性(万字长文SI)

前言: 大学里面,总有很多课程,很浪费时间,学了没点用处,问过老师,为什么信号完整性,示波器使用等课程不开呢,这种是对工作真实有帮助的? 老师:因为老师…...

前端js验证码插件

相关代码,在最上方的绑定资源...

关于easy-es对时间范围查询遇到的小bug

前言:在使用easy-es之前作为一个小白的我只有es原生查询的基础,在自己通过查看官方文档自学easy-es遇到了一个挫折,其他的还好语法和MybatisPlus差不多,正以为我觉得很快就能入手,在对时间范围的判断就给我当头一棒&am…...

Mask R-CNN

目录 摘要 Abstract Mask R-CNN 网络架构 Backbone RPN Proposal Layer ROIAlign bbox检测 Mask分割 损失计算 实验复现 总结 摘要 Mask R-CNN是在Faster R-CNN的基础上进行改进的目标检测和实例分割网络。Faster R-CNN主要用于目标检测,输出对象的边…...

大模型-Dify使用笔记

大模型-Dify使用笔记 0、调整docker镜像源1、安装1、Docker Compose方式部署 2、访问 Dify 0、调整docker镜像源 由于墙的存在,所以默认的docker镜像源很难拉取项目,需要调整相关的docker配置文件 vim /etc/docker/daemon.json添加如下docker镜像源 { …...

Suno Api V4模型无水印开发「综合实战开发自己的音乐网站」 —— 「Suno Api系列」第14篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中,支持120并发任务 Suno Api V4模型无水印开发「灵感模式」 —— 「Suno Api系列」第1篇 Suno Api V4模型无水印开发「自定义模式」 —— 「Suno Api系列」第2篇 Suno Api V4模型无水印开发「AI生成歌词」…...

云原生架构中的中间件容器化:优劣势与实践探索

在云原生架构逐步推进的过程中,许多企业已经开始将应用和服务容器化,以充分利用云计算带来的弹性和自动化。随着容器技术的发展,容器化不仅仅限于应用层,越来越多的中间件也被考虑纳入容器化范畴,包括Redis、Kafka、Ra…...

如何测试模型推理性能:从零开始的Python指南

如何测试模型推理性能:从零开始的Python指南 什么是模型推理性能?测试模型推理性能的步骤1. 监测内存使用情况2. 测试模型吞吐量 运行测试总结 在机器学习和深度学习中,模型的推理性能是一个非常重要的指标。它可以帮助我们了解模型在实际应用…...

我们来学activiti -- bpmn

bpmn 题记bpmn结余 题记 在《Activiti很难学》提到学习知识点需要面对的思想钢印问题 按常见步骤,先展示下官方的客套话 BPMN(Business Process Model and Notation)是一种业务流程建模符号, 它是一种图形化的语言,用…...

【每日学点鸿蒙知识】节点析构问题、区分手机和pad、 Navigation路由问题、Tabs组件宽度、如何监听Map

1、HarmonyOS 只调用根节点的dispose,是否其下的子节点都能析构掉还是需要遍历子节点,都执行dispose才能正常析构? 前端持有引用关系的需要dispose,new出来的builderNode和FrameNode也需要dispose。只调用根节点的dispose,无法保证其下的子节…...

敏捷测试文化的转变

敏捷文化是敏捷测试转型的基础,只有具备敏捷文化的氛围,对组织架构、流程和相关测试实践的调整才能起作用。在前面的敏捷测试定义中,敏捷测试是遵从敏捷软件开发原则的一种测试实践,这意味着敏捷的价值观。 此外,从传…...

如何配置线程池参数,才能创建性能最好、最稳定的Spring异步线程池?

配置性能最好、最稳定的Spring异步线程池,需要综合考虑业务场景、硬件资源(CPU核心数、内存等)、并发量、任务特性(CPU密集型、IO密集型等)以及线程池参数。 以下是优化线程池配置的关键点及代码示例: 线程…...

【时间之外】IT人求职和创业应知【80】-特殊日子

目录 北京冬季招聘会 OpenAI CEO炮轰马斯克 英伟达推出全新AI芯片B300 莫欢喜,总成空。本周必须要谨行慎言。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如提升自己。提升自己的捷径就是学习和思考…...

Vue中接入萤石等直播视频(更新中ing)

一、萤石: 1. 萤石云开发文档: https://open.ys7.com/help/31 2、安装: npm install ezuikit-js --save 3、在文件中引用:import EZUIKit from ezuikit-js 4、具体代码: 获取accessToken:https://open.…...

如何学习、使用Ai,才能跟上时代的步伐?

目录 1. 打好基础:理解AI的核心概念 2. 学习AI的核心领域 3. 实践:动手做项目,积累经验 4. 利用AI工具提升工作效率 5. 培养AI思维与批判性思维 6. 关注AI领域的最新研究与趋势 7. 培养跨学科能力 总结: 在AI时代&#xf…...

RabbitMQ中的异步Confirm模式:提升消息可靠性的利器

在现代分布式系统中,消息队列(Message Queue)扮演着至关重要的角色,它能够解耦系统组件、提高系统的可扩展性和可靠性。RabbitMQ作为一款广泛使用的消息队列中间件,提供了多种机制来确保消息的可靠传递。其中&#xff…...

Linux(Centos 7.6)目录结构详解

Linux(Centos 7.6)是一个操作系统,其核心设计理念是将一切资源抽象为文件,即一切皆文件。比如系统中的硬件设备硬盘、网络接口等都被视为文件。Windows系统一般是分为C、D、E盘。而Linux(Centos 7.6)是以斜线"/"作为文件系统的开始目录&#x…...

upload-labs关卡记录8

黑名单过滤,同时不能进行双写,大小写,特殊可解析后缀,.htaccess,都不能。点击提示发现: 禁止上传所有可解析后缀,抓包试试: 抓包加空格发现也不能绕过,看源码分析吧: $i…...

GXUOJ-算法-第二次作业

1.矩阵连&#xff08;链&#xff09;乘 问题描述 GXUOJ | 矩阵连乘 代码解答 #include<bits/stdc.h> using namespace std;const int N50; int m[N][N]; int p[N]; int n;int main(){cin>>n;//m[i][j] 存储的是从第 i 个矩阵到第 j 个矩阵这一段矩阵链相乘的最小…...

Gavin Wood 的 Polkadot 2024 年度回顾:技术突破与未来的无限可能

原文&#xff1a;https://medium.com/polkadot-network/polkadot-roundup-mmxxiv-8d3e880dd637 作者&#xff1a;Gavin Wood 编译&#xff1a;OneBlock &#x1f384; 各位波卡生态的 Buidler 们&#xff0c;圣诞快乐&#xff01;在这个充满节日气氛的时刻&#xff0c;很高兴与…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...