MIG IP核配置和DDR3开发必备的硬件知识

        周日终于有时间更新博客了,下周会更新SD卡读写的FPGA 20个例程,STM32的野火开发板正在调试中,因为之前用的是STM32RCT6,野火这款是STM32F103VET6,需要用STM32Cube再配置下底层再联合上位机调试IAP升级,忙完工作一有时间就会尽快做好更新,这篇博客主要介绍MIG IP核和配置和DDR3内存颗粒的硬件知识,为后面FPGA缓存读写DDR3颗粒等例程做好预备工作。

        市面上的FPGA各种各样的付费教程,也都会介绍关于FPGA控制DDR3读写的方法,但大部分只是就事论事,仅告诉大家MIG IP核的读写时序逻辑,然后附带MIG IP核的配置和一些demo例程。这样做单纯从写FPGA教程角度来说问题不大,但笔者个人还是觉得应该把DDR3一些硬件上的知识也整明白,这样才有助于建立一个完整的知识体系。因为从工作角度说,大家在做研发的路上永远都是遇到新问题,并解决新问题的过程!仅仅看到工作的某一部分,或者说把自己局限在产品的某一小块也非常不利于个人的成长,大家在清楚了底层PCB工作方式和上层ARM控制原理,这时候再从产品稳定性和易用性的角度看FPGA设计,真的会对整个产品更深层次的理解。 

       在介绍MIG IP核的配置前,先详细介绍下DDR3内存颗粒的硬件设计吧,因为笔者在项目当中也实际layout过基于Zynq和Artix7两颗和单颗DDR3的PCB板,同时接受过系统性的layout培训,所以在这篇博客里结合工作经验简单说明下DDR3内存颗粒的选项和硬件设计,在产品开发中硬件的稳定性问题是非常重要的一环,如图1所示笔者DIY的Artix7开发板中,红框内即为一颗镁光DDR3内存颗粒,谈到DDR3的硬件设计,不得不说起几个关键的知识点:读写位宽;布局拓扑;同组同层;阻抗匹配;蛇形等长。       

MIG IP核配置和DDR3开发必备的硬件知识_第1张图片

 图1 DIY开发板Artix7上DDR3颗粒

       下面我们来逐一搞清楚这些DDR3颗粒的硬件设计问题:

       1.读写位宽,也有一些做FPGA开发的人员,因为本身没有系统性学习过PCB设计方面的知识,所以工作后对这部分依旧很模糊,在配置MIG IP核的时候,如果实际操作过应该会记得有选择DDR3读写位宽的选项,大部分教程会告诉读者,选16位的或者选32位的甚至64位的,那为什么要这么选择呢,我们就以这款DIY的Aritx7开发板举例展开说明,如图2和图3所示分别是笔者DIY开发板、黑金Aritx7开发板对于DDR3内存颗粒设计的硬件原理图,这里都用到了TPS51200这颗经典的德州仪器DDR3供电芯片,也按照DDR3设计规范添加了滤波电容,图2中DDR3_DQ数据线是16根,而图3中DDR3_D数据线是32根,所以在MIG IP核里分别选择了读写位宽16位和32位,同时细心的同学可能会发现图3相对于图2多了一排端节电阻,这里主要是为了防止信号反射的,因为多颗DDR3颗粒地址线上存在反射,增加端节电阻可有效减少地址线上的信号反射,而单颗DDR3颗粒则不需要这样做。

        2.布局拓扑,对于多颗DDR3颗粒典型有T点和FLY-BY菊花链拓扑,这篇博客不展开说明了,因为不是写作重点,但需要说明一点对于T点来说几乎支持所有CPU,但布局布线烦琐且一般最多支持四颗DDR3颗粒,而相反的FLY-BY布线比较简单,可以支持很多颗DDR3颗粒,但该拓扑结构不满足CPU不支持读写平衡的情况。

       3.同组同层,对于DDR3的布线,在硬件设计的过程中,对于数据线一定要满足同组同层的设计要求,举个例子如图2所示单颗DDR3颗粒,在layout设计的时候,应该注意将DDR3_DQ0-7、DDR3_DQS0_P、DDR3_DQS0_N、DDR3_DM0以及DDR3_DQ8-15、DDR3_DQS1_P、DDR3_DQS1_N、DDR3_DM1每组11根数据线布线在同一层。

      4.阻抗匹配,对于一些低速信号,大家可以认为只要layout时候拉通即可,用8mil线可以,用6mil线也可以,但对于DDR3的硬件设计,我们需要把阻抗匹配做扎实,保证其硬件运行稳定,即单线50ohm,差分100ohm。

      5.蛇形等长,大家都知道DDR3的布线设计中需要做等长设计,行业标准是3W原则,在layout之前应该留下一些空间余量方便绕线时使用,同时也规划好布局拓扑,笔者经验一般是先把同组同层的数据线先拉到BGA上,再拉地址线这样再后期换过孔调整走线比较方便。

