1.6 外部存储器接口
Cyclone 10 GX器件内集成了外部存储器接口的高效架构,以允许设计者在小的模块化I/O组架构中适配宽的外部存储器接口。该功能使设计者支持高级别的系统带宽。
与前一代Cyclone器件相比,新的架构具有以下优势。
(1)控制器内,以及控制器到PHY的预闭合时序。
(2)更容易放置引脚。
为了获得最大的性能和灵活性,该架构为关键接口提供硬核存储器控制器和硬核PHY。
1.6.1 外部存储器接口特性
Cyclone 10 GX器件的外部存储器接口特性包括:
(1)该解决方案为多种协议提供完全硬化的外部存储器接口;
(2)器件具有I/O列,这些I/O列在核心逻辑中混合,而不是在器件外围的I/O组上;
(3)单个硬Nios II块校准一个I/O列中的所有存储器接口;
(4)I/O列由一组称为I/O组的I/O模块组构成;
(5)每个I/O组包含专用的整数PLL(IO_PLL)、硬核存储器控制器和延迟锁定环;
(6)与前一代Cyclone器件相比,PHY时钟树更短,并且只跨越一个I/O组;
(7)跨越多个I/O组的接口需要使用平衡参考时钟网络的多个PLL。
Cyclone 10 GX器件所支持的存储器标准如表1.28所示。
表1.28 Cyclone 10 GX器件所支持的存储器标准
续表
注
乒乓PHY IP核允许两个存储器接口通过时分复用来共享地址/命令总线。与两个独立接口相比,兵乓PHY IP核提供了使用更少引脚的优势,而不会对吞吐量产生任何影响。
Cyclone 10 GX器件能支持以下DDR3外部存储器接口:
(1)两个带ECC的×40接口;
(2)一个带ECC的×72接口。
不同接口宽度所要求的I/O组如表1.29所示。
表1.29 不同接口宽度所要求的I/O组
1.6.2 外部存储器接口I/O引脚
在每个I/O组中都可用存储器接口电路。Cyclone 10 GX器件有差分输入缓冲区,用于差分读数据选通和时钟操作。
在 I/O 组中,用于驱动地址命令(A/C)引脚的控制器和定序器只能固定到同一个 I/O组中的I/O通道。用于A/C引脚的最低要求是3个通道。然而,I/O组的控制器和定序器能将数据组驱动到相邻I/O组(上方和下方)的I/O通道。
没有用于存储器功能的引脚可用作通用 I/O(GPIO)引脚。两个×16 接口共享 3 个 I/O通道,如图1.69所示。
硬IP被组织成垂直I/O组。这些模块化I/O组可以拼接在一起构成大型接口,每个I/O组包含以下块,即嵌入式控制器硬核、定序器硬核、专用 DLL、整数 PLL、OCT 校准模块、PHY时钟网络和4个I/O通道(Lane)。
1.6.3 器件封装支持的存储器接口
I/O 组中 I/O 引脚的数量和 I/O 组的可用性与器件的封装有关。每个存储器接口至少需要一个I/O组,其中有48个I/O引脚用于A/C引脚。具有少于48个引脚的I/O组只能支持数据引脚。
图1.69 两个×16接口共享3个I/O通道
1)支持带有ECC的DDR3/DDR3L(宽度为40)/不带有ECC的LPDDR3(宽度为32)
在这种情况下,不同封装的支持如表 1.30 所示。其中,对于一些器件封装,可以将 3V I/O 组用于外部存储器接口。但是,存储器接口最高的时钟频率上限为 450MHz。要使用最高的时钟频率,需要从外部存储器接口中排除使用 3V I/O 组。最高的时钟频率与协议速率、器件速度等级和乒乓PHY的使用有关。
表1.30 支持带有ECC的DDR3/DDR3L(宽度为40)/不带有ECC的LPDDR3
2)支持带有ECC的DDR3/DDR3L(宽度为72,包括64位数据和8位ECC,单个或两个分块)
在这种情况下,不同封装的支持如表1.31所示。
表1.31 支持带有ECC的DDR3/DDR3L(宽度为72,包括64位数据和8位ECC,单个或两个分块)
1.6.4 外部存储器接口架构
图1.69给出了外部存储器接口的架构,本节将详细介绍I/O架构的内部结构。
1.存储器控制器硬核
Cyclone 10 GX器件的存储器控制器硬核专为高速、高性能、高灵活性和面积效率而设计。存储器控制器硬核支持所有流行的和新兴的内存标准,包括 DDR3 和 PDDR3。通过实现高级动态命令和数据重新排序算法来实现高性能。此外,高效的流水线技术也应用于设计,以提高存储器带宽使用率并降低延迟,同时保持高速度。硬核解决方案提供了最佳的可用性和更短的上市时间。控制器内部和从控制器到 PHY 的时序已由英特尔简化时序收敛预先关闭。
控制器架构采用模块化设计,适合单个 I/O 组。这个架构提供硬核解决方案的最佳灵活性,包括:
(1)可以将每个I/O组配置为以下路径之一。
① 用于存储器接口的一条控制路径驱动所有的地址/命令引脚。
② 用于DDR类型接口的数据路径驱动最多32个数据引脚。
(2)可以将存储器控制器放在任何位置。
(3)可以将多个组打包在一起,生成不同的宽度,最多72位的存储器接口。
此外,为了获得更大的灵活性,设计者可以绕过存储器控制器硬核并根据需要使用自定义IP。
存储器控制器的内部架构如图1.70所示,其内部包含内核和PHY接口、主控制路径、数据缓冲区控制器,以及读和写数据缓冲区。从图中可知,硬核接口支持 Avalon 存储器映射(Avalon-MM)接口协议。接口到PHY的通信允许Altera的PHY接口(AFI)接口。整个协议路径分割为主控制路径和数据缓冲区控制器。
1)主控制路径
(1)输入接口,其功能如下。
① 以1/2或1/4的速率接受来自核心逻辑的存储器访问命令。
② 使用Avalon-MM或Avalone-ST协议。默认,使用Avalon-ST。可以通过配置寄存器使能一个硬适配器以使输入接口与Avalone-MM兼容。
③ 存储器控制器硬核有 Avalon-ST 接口。设计者可以例化一个标准的适配器软核,用于将Avalon-ST接口桥接到AMBA AXI。
④ 支持所有旁路模式并保持最小端口数量,即所有端口列表的超级用于物理宽度。在旁路模式之间共享端口。
(2)命令发生器和猝发适配器,其功能如下。
① 从输入接口导出命令,并将其提供给时序组池。
② 如果要求读-修改-写,则在流中插入必要的读-修改-写和写命令。
③ 猝发适配器将任意的猝发长度切换到存储器类型指定的个数。
图1.70 存储器控制器的内部架构
(3)时序组池(Timing Bank Pool),其功能如下。
① 存储器控制器中的关键组件。
② 设置并行队列以跟踪命令依赖性。
③ 将正在跟踪的每条命令的就绪状态发送到仲裁器以进行最终调度。
④ 大计分盘结构。当前,入口数量为8,同时最多可以监视8条命令。
⑤ 在跟踪部分时序约束时,处理存储器访问风险(RAW、WAR和WAW)。
⑥ 协助仲裁器实施重新排序的高度责任,即行命令重新排序(激活和预充电),以及列命令重排序(读和写)。
⑦ 当池满时,将向上游发送流量控制信号以停止流量。
(4)仲裁器,其功能如下。
① 执行仲裁规则。
② 执行最终仲裁,从所有就绪命令中选择命令,并将命令发送到存储器。
③ 支持1/2速率的准1T模式和1/4速率的准2T模式。
④ 对于准模式,行命令必须与列命令配对。
(5)全局定时器,跟踪全局时序约束。
① tFAW,4个激活窗口参数,指定仅允许4个激活命令的时间段。
② tRRD,背靠背激活命令到不同组之间的延迟。
③ 部分总线周转时间参数。
(6)MMR,其功能如下。
① 所有配置寄存器的主机。
② 使用Avalone-MM总线与核心通信。
③ 内核逻辑可以读写所有配置位。
④ 通过该块,调试总线布线到内核。
(7)边带控制,执行刷新和断电功能。
(8)ECC控制器,尽管在软逻辑中执行ECC编码和解码,但ECC控制器在硬核解决方案中维持读-修改-写状态机。
(9)AFI接口,通过该接口,存储器控制器与PHY通信。
2)数据缓冲区控制器
数据缓冲区控制器具有以下主要职责。
(1)管理对数据缓冲区的读写访问。
① 当接收写入数据或读取返回数据达到时,提供到缓冲区的数据存储指针。
② 当把写入数据分派到存储器或者从缓冲区读出读取数据并将其发送回用户时,提供排出指针。
(2)满足所要求的写延迟。
(3)如果使能ECC支持,使用数据缓冲区控制器和数据缓冲器执行数据重新排序。
每个 I/O 组包含两个数缓冲控制器块,用于在每个组中分割的数据缓冲通道。要改善时序,请将数据缓冲区控制器放置在物理上靠近I/O通道的位置。
2.延迟锁定环
延迟锁定环(Delay-Locked Loop,DLL)找到9位延迟链的延迟设置,以便链的延迟等于一个时钟周期。
每个I/O组都有一个位于中心的DLL,它支持600MHz~1.3GHz的频率范围。
用于DLL的参考时钟来自同一个I/O组中的PLL输出。DLL将参考时钟除以8并创建两个时钟脉冲—启动和测量。发送和测量之间的相位差是一个参考时钟周期。时钟脉冲发送通过延迟链控制的延迟设置进行布线,然后将延迟发送与测量进行比较。
DLL 延迟链的设置来自 9 位计数器,该计数器向上或向下移动以改变延迟时间,直到延迟启动和测量在相同的阶段对齐。一旦锁定 DLL,通过延迟链的延迟等于一个参考时钟周期,并且将延迟设置发送到DQS延迟块。
3.定序器
定序器通过校准接口来补偿由传输延迟引起的建立和保持要求的变化,从而实现高频率存储器接口操作。
定序器实现校准算法,以确定即使在存在显著延迟变化的情况下始终维持数据和时钟信号的中心对齐所必需的延迟和相位设置的组合。在 FPGA I/O 可编程的延迟链实现计算的延迟,以确保数据保持在中心。
在每个I/O组中都嵌入了一个定序器。定序器由下面组件构成,包括:
(1)一个读-写管理器。
(2)一个地址/命令集或指令ROM。
(3)辅助模块,如PHY管理器、数据管理器和跟踪管理器。
(4)基于每个引脚的数据模式和数据输出缓冲区由读写管理器管理。
定序器的所有主要组件连接到Avalon总线上,为Nios II子系统提供了可控性、可视性和灵活性,如图1.71所示。
图1.71 定序器的内部架构
4.时钟树
与前一代的器件相比,PHY 时钟网络有更短的时钟树,它产生更小的抖动和更小的占空失真。PHY时钟网络由参考时钟树、PHY时钟树和DQS时钟树构成,其架构如图1.72所示。
5.I/O通道
在每个I/O组中,有4个I/O通道,每个通道包含带有相同读和写数据路径和缓冲区的12个I/O引脚,每个I/O通道的架构如图1.73所示。
更进一步地解释,数据路径组件应包含:
(1)输入路径,包含捕获寄存器和读FIFO。
(2)输出/输出使能(OE)路径,包含写FIFO、时钟多路复用器、相位交织器(基于频率支持大约5~10ps的分辨率)、双数据率控制。
(3)输入延迟链,支持带有延迟范围为0~625ps的5ps分辨率。
(4)读/写缓冲区,写数据缓冲区有内建选项,用于从核或从存储器控制器取数据。
DQS 逻辑块包含后同步寄存器、DQS 延迟链、FIFO 控制和多组切换控制块。DQS 延迟链为 DQS 信号提供可变延迟,允许设计者在为 DQ 捕获标定最大 tsetup和 thold期间,调整DQS信号时序。
为了保证延迟值恒定,DQS延迟链也包含:
(1)跟踪温度和低频电压变化的逻辑;
(2)影子寄存器用于保存多级接口的校准延迟设置,并将 DQS 延迟链设置切换为最多4种不同设置之一。
图1.72 PHY的时钟网络架构
6.I/O AUX
在每个I/O列中,有一个I/O AUX块,包括:
(1)一个Nios II处理器,以及支持嵌入存储器块;
(2)为整个I/O列管理标定算法;
(3)通过一个专用的Avalon接口,与每个I/O组内的定序器通信。
图1.73 I/O通道的架构