CN117407335A - Qspi控制器、芯片及数据读取方法 - Google Patents
Qspi控制器、芯片及数据读取方法 Download PDFInfo
- Publication number
- CN117407335A CN117407335A CN202311402500.3A CN202311402500A CN117407335A CN 117407335 A CN117407335 A CN 117407335A CN 202311402500 A CN202311402500 A CN 202311402500A CN 117407335 A CN117407335 A CN 117407335A
- Authority
- CN
- China
- Prior art keywords
- delay
- value
- delay value
- circuit
- clock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44573—Execute-in-place [XIP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Pulse Circuits (AREA)
Abstract
本发明公开了一种QSPI控制器、芯片及数据读取方法,延迟测量电路在指令发送阶段,测量芯片管脚处理电路的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路。延迟补偿电路在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,该时钟延迟值是基于QSPI控制器当前的PVT条件所确定。由此可以根据测量的延迟值对闪存中的数据延迟采样,从而自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
Description
技术领域
本申请涉及计算机领域,具体涉及一种QSPI控制器、芯片及数据读取方法。
背景技术
在高速芯片内执行(execute in place,XIP)模式下,处理器可以通过QSPI(QuadSPI)控制器直接从闪存中读取数据并运行。其中,QSPI是四线串行外设接口(serialperipheral interface,SPI)接口的扩展。
但是,在不同的工艺电压温度(process voltage temperature,PVT)条件下,QSPI控制器读延迟的变化也很大,导致在高速XIP模式下读数据的可靠性较低。
发明内容
本发明实施例提供了一种QSPI控制器、芯片及数据读取方法,该方法可以解决在不同的PVT条件下,QSPI控制器读延迟的变化很大,在高速XIP模式下读数据的可靠性较低的技术问题,所述技术方案包括:
一方面,提供了一种QSPI控制器,QSPI控制器包括:延迟测量电路、芯片管脚处理电路、延迟补偿电路、收发控制电路、数据采集电路和时钟发生器;
延迟测量电路,用于在指令发送阶段,测量芯片管脚处理电路的输入输出IO延迟值,基于IO延迟值确定目标延迟值,并向延迟补偿电路传输目标延迟值;
收发控制电路,用于在数据读取阶段,向延迟补偿电路传输读使能信号;
延迟补偿电路,用于在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号;其中,时钟延迟值是基于QSPI控制器当前的PVT条件所确定;
数据采集电路,还用于通过芯片管脚处理电路从闪存中读取数据。
可选的,延迟补偿电路包括:第一延迟补偿电路和第二延迟补偿电路;
收发控制电路,用于在数据读取阶段,向第一延迟补偿电路的输入端传输读使能信号;
延迟测量电路若确定目标延迟值为时钟信号的时钟周期的整数倍,则向第一延迟补偿电路发送目标延迟值;
第一延迟补偿电路,用于接收时钟发生器提供的时钟信号,将读使能信号延迟目标延迟值,并向数据采集电路的输入端传输延迟后的读使能信号;
第二延迟补偿电路,用于将时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号。
可选的,延迟补偿电路还包括:第三延迟补偿电路和第一反相器;
延迟测量电路,用于若确定目标延迟值为时钟周期的小数倍,则向第一延迟补偿电路发送第一目标延迟值,并向第三延迟补偿电路发送第二目标延迟值;其中,第一目标延迟值和第二目标延迟值之和等于目标延迟值,且第一目标延迟值为时钟周期的整数倍,第二目标延迟值为时钟周期的小数倍;
第一延迟补偿电路,用于将读使能信号延迟第一目标延迟值,并向第三延迟补偿电路的输入端传输延迟后的读使能信号;
第一反相器,用于将时钟发生器提供的时钟信号反相后传输至第三延迟补偿电路的时钟端;
第三延迟补偿电路,用于将第一延迟补偿电路传输的读使能信号延迟第二目标延迟值,并向数据采集电路的输入端传输延迟后的读使能信号。
可选的,数据采集电路包括:第二反相器、第一数据采集器、第二数据采集器和数据缓存器;
第二反相器,用于将第二延迟补偿电路传输的延迟后的时钟信号反相后传输至第一数据采集器的时钟端;
延迟测量电路,还用于若目标延迟值为时钟周期的整数倍,则通过第一延迟补偿电路仅向第一数据采集器的输入端传输延迟后的读使能信号;
第一数据采集器,用于通过芯片管脚处理电路从闪存中读取数据,并将读取的数据通过第二数据采集器同步至数据缓存器。
可选的,延迟测量电路,还用于若目标延迟值为时钟周期的小数倍,则通过第一延迟补偿电路仅向第三延迟补偿电路传输延迟后的读使能信号;
第二数据采集器,用于接收第二延迟补偿电路传输的延迟后的时钟信号,通过芯片管脚处理电路从闪存中读取数据,并将读取的数据同步至数据缓存器。
可选的,延迟测量电路,用于:
获取片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于IO延迟值和片外延迟值之和确定目标延迟值。
可选的,延迟测量电路,用于:
获取预设延迟值和片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于预设延迟值、IO延迟值和片外延迟值之和确定目标延迟值。
可选的,延迟测量电路,用于:
从多个初始延迟值中选择多个目标初始延迟值,并从多个目标初始延迟值中确定中间值;
获取芯片管脚处理电路的多个IO测量延迟值;
确定多个IO测量延迟值的均值,并基于中间值与均值的第一差值确定预设延迟值;
其中,在将读使能信号延迟目标初始延迟值的情况下,QSPI控制器能够读取到闪存中的测试数据。
可选的,延迟测量电路,用于:
若第一差值为时钟信号的时钟周期的整数倍,则基于第一差值确定预设延迟值;
若第一差值不为时钟周期的整数倍,则确定第一差值与第一预设值的乘积,并基于乘积取整后的数值与第二预设值的商确定预设延迟值。
可选的,QSPI控制器,用于:
重复执行测试数据的读取流程,直至满足终止条件,得到多个初始延迟值和多个IO测量延迟值;其中,测试数据的读取流程包括:
在指令发送阶段,获取芯片管脚处理电路的IO测量延迟值;
在数据读取阶段,在将读使能信号延迟初始延迟值后,向数据采集电路的输入端输出延迟后的读使能信号,在将时钟信号延迟初始时钟延迟值后,向数据采集电路的时钟端输出延迟后的时钟信号;
通过芯片管脚处理电路从闪存中读取测试数据;
更新初始延迟值,其中,更新后的初始延迟值与更新前的初始延迟值的第二差值为时钟周期的倍数。
可选的,收发控制电路,还用于在指令发送阶段,向芯片管脚处理电路和延迟测量电路传输控制信号;
芯片管脚处理电路,用于向延迟测量电路传输接收到的控制信号;
延迟测量电路,用于基于收发控制电路传输的第一控制信号,以及芯片管脚处理电路传输的第二控制信号,确定芯片管脚处理电路的IO延迟值。
可选的,延迟测量电路,用于:
在时钟信号的边沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期;
采用第一计数器对第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对第二控制信号中前预设个数个周期进行计数,得到第二计数值;
在采用第一计数器和第二计数器计数的过程中,每隔时钟周期,将第一计数值的第一比特位,以及第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则增加第三计数器的计数值;
基于第三计数器的计数值的第二比特位确定IO延迟值。
可选的,边沿包括上升沿和下降沿;第三计数器包括与上升沿对应的第一参考计数器,以及与下降沿对应的第二参考计数器;延迟测量电路,用于:
若第一参考计数器的第一参考计数值等于第二参考计数器的第二参考计数值,则基于第一参考计数值的第二比特位确定IO延迟值;
若第一参考计数值不等于第二参考计数值,则基于第一参考计数值的第二比特位和第二个数个时钟周期确定IO延迟值。
可选的,控制信号包括:对时钟信号分频得到的分频时钟信号,以及片选信号;延迟测量电路,用于:
基于收发控制电路传输的第一分频时钟信号,以及芯片管脚处理电路传输的第二分频时钟信号,确定第一延迟值;
基于收发控制电路传输的第一片选信号,以及芯片管脚处理电路传输的第二片选信号,确定第二延迟值;
对第一延迟值和第二延迟值加权求和,得到IO延迟值。
另一方面,提供了一种芯片,包括上述QSPI控制器。
又一方面,提供了一种数据读取系统,处理器、闪存,以及上述QSPI控制器。
再一方面,提供了一种数据读取方法,应用于QSPI控制器中的延迟测量电路,QSPI控制器还包括:芯片管脚处理电路、延迟补偿电路、收发控制电路、数据采集电路和时钟发生器;方法包括:
在指令发送阶段,测量芯片管脚处理电路的IO延迟值;
基于IO延迟值确定目标延迟值,并向延迟补偿电路传输目标延迟值;
其中,目标延迟值用于供延迟补偿电路在将收发控制电路传输的读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,以使数据采集电路通过芯片管脚处理电路从闪存中读取数据;其中,时钟延迟值是基于QSPI控制器当前的工艺电压温度PVT条件所确定。
可选的,延迟补偿电路包括:第一延迟补偿电路和第三延迟补偿电路;向延迟补偿电路传输目标延迟值,包括:
若确定目标延迟值为时钟信号的时钟周期的整数倍,则向第一延迟补偿电路发送目标延迟值,以使第一延迟电路将读使能信号延迟目标延迟值;
若确定目标延迟值为时钟周期的小数倍,则向第一延迟补偿电路发送第一目标延迟值,并向第三延迟补偿电路发送第二目标延迟值,以使第一延迟补偿电路将读使能信号延迟第一目标延迟值,第三延迟补偿电路将第一延迟补偿电路传输的读使能信号延迟第二目标延迟值;
其中,第一目标延迟值和第二目标延迟值之和等于目标延迟值,且第一目标延迟值为时钟周期的整数倍,第二目标延迟值为时钟周期的小数倍。
可选的,基于IO延迟值确定目标延迟值,包括:
获取片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于IO延迟值和片外延迟值之和确定目标延迟值。
可选的,基于IO延迟值确定目标延迟值,包括:
获取预设延迟值和片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于预设延迟值、IO延迟值和片外延迟值之和确定目标延迟值。
可选的,获取预设延迟值,包括:
从多个初始延迟值中选择多个目标初始延迟值,并从多个目标初始延迟值中确定中间值;
获取芯片管脚处理电路的多个IO测量延迟值;
确定多个IO测量延迟值的均值,并基于中间值与均值的第一差值确定预设延迟值;
其中,在将读使能信号延迟目标初始延迟值的情况下,QSPI控制器能够读取到闪存中的测试数据。
可选的,基于中间值与均值的第一差值确定预设延迟值,包括:
若第一差值为时钟周期的整数倍,则基于第一差值确定为预设延迟值;
若第一差值不为时钟周期的整数倍,则确定第一差值与第一预设值的乘积,并基于乘积取整后的数值与第二预设值的商确定预设延迟值。
可选的,测量芯片管脚处理电路的IO延迟值,包括:
基于数据采集电路传输的第一控制信号,以及芯片管脚处理电路传输的第二控制信号,确定芯片管脚处理电路的IO延迟值;
其中,芯片管脚处理电路传输的第二控制信号是芯片管脚处理电路接收到收发控制电路传输的控制信号后发送的。
可选的,确定芯片管脚处理电路的IO延迟值,包括:
在时钟信号的边沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期;
采用第一计数器对第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对第二控制信号中前预设个数个周期进行计数,得到第二计数值;
在采用第一计数器和第二计数器计数的过程中,每隔时钟周期,将第一计数值的第一比特位,以及第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则增加第三计数器的计数值;
基于第三计数器的计数值的第二比特位确定IO延迟值。
可选的,边沿包括上升沿和下降沿;第三计数器包括与上升沿对应的第一参考计数器,以及与下降沿对应的第二参考计数器;基于第三计数器的计数值的第二比特位确定IO延迟值,包括:
若第一参考计数器的第一参考计数值等于第二参考计数器的第二参考计数值,则基于第一参考计数值的第二比特位确定IO延迟值;
若第一参考计数值不等于第二参考计数值,则基于第一参考计数值的第二比特位和第二个数个时钟周期确定IO延迟值。
可选的,控制信号包括:对时钟信号分频得到的分频时钟信号,以及片选信号;确定芯片管脚处理电路的IO延迟值,包括:
基于收发控制电路传输的第一分频时钟信号,以及芯片管脚处理电路传输的第二分频时钟信号,确定第一延迟值;
基于数据采集电路传输的第一片选信号,以及芯片管脚处理电路传输的第二片选信号,确定第二延迟值;
对第一延迟值和第二延迟值加权求和,得到IO延迟值。
再一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方面所述的数据读取方法。
再一方面,提供了一种延迟测量电路,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述方面所述的数据读取方法。
综上所述,本发明实施例提供了一种QSPI控制器、芯片及数据读取方法,延迟测量电路在指令发送阶段,测量芯片管脚处理电路的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路。延迟补偿电路可以在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟在当前的PVT条件所引起的时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号。
由此可以根据测量的延迟值对闪存中的数据延迟采样,从而自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是本发明实施例提供的一种QSPI控制器的结构示意图;
图2是本发明实施例提供的一种延迟后的读使能信号的时序图;
图3是本发明实施例提供的一种延迟后的时钟信号的时序图;
图4是本发明实施例提供的另一种QSPI控制器的结构示意图;
图5是本发明实施例提供的一种延迟后的使能信号的时序图;
图6是本发明实施例提供的一种时钟PAD的结构示意图;
图7是本发明实施例提供的一种分频时钟信号的时序图;
图8是本发明实施例提供的另一种分频时钟信号的时序图;
图9是本发明实施例提供的再一种QSPI控制器的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在高速XIP模式下,处理器可以通过QSPI控制器直接从闪存中读取数据并运行。其中,QSPI是SPI接口的扩展。
为了保证在高速XIP模式下的执行效率,通常期望有较高的读速度。而为了获得较高的读速度,一方面可以通过提高并行度,采用4根数据线的QSPI控制器,另一方面是提高接口时钟频率。
但是,随着时钟频率的提高,时钟周期越来越小,数据的有效采样窗口也越来越小,同时代工厂(Foundry)提供的普通芯片管脚处理电路的IO延迟较大导致QSPI控制器读延迟会很大。且在不同的PVT条件下,QSPI控制器读延迟的变化也很大,导致在高速XIP模式下读数据的可靠性较低。
图1是本发明实施例提供的一种QSPI控制器的结构示意图,如图1所示,该QSPI控制器100可以包括:延迟测量电路10、芯片管脚处理电路20、延迟补偿电路30、收发控制电路40、数据采集电路50和时钟发生器60。
延迟测量电路10,用于在指令发送阶段,测量芯片管脚处理电路20的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路30。其中,目标延迟值与IO延迟值正相关,且目标延迟值可以为时钟信号的时钟周期的倍数。
收发控制电路40,用于在数据读取阶段,向延迟补偿电路30传输读使能信号。
参考图2和图3,延迟补偿电路30,用于在将读使能信号en延迟目标延迟值t1后,向数据采集电路50的输入端传输延迟后的读使能信号en_dly,将时钟发生器60提供的时钟信号ssi_clk延迟时钟延迟值t2后,向数据采集电路50的时钟端传输延迟后的时钟信号ssi_clk_dly。
其中,时钟延迟值是基于QSPI控制器100当前的PVT条件所确定,时钟延迟值与时钟信号的时钟周期正相关。
需要说明的是,PVT条件在最好的条件(best case)~最坏的条件(worst case)下时,该时钟延迟值位于预设范围内,该预设范围的下限等于第一数值,预设范围的上限等于第二数值。可选的,第一数值可以为第一参考值与时钟信号的时钟周期的乘积,第二数值可以为第二参考值与时钟周期的乘积。示例的,第一参考值可以为第二参考值可以为也即是,预设范围为该T为时钟信号的时钟周期。
在PVT条件为典型条件(typical case)时,时钟延迟值为第三数值,第三数值位于预设范围内。可选的,第三数值可以为第三参考值与时钟周期的乘积,例如,第三参考值可以为即第三数值等于该延迟补偿电路30可以基于当前的PVT条件动态调整时钟延迟值。
数据采集电路50,还用于通过芯片管脚处理电路20从闪存200中读取数据。
可选的,数据采集电路50,还用于在延迟后的读使能信号和延迟后的时钟信号的控制下,通过芯片管脚处理电路20从闪存200中读取数据。
在延迟后的读使能信号的电平为有效电平的情况下,该数据采集电路50可以通过芯片管脚处理电路20从闪存200中读取数据。
可以理解的是,收发控制电路40可以在数据读取阶段,向芯片管脚处理电路20发送读指令(该读指令可以包括待读取的数据的地址),以使得芯片管脚处理电路20将该读指令发送至闪存200。闪存200响应于读指令,将数据通过芯片管脚处理电路20传输至数据采集电路50。
受到QSPI控制器100的PVT条件的影响,芯片管脚处理电路20从接收到读指令到输出读指令存在一个延迟,以及芯片管脚处理电路20接收到闪存200传输的数据到输出该数据也存在另一个延迟,该一个延迟和另一个延迟之和即为芯片管脚处理电路20的IO延迟值。上述该IO延迟值即为芯片管脚处理电路20接收读指令,到芯片管脚处理电路20向数据采集电路50输出针对该读指令的数据的延迟,并且在不同的PVT条件下,该IO延迟值不同。
延迟测量电路10测量芯片管脚处理电路20的IO延迟值,基于IO延迟值确定目标延迟值,延迟补偿电路30通过将读使能信号en延迟目标延迟值t1,以使得数据采集电路50基于延迟后的读使能信号读取数据,由此可以保证数据采集电路50读取数据的时刻,与芯片管脚处理电路20输出数据的时刻接近,进而保证数据采集电路50能够准确采集到数据。由此实现根据测量的延迟值对闪存中数据的延迟采样,保证在当前的PVT条件能够准确读取到数据,进而保证了在高速XIP模式读数据的可靠性。
并且,由于不同的PVT条件下,延迟测量电路10测量芯片管脚处理电路20的IO延迟值不同,进而确定的目标延迟值也不同,由此可以自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
此外,通过将时钟发生器60提供的时钟信号延迟时钟延迟值,且时钟延迟值是基于QSPI控制器当前的PVT条件所确定,由此可以进一步保证数据采集电路50在当前PVT条件下对数据读取的准确性。
本申请的发明人发现,收发控制电路40若直接向数据采集电路50发送读使能信号。数据采集电路50在该读使能信号的控制下从芯片管脚处理电路20读取数据。则由于存在芯片管脚处理电路20的IO延迟值,导致数据采集电路50基于读使能信号从芯片管脚处理电路20读数据的时候,闪存200中的数据可能还未传输至芯片管脚处理电路20,即数据采集电路50读取数据的时刻,距离芯片管脚处理电路20输出数据的时刻较远,从而导致数据采集电路50无法正确采集到数据。
综上所述,本发明实施例提供了一种QSPI控制器,延迟测量电路在指令发送阶段,测量芯片管脚处理电路的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路。延迟补偿电路可以在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,该时钟延迟值是基于QSPI控制器当前的PVT条件所确定。
由此可以根据测量的延迟值对闪存中的数据延迟采样,从而自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
收发控制电路40,用于在数据读取阶段,向芯片管脚处理电路20发送读指令第一时长后,向延迟补偿电路30传输读使能信号。
收发控制电路40的时钟端与时钟发生器50连接,参考图4,收发控制电路可以包括状态收发机401,延迟补偿电路30可以包括:第一延迟补偿电路301和第二延迟补偿电路302。
状态收发机401的输出端与第一延迟补偿电路301的输入端连接,用于在数据读取阶段,向第一延迟补偿电路301的输入端传输读使能信号en。
延迟测量电路10与第一延迟补偿电路301连接,用于若确定目标延迟值为时钟信号ssi_clk的时钟周期的整数倍,则可以将目标延迟值传输至第一延迟补偿电路301。也即是,目标延迟值等于N×T,其中,该N可以为整数。
第一延迟补偿电路301的时钟端与时钟发生器60连接,第一延迟补偿电路301的输出端与数据采集电路50的输入端连接,用于接收时钟发生器60提供的时钟信号,将读使能信号en延迟目标延迟值,并向数据采集电路50的输入端传输延迟后的读使能信号en_dly。
在本发明实施例中,第一延迟补偿电路301可以包括串行的多个触发器和多路选择器。多路选择器可以控制串行的N个触发器开启,进而通过该N个触发器将读使能信号en延迟N个时钟周期,以实现延迟目标延迟值。
第二延迟补偿电路302与数据采集电路50的时钟端连接,用于将时钟信号ssi_clk延迟时钟延迟值后,向数据采集电路50的时钟端传输延迟后的时钟信号ssi_clk_dly。
参考图4,延迟补偿电路30还可以包括第三延迟补偿电路303和第一反相器304。
延迟测量电路10还与第三延迟补偿电路303的输入端连接,用于若确定目标延迟值为时钟信号ssi_clk的时钟周期的小数倍,则可以将第一目标延迟值传输至第一延迟补偿电路301,并将第二目标延迟值传输至第三延迟补偿电路303。
其中,第一目标延迟值和第二目标延迟值之和等于目标延迟值,第一目标延迟值为时钟周期的整数倍,第二目标延迟值为时钟周期的小数倍,且第二目标延迟值小于时钟周期。也即是,目标延迟值等于N×T+n×T,N×T为第一目标延迟值,n×T为第二目标延迟值,该n为小数,例如,n可以为0.5。
参考图4和图5,第一延迟补偿电路301,用于将读使能信号en延迟第一目标延迟值t11,并向第三延迟补偿电路303的输入端传输延迟后的读使能信号en_dly_rise。
第一反相器304的输入端与时钟发生器60连接,第一反相器304的输出端与第三延迟补偿电路303的时钟端连接,用于将时钟发生器60提供的时钟信号反相后传输至第三延迟补偿电路303的时钟端。
参考图4和图5,第三延迟补偿电路303,用于将第一延迟补偿电路301提供的读使能信号en_dly_rise延迟第二目标延迟值t12,并向数据采集电路50传输延迟后的读使能信号en_dly。
参考图4,数据采集电路50可以包括:第二反相器501、第一数据采集器502、第二数据采集器503和数据缓存器504。
第二反相器501的输入端与第二延迟补偿电路302的输出端连接,第二反相器501的输出端与第一数据采集器502的时钟端连接,用于将第二延迟补偿电路302传输的延迟后的时钟信号ssi_clk_dly反相,得到反相后的时钟信号ssi_clk_inv_dly,并将该反相后的时钟信号ssi_clk_inv_dly传输至第一数据采集器502的时钟端。
延迟测量电路10,还用于若目标延迟值为时钟周期的整数倍,则可以通过第一延迟补偿电路301仅向第一数据采集器502的输入端传输延迟后的读使能信号en_dly。
可选的,延迟测量电路10可以向第一延迟补偿电路301发送第一指示信号,进而第一延迟补偿电路301响应于第一指示信号,仅向第一数据采集器502的输入端传输延迟后的读使能信号en_dly。
第二数据采集器503的时钟端与第二延迟补偿电路302的输出端连接,第二数据采集器503的输出端与数据缓存器504连接,用于接收第二延迟补偿电路302传输的延迟后的时钟信号ssi_clk_dly。
芯片管脚处理电路20可以包括:数据PAD 201,第一数据采集器502分别与数据PAD201的数据输出端dC以及第二数据采集器503连接,用于通过芯片管脚处理电路20从闪存中读取数据,并将读取的数据通过第二数据采集器503同步至数据缓存器504。数据PAD 201还设置有数据输入端dI,该数据输入端dI用于接收数据。
在本发明实施例中,数据PAD 201可以是四个,分别为QSPI_DO、QSPI_DI、QSPI_WPN和QSPI_HOLD,且均采用双向IO PAD。相应的,第一数据采集器502可以是四个并行的触发器,该四个并行的触发器的输入端通过4根数据线与四个数据PAD 201的输出端dC一一对应连接。
为保证在高速XIP模式下的较高的读速率,须保证QSPI的4根数据线从芯片管脚处理电路20到数据采集器(即第一数据采集器502和第二数据采集器503)的4根数据线之间的延迟差(skew)较小,通常须控制在500皮秒(picosecond,ps)以下。
可选的,第一数据采集器502可以在延迟后的读使能信号en_dly和反相后的时钟信号ssi_clk_inv_dly的控制下,通过芯片管脚处理电路20的数据输出端dC从闪存中读取数据,并将读取的数据同步至数据缓存器504。
在本发明实施例中,在目标延迟值为时钟信号ssi_clk的时钟周期的整数倍的情况下,第一延迟补偿电路301响应于第一指示信号不会向第三延迟补偿电路303输出延迟后的读使能信号en_dly,因此第三延迟补偿电路303不会输出有效的读使能信号。在该种情况下,第一数据采集器502在延迟后的读使能信号en_dly和第二反相器501提供的反相后的时钟信号ssi_clk_inv_dly的控制下,通过芯片管脚处理电路20从闪存中读取数据。
在本发明实施例中,延迟测量电路10,还用于若目标延迟值为时钟周期的小数倍,则可以通过第一延迟补偿电路301仅向第三延迟补偿电路303传输延迟后的读使能信号en_dly_rise。
可选的,延迟测量电路10可以向第一延迟补偿电路301发送第二指示信号,进而第一延迟补偿电路301响应于第二指示信号,仅向第三延迟补偿电路303传输延迟后的读使能信号en_dly_rise。
第二数据采集器503的输入端还与数据PAD 201的数据输出端dC连接,用于通过芯片管脚处理电路20从闪存中读取数据,并将读取的数据同步至数据缓存器504。
可选的,第二数据采集器503,用于在延迟后的读使能信号en_dly和延迟后的时钟信号ssi_clk_dly的控制下,通过芯片管脚处理电路20从闪存中读取数据。
第二数据采集器503可以包括四个并行的触发器,该四个并行的触发器的输入端通过4根数据线与该四个数据PAD 201的数据输出端dC一一对应连接。
数据缓存器504可以包括四个并行的触发器,该四个并行的触发器的输入端通过4根数据线与该第二数据采集器503的四个触发器一一对应连接。
在本发明实施例中,在目标延迟值为时钟信号ssi_clk的时钟周期的小数倍的情况下,第一延迟补偿电路301响应于第二指示信号不会向第一数据采集器502输出延迟后的读使能信号en_dly_rise。在该种情况下,第二数据采集器503在延迟后的读使能信号en_dly和延迟后的时钟信号ssi_clk_dly的控制下,通过芯片管脚处理电路20从闪存中读取数据。
在本发明实施例中,收发控制电路40,还用于在指令发送阶段,向芯片管脚处理电路20和延迟测量电路10传输控制信号。
芯片管脚处理电路20,用于向延迟测量电路10传输接收到的控制信号。
延迟测量电路10,用于基于收发控制电路40传输的第一控制信号,以及芯片管脚处理电路20传输的第二控制信号,确定芯片管脚处理电路20的IO延迟值。
可选的,该控制信号可以包括:对时钟信号分频得到的分频时钟信号,以及片选信号。
参考图4,收发控制电路40还可以包括:波特率控制器402,该波特率控制器402的时钟端与时钟发生器60的输出端连接,波特率控制器402的输出端与芯片管脚处理电路20的时钟输入端sI连接,用于在指令发送阶段,对时钟发生器60提供的时钟信号进行分频,并将分频后的时钟信号sclk_out传输至芯片管脚处理电路20和延迟测量电路10。芯片管脚处理电路20,用于向延迟测量电路10传输至接收到的分频时钟信号。
参考图4,芯片管脚处理电路20的时钟输出端sC与延迟测量电路10的输入端连接,用于通过时钟输出端sC向延迟测量电路10传输接收到的时钟信号。
参考图4和图6,芯片管脚处理电路20还可以包括时钟PAD 202,波特率控制器402的输出端与时钟PAD 202的时钟输入端sI连接,时钟PAD 202的时钟输出端sC与延迟测量电路10的输入端连接。
时钟PAD 202还可以包括第一晶体管M1、第二晶体管M2和PAD 01。该第一晶体管M1和第二晶体管M2均可以为互补金属氧化物半导体(complementary metal oxidesemiconductor,CMOS)晶体管。
时钟PAD 202的时钟输入端sI接收的分频时钟信号,经过第一晶体管M1和第二晶体管M2后,传输至时钟PAD 202的时钟输出端sC。因此芯片管脚处理电路20从接收到分频后的时钟信号sclk_out到输出时钟信号存在时延,以下将芯片管脚处理电路20输出的分频时钟信号用sclk_in表示。
状态收发机401还与芯片管脚处理电路20的片选信号输入端cI和延迟测量电路10的输入端连接,还用于向芯片管脚处理电路20和延迟测量电路10发送片选信号。芯片管脚处理电路20,用于将接收到的片选信号传输至延迟测量电路10。
参考图4,芯片管脚处理电路20的片选信号输出端cC与延迟测量电路10的输入端连接,用于将接收到的片选信号通过片选信号输出端cC传输至延迟测量电路10。
可选的,芯片管脚处理电路20还可以包括片选PAD 203,状态收发机401的输出端与片选PAD 203的片选信号输入端cI连接,片选PAD 203的片选信号输出端cC与延迟测量电路10的输入端连接。
该片选PAD 203与时钟PAD 202的结构相同,片选PAD 203从接收到片选信号csn_out需经过两个晶体管后传输至片选信号输出端cC,因此从接收到片选信号csn_out到输出的片选信号存在时延,以下将芯片管脚处理电路20输出的片选信号用csn_in表示。
延迟测量电路10,用于基于波特率控制器402传输的第一分频时钟信号sclk_out,以及芯片管脚处理电路20输出的第二分频时钟信号sclk_in,确定第一延迟值。
基于状态收发机401传输的第一片选信号csn_out,以及芯片管脚处理电路20输出的第二片选信号csn_in,确定第二延迟值,对第一延迟值和第二延迟值加权求和,得到IO延迟值。
可选的,延迟测量电路10可以对第一延迟值和第二延迟值加权求和,得到芯片管脚处理电路20的IO延迟值。
若控制信号包括分频时钟信号,则延迟测量电路10可以在指令和地址发送阶段,测量第一延迟值。若控制信号包括片选信号,则延迟测量电路10可以在空闲阶段和指令发送阶段,测量第二延迟值。
并且,状态收发机401可以向延迟测量电路10发送测量信号rx,延迟测量电路10响应于该测量信号测量延迟值。
延迟测量电路10确定IO延迟值的过程可以包括以下步骤:
A1、在时钟信号的边沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期。
对于每个控制信号,若控制信号的起始边沿(如起始上升沿)未与时钟信号的边沿对齐,则延迟测量电路10可以将该控制信号的起始边沿与该时钟信号的边沿对齐,之后,将该控制信号延迟第一个数个时钟周期。其中,该时钟信号的边沿为位于控制信号的起始边沿之后,且距离起始上升沿最近。
以第一控制信号为第一分频时钟信号sclk_out,边沿包括上升沿为例,参考图7,由于第一分频时钟信号sclk_out的起始上升沿未与时钟信号的上升沿对齐,因此延迟测量电路10可以将第一分频信号sclk_out的起始上升沿与时钟信号的上升沿对齐,得到分频信号sclk_out_dly0,之后,将该分频信号sclk_out_dly0延迟两个时钟周期,得到延迟后的第一分频时钟信号sclk_out_dly。
以第一控制信号为第一分频时钟信号sclk_out,且边沿包括下降沿为例,参考图8,由于第一分频时钟信号sclk_out的起始上升沿未与时钟信号的下降沿对齐,因此延迟测量电路10可以将第一分频信号sclk_out的起始上升沿与时钟信号的下降沿对齐,得到分频信号sclk_out_dly0,之后,将该分频信号sclk_out_dly0延迟两个时钟周期,得到延迟后的第一分频时钟信号sclk_out_dly。
A2、采用第一计数器对第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对第二控制信号中前预设个数个周期进行计数,得到第二计数值。
延迟测量电路10可以采用第一计数器对第一控制信号的前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对第二控制信号中前预设个数个周期进行计数,得到第二计数值。其中,第一计数器和第二计数器均为6比特(bit)计数器,6bit包括bit0-bit5,延迟测量电路10中可以预先存储预设个数。
若控制信号包括分频时钟信号,则预设个数可以为32或者16。延迟测量电路10采用第一计数器对第一控制信号中前预设个数个上升沿进行计数,并采用第二计数器对第二控制信号中前预设个数个上升沿进行计数。
若控制信号包括片选信号,则预设个数为1。且延迟测量电路10采用第一计数器对第一控制信号的下降沿进行计数,并采用第二计数器对第二控制信号的下降沿进行计数。
A3、每隔时钟周期,将第一计数值的第一比特位,以及第二计数值的第一比特位进行异或运算。若异或运算得到的数值为1,则增加第三计数器的计数值。
在采用第一计数器计数和第二计数器计数的过程中,延迟测量电路10可以每隔时钟周期,将第一计数值的第一比特位,以及第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则可以增加第三计数器的计数值。若异或运算得到的数值为0,则可以不增加第三计数器的计数值。可选的,延迟测量电路10可以将第三计数器的计数值增加参考值,该参考值可以为1。
其中,若控制信号为分频时钟信号,则第一比特位可以为bit1或者bit2。若控制信号为片选信号,则第一比特位为bit0。该第一计数值、第二计数值和第三计数器的计数值均可以为二进制数,且第三计数器为9bit计数器,9bit包括bit0-bit8。
示例的,第一比特位可以为bit1,第一计数器的计数值为010010,第二计数器的计数值为001010,则第一计数值的bit1为1,第二计数值的bit1为1,那么异或运算得到的数值为0。
A4、基于第三计数器的计数值的第二比特位确定第一延迟值。
延迟测量电路10可以基于第三计数器的计数值的第二比特位确定第一延迟值,该第二比特位可以为多个,例如,第二比特位可以包括5位。
可选的,若控制信号为分频时钟信号,预设个数为32,且第一比特位为bit1,则可以去掉第三计数器的计数值的低4位,并将剩余的数值中低五位确定为第二比特位。即第二比特位包括第三计数器的计数值的bit8至bit4。
若控制信号为分频时钟信号,预设个数为16,且第一比特位为bit1,则可以去掉第三计数器的计数值的低3位,并将剩余的数值中低五位确定为第二比特位。即第二比特位包括第三计数器的计数值的bit7至bit3。
若控制信号为分频时钟信号,第一比特位为bit2,预设个数为32,则可以去掉第三计数器的计数值的低3位,并将剩余的数值中低五位确定为第二比特位。即第二比特位包括第三计数器的计数值的bit7至bit3。
若控制信号为分频时钟信号,第一比特位为bit2,预设个数为16,则可以去掉第三计数器的计数值的低2位,并将剩余的数值中低五位确定为第二比特位。即第二比特位包括第三计数器的计数值的bit6至bit2。
若控制信号为片选信号,且第一比特位为bit0,则第二比特位为第三计数器的计数值的低五位。即第二比特位包括第三计数器的计数值的bit4至bit0。
在本发明实施例中,时钟信号的边沿可以包括上升沿和/或下降沿,若时钟信号的边沿可以包括上升沿和下降沿,则第一计数器和第二计数器可以均为两个,那么延迟测量电路10可以在时钟信号的上升沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期,得到与第一控制信号对应的第一参考控制信号,以及与第二控制信号对应的第二参考控制信号。
延迟测量电路10还可以在时钟信号的下升沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期,得到与第一控制信号对应第一目标控制信号,以及与第二控制信号对应的第二目标控制信号。
延迟测量电路10可以采用一个第一计数器对第一参考控制信号中前预设个数个周期进行计数,并采用一个第二计数器对第二参考控制信号中前预设个数个周期进行计数。
采用另一个第一计数器对第一目标控制信号中前预设个数个周期进行计数,并采用另一个第二计数器对第二目标控制信号中前预设个数个周期进行计数。
相应的,第三计数器可以包括与上升沿对应的第一参考计数器,以及与下降沿对应的第二参考计数器。
可选的,延迟测量电路10可以每隔时钟周期,将一个第一计数器的计数值的第一比特位,以及一个第二计数器的计数值的第一比特位进行异或运算。若异或运算得到的数值为1,则可以增加第一参考计数器的第一参考计数值。
每隔时钟周期,将另一个第一计数器的计数值的第一比特位,以及另一个第二计数器的计数值的第一比特位进行异或运算。若异或运算得到的数值为1,则可以增加第二参考计数器的第二参考计数值。
在计数完成后,延迟测量电路10,用于:
若第一参考计数值等于第二参考计数值,则可以基于第一参考计数值的第二比特位确定IO延迟值。若第一参考计数值不等于第二参考计数值,则可以基于第一参考计数值的第二比特位和第二个数个时钟周期确定IO延迟值。
可选的,延迟测量电路10将第一参考计数值的第二比特位的十进制数值确定为IO延迟值,将第一参考计数值的第二比特位的十进制数值和第二个数个时钟周期之和确定为IO延迟值。其中,延迟测量电路10中可以预先存储第二个数,示例的,第二个数可以为0.5。
需要说明的是,延迟测量电路10确定第一延迟值和第二延迟值的过程,与采用控制信号确定IO延迟值的过程相同,本发明实施例在此不再赘述。
在本发明实施例一种可选的实现方式中,延迟测量电路10可以将IO延迟值确定为目标延迟值。
在本发明实施例另一种可选的实现方式中,延迟测量电路10,还用于获取片外延迟值,并基于IO延迟值和片外延迟值之和确定目标延迟值。
其中,目标延迟值还与片外延迟值正相关,该片外延迟值可以为正数,也可以为负数。该片外延迟值可以包括闪存的IO延迟,以及芯片管脚处理电路20与闪存之间的走线所引起的延迟。该延迟测量电路10中可以预先存储该片外延迟值。
可选的,延迟测量电路10可以将IO延迟值和片外延迟值之和确定为目标延迟值。
可以理解的是,芯片管脚处理电路20与闪存之间的走线所引起的延迟包括:芯片管脚处理电路20通过走线将读指令传输至闪存200的延迟(即走线传输读指令的延迟),以及通过走线将闪存200传输的数据发送至芯片管脚处理电路20的输入端的延迟(即走线传输针对读指令的数据的延迟)。闪存的IO延迟包括闪存200接收到读指令到闪存200发出数据的延迟。
延迟测量电路10基于IO延迟值和片外延迟值之和确定目标延迟值,延迟补偿电路30通过将读使能信号en延迟目标延迟值t1,以使得数据采集电路50基于延迟后的读使能信号读取数据。由此可以保证数据采集电路50读取数据的时刻,与芯片管脚处理电路20输出数据的时刻接近,进而保证数据采集电路50能够准确采集到数据。
在本发明实施例再一种可选的实现方式中,延迟测量电路10,还用于获取预设延迟值,并基于预设延迟值、IO延迟值和片外延迟值之和确定目标延迟值。该预设延迟值用于表征读数据的整体延迟值,该整体延迟值包括芯片管脚处理电路20的IO延迟和片外延迟。
可选的,延迟测量电路10可以将预设延迟值、IO延迟值和片外延迟值之和确定为目标延迟值。
在本发明实施例中,延迟测量电路10确定预设延迟值的过程可以包括以下步骤:
B1、从多个初始延迟值中选择多个目标初始延迟值,并从多个目标初始延迟值中确定中间值。
延迟测量电路10可以从多个初始延迟值中选择多个目标初始延迟值,并从多个目标初始延迟值中确定中间值。
其中,在将读使能信号延迟目标初始延迟值的情况下,QSPI控制器能够读取到闪存中的测试数据。
B2、获取芯片管脚处理电路的多个IO测量延迟值,确定多个IO测量延迟值的均值,并基于中间值与均值的第一差值确定初始延迟值。
延迟测量电路10可以获取芯片管脚处理电路20的多个IO测量延迟值,确定多个IO测量延迟值的均值,并基于中间值与均值的第一差值确定初始延迟值。其中,多个IO测量延迟值与多个初始延迟值一一对应,或者多个IO测量延迟值与多个目标初始延迟值一一对应,即IO测量延迟值是采用对应的目标初始延迟值读取测试数据之前所测量的。
可选的,若第一差值为时钟周期的整数倍,则延迟测量电路10可以基于第一差值确定预设延迟值。例如,延迟测量电路10可以将第一差值确定为预设延迟值。若第一差值不为时钟周期的整数倍,则延迟测量电路10可以确定第一差值与第一预设值的乘积,并基于乘积取整后的数值与第二预设值的商确定预设延迟值。
其中,第一预设值和第二预设值可以相等,也可以不相等,例如,第一预设值和第二预设值均可以为2。
可选的,延迟测量电路10可以将乘积4舍5入进行取整。延迟测量电路10可以将乘积取整后的数值与第二预设值的商确定为预设延迟值。
时钟信号ssi_clk的频率是分频时钟信号sclk_out的4倍,故理想的采样窗口为4个ssi_clk时钟周期,考虑到QSPI的4个数据线从闪存到达QSPI控制器的数据采集器之间存在数据歪斜(skew),实际有效采样窗口会小于4个ssi_clk,但通常会有3个ssi_clk(6个的半周期ssi_clk)左右的采样窗口。在常温(样品验证阶段)或PVT Typical Case(后仿真)下,通过硬切换在非XIP模式下对在闪存200的特定地址编程写入测试数据(如0x5a5aa5a5)。QSPI控制器100可以重复执行测试数据的读取流程,直至满足终止条件,得到多个初始延迟值和多个IO测量延迟值。
其中,终止条件可以包括读测试数据由正确(即能够读取到测试数据)转到出错(即无法读取到测试数据)或更新后的初始延迟值达到支持的最大延迟(例如16.5个时钟周期)。测试数据的读取流程包括:
B11、延迟测量电路在指令发送阶段,获取芯片管脚处理电路的IO测量延迟值。
B12、延迟补偿电路在数据读取阶段,在将读使能信号延迟初始延迟值后,向数据采集电路的输入端输出延迟后的读使能信号,在将时钟信号延迟初始时钟延迟值后,向数据采集电路的时钟端输出延迟后的时钟信号。其中,初始时钟延迟值是基于QSPI控制器当前的PVT条件所确定。
B13、数据采集电路通过芯片管脚处理电路从闪存读取测试数据。
B14、更新初始延迟值。
其中,更新后的初始延迟值与更新前的初始延迟值的第二差值为时钟信号的时钟周期的倍数,示例的,该倍数可以为0.5,更新前的初始延迟值可以为0.5个时钟周期,更新后的初始延迟值可以为1个时钟周期。
在本发明实施例中,首次读取测试数据时,初始延迟值可以为0.5个时钟周期,第二次读取测试数据时,初始延迟值可以为1个时钟周期,第三次读取测试数据时,初始延迟值可以为1.5个时钟周期,依次增加,直至满足终止条件。
参考图8,QSPI控制器还可以包括:片上总线接口71、以及控制和状态寄存器(control and status register,CSR)72,片上总线接口71用于实现高级高性能总线(advanced high performance bus,AHB)到控制器内部总线的转换,且具有地址译码功能,能根据访问的地址空间,来决定是高速XIP模式还是非XIP模式。
在高速XIP模式和非XIP模式转换时提供必要的硬件保护功能,确保前一个高速XIP模式或非XIP模式操作在转换时相应AHB传输和QSPI控制器传输都已经完成。非XIP模式是通过片上总线接口71直接读写CSR 72来实现对闪存的读写,此模式速率较低,但支持闪存所有的操作。
高速XIP模式性能要求高,仅支持2线和4线的读操作,其中2线XIP模式对性能要求不高,仅在用QSPI控制器和闪存作系统启动时使用。XIP模式下,QSPI控制器直接把片上总线接口71的读操作转换为针对闪存的读操作。此外片上总线接口71还提供一个xip_en(即边带输入信号,side band signal),如果xip_en为高,则强行让QSPI控制器进入高速XIP模式(即硬切换),否则根据访问的地址空间来决定是高速XIP模式还是非XIP模式模式(即软切换)。
xip_en由系统控制寄存器产生,默认为1,用以支持系统直接从QSPI控制器通过较低速率的XIP 2线进行启动。系统通过2线XIP或BootROM/OTP等方式启动后,通过适当的配置并设定CSR 72的QE比特(quad enable bit)、baud_ctrl及xip_en(置0)后,可转入高速的4线XIP正常工作模式,此时通过访问的地址空间,来决定是XIP模式还是非XIP模式。
CSR 72包含TX/RX相关的中断逻辑。
波特率控制器402还根据设定的QSPI接口速率产生分频时钟信号sclk_out,以及根据状态收发机401所处的数据读取阶段及波特率分频计数器,同时控制状态收发机401在数据读取阶段时产生读使能信号。
数据缓存器504可以包括:数据同步器、串行接口工程504a、发送先进先出(firstinput first output,FIFO)存储器504b,接收先进先出(First Input First Output,FIFO)存储器504c。
串行接口工程504a,用于对收发数据进行并/串转换;在4线的高速XIP模式时,将多个4bit读数据经XIP控制器001正确采样后转换成32bit数据写入接收FIFO存储器504c。
XIP控制器001可以包括上述延迟测量电路10、延迟补偿电路30、第二反相器501、第一数据采集器502和第二数据采集器503。XIP控制器001中的第二数据采集器503可以将采集的数据通过数据同步器和串行接口工程504a同步至接收先进先出存储器504c。数据同步器包括并行的四个触发器。
发送FIFO存储器504b用于发送的先进先出数据缓存及相关控制逻辑。接收FIFO存储器504c用于接收的先进先出数据缓存及相关控制逻辑。
综上所述,本发明实施例提供了一种QSPI控制器,延迟测量电路在指令发送阶段,测量芯片管脚处理电路的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路。延迟补偿电路可以在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,该时钟延迟值是基于QSPI控制器当前的PVT条件所确定。
由此可以根据测量的延迟值对闪存中的数据延迟采样,从而自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
本发明实施例提供了一种芯片,包括上述实施例所述的QSPI控制器。
本发明实施例提供了一种数据读取系统,处理器、闪存,以及上述实施例所述的QSPI控制器。
本发明实施例提供了一种数据读取方法,应用于QSPI控制器中的延迟测量电路10;方法包括:
在指令发送阶段,测量芯片管脚处理电路的IO延迟值;
基于IO延迟值确定目标延迟值,并向延迟补偿电路传输目标延迟值;
其中,目标延迟值用于供延迟补偿电路在将收发控制电路传输的读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,以使数据采集电路通过芯片管脚处理电路从闪存中读取数据;其中,时钟延迟值是基于QSPI控制器当前的工艺电压温度PVT条件所确定。
可选的,延迟补偿电路包括:第一延迟补偿电路和第三延迟补偿电路;向延迟补偿电路传输目标延迟值,包括:
若确定目标延迟值为时钟信号的时钟周期的整数倍,则向第一延迟补偿电路发送目标延迟值,以使第一延迟电路将读使能信号延迟目标延迟值;
若确定目标延迟值为时钟周期的小数倍,则向第一延迟补偿电路发送第一目标延迟值,并向第三延迟补偿电路发送第二目标延迟值,以使第一延迟补偿电路将读使能信号延迟第一目标延迟值,第三延迟补偿电路将第一延迟补偿电路传输的读使能信号延迟第二目标延迟值;
其中,第一目标延迟值和第二目标延迟值之和等于目标延迟值,且第一目标延迟值为时钟周期的整数倍,第二目标延迟值为时钟周期的小数倍。
可选的,基于IO延迟值确定目标延迟值,包括:
获取片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于IO延迟值和片外延迟值之和确定目标延迟值。
可选的,基于IO延迟值确定目标延迟值,包括:
获取预设延迟值和片外延迟值,片外延迟值包括闪存的IO延迟,以及芯片管脚处理电路与闪存之间的走线所引起的延迟;
基于预设延迟值、IO延迟值和片外延迟值之和确定目标延迟值。
可选的,获取预设延迟值,包括:
从多个初始延迟值中选择多个目标初始延迟值,并从多个目标初始延迟值中确定中间值;
获取芯片管脚处理电路的多个IO测量延迟值;
确定多个IO测量延迟值的均值,并基于中间值与均值的第一差值确定预设延迟值;
其中,在将读使能信号延迟目标初始延迟值的情况下,QSPI控制器能够读取到闪存中的测试数据。
可选的,基于中间值与均值的第一差值确定预设延迟值,包括:
若第一差值为时钟周期的整数倍,则基于第一差值确定为预设延迟值;
若第一差值不为时钟周期的整数倍,则确定第一差值与第一预设值的乘积,并基于乘积取整后的数值与第二预设值的商确定预设延迟值。
可选的,测量芯片管脚处理电路的IO延迟值,包括:
基于数据采集电路传输的第一控制信号,以及芯片管脚处理电路传输的第二控制信号,确定芯片管脚处理电路的IO延迟值;
其中,芯片管脚处理电路传输的第二控制信号是芯片管脚处理电路接收到收发控制电路传输的控制信号后发送的。
可选的,确定芯片管脚处理电路的IO延迟值,包括:
在时钟信号的边沿处,将第一控制信号和第二控制信号分别延迟第一个数个时钟周期;
采用第一计数器对第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对第二控制信号中前预设个数个周期进行计数,得到第二计数值;
在采用第一计数器和第二计数器计数的过程中,每隔时钟周期,将第一计数值的第一比特位,以及第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则增加第三计数器的计数值;
基于第三计数器的计数值的第二比特位确定IO延迟值。
可选的,边沿包括上升沿和下降沿;第三计数器包括与上升沿对应的第一参考计数器,以及与下降沿对应的第二参考计数器;基于第三计数器的计数值的第二比特位确定IO延迟值,包括:
若第一参考计数器的第一参考计数值等于第二参考计数器的第二参考计数值,则基于第一参考计数值的第二比特位确定IO延迟值;
若第一参考计数值不等于第二参考计数值,则基于第一参考计数值的第二比特位和第二个数个时钟周期确定IO延迟值。
可选的,控制信号包括:对时钟信号分频得到的分频时钟信号,以及片选信号;确定芯片管脚处理电路的IO延迟值,包括:
基于收发控制电路传输的第一分频时钟信号,以及芯片管脚处理电路传输的第二分频时钟信号,确定第一延迟值;
基于数据采集电路传输的第一片选信号,以及芯片管脚处理电路传输的第二片选信号,确定第二延迟值;
对第一延迟值和第二延迟值加权求和,得到IO延迟值。。
综上所述,本发明实施例提供了一种数据读取方法,延迟测量电路在指令发送阶段,测量芯片管脚处理电路的IO延迟值,基于IO延迟值确定目标延迟值,并将目标延迟值发送至延迟补偿电路,以使得延迟补偿电路可以在将读使能信号延迟目标延迟值后,向数据采集电路的输入端传输延迟后的读使能信号,将时钟发生器提供的时钟信号延迟时钟延迟值后,向数据采集电路的时钟端传输延迟后的时钟信号,该时钟延迟值是基于QSPI控制器当前的PVT条件所确定。
由此可以根据测量的延迟值对闪存中的数据延迟采样,从而自适应地匹配PVT条件引起的延迟变化,达到在不同PVT条件均能够准确读取到数据的目的,保证了在高速XIP模式读数据的可靠性。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时上述实施例所述的数据读取方法。
本发明实施例提供了一种延迟测量电路,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述实施例所述的数据读取方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,本发明实施例中所使用的“第一”、“第二”等术语,仅用于描述目的,而不可以理解为指示或者暗示相对重要性,或者隐含指明本实施例中所指示的技术特征数量。由此,本发明实施例中限定有“第一”、“第二”等术语的特征,可以明确或者隐含地表示该实施例中包括至少一个该特征。在本发明的描述中,词语“多个”的含义是至少两个或者两个及以上,例如两个、三个、四个等,除非实施例中另有明确具体的限定。
在本发明中,除非实施例中另有明确的相关规定或者限定,否则实施例中出现的术语“安装”、“相连”、“连接”和“固定”等应做广义理解,例如,连接可以是固定连接,也可以是可拆卸连接,或成一体,可以理解的,也可以是机械连接、电连接等;当然,还可以是直接相连,或者通过中间媒介进行间接连接,或者可以是两个元件内部的连通,或者两个元件的相互作用关系。对于本领域的普通技术人员而言,能够根据具体的实施情况理解上述术语在本发明中的具体含义。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (28)
1.一种QSPI控制器,其特征在于,所述QSPI控制器包括:延迟测量电路、芯片管脚处理电路、延迟补偿电路、收发控制电路、数据采集电路和时钟发生器;
所述延迟测量电路,用于在指令发送阶段,测量所述芯片管脚处理电路的输入输出IO延迟值,基于所述IO延迟值确定目标延迟值,并向所述延迟补偿电路传输所述目标延迟值;
所述收发控制电路,用于在数据读取阶段,向所述延迟补偿电路传输读使能信号;
所述延迟补偿电路,用于在将所述读使能信号延迟所述目标延迟值后,向所述数据采集电路的输入端传输延迟后的读使能信号,将所述时钟发生器提供的时钟信号延迟时钟延迟值后,向所述数据采集电路的时钟端传输延迟后的时钟信号;其中,所述时钟延迟值是基于所述QSPI控制器当前的工艺电压温度PVT条件所确定;
所述数据采集电路,还用于通过所述芯片管脚处理电路从闪存中读取数据。
2.根据权利要求1所述的QSPI控制器,其特征在于,所述延迟补偿电路包括:第一延迟补偿电路和第二延迟补偿电路;
所述收发控制电路,用于在所述数据读取阶段,向所述第一延迟补偿电路的输入端传输所述读使能信号;
所述延迟测量电路若确定所述目标延迟值为所述时钟信号的时钟周期的整数倍,则向所述第一延迟补偿电路发送所述目标延迟值;
所述第一延迟补偿电路,用于接收所述时钟发生器提供的时钟信号,将所述读使能信号延迟所述目标延迟值,并向所述数据采集电路的输入端传输所述延迟后的读使能信号;
所述第二延迟补偿电路,用于将所述时钟信号延迟所述时钟延迟值后,向所述数据采集电路的时钟端传输所述延迟后的时钟信号。
3.根据权利要求2所述的QSPI控制器,其特征在于,所述延迟补偿电路还包括:第三延迟补偿电路和第一反相器;
所述延迟测量电路,用于若确定所述目标延迟值为所述时钟周期的小数倍,则向所述第一延迟补偿电路发送第一目标延迟值,并向所述第三延迟补偿电路发送第二目标延迟值;其中,所述第一目标延迟值和所述第二目标延迟值之和等于所述目标延迟值,且所述第一目标延迟值为所述时钟周期的整数倍,所述第二目标延迟值为所述时钟周期的小数倍;
所述第一延迟补偿电路,用于将所述读使能信号延迟所述第一目标延迟值,并向所述第三延迟补偿电路的输入端传输延迟后的读使能信号;
所述第一反相器,用于将所述时钟发生器提供的时钟信号反相后传输至所述第三延迟补偿电路的时钟端;
所述第三延迟补偿电路,用于将所述第一延迟补偿电路传输的读使能信号延迟所述第二目标延迟值,并向所述数据采集电路的输入端传输延迟后的读使能信号。
4.根据权利要求3所述的QSPI控制器,其特征在于,所述数据采集电路包括:第二反相器、第一数据采集器、第二数据采集器和数据缓存器;
所述第二反相器,用于将所述第二延迟补偿电路传输的延迟后的时钟信号反相后传输至所述第一数据采集器的时钟端;
所述延迟测量电路,还用于若所述目标延迟值为所述时钟周期的整数倍,则通过所述第一延迟补偿电路仅向所述第一数据采集器的输入端传输所述延迟后的读使能信号;
所述第一数据采集器,用于通过所述芯片管脚处理电路从所述闪存中读取数据,并将读取的数据通过所述第二数据采集器同步至所述数据缓存器。
5.根据权利要求4所述的QSPI控制器,其特征在于,
所述延迟测量电路,还用于若所述目标延迟值为所述时钟周期的小数倍,则通过所述第一延迟补偿电路仅向所述第三延迟补偿电路传输延迟后的读使能信号;
所述第二数据采集器,用于接收所述第二延迟补偿电路传输的延迟后的时钟信号,通过所述芯片管脚处理电路从所述闪存中读取数据,并将读取的数据同步至所述数据缓存器。
6.根据权利要求1至5任一所述的QSPI控制器,其特征在于,所述延迟测量电路,用于:
获取片外延迟值,所述片外延迟值包括所述闪存的IO延迟,以及所述芯片管脚处理电路与所述闪存之间的走线所引起的延迟;
基于所述IO延迟值和所述片外延迟值之和确定所述目标延迟值。
7.根据权利要求1至5任一所述的QSPI控制器,其特征在于,所述延迟测量电路,用于:
获取预设延迟值和片外延迟值,所述片外延迟值包括所述闪存的IO延迟,以及所述芯片管脚处理电路与所述闪存之间的走线所引起的延迟;
基于所述预设延迟值、所述IO延迟值和所述片外延迟值之和确定所述目标延迟值。
8.根据权利要求7所述的QSPI控制器,其特征在于,所述延迟测量电路,用于:
从多个初始延迟值中选择多个目标初始延迟值,并从多个所述目标初始延迟值中确定中间值;
获取所述芯片管脚处理电路的多个IO测量延迟值;
确定多个所述IO测量延迟值的均值,并基于所述中间值与所述均值的第一差值确定所述预设延迟值;
其中,在将所述读使能信号延迟所述目标初始延迟值的情况下,所述QSPI控制器能够读取到所述闪存中的测试数据。
9.根据权利要求8所述的QSPI控制器,其特征在于,所述延迟测量电路,用于:
若所述第一差值为所述时钟信号的时钟周期的整数倍,则基于所述第一差值确定所述预设延迟值;
若所述第一差值不为所述时钟周期的整数倍,则确定所述第一差值与第一预设值的乘积,并基于所述乘积取整后的数值与第二预设值的商确定所述预设延迟值。
10.根据权利要求8所述的QSPI控制器,其特征在于,所述QSPI控制器,用于:
重复执行测试数据的读取流程,直至满足终止条件,得到多个所述初始延迟值和多个所述IO测量延迟值;其中,所述测试数据的读取流程包括:
在所述指令发送阶段,获取所述芯片管脚处理电路的IO测量延迟值;
在所述数据读取阶段,在将所述读使能信号延迟所述初始延迟值后,向所述数据采集电路的输入端输出延迟后的读使能信号,在将所述时钟信号延迟初始时钟延迟值后,向所述数据采集电路的时钟端输出延迟后的时钟信号;
通过所述芯片管脚处理电路从所述闪存中读取所述测试数据;
更新所述初始延迟值,其中,更新后的初始延迟值与更新前的初始延迟值的第二差值为所述时钟周期的倍数。
11.根据权利要求1至5任一所述的QSPI控制器,其特征在于,
所述收发控制电路,还用于在所述指令发送阶段,向所述芯片管脚处理电路和所述延迟测量电路传输控制信号;
所述芯片管脚处理电路,用于向所述延迟测量电路传输接收到的控制信号;
所述延迟测量电路,用于基于所述收发控制电路传输的第一控制信号,以及所述芯片管脚处理电路传输的第二控制信号,确定所述芯片管脚处理电路的IO延迟值。
12.根据权利要求11所述的QSPI控制器,其特征在于,所述延迟测量电路,用于:
在所述时钟信号的边沿处,将所述第一控制信号和所述第二控制信号分别延迟第一个数个时钟周期;
采用第一计数器对所述第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对所述第二控制信号中前预设个数个周期进行计数,得到第二计数值;
在采用所述第一计数器和所述第二计数器计数的过程中,每隔所述时钟周期,将所述第一计数值的第一比特位,以及所述第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则增加第三计数器的计数值;
基于所述第三计数器的计数值的第二比特位确定所述IO延迟值。
13.根据权利要求12所述的QSPI控制器,其特征在于,所述边沿包括上升沿和下降沿;所述第三计数器包括与所述上升沿对应的第一参考计数器,以及与所述下降沿对应的第二参考计数器;所述延迟测量电路,用于:
若所述第一参考计数器的第一参考计数值等于所述第二参考计数器的第二参考计数值,则基于所述第一参考计数值的第二比特位确定所述IO延迟值;
若所述第一参考计数值不等于所述第二参考计数值,则基于所述第一参考计数值的第二比特位和第二个数个所述时钟周期确定所述IO延迟值。
14.根据权利要求11所述的QSPI控制器,其特征在于,所述控制信号包括:对所述时钟信号分频得到的分频时钟信号,以及片选信号;所述延迟测量电路,用于:
基于所述收发控制电路传输的第一分频时钟信号,以及所述芯片管脚处理电路传输的第二分频时钟信号,确定第一延迟值;
基于所述收发控制电路传输的第一片选信号,以及所述芯片管脚处理电路传输的第二片选信号,确定第二延迟值;
对所述第一延迟值和所述第二延迟值加权求和,得到所述IO延迟值。
15.一种芯片,其特征在于,包括权利要求1至14任一所述的QSPI控制器。
16.一种数据读取系统,其特征在于,处理器、闪存,以及权利要求1至14任一所述的QSPI控制器。
17.一种数据读取方法,其特征在于,应用于QSPI控制器中的延迟测量电路,所述QSPI控制器还包括:芯片管脚处理电路、延迟补偿电路、收发控制电路、数据采集电路和时钟发生器;所述方法包括:
在指令发送阶段,测量所述芯片管脚处理电路的IO延迟值;
基于所述IO延迟值确定目标延迟值,并向所述延迟补偿电路传输所述目标延迟值;
其中,所述目标延迟值用于供所述延迟补偿电路在将所述收发控制电路传输的读使能信号延迟所述目标延迟值后,向所述数据采集电路的输入端传输延迟后的读使能信号,将所述时钟发生器提供的时钟信号延迟时钟延迟值后,向所述数据采集电路的时钟端传输延迟后的时钟信号,以使所述数据采集电路通过所述芯片管脚处理电路从闪存中读取数据;其中,所述时钟延迟值是基于所述QSPI控制器当前的PVT条件所确定。
18.根据权利要求17所述的方法,其特征在于,所述延迟补偿电路包括:第一延迟补偿电路和第三延迟补偿电路;向所述延迟补偿电路传输所述目标延迟值,包括:
若确定所述目标延迟值为所述时钟信号的时钟周期的整数倍,则向所述第一延迟补偿电路发送所述目标延迟值,以使所述第一延迟电路将所述读使能信号延迟所述目标延迟值;
若确定所述目标延迟值为所述时钟周期的小数倍,则向所述第一延迟补偿电路发送第一目标延迟值,并向所述第三延迟补偿电路发送第二目标延迟值,以使所述第一延迟补偿电路将所述读使能信号延迟所述第一目标延迟值,所述第三延迟补偿电路将所述第一延迟补偿电路传输的读使能信号延迟所述第二目标延迟值;
其中,所述第一目标延迟值和所述第二目标延迟值之和等于所述目标延迟值,且所述第一目标延迟值为所述时钟周期的整数倍,所述第二目标延迟值为所述时钟周期的小数倍。
19.根据权利要求17或18所述的方法,其特征在于,基于所述IO延迟值确定目标延迟值,包括:
获取片外延迟值,所述片外延迟值包括所述闪存的IO延迟,以及所述芯片管脚处理电路与所述闪存之间的走线所引起的延迟;
基于所述IO延迟值和所述片外延迟值之和确定所述目标延迟值。
20.根据权利要求17或18所述的方法,其特征在于,基于所述IO延迟值确定目标延迟值,包括:
获取预设延迟值和片外延迟值,所述片外延迟值包括所述闪存的IO延迟,以及所述芯片管脚处理电路与所述闪存之间的走线所引起的延迟;
基于所述预设延迟值、所述IO延迟值和所述片外延迟值之和确定所述目标延迟值。
21.根据权利要求20所述的方法,其特征在于,获取预设延迟值,包括:
从多个初始延迟值中选择多个目标初始延迟值,并从多个所述目标初始延迟值中确定中间值;
获取所述芯片管脚处理电路的多个IO测量延迟值;
确定多个所述IO测量延迟值的均值,并基于所述中间值与所述均值的第一差值确定所述预设延迟值;
其中,在将所述读使能信号延迟所述目标初始延迟值的情况下,所述QSPI控制器能够读取到所述闪存中的测试数据。
22.根据权利要求21所述的方法,其特征在于,基于所述中间值与所述均值的第一差值确定所述预设延迟值,包括:
若所述第一差值为所述时钟周期的整数倍,则基于所述第一差值确定为所述预设延迟值;
若所述第一差值不为所述时钟周期的整数倍,则确定所述第一差值与第一预设值的乘积,并基于所述乘积取整后的数值与第二预设值的商确定所述预设延迟值。
23.根据权利要求17或18所述的方法,其特征在于,测量所述芯片管脚处理电路的IO延迟值,包括:
基于所述数据采集电路传输的第一控制信号,以及所述芯片管脚处理电路传输的第二控制信号,确定所述芯片管脚处理电路的IO延迟值;
其中,所述芯片管脚处理电路传输的第二控制信号是所述芯片管脚处理电路接收到所述收发控制电路传输的控制信号后发送的。
24.根据权利要求23所述的方法,其特征在于,确定所述芯片管脚处理电路的IO延迟值,包括:
在所述时钟信号的边沿处,将所述第一控制信号和所述第二控制信号分别延迟第一个数个时钟周期;
采用第一计数器对所述第一控制信号中前预设个数个周期进行计数,得到第一计数值,并采用第二计数器对所述第二控制信号中前预设个数个周期进行计数,得到第二计数值;
在采用所述第一计数器和所述第二计数器计数的过程中,每隔所述时钟周期,将所述第一计数值的第一比特位,以及所述第二计数值的第一比特位进行异或运算,若异或运算得到的数值为1,则增加第三计数器的计数值;
基于所述第三计数器的计数值的第二比特位确定所述IO延迟值。
25.根据权利要求24所述的方法,其特征在于,所述边沿包括上升沿和下降沿;所述第三计数器包括与所述上升沿对应的第一参考计数器,以及与所述下降沿对应的第二参考计数器;基于所述第三计数器的计数值的第二比特位确定所述IO延迟值,包括:
若所述第一参考计数器的第一参考计数值等于所述第二参考计数器的第二参考计数值,则基于所述第一参考计数值的第二比特位确定所述IO延迟值;
若所述第一参考计数值不等于所述第二参考计数值,则基于所述第一参考计数值的第二比特位和第二个数个所述时钟周期确定所述IO延迟值。
26.根据权利要求23所述的方法,其特征在于,所述控制信号包括:对所述时钟信号分频得到的分频时钟信号,以及片选信号;确定所述芯片管脚处理电路的IO延迟值,包括:
基于所述收发控制电路传输的第一分频时钟信号,以及所述芯片管脚处理电路传输的第二分频时钟信号,确定第一延迟值;
基于所述数据采集电路传输的第一片选信号,以及所述芯片管脚处理电路传输的第二片选信号,确定第二延迟值;
对所述第一延迟值和所述第二延迟值加权求和,得到所述IO延迟值。
27.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现17至26任一的数据读取方法。
28.一种延迟测量电路,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现根据权利要求17至26任一所述的数据读取方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311402500.3A CN117407335A (zh) | 2023-10-26 | 2023-10-26 | Qspi控制器、芯片及数据读取方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311402500.3A CN117407335A (zh) | 2023-10-26 | 2023-10-26 | Qspi控制器、芯片及数据读取方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN117407335A true CN117407335A (zh) | 2024-01-16 |
Family
ID=89486719
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311402500.3A Pending CN117407335A (zh) | 2023-10-26 | 2023-10-26 | Qspi控制器、芯片及数据读取方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN117407335A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117909280A (zh) * | 2024-03-18 | 2024-04-19 | 苏州萨沙迈半导体有限公司 | Spi主机逻辑电路及spi主机 |
| WO2025212910A1 (en) * | 2024-04-03 | 2025-10-09 | Microchip Technology Incorporated | Method and apparatus for training spi controller for high-frequency operation |
-
2023
- 2023-10-26 CN CN202311402500.3A patent/CN117407335A/zh active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117909280A (zh) * | 2024-03-18 | 2024-04-19 | 苏州萨沙迈半导体有限公司 | Spi主机逻辑电路及spi主机 |
| CN117909280B (zh) * | 2024-03-18 | 2024-06-04 | 苏州萨沙迈半导体有限公司 | Spi主机逻辑电路及spi主机 |
| WO2025212910A1 (en) * | 2024-04-03 | 2025-10-09 | Microchip Technology Incorporated | Method and apparatus for training spi controller for high-frequency operation |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102328014B1 (ko) | 싱글 와이어 인터페이스를 포함하는 장치와 이를 포함하는 데이터 처리 시스템 | |
| US10496332B2 (en) | Data path training and timing signal compensation for non-volatile memory device interface | |
| CN117407335A (zh) | Qspi控制器、芯片及数据读取方法 | |
| CN105320490B (zh) | 用于异步fifo电路的方法和设备 | |
| JP3712471B2 (ja) | コンピュータシステム及び第1の回路と第2の回路との間でデータを転送するインタフェース回路 | |
| CN111832240B (zh) | Fifo数据传输方法及fifo存储装置 | |
| JP7467655B2 (ja) | 較正回路、メモリ及び較正方法 | |
| US11561923B2 (en) | Method for training multichannel data receiver timing | |
| KR100675009B1 (ko) | 데이터 지연 조절 회로 및 방법 | |
| EP1396786A1 (en) | Bridge circuit for use in retiming in a semiconductor integrated circuit | |
| US20130246831A1 (en) | Selection device, selection method and information processing device | |
| US11838398B2 (en) | Semiconductor device | |
| US20230162765A1 (en) | Data processing system, buffer circuit and method for operating buffer circuit | |
| CN117407346A (zh) | 一种车规级芯片外部flash的采样点调整系统及方法 | |
| TW202422334A (zh) | 資料傳輸裝置與跨時脈領域資料傳輸之方法 | |
| JP2011010178A (ja) | 通信装置 | |
| CN117420342B (zh) | 多通道采集方法、装置、系统、fpga及采样示波器 | |
| CN117290265B (zh) | 一种自适应调节同异步接口装置、方法和芯片 | |
| JP2020046800A (ja) | 半導体装置 | |
| US20240310414A1 (en) | Eye margin test method and electronic apparatus performing test operation based on the same | |
| US11200480B2 (en) | Counter readout circuit | |
| CN117198379B (zh) | 时序测试电路 | |
| CN119561810A (zh) | 信号校准装置及方法、显示驱动芯片、电子设备 | |
| JP4463295B2 (ja) | 半導体装置 | |
| Agrawal et al. | AXI Based Three 8-bit Parallel Input to One Serial Output Converter with Priority Management System and Asynchronous Clocks at Input and Output |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |