由于DDR3 SDRAM速度高,数据吞吐量大因此对硬件设计提出了较高的要求。下面就DDR3 SDRAM在硬件设计时的一些要求和注意事项作必要的阐述。
1. FPGA IO与DDR3
FPGA哪些BANK可以作为DDR3 SDRAM的控制器硬件接口呢?一般每个FPGA有多个BANK,但并不是每个BANK都可以作为DDR3 SDRAM的硬件接口。对于Xilinx 7系列的FPGA以XC7A100T为例进行设计,如图1所示。

图1
图1中用到BANK13作为DDR SDRAM的接口。由于FPGA对DDR3接口做过精心安排,因此这个BANK是适合作DDR3接口的,首先可以看一下多功能管脚的命名含义。FPGA IO管脚按照功能的方式组合在一起用下划线分割。如IO_L1P_T0_13,IO_L1N_T0_13等。命名分如下几个部分:
- IO:表示输入/输出(input/output)
- LxP、LxN(x=1,2,3…)表示差分对,如L1P与L1N 组成一对差分信号,可以作为LVDS,mini_LVDS,BLVDS ,TMDS等适合差分信号输入、输出使用。当然,不同的设置电气信号对于BANK电压的要求也不相同。其中P(positive)表示正,N(Negative)表示负。
- Tx(x=0,1,2,3), 表示该管脚是精心安排可以适合DDRX SDRAM接口的管脚,FPGA一般将支持DDR3的每个BANK分成4组,分别为T0,T1,T2,T3以满足与DDR3接口的需要。
- VREF 表示该BANK上的参考电压,如使用DDR3接口一般要求Vref为1.5V或1.35V(低电压系列的DDR3)的一半。如果DDR3的时钟在400MHz以内(含400MHz ),也可以使用FPGA内部IOB的参考电压生成器(Vref generator)生成参考电压,此时该管脚可以作为普通IO使用或悬空。
- DQS DDRx 的数据选通信号,与DDRx 芯片对等的DQS相连。由于DQS也是差分方式输入输出的,因此与LxP或LxN的极性相对应。如IO_L3P_T0_DQS_13,表示可以作为DQS管脚使用,并且为DQS同相端使用。同样IO_L3P_T0_DQS_13可以作为DQS的反向端使用。
- MRCC(multi regional clock capable),多区域时钟管脚,可以布线到不同的区域上。
- SRCC(single regional clock capable),单区域时钟管脚,可作为时钟管脚使用,单只能在该区域内布线。如果可能尽量选择MRCC作为时钟管脚,以免出现时钟布线资源不足引起布线失败。
从上面的管脚命名来看,可以明显识别如果某个BANK中的多功能管脚名称中含有T和DQS标识,那么该BANK就可以作为DDR3控制器使用。
2. 电源/地及阻抗匹配处理
图1是FPGA端的与DDR3相连的网络标号,信号的上拉或下拉以及阻抗匹配等处理如图2,图3所示。注意时钟的差分阻抗匹配在PCB布局时一定要贴近DDR3 SDRAM的时钟管脚端。DQS由于FPGA及DDR3芯片内都与特殊处理,因此不需要差分阻抗匹配电阻。图3显示了地址线以及命令相关的匹配电阻。如果有多片DDR3 SDRAM 并联使用,而且采用 FLYBY的模式布线,应该将匹配电阻放在最后一片DDR3的管脚附近,如图4所示。如果DDR3的时钟频率比较低时(如400Mhz以内,地址线上的上拉电阻也可以不焊)。

图2

图3
图4

图5 DDR3 SDRAM 连线关系
图6中使用的电源拓扑比较简单,VDDQ与VDD共用电源VCC1V5_ALL,可能会在VDDQ平面与VDD平面产生的噪声相互影响。可以按照图7的处理方案通过磁珠将VCC1V5 _ALL 一分为二,分别作为VDD,VDDQ的电源使用。VTTVREF_PL也可参照上述方式一分为二分别给VREFA和VREFDQ供电。

图6 DDR3 芯片电源地

图7 电源分割
3. DDR3 SDRAM信号分组
(1)信号分组:由于布线的需要在PCB板布线要对信号进行分组
1)数据线DQ0-DQ7, DQS0_P,DQS0_N,DM0 为第一组
2)数据线DQ8-DQ15, DQS1_P,DQS1_N,DM1 为第二组
3)A0-A14,BA0-BA2,WE_N,CAS_N,RAS_N,CKE,CK_N,CK_P,RST,ODT为第三组
(2)如果布线资源允许也可以将组1),组2)合并
(3)布线要求
1)同组同层,即同一组内的信号在PCB版上应在同一层,如果换层应一起切换到另一层中。
2)组内要求布线等长(根据不同速度等级,对等长要求也不同)
3)对于第三组如果采用FLYBY方式布线,要求分段等长。
4)差分对的两根线之间的等长要求高于单端线,见图5.
5)差分线穿层时要求需要保护地,见图5。
6)计算单端线的阻抗(或根据阻抗设置线宽线距),如RTT
7)计算差分阻抗,根据需要设定,应满足传输线差分阻抗与差分终端电阻一致。
8)根据布线的需要,DQ0-7的管脚在FPGA端可以互换,DQ8-15的管脚也可以互换
9)A0-14,BA0-2,CS_N,CAS_N,RAS_N ,WE_N 管脚在FPGA端也可以互换。
10)如果主控制器是MCU,应注意A10,A12是特定管脚(有特殊功能),不能与其他管脚互换。但FPGA由于管脚可编程,因此可以在布线需要的时候与其它管脚互换。
11)差分信号换层时,为了阻抗的连续性应加保护地,如图8.

图8 差分线换层保护地
以上探讨了FPGA与DDR3的连接关系及硬件设计中应注意的问题,MCU(如ARM)等与DDR3的连接关系及PCB布线问题与上面提到的问题类似,可以参照上面提到的方法进行设计。