NXP(I.MX6uLL)DDR3实验——DDR3重要时间参数、时钟配置与原理图简析

目录

  • DDR3 内存时间参数
    • 传输速率
    • tRCD 参数
    • CL 参数
    • AL 参数
    • tRC 参数
    • tRAS 参数
  • I.MX6U MMDC内存控制器简介
    • MMDC内存控制器简介
    • MMDC内存控制器信号引脚
    • MMDC内存控制器时钟源
  • ALPHA开发板核心板DDR3L原理图

DDR3 内存时间参数

大家在购买DDR3 内存的时候通常会重点观察几个常用的时间参数:

传输速率

比如1066MT/S、1600MT/S、1866MT/S 等,这个是首要考虑的,因为这个决定了DDR3 内存的最高传输速率。

tRCD 参数

tRCD 全称是RAS-to-CAS Delay,也就是行寻址到列寻址之间的延迟。DDR 的寻址流程是先指定BANK 地址,然后再指定行地址,最后指定列地址确定最终要寻址的单元。BANK 地址和行地址是同时发出的,这个命令叫做“行激活”(Row Active)。行激活以后就发送列地址和具体的操作命令(读还是写),这两个是同时发出的,因此一般也用“读/写命令”表示列寻址。在行有效(行激活)到读写命令发出的这段时间间隔叫做tRCD,如图23.2.1 所示:
在这里插入图片描述
一般DDR3 数据手册中都会给出tRCD 的时间值,比如正点原子所使用的
NT5CC256M16EP-EK 这个DDR3,tRCD 参数如图23.2.2 所示:
在这里插入图片描述
从图23.2.2 可以看出,tRCD 为13.91ns,这个我们在初始化DDR3 的时候需要配置。有时候大家也会看到“13-13-13”之类的参数,这个是用来描述CL-tRCD-TRP 的,如图23.2.3 所示:
在这里插入图片描述
从图23.2.3 可以看出,NT5CC256M16ER-EK 这个DDR3 的CL-TRCD-TRP 时间参数为“13-13-13”。因此tRCD=13,这里的13 不是ns 数,而是CLK 时间数,表示13 个CLK 周期。

CL 参数

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

在这里插入图片描述
CL 参数一般在DDR3 的数据手册中可以找到,比如NT5CC256M16EP-EK 的CL 值就是13个时钟周期,一般tRCD 和CL 大小一样。

AL 参数

在DDR 的发展中,提出了一个前置CAS 的概念,目的是为了解决DDR 中的指令冲突,它允许CAS 信号紧随着RAS 发送,相当于将DDR 中的CAS 前置了。但是读/写操作并没有因此提前,依旧要保证足够的延迟/潜伏期,为此引入了AL(Additive Latency),单位也是时钟周期数。AL+CL 组成了RL(Read Latency),从DDR2 开始还引入了写潜伏期WL(Write Latency),WL 表示写命令发出以后到第一笔数据写入的潜伏期。引入AL 以后的读时序如图23.2.5 所示:
在这里插入图片描述
图32.2.5 就是镁光DDR3L 的读时序图,我们依次来看一下图中这四部分都是什么内容:
①、tRCD,前面已经说过了。
②、AL。
③、CL。
④、RL 为读潜伏期,RL=AL+CL。

tRC 参数

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

tRAS 参数

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

I.MX6U MMDC内存控制器简介

MMDC内存控制器简介

学过STM32 的同学应该记得,STM32 的FMC 或FSMC 外设用于连接SRAM 或SDRAM,对于I.MX6U 来说也有DDR 内存控制器,否则的话它怎么连接DDR 呢?MMDC 就是I.MX6U的内存控制器,MMDC 是一个多模的DDR 控制器,可以连接16 位宽的DDR3/DDR3L、16 位宽的LPDDR2,MMDC 是一个可配置、高性能的DDR 控制器。

MMDC 外设包含一个内核(MMDC_CORE)和PHY(MMDC_PHY),内核和PHY 的功能如下:

  • MMDC 内核:内核负责通过AXI 接口与系统进行通信、DDR 命令生成、DDR 命令优化、读/写数据路径。

  • MMDC PHY:PHY 负责时序调整和校准,使用特殊的校准机制以保障数据能够在400MHz被准确捕获。

MMDC 的主要特性如下:

  • ①、支持DDR3/DDR3Lx16、支持LPDDR2x16,不支持LPDDR1MDDR 和DDR2。
  • ②、支持单片256Mbit~8Gbit 容量的DDR,列地址范围:8-12 位,行地址范围11-16bit。2个片选信号。
  • ③、对于DDR3,最大支持8bit 的突发访问。
  • ④、对于LPDDR2 最大支持4bit 的突发访问。
  • ⑤、MMDC 最大频率为400MHz,因此对应的数据速率为800MT/S。
  • ⑥、支持各种校准程序,可以自动或手动运行。支持ZQ 校准外部DDR 设备,ZQ 校准DDR I/O 引脚、校准DDR 驱动能力。

MMDC内存控制器信号引脚

我们在使用STM32 的时候FMC/FSMC 的IO 引脚是带有复用功能的,如果不接SRAM 或SDRAM 的话FMC/FSMC 是可以用作其他外设IO 的。但是,对于DDR 接口就不一样了,因为DDR 对于硬件要求非常严格,因此DDR 的引脚都是独立的,一般引脚不能复用,只做为DDR引脚使用。I.MX6U 也有专用的DDR 引脚,如图23.3.2.1 所示:
在这里插入图片描述
由于图23.3.2.1 中的引脚是DDR 专属的,因此就不存在所谓的DDR 引脚复用配置,只需要设置DDR 引脚的电气属性即可,注意,DDR 引脚的电气属性寄存器和普通的外设引脚电气属性寄存器不同!

MMDC内存控制器时钟源

前面说了很多次,I.MX6U 的DDR 或者MDDC 的时钟频率为400MHz,那么这400MHz 时钟源怎么来的呢?这个就要查阅I.MX6ULL 参考手册的《Chapter 18 Clock Controller Module(CCM)》章节。MMDC 时钟源如图23.3.3.1 所示:
在这里插入图片描述
图23.3.3.1 就是MMDC 的时钟源路径图,主要分为4 部分,我们依次来看一下每部分所组的工作:

①、pre_periph2 时钟源选择器,也就是periph2_clkd 的前级选择器,由CBCMR 寄存器的PRE_PERIPH2_CLK_SEL 位(bit22:21)来控制,一共有四种可选方案,如表23.3.3.1 所示:
在这里插入图片描述
从表23.3.3.1 可以看出,当PRE_PERIPH2_CLK_SEL 为0x1 的时候选中PLL2_PFD2 为pre_periph2 时钟源。在前面的《第十六章主频和时钟配置》中我们已经将PLL2_PFD2 设置为396MHz(约等于400MHz),I.MX6U 内部boot rom 就是设置PLL2_PFD2 作为MMDC 的最终时钟源,这就是I.MX6U 的DDR 频率为400MHz 的原因。

②、periph2_clk 时钟源选择器,由CBCDR 寄存器的PERIPH2_CLK_SEL 位(bit26)来控制,当为0 的时候选择pll2_main_clk 作为periph2_clk 的时钟源,当为1 的时候选择periph2_clk2_clk作为periph2_clk 的时钟源。这里肯定要将PERIPH2_CLK_SEL 设置为0,也就是选择pll2_main_clk 作为periph2_clk 的时钟源,因此periph2_clk=PLL2_PFD0=396MHz

③、最后就是分频器,由CBCDR 寄存器的FABRIC_MMDC_PODF 位(bit5:3)设置分频值,可设置0~ 7,分别对应1~8 分频,要配置MMDC 的时钟源为396MHz,那么此处就要设置为1分频,因此FABRIC_MMDC_PODF=0。

以上就是MMDC 的时钟源设置,I.MX6U 参考手册一直说DDR 的频率为400MHz,但是实际只有396MHz,就和NXP 宣传自己的I.MX6ULL 有800MHz 一样,实际只有792MHz。

ALPHA开发板核心板DDR3L原理图

ALPHA 开发板有EMMC 和NAND 两种核心板,EMMC 核心板使用的DDR3L 的型号为NT5CC256M16EP-EK,容量为512MB。NAND 核心板使用的DDR3L 型号为NT5CC128M16JR-EK,容量为256MB,这两种型号的DDR3L 封装一摸一样,有人可能就有疑问了,容量不同的话地址线是不同的,比如行地址和列地址线数就不同,没错!但是DDR3L 厂商为了方便选择
将不同容量的DDR3 封装做成一样,没有用到的地址线DDR3L 芯片会屏蔽掉。

