0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的DDR3读写测试

CHANBAEK 来源:FPGA Zone 作者:FPGA Zone 2023-09-01 16:23 次阅读

本文介绍一个FPGA开源项目:DDR3读写。该工程基于MIG控制器IP核对FPGA DDR3实现读写操作。

MIG控制器支持两种接口:(1)简单用户控制逻辑接口;(2)AXI接口。该工程采用前者,后面会整理DDR3的AXI总线访问方法。

下面简单介绍一下MIG控制器IP核的使用以及FPGA板上测试结果。

01软硬件平台

  • 软件平台:Vivado 2017.4;
  • 硬件平台:XC7A35TFTG256-1;

02IP核参数配置

MIG(Memory Interface Generator)IP核提供了用户接口逻辑,以便于实现对DDR的访问。有关MIG的详细描述,可以参考官方文档:ug586。这里不展开介绍。

图片

接口配置界面,保持默认选项。

图片

  • Clock Period:配置主时钟频率,这里选择400M。由于DDR是双沿工作,所以读写速率为400M2Data Width(16bits);
  • 时钟频率和用户时钟频率比例:4:1,因此生成的用户时钟为100M;
  • Memory Part:配置DDR参数,根据实际情况选择;
  • Data Mask:如果选用的DDR带有data mask就选上,并将信号拉低,表示不屏蔽数据接口;

图片

Input Clock Period:输入时钟,这里选择200M。

图片

  • System Clock:No Buffer;
  • Reference Clock:使用系统时钟;
  • 系统复位信号:低电平有效;

图片

读取XDC文件管脚配置,并点击validate,进行校验。

图片

系统信号选择不用配置,保持默认选项即可。

03用户接口 & 读写时序

MIG IP产生的用户接口信号是以app_*格式命名:

input  [127:0] app_rd_data;      //读数据
input          app_rd_data_end;  //读数据结束
input          app_rd_data_valid;//读数据有效
input          app_rdy;          //MIG控制器准备好读写
input          app_wdf_rdy;      //MIG控制器准备好写
output [27:0]  app_addr;         //读写地址
output [2:0]   app_cmd;          //读写命令
output         app_en;           //控制命令使能
output [127:0] app_wdf_data;     //写数据
output         app_wdf_end;      //写数据结束 
output         app_wdf_wren;     //写数据使能

DDR写时序如下图所示。逻辑比较简单,将所有信号严格对齐即可。但有一个需要注意的地方,就是当 app_rdy 和 app_wdf_rdy 都为高的时候,才能同时拉高 app_en ,这时写入的数据才有效。

图片

DDR读时序如下图所示。app_cmd、app_addr、app_en、app_rdy信号严格对齐即可,但是同样需要在 app_rdy 拉高的情况下,才能拉高 app_en 。另外,数据读出会略有延迟。

图片

04Vivado工程源码结构

本工程源码结构如下图所示。

图片

  • ddr_ctrl:ddr用户接口读写控制模块;
  • clk_wiz_0:产生200M时钟供MIG IP使用;
  • time_ref:系统时间基准模块,以1s为周期计数;

05实现功能 & 测试结果

该Vivado工程主要用于FPGA DDR3读写功能测试。基于用户控制逻辑接口,以1s为周期,每周期内完成1次读写操作。板上测试1次读写操作的结果如下图所示。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21324

    浏览量

    593215
  • 控制器
    +关注

    关注

    112

    文章

    15234

    浏览量

    171205
  • DDR3
    +关注

    关注

    2

    文章

    268

    浏览量

    41792
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148507
  • AXI
    AXI
    +关注

    关注

    1

    文章

    126

    浏览量

    16286
收藏 人收藏

    评论

    相关推荐

    基于FPGADDR3多端口读写存储管理系统设计

    本文以Kintex-7系列XC7K410T FPGA芯片和两片MT41J128M16 DDR3 SDRAM芯片为硬件平台,设计并实现了基于FPGA的视频图形显示系统的DDR3多端口存储
    发表于 04-07 15:52 1.2w次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>DDR3</b>多端口<b class='flag-5'>读写</b>存储管理系统设计

    【紫光同创国产FPGA教程】【第十章】DDR3读写测试实验

    本实验为后续使用DDR3内存的实验做铺垫,通过循环读写DDR3内存,了解其工作原理和DDR3控制器的写法,由于DDR3控制复杂,控制器的编写
    的头像 发表于 02-05 13:27 8392次阅读
    【紫光同创国产<b class='flag-5'>FPGA</b>教程】【第十章】<b class='flag-5'>DDR3</b><b class='flag-5'>读写</b><b class='flag-5'>测试</b>实验

    cyclone V控制DDR3读写,quartusII配置DDR3 ip核后,如何调用实现DDR3读写呢,谢谢

    DDR3的IP核配置完毕后,产生了好多文件,请问如何调用这些文件实现DDR3读写呢?看了一些文章,说是要等到local_init_done为高电平后,才能进行读写操作。请问
    发表于 01-14 18:15

    FPGA输出的DDR3差分时钟左右抖动很厉害,请问是怎么回事呢?

    各位专家,我使用altera的cyclone5的DDR3硬核控制器,输入时钟是国产的125兆50PPM有源晶振,现在调试时发现对DDR3读写偶尔出错。我们测试
    发表于 05-11 06:50

    基于FPGADDR3六通道读写防冲突设计

    读写防冲突设计,能有效地解决在期货行情数据处理中多通道同时访问DDR3的冲突问题,在现有的Kintex-7系列FPGA平台期货行情数据处理系统中取得了良好的应用效果。测试结果表明该防
    发表于 08-02 09:32

    基于FPGADDR3 SDRAM控制器的设计与优化

    控制器的编写,并在Kintex-7 FPGA芯片上完成了功能测试及实现。1 DDR3连续读写操作的FPGA 实现设计选用8片Mircon公司
    发表于 08-02 09:34

    基于FPGADDR3多端口读写存储管理的设计与实现

    ,设计的DDR3存储管理系统简化了多端口读写DDR3的复杂度,提高并行处理的速度。引言机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频。由于FPGA
    发表于 08-02 11:23

    关于FPGA外部的DDR3 DRAM怎么回事

    我是一名labview FPGA程序员,使用的是NI 7975 fpga模块,它具有kintex 7 fpga。该模块具有外部DDR3 DRAM 0f 2GB以及kintex 7
    发表于 05-20 14:42

    DDR3芯片读写控制及调试总结

    DDR3芯片读写控制及调试总结,1. 器件选型及原理图设计(1) 由于是直接购买现成的开发板作为项目前期开发调试使用,故DDR3芯片已板载,其型号为MT41J256M16HA-125,美光公司生产的4Gb容量
    发表于 07-22 08:33

    FPGA DEMO】Lab2:DDR3读写实验

    `本开发板板载了一片高速 DDR3 SDRAM, 型号:MT41J128M16JT-093, 容量:256MByte(128M*16bit),16bit 总线。开发板上 FPGADDR3
    发表于 07-30 11:23

    怎样对DDR3芯片进行读写控制呢

    怎样对DDR3芯片进行读写控制呢?如何对DDR3芯片进行调试?
    发表于 08-12 06:26

    ddr3读写分离方法有哪些?

    DDR3是目前DDR的主流产品,DDR3读写分离作为DDR最基本也是最常用的部分,本文主要阐述DDR3
    的头像 发表于 11-06 13:44 8493次阅读
    <b class='flag-5'>ddr3</b>的<b class='flag-5'>读写</b>分离方法有哪些?

    基于FPGADDR3多端口读写存储管理的设计与实现

    为了解决视频图形显示系统中多个端口访问DDR3的数据存储冲突,设计并实现了基于FPGADDR3存储管理系统。DDR3存储器控制模块使用MIG生成D
    发表于 11-18 18:51 6532次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>DDR3</b>多端口<b class='flag-5'>读写</b>存储管理的设计与实现

    基于AXI总线的DDR3读写测试

    本文开源一个FPGA项目:基于AXI总线的DDR3读写。之前的一篇文章介绍了DDR3简单用户接口的读写方式:《
    的头像 发表于 09-01 16:20 2289次阅读
    基于AXI总线的<b class='flag-5'>DDR3</b><b class='flag-5'>读写</b><b class='flag-5'>测试</b>

    阐述DDR3读写分离的方法

    DDR3是2007年推出的,预计2022年DDR3的市场份额将降至8%或以下。但原理都是一样的,DDR3读写分离作为DDR最基本也是最常用
    的头像 发表于 10-18 16:03 583次阅读
    阐述<b class='flag-5'>DDR3</b><b class='flag-5'>读写</b>分离的方法