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

[复制链接]
查看1156 | 回复0 | 2023-8-23 11:57:37 | 显示全部楼层 |阅读模式
文章目次
前言
一、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的过程:必要先指定一个bank地点,然后指定行地点,末了指定列地点,再将数据写入即可。
          DDR3容量盘算:bank数目*行数目*列数目*存储单位容量。
  2、DDR3定名规则:
   
           MT41J:表示一个DDR3代号
          64M:表示bank‘、行、列的数目
          16:表示DDR3的数据位宽,即存储单位容量
          -125:表示DDR3速度品级,可以根据速度品级盘算DDR3的时钟频率。
  3、DDR3时钟计划:

    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核。

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

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

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

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

 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模式,表示直接实行我的指令。
  
 7、点击Next,继续举行DDR3 IP核的设置,这里告急选择输入DDR3芯片的时钟,我这里选择200MHZ,别的保持默认即可。

 8、点击Next,继续设置DDR3 IP核:
   ① System Clock:这个选择体系时钟的来源,有差分时钟,单端时钟和内部时钟,我这里选择内部时钟;
  ② Reference Clock:这个时钟必须存在,而且必须是200MHZ,这里选择时钟来源;
  ③ System Reset Polarity:复位极性选择,这里选择低电平复位;
  ④ Debug Signals Control:调试信号,可以通过调试信号来调试DDR3,勾选上就是在其内部例化一个ILA调试IP核,我这里选择关闭;
  ⑤ 别的保持默认即可。
  
 9、点击Next,这一页表示外部阻抗匹配,这里设置50Ohms。

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

 11、后面不绝点击Next,别的不消我们举行设置,在法律条文板块勾选Accept。

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

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

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

           在我们设置好DDR3 IP核事后,就必要用到它的例化模块了,下面我们就来看一下它的用户端各个接口的功能以及读写时序。
          下图是7系列FPGA的MIG IP核Native接口机构框图,MIG IP查对外分出了两组接口,左侧是用户端接口,用来对MIG IP核举行操纵控制;右侧是DDR3物理芯片接口,负责产生详细的操纵时序,并直接作用与DDR3芯片,不必要我们举行设置。
  
1、DDR3 IP核接口分析

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


         注意:这里的输入\输出是相对于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写数据时序如下图所示,在DDR3写数据时,首先查抄app_wdf_rdy,如果为高电平则表示此时MIG IP核处于吸取数据准备完成状态,可以吸取用户发送过来的数据;然后在当前时钟拉高写使能(app_wdf_wren),给出写数据(app_wdf_data),如许加上发起的写命令操纵就可以将数据乐成写入MIG IP核内了。
   注意在举行写数据操纵时,有三种方式:
          ① 写命令与写数据发生在同一时钟周期;
          ② 写数据先于写命令发送;
          ③ 写数据落伍于写命令操纵,但不能凌驾两个时钟周期。
  
 ③ 读数据时序:

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


总结

           在举行DDR3芯片读写操纵时,优先选择MIG IP核,由于利用IP核不但能低沉工程师开发难度,而且会大大进步工程的稳固性。如果不利用IP核,那么就必要本身计划DDR3的控制器,由于DDR3芯片的控制时序很是复杂,而且还必要用到一些专用的原语举行计划,以是计划难度不问可知,而利用MIG IP核举行计划时,就不必要思量DDR3那复杂了操纵逻辑了,只必要对MIG IP核用户端接口举行简单的时序计划,开发服从也得到了极大地提拔。

来源:https://blog.csdn.net/weixin_62912626/article/details/130204290
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则