LPDDR4基本知识
- 释义
LPDDR4, Low Power Double-Data-Rate 4th Generation Synchronous Dynamic Random Access Memory。
属于SDRAM(结构是1个transistor+1个capacitor)。
这里有一些DDR的基本知识说明
- DDR中的一些知识点说明
- DDR4设计概述以及分析仿真案例
- DDR4 SDRAM - Initialization, Training and Calibration
- LPDDR4x 的 学习总结(6) - initialization & training
- [JESD209-4C_WG, 3.3 Power-up, Initialization and Power-off Procedure]
最初是为移动装置设计的,后来推出了满足汽车温度等级的LPDDR4 SDRAM。
将来的后续发展是LPDDR4X,LPDDR5.
从CPU到DRAM颗粒之间依次按层级由大到小分为channel > DIMM > rank > chip > bank > row/column。
- 特点
天然2通道,有2套命令地址(CA)输入和2套数据总线(DQ)。
功耗比DDR2/DDR3/DDR4更低,如引入DBI(Data Bus Inversion)特性。
为使功耗降低,LPDDR4将Data IO从
SSTL(终端电压是VDD/2)
->
POD(Pseudo Open Drain,(终端电压是VDD))
意味着,当总线上是高电平时,无电流流动。
这也是DBI(Data Bus Inversion)实现的基础。
DBI - 让高电平尽可能的多(无电流流动,功耗就低了),至少5bit低电平时,对所有的信号进行反转,同时,DBI=’0’(低电平)。
由于结构(1个transistor+1个capacitor)原因,会有泄漏电荷,所以需要定期刷新(refresh)来避免数据的丢失。而且,温度越高,要求刷新频率越频繁。
- 车用LPDDR4
需要具有更高温度抗性的位单元。
引入纠错机制(注:是内联ECC,不是ECC),将(64data+8Hamming ECC)同时存放在同一memory内,所以在传输时,相比与ECC,带宽利用率较低。
与SOC互联时,要求SOC满足特定的汽车可靠性标准。
- AE-Q100,专注于可靠性和温度方面。
- ISO26262,专注于设计流程,设计和认证。
目前主要生产厂家:Micron, Hynix, Samsung。
R-Car的LPDDR4控制器
R-Car系列支持的LPDDR4通道数量不同(32bits/通道)。
H3 | M3 | M3N |
---|---|---|
4 | 2 | 1 |
最大连接8GBytes。
R-Car与LPDDR4互联
- 连接
LPDDR4的双通道连接方式有以下四种。
在R-Car开发板中采用的连接是“共享CA”方式。
code修改(DDR for Yocto v3.15)
- 为什么要修改
实际应用中,用户根据需要选择适合自己的LPDDR4(厂家,容量,速率,等等),并搭建自己的连接,如果与Renesas官方学习板不同,就需要对代码进行修改,并且更改后要进行足够的评估。
- 代码结构
以下是Yocto v3.15 DDR部分的目录结构和DDR的初始化流程(包括四部分内容:PHY、DRAM、Training、DBSC),供参考。
- 修改点(总)
用户只需关心修改文件“boot_init_dram_config.c”以适应实际的硬件连接。
- boardcnf_get_brd_type()——board type and Configuration of LPDDR4
- boardcnf_get_brd_clk()——frequency of the source clock(EXTAL)
- boardcnf_get_ddr_mbps()——access rate of LPDDR4
如果用到DRAM backup(fastboot中会用到),还需关心修改文件“dram_sub_func.c/.h”,有几个选项需要修改。
详细情况,请参考文档“引用7”。
- 修改(定制)点(详细)
索引 | 更改点 | 文件 | 说明 |
---|---|---|---|
1 | 宏 DBSC_REFINTS | boot_init_dram_regdef.h 或 build option(RCAR_REF_INT) | DBRFCNF1/2 register相关。refresh模式,会影响到QoS |
2 | 宏 BOARDNUM | boot_init_dram_config.c | Renesas评估板编号0~21 |
3 | 宏 BOARD_JUDGE_AUTO | boot_init_dram_config.c | 自动识别board |
4 | boardcnf.phyvalid | boot_init_dram_config.c | PHY通道是否valid |
5 | boardcnf.dbi_en | boot_init_dram_config.c | DBI模式 |
6 | boardcnf.cacs_dly/_adj | boot_init_dram_config.c | CA/CS delay及调整 |
7 | boardcnf.dqdm_dly_w/r | boot_init_dram_config.c | DQ W/R delay |
8 | boardcnf.channel.ddr_density | boot_init_dram_config.c | density of every channel(每个通道有2个CS端)。例:LPDDR4 DRAM内部有2 dies, 每个die容量8Gbit,2ranks, 总容量就是16Gbits. 设置为{0x02, 0x02}. First field: rank-1 (CS0) DRAM容量 die Second field: rank-2 (CS1) DRAM容量 |
9 | boardcnf.channel.ca/dqs/dq/dm_swap | boot_init_dram_config.c | swap(CA,DQS,DQ,DM),和实际物理连接顺序有关 |
10 | 宏 WDQLVL_PAT | boot_init_dram_config.c | data patterns for DQ/DM |
11 | boardcnf.channel.cacs_adj | boot_init_dram_config.c | 可以通过Eye Opening Tool查看调整后效果 |
12 | boardcnf.channel.dm_adj\w/r | boot_init_dram_config.c | DM调整。可以通过Eye Opening Tool查看调整后效果 |
13 | boardcnf.channel.dqdm_adj\w/r | boot_init_dram_config.c | DQ调整。可以通过Eye Opening Tool查看调整后效果 |
14 | 宏 _def_LPDDR4_ODT | boot_init_dram_config.c | MR11 register相关 |
15 | 宏 _def_LPDDR4_VREFCAT | boot_init_dram_config.c | MR12 register相关 |
16 | 宏 JS2_DERATE | boot_init_dram_config.c | 在温度区间[85~105 摄氏度]添加额外的timing margin |
17 | 宏 DDR_FAST_INIT | boot_init_dram_config.c | 初始化时间会快一点 |
18 | CLK & DIV | boot_init_dram_config.c | Extal时钟相关。MD14/MD13引脚相关 |
19 | 宏 DDR_FAST_INIT | boot_init_dram_config.c | MD17/MD19引脚相关,调整DDR速率 |
引用:
- Memory中的Channel/Rank/Bank解析
- DDR4 SDRAM wiki
- 理解汽车DDR DRAM
- 使用多通道体系结构优化LPDDR4的性能和功耗
- Architectural Options for LPDDR4 Implementation in your next chip design
- R-Car Hardware Manual, Rev.2.00
- AISM-AB-18-0036_R-CarGen3 How to modify LPDDR4 SDRAM initialize code rev0p29.pdf
- r01an4237ej0200-rcg3-initialization-sequence-lpddr4-if.pdf