DDR3存储器接口控制器IP加速了数据处理应用
DDR3存储器系统可以大大提升各种数据处理应用的性能。然而,和过去几代(DDR和DDR2)器件相比,DDR3存储器器件有了一些新的要求。为了充分利用和发挥DDR3存储器的优点,使用一个高效且易于使用的DDR3存储器接口控制器是非常重要的。视屏处理应用就是一个很好的示例,说明了DDR3存储器系统的主要需求以及在类似数据流处理系统中DDR3接口所需的特性。
本文引用地址:http://www.amcfsurvey.com/article/201706/349327.htm视频处理系统将对于数据带宽的要求推高到了极致:系统可以处理越多的数据,就具有越高的性价比。视频聚合器和路由器可并行处理多个视频流,因此对于匹配数据处理能力和视频带宽的需求就成为了设计的一大挑战。FPGA可通过在单个FPGA中实现多个视频处理器来提供强大的处理能力。那么现在的挑战就变成了要使数据尽快且高效地从FPGA进出。DDR3存储器系统在大多数情况下可以为这些基于FPGA的系统提供足够的带宽。
视频处理设计说明
我们的目标视频处理设计将同时处理四个视频源,将视频数据转换和压缩为一种可以通过PCI Express接口传输到存储器hub的格式。系统的主要功能块如图1所示。
图1:视频处理器框图
FPGA获取并缓存四个视频源的数据流。这些FIFO缓冲器由DDR3存储器控制器清空并保存在DDR3存储器中。一旦一个完整的视频数据包存储完毕,视频处理器会向DDR3存储器控制器申请数据,存储器控制器读取数据并将其传到视频处理器。视频处理器对视频数据进行格式化和压缩,并通过DDR3存储器控制器写回存储器。当一个视频数据包全部处理完毕,并准备通过PCI Express接口进行传输,DDR3存储器控制器从视频处理器获取数据并将其传到PCI Express接口。
DDR3存储器接口控制器概述
从零开始设计一个DDR3存储器控制器是非常困难的。需要考虑许多特性之间的权衡和互相影响。使用一个经验证的IP核可以省去了大量的开发、测试和调试时间,否则就需要花费许多时间来进行in-house设计开发。一个经验证的IP核还可以减少后续支持的负担,因为这将由专门的开发人员来支持。最重要的是,使用一个经验证的IP核可以使设计师将精力集中在其设计的独特特性上,从而向最终客户交付高价值的产品设计。例如,LatticeECP3 DDR3存储器控制器IP核已经通过了一个第三方验证套件的验证。该IP核使用LatticeECP3 I/O协议板来实现并通过全部测试。
图2展示了一个存储器控制器的框图。图最上面的配置接口用于设置设计的各个选项。DDR3 I/O模块使用I/O 基元来实现。指令译码模块根据每个bank和每一行,对用户指令进行译码,产生内部存储器指令序列。指令应用模块将每条指令序列转换为满足目标存储器件功能和时序要求的存储器指令。数据通路模块与DDR3 I/O模块连接,并且在读操作时产生读数据和读取数据有效信号。读数据偏移校正模块对齐每一条8位数据线上的数据,调整任何可能的时钟偏移。这使得用户端的读数据总线与系统时钟准确校准。写调整模块为了正确的捕获数据,调整了DQS对CK的关系。ODT块通过为任意或所有DDR3 SDRAM器件提供单独的终端阻抗控制,提高了存储器通道的信号完整性。
图2:DDR3存储器控制器IP核框图
DDR3存储器控制器应支持广泛的存储器速率和配置,以满足各种应用需求。例如,Lattice ECP3 DDR3存储器控制器支持高达800Mb/s的DDR3器件速率,8至64位的存储器数据通道(带有x8或x16 DDR3器件),并且同时支持双列直插式存储器块(Dual Inline Memory Modules,DIMM)和单个存储器的器件。
DDR3存储器控制器必须为各种存储器访问实现不同的时序要求。一些要求对于我们的目标应用来说非常重要,包括以下几个方面:
DDR3存储器使用“类似cache”的bank进行组织,每个器件带有8个bank。访问最近工作(打开)的bank比访问未工作的(关闭)的bank速度快。 可使用4位、8位或交叉存取方式进行突发(burst)模式读访问。 根据存储器速率和用户设置,CAS和写延迟都是可变的。从读请求转换为写请求需要额外的延迟时间,因为双向的数据总线必须改变传输方向。
针对视频处理的IP核实现
为了使存储器数据带宽和效率最大化,针对视频处理设计的IP核实现需根据DDR3存储器特性使用相匹配的算法。下面列出了一些重要的实现考虑。
使用突发(Burst)模式的数据访问
DDR3存储器可通过突发模式访问,突发模式在数据以数据块形式存放(如视频处理应用)的应用中是非常有效的。同样,通过将视频数据以优化的方式放入8个bank中,数据传输带宽和之后的数据处理率可维持在一个高速的水平。在我们的示例中有4个视频源,因此如果我们为每个视频源使用2个bank(一个用作存储缓冲器,另一个用作处理缓冲器),这将使DDR3保持高传输效率。高效的DDR3存储器控制器应当基于每个bank的状态,使用最快的访问时间处理突发读和写。此外,视频处理器将事务分组,使总线换向时间最小化并进一步提高存储器带宽。
更高带宽的数据缓冲分配
来自视频源1的数据可通过FIFO读取并存储到DDR3存储器中的Bank 1。这将是一个只写操作,可以使用突发模式来保持传输的高效。一旦一个数据包保存到Bank 1,视频处理器可从Bank 1读出数据,对其进行操作并存入Bank 2。这些操作都可使用突发模式,因此总线换向的花销仅占用存储器带宽的很小的百分比。一旦Bank 2中的数据经过处理后可被读出,还是使用突发模式,然后发送到PCI Express接口,再传输到hub。尽可能地保持存储器bank为打开状态可使得控制器使用最短的存储器访问时间,从而提高了效率。
使用交叉存取的并行数据处理
数据读可在bank之间切换或交叉存取,而无需大量延迟或总线换向时间。因此,只要处理硬件能够支持,多个视频流可通过视频处理器同时处理。当处理好的数据写回DDR3存储器时,多个写操作也可以通过交叉存取来提高带宽。一个易于使用和可预测的存储器控制器,如:ECP3 DDR3存储器控制器,在用户基于其对数据处理的基本算法的了解的情况下来分配存储器缓冲区时,可以最小的硬件和软件开销来实现最大的带宽。
刷新和初始化
因为DDR3存储器中的数据必须定期进行刷新,一些存储器访问必须分配给刷新操作。DDR3控制器应支持自动刷新指令队列,它可能是深度为8的指令集,可以作为一个指令组来执行,以使效率最大化。DDR3器件的初始化过程是非常繁复的并且很容易出错,特别是在手动执行时。DDR3控制器的初始化模块应该通过与用户逻辑的一次简单的握手,自动初始化存储器,从而极大地简化了接口设计。
流水线的指令处理
存储器控制器应当使用指令流水线来提高吞吐率,在当前指令出现在存储器接口时,译码队列中的下一条指令。这种方法提供了高于双周期存储器控制器100%的吞吐量。
功耗管理
在一些DDR3应用中,功耗管理可能是一个需要考虑问题。在一些设计中,使用Power Down指令是非常有用的。该指令在没有数据访问需求的时候,降低功耗。在power down状态下,器件功耗的降低可达90%。莱迪思DDR3存储器控制器支持该指令。此外,莱迪思ECP3为带有SERDES和高速接口,如DDR3存储器控制器的应用提供最低功耗的可编程解决方案。
设计和验证流程
DDR3存储器控制器IP核必须易于配置、生成并应用到一个目标设计中。使用图形化用户界面(GUI)来配置各种DDR3控制器参数是一种简便的方法,为目标系统快速创建正确的控制器。所有的参数都需要确定,如:存储器宽度、深度、速度和延迟。每一类配置参数都有其独立的选项卡,有助于将设计任务分为一个个可管理的“任务块”。一旦参数选定,生成代码(用VHDL或Verilog)和生成相应的测试基准应当是比较容易的。
例如,莱迪思IPexpress工具只需三个步骤,如图3所示,在ispLEVER设计软件中创建ECP3 DDR3存储器控制器IP核:
1)从莱迪思网站下载IPexpress工具并将IP核导入。
2)IP核参数可通过每个配置组对应的选项卡进行选择,配置组有:类型、设置、时序、引脚和设计工具。
3)基于Verilog或VHDL的IP核和测试基准一起生成,包括顶层、监视器、指令生成器、用于Aldec或ModelSim的配置和脚本文件。
图3:下载、配置和生成IP核设计流程
小结
在数据处理应用的设计中,如本文中视频处理的例子,当存储器具有足够的带宽时,可以充分利用FPGA的并行处理能力的优势。DDR3存储器具有灵活、易于使用的存储器控制器,如:莱迪思ECP3 DDR3存储器控制器IP核,加上正确使用突发模式访问、数据缓冲器分配和存储器交叉存取可以大大加快数据处理速度。此外,一个经验证的IP核与可靠的设计和验证环境也加速了这些应用的上市。
评论