LPDDR4芯片学习(四)——DDR Training

https://cdn.nlark.com/yuque/0/2024/jpeg/26311727/1729650936041-2e1e735c-a8c8-42c2-8cac-b8aa8f339cf0.jpeg

一、ZQ Calibration

DDR 学习时间 (Part B - 6):DRAM ZQ 校正 - 知乎 (zhihu.com)

从原理上解释什么是DDR的ZQ校准? - 知乎 (zhihu.com)

LPDDR4的训练(training)和校准(calibration)--ZQ校准(Calibration)_wonder_coole-腾讯云开发者社区

01 ZQ校准的目的

为了提高信号完整性,并增强输出信号的强度,DDR内存中引入了终端电阻和输出驱动器,而为了在温度和电压发生变化的场景下仍然能够保持信号完整性,就需要对这些终端电阻和输出驱动器进行校准;

未经校准的终端电阻会直接影响到信号质量,而调整不当的输出驱动器则会使得有效信号跃迁偏离参考电平,从而导致数据和选通信号之间出现偏差。

DDR ZQ校准-CSDN博客

【DRAM存储器二十二】DDR3介绍-主要功能之ZQ校准_ddr zq校准-CSDN博客

02 ZQ校准原理

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729563617821-238b7c28-2efd-4c0e-bbb8-13b5f813b6ef.png

03 ZQ校准时序

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729563756859-bdb544fb-9cf3-4c7b-8f43-3a064677c83c.png

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729563725264-e714a2c5-7928-48cf-8b56-db42b7b9060a.png?x-oss-process=image%2Fcrop%2Cx_0%2Cy_0%2Cw_865%2Ch_339

二、VREF Training

【DRAM存储器三十五】LPDDR4介绍--主要技术特性之VREF training,为什么要做VREF training?-CSDN博客

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729654012306-ec4a99d7-4d16-4372-82ed-fc81504b6ad3.png

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729654020822-768a770a-d724-4190-acd0-973640bb7306.png

01 VREF DQ Training

  • Vref DQ Training 在DQ Training完成

  • MR14 OP[5:0] : VREF(DQ) Setting

02 VREF CA Training

  • Vref CA Training 在Command Bus Training完成

  • MR14 OP[6] : VREF(DQ) Range

三、CA Training

LPDDR4学习笔记(八)之command bus training-CSDN博客

01 Command Bus Training

CBT: Command Bus Training

  • 在高频操作之前Training

  • 两种Training模式,由MR12 OP[7]来进行配置

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729748285514-25098d58-89e8-4153-a319-0939d724340e.png?x-oss-process=image%2Fcrop%2Cx_0%2Cy_0%2Cw_964%2Ch_339

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729748338352-de2dd4f2-5d58-420e-aa0c-96bff8aba816.png

根据时序图,在CKE拉低后必须满足tCKELCK之后,clk可以停止或者切换;在片选拉高之前新的时钟频率必须满足tCKPRECS,在此期间保持CS/CA为低,在接收到training pattern之后,即CS拉高之后,频率至少需要保持tCKPSTCS;SDRAM不会以第一个DQS的边沿对DQ[6:0]进行捕获,每个input DQS(DQS[0])需要至少提供两个连续的脉冲才会用来捕获DQ[6:0]。

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729748359595-da6c1903-af04-429d-9da3-3672b13822de.png

CA判决电压的更新需要满足tVREFca_Long,在满足一定条件下,只需要满足tVREFca_Short。在CA发送training pattern之后,需要等待tCS_VREF之后才可以设置下一次判决电压的设定。

single-rank CBT sequence:(从默认状态训练高频)

  • 设置所有channel的FSP-WR为1(MR13 OP[6]=1)

  • 发送MRW命令进入CBT(MR13 OP[0]=1)

  • 驱动CKE为低,并且将CK频率改为高频

  • 训练(CA判决电压、CS、CA)

  • 离开训练,将CK频率改回低频之后,驱动CKE为高,SDRAM会自动恢复训练前状态的寄存器值

  • 所有寄存器训练值写入

  • 通过MRW去配置FSP-OP为1,并且将CK改变到高频,即进入训练过的、高频的工作状态,在此状态可以进行一些normal操作或者进行其他频点训练。

多rank CBT sequence: (从默认状态训练高频)

  • 将所有的channel和rank写寄存器,配置MR13 OP[6]=1

  • 读MR0 OP[7],判断哪个rank是terminating的

  • 对terminating的rank发送写寄存器命令,进入CBT(MR13 OP[0]=1)

  • 将terminating的rank的CKE拉低,将CK改为高频

  • 训练(CA判决电压、CS、CA)

  • 离开训练,将CK频率改回低频之后,驱动CKE为高,terminating的rank会自动恢复训练前状态的寄存器值

  • 对non-terminating的rank发送写寄存器命令,进入CBT(MR13 OP[0]=1)但是要保持CKE为高

  • 通过MRW去配置terminating的rank FSP-OP为1,并且将CK改变到高频

  • 驱动non-terminating的rank CKE为低

  • 训练(CA判决电压、CS、CA)

  • 通过MRW去配置terminating的rank FSP-OP为0

  • 离开训练,将CK频率改回低频之后,驱动CKE为高,non-terminating的rank会自动恢复训练前状态的寄存器值

  • 所有寄存器训练值写入

  • 通过MRW去配置FSP-OP为1,并且将CK改变到高频,即进入训练过的、高频的工作状态,在此状态可以进行一些normal操作或者进行其他频点训练。

四、DQ Training

01 RD DQ Training

执行RD DQ校准的程序是:

  • 发出MRW命令以写入MR32(前八位)、MR40(后八位)和MR15(八位)

字节0的反转掩码)和MR20(字节1的8位反转掩码)。

  • 可选地,可以跳过此步骤以使用默认模式

  • MR32默认值=5Ah

  • MR40默认值=3Ch

  • MR15默认值=55h

  • MR20默认值=55h

  • 发出MPC-1[RD DQ Calibration](RD DQ校准)命令,然后立即发出CAS-2命令。

  • 每次收到MPC-1[RD DQ Calibration]命令,然后是CAS-2时

LPDDR4 SDRAM,16位数据突发将在当前设置的RL之后驱动8位

在MR32中编程,然后在所有I/O引脚上在MR40中编程8位。

  • I/O引脚的数据模式将反转,并在相应的反转中编程“1”

掩码模式寄存器位(见表140)。

  • 请注意,该模式是在DMI引脚上驱动的,但没有启用数据总线反转功能,即使

如果DRAM模式寄存器中启用了读取DBI。

  • MPC-1[RD DQ校准]命令可以在每个tCCD上无缝发出,tRTRRD

阵列读取命令和MPC-1[RD DQ校准]命令之间需要延迟

以及MPC-1[RD DQ校准]命令和阵列读取之间所需的延迟。

  • 通过CAS-2命令接收的操作数必须被驱动为LOW。

  • 在刷新期间或SREF期间,可以在任何或没有银行活动的情况下进行DQ读取培训

CKE值较高。

02 DQS-DQ Training

五、Write Training

【DRAM存储器三十八】LPDDR4/DDR4的时序训练相关内容之写方向的训练_lpddr4 vref的作用-CSDN博客

01 Write Leveling

Write Leveling的基本过程是,DDR进入Write Leveling后,用DQS的上升沿采样CLK信号的状态,然后将采样结果通过DQ pin 反馈给MC,MC根据收到的反馈结果后调整CLK-to-DQS的关系,将这个过程不断重复,直到training成功。

LPDDR4的DQ[7:0]传输DQS[0]的反馈结果,DQ[8:15]传输DQS[1]反馈结果。也就是说LPDDR4的两个channel要独立的做Write Leveling,每个channel的16比特也要分两个byte lane来做。

MC通过配置LPDDR4的模式寄存器MR2的OP[7]为1,来让LPDDR4进入write leveling模式。在该模式下,LPDDR4只允许接受DESLECT命令以及退出该模式的MRW命令。当Write Leveling操作完成后,MC使用MRW命令将MR2的OP[7]置0来使LPDDR4退出write leveling操作。

Write leveling应该在write training(DQS2DQ training)前进行

LPDDR4的Write Leveling的具体过程如下(JESD209-4B的4.31):

  1. MC设置MR2-OP[7]使LPDDR4进入Write Leveling模式

  2. 一旦进入Write leveling模式,在tWLDQSEN时间后,MC必须驱动DQS到低电平

  3. 在tWLMRD时间后提供第一个DQS信号输入。tWLMRD是和不同的MC有关。

  4. 由于第一个DQS沿不稳定,所以DRAM或许能抓到第一个DQS沿,也可能抓不到,因此MC每次必须提供两个连续的DQS脉冲。每次由DQS沿采到的时钟电平都会被overwritten掉,DRAM会在tWLO时间后异* 步的通过DQ来反馈给MC。

  5. MC参考DRAM提供的反馈结果,来增到或减小DQS_t and/or DQS_C的延时设置。

  6. 重复第4到第5步,直到合适的DQS_t/DQS_c延时建立。

  7. 通过设置MR2-OP[7]=0, 退出Write-Leveling模式

https://cdn.nlark.com/yuque/0/2024/png/26311727/1729490104898-19875fe8-9e36-439e-8158-328f99d3142f.png

LPDDR4的训练(training)和校准(calibration)--Write Leveling(写入均衡)_ddr training过程-CSDN博客

六、Read Training

【DRAM存储器三十九】LPDDR4/DDR4的时序训练相关内容之读方向的训练_ddr4 data 训练-CSDN博客

01 Read DQS gate training

