DDR2 电路设计

在高速大数据的应用中,高速大容量缓存是必不可少的硬件。当前在 FPGA 系统中使用较为广泛的高速大容量存储器有经典速度较低的单数据速率的 SDRAM 存储器,以及速度较高的双速率 DDR、DDR2、DDR3 型 SDRAM 存储器,DDR 系列的存储器都需要 FPGA 芯片有对应的硬件电路结构支持。对于 Altera Cyclone IV 系列的 FPGA,其最高支持到 DDR2 存储器(不支持 DDR3 存储器,到了 Cyclone V 系列的 FPGA 才支持 DDR3 存储器)。芯航线 AC6102 开发板作为一个高速应用型开发板,为了保证系统的存储带宽和容量,电路上设计了一组 32 位的 DDR2 存储器,接口时钟速率可达 200MHz,等效数据速率为 400MHz,整体系统带宽为 32bit*400M = 12.8Gb/s。


DDR2 与 FPGA 连接方式

每片 DDR2 存储器的容量为 1Gb,两片 DDR2 芯片组合,得到总容量为 2Gb。单 DDR2 存储器为 16bit,两片存储器共用控制线和地址线,数据线并列,即组成了 32 位的 2Gb 存储模组。

 

 

如下图所示:

两片 DDR2 的 CS、WE、CAS、RAS、CLK、CKE、ODT、Addr、BankAddr 连接在一起

 

DDR2_1 的 16 位数据线 DQ[15:0]作为 32 位 DDR2 存储电路的低 16 位数据线连接到 FPGA,即 DDR2_DQ[15:0]

 

DDR2_2 的 16 位数据线 DQ[15:0]作为 32 位 DDR2 存储电路的高 16 位数据线连接到 FPGA,即 DDR2_DQ[31:16]

 

DDR2_1 的 2 位 DQS 和 DM 分别连接到 FPGA 上,作为 32 位 DDR2 存储电路的 DQS[1:0]和 DM[1:0]

 

DDR2_2 的 2 位 DQS 和 DM 分别连接到 FPGA 上,作为 32 位 DDR2 存储电路的 DQS[3:2]和 DM[3:2]

 

 

DDR2 供电设计

DDR2 电路使用 1.8V 供电,为了保证 DDR2 能够有充足的能量运行,使用了本板供电芯片 TPS650243 的一路 DCDC 输出作为 DDR2 的 1.8V 供电,

 

 

另外,DDR2 的参考电源是否稳定也直接决定了 DDR2 工作的稳定性,DDR2 的参考电源电压为工作电压的一半,即 0.9V。在一般低成本的设计方案中,可以使用两个 1%精度相同阻值的电阻分压得到该电压。AC6102 上为了保证 DDR2 的工作绝对可靠,选择了使用专用的 DDR 系列存储器供电芯片 LP2996M,该电源能够得到精准且稳定的 DDRx 芯片工作电压的一半的输出作为 DDR2 参考源(VREF),且能够提供 DDRx 系列的终端稳压供电(VTT),VTT 是在 DDR2 需要并联终端电阻的时候,为终端电阻供电提供电源,只有在多于 2 片 DDR2 芯片并联使用的时候才考虑需要并联终端电阻,本设计仅使用 2 片 DDR2 芯片,因此实际实际不需要用到该芯片的 VTT 输出。

 

 

FPGA 接 DDR2 时引脚分配策略

DDR2 作为高速大容量存储器,其接口时钟速率高达 200M,且为 DDR 模式,实际接口数据速率为 400M。如此高的接口速率下,FPGA 的管脚分配也有相当的讲究,根据 Altera Cyclone IV 系列器件手册的相关说明,当 IO 口配置在单端模式时,速度等级为 C8 的器件,上下两个 BANK 最高能支持 167 兆的 IO 速率,而左右两个 BANK 最高只能支持到 133.3M,所以,对于 DDR2,需要将引脚分布在 BANK3+4 或者 BANK7+8。当然,如果使用 C6 的器件,BANK3、4、7、8(即上下 bank)的速度可以达到 200M、而 BANK1、2、5、6(即左右 Bank)只能达到 166.7M。

 

