2. DDR存储器基础与Zynq支持标准

在Zynq平台上做DDR接口设计,第一步不是写约束、也不是跑仿真,而是先把“器件侧要什么”和“控制器侧能给什么”对齐。DDR3、DDR3L、DDR4、LPDDR4虽然都叫“DDR”,但供电、端接、速率、命令时序和训练方式差异很大;Zynq-7000与UltraScale+ MPSoC两代器件的控制器能力也不同。选错类型,轻则降速运行,重则连校准都过不去。

一、四类DDR的电气与速率边界

DDR3采用1.5V供电,DDR3L是其低压版本,供电1.35V,两者命令集和时序基本兼容,同一控制器通常可同时支持,区别主要在I/O电压与功耗。DDR4把供电降到1.2V,引入VREFDQ内部参考、DBI数据总线反转和更严格的ODT端接,速率从1600MT/s起步,常见2133/2400/2666MT/s。LPDDR4面向移动与低功耗场景,供电1.1V(VDD2)/1.8V(VDD1),采用双通道、每通道16位、点对点拓扑,没有传统DIMM的多rank负载问题,速率可达3200MT/s以上,但命令总线是低压SSTL,且需要专门的训练流程。

从信号完整性角度看,DDR3/DDR3L是并行多点总线,地址/命令/控制(CA)以fly-by方式连接各颗粒,需要VTT端接和ODT配合;DDR4的CA总线仍为fly-by,但数据组内要求更严格的等长与参考平面;LPDDR4则是点对点,走线短、负载轻,但对通道间偏斜和训练精度要求更高。这些差异直接决定了PCB叠层、端接方案和控制器PHY的配置。

二、关键时序参数怎么读

选型时最常被问到的是“这个颗粒能不能跑到目标频率”。判断依据不是单一参数,而是一组时序约束的联合满足。以DDR3-1600为例,典型颗粒参数包括:tRCD(行激活到列命令)约13.75ns、tRP(预充电)约13.75ns、tRAS(行激活到预充电)约35ns、CL(CAS延迟)约11个时钟周期、tWR(写恢复)约15ns。控制器必须保证在给定频率下,这些参数对应的时钟周期数不超过其可编程范围。

更隐蔽的是tRFC(刷新周期)和tFAW(四激活窗口)。高密度颗粒的tRFC可达260ns甚至350ns,刷新期间总线不可用,会直接吃掉有效带宽;tFAW限制单位窗口内最多四次行激活,多bank交错访问时若违反,控制器只能插入等待。做带宽估算时,必须把这些“不可用时间”计入,而不是只看理论峰值。

经验上,DDR3-1600单通道64位理论带宽12.8GB/s,实际可持续带宽通常在70%~85%之间;若tRFC较大或访问模式随机,可能降到60%左右。这个比例是评估设计余量的重要参考。

三、Zynq两代器件的支持差异

Zynq-7000的DDR控制器为硬核,支持DDR3、DDR3L、DDR2和LPDDR2,不支持DDR4和LPDDR4。其数据位宽可配置为16位或32位,最高速率受器件速度等级限制,常见-1等级可到1066MT/s,-2等级可到1333MT/s,部分-3等级可到1600MT/s。控制器内置PHY训练,包括写均衡、读门控和眼图扫描,但训练算法相对固定,对PCB走线匹配要求较高。

UltraScale+ MPSoC的DDR控制器升级为DDR4/LPDDR4/DDR3/DDR3L多协议支持,数据位宽可到64位,速率显著提升:DDR4可到2400MT/s以上,LPDDR4可到3200MT/s以上。它引入了更灵活的训练机制,支持Per-Bit Deskew、Read Gate Training和Write Leveling,并可通过寄存器读取训练结果(如读窗口位置、写均衡延迟),便于定位PCB问题。此外,MPSoC的PS侧DDR控制器与PL侧AXI接口带宽更高,适合需要大带宽缓存的视频、AI推理场景。

Zynq-7000 与 UltraScale+ MPSoC DDR支持对比 Zynq-7000 支持类型 DDR3 / DDR3L / DDR2 / LPDDR2 数据位宽 16位 / 32位 最高速率(典型) 1066~1600 MT/s(依速度等级) 训练能力 写均衡 / 读门控 / 眼图扫描 不支持 DDR4 / LPDDR4 UltraScale+ MPSoC 支持类型 DDR4 / LPDDR4 / DDR3 / DDR3L 数据位宽 32位 / 64位 最高速率(典型) DDR4 ≥2400 / LPDDR4 ≥3200 MT/s 训练能力 Per-Bit Deskew / 读门控 / 写均衡 训练结果可读 读窗口位置 / 写均衡延迟寄存器 升级

四、选型依据:从需求反推器件

选型不是“越新越好”,而是按需求逐层过滤。第一步看带宽需求:若系统需要持续4GB/s以上读写,Zynq-7000的32位DDR3-1600(12.8GB/s峰值)在考虑效率后可能只剩8~9GB/s,勉强够用;若需要更高,必须上MPSoC的64位DDR4或LPDDR4。第二步看功耗与封装:LPDDR4的1.1V I/O和点对点拓扑适合紧凑、低功耗设计,但布线密度高、训练复杂;DDR4的1.2V和ODT更适合标准PCB。第三步看器件可用性与成本:DDR3L在工业级市场供货稳定、价格低,适合中低端产品;DDR4/LPDDR4在消费与通信市场更主流,但BOM和设计门槛更高。

还有一个常被忽略的点:Zynq-7000的DDR控制器与PL共享部分资源,若PL侧同时使用大量AXI带宽,PS侧DDR的有效带宽会被挤占。MPSoC虽然带宽更高,但若PL逻辑占用过多HP端口,同样需要做带宽预算。因此选型时要同时评估“峰值带宽”和“可持续带宽”,并留出20%~30%余量。

不要仅凭颗粒手册的峰值速率做决定。必须结合控制器支持的最大频率、PCB层数与走线长度、电源方案和训练余量综合判断。一个在手册上标称2400MT/s的DDR4颗粒,若PCB走线偏差过大,实际可能只能稳定在1866MT/s。

五、一个可执行的选型检查清单

实际项目中,可以按以下顺序逐项确认,避免遗漏:

  • 带宽需求:统计所有主设备(CPU、DMA、PL加速器)的峰值与平均带宽,取总和并加30%余量。
  • 控制器能力:查对应器件TRM,确认支持的类型、最大位宽、最高频率和训练模式。
  • 供电与端接:DDR3/DDR3L需VTT和VREF;DDR4需VREFDQ和ODT;LPDDR4需VDD1/VDD2和专用训练。
  • PCB可行性:评估层数、阻抗控制、等长匹配能力,LPDDR4通常需要更少层但更严格的通道间偏斜。
  • 训练余量:预留读窗口和写均衡的调整空间,MPSoC可通过寄存器回读训练结果验证。
  • 供货与成本:确认工业级/车规级温度范围、封装和长期供货计划。