XilinxFPGA提供可简化接口设计的I/O模块和逻辑资源。尽管如此,这些I/O模块以及额外的逻辑仍需设计人员在源RTL代码中配置、验证、执行,并正确连接到系统的其余部分,然后仔细仿真并在硬件中进行验证。
本文介绍了存储器接口设计的性能要求、设计难题以及Xilinx的解决方案,从使用Spartan-3系列FPGA的低成本实现到使用Virtex-5FPGA的最高带宽接口,无所不包。
性能要求和Xilinx解决方案
20世纪90年代后期,存储器接口从单倍数据速率SDRAM发展为双倍数据速率(DDR)SDRAM,而如今的DDR2SDRAM运行速率已达每引脚667Mbps或更高。
应用通常可分为两类:
●低成本应用,器件成本最重要
●高性能应用,获得最高带宽最重要
运行速率低于每引脚400Mbps的DDRSDRAM和低端DDR2SDRAM已能满足大多数低成本系统存储器的带宽需求。对于这类应用,Xilinx提供了Spartan-3系列FPGA:Spartan-3、3E、3A和3AN器件。
对于将存储器接口带宽推至极限的应用,如每引脚667Mbps的DDR2SDRAM,Xilinx提供了Virtex-5FPGA。
带宽是与每引脚数据速率和数据总线宽度相关的一个因素。Spartan-3系列和Virtex-5FPGA均提供了不同选项,从数据总线宽度小于72位的较小的低成本系统,到宽度达576位的较大的Virtex-5封装(图1)。
这些速度下的较宽总线使芯片对芯片接口的实现更为困难,因为要求的封装更大,电源到信号和地面到信号比更佳。Virtex-5FPGA的开发使用了先进的稀疏锯齿形(SparseChevron)封装技术,能提供优良的信号到电源和地面到引脚比。每个I/O引脚周围都有足够的电源和接地引脚和板,以确保良好的屏蔽,使由同步交换输出(SSO)所造成的串扰噪音降到最低。
使用Spartan-3FPGA的存储器接口
对于每引脚400Mbps低成本应用,Spartan-3系列FPGA与Xilinx软件工具结合即可提供易于实现且经济的解决方案。
在一个基于FPGA的设计中,三个基本构建模块组成一个存储器接口和控制器:读写数据接口、存储器控制器状态机,以及将存储器接口设计桥接到FPGA设计其余部分的用户接口。这些模块在架构中实现由数字控制管理器(DCM)的输出信号对其进行时钟驱动,在Spartan-3系列实现中,数字控制管理器还对查找表(LUT)延迟校准监视器(可确保正确设置读数据采集时序的逻辑块)进行驱动。
在Spartan-3系列实现中,使用可配置逻辑块(CLB)中的LUT实现读数据采集。在读事务过程中,DDR2SDRAM器件将读数据选通脉冲(DQS)及相关数据按照与读数据(DQ)边沿对齐的方式发送给FPGA。在源同步接口中采集DQ是一项颇具挑战性的任务,因为数据在非自由运行DQS选通脉冲的每个边沿上都会改变。读数据采集的实现使用了一种基于LUT的tap延迟机制。
写数据命令和时序由写数据接口生成并控制。写数据接口使用输入/输出模块(IOB)触发器和DCM的90度、180度和270度输出端以与命令和数据位刚好对齐的方式发送DQS选通脉冲。
DDR2SDRAM存储器接口的实现已在硬件中全面经过验证。设计是在使用了16位宽DDR2SDRAM存储器器件和XC3S700A-FG484器件的Spartan-3A入门套件板中实现的。此参考设计仅利用了Spartan-3AFPGA可用资源的一小部分:13%的IOB、9%的逻辑Slice、16%的全局缓冲器(BUFG)多路复用器(MUX)和八个DCM中的一个。
可以使用存储器接口生成器(MIG)软件工具轻松定制Spartan-3系列存储器接口设计,使其符合应用。
使用Virtex-5FPGA的存储器接口
随着数据速率的提高,满足接口时序方面的要求变得愈加困难了。追求更高数据速率的趋势使得设计人员面临巨大挑战,因为数据有效窗口(此为数据周期内的一段时间,其间可获得可靠的DQ)比数据周期本身缩小得快。这是由于与系统和器件性能参数关联的多种不确定因素会影响数据有效窗口的大小,而这些因素的缩减速率与数据周期不同。
若对比以400Mbps运行的DDRSDRAM和运行速率为667Mbps的DDR2存储器技术的数据有效窗口,这种趋势尤其明显。数据周期为2.5ns的DDR器件的数据有效窗口为0.7ns,而周期为1.5ns的DDR2器件仅为0.14ns。
Virtex-5FPGA采用I/O模块中的专用延迟和时钟资源(称为ChipSync技术)解决了这一难题。内置到每个I/O中的ChipSync模块均包含一串延迟单元(也称作tap延迟),称为IODELAY,其分辨率为75ps。
此实现的架构基于若干构建模块。用户接口负责把存储器控制器和物理层接口桥接到FPGA设计的其余部分,它使用的是FIFO架构。FIFO保存着命令、地址、写数据和读数据。主要控制器模块控制读、写和刷新操作。其他两个逻辑模块(初始化控制器和校准逻辑)围绕读操作执行时钟到数据的操作(图2)。
用于地址、控制和数据的物理层接口在IOB中实现。采集DQ时,存储器DQS会采集相应DQ并以此DQS的延迟形式将其寄存。此数据然后在触发器的第二级与系统的时钟域同步。I/O模块中的输入串行器/解串器功能用于读数据采集,第一对触发器将数据从延迟DQS传输至系统时钟域。该技术涉及到75pstap延迟(IODELAY)单元的应用,在由校准逻辑实现的校准程序中,这些延迟单
元会有所变化。系统初始化期间会执行此校准程序,以设置DQS、数据和系统时钟之间的最佳相位,从而使时序余量达到最大化。
此设计还包括其他方面,如整体控制器状态机的逻辑生成和用户接口。为方便FPGA设计人员轻松实现整个设计,Xilinx开发了存储器接口生成器。
设计及与MIG的集成
将包括存储器控制器状态机在内的所有构建模块集成到一起,对于设计的完整性具有重要意义。控制器状态机因存储器架构和系统参数的不同而异。状态机代码也可能很复杂,取决于许多变量,如架构、数据总线宽度、深度、存取算法和数据与选通脉冲比等。
使用MIG可生成完整的设计,该软件工具作为ISE软件COREGenerator参考设计和知识产权作品套件之一部分,可从Xilinx免费获取。MIG的设计流程与传统FPGA的设计流程非常相似。对于设计人员,MIG的优点是不必再为物理层接口或存储器控制器从头生成RTL代码。
可以使用MIG的GUI设置系统和存储器参数(图3)。例如,选定FPGA器件、封装和速度级别后,可以选择存储器架构并挑选实际的存储器器件或双列直插存储器模块(DIMM)。同是这一个GUI,还可用于选择总线宽度和时钟频率。其他选项可对时钟控制方法、CAS延迟、突发长度和引脚分配进行控制。
MIG工具可在数分钟内生成RTL和UCF文件,二者各为HDL代码和约束文件。这些文件是用一个经过硬件验证的参考设计库生成的,并根据用户输入进行了修改。
有进一步修改RTL代码的完全的灵活性。与提供“黑匣子”实现方法的其他解决方案不同,此设计中的代码未经加密,设计人员可对设计随意修改并进一步定制。输出文件按模块分类,适用于此设计的不同构建模块:用户接口、物理层或控制器状态机。例如,可定制对存取算法进行控制的状态机。修改可选代码后,可再次进行仿真,以验证整体设计的功能。
MIG还可生成具有存储器校验功能的可综合测试平台。该测试平台是一个设计示例,用于Xilinx基础设计的功能仿真和硬件验证。
设计的最后阶段是导入ISE项目中的MIG文件,将其与FPGA设计的其余文件合并,然后进行综合、布局和布线,必要时还会运行其他时序仿真,最后进行硬件验证。MIG软件还会生成一个批处理文件,包括相应的综合、映射以及布局和布线选项,以帮助优化生成最终的bit文件。
开发板和套件
参考设计的硬件验证是确保解决方案严密可靠的最终重要步骤。Xilinx已验证了Spartan-3系列和Virtex-5FPGA的存储器接口设计。表1所示为各种开发板所支持的存储器接口。
开发板的范围涵盖从低成本Spartan-3系列FPGA实现到Virtex-5FPGA系列所提供的高性能解决方案。 |