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

Stratix 10 FPGA DDR4 选型

文章目录

  • 前言
  • DDR3 和 DDR4 的区别
  • Micron 8Gb DDR4 规格书详解
    • Micron 8Gb DDR4 编码规则
    • Configuration
      • DDR4 寻址原理
    • Speed Grade
      • 内存的频率
        • MT/s 与 MHz:更好的内存速度衡量指标
        • 为什么 DDR4 的核心频率与 I/O 总线频率的比例是 1:4 呢?
    • 带宽
  • Altera FPGA EMIF 规格
    • Device Family
    • Temperature & Speed Grade
    • Interface Type
    • Memory Standard
    • Clock rate of user logic
    • Memory Format & Topologies
      • Channel,Rank 和 Chip
      • ECC
    • 示例 (Stratix SX E3)
      • Hard Controller + Hard PHY
      • HPS
  • External Memory Interfaces Stratix® 10 FPGA IP User Guide 详解
    • Stratix 10 EMIF 架构:I/O 子系统
    • Stratix 10 EMIF 架构:I/O Bank
    • 用于硬核处理器子系统的 Stratix 10 EMIF
    • 使用 HPS 的 Stratix 10 EMIF IP 的 I/O Bank 使用限制
    • Stratix 10 EMIF IP 引脚指南(for DDR4)
      • 通用指南
      • 命令和地址信号
      • alert_n 引脚终端建议

前言

DDR3 和 DDR4 的区别

什么是 DDR4 SDRAM Bank Groups?

DDR4 SDRAM 中使用的 bank group 功能是从 GDDR5 图形存储器中借来的。为了理解对 bank group 的需求,必须理解 DDR SDRAM 预取(prefetch)的概念。预取是描述每次使用 DDR 内存执行列命令时获取多少个数据字的术语。由于 DRAM 的核心比接口慢得多,因此可以通过并行访问信息,然后将其序列化到接口来弥补差异。例如, DDR3 预取 8 个字,这意味着每次执行读或写作时,SDRAM 都会对 8 个数据字执行,并在两个 clock edges 的四个 clock cycles 内突发输出或输入,总共连续执行 8 次操作。从根本上说,可以认为 DDR3 的预取为 8,接口频率比 DRAM 内核频率快 8 倍。

预取的缺点是它有效地决定了 SDRAM 的最小突发长度。例如,在 DDR3 的预取为 8 的情况下,很难获得 4 个字的有效突发长度。bank group 功能允许设计人员保持较小的 prefetch,同时提高性能,就像 prefetch 更大一样。

由于 DRAM 的内核速度在代与代之间没有显著变化,因此预取随着每一代 DDR 的增加而增加,以便在 SDRAM 接口上提供更高的速度。然而,继续使用 DDR4 将需要 DDR4 采用 16 的预取。由于必须包含所有电路,此更改将使 DRAM 更大。这会使 DRAM 过于昂贵,因此设计人员无需预取 16 个,从而节省了成本。更重要的是,16 个字的预取与当今计算机中常见的 64 字节缓存行大小不匹配。在使用 64 字节高速缓存行的典型计算环境中,使用 64 位或 72 位接口时,预取 8 和突发长度 8 是更好的匹配。缓存行大小和突发长度的任何此类不一致都会对嵌入式系统的性能产生负面影响。

DDR4 的预取和性能

要了解 prefetch 如何影响性能,了解 SDRAM 随时间的变化会很有帮助。图1显示了与最大列周期(the maximum column cycle)相比,每一代 SDRAM 的最大数据速率(the maximum data rate)。图 1 显示,内核非常慢,随时间变化很小,而接口速度随时间显著增加。SDRAM 的内核并没有随着时间的推移而变得更快,这主要是因为更小的工艺所带来的任何好处都被更大的 SDRAM 所抵消,因为它的容量更大。
在这里插入图片描述

当引入原始 SDR (单数据速率) SDRAM 时,不需要预取。每次执行列循环时,它都会访问一个数据字,该数据被从 SDRAM 中输出。现在,虽然 SDRAM 实际上确实有一种叫做 2N 规则的东西,它可以容纳 2 的预取,但 2N 被视为规范的限制性部分,所有最终成为商用设备的 SDRAM 器件都有 1 的预取。然而,一旦引入 DDR SDRAM,内核就无法再跟上 SDRAM 所需的带宽。这是引脚上的最大数据速率与内部列周期之间分离的开始,如图 2 所示。
在这里插入图片描述

这种分离随着时间的推移而加剧。随着 DDR2 的预取为 4 和 DDR3 的预取为 8,差距变得更大。DDR4 仍在使用 8 的预取,但引入了 bank group 的概念,以避免更大的预取的负面影响。

图 3 显示了预取如何通过四代 SDRAM 演变,从 SDR SDRAM 到 DDR3 SDRAM。对于任何单列操作(例如,读取或写入),一次访问的字数由内存数组的数量以及将这些字传出或进入 SDRAM 内核所需的大约周期时间 (MHz) 表示。

顶行显示 SDR SDRAM。回到 90 年代中期,内存阵列速度与 I/O 速度相匹配。很快,引入了 2 的预取或 DDR 的 2N 预取(也适用于 LPDDR),以实现比 SDRAM 内核更高的数据速率。所示的 multiplexer 可以访问这两个字,然后它们在 clock 的一个 rising edge 和一个 falling edge 的接口上被多路复用。这种模式一直延续到 DDR3/LPDDR3 的 8N 预取。
在这里插入图片描述

DDR4 和 Bank Groups

问题变成了:这如何应用于 DDR4 及其 8N 预取?如果 DDR4 遵循图 3 所示的趋势,DDR4 的预取将为 16,但我们已经看到这是不可取的。DDR4 通过引入 bank group 的概念来避免这个问题。对于 bank group,在一个 bank group 中执行 8 的预取,而另一个 8 的预取可以在另一个独立的 bank group 中执行。bank group 是单独的实体,因此它们允许在一个 bank group 内完成列循环,但该列循环不会影响另一个 bank group 中发生的情况。实际上,DDR4 SDRAM 可以对其内部 bank group 进行时分多路复用,以隐藏内部 SDRAM 内核周期时间比接口上 8 次突发所需的时间更长的事实。图 4 显示了此过程如何寻找具有两个 bank group 的 x16 DDR4 SDRAM,这通常用于嵌入式应用。
在这里插入图片描述

新的 Bank Group 规范

bank group 的引入带来了 DDR4 的新规格。两个关键规格是 tCCD_S 和 tCCD_L。“CCD” 代表列侧的 “列到列延迟” 或 “命令到命令延迟”。“_S” 代表 “短”,“_L” 代表 “长”。