而且,根据规定,所有厂商的DDR 芯片IO 一摸一样,不管是引脚定义还是引脚间距,但是芯片外形大小可能不同。因此只要做好硬件,可以在不需要修改硬件PCB 的前提下,随意的更换不同容量、不同品牌的DDR3L 芯片,极大的方便了我们的芯片选型。

正点原子ALPHA 开发板EMMC 和NAND 核心板的DDR3L 原理图一样,如图23.4.1 所示:

在这里插入图片描述
图23.4.1 中左侧是DDR3L 原理图,可以看出图中DDR3L 的型号为MT41K256M16TW,这个是镁光的512MB DDR3L。但是我们实际使用的512MB DDR3L 型号为NT5CC256M16EP-EK,不排除以后可能会更换DDR3L 型号,更换DDR3L 芯片是不需要修改PCB。图23.4.1 中右边的是I.MX6U 的MMDC 控制器IO。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[elk]elasticsearch dsl语句

例子1 统计1,有唱歌兴趣的 2,按年龄分组 3,求每组平均年龄 4,按平均年龄降序排序 sql转为dsl例子 # 每种型号车的颜色数 > 1的 SELECT model,COUNT(DISTINCT color) color_count FROM cars GROUP BY model HAVING color_count > 1 ORDE…

NXP(I.MX6uLL)DDR3实验——DDR3初始化、校准、超频测试

DDR3L 初始化与测试ddr_stress_tester简介(DDR压力测试工具)DDR3L驱动配置DDR3L校准DDR3L超频测试DDR3L驱动总结ddr_stress_tester简介(DDR压力测试工具) NXP 提供了一个非常好用的DDR 初始化工具,叫做ddr_stress_tester。此工具已经放到了开发板光盘中&#xff0c…

RGBLCD显示实验————复习到这

目录LCD 和eLCDIF 简介LCD 简介eLCDIF 接口硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载LCD 液晶屏是常用到的外设,通过LCD 可以显示绚丽的图形、界面等,提高人机交互的效率。I.MX6U 提供了一个eLCDIF 接口用于连接RGB 接口的液…

unity 里调试native code

因项目需要,需要调试dll工程代码。 把生成的debug dll和pdb拷贝进unity的plugins工程,遇到 断点无法进入,修改下调试信息格式,OK。 转载于:https://www.cnblogs.com/marcher/p/10191521.html

将自己写的windows服务加入到windows集群中

最近发现windows集群能进行很多自定义,比如在集群中加入自己编写的服务。 能自定义的可不少,截个图: 本次演示中,只想用“通用服务”这个类型。 先列下步骤编写一个记录时间的Windows服务,这个服务会每隔1秒钟写入本地…

RTC实时时钟实验(低功耗、纽扣电池供电)

目录I.MX6U RTC 简介硬件原理分析实验程序编写修改文件MCIMX6Y2.h编写实验程序编译下载验证编写Makefile 和链接脚本编译下载实时时钟是很常用的一个外设,通过实时时钟我们就可以知道年、月、日和时间等信息。因此在需要记录时间的场合就需要实时时钟,可…

Python(21)_input用户交互

name input("请输入你的名字:") age input("请输入你的年龄:") print("我的名字是:"name" 年龄是:"age) #print(name) #print(age) 这是在本地调试的结果。因为程序是在远程服务器上执…

多点电容触摸屏实验

目录多点电容触摸简介硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载随着智能手机的发展,电容触摸屏也得到了飞速的发展。相比电阻触摸屏,电容触摸屏有很多的优势,比如支持多点触控、不需要按压,只需要轻轻…

博客园自动添加版权说明,自动添加文章链接

功能&#xff1a; 1.给每一篇文章开头加上版权说明&#xff1b; 2.自动获取当前文章地址&#xff1b; 3.做了装饰。 将以下代码放在页首Html代码内即可&#xff1a; <script type"text/javascript"> var setMyBlog {setCopyright: function() {//设置版权信息…

如何添加地图控件到Windows Phone 8的页面中

