FPGA实现DDR2的引脚配置

时间:2024-04-12 14:19:45

笔者在学习FPGA+DDR2过程中翻看官方手册的一点心得,但毕竟也是初学,如有理解不正确的地方欢迎诸君指正,感激不尽!
有问题可发邮件到[email protected],欢迎骚扰~

1 Cyclone IV器件的存储器接口引脚支持

Cyclone IV器件使用数据(DQ)、数据选通(DQS)、时钟、命令和地址引脚与外部存储器对接。 一些存储器接口使用数据屏蔽(DM)或字节写选择(BWS#)引脚来启用数据屏蔽。 本节描述了Cyclone IV器件如何支持所有这些不同的引脚

1.1 数据和数据时钟/选通引脚

用于外部存储器接口的Cyclone IV数据引脚,称为D的表示写入数据,Q表示读取数据,或DQ表示共享的读写数据引脚。 读数据选通或读时钟称为DQS引脚。 Cyclone IV器件同时支持双向数据选通和单向读取时钟。 根据外部存储器标准,DQ和DQS可以是双向信号(在DDR2和DDR SDRAM中),也可以是单向信号(在QDR II SRAM中)。将双向DQ数据信号连接到Cyclone IV器件同一组DQ引脚。 对于单向D或Q信号,将读取数据信号连接到一组DQ引脚,将写入数据信号连接到另一组DQ引脚。

在Cyclone IV器件中,仅在DDR2和DDR SDRAM接口的写模式期间使用DQS。 Cyclone IV器件将DQS忽略为读数据选通,因为PHY内部为读模式生成了读捕获时钟。 但是,必须将DQS引脚连接到DDR2和DDR SDRAM接口中的DQS信号。

除Cyclone IV GX器件的左部I/O bank接口外,Cyclone IV器件中的所有I/O bank均可支持DQ总线模式为×8,×9,×16,×18,×32和×36的DQ和DQS信号。不管接口宽度如何,DDR2和DDR SDRAM接口都使用×8模式DQS Group。对于更宽的接口,可以使用多个×8 DQ组来实现所需的宽度要求。

从下面的表中我们可以找到各种型号芯片在各个方向支持的各类总线模式的组数:
FPGA实现DDR2的引脚配置FPGA实现DDR2的引脚配置FPGA实现DDR2的引脚配置

(1)某些DQ引脚可用作RUP和RDN引脚。 如果要将这些引脚用作OUP校准的RUP和RDN引脚,则不能使用这些组
(2)某些DQ引脚可用作RUP引脚,而DM引脚可用作RDN引脚。 如果将RUP和RDN引脚用于OCT校准,则不能使用这些组

带注释的地方说明引脚还存在功能复用的情况,那么在资源充足的的条件下优先选择不带注释的方位上的Group

DQS引脚在Cyclone IV引脚表中列为DQSXY,其中X表示DQS分组编号,Y表示该组位于器件的顶部(T),底部(B)还是右侧(R)。同样,相应的DQ引脚标记为DQXY,其中X表示DQ分组编号,Y表示该组位于设备的顶部(T),底部(B)还是右侧(R)。 例如,DQS2T表示属于第2组的DQS引脚,位于设备的顶部。 同样,属于该组的DQ引脚显示为DQ2T。
FPGA实现DDR2的引脚配置

如Cyclone IV引脚表中所定义,每个DQ组均与其对应的DQS引脚相关联。 例如:

  • 对于DDR2或DDR SDRAM,×8 DQ组DQ3B [7…0]引脚与DQS3B引脚关联(相同的3B组索引)
  • 对于QDR II SRAM,×9 Q读数据组DQ3T [8 …0]引脚与DQS0T / CQ0T和DQS1T / CQ0T#引脚相关联(相同的0T组索引)

如果未正确地将DQ组及其相关的DQS放置在一起,Quartus®II软件则会报错。

Cyclone IV E I/O Banks分布如下:
FPGA实现DDR2的引脚配置

(DDR2用不到)——在Cyclone IV器件中,×9模式使用与×8模式相同的DQ和DQS引脚,并在×8模式下使用一个附加的DQ引脚作为常规I/O引脚。 ×18模式使用与×16模式相同的DQ和DQS引脚,另外两个DQ引脚用作×16模式中的常规I/O引脚。 类似地,×36模式使用与×32模式相同的DQ和DQSpins,并具有四个附加的DQ引脚,它们在×32模式下用作常规I/O引脚。 当不用作DQ或DQS引脚时,存储器接口引脚可用作常规I/O引脚。

1.2 (可选的)奇偶校验,DM和纠错编码引脚

Cyclone IV器件在×9,×18和×36模式下支持奇偶校验。 每八位数据引脚可用一个奇偶校验位。 您可以在Cyclone IV器件中使用任何DQ引脚进行奇偶校验,因为奇偶校验引脚的处理和配置与DQ引脚类似。

仅在写入DDR2和DDR SDRAM器件时才需要DM引脚。 QDR II SRAM器件使用BWS#信号选择要写入存储器的字节。 DM或BWS#引脚上的低电平信号表示写入有效。 将DM或BWS#引脚驱动为高电平会导致存储器屏蔽DQ信号。 每组DQS和DQ信号都有一个DM引脚。 类似于DQ输出信号,DM信号由-90°移位时钟提供时钟。

在Cyclone IV器件中,DM引脚是在器件引脚分配中预先分配的。 Quartus II Fitter对DQS组中的DQ和DM引脚进行均等处理以用于放置目的。 预先指定的DQ和DM引脚是首选的引脚。

某些DDR2 SDRAM和DDR SDRAM器件支持纠错编码(ECC),这是一种检测并自动纠正数据传输错误的方法。 在72位DDR2或DDR。SDRAM中,有八个ECC引脚和64个数据引脚。 将DDR2和DDR SDRAM ECC引脚连接到Cyclone IV器件中的单独DQS或DQ组。 存储器控制器需要其他逻辑来对ECC数据进行编码和解码。

1.3 地址和控制/命令引脚

地址信号和控制或命令信号通常以单个数据速率发送。 您可以使用Cyclone IV器件的所有I/O bank上的任何用户I/O引脚来生成地址和对存储器件的控制或命令信号。

1.4 内存时钟引脚

在DDR2和DDR SDRAM存储器接口中,存储器时钟信号(CK和CK#)用于捕获地址信号以及控制或命令信号。 同样,QDR II SRAM器件使用写时钟(K和K#)捕获地址和命令信号。 使用Cyclone IV器件中的DDIO寄存器生成CK / CK#和K / K#信号,类似于写数据选通。

CK / CK# 引脚必须放置在差分I/O引脚(引脚规划器中的DIFFIO)上,并与数据引脚位于同一排或同一侧。 您可以将设备的任何一侧用于环绕接口。 从引脚规划器焊盘视图中可以看出,CK0不能与任何接口DQ引脚位于同一行和列焊盘组中。(此处的CK0应该是指系统的输入时钟)
FPGA实现DDR2的引脚配置

2 Cyclone IV器件的存储器接口特性

本节讨论Cyclone IV存储器接口,包括DDR输入寄存器,DDR输出寄存器,OCT和锁相环(PLL)。

2.1 DDR输入寄存器

DDR输入寄存器由每个DQ引脚的三个内部逻辑元件(LE)寄存器实现。 这些LE寄存器位于逻辑阵列模块(LAB)中与DDR输入引脚相邻的位置。
FPGA实现DDR2的引脚配置
这些DDR输入寄存器在设备的内核中实现。 DDR数据首先经DQ引脚馈入两个寄存器,输入寄存器AI和输入寄存器BI

  • 输入寄存器AI捕获时钟上升沿期间存在的DDR数据
  • 输入寄存器BI捕获时钟下升沿期间存在的DDR数据
  • 寄存器CI将数据与系统时钟同步之前将其对齐(细细体会)

来自DDR输入寄存器的数据被馈送到两个寄存器sync_reg_h和sync_reg_l,然后通常将数据传输到FIFO块,以将两个数据流同步到系统时钟的上升沿。 由于读捕捉时钟是由PLL产生的,因此在Cyclone IV器件的读操作期间不使用读数据选通信号(DQS或CQ)。 因此,在这种情况下无需考虑后同步码。

2.2 DDR输出寄存器

在DDR输出和输出使能路径中实现了专用的写入DDIO模块。(关于DDIO,那又是一大本HandBook,后面有需要再详读)
FPGA实现DDR2的引脚配置
两个DDR输出寄存器位于I/O元素(IOE)块中。 通过datain_l和datain_h路由的两个串行数据流在同一时钟沿分别馈入两个寄存器,即输出寄存器Ao和输出寄存器Bo。 输出寄存器Ao的输出在时钟的下降沿捕获,而输出寄存器Bo的输出在时钟的上升沿捕获(这是通过两寄存器后面的靠-90° shifted clock 驱动的数据选通器实现的)。 寄存的输出与公共时钟复用,以两倍于数据速率的速率驱动DDR输出引脚。

DDR输出使能路径的结构与IOE模块中的DDR输出路径类似。 第二个输出使能寄存器为DDR外部存储器接口中的DQS提供写前导。 该低电平有效输出使能寄存器将引脚的高阻抗状态延长了半个时钟周期,以提供外部存储器的DQS写前导时间规范。

下图很好地表达了DDR2的写逻辑,并举例说明了第二个输出使能寄存器如何在写操作期间将DQS高阻抗状态扩展半个时钟周期。
FPGA实现DDR2的引脚配置

3.3 带校准的OCT

Cyclone IV器件在垂直和水平I/O bank中都支持校准的片上串行匹配(RS OCT)。 要使用校准的OCT,必须对每个RS OCT控制块(每侧一个)使用RUP和RDN引脚。 您可以使用每个OCT校准模块来为给定的一侧校准具有相同VCCIO的一种终端。
还没太搞清楚这一点,如下连接方式可用:
FPGA实现DDR2的引脚配置

3.4 锁相环

与外部存储器接口时,PLL用于生成存储器系统时钟,写时钟,捕获时钟和逻辑内核时钟。 系统时钟生成DQS写信号,命令和地址。 写时钟从系统时钟偏移-90°,并在写期间生成DQ信号。 您可以使用PLL重配置功能来校准读捕获相移,以平衡建立和保持裕量。

PLL在ALTMEMPHY宏功能中实例化。 当ALTMEMPHY宏功能实例化以与外部存储器接口时,将使用PLL的所有输出。 ALTMEMPHY宏功能使用PLL重配置来校准和跟踪读取捕捉阶段,以保持最佳裕度。

3 参考文献