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

  由于本设计采用的是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,大大提高系统设计的性价比。

原文地址:http://www.eefocus.com/article/11-02/2075521298557132.html?sort=1111_1124_1474_0

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

  1. Vivado中MIG核中DDR的读写控制

    本文使用Vivado 2015.4在Nexys4 DDR(以下简称N4DDR)开发板上实现DDR的读写. · FPGA如果需要对DDR进行读写,则需要一个DDR的控制器.根据官方的文档(UG586,下 ...

  2. linux除了eeprom其他的保存方法,linux的EEPROM的读写控制.doc

    毕业设计[论文]题目:基于linux的EEPROM的读写控制毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果.据我所知,除文中已经注明引用的内容 ...

  3. linux下eeprom读写测试,本科毕业设计__基于linux的eeprom的读写控制.doc

    毕业设计[论文] 题目:基于linux的EEPROM的读写控制 毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果.据我所知,除文中已经注明引用的 ...

  4. 【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十一章 PS端UART读写控制

    原创声明: 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处. 适用于板卡型号: AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E ...

  5. 基于MIG控制器的DDR3读写控制详解

    基于MIG控制器的DDR3读写控制详解 目的:详细介绍FPGA中基于MIG IP核控制的DDR3详细控制及内部逻辑 平台:AX7350-Xilinx 软件:Vivado 2017.4 1.MIG IP ...

  6. 基于FPGA的DDR3多端口读写存储管理系统设计

    机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频.由于FPGA具有强大逻辑资源.丰富IP核等优点,基于 FPGA的嵌入式系统架构是机载视频图形显示系统理想的架构 ...

  7. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  8. 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

    一.前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文 ...

  9. 采用FPGA实现音频模数转换器

    摘 要 简要分析sigma-deIta(∑一△)架构模数转换器(ADC)原理,提出一种基于FPGA内部LVDS(Low Voltage Differential Signaling)接收器的音频ADC ...

最新文章

  1. [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点
  2. oracle em界面监控出来的奇怪图像_海康poe主机断电重启后不出图像,显示用户被锁定...
  3. 计算机搜索文件时找不到搜索按钮,电脑搜不到文件怎么办?文件搜索软件用起来!...
  4. 【推荐实践】爱奇艺推荐中台探索与实践
  5. 消费者启动,允许期间报task supervisor timed out 异常,解决
  6. AcWing 1987. 粉刷栅栏(离散化+差分)
  7. 最近一个快要结束的项目的BUG分析
  8. 【渝粤教育】国家开放大学2018年春季 0706-22T行政管理学导论 参考试题
  9. 三星s6 html5测试分数,魅蓝s6安兔兔跑分有多少
  10. Picasa是什么软件
  11. 软件工程考研复试、工作面试常见问题及答案
  12. 网站IP更换对SEO有影响吗
  13. 开展软件测试的目标和目的究竟是什么?
  14. 回归学习算法---偏最小二乘回归、PCA降维与理论
  15. android微信qq分享,android 一键分享 QQ 微信
  16. SpringBoot+OAuth2+Google关联登录
  17. 用MATLAB的GUI绘图的一个简单例子
  18. ALSA --- amixer控制声卡驱动实现Line-in功能
  19. 高中计算机会考怎么考,会考通过需多少分
  20. Android Emulator 模拟器使用方法

热门文章

  1. 受控组件及非受控组件
  2. 不说!灰常经典的英文歌!爱英文歌的千万别错过
  3. 【剑指offer】高频ML/DL面试题
  4. 基于贝叶斯算法的证券市场风险研究
  5. php ajax联动下拉列表,PHP和Ajax实现二级联动下拉菜单(代码、详细注释)
  6. 黑马--Linux基础学习笔记
  7. 胎压监测TPMS方案与功能设计
  8. TikTok广告实操案例数据分析(一)
  9. android测试实现方法总结
  10. RKFW的update.img解包和打包