原文 如何添加地图控件到Windows Phone 8的页面中 本主题介绍了各种方法来添加一个地图控件到Windows Phone 8的项目。该地图控件在Windows Phone的SDK 8.0的库的一部分。因为地图的控制是不是在内存中的核心控制&#xff0c;它必须被正确引用&#xff0c;然后才能使用它。您还…

LCD背光调节实验

目录LCD 背光调节简介硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载不管是使用显示器还是手机&#xff0c;其屏幕背光都是可以调节的&#xff0c;通过调节背光就可以控制屏幕的亮度。在户外阳光强烈的时候可以通过调高背光来看清屏幕&#xff0c;在光线…

Mercurial(Hg)基本操作

Mercurial(Hg)基本操作 来源 https://www.cnblogs.com/gb2013/archive/2012/05/18/Mercurial_Basic.html Mercurial简介 Mercurial是一款非常优秀的分布式版本控制系统(DCVS)&#xff0c;具有高效率、跨平台、可扩展、使用简便且开源等优点&#xff0c;是目前最为流行的版本控制…

SPI实验

目录SPI & ICM-20608 简介SPI 简介SPI四线SPI四种工作模式SPI时序图I.MX6U ECSPI 简介ICM-20608 简介硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载同I2C 一样&#xff0c;SPI 是很常用的通信接口&#xff0c;也可以通过SPI 来连接众多的传感器。相…

ADC实验(读取引脚电压值)

目录ADC 简介什么是ADCI.MX6ULL ADC 简介ADC寄存器介绍配置步骤硬件原理分析实验程序编写编译下载验证编写Makefile 和链接脚本编译下载ADC 是一种常见的外设&#xff0c;你可以在STM32 上见到它&#xff0c;在I.MX 6ULL 上依然能看到它的存在。通过读取GPIO 引脚的高低电平我们…

Linux CAN 驱动实验

目录CAN 协议简析何为CANCAN 电气属性显隐性电平接线端接电阻速度距离CAN 协议1、数据帧2、遥控帧3、错误帧4、过载帧5、帧间隔CAN 速率I.MX6ULL FlexCAN 简介硬件原理图分析实验程序编写修改设备树使能Linux 内核自带的FlexCAN 驱动FlexCAN 测试检查CAN 网卡设备是否存在移植i…

MySQL存储引擎MyISAM和 InnoDB

2019独角兽企业重金招聘Python工程师标准>>> 区别 事务处理MyISAM强调性能,但是不提供事务支持InnoDB提供事务支持,外部键等CURD操作如果执行大量SELECT,MyISAM更合适(读)如果执行大量INSERT/UPDATE,InnoDB更合适(写)DELETE FROM table时&#xff0c;InnoDB不会重新…

Luogu 4721 【模板】分治 FFT

还不会这题的多项式求逆的算法。 发现每一项都是一个卷积的形式&#xff0c;那么我们可以使用$NTT$来加速&#xff0c;直接做是$O(n^2logn)$的&#xff0c;我们考虑如何加速转移。 可以采用$cdq$分治的思想&#xff0c;对于区间$[l, r]$中的数&#xff0c;先计算出$[l, mid]$中…

根文件系统构建(Buildroot 方式)

目录何为buildroot&#xff1f;buildroot 简介buildroot 下载buildroot 构建根文件系统配置buildroot编译buildrootbuildroot 根文件系统测试buildroot 第三方软件和库的配置buildroot 下的busybox 配置busybox 配置busybox 中文字符的支持编译busybox根文件系统测试前面我们学…

Jquery weui picker 支持label和value

万年没更新了. 最近用jquery weui. 在使用picker时需要一些问题. 就是让picker 显示label, 但是取值的时候取value用于存储. 官网例子如下 Jquery-weui 官网 : 点这里 写这篇文章时&#xff0c;用的版本是1.2.1版本 $("#picker-name").picker({title: "请选择您…

Linux—任务计划

1、周期性任务计划&#xff1a;管理系统的过程中&#xff0c;我们并不是每次都直接执行脚本或者命令&#xff0c;有时候需要让脚本、命令以及系统等在指定的时间按照我们的意愿执行我们设定好的脚本或者命令&#xff0c;这时候就需要使用到Linux任务计划的功能了&#xff0c;但…