https://cdn.nlark.com/yuque/0/2024/png/26311727/1730170320177-d05e47bd-e144-4a59-878b-68be58a85b2d.png

02 Read data eye training

https://cdn.nlark.com/yuque/0/2024/png/26311727/1730170278963-63677e2a-2982-429d-8ec1-1d8a0e4694ff.png

03 Read Preamble training

https://cdn.nlark.com/yuque/0/2024/png/26311727/1730170241050-d3999d29-bbb9-496b-a73f-4ac2796a2259.png

七、参考文献

DDR4 SDRAM - Initialization, Training and Calibration - systemverilog.io

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pycharm分支提交操作

一、Pycharm拉取Git远程仓库代码 1、点击VCS > Get from Version Control 2、输入git的url,选择自己的项目路径 3、点击Clone,就拉取成功了 默认签出分支为main 选择develop签出即可进行开发工作 二、创建分支(非必要可以不使用&#xf…

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述:本实战通过ArkUI框架,在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

IDEA部署AI代写插件

前言 Hello大家好,当下是AI盛行的时代,好多好多东西在AI大模型的趋势下都变得非常的简单。 比如之前想画一幅风景画得先去采风,然后写实什么的,现在你只需描述出你想要的效果AI就能够根据你的描述在几分钟之内画出一幅你想要的风景…

深入理解 Spark 中的 Shuffle

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC(精简指令集)MCU的SOC芯片,用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统? 无钥匙进入系统具有无钥匙进入并且启动的功能,英文名称是PKE&…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中,企业要想在市场中立于不败之地,关键在于拥有高素质的人才队伍。然而,传统的招聘方式往往效率低下,难以精准匹配企业需求与人才特质,这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接:https://tecdat.cn/?p38273 多模态数据在统计学中并不罕见,常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据,它利用不同的组件来对数据中的不同群体或总体进行建模。本质上,混合模型是…

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数,初始化节点对象,包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点,默认为None self.rig…

华为eNSP:MSTP

一、什么是MSTP? 1、MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,也提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。 2、MSTP可以将一个或多个VLAN映射到一个Inst…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历,分享给大家 作者是如何在没有 iOS 开发经验的情况下,借助 AI(如 Claude 3 模型)成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月,ChatGPT 诞生并迅速引发全球关注。…

C++__day1

1、思维导图 2、如果登录失败&#xff0c;提示用户登录失败信息&#xff0c;并且提示错误几次&#xff0c;且重新输入&#xff1b;如果输入错误三次&#xff0c;则退出系统 #include <iostream> using namespace std;int main() {string id , pswd;string user"admi…

MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?

文章目录 MySQL45讲 第二十讲 幻读是什么&#xff0c;幻读有什么问题&#xff1f;一、幻读的定义二、幻读带来的问题&#xff08;一&#xff09;语义问题&#xff08;二&#xff09;数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么&#xff0…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…

深入理解接口测试:实用指南与最佳实践5.0(五)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

2024游戏陪玩app源码的功能介绍/线上陪玩交友上线即可运营软件平台源码搭建流程

一个完整的陪玩交友系统从概念到实现再到维护的全过程得以清晰展现。每一步都需要团队的紧密协作与细致规划&#xff0c;以确保系统既满足用户需求&#xff0c;又具备良好的稳定性和可扩展性。 基础框架 移动端开发框架&#xff1a;如uniapp&#xff0c;它支持多平台开发&…

预测AI如何提升销售绩效管理:五大方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

修改数据库和表的字符集

1、修改数据库字符集 mysql> show CHARACTER SET; 查看所有字符集 mysql> show create database wordpress; 查看数据库wordpress当前字符集mysql> alter database wordpress character set gbk; 将数据库wordpress字符集改为gb…

DB-GPT系列(四):DB-GPT六大基础应用场景part1

一、基础问答 进入DB-GPT后&#xff0c;再在线对话默认的基础功能就是对话功能。这里我们可以和使用通义千问、文心一言等在线大模型类似的方法&#xff0c; 来和DB-GPT进行对话。 但是值得注意的是&#xff0c;DB-GPT的输出结果是在内置提示词基础之上进行的回答&#xff0c…

海量数据面试题

目录 前言 什么是海量数据 一、利用位图解决 二、利用布隆过滤器解决 三、利用哈希切割解决 前言 在大数据时代&#xff0c;海量数据处理已成为技术领域中的一项重要课题。无论是企业级应用、互联网平台&#xff0c;还是人工智能和机器学习的实现&#xff0c;都离不开对大规…

操作系统实验:在linux下用c语言模拟进程调度算法程序

文章目录 1、实验内容2、实验结果及分析3、如何在linux下编写并执行c语言程序以及实验源代码gcc -o test test.c1、实验内容 1)用C语言编程实现对N个进程采用某种进程调度算法(如动态优先权调度算法、先来先服务算法、短进程优先算法、时间片轮转调度算法)调度执行的模拟。…