Quad SPI的DLP优化原理

2024-05-04 15:36
文章标签 优化 原理 spi dlp quad

本文主要是介绍Quad SPI的DLP优化原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 前言

1.1 Quad SPI Flash

        QSPI的I/O接口如图1所示,其中:

        ① CS:片选信号,低电平有效(FLASH被选中);

        ② CK:时钟信号,由主设备产生;

        ③ SI/SO: SI,即MOSI(master out slave in);SO,即MISO(master in slave out);

        对于master(一般为芯片)来说,MOSI通常为数据发送口,MISO为数据接收口;

        对于slave(一般为flash)来说,MOSI通常为数据接收口,MISO为数据发送口。

        ④ WP:写保护接口;

图1 QSPI  I/O接口示意图

        SI/SO组成了SPI(Serial Peripheral Interface)全双工通信的基础,可同时收发。对于传统SPI来说,SI对于主设备只能是输出,用于发送数据;SO对于主设备只能接收数据,即这两个I/O口是单向的。QSPI将这两个I/O口作为普通I/O口来使用,即数据可以双向传输,同时将WP和RESET口也用作数据传输的I/O口,组成了DQ0~DQ3双向四通道,数据传输速度直接起飞。

1.2 数据有效窗口(Data Valid Window)

1.2.1 传统DDR频率较低情形

        如图2所示,DDR Quad在时钟的上升沿和下降沿读取数据。

图2 传统低频DDR时序示意图

        其中:

        ① tv: clock-to-data-out time,表示从时钟上升沿或下降沿开始,到数据变得有效的这一过程所经历的时间;

        ② tHo: hold time,表示在一次时钟变化沿后,数据保持有效的时间;

        ③ Pck:clock period,时钟周期,对于DDR来说,显然是以半周期进行数据采样的;

        ④ tDV: 数据有效窗口的最小值(the minimum data valid window);

        当DDR的频率较低时,若tv小于Pck,且tv和tho的值不变时,则由tdv = Pck/ 2- tv + tho可知,DDR的时钟(CK)频率越高,Pck越小,tv就越小。所以,DDR的CK频率存在上限(66 MHz),举例来说:

• Pck = 15 ns (66 MHz)
• tv [max] = 6.5 ns
• tho [min] = 1.5 ns
• tdv = Pck / 2 - tv + tho: 15 ns / 2 - 6.5 ns + 1.5 ns = 2.5 ns

1.2.2 高频率下数据有效窗口

        当DDR的频率较高时,tv和tho正相关,这就使得数据有效窗口与tv和下一个时钟沿的到来时间强相关;才外,由于CK很高,这使得tv会很接近Pck,甚至会超过Pck,从而需要新的方法来确定数据有效窗口(如图3所示),并在窗口中找到合适的数据采样点(DLP正致力于此,by using the DLP feature an optimal strobe point can be found within the data window)。

 图3 高频DDR时序示意图

2 DLP原理

2.1 DLP的作用及基本原理

        如前文所述,SPI接口已经从单向单比特SDR I/O接口发展到SDR/DDR双向四比特Qaud接口,单向变双向,单车道变四车道, I/O效率显著提升。

        随之而来的问题是,由于Quad SPI Flash 66MB /s (SDR@133 MHz)和80MB /s (DDR@80 MHz)的高时钟速率,使用tv(max)作为数据窗口内的数据采样点(strobe point)的传统方法不再奏效;DLP(data learn pattern)则闪亮登场,用于优化QSPI的数据读取性能。

        DLP在每个数据信号上提供一个已知的数据序列(通常表现为在指定位置放置指定DLP数据,以用于主控制器的训练),使得主控制器(主设备)可以确定收数时最佳捕获数据时序。简单来说,可以理解为DLP是对读数据操作进行了标定,或者说时监督式的训练,从而帮助主控制器确定合适的数据读取时序。

        总的来说,在数据读取过程中,主设备会使用DLP进行过采样,从而确定最佳的数据捕获点;此外,DLP会对读操作进行校准,对由于工艺、电压、温度等因素带来的误差进行补偿,使得DDR频率轻松上80MBps不是梦。

2.2 主设备抓取数据策略(Host Capture Strategy)

        总的来说,主机控制器会将DLP的输入数据作为测试序列(即DLP数据已知),进而根据读该数据序列时系统的反馈确定tv和tDV,而一旦DLP找到合适的数据有效窗口,读数据的时间余量最大的那个采样点会被选为最优采样点(Once the data eye has been identified during the DLP portion of the read sequence, the controller selects the optimal data-capture point to maximize the timingmargin for the read data)。 

图4 Host Capture Strategy DDR

        通常可以用过采样的方法,建立多个贯穿数据有效窗口 (data-valid window)的数据捕获点(data-capture points),以作为样本。如图4所示,单个DQ由五个样本通道组成,每个通道之间由固定的采样延迟。这五个通道延迟的采样点(A到E)可以用延迟锁定环路( delay-locked loop,DLL)或过采样时钟(oversampling clock)生成,过采样时钟又使用内部可用的更高频率时钟生成。当DLP输出时,主控制器对目标DQ进行采样。

        其中,B/C/D三个通道都成功地抓取了DLP输入数据,且通道C的余量最大,因此被选为最佳训练参数。

3 结论

        随着嵌入式应用程序性能要求的不断提高,传统的SPl接口和协议已无法满足读取速度进一步提高的需求。DLP方法的出现,使得基于Quad SPI的Flash可以实现更高的数据速率。这一增强型的解决方案,在合理的成本控制前提下,极大程度地提高了数据读取速率,同时最大限度地减少了引脚数、PCB复杂性、封装尺寸和成本,极大地改善了系统设计和性能。

这篇关于Quad SPI的DLP优化原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959532

相关文章

Java线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS