【FPGA】十三、Vivado MIG IP核实现DDR3控制器(1)

这篇具有很好参考价值的文章主要介绍了【FPGA】十三、Vivado MIG IP核实现DDR3控制器(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

前言

一、DDR3基础知识

二、MIG  IP核的配置

三、DDR3 IP核用户端接口时序

1、DDR3 IP核接口说明

2、DDR3 IP核读写时序

① 写命令时序:

 ② 写数据时序:

 ③ 读数据时序:

总结


前言

        我们在进行FPGA开发应用当中,经常会用到存储器来保存数据,常用的存储器有ROM、FIFO、SDRAM等等,这些存储器对于数据量小的情况下还尚可使用,但是如果我们需要做图像采集,数据处理等大量数据需要存储和传输的时候,这些存储器就有点力不从心了,需要寻找存储量大并且传输速率快的存储器,而DDR3不论是从存储量还是从传输速率上来看都是满足当前需求的,并且在常用的FPGA开发板上也比较常见。

        DDR3的时序是比较复杂的,所以我们在使用DDR3芯片的时候,通常会选择IP核,这样不仅提升了开发效率,并且还能使程序运行稳定,下面我们就一起来学习基于Xilinx公司开发的MIG IP核,来实现DDR3芯片的控制。


一、DDR3基础知识

1、DDR3概述:

        DDR3 SDRAM全称是第三代双倍速率同步动态随机存储器,由于其存储容量大以及传输速度快在现代电子设备中得到了广泛的应用。DDR3的本质是一个SDRAM,只是DDR3是采用时钟双边沿进行数据传输。

        DDR3的特点:

        ① 掉电无法保存数据,需要周期性刷新,这是由于其是电荷存储数据导致的;

        ② 时钟上升沿和下降沿都会传输数据,与SDRAM单边沿传输数据不同;

        ③ 突发传输,突发长度一般为8。

        DDR3的存储规则:

ddr3配置 vivado,FPGA,fpga开发,人工智能

         数据存入DDR3的过程:需要先指定一个bank地址,然后指定行地址,最后指定列地址,再将数据写入即可。

        DDR3容量计算:bank数量*行数量*列数量*存储单元容量。

2、DDR3命名规则:

ddr3配置 vivado,FPGA,fpga开发,人工智能

         MT41J:表示一个DDR3代号

        64M:表示bank‘、行、列的数量

        16:表示DDR3的数据位宽,即存储单元容量

        -125:表示DDR3速度等级,可以根据速度等级计算DDR3的时钟频率。

3、DDR3时钟设计:

ddr3配置 vivado,FPGA,fpga开发,人工智能

 DDR3时钟类型:

        ① 系统时钟:MIG IP核工作时钟,命名为sys_clk;

        ② 参考时钟:MIG IP核参考时钟,必须为200M,命名为ref_clk;

        ③ 用户端时钟:MIG IP核输出给用户端的时钟,命名为ui_clk;

        DDR3芯片工作时钟与用户端时钟有一定的比例关系,DDR3芯片工作时钟:用户端时钟 = 4:1或者2:1,当DDR3芯片工作输出时钟为800M时,比例只能是4:1。


二、MIG  IP核的配置

        MIG(Memory Interface Generators)IP是Xilinx公司针对DDR存储器开发的IP核,里面集成了存储器控制模块,实现DDR读写操作的控制流程。有了这个IP核,我们在对DDR3芯片进行数据读写操作时,就不用去管DDR复杂的时序控制,只需要根据MIG IP核用户端的逻辑来配置即可,能够减少开发者的工作量以及程序的正确性,下面我们就来配置MIG IP核。

1、首先建立一个工程,在建立好的工程中点击IP Catalog,搜索MIG IP核。

ddr3配置 vivado,FPGA,fpga开发,人工智能

2、 双击进入MIG IP核,第一个页面就是对MIG IP核做了一些简单的介绍,包括Vivado工程选项,以及你这个工程所选用的器件。最下方的User Guide是Xilinx公司提供的MIG IP核介绍及配置的官方文档,可以帮助你了解整个MIG IP核的所有信息。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 3、点击Next,进入第二页,这一页包含了MIG输出选项、组件名称、支持多个控制器和启用AXI4接口选项,可根据需要进行配置。这里我们设置名称为mig_16b,不勾选AXI4选项,默认就是Native接口。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 4、点击Next,进入第三页,这一页是针对兼容器件的选择,可以兼容多个器件。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 5、点击Next,进入第四页,选择你需要使用的存储器件,我这里选择DDR3 SDRAM。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 6、点击Next,接下来就开始进行DDR3存储器IP核的配置了:

① Clock Period:选择期望的时钟频率,这里的时钟频率是接口时钟频率,我这里是400MHZ;

② PHY to Controller Clock Ratio:PHY与控制器的时钟比,也就是DDR3芯片工作时钟与用户端时钟比例,这里是4:1;

③ Memory Type:存储器类型,DDR3存储器规格;

④ Memory Part:存储器型号,不同型号的存储器所定义的地址位宽是不一样的,同时数据传输速率也会有所区别,我这里选择MT41J128M16XX-125;

⑤ Data Width:数据位宽,根据DDR3存储器来选择,我这里选择的是16位;

⑥ Data Mask:数据掩码,可用其来控制数据有效位数;

⑦ Number of Bank Machines:DDR控制器的bank machines个数设置;

⑧ ORDEING:模式选择,这里选择Strict模式,表示直接执行我的指令。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 7、点击Next,继续进行DDR3 IP核的配置,这里主要选择输入DDR3芯片的时钟,我这里选择200MHZ,其余保持默认即可。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 8、点击Next,继续配置DDR3 IP核:

① System Clock:这个选择系统时钟的来源,有差分时钟,单端时钟和内部时钟,我这里选择内部时钟;

② Reference Clock:这个时钟必须存在,并且必须是200MHZ,这里选择时钟来源;

③ System Reset Polarity:复位极性选择,这里选择低电平复位;

④ Debug Signals Control:调试信号,可以通过调试信号来调试DDR3,勾选上就是在其内部例化一个ILA调试IP核,我这里选择关闭;

⑤ 其余保持默认即可。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 9、点击Next,这一页表示外部阻抗匹配,这里设置50Ohms。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 10、点击Next,这一页是引脚配置,第一种适合DDR3存储器硬件还没确定的情况,先进行工程开发,后面再来配置引脚;第二种适合已经确定了DDR3芯片的硬件了,就直接将引脚分配完成了。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 11、后面一直点击Next,其余不用我们进行配置,在法律条文板块勾选Accept。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 12、最后一步点击Generate就完成了!

ddr3配置 vivado,FPGA,fpga开发,人工智能

 到此为止,我们的DDR3控制器IP核就已经配置完成了!


三、DDR3 IP核用户端接口时序

        在我们配置好DDR3 IP核过后,就需要用到它的例化模块了,下面我们就来看一下它的用户端各个接口的功能以及读写时序。

        下图是7系列FPGA的MIG IP核Native接口机构框图,MIG IP核对外分出了两组接口,左侧是用户端接口,用来对MIG IP核进行操作控制;右侧是DDR3物理芯片接口,负责产生具体的操作时序,并直接作用与DDR3芯片,不需要我们进行配置。

ddr3配置 vivado,FPGA,fpga开发,人工智能

1、DDR3 IP核接口说明

        下图是DDR3 IP核例化的引脚接口,我对其进行了一定的解释说明:

ddr3配置 vivado,FPGA,fpga开发,人工智能

ddr3配置 vivado,FPGA,fpga开发,人工智能

         注意:这里的输入\输出是相对于MIG IP核来说的,例如ui_clk就是output给用户侧的用户时钟。

2、DDR3 IP核读写时序

        在运用MIG IP核进行DDR3控制器的设计当中,主要是对DDR3芯片进行数据写入和读取操作,需要对其命令时序,写数据时序以及读数据时序进行操作,其中无论是读或者写操作都包含了写命令操作,其中写操作命令(app_cmd)的值等于0,读操作命令(app_cmd)的值等于1。

① 写命令时序:

        DDR3写命令时序如下图所示,在进行写命名操作之前,需要先检查app_rdy,如果为高电平则表示此时MIG IP核处于接收命令准备好状态,可以接收用户命令;然后再当前时钟拉高app_en,同时发生命令(app_cmd)和地址(app_addr),此时命令和地址会被同时写入。这里需要注意地址的构成,app_addr = bank地址+行地址+列地址(拼接而成)。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 ② 写数据时序:

        DDR3写数据时序如下图所示,在DDR3写数据时,首先检查app_wdf_rdy,如果为高电平则表示此时MIG IP核处于接收数据准备完成状态,可以接收用户发送过来的数据;然后在当前时钟拉高写使能(app_wdf_wren),给出写数据(app_wdf_data),这样加上发起的写命令操作就可以将数据成功写入MIG IP核内了。

注意在进行写数据操作时,有三种方式:

        ① 写命令与写数据发生在同一时钟周期;

        ② 写数据先于写命令发送;

        ③ 写数据落后于写命令操作,但不能超过两个时钟周期。

ddr3配置 vivado,FPGA,fpga开发,人工智能

 ③ 读数据时序:

        相比于写命令和写数据时序,DDR3的读数据时序就比较简单了,需要向DDR3芯片读取数据时,只需发送读命令,用户只需要等待数据有效信号(app_rd_data_valid)拉高,数据有效信号为高电平则表示此时数据总线上的数据是有效的,是我们所需要的数据。这里需要注意的是,当我们发出读数据命令后,数据不一定会马上返回,可能会晚几个时钟周期。

ddr3配置 vivado,FPGA,fpga开发,人工智能


总结

        在进行DDR3芯片读写操作时,优先选择MIG IP核,因为使用IP核不仅能降低工程师开发难度,并且会大大提高工程的稳定性。如果不使用IP核,那么就需要自己设计DDR3的控制器,由于DDR3芯片的控制时序很是复杂,并且还需要用到一些专用的原语进行设计,所以设计难度不言而喻,而使用MIG IP核进行设计时,就不需要考虑DDR3那复杂了操作逻辑了,只需要对MIG IP核用户端接口进行简单的时序设计,开发效率也得到了极大地提升。文章来源地址https://www.toymoban.com/news/detail-589653.html

到了这里,关于【FPGA】十三、Vivado MIG IP核实现DDR3控制器(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用VIVADO中的MIG控制DDR3(AXI接口)一——AXI简介

            最近,因为需要,学习了AXI总线协议和DDR3相关的知识,花了很多的时间去找各种相关的资料,深刻明白查资料的不容易,这里将所学到的东西做一个总结,同时给需要的人提供一些便利,有问题的欢迎一起讨论学习、共同进步。          首先来说一下有关AXI总

    2024年02月08日
    浏览(47)
  • 【Xilinx FPGA】DDR3 MIG IP 仿真

    Memory Interface Generator (MIG 7 Series)是 Xilinx 为 7 系列器件提供的 Memory 控制器 IP,使用该 IP 可以很方便地进行 DDR3 的读写操作。本文主要记录 Xilinx DDR3 MIG IP 的仿真过程,包括 IP 配置和 DDR3 读写仿真两部分内容。 目录 1 MIG IP 配置 2 DDR3 读写仿真         在 Vivado 开发平台 IP C

    2024年02月09日
    浏览(48)
  • FPGA入门 —— DDR3(MIG IP 核) 入门

    DDR 简介 DDR=Double Data Rate双倍速率同步动态随机存储器。严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,其中,SDRAM 是Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。而DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。 SDRAM在一个时

    2024年01月16日
    浏览(53)
  • 使用MIG IP 核实现DDR3读写测试学习

    1、简介         DDR3 SDRAM(Double-Data-Rate Three Synchronous Dynamic Random Access Memory)是 DDR SDRAM 的第三代产品,相较于 DDR2,DDR3 有更高的运行性能与更低的电压。DDR SDRAM 是在 SDRAM 技术的基础上发展改进而来的,同 SDRAM 相比,DDR SDRAM 的最大特点是双沿触发,即在时钟的上升沿和

    2024年01月16日
    浏览(46)
  • DDR3(MIG核配置&官方demo&FPGA代码实现及仿真)

      由于直接对 DDR3 进行控制很复杂,因此一般使用 MIG IP 来实现,同时为了更简单地使用 MIG IP,我们采用 AXI4 总线协议进行控制。下面首先介绍 MIG IP 的配置,然后看看官方 demo (里面包含一个仿真要用到的 DDR3 模型)及其仿真结果,最后进行我们自己的控制代码实现。  

    2024年02月05日
    浏览(43)
  • 【FPGA】MIG DDR3读写逻辑测试

            笔者在之前通过microblaze软核的方式实现了DDR3芯片的读写测试,当时对于Xilinx MIG DDR控制器的理解还比较肤浅。还是想通过控制用户接口时序的方式来读写DDR,扩展和加深自己对DDR的理解。 MIG IP核配置请看我的前一篇文章 【FPGA测试】Microblaze测试DDR读写_microblaze

    2024年01月22日
    浏览(41)
  • 【Xilinx FPGA】DDR3 MIG 时钟管脚分配

    之前在验证 FPGA 板卡的芯片管脚时,所用的测试工程使用内部 PLL 生成的时钟作为 DDR3 的参考时钟。后来尝试将参考时钟改为外部 100M 晶振时钟,发现 MIG IP 配置工具找不到相应管脚,于是学习并梳理了 Xilinx DDR3 MIG IP 时钟管脚的分配规则,在这里做个记录。   目录 1 MIG 时钟

    2024年02月06日
    浏览(46)
  • 快速上手Xilinx DDR3 IP核----汇总篇(MIG) ?前言

            本文是 《快速上手Xilinx DDR3 IP核》 系列文章的汇总篇。         该系列介绍了Xilinx 控制DDR3的IP核----MIG IP核的基本构成和使用方法,在MIG 接口的基础上在外部封装了FIFO,使得操作时序更加简单,并用此方法实现了几个练手的小项目。         MIG IP核对外提供了两类

    2024年02月05日
    浏览(51)
  • 超详细的FPGA使用MIG调用SODIMM DDR3内存条接口教程

    SODIMM 接口DDR3适配额外的内存条才能满足数据缓存的需求,这种需求一般用于高端项目,DDR3 SDRAM 常简称 DDR3, 是当今较为常见的一种储存器, 在计算机及嵌入式产品中得到广泛应用,特别是应用在涉及到大量数据交互的场合。 本文以XC7K325T-FFG900-2L为例,记录MIG的配置过程,

    2024年02月02日
    浏览(48)
  • 基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制

    基于fpga的ddr3读写控制,纯verilog实现,能实现多通道图像数据读写控制,模块接口清晰,可移植性高. 基于FPGA的DDR3读写控制是一项重要的技术,它为多通道图像数据的读写提供了高效的解决方案。本文将介绍一种纯Verilog实现的DDR3读写控制模块,旨在实现模块接口清晰、可移

    2024年04月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包