MIG IP核配置和DDR3开发必备的硬件知识_第2张图片

  图2 DIY开发板Artix7上DDR3原理图

MIG IP核配置和DDR3开发必备的硬件知识_第3张图片

  图3 黑金开发板Artix7上DDR3原理图

       介绍完DDR3颗粒的基本硬件知识后,我们步入这篇博客的主题,即关于MIG IP核的配置问题,笔者在后期FPGA 20个经典例程篇中会花一章去专门写两个FPGA通过MIG读写DDR3的实战项目:DDR3内存通过UART读写;遍历DDR3芯片颗粒读写循环校验,这两个例程本身也具有很强的工程实战性,相信大家对FPGA控制DDR3读写应用就能完全理解掌握了。如图4-16是笔者项目工程中对MIG IP核的整体配置,当然不同的硬件和软件需求可能配置有所区别,在这里不逐一赘述了。

        介绍几个常用的地方,如图9所示Clock Period:DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型和速度等级有关。配置选择 2500ps,对应 400M,即采用芯片可选的最大频率。注意这个时钟是 MIG IP 核产生,并输出给 DDR3 物理芯片使用的,它关系到 DDR3 芯片具体的运行带宽。比如本次实验的开发板板载了一颗 DDR3 芯片,数据位宽总共 16 位,因为是双沿触发,这里带宽达到了 12.8Gb/s(800M*16bit)。 Memory Part:DDR3 芯片的具体型号。请选择 MT41J128M16XX-125。 Data Width:数据位宽选择,这里选择 16,和硬件匹配。

      如图10所示System Clock:MIG IP核输入时钟。选择“No Buffer”, MIG IP核的输入系统时钟是单端时钟,是由内部的MMCM产生的,MMCM所产生的时钟默认添加了buffer。 Reference Clock:MIG IP 核参考时钟。可以选择“Use System Clock”这个选项,这时候的 MIG IP 系统时钟同时作为了参考时钟,这时候 MIG IP 核的系统时钟刚好也使用了 200Mhz 的系统时钟。

       如图13所示,大家可以通过导入.xdc文件的方法直接配置FPGA芯片和DDR3连接的物理引脚,这样不容易出错,节约配置时间。后面的博客,笔者会详细介绍MIG IP核的使用方法和具体项目应用。

MIG IP核配置和DDR3开发必备的硬件知识_第4张图片

  图4 在Vivado17.4的搜索栏中搜索MIG IP核心

MIG IP核配置和DDR3开发必备的硬件知识_第5张图片 图5 MIG IP核工程信息展示

MIG IP核配置和DDR3开发必备的硬件知识_第6张图片

图6 MIG IP核顶层配置

MIG IP核配置和DDR3开发必备的硬件知识_第7张图片

图7 FPGA芯片引脚兼容设置

 MIG IP核配置和DDR3开发必备的硬件知识_第8张图片

图8 MIG IP核存储类型选择

 MIG IP核配置和DDR3开发必备的硬件知识_第9张图片

图9 MIG IP核时钟和物理芯片配置

 MIG IP核配置和DDR3开发必备的硬件知识_第10张图片

图10 MIG IP核系统时钟配置

 MIG IP核配置和DDR3开发必备的硬件知识_第11张图片

图11 MIG IP核端节阻抗配置

 MIG IP核配置和DDR3开发必备的硬件知识_第12张图片

图12 MIG IP核选项卡配置

 MIG IP核配置和DDR3开发必备的硬件知识_第13张图片

图13 MIG IP核引脚分配导入配置 

 MIG IP核配置和DDR3开发必备的硬件知识_第14张图片

图14 MIG IP核配置信息汇总

MIG IP核配置和DDR3开发必备的硬件知识_第15张图片图15 MIG IP核仿真选项卡

  MIG IP核配置和DDR3开发必备的硬件知识_第16张图片图16 MIG IP核Design Notes选项卡

你可能感兴趣的:(fpga开发)