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

news2025/1/5 22:15:16

在这里插入图片描述

前言:

      大学里面,总有很多课程,很浪费时间,学了没点用处,问过老师,为什么信号完整性,示波器使用等课程不开呢,这种是对工作真实有帮助的?
      老师:因为老师可能也不会。💇 💇 💇
      您可能都熟悉 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 跟踪的同样重要的事情,例如信号对齐和串扰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Xjar给SpringBoot项目jar包加密

1. 新建一个SpringBoot项目 2. 在pom文件添加依赖&#xff0c;github地址&#xff1a;https://github.com/core-lib/xjar <dependencies><!-- 添加 XJar 依赖 --><dependency><groupId>com.github.core-lib</groupId><artifactId>xjar&l…

UNI-APP_i18n国际化引入

官方文档&#xff1a;https://uniapp.dcloud.net.cn/tutorial/i18n.html vue2中使用 1. 新建文件 locale/index.js import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: zhHans,zh-Hant: zhHant }…

AI大模型系列之七:Transformer架构讲解

目录 Transformer网络是什么&#xff1f; 输入模块结构&#xff1a; 编码器模块结构&#xff1a; 解码器模块: 输出模块结构&#xff1a; Transformer 具体是如何工作的&#xff1f; Transformer核心思想是什么&#xff1f; Transformer的代码架构 自注意力机制是什么…

【Linux】:多线程(读写锁 自旋锁)

✨ 倘若南方知我意&#xff0c;莫将晚霞落黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…

SELECT的使用

目录 1、SQL的查询命令 1.1 SELECT语句 1.2 投影查询 1.3 选择查询 1.4 聚合函数查询 1.5 简单分组查询(GROUP BY) 1.6 内连接查询 1.7 外连接查询 1.8 子查询 1. 无关子查询 2. 相关子查询 带exists的相关子查询&#xff1a; 1.9 集合查询 1. UNION(并) 2. INT…

Vue项目结构推荐(复杂国际化项目与一般项目结构)

Vue项目结构推荐 一、一般项目结构二、复杂国际化项目结构总结/建议 下面结构是基于Vue和TypeScript开发的项目结构下src包下的结构&#xff0c;若只用到vue与js。则去掉typescript部分的包即可。 一、一般项目结构 assets&#xff1a;存放静态资源&#xff0c;如图片、字体、样…

BOC调制信号matlab性能仿真分析,对比功率谱,自相关性以及抗干扰性

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

电影院售票 - 策略模式(Strategy Pattern)

策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&#xff08;Strategy Pattern&#xff09;策略模式概述策略模式结构图策略模式主要包含的角色 talk is cheap&#xff0c; show you my code总结 策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&…

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六)&#xff1a;环形进度条 拓展而来。 最终效果如下&#xff1a; 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

【北京迅为】iTOP-4412全能版使用手册-第七十章 Linux内核移植

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

CG顶会论文阅读|《科技论文写作》硕士课程报告

文章目录 一、基本信息1.1 论文基本信息1.2 课程基本信息1.3 博文基本信息 二、论文评述&#xff08;中英双语&#xff09;2.1 研究问题&#xff08;Research Problem&#xff09;2.2 创新点&#xff08;Innovation/Contribution&#xff09;2.3 优点&#xff08;Why this pape…

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…

git 问题解决记录

在用git上传文件到仓库中出现了2个问题 第一个问题&#xff1a; 需要修改git的代理端口与电脑自己的代理服务器设置中的端口和VPN的端口保持一致&#xff0c; 比如我的端口是7897&#xff0c;就设置 git config --global http.proxy http://127.0.0.1:7897 git config --glo…

XML结构快捷转JSON结构API集成指南

XML结构快捷转JSON结构API集成指南 引言 在当今的软件开发世界中&#xff0c;数据交换格式的选择对于系统的互操作性和效率至关重要。JSON&#xff08;JavaScript Object Notation&#xff09;和XML&#xff08;eXtensible Markup Language&#xff09;是两种广泛使用的数据表…

Oracle 创建本地用户,授予权限,创建表并插入数据

目录 一. 用户的种类二. 切换session为PDB三. 创建用户并授予权限四. 创建表空间五. 为用户分配默认表空间并指定表空间配额六. 通过创建的用户进行登录七. 创建脚本&#xff0c;简化登录八. 查看用户信息九. 创建表&#xff0c;并插入数据9.1 查看当前用户的schema9.2 插入数据…

系统设计——大文件传输方案设计

摘要 大文件传输是指通过网络将体积较大的文件从一个位置发送到另一个位置的过程。这些文件可能包括高清视频、大型数据库、复杂的软件安装包等&#xff0c;它们的大小通常超过几百兆字节&#xff08;MB&#xff09;甚至达到几个吉字节&#xff08;GB&#xff09;或更大。大文…

【老白学 Java】简单位移动画

简单位移动画 文章来源&#xff1a;《Head First Java》修炼感悟。 上一篇文章中&#xff0c;老白利用内部类的特性完成了多个事件的处理&#xff0c;感觉还不错。 为了更深入理解内部类&#xff0c;本篇文章继续使用内部类创建一个画板&#xff0c;完成简单的位移动画&#x…

彻底解决 Selenium ChromeDriver 不匹配问题:Selenium ChromeDriver 最新版本下载安装教程

在 Python 的 Selenium 自动化测试中&#xff0c;ChromeDriver 是不可或缺的工具。它作为代码与 Chrome 浏览器的桥梁&#xff0c;但如果版本不匹配&#xff0c;就会导致各种报错&#xff0c;尤其是以下常见问题&#xff1a; selenium.common.exceptions.SessionNotCreatedExc…

[CTF/网络安全] 攻防世界 warmup 解题详析

查看页面源代码&#xff0c;发现source.php 得到一串代码&#xff0c;进行代码审计&#xff1a; <?phpclass emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];…

基于fMRI数据计算脑脊液(CSF)与全脑BOLD信号的时间耦合分析

一、前言 笔者之前的文章《基于Dpabi和spm12的脑脊液(csf)分割和提取笔记》,介绍了如何从普通的fMRI数据中提取CSF信号。首先是基础的预处理,包括时间层校正、头动校正,再加上0.01-0.1Hz的带通滤波。接着用SPM12分割出CSF区域,设置一个比较严格的0.9阈值,确保提取的真是…