当在一个具有 8N 预取的 bank group 中启动命令时,必须允许预取完成,这需要该组的整个 cycle time 才能完成。从一个 bank group 移动到另一个 bank group 对这些规范没有任何依赖性。使用 tCCD_S 规范就是这种情况,它在四个 clock cycles 中以类似于 DDR3 的方式不受限制。

然而,这里有一个大问题。在同一个 bank group 中从一个命令转到另一个命令时,需要注意 DDR4 的新 tCCD_L 规范,该规范通常大于四个时钟周期。这种情况会影响您的设计性能,这在嵌入式应用中尤为重要。图 5 突出显示了 tCCD_S 和 tCCD_L 之间的区别。
在这里插入图片描述

新的 tCCD 规范,大影响

如图 6 所示,使用 DDR4 在不同的 bank groups 之间移动需要四个 clock cycles 的延迟。4 个 clock cycles 匹配 burst length 8。因为 4 个 clock cycles 是 8 个 clock edges,包括 rising 和 down,所以 burst length 为 8 会在该 4 clock 周期内非常有效地在每个 clock edge 上输出数据或接收数据。在这种情况下,不会浪费总线带宽。一个命令可以跟随另一个命令,而不会在未传输数据的总线上浪费任何周期。
在这里插入图片描述

但是,当保持在从 1,600 Mbps 开始的同一 bank group 中时,tCCD_L 规范需要四个以上的 clocks。1,600 Mbps 和 1,866 Mbps 需要 5 个时钟,而 2,133 Mbps 需要 6 个时钟。图 6 中表格下方的时序图显示,在不同的 bank groups 之间切换 access point 之间可以有四个 clock cycles。保持在同一 bank group 中,例如 2,133 Mbps,需要在 column 命令之间有六个 clock cycles。但是,只需要 4 个 clock cycles 来传输数据。两个 clock cycle,或 33% 的 bus bandwidth 变得不可用。

调度流量以高效使用 Bank Group

图 7 中的时序图显示了 DDR4 的 bank group 在 1600 Mbps 示例中的影响。tCCD_L long 规范为 5 意味着同一 bank group 内的 column 命令之间需要 5 个 clock cycle。突出显示的区域显示最终结果: 当使用了 5 个 clock cycles 时,浪费了一个 clock cycle,没有任何数据进出 device。在更高的数据速率下,这成为一个更大的问题,tCCD_L 变成 6 或 7 个,甚至 8 个 clock cycles。在 8 个的情况下,尝试保持在同一 bank group 中实际上会浪费一半的带宽。
在这里插入图片描述

参考资料:
DDR4 Bank Groups in Embedded System Applications
JEDEC DDR4 规范文档

Micron 8Gb DDR4 规格书详解

Micron 8Gb DDR4 SDRAM 规格书

Micron 8Gb DDR4 编码规则

在这里插入图片描述

Configuration

Micron 8Gb DDR4 有三种配置:2 Gig x 4,1 Gig x 8,512 Meg x 16。其中,2 Gig,1 Gig,512 Meg 是指地址空间大小。x 4,x 8,x 16 是指数据位宽(DQ 位宽)。

DDR4 寻址原理

以 2 Gig x 4 颗粒为例,下图为其功能框图。
在这里插入图片描述

地址线为 A[16:0],BA[1:0],BG[1:0]。

BG 位宽为 2,即这颗 DDR4 芯片有 4 个 Bank Group;BA 位宽为2,即每个 Bank Group 有 4 个 Bank。

为了提升 DDR4 的实际容量,采用了分时复用技术。

如下图所示,Row addressing(行地址)为 128K(2^17 = 131,072),Column addressing(列地址)为 1K(2^10 = 1,024)。

则其地址空间大小为 = BG 数 x BA 数 x 行地址 x 列地址 = 4 x 4 x 131,072 × 1,024 = 2,147,483,648b = 2Gb。

颗粒容量 = 地址空间大小 x 数据位宽(DQ 位宽)= 2Gb x 4 = 8Gb。

Page size = 2^COLBITS x ORG/8,其中 COLBITS 为列地址位数,ORG 为 DQ 的位数。以8Gb(2 Gig x 4)颗粒为例,则 Page size 为:2^10 x 4 / 8 = 512B。

在这里插入图片描述

Speed Grade

在这里插入图片描述

内存的频率

内存有三种不同的频率指标,它们分别是核心频率(存储器主频)、时钟频率(I/O 总线主频)和有效数据传输频率。

核心频率:为内存 Cell 阵列(Memory Cell Array,即内部电容)的刷新频率,它是内存的真实运行频率;

时钟频率:I/O Buffer(输入/输出缓冲)的传输频率;

有效数据传输频率:指数据传送的频率(即等效频率)。

正确的频率可以参考维基百科给出的表格,如下所示:
在这里插入图片描述

MT/s 与 MHz:更好的内存速度衡量指标

什么是 MHz?

MHz 是 megahertz 的简写形式,代表每秒一百万个周期或一百万赫兹(106 Hz)。此频率衡量单位来自国际单位制,在计算领域用于代表数据在组件内和组件之间移动的速度。

当 SDRAM(同步动态随机存取内存)于 20 世纪 90 年代末推出时,数据传输速度的衡量方式与主板时钟一致,其中数据传输发生在时钟周期的上升沿。衡量 SDRAM 内存的性能时,100MHz 代表每个时钟周期 100 x 106 次数据传输。

在本世纪初,DDR(双倍数据速率)SDRAM 内存上市。此内存技术让每个时钟周期的数据传输量增加一倍,其中传输发生在时钟周期的上升沿和下降沿。

不过,衡量单位没有变化。对于 100MHz 的时钟速率,DDR 让有效数据速率增加一倍,达到每个时钟周期 2 亿次数据传输。更准确的新衡量指标迟迟未出现。

什么是 MT/s?

MT/秒是每秒百万次传输的简写,可以更准确地衡量计算领域 DDR SDRAM 内存的有效数据速率(速度)。MT/秒是每秒百万次传输的简写。

SDRAM
时钟:100MHz
传输速率:100MT/秒
带宽:800MB/秒

DDR SDRAM
时钟:100MHz
传输速率:200MT/秒
带宽:1600MB/秒

在这里插入图片描述

所以,数据传输率是 I/O 总线主频的两倍。

为什么 DDR4 的核心频率与 I/O 总线频率的比例是 1:4 呢?

DDR PHY Interface 协议 规定 DFI clock 与 DFI PHY clock 的频率比(Frequency Ratio)可以是 1:1,1:2,或者是 1:4。

协议 4.0 版本 4.9.1节中描述了多倍速率的 DFI clock 和 DFI PHY clock 的频率比,如下图所示:
在这里插入图片描述

DFI 时钟和 DFI PHY 时钟必须相位对齐,并且彼此的频率比为 1:2 或 1:4。

