I.MX6U-ALPHA开发板(DDR3实验)

I.MX6U-ALPHA 开发板上带有一个 256MB/512MB 的 DDR3 内存芯片,一般 Cortex-A 芯片自带的 RAM 很小,比如 I.MX6U 只有 128KB 的 OCRAM。如果要运行 Linux 的话完全不够用的,所以必须要外接一片 RAM 芯片,I.MX6U 支持 LPDDR2、LPDDR3/DDR3,I.MX6U-ALPHA开发板上选择的是 DDR3,本章就来学习如何驱动 I.MX6U-ALPHA 开发板上的这片 DDR3。

一、DDR内存简介

1、RAM和ROM

​ RAM:随机存储器,可以随时进行读写操作,速度很快,掉电以后数据会丢失。比如内存条、SRAM、SDRAM、DDR 等都是 RAM。RAM 一般用来保存程序数据、中间结果。

​ ROM:只读存储器,出,相比于RAM,向 ROM 或者 Flash 写入数据要复杂很多,因此意味着速度就会变慢(相比 RAM),但是ROM 和 Flash 可以将容量做的很大,而且掉电以后数据不会丢失,适合用来存储资料,比如音乐、图片、视频等信息。

2、SRAM

​ SRAM 的全称叫做 Static Random-Access Memory,也就是静态随机存储器,这里的“静态”说的就是只要 SRAM 上电,那么 SRAM 里面的数据就会一直保存着,直到 SRAM 掉电。对于RAM 而言需要可以随机的读取任意一个地址空间内的数据,因此采用了地址线和数据线分离的方式

​ 一开始是芯片内部RAM,后面因为应用需求需要外扩RAM,比如STM32F103/F407开发外扩1MB SRAM。

​ IS62WV51216,这是一个16位宽的1MB的SRAM.

3、SDRAM

​ 与 SRAM 相比,SDRAM 集成度高、功耗低、成本低、适合做大容量存储,但是需要定时刷新来保证数据不会丢失。因此 SDRAM 适合用来做内存条,SRAM 适合做高速缓存或 MCU内部的 RAM。
​ SDRAM需要时钟线,常见的频率就是100MHz,133MHz,166Mhz,200MHz

4、DDR

​ DDR 全称是 Double Data Rate SDRAM,也就是双倍速率 SDRAM,看名字就知道 DDR 的速率(数据传输速率)比 SDRAM 高 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。

​ 正点原子的 I.MX6U-ALPHA 开发板上接了一个 256MB/512MB 的 DDR3L,16 位宽,型号为NT5CC128M16JR/MT5CC256M16EP,nanya 公司出品的,分为对应 256MB 和 512MB 容量。EMMC 核心板上用的 512MB 容量的 DDR3L,NAND 核心板上用的 256MB 容量的 DDR3L

二、DDR3时间参数

1、传输速率

​ DDR3 1600 DDR3 1866、DDR4 2400、DDR4 3200.MT/S.

2、tRCD

​ tRCD 全称是 RAS-to-CAS Delay,也就是行寻址到列寻址之间的延迟。DDR 的寻址流程是先指定 BANK 地址,然后再指定行地址,最后指定列地址确定最终要寻址的单元。BANK 地址和行地址是同时发出的,这个命令叫做“行激活”(Row Active)。行激活以后就发送列地址和具体的操作命令(读还是写),这两个是同时发出的,因此一般也用“读/写命令”表示列寻址。在行有效(行激活)到读写命令发出的这段时间间隔叫做 tRCD。

3、CL参数

当列地址发出以后就会触发数据传输,但是数据从存储单元到内存芯片 IO 接口上还需要一段时间,这段时间就是非常著名的 CL(CAS Latency),也就是列地址选通潜伏期

4、tRC

tRC 是两个 ACTIVE 命令,或者 ACTIVE 命令到 REFRESH 命令之间的周期,DDR3L 数据手册会给出这个值,比如 NT5CC256M16EP-EK 的 tRC 值为 47.91ns。

5、tRAS

​ tRAS 是 ACTIVE 命令到 PRECHARGE 命令之间的最小时间,DDR3L 的数据手册同样也会给出此参数,NT5CC256M16EP-EK 的 tRAS 值为 34ns。

三、I.MX6U MMDC控制器

1、多模支持DDR3/DDR3L LPDDR2 x16位
2、MMDC最高支持DDR3频率是400MHz,800MT/S
3、MMDC提供的DDR3连接信号。6ULL给DDR提供了专用的IO,

DDR时钟配置

DDR使用的时钟源为MMDC_CLK_ROOT=PLL2_PFD2=396MHz。在前面历程已经设置为396MHz。

CBCMR寄存器的PRE_PERIPH2_CLK_SE位来选择,也就是bit22:21,设置pre_periph2时钟源,设置为01,也就是PLL2_PFD2作为pre_periph2时钟源。

CBCDR寄存器的PERIPH2_CLK_SEL位,也就是bit26,设置为0,PLL2作为MMDC时钟源,396MHz。

CBCDR寄存器的FABRIC_MMDC_PODF位,bit5:3,设置0,也就是1分频。最终MMDC_CLK_ROOT=396MHz。

四、DDR3L初始化与测试

1、ddr_stress_tester配置文件
excel配置文件,excel配置好以后realview.inc会同步的更新。

2、.inc文件
ddr_stress_tester工具需要用到.inc文件。

3、测试
ddr_stress_tester通过USB口将.inc中的配置信息下载到开发板里面。直接进行超频测试的话测试失败。

4、做校准

Write leveling calibration
MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00000000
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00070007

Read DQS Gating calibration
MPDGCTRL0 PHY0 (0x021b083c) = 0x01380138
MPDGCTRL1 PHY0 (0x021b0840) = 0x00000000

Read calibration
MPRDDLCTL PHY0 (0x021b0848) = 0x40402E32

Write calibration
MPWRDLCTL PHY0 (0x021b0850) = 0x40403432

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值