IMX6ULL学习笔记(21)——MMDC接口使用(DDR3测试

2023-03-30  本文已影响0人  Leung_ManWah

一、MMDC简介

MMDC 接口与 STM32 的 FSMC 接口类似,只不过 MMDC 接口专用于外接 DDR,并且 MMDC 外部引脚不复用。MMDC 是一个多模的 DDR 控制器,可以连接 16 位宽的 DDR3/DDR3L、16 位宽的 LPDDR2。

MMDC 是一个可配置、高性能的 DDR 控制器。MMDC 外设包含一个内核(MMDC_CORE)和 PHY(MMDC_PHY),内核和 PHY 的功能如下:

1.1 MMDC信号引脚

在使用 STM32 的时候 FMC/FSMC 的 IO 引脚是带有复用功能的,如果不接 SRAM 或 SDRAM 的话 FMC/FSMC 是可以用作其他外设 IO 的。但是,对于 DDR 接口就不一样了,因为 DDR 对于硬件要求非常严格,因此 DDR 的引脚都是独立的,一般没有复用功能,只做为 DDR 引脚使用。I.MX6U 也有专用的 DDR 引脚如下:

1.2 MMDC时钟源

默认情况下 PLL2 的 PFD2 时钟输出作为 MMDC 的根时钟,时钟频率为 400MHz(实际396MHz)。时钟产生路径如下图所示:

PLL2 的 PFD2 经过两个时钟选择寄存器(标号①和②)和一个时钟分频寄存器(标号③)之后连接到 MMDC_CLK_ROOT。具体寄存器在时钟树中已经标出。特别注意的是,在程序中不能任意修改时钟选择寄存器以及时钟分频寄存器,因为程序正常运行会使用 DDR,而不正确的修改 DDR 根时钟会造成系统崩溃。

二、DDR简介

DDR 内存是 SDRAM 的升级版本,SDRAM 分为 SDR SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM。

DDR 全称是 Double Data Rate SDRAM,也就是双倍速率 SDRAM,看名字就知道 DDR 的速率(数据传输速率)比 SDRAM 高 1 倍!这 1 倍的速度不是简简单单的将 CLK 提高 1 倍,SDRAM 在一个 CLK 周期传输一次数据,DDR 在一个 CLK 周期传输两次数据,也就是在上升沿和下降沿各传输一次数据,这个概念叫做预取(prefetch),相当于 DDR 的预取为 2bit,因此 DDR 的速度直接加倍!比如 SDRAM 速度一般是 133~200MHz,对应的传输速度就是 133~200MT/s,在描述 DDR 速度的时候一般都使用 MT/s,也就是每秒多少兆次数据传输。133MT/S 就是每秒 133M 次数据传输,MT/s 描述的是单位时间内传输速率。同样 133~200MHz 的频率,DDR 的传输速度就变为了 266~400MT/S,所以大家常说的 DDR266、DDR400 就是这么来的。

DDR2 在 DDR 基础上进一步增加预取(prefetch),增加到了 4bit,相当于比 DDR 多读取一倍的数据,因此 DDR2 的数据传输速率就是 533~800MT/s,这个也就是大家常说的 DDR2 533、DDR2 800。当然了,DDR2 还有其他速度,这里只是说最常见的几种。

DDR3 在 DDR2 的基础上将预取(prefetch)提高到 8bit,因此又获得了比 DDR2 高一倍的传输速率,因此在总线时钟同样为 266~400MHz 的情况下,DDR3 的传输速率就是 1066~1600MT/S。I.MX6U 的 MMDC 外设用于连接 DDR,支持 LPDDR2、DDR3、DDR3L,最高支持 16 位数据位宽。总线速度为 400MHz(实际是 396MHz),数据传输速率最大为 800MT/S。这里我们讲一下 LPDDR3、DDR3 和 DDR3L 的区别,这三个都是 DDR3,但是区别主要在于工作电压,LPDDR3 叫做低功耗 DDR3,工作电压为 1.2V。DDR3 叫做标压 DDR3,工作电压为 1.5V,一般台式内存条都是 DDR3。DDR3L 是低压 DDR3,工作电压为 1.35V,一般手机、嵌入式、笔记本等都使用 DDR3L。

三、引脚确定

我使用的是 野火_EBF6ULL S1 Pro 开发板,DDR型号是 MT41K256M16TW-107,容量 256M*16 共 512M 字节,数据宽度 16 位。

四、DDR3测试

4.1 下载DDR测试软件和配置文件

NXP 提供了一个非常好用的 DDR 测试软件,叫做 ddr_stress_tester。
官网下载:https://community.nxp.com/docs/DOC-102005
百度网盘:

打开下载地址,如下图所示。

我们需要下载测试软件和测试需要使用的配置文件。如下图所示。

点击标号①,在附件中找到 配置文件,点击附件下载即可。如下图所示。

点击标号②,在附件中找到 下载工具,下载即可,如下图所示。

下载完成并解压如下图所示:

4.2 配置文件说明

打开 I.MX6UL_DDR3_Script_Aid_V0.02.xlsx 文件,如下图所示。

配置文件包括三部分内容:

4.2.1 配置选项

第二个文件是我们要修改的配置选项,如下图所示。

上图中黄色和蓝色选项框需要根据硬件平台选择即可,这里默认是 NXP 官方评估板的配置参数。 如果使用的是 野火_EBF6ULL S1 Pro 开发板这些配置参数不用修改,保持默认即可。

具体的配置界面,主要分为三部分:

① 驱动信息(Device Information)
这部分内容配置DDR芯片相关信息。各配置项介绍如下:

② 系统信息(System Information)
系统信息大多是固定的,通常情况下不需要修改,具体介绍如下:

③ 硬件SI参数(SI Configuratin)
这里设置的是硬件阻抗,保持默认即可。

4.2.2 保存配置信息

修改完成后,配置信息自动更新到 RealView.inc 文件,如下图所示:

RealView.inc 不能直接用,我们需要新建一个以 .inc 结尾的文件,名字自定义,但最好不要用中文。

使用 VS code 打开 RealVies.inc 文件(也可使用其他工具打开)。复制原配置文件中的全部内容到新建的 ALIENTEK_512MB.inc 文件,保存即可。后面 DDR 测试软件会使用到该配置文件。

4.3 安装ddr_stress_tester

双击 ddr_stress_tester_v3.00_setup.exe,软件会自动生成我们需要的测试工具,如下图所示。

一直点击下一步即可,最终会在当前文件夹下生成我们需要的测试软件如下图所示。

进入生成的工具,如下图所示。

4.4 DDR校准

双击DDR_Tester.exe,打开测试软件如下图所示。

根据使用的硬件平台进行配置。

配置完成后,将开发板设置为 USB 启动方式,点击 Download 按钮将测试代码下载到开
发板中,下载完成以后 DDR Test Tool 下方的信息窗口就会输出一些内容。

DDR TestTool 工具有三个测试项:DDR Calibration、DDR Stess Test 和 32bit Memory Read/Write,我们首先要做校准测试,因为不同的 PCB、不同的 DDR3L 芯片对信号的影响不同,必须要进行校准,然后用新的校准值重新初始化 DDR。点击 Calibraton 按钮,校准完成后会输出校准后的寄存器值,如下图所示。

如果校准成功软件会输出成功提示信息,如上图标号①所示。标号②处是校准后得到的6个寄存器的值, 我们需要用这些寄存器的值替换校准文件中的值。

例如我们使用的配置文件为 ALIENTEK_512MB.inc,使用 VS code 打开后直接搜索寄存器地址,例如修改 MMDC_MPWLDECTRL0 寄存器,则直接搜索 0x021b080c,找到后直接使用校准后的值 0x00050003 替换现有值即可。特别提醒,默认情况下,配置文件中找不到 MMDC_MPWLDECTRL1(0x021b0810)MPDGCTRL1 PHY0(0x021b0840), 这两个寄存器直接忽略即可。修改完成后保存即可。

ALIENTEK_512MB.inc 修改完成以后重新加载并下载到开发板中,至此 DDR 校准完成。

4.5 DDR性能测试

校准完成以后就可以进行 DDR3 超频测试,超频测试的目的就是为了检验 DDR3 硬件设计合不合理,一般 DDR3 能够超频到比标准频率高 10%~15%的话就认为硬件没有问题。

DDR Test Tool 支持 DDR3 超频测试,只要指定起始频率和终止频率,那么工具就会自动开始一点点的增加频率,直到达到终止频率或者测试失败。

设置好起始频率为 400MHz,终止频率为 600MHz,设置好以后点击 Stress Test 按钮开启超频测试,超频测试时间比较久,请耐心等待。

从上图可以看出,当超频到556MHz是出现了错误,说明我测试的这块开发板最高频率为552MHz, 不同开发板稍有差别,但都能满足400M的标准工作频率。


• 由 Leung 写于 2023 年 3 月 31 日

• 参考:13. DDR测试

上一篇下一篇

猜你喜欢

热点阅读