这里的 DFI 时钟即 DDR 的核心频率,DFI PHY 时钟即 DDR 的 I/O 总线频率。

Altera 官方评估工具 External Memory Interface (EMIF) Spec Estimator 中的 Clock rate of user logic 选项可以筛选 FPGA 器件支持的频率比。如下图所示。
在这里插入图片描述

一般推荐使用 1:4 的频率比,这样的话 DFI clock 的频率可以小一点,这个时钟频率就是 FPGA DDR 控制器用户接口的逻辑时钟速率,小一点的话有利于时序收敛。

更多关于 DFI 时钟和 DFI PHY 时钟的介绍,可以去阅读知乎博主 LogicJitterGibbs 的文章:DDR 学习时间 (Part C - 3):DFI 协议功能 - DFI PHY 与 DFI 时钟频率比。描述的非常详细。

带宽

有效数据传输速率是指一根数据线上的最大传输速率,所以带宽计算公式如下:

带宽 = DDR 有效数据传输速率 x DQ位宽

例:选用 4 个 x16 Chip(有效数据传输速率 1600 MT/s),总带宽 = 1600 x 16 x 2 = 51200 Mbit/s = 6400 MB/s = 6.4GB/s

Altera FPGA EMIF 规格

可以使用官方工具来评估 FPGA 外部存储器接口(EMIF)规格。外部存储器接口规格估计器:一个参数化工具,允许您查找和比较英特尔 FPGA 中支持的外部存储器接口的性能。您将能够根据目标规格过滤到特定性能,并比较 FPGA 的性能。

External Memory Interface (EMIF) Spec Estimator

界面如下图所示:
在这里插入图片描述

下面是各个选项的介绍:

Device Family

此选项用来筛选所使用的 FPGA 器件系列

Temperature & Speed Grade

此选项用来筛选所使用的 FPGA 器件的温度和速度等级:

Temperature
Commercial(C)
Automotive(A)
Extended(E)
Industrial(I)
Military(M)

Speed Grade
0
1
2
3
4
5
6
7
8
3L
2L
4L
8L
9L
3YY
2/2X

下图为 Stratix 10 系列 FPGA 的命名规则:
在这里插入图片描述

Interface Type

此选项用来筛选所使用的外部存储器接口类型:

Hard Controller + Hard PHY
Soft Controller + Hard PHY
Hard PHY-only
HPS

Memory Standard

此选项用来筛选所使用的外部存储器类型

Clock rate of user logic

此选项用来筛选 DFI clock 与 DFI PHY clock 的频率比:

Full Rate
Half Rate
Quarter Rate

Memory Format & Topologies

此选项用来筛选内存模组类型:

Memory Topology
Component(直接焊接的内存芯片,常用于嵌入式设计)
LRDIMM(Load - Reduced DIMM,定位于服务器与 AI 训练平台市场)
Ping Pong PHY(乒乓 PHY 允许两个内存接口通过时间复用共享地址和命令总线。)
RDIMM(Registered DIMM,定位于工作站与服务器市场)
SODIMM(Small Outline DIMM,定位于笔记本市场)
UDIMM (Unbuffered DIMM,定位于桌面市场)
Intel® Optane DCPMM(英特尔® 傲腾™ 持久内存)

Depth Expansion Modules
1 DPC (DIMM Per Channel) 1R (Rank)
1 DPC (DIMM Per Channel) 2R (Rank)
2 DPC (DIMM Per Channel) 1R (Rank)
2 DPC (DIMM Per Channel) 2R (Rank)
1 DPC (DIMM Per Channel) 4R (Rank)
1 DPC (DIMM Per Channel) 8R (Rank)
Multirank
1 DPC (DIMM Per Channel)
2 DPC (DIMM Per Channel)

Depth Expansion Components
1 Chip Select
2 Chip Selects
4 Chip Selects

Channel,Rank 和 Chip

一个 SOC 或者 PC 上的 DRAM 都是有很多颗 DRAM Single Chip 组成的。这么多颗 DRAM Single Chip 又组成了不同的层级。

典型的 DRAM 层次结构如下所示:

  1. Channel (CH)
  2. Dual Inline Memory Module (DIMM)
  3. Rank (RA)
  4. Chip (CS)
  5. Bank Group (BG)
  6. Bank (BA)
  7. Row Address (RA)
  8. Column Address (CA)

在这里插入图片描述

其中 Channel -> DIMM -> Rank -> Chip 是 DDR 颗粒(就是单颗 DDR,对应上图中黑色方块)之外的层级,Bank Group -> Bank -> Row -> Col 是 DDR 颗粒内部的层级。

特定 DRAM 产品可能不包含上面列出的一个或多个层次结构。例如,DIMM 常见于台式机和服务器中,而不是嵌入式设备中;在 DDR4 中引入了 Bank Group(BG);通道(CH)在 LPDDR4 等中引入。

由于电气限制,只有少数 Channel 和 DIMM 可以连接到总线。

Rank 可以增加 DIMM 上的整体容量,并且每个 Rank 都有多个 Chip。Chip 会增加数据传输带宽,并且可以在同一个 DRAM 访问中启用多个 Chip。
在这里插入图片描述

多个 Bank Group 和 Bank 提供内存访问并行性。提供这些请求是为了让我们可以同时处理不同的请求。每个 DRAM 请求可能需要很长时间才能完成,跨不同请求交错 Bank Groups / Bank 可以隐藏较长的 DRAM 延迟并提高 DRAM 吞吐量。

为了最大化密度,Bank 中的 Array 被放大,即由 Row Addresses 索引的 Row 很宽。每个 Array 都向外部提供单个 output pin,因此 Column Addresses 为 Row 内的 bit 位置编制索引。

DRAM 芯片被描述为 xN,其中 N 是指输出引脚的数量。xN DRAM 芯片的 Bank 内部有 N 个内存 Array。

下图显示了一个由 8 个 x8 DRAM 芯片组成的 Rank,因此 Rank 的数据总线宽度为 64 位。
在这里插入图片描述

这两篇博文对 DDR4 和 LPDDR5 的物理结构有很好的解释,这两篇博文都是推荐阅读的文章。

下面来总结一下:

什么是 Chip ?

即单个内存芯片颗粒,前面小节所述的 Micron 8Gb DDR4 规格书即单个 Chip 的规格书。数据总线宽度为 4,8,16 位,对应 x 4,x 8,x 16 的数据位宽(DQ 位宽)。

什么是 Rank ?

Rank 是由 x4,x8 或 x16 Chip 组成的 64 位接口(在支持 ECC 的 DIMM 上为 64 + 8 = 72 位宽)。

16 个 x4 Chip 组成一个 Rank(如果支持 ECC,则为 18 个),单个 Rank 容量为 8Gb x 16 = 128Gb。
8 个 x8 Chip 组成一个 Rank(如果支持 ECC,则为 9 个),单个 Rank 容量为 8Gb x 8 = 64Gb。
4 个 x16 Chip 组成一个 Rank(x16 Chip 不支持 ECC),单个 Rank 容量为 8Gb x 4 = 32Gb。

x4 Chip 主要用来搭建大容量内存条。但因为每个 Rank 都需要 16 个 Chip,所以信号完整性要求高,一般用在服务器领域。

x8 Chip 是出货量最大的,最通用的配置,一般消费市场大部分就是这种配置。

x16 Chip 因为只需要 4 个颗粒,应用于嵌入式或者 PCB 空间受限的场合,消费品市场见于低端产品。

什么是 DIMM ?

DIMM(dual inline memory module)是主板上的一个内存插槽。一个 DIMM 上可以有一个 Rank 或两个 Rank 的 DRAM。取决于它的配置。

什么是 Channel ?

一个主板上可能有多个 DIMM 插槽,用来插多根内存。这些槽位分成两组或多组,组内共享物理信号线。这样的一组数据信号线、对应几个槽位(内存条)称为一个 Channel(通道)。简单理解就是 DDRC(DDR 控制器),一个 Channel 对应一个 DDRC。CPU 外核或北桥有两个内存控制器,每个控制器控制一个内存通道。内存带宽增加一倍。(理论上)

如下图所示:2 DPC(2 DIMM Per Channel):每个通道 2 个 DIMM 插槽。T-Type 走线。DIMM 插槽从左往右编号分别为 A1,A2,B1,B2。
在这里插入图片描述

  • 单条:单根内存为什么要插 A2 插槽?
    A1 插槽:
    在同一个通道内,因为 T-Type 布线,如果只插在 A1 的插槽,空出的 A2 插槽会有信号反射,A2 的信号又反射回 A1,造成信号干扰,影响性能的发挥。
    A2 插槽:
    信号传输速率快,无信号反射干扰,充分发挥内存的性能,特别是超频的潜力。
    B1 或 B2 插槽:
    距离 CPU 太遥远,信号传输相对较慢。这也是优先选择 A2 而不是 B2 插槽的原因,理论上与 CPU 的物理距离越近,信号传输则越快越稳定,损耗也会越小。
  • 双条:双根内存为什么优先插 A2 和 B2 插槽?
    A2 和 B2 为两条不同通道的插槽,独立完成信号传输,互不干扰。

总结:如下图所示,8 个 Chip 组成一个 Rank,2 个 Rank 组成一个 DIMM,两个 DIMM 组成一个 Channel。
在这里插入图片描述

ECC

内存子系统中较常用的一种 RAS 方案是纠错码(ECC)内存。DDR 控制器通过为实际数据生成 ECC SECDED(单位纠错和双位检错)数据并存储到附加 DRAM 存储器中,可以对 DRAM 发送的数据进行单位纠错和双位检错。

ECC 生成和校验顺序如下:

  • ECC 数据由控制器根据实际的 WR(写入)数据生成。内存同时存储写命令的数据和 ECC 数据。
  • 在 RD(读取)操作期间,控制器从内存读取数据和相应的 ECC 数据。控制器利用接收到的数据重新生成 ECC 数据,并将其与接收到的 ECC 数据进行比较。
  • 如果两者匹配,则不会发生错误。如果不匹配,ECC SECDED 机制允许控制器纠正任何单 bit 错误并检测双 bit 错误。

这种 ECC 方案提供端到端的保护,以防止可能在控制器和内存之间的内存子系统中发生的单 bit 错误。

基于 ECC 的实际存储,ECC 方案可能有两种类型:side-band ECC 或 inline ECC。在 side-band ECC 中,ECC 数据存储在单独的 DRAM 上;在 inline ECC 中,ECC 数据与实际数据一起存储在同一个 DRAM 上。

DDR5 和 LPDDR5 支持的数据速率远高于其前代产品,因此它们支持更多 ECC 功能,以增强内存子系统的稳定性。DDR5 中的 On-die ECC 和 LPDDR5 中的 Link ECC 就是两种此类 RAS 方案,可进一步增强内存子系统 RAS 功能。

Side-band ECC

side-band ECC 方案通常在应用中使用标准 DDR 内存(如 DDR4 和 DDR5)实现。顾名思义,ECC 数据作为边带数据连同实际数据发送到内存。例如,对于 64 位数据宽度,增加 8 位用于 ECC 存储。因此,当今企业级服务器和数据中心常用的 DDR4 ECC DIMM 具有 72 位宽。这些 DIMM 有两个额外的 x4 DRAM 或一个 x8 DRAM,用于额外的 8 位 ECC 存储。因而在 side-band ECC 中,控制器会同时读写 ECC 数据和实际数据。此 ECC 方案不需要额外的 WR 或 RD 开销命令。如果接收的数据没有错误,side-band ECC 与 inline ECC 相比,延时损失更小。

Inline ECC

Inline ECC 方案通常在使用 LPDDR 内存的应用中实现。LPDDR DRAM 具有固定信道宽度(LPDDR5/4/4X 信道宽度为 16 位),因此 side-band ECC 对于此类内存而言是一种昂贵的解决方案。例如,对于 16 位数据宽度,需要为 7 位或 8 位 ECC 位宽的 inline ECC 额外分配 16 位 LPDDR 信道。此外,7 或 8 位 ECC 数据字段仅部分填充了 16 位额外的通路,导致存储效率低下,还给地址命令信道带来额外负载,可能会对性能有所影响。因此,inline ECC 成为更适合用作 LPDDR 内存的解决方案。

Inline ECC 中的控制器不需要额外的信道来存储 ECC,而是将 ECC 数据存储在存储实际数据的同一 DRAM 信道中。因此,内存信道的总体数据宽度与实际数据宽度相同。

在 inline ECC 中,16 位信道内存被分区,使得内存的专用部分被分配给 ECC 数据存储。当 ECC 数据未与读写数据一起发送时,控制器为 ECC 数据生成单独的开销 WR 和 RD 命令。因此,实际数据的每条 WR 和 RD 命令都伴有一条 ECC 数据的开销 WR 和 RD 命令。高性能控制器通过在一条 ECC WR 命令中封装几个连续地址的 ECC 数据,以此来降低此类 ECC 命令的损失。同样,控制器在一条 ECC RD 命令中读取内存发出的若干连续地址的 ECC 数据,并且可以将读出的 ECC 数据,应用于该连续地址产生的实际数据。因此,流量模式越有序,此类 ECC 开销命令造成的延迟损失越小。

On-die ECC

