DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 375|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 14:53:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:?本文采用LatticeXP系列FPGA结合IP解决DDR RAM的读写控制。并且在硬件上面进行了实际测试。
关键词:?嵌入式系统;DDR RAM;FPGA;IP;LattcieXP
前言

??? 随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统中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)。



图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读写操作有错误。

??? 由于本设计采用的是DIMM内存条512Mb容量,因此测试时,数据地址采用基址加变址的方式。每一次测试256×32b的数据完成后,循环进入下一次测试时,将起始基地址加256,再进行数据操作。这样最终完整可以扫描512M的数据地址空间,使测试更加完整。这种测试的方法,采用小块地址,多次操作,可以减少FPGA内部RAM的使用量。

??? 本文中编写的测试代码采用Verilog语言编写,逻辑如图8。



图8 测试代码逻辑状态机
硬件测试结果

??? 本实验是在Lattice的XP advanced版demo板上进行的。

??? 采用的FPGA为LFXP10C-5F384,内存条为Kingston 512M笔记本内存条,RAM颗粒为现代HY5DU561622。测试DDR266连续运行2小时,数据无异常,DDR读写操作完全正常。
结语

??? 在嵌入式系统中应用DDR RAM的越来越多,在设计当中采用FPGA,不仅设计灵活,而且还可以将周边的数字器件综合设计进入FPGA,大大提高系统设计的性价比。
参考文献
1.? 胡为,DDR SDRAM在嵌入式系统中的应用,单片机与嵌入式系统应用,2006.3
2.? LatticeXP? family handbook. Lattice semiconductor Co.,2006.6
3.? Lattice DDR1/2 controller user guide.Lattice semiconductor Co.,2006.6
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-28 03:26 , 耗时 0.095517 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表