
本文主要从硬件设计的角度详细介绍了ZNQ ultrascale MP SOC的DDR接口,最后展示了之前自己设计的基于ZU的8个DDR4插件的设计。
目前常用的是DDR4和DDR3,其他系列相对较少。本文主要介绍DDR4。
1、选择
根据ZU系列芯片、TRM、pg150等文档的数据表,DDR可以安装在ps面、PL面,也可以同时安装在PS面和PL面。
PL和PS都支持64位DDR4(不带ECC功能)。如果PL部分要支持64位DDR4,需要提供至少三个bank的HP接口,只能选择SFVC784或更高的封装。特别是使用内存颗粒和使用内存条有很大的区别,需要根据实际需要来选择。
ZU的DDR4接口如下:
PS端DDR接口框图
PL侧DDR接口框图
对于DDR3,其特征如下:
支持DDR3 (1.5V)和DDR3L (1.35V)。
容量限制:组件支持高达8 GB的密度,rdimms支持高达32 GB的密度,sodims支持高达16 GB的密度,udimms支持高达16 GB的密度。通过定制零件选择,可获得其它密度的存储设备支持。
对于DDR4,其特征如下:
容量限制:组件最高支持32 GB的密度,lr dimms最高支持64 GB,rdimms最高支持128 GB,sodims最高支持16 GB,UDIMMs最高支持16 GB。通过定制零件选择,可获得其它密度的存储设备支持。
DDR接口的大致介绍可以在之前的文章《Zynq UltraScale+系列之“外围接口概述”》中找到,PS端DDR控制器的详细特性可以在《UG1085》的第17章中找到,PL端的相关特性可以在《PG150》、《WP454》等资料中找到,这里不做描述。
2、性能
DDR总线的效率在不同的使用模式下差异很大,所以在实际评测速率时需要明确使用情况。
对于几种常用的操作模式,《PG150》给出了具体的效率,如下表所示:
几种常见的操作模式如下:
顺序读取
简单地址增量模式
100%阅读
顺序写入
简单地址增量模式
100%写入(控制器为VT跟踪生成的定期读取除外)
突发读/写混合
64次顺序读取和64次顺序写入的重复模式
50/50读/写混合
短脉冲读写混合
四次顺序读取和四次顺序写入的重复模式
在更改行地址以获得高页面命中率之前,以四个突发访问整个DRAM页面
50/50读/写混合
随机地址读/写混合
两次随机读取和两次随机写入的重复模式
低页面命中率的完全随机地址
50/50读/写混合
3、原理图设计
PS端的原理图设计基本没有问题,按照对应的功能引脚连接就好,PL端的接口需要特别注意。
对于单个内存接口,尽量集中使用几个HP bank。如果使用三个存储体,则两个存储体用作数据接口,一个存储体用作地址、控制和命令信号线的接口。地址、控制和命令信号应尽可能在同一存储体中使用,不应跨存储体使用;如果使用两个存储体,尽量确保数据相关引脚在一个存储体中,地址和控制信号在另一个存储体中。
地址、控制和命令信号不能与数据共享字节组,只能使用数据字节组以外的字节组。
CK差分时钟对必须使用差分对,并且必须连接到控制字节组,并且尽量按照Vivado软件对时钟管脚的约束来连接。如果有多个CK对,它们必须来自同一个字节通道。
除了DQS和CK,其他信号可以在字节组中任意交换。
每个字节的数据可以在组内任意交换。
在早期的原理图设计阶段,最好在vivado中预先分配好PL侧引脚,不要等到PCB出来才在vivado中开始验证。如果关键信号引脚定义有问题,无法互换,那就无法补救了。
对于ZU系列MPSoC,DDR4接口原理图处理如下:
4、 DDR 4 SDRAM(PL和PS)的PCB指南
DDR总线的布局布线需要遵循一些通用的规则。数据线只支持点对点连接,其他信号根据粒子数量可以有多种拓扑。
ZU DDR4 SDRAM支持两种拓扑类型:飞越式和翻盖式。当电路板空间紧张时,蛤壳式拓扑具有一定的优势。在MIG (PL端)是可选拓扑,PS端不支持蛤壳拓扑。
如果用5片x16粒子组成80位宽的接口,5片DDR的布局是飞越式拓扑,如果用9片x8粒子,则采用蛤壳式拓扑以节省空间。
4.1.1、飞越结构布局
4.1.2、薄壳结构布局
4.1.3、点对点数据信号
因为政府推荐的主线阻抗比较小(单端36/39,差分76),线宽比较宽,但是扇出部分阻抗比较大(单端50,差分86),会导致阻抗突变。因此,在实际使用中,可以通过调整叠层来优化线宽,在满足阻抗要求的同时减少阻抗突变。
4.1.4、布局指南
以下是DDR4的约束规则。表中参数均为最短信号线和最长信号线之间的公差参数。DQS通常被用作数据组的目标,DQS和DQS被比较和限制。地址、控制和命令组一般以CLK为目标,ACC(地址、命令和控制)与CLK相比较。
比如最快的ACC信号线传输时间是800ps,最慢的ACC信号线传输时间是840ps,时钟信号线传输时间应该是862ps 8ps,比ACC总线的中间传输时间(820ps)慢了42ps。
CLK和DQS之间的约束相对宽松,最小差值可以是-879,最大差值可以是10600,主要是保证从菊花链的第一块到最后一块读写平衡功能正常。
DDR控制器可以调整DQS信号线的内部延迟。由于CK信号线链路连接每一块DDR颗粒,CK的容性负载较重,因此需要能够调整DQS信号线的内部延迟,以满足与CK的约束。
规范规定CK信号线和DQS信号线从FPGA到链路中第一个DDR粒子的偏差不小于-149ps,到链路中最远的DDR粒子的偏差不大于1796ps。只要链式链路中的第一个DDR颗粒和最后一个DDR颗粒满足这个条件,整个链路中所有DDR颗粒的读写平衡功能就正常。
例如,如果从FPGA到第一个DDR区组的DQS延迟是200ps,则从FPGA到第一个DDR区组的CK延迟应该至少是51ps(200ps-149ps)。如果从FPGA到最后一个DDR区组的DQS延迟为700ps,则从FPGA到最后一个DDR区组的CK延迟应小于2496 PS(700 PS1796 PS)。
以下是一些您可以遵循的基本规则:
使用内存条时,ck信号和DQS信号之间的余量会更小,因为约束是从FPGA到DIMM插槽,而粒子路由是由DIMM决定的,所以余量更小。
同一组中的DQ、DQS和DM迹线必须在同一层。
最好选择靠近连接器的层,尤其是靠近DIMM中间的数据组。
使用菊花链布线时,ACC信号线可以分层敷设,但层数越少越好。一个信号不要切换几层,尽量一层走完主接线,减少串音。切换信号层时,接地过孔应位于切换过孔附近50英里范围内。
FPGA和DDR设备的阻抗是40,DCI和ODT也是。因此,VTT端接电阻全部选择为39.2。
使用内部VREF时,PL侧HP bank上的VREF引脚可以挂起,但不能用于普通IO。
如果系统时钟连接到DDR的HP bank,则LVDS时钟信号需要在外部端接至适当的电压,因为该bank上有不同的逻辑电平(HSTL、SSTL或POD)。
对于菊花链布局,人字形布线可以形成拼接过孔;对于紧凑布局,可以通过采用扇出来形成接地针脚过孔。
在器件内部或周围放置尽可能多的接地过孔,这样可以更好地为信号提供返回路径,尤其是在拐角处。
对于ACC信号线的终端电阻布局,应在每四个终端电阻之间插入一个0.1uF VTT去耦电容,这样可以降低终端VTT的噪声。为了布局方便,原理图中最好每四个电阻放置一个去耦电容。
对于DIMM,去耦电容应尽可能靠近DIMM放置,既能提供接地过孔,又能为电源提供低阻抗回路。
以上是对ZU系列MPSoC的DDR接口的详细介绍。PCB设计请参考《UG583:UltraScale Architecture PCB Design User Guide》,官方开发板zcu 104、 zcu 102、 zcu 106等。
这里简单介绍一下基于自己设计的ZU (XCZU3CG-SFVC784)的八款DDR4插件的设计,采用十层板,厚度1.6mm,最小线宽4mil。板卡尺寸为120*150mm,单个12V电源输入。支持串口、I2C、USB、GbE、TF卡、CAN、PCIe等常用接口。并预留PS端和PL端IO接口。
硬件框图如下图所示:
堆栈设计如下图所示:
整板DDR4部分的布局如下图所示:
Allegro中的约束规则如下图所示:
ACC信号线的约束规则如下图所示:
数据信号线的约束规则如下图所示:
整板布线完成后,情况如下图所示:
hfy