每一代 DDR 的发展,DRAM 容量通常都会增加。DRAM 供应商通常也会缩小工艺技术,以实现更高的速度和更经济的量产。面对更高的容量和速度以及更小的工艺技术,DRAM 内存阵列出现单位错误的可能性会增加。为进一步改善内存信道,DDR5 DRAM 配备额外的存储器,只用于 ECC 存储。On-die ECC 是一种高级 RAS 功能,可获得 DDR5 系统的支持以实现更高的速度。DDR5 DRAM 为每 128 位数据额外设置 8 位的 ECC 存储空间。

DRAM 内部计算 WR 数据的 ECC,并将 ECC 数据存储在额外的存储器中。在读取操作中,DRAM 读出实际数据以及 ECC 数据,并且可以纠正任何读数据位上的任何单位错误。因此,on-die ECC 进一步保护 DDR5 内存阵列免于产生单位错误。由于此方案无法针对 DDR 信道上发生的错误提供任何保护,所以 on-die ECC 会与 side-band ECC 结合使用,以增强内存子系统上的端到端 RAS。

Link ECC

Link-ECC 方案是一种 LPDDR5 功能,可保护 LPDDR5 链路或信道免受单位错误的影响。内存控制器计算 WR 数据的 ECC,并在特定位上发送 ECC 和数据。DRAM 基于接收到的数据生成 ECC,对照接收到的 ECC 数据进行校验,并纠正任何单位错误。控制器和 DRAM 在读取操作中的作用是相反的。请注意,link ECC 不针对内存阵列上的单位错误提供任何保护。然而,inline ECC 与 link ECC 相结合,通过提供端到端的单位错误防护,增强了 LPDDR5 信道的稳定性。

参考资料:Design a DDR Memory Controller (VI) – DRAM hierarchy & DDR Address Decoding

示例 (Stratix SX E3)

示例使用 FPGA 型号为 1SX110HN3F43E3VG

Hard Controller + Hard PHY

在这里插入图片描述

上图所示 Maximum Frequency (MHz) 即 FPGA 最高支持的 DFI PHY 时钟频率(DDR 的 I/O 总线频率)。

由此可知,Hard Controller + Hard PHY 模式下:
1 Chip 时,最高支持有效数据传输速率 1866 MT/s 的 DDR4,DDR4 控制器用户接口时钟频率(DDR4 的核心频率)为 233.333 Mhz。
2 Chip 时,最高支持有效数据传输速率 1600 MT/s 的 DDR4,DDR4 控制器用户接口时钟频率(DDR4 的核心频率)为 200.000 Mhz。
4 Chip 时,最高支持有效数据传输速率 1334 MT/s 的 DDR4,DDR4 控制器用户接口时钟频率(DDR4 的核心频率)为 166.666 Mhz。

HPS

在这里插入图片描述

由此可知,HPS 模式下:
1 Chip 时,最高支持有效数据传输频率 1600 MT/s 的 DDR4,DDR4 控制器用户接口时钟频率(DDR4 的核心频率)为 400.000 Mhz。
2 Chip 时,最高支持有效数据传输频率 1600 MT/s 的 DDR4,DDR4 控制器用户接口时钟频率(DDR4 的核心频率)为 400.000 Mhz。

External Memory Interfaces Stratix® 10 FPGA IP User Guide 详解

Stratix 10 EMIF 架构:I/O 子系统

根据 Stratix 10 设备的不同,I/O 子系统在核心内部由两列或三列组成。
在这里插入图片描述

大多数 Stratix 10 设备有两个 I/O 列,其中包含与外部内存接口相关的硬件。

每个 I/O 列包含以下主要部分:

  • 具有专用内存的强化 Nios 处理器。这个 Nios 块被称为 I/O SSM。
  • 多达 13 个 I/O Bank。每个 I/O Bank 都包含外部存储器接口所需的硬件。

1ST/SX/SG040 设备上并非所有的 I/O Bank 都支持外部内存接口。在 1ST040 设备上,Bank 3A 和 3D 不能用于 EMIF。在 SX/SG040 设备上,Bank 3A、3C 和 3D 不能用于 EMIF。
在这里插入图片描述

Stratix 10 EMIF 架构:I/O Bank

单个 I/O Bank 包含构建外部内存接口所需的所有硬件。每个 I/O Column 最多包含 13 个 I/O Bank;Bank 的确切数量取决于设备尺寸和引脚封装。您可以通过将多个 Bank 连接在一起来创建更宽的接口。

每个 I/O Bank 位于一个 I/O Column 中,包含以下组件:

  • 硬核存储器控制器
  • 时序元件
  • PLL 和 PHY 时钟树
  • DLL
  • 输入 DQS 时钟树
  • 48 个引脚,组成四个 I/O Lane,每个 Lane 12 个引脚

在这里插入图片描述

I/O Bank 的用法

I/O Bank 中的引脚可以作为外部存储器接口的地址和命令引脚、数据引脚或时钟和触发引脚。您可以实例化一个窄接口,如 DDR3 或 DDR4 x8 接口,只有一个 I/O Bank。通过在一个多 Bank 接口中配置多个相邻 Bank,可以实现最大 72 bits 的更宽的接口。Bank 中任何未被 EMIF IP 使用的引脚都可以作为具有相同电压设置的未校准 I/O 标准的通用 I/O 引脚。

每个 I/O Bank 都包含一个硬核内存控制器,您可以将其配置为 DDR3 或 DDR4。在多 Bank 接口中,只有一个 Bank 的控制器是有效的;其余 Bank 的控制器被关闭以节省电力。

使用多 Bank 的 Stratix 10 EMIF 接口时,必须遵循以下原则:

  • 指定一个 Bank 作为地址和命令 Bank。
  • 地址和命令 Bank 必须包含所有的地址和命令引脚。
  • 地址和命令 Bank 中的单个地址和命令引脚的位置必须遵守在引脚表中定义的引脚映射 - 无论您是否使用硬核内存控制器。
  • 如果您使用硬核内存控制器,地址和命令 Bank 包含有效的硬核控制器。

列中的所有 I/O Bank 都可以作为地址和命令 Bank。但是,为了最小化延迟,应该选择接口最中间的 Bank 作为地址和命令 Bank。

用于硬核处理器子系统的 Stratix 10 EMIF

Stratix 10 EMIF IP 可以使 Stratix 10 硬核处理器子系统(HPS)访问外部 DRAM 存储设备。

为了实现 Stratix 10 HPS 和 Stratix 10 EMIF IP 之间的连接,您必须为 HPS IP 核心创建和配置 Stratix 10 外部内存接口实例,并使用平台设计器将其连接到系统中的 Stratix 10 硬核处理器子系统实例。

支持模式

Stratix 10 硬核处理器子系统兼容以下外部内存配置:
在这里插入图片描述

使用 HPS 的 Stratix 10 EMIF IP 的 I/O Bank 使用限制

您只能使用特定的 Stratix 10 I/O Bank 来实现 Stratix 10 EMIF IP 与 Stratix 10 硬核处理器子系统(HPS)。

对 I/O Bank 使用的限制是由于 Stratix 10 HPS 与离 HPS 最近的 I/O Bank 中的 EMIF 电路有硬连线连接。对于任何给定的 EMIF 配置,EMIF-to-HPS 接口的引脚输出是固定的。

下图说明了不同 EMIF-HPS 数据宽度下 I/O Bank 和通道的使用情况:
在这里插入图片描述

HPS EMIF 使用最近的外部存储器接口 I/O Bank 连接到 SDRAM。

下图说明了对 I/O 引脚使用的限制。有关这些限制的详细解释,请参阅图表后面的文本。
在这里插入图片描述
在这里插入图片描述

如果系统中没有使用 HPS EMIF,则整个 HPS EMIF Bank 可以用作 FPGA 通用 I/O。如果系统中有 HPS EMIF,则未使用的 HPS EMIF 引脚可以用作 FPGA 通用 I/O,具有以下限制:

Bank 2M:

  • 只有当 ECC 模式激活时,Bank 2M 的 Lane 3 才用于数据位。无论 ECC 是否有效,您都不能将通用 I/O 放在此 Lane 中。
  • Lane 2、1 和 0 用于 SDRAM 地址和命令。这些通道中未使用的引脚不应该被 FPGA 结构使用,因为它们的操作不能得到保证。

Bank 2N and Bank 2L:

  • Lane 3、2、1 和 0 用于数据位。
  • 对于 64-bit 数据宽度,这些 Bank 中未使用的引脚不应该被 FPGA 结构使用,因为它们的操作不能得到保证。
  • 对于 32-bit 数据宽度,Bank 2N 中未使用的引脚不应该被 FPGA 结构使用,因为它们的操作不能得到保证。Bank 2L 的 Lane 0-3 不被 HPS EMIF 使用,因此这些通道内的任何引脚都可以被 FPGA 结构使用。
  • 对于 16-bit 数据宽度,Quartus Prime 在 Bank 2N 中分配 Lane 0 和 Lane 1 作为数据通道。这两个 Lane 中未使用的引脚不应该被 FPGA 结构使用,因为它们的操作不能得到保证。HPS EMIF 不使用 Lane 2 和 3,因此这些通道内的引脚可以由 FPGA 结构使用。

默认情况下,用于 HPS IP 核的 Stratix 10 外部内存接口与 Quartus Prime Fitter 一起自动实现起点放置,您可能需要修改。您必须遵守以下要求,这些要求是 HPS EMIF 特有的:

  1. 在单个数据通道内(实现单个 x8 DQS group):
    • DQ 引脚必须在索引 1、2、3、6、7、8、9、10 处使用引脚。你可以在 DQ 位之间交换位置(也就是说,你可以交换 DQ[0] 和 DQ[3] 的位置),只要结果引脚输出只使用这些索引上的引脚。
    • DM/DBI 引脚必须使用索引 11 的引脚。没有灵活性。
    • DQS 和 DQS# 必须分别使用索引 4 和 5 的引脚。没有灵活性。
    • 引脚索引 0 必须没有连接,除非用于警报 # 或 HPS REFCLK_P,或地址/命令,或通用 I/O,在允许的情况下。
  2. 上面的图显示了如何使用数据通道的概述,这取决于接口的宽度。下表显示了必须使用的 I/O Bank 和 I/O Lane,这取决于接口的宽度和配置。
    在这里插入图片描述
    在这里插入图片描述
    注意:
    a. 在所有情况下,DQS group 都可以在所示的 I/O 组中交换。没有要求将 ECC DQS group 放在 Bank 2M。
    b. 如果关闭 ECC,则不能使用 Bank 2M 的 I/O Lane 3。你不能把一般用途 I/O 放在 Bank 2M 的 Lane 3。
  3. 您不能从 I/O Bank 2M 中的默认位置更改地址和命令引脚的位置。
  4. alert# 引脚必须在索引 0 处(任何 Bank 的任何 Lane),并且必须与 Quartus Prime 软件分配的 DQS group 分组,或者必须在地址和命令部分的任何未使用的引脚中。Bank 2N, Lane 0, index 0 或 Bank 2N, Lane 1, index 0 是新设计的建议 alert# 位置。这允许不同接口宽度的最大灵活性。允许对未使用的地址和命令引脚或索引为 0 的其他数据 I/O 通道使用 alert# 的现有(工作)设计。
  5. 锁相环参考时钟必须与地址和命令引脚一起放置在 I/O Bank 2M 中。如果不这样做,将导致设备配置问题。在设备配置发生之前,锁相环参考时钟必须在正确的频率上运行。
  6. RZQ 引脚必须与地址和命令引脚一起放置在 I/O Bank 2M 中。如果不这样做,将导致 Fitter 或设备配置问题。

要覆盖默认生成的 pin 赋值,请注释掉 .qip 文件中相关的 HPS_LOCATION 赋值,并在 .qsf 文件中添加自己的位置赋值(使用 set_location_assignment)。

Stratix 10 EMIF IP 引脚指南(for DDR4)

Stratix 10 设备包含多达三个 I/O Column,可用于外部存储器接口。Stratix 10 I/O 子系统位于 I/O Column中。每个 Column 包含多个 I/O Bank,每个 I/O Bank 由四个 I/O Lane 组成。一个 I/O Lane 是一组 12 个 I/O 端口。

每个物理 I/O 引脚的 I/O Column、I/O Bank、I/O Lane、相邻 I/O Bank 和配对引脚可以使用在每个 Stratix 10 设备引脚输出文件中定义的 I/O Bank 值中的 Bank Number 和Index 唯一地标识。

  • Bank Number 值的数字部分标识 I/O Column,而字母表示 I/O Bank。
  • “I/O Bank” 的 “Index” 取值范围为 0 ~ 11、12 ~ 23、24 ~ 35、36 ~ 47,分别代表 I/O Lane 1、2、3、4。
  • 要确定 I/O Bank 是否相邻,您可以参考位于 Stratix 10 通用 I/O 用户指南中的 I/O 引脚计数表。你总是可以假设 I/O Bank 在一个 I/O Column 内是相邻的,但以下情况除外:
    — 当一个 I/O Bank 没有在 package 上绑定时(在 I/O table 中包含 ‘-’ 符号)。
    — 一个 I/O Bank 不包含 48 个引脚,表明它只是部分键合出来的。
  • I/O 引脚的配对引脚位于相同的 I/O Bank 中。您可以通过在 I/O Bank 号内的 Index(如果它是偶数)中添加 1 来识别配对引脚,或者在 I/O Bank 号内的 Index(如果它是奇数)中减去 1 来识别配对引脚。