即 DDR2 的引脚分配需要满足以下条件:

 

希望速度高,尽量分配在 BANK3+BANK4 或者 BANK7+BANK8

 

数据总线按照 8 位或 16 位分组,对于 256 脚的这种器件,由于每个 BANK 的引脚数量有限,因此建议低 8 位和高 8 位分别分配在同一个 Bank 中,同时,对应的 DQS 和 DM 也应该和 DQ 数据分组对应分配在相应的 BANK 中。对于 484 脚或者引脚更多的器件,则每 16 位数据线及对应的 DQS 和 DM 分配在同一个 BANK 中

 

DDR2 的 IO 电平为 1.8V,所以 FPGA 上接 DDR2 的 BANK,其 IO 供电电压应为 1.8V

 

上述提到,DDR2 的 IO 电平味儿 1.8V,因此 FPGA 对应 Bank 的 IO 供电电压页应该为 1.8V,AC6102 上,DDR2 与 FPGA 的 BANK3 和 BANK4 连接,因此将 FPGA 芯片的对应 IO BANK 供电设置为 1.8V,如下图所示:

 

 

通过本节介绍,我们了解了 FPGA 连接 DDR2 芯片的电路原理和注意事项,大家可以根据自己的需求,结合我们提供的原理图,设计自己的软硬件系统。如有特殊需求,可联系我们以获取帮助。

 

千兆以太网电路设计

以太网接口作为一种互联型接口,当下应用非常的广泛。从家用宽带,到服务器数据交换,再到工业控制,各个地方都能看到以太网的身影。FPGA 系统使用以太网,则主要用于高速远距离的数据传输,如 LED 大屏显示、监控系统等。以太网数据链路,也由早期的电话线传输,到后来的专用双绞线,发展到光纤,高频无线电,以及现在比较新颖的 LIFI。

 

以太网与 FPGA 连接

AC6102 开发板上,提供了一个千兆以太网接口,该接口由千兆以太网 PHY 和网络变压器接口组成。当需要发送以太网数据时,FPGA 把数据发送给 PHY 芯片,PHY 芯片将数据编码后,通过网络变压器将数据加载到网线上。数据经由网络传递到接收方。远端发送过来的数据,经由网线传递给网络变压器,网络变压器的输出连接到 PHY 芯片上,PHY 芯片对信号进行解码后,得到实际的数据,然后将数据传递给 FPGA 芯片。FPGA 实现千兆以太网数据传输的功能框图如下所示:

 

 

模式配置

RTL8211 是一款支持 GMII、RGMII、MII 接口的以太网物理层收发器,能够工作在 100M Base 或 1000M Base 模式。接口可设置为 GMII、RGMII、MII 接口。并提供了若干引脚用于配置工作模式。

 

 

AC6102 默认使用 GMII 接口,实现该配置的方法是将对应的配置引脚 E_COL(对,就是这个引脚,芯片在上电时会检测该引脚的状态,并根据该引脚的状态确定工作模式,正常工作时又是正常的 COL 功能)通过 10K 的电阻接到 GND。

 

以太网物理层芯片都有一个器件地址,该地址可通过外部引脚设置,上图中,R20、R21、R24 通过连接到 VCC 或者 GND,决定了芯片的器件地址为 001b。当然,这些状态也仅在芯片上电时刻被读取,当芯片正常工作后,这些引脚就又恢复了普通功能。

 

与 FPGA 引脚连接

AC6102 上以太网电路所有与 FPGA 相连的信号都被分配在了 FPGA 的 BANK8,以获得更加理想的时序约束效果。以下为 RTL8201 芯片与 FPGA 之间的连接关系。