1. DDR4 基础:DDR4 SDRAM 基本架构、关键信号与功能框图
DDR4 SDRAM(Double Data Rate 4 Synchronous Dynamic Random Access Memory)是第四代同步动态随机存取存储器,相比 DDR3,它在工作电压、数据传输速率、存储密度和信号完整性方面均有显著提升。理解 DDR4 的基本架构与关键信号是进行 Agilex FPGA 控制器读写时序调优的前提。
1.1 DDR4 核心架构
DDR4 内部采用多 Bank 组(Bank Group)架构,每个 Bank Group 内部包含多个 Bank,每个 Bank 由行(Row)和列(Column)构成的存储阵列组成。这种分层结构允许更高的并行度与更低的访问延迟。
架构要点:
- Bank Group(BG):DDR4 引入 Bank Group 概念,每个 BG 内部可独立激活、读写,不同 BG 之间可并行操作,提升带宽利用率。
- Bank:每个 BG 包含 4 个 Bank(x4/x8 器件)或 8 个 Bank(x16 器件),每个 Bank 拥有独立的行缓冲(Row Buffer)。
- 存储阵列:采用 8n 预取架构(Prefetch 8n),每个读/写命令在内部同时访问 8 个数据位,通过 I/O 接口在时钟上升/下降沿各传输一半数据。
- 模式寄存器(MR):通过 MR0~MR6 配置工作模式、时序参数、驱动强度、ODT 等。
1.2 关键信号分类与功能
DDR4 接口信号可分为命令/地址总线、数据总线、控制信号和电源/参考电压四类。下表列出核心信号及其功能描述:
| 信号类别 | 信号名称 | 方向 | 功能描述 |
|---|---|---|---|
| 命令/地址 | CK_t / CK_c | 输入 | 差分时钟,所有命令与数据在 CK_t 上升沿与 CK_c 下降沿交叉点采样 |
| CKE | 输入 | 时钟使能,控制器件进入/退出自刷新或掉电模式 | |
| CS_n | 输入 | 片选信号,低电平有效,选中对应 rank 进行命令译码 | |
| ACT_n | 输入 | 激活命令,与地址线配合打开指定 Bank 的行 | |
| 地址 | A[17:0] | 输入 | 行/列地址复用总线,行地址在 ACT 命令时采样,列地址在 RD/WR 命令时采样 |
| BA[1:0] | 输入 | Bank 地址,选择当前命令操作的 Bank | |
| BG[1:0] | 输入 | Bank Group 地址,选择当前命令操作的 Bank Group | |
| 数据 | DQ[7:0] / DQ[15:0] | 双向 | 数据总线,x8 或 x16 位宽,每个时钟周期传输两次数据 |
| DQS_t / DQS_c | 双向 | 差分数据选通信号,读操作时由 DDR4 输出,写操作时由控制器输出,用于数据同步 | |
| DM_n / DBIn | 输入 | 数据掩码(写时)或数据总线反转(DBI),用于屏蔽写入字节或降低功耗 | |
| 控制 | ODT | 输入 | 片上端接使能,动态调整 DQ/DQS 信号线的终端阻抗,改善信号完整性 |
| RESET_n | 输入 | 复位信号,低电平有效,将 DDR4 内部状态机复位至初始状态 | |
| 电源 | VDD / VDDQ / VPP | 电源 | 核心电压 1.2V,I/O 电压 1.2V,字线升压 2.5V |
调优关注点:在 Agilex FPGA 中,DQS 与 DQ 之间的时序关系(tDQSCK、tDQSQ、tQH)是读写调校的核心。DQS 的差分信号质量直接影响数据眼图的开度,ODT 配置需结合 PCB 走线阻抗进行仿真优化。
1.3 DDR4 功能框图
下图展示 DDR4 SDRAM 内部功能模块与外部接口信号的关系,突出命令译码、Bank 阵列、数据路径和 I/O 控制的核心链路。
1.4 命令与操作流程
DDR4 的基本操作遵循“激活 → 读写 → 预充电”的流水线流程。下表列出常用命令及其对应的信号电平组合:
| 命令 | CS_n | ACT_n | RAS_n | CAS_n | WE_n | 功能描述 |
|---|---|---|---|---|---|---|
| 激活(ACTIVATE) | L | L | X | X | X | 打开指定 Bank 的行,地址线提供 Row Address |
| 读(READ) | L | H | H | L | H | 从已激活行的指定列读取数据,BL8 或 BC4 |
| 写(WRITE) | L | H | H | L | L | 向已激活行的指定列写入数据,BL8 或 BC4 |
| 预充电(PRECHARGE) | L | H | L | H | L | 关闭当前 Bank 的行,准备下一次激活 |
| 刷新(REF) | L | H | L | L | H | 执行自动刷新,保持存储数据 |
| 模式寄存器设置(MRS) | L | H | L | L | L | 配置 MR0~MR6 中的工作参数 |
时序调优注意:在 Agilex FPGA 的 DDR4 控制器中,命令之间的时序间隔(如 tRCD、tCL、tRP、tRFC)必须严格满足 DDR4 器件规格。调优时需通过 EMIF(外部存储器接口)IP 的时序参数表进行配置,并利用 FPGA 内部的校准逻辑(如 DQS 门控校准、读写平衡)来补偿 PCB 走线延迟。
1.5 关键时序参数速览
以下参数是 DDR4 读写调优中最常涉及的时序指标,后续章节将逐一展开分析:
- tCK(时钟周期):DDR4-2400 对应 0.833 ns,DDR4-3200 对应 0.625 ns。
- tRCD(行到列延迟):从激活命令到读/写命令的最小间隔,典型值 13.75 ns @ DDR4-2400。
- tCL(CAS 延迟):从读命令到第一个数据输出的时钟周期数,DDR4 常见值为 15~22。
- tRP(行预充电时间):从预充电命令到下一次激活的最小间隔。
- tRFC(刷新周期时间):两次刷新命令之间的最小间隔,与器件密度相关(8Gb 约 350 ns)。
- tDQSCK(DQS 相对于 CK 的延迟):读操作时 DQS 边沿相对于 CK 边沿的时序偏移,是读写平衡调校的关键。
Agilex 调优切入点:Intel Agilex 的 EMIF IP 提供
AFI(Avalon 存储器映射接口) 时序参数接口,用户可通过 altera_emif_arch 参数化模板调整 tRCD、tCL、tRP 等值。建议在初期使用 DDR4 的 JEDEC 标准时序,再通过硬件实测(如眼图扫描)逐步收紧参数以提升带宽。