例如,Bank Number 为 2M 的物理引脚,I/O Bank 内的 Index 为 22。表示该引脚位于 I/O Lane 2。在 I/O Bank 2M 中,在第 2 列。相邻的 I/O Bank 分别为 2L 和 2N。这个物理引脚的配对引脚是 I/O Bank 内 Index 为 23,Bank Number 为 2M 的引脚。

通用指南

无论您是使用硬核存储控制器还是您自己的解决方案,在针对 Stratix 10 设备执行所有外部存储器接口引脚放置时,都应遵循建议的指南。

如果您使用的是硬核存储控制器,则应该使用在 readme.txt 文件中定义的相对引脚位置,该文件是与 IP 一起生成的。

注意:

  1. Stratix 10 硬核处理器子系统(HPS)的 EMIF IP 引脚输出要求比非 HPS 内存接口更严格。HPS EMIF IP 根据 IP 配置在 Quartus Prime IP 文件(.qip)中定义一个固定引脚。当针对 Stratix 10 HPS 时,您不需要为外部存储器接口引脚进行位置分配。
  2. HPS 不支持 Ping Pong PHY, PHY only, RLDRAMx 和 QDRx。

在为您的 Stratix 10 外部存储器接口放置引脚时,请遵守以下通用指南:

  1. 确保单个外部存储器接口的引脚位于单个 I/O 列内。
  2. 外部存储器接口可以占用同一 I/O 列中的一个或多个 Bank。当一个接口必须占用多个 Bank 时,请确保这些 Bank 彼此相邻。
  3. 不被外部存储器接口使用的同一 Bank 中的任何引脚都可用作兼容电压和终止设置的通用 I/O。
  4. 所有的地址和命令引脚以及它们相关联的时钟引脚(CK 和 CK#)必须分配在单个 Bank 内。包含地址和命令引脚的 Bank 被识别为地址和命令 Bank。
  5. 为了最小化延迟,当接口使用两个以上 Bank 时。您必须选择接口的中央 Bank 作为地址和命令 Bank。
  6. 地址和命令 Bank 中的地址和命令引脚及其相关时钟引脚必须遵循固定引脚输出方案。

您不必手动放置每个地址和命令引脚。如果您为一个地址和命令引脚分配位置,则 Fitter 会自动放置剩余的地址和命令引脚。

注意:引脚输出方案是必须遵循的硬件要求,可以根据内存设备的拓扑结构而变化。一些方案需要三个 Lane 来实现地址和命令引脚,而另一些方案需要四个 Lane。要确定遵循哪个方案,请参考 IP 参数化期间的消息窗口,或者在生成 IP 后参考 readme.txt 文件。

  1. 地址和命令 Bank 中未使用的 I/O Lane 可以用来实现一个数据 group,例如 x8 DQS group。数据 group 必须与地址和命令信号来自同一个控制器。

  2. 一个 I/O Lane 不能同时被地址和命令引脚以及数据引脚使用。

  3. 根据引脚表和引脚规划器中的 DQS group 放置读数据 group。读数据选通(如 DQS 和 DQS#)或读时钟(如 CQ 和 CQ# / QK 和 QK#)必须分配在能够作为 DQS/CQ 和 DQSn/CQn 用于特定读数据组大小的物理引脚上。必须将相关的读数据引脚(如 DQ 和 Q)放在同一 group 中。

  4. 您可以使用单个 I/O Lane 实现两个 x4 DQS group。引脚表指定 I/O Lane 内的哪些引脚可用于两对 DQS 和 DQS# 信号。此外,对于 x4 DQS group,您必须遵守以下规则:
    • 外部存储器接口中必须有偶数个 x4 group。
    • DQS group 0 和 DQS group 1 必须放在同一个 I/O Lane 上。同样,DQS group 2 和 DQS group 3 必须在同一个 I/O Lane 上。一般情况下,DQS group X 和 DQS group X+1 必须在同一个 I/O Lane 上,其中 X 为偶数。
    • 在 x4 模式下放置 DQ 引脚时,在交换引脚位置时保持在同一 I/O Lane 内是很重要的。换句话说,只要在相同的 I/O Lane 内,您可以在给定的 DQS group 内或在相邻的 DQS group 内交换 DQ 引脚。下表说明了一个示例,其中 DATA_A 和 DATA_B 是交换组,这意味着该索引中的任何引脚都可以在该引脚范围内移动。
    在这里插入图片描述

  5. 您应该根据引脚表和引脚规划器中的 DQS group 来放置写数据 group。QDR II、QDR II+、QDR II+ Extreme 和 RLDRAM 3 协议的纯输出数据时钟不需要放在 DQS/DQSn 引脚上,而必须放在差分引脚对上。它们必须与相应的 DQS group 放在同一个 I/O Bank 中。

  6. 对于具有双向数据引脚的协议和拓扑,其中一个写数据 group 由多个读数据 group 组成,您应该将数据 group 及其各自的写和读时钟放在同一 group 中,以改善 I/O 时序。您不需要手动指定每个数据引脚的位置。如果您指定读取捕获选通/时钟引脚对的位置,Fitter 将自动放置剩余的数据引脚。

  7. 确保 DM/BWS 引脚与写入数据引脚配对,将一个放在 I/O 引脚中,另一个放在该 I/O 引脚的配对引脚中。建议(尽管不是必需)对 DBI 引脚遵循相同的规则,以便在以后可以自由地将引脚重新用作 DM。

  8. 请注意,对于时钟为 1333 MHz 的 DDR4 接口,总 I/O group 使用限制如下:
    在这里插入图片描述

注意:

  • x4 模式不支持 DM/DBI, HPS 不支持 Stratix 10 EMIF IP。
  • 如果您使用的是基于 Stratix 10 EMIF IP 的 RLDRAM 3 外部存储器接口,则应确保 DQS group(即 DQ、DM、DK 和 QK)中的所有引脚都位于相同的 I/O group 中。此要求有助于时序收敛,并且是成功编译设计所必需的。

I/O Bank 选择

  • 对于每个存储器接口,选择相邻的 I/O Bank。要确定 I/O Bank 是否相邻,请参考 Stratix 10 General Purpose I/O User Guide 中的 I/O Pin Counts tables。您总是可以假设 I/O Bank 在 I/O Column 中相邻,但以下情况除外:
    — 当一个 I/O Bank 没有在 package 上绑定时(在 I/O table 中包含 ‘-’ 符号)。
    — 一个 I/O Bank 不包含 48 个引脚,表明它只是部分键合出来的。
  • 一个存储器接口只能跨同 一I/O Colum 中的多个 I/O Bank。
  • 需要的 I/O Bank 的数量取决于存储器接口的宽度。
  • 在一些器件封装中,一些 LVDS I/O Bank 中的 I/O 引脚数少于 48 个引脚。

地址/命令引脚位置

  • 控制器的所有地址/命令引脚必须在单个 I/O Bank 中。
  • 如果你的接口使用多个 I/O Bank,地址/命令引脚必须使用中间 Bank。如果接口使用的 Bank 数量是偶数,则中间两个 I/O Bank 中的任何一个都可以用于地址/命令引脚。
  • 地址/命令引脚和数据引脚不能共享一个 I/O Lane,但可以共享一个 I/O Bank。
  • 软核存储器和硬核存储器控制器的地址/命令引脚位置是预定义的。在设备的外部存储器接口引脚信息电子表格中,“Index within I/O bank” 列中的每个索引表示给定协议的专用地址/命令引脚功能。引脚的索引号指定引脚所属的 I/O Lane:
    I/O lane 0—Pins with index 0 to 11
    I/O lane 1—Pins with index 12 to 23
    I/O lane 2—Pins with index 24 to 35
    I/O lane 3—Pins with index 36 to 47
  • 对于只需要三个 I/O Lane 用于地址/命令引脚的内存拓扑和协议,请使用 I/O Lane0、1 和 2。
  • I/O Lane 中未使用的地址/命令引脚可以用作通用 I/O 引脚。

CK 引脚分配
根据接口中 I/O Bank 的数量分配时钟引脚(CK 引脚):

  • 如果 I/O Bank 的数目是奇数,分配一个 CK 引脚到中间的 I/O Bank。
  • 如果 I/O Bank 的数量是偶数,则将 CK 引脚分配给中间两个 I/O Bank 中的任何一个。

尽管 Fitter 可以自动选择所需的 I/O Bank,但英特尔建议您手动进行选择,以减少 pre-fit 的运行时间。

锁相环参考时钟引脚放置
将锁相环参考时钟引脚置于地址/命令 Bank 中。其他 I/O Bank 可能没有可以用作锁相环参考时钟引脚的空闲引脚:

  • 如果在几个接口之间共享锁相环参考时钟引脚,则 I/O Bank 必须相邻。

Stratix 10 外部存储接口 IP 不支持 PLL 级联。

RZQ 引脚放置
您可以将 RZQ 引脚放置在 I/O Column 中的任何 I/O Bank 中,并为使用的存储器接口 I/O 标准设置正确的 VCCIO 和 VCCPT。但是,推荐的位置是在地址/命令 I/O Bank 中,如果测试使用更窄的接口工程,则在调试期间具有更大的灵活性。

DQ 和 DQS 引脚分配
Intel 建议您根据需要将 DQS 引脚分配给 I/O Bank 中剩余的 I/O Lane:

  • 将同一 DQS group 的 DQ 和 DQS 信号约束在同一 I/O Lane 上。
  • 不能将来自两个不同 DQS group 的 DQ 信号约束到同一个 I/O Lane。

如果您不指定 DQS 引脚分配,则 Fitter 将自动选择 DQS 引脚。

跨多个接口共享一个 I/O Bank
如果您跨多个外部存储器接口共享 I/O Bank,请遵循以下指导原则:

  • 接口必须使用相同的协议、电压、数据速率、频率和锁相环参考时钟。
  • 不能将一个 I/O Bank 用作多个接口的地址/命令 Bank。内存控制器和序列器不能共享。
  • 不能共享 I/O Lane。每个 I/O Lane 只有一个 DQS 输入,并且一个 I/O Lane 只能连接到一个内存控制器。

命令和地址信号

SDRAM 设备中的命令和地址信号使用 CK 或 CK# 信号被时钟输入到存储器设备中。这些引脚仅使用一个时钟边沿以单数据速率(SDR)工作。地址引脚的数量取决于 SDRAM 设备的容量。地址引脚是多路复用的,所以发送 row、column 和 bank 地址需要两个时钟周期。

对于 DDR3, CS#、RAS#、CAS#、WE#、CKE 和 ODT 引脚是 SDRAM 命令和控制引脚。对于 DDR3 SDRAM,某些拓扑如 RDIMM 和 LRDIMM 包括 RESET#, PAR (1.5V LVCMOS I/O 标准)和 ALERT# (SSTL-15 I/O 标准)。

虽然 DDR4 的工作原理与其他 SDRAM 基本相同,但 RAS#、CAS# 和 WE# 不再有专用引脚,因为它们现在与高阶地址引脚共享。DDR4 仍然有 CS#、CKE、ODT 和 RESET# 引脚,类似于 DDR3。DDR4 引入了一些额外的引脚,包括 ACT#(激活)引脚和 BG(bank group)引脚。根据内存格式和启用的功能,DDR4 中也可能存在以下引脚:PAR(地址命令奇偶校验)引脚和 ALERT# 引脚(1.2V I/O 标准)。

alert_n 引脚终端建议

alert_n 信号需要一个外部上拉电阻到 1.2V,使用典型的上拉电阻值为 10,000 欧姆。

相关文章:

  • 轨迹误差评估完整流程总结(使用 evo 工具)
  • 人工智能-状态空间-猴子摘香蕉
  • 【蓝桥杯省赛真题50】python字母比较 第十五届蓝桥杯青少组Python编程省赛真题解析
  • 【Qt】PyQt5 为什么Qt中的字体显示会模糊或呈现像素化
  • 排序01:多目标模型
  • Redisson 四大核心机制实现原理详解
  • 多模块,依赖android.car.jar后,能调用接口但是没有回调的问题
  • 关于Redisson分布式锁的用法
  • 计算机网络 : Socket编程
  • Java(基础) day01 初识Java
  • window 显示驱动开发-分页视频内存资源
  • 从 Vue3 回望 Vue2:生命周期的清晰化——从混乱钩子到明确时机
  • 分布式锁: Redis和ZooKeeper两种分布式锁对比
  • 操作系统之进程和线程听课笔记
  • IOP出版|第二届人工智能、光电子学与光学技术国际研讨会(AIOT2025)
  • 深入解析ZAB协议:ZooKeeper的分布式一致性核心
  • 济南超算研究所面试问题
  • Elasticsearch 索引副本数
  • Git基础使用方法与命令总结
  • Python线性回归:从理论到实践的完整指南
  • 河南信阳:对违规吃喝问题不遮丑不护短,露头就打、反复敲打
  • 四川甘孜炉霍县觉日寺管委会主任呷玛降泽被查
  • “免签圈”扩容,旅游平台:今年以来巴西等国入境游订单显著增加
  • 有人倒卖试运营门票?上海乐高乐园:这些票存在无法入园风险
  • 美叙领导人25年来首次会面探索关系正常化,特朗普下令解除对叙经济制裁
  • 外交部:反对美方人士发表不负责任谬论