确定存储器访问时间的电路的制作方法

文档序号:13669824阅读:190来源:国知局
确定存储器访问时间的电路的制作方法

本公开总体上涉及存储器,并且在具体的实施例中涉及确定存储器访问时间的电路。

背景

在计算系统中,存储器等待时间或访问时间可以是从发出读或写数据的请求直至从存储器获取数据或将数据写入存储器中之间的时间。由此,访问时间可指示给定存储器可如何快速地提供或写入数据。访问时间是重要参数,并且短访问时间可允许计算系统中进行更主动的定时,这样可带来更快的速度和更好的性能。

可测试存储器,以确定其访问时间。在某些情况下,可将所确定的访问时间与阈值访问时间进行比较,以判定给定存储器是否可满足阈值访问时间。如果计算系统中的定时被设置成太具进攻性(例如,由于存储器访问时间的不正确确定),则因为存储器可能不能够向计算系统的其他元件足够快速地提供数据,所以会出现计算系统错误。由此,会需要确定和验证访问时间的有效、准确且简化的方法。



技术实现要素:

在实施例中,一种用于确定存储器访问时间的电路可以包括:多个存储元件,该多个存储元件被配置成用于在第一多个存储器位置中的每个存储器位置中存储该第一多个存储器位置中的另一个存储器位置的地址;地址取样电路,该地址取样电路耦合到该多个存储元件并且被配置成用于向该多个存储元件提供地址;以及控制器,该控制器耦合到该多个存储元件和该地址取样电路,该控制器被配置成用于基于判定是否出现读错误来控制该地址取样电路的操作。

附图说明

现在参考下面的说明并结合附图,以更完整地理解本实用新型及其优点,在附图中:

图1示出包括输入寄存器、存储器和输出寄存器的系统的框图;

图2示出了图1中示出的系统的简化时序图;

图3示出了图1中示出的系统中包括的存储器的简化框图;

图4示出了一种根据实施例的确定存储器访问时间的方法;

图5示出了根据实施例的包括多个触发器、存储器单元阵列和与多个触发器通信耦合的控制器的存储器的简化框图;

图6示出了根据实施例的图5中示出的存储器的存储器单元阵列中存储的数据的简化表示;

图7示意性地展示了根据实施例的存储器;

图8A和图8B示出了根据实施例的展示了一种确定图7中示出的存储器的访问时间的方法的流程图;

图9A展示了根据实施例的示出了在确定存储器的访问时间期间从存储器输出的读数据的简化时序图,该存储器中的所有读数据与存储器的地址空间兼容;

图9B展示了根据实施例的示出了在确定存储器的访问时间期间从存储器输出的读数据的简化时序图,该存储器中的所有读数据中的一个或多个部分不与存储器的地址空间兼容。

除非另外指出,在不同图中相应的数字和符号通常指代相应的部分。附图被绘制为清楚地展示实施例的相关方面而不一定按比例绘制。

具体实施方式

下面详细讨论各实施例的制造和使用。然而,应理解的是,在此所描述的各实施例可应用于各种各样的具体环境中。所讨论的具体的实施例仅说明用于制造且使用各实施例的具体方式,并且不应被解释在受限的范围中。

根据各实施例,提供了存储器和系统以及确定存储器的访问时间的方法。一些实施例可实现多个优点。实施例提供简化但准确且可靠的对存储器访问时间的确定,因为在确定过程中使用的是单个时钟源。由此,不需要依赖于不同时钟信号之间的相对时间延迟来确定访问时间,并且可通过仅仅增加单个时钟源的频率来研究访问时间的极限。实施例提供了嵌入存储器并且独立于外部逻辑的访问时间确定方式。由此,可在存储器处于应用或终端用户产品中时确定存储器的访问时间。实施例提供了一种为了判定是否出现存储器错误而避免必须以高频对存储器输出的数据进行取样的系统和方法。而是,在所描述的实施例中,可在有限状态机停止确定访问时间之后,对从存储器输出的数据进行取样和检查。

图1示出用于确定存储器访问时间的系统100的框图。如图1中所示,系统100包括输入寄存器102、存储器104和输出寄存器106。在一些实施例中,存储器104可以是随机存取存储器(RAM)、只读存储器(ROM)、相变存储器(PCM)、其组合等。系统100可以是常规存储器测试配置,在该配置中,通过外部测试设备来确定或验证存储器104的访问时间。外部测试设备可以包括输入寄存器102和输出寄存器106。由此,在图1中示出的系统100中,输入寄存器102和输出寄存器106可以是与存储器104分开或不同的模块。

如图1中所示,输入寄存器102、存储器104和输出寄存器106均连接到输入总线108。输入总线108可被包括在用于确定存储器104的访问时间的外部测试设备中。如图1的示例中所示,输入寄存器102从输入总线108接收存储器命令信息110。存储器命令信息110可包括地址焊盘块、待访问存储器104的一个或多个地址、用于写命令的信息、用于读命令的信息、其组合等。输入寄存器102还接收输入寄存器时钟信号ICLK,而存储器104接收存储器时钟信号MCLK,并且输出寄存器106接收输出寄存器时钟信号OCLK。如图1中描绘的,可使用输入总线108来提供时钟信号ICL、MCLK和OLCK。如图1中所示,输入寄存器102的输出(在图1中被指示为锁存存储器命令信息112)被提供作为存储器104的输入;存储器104的输出114被提供作为输出寄存器106的输入;并且输出寄存器106的输出116被提供到输出总线108。输出总线118可被包括在用于确定存储器104的访问时间的外部测试设备中。在随后的描述中,结合图2来描述系统100的操作。

图2示出了图1中示出的系统100的简化时序图200。在图2的示例中,假设输入总线108上的存储器命令信息110包括用于读命令以及包括待访问存储器104的地址的地址焊盘块的信息。在图1的示例中,待访问存储器104的地址被绘图描绘为A0、A1、A2等。另外,存储在地址A0、A1、A2等处的数据被分别绘图描绘为D0、D1、D2等。

参照图1和图2,输入寄存器102接收存储器命令信息110和输入寄存器时钟信号ICLK作为输入。响应于接收存储器命令信息110和输入寄存器时钟信号ICLK,输入寄存器102将存储器命令信息110锁存在输入寄存器时钟信号ICLK的上升沿处(例如,在输入寄存器102的建立时间之后)。被锁存的存储器命令信息被作为锁存存储器命令信息112提供到存储器104。

存储器104接收锁存存储器命令信息112和存储器时钟信号MCLK作为输入。在一些示例中,输入寄存器102的建立时间(在图2中指示为“T建立”)可以是或者可以代表或者可以关于输入寄存器时钟信号ICLK与存储器时钟信号之间的时间延迟。图3示出了根据示例的存储器104的简化框图。如图3中所示,存储器104可以包括多个触发器104-1和其中存储有数据的存储器单元(例如,也被称为“存储元件”)阵列104-2。存储器单元阵列104-2可以包括RAM单元阵列、ROM单元阵列、PCM单元阵列、其组合等。存储器单元阵列104-2可以包括多行,其中,每行包括多个存储器单元。多个存储器单元中的每个存储器单元可以包括被配置成用于存储数据的存储器元件。在存储器104是PCM存储器的实施例中,存储器104可以另外地包括组合逻辑104-0,如图3中所示。组合逻辑104-0可被配置成用于对锁存存储器命令信息112进行解码,以生成被顺序提供到多个触发器104-1的预解码存储器地址112-0。

存储器时钟信号MCLK和预解码存储器地址112-0可被提供到存储器104的多个触发器104-1,如图3中所示。存储器时钟信号MCLK的上升沿可以启动锁存存储器命令信息112的读命令。在锁存存储器命令信息112包括待访问存储器104的地址(例如,如图2中描绘的,地址A0、A1、A2等)的示例中,该多个触发器104-1可被配置成用于对预解码存储器地址112-0进行取样并且向存储器单元阵列104-2提供取样的预解码地址112-1。由此,该多个触发器104-1可被称为地址取样电路。在存储器104的地址中的每个地址是16位存储器地址的示例中,该多个触发器104-1可以包括被配置成用于对16位预解码存储器地址112-0进行取样的16个触发器。

每当从存储器104(例如,存储器104的存储器单元阵列104-2)读取到数据或者将数据写入其中时发生存储器访问。参照图3,取样的预解码地址112-1被提供到存储器单元阵列104-2,并且从存储器单元阵列104-2读取数据或者将数据写入其中。存储器104(例如,存储器单元阵列104-2)生成数据(例如,在读操作的情况下)或写入数据(例如,在写操作的情况下)所花费的时间量可被称为存储器104的访问时间(在图2中被指示为“T访问”)。如图2中所示,访问时间T访问可以是或者可以表示或者可以关于访问开始(例如,在存储器时钟信号MCLK的上升沿处)与有效数据可用于取样和读出的时间(例如,在图2中被示出为输出数据D0可用于取样和读出的时间)之间的时间。在一些实施例中,访问时间T访问可以在大约5纳秒至大约70纳秒之间。数据D0、D1和D2等被作为存储器输出114提供到输出寄存器106。

如图2的示例中所示,为了进行读操作,输出寄存器时钟信号OCLK的定时被配置成使得输出寄存器时钟信号OCLK的上升沿的出现时间尽可能接近存储器104完成读操作的时间。换句话讲,输出寄存器时钟信号OCLK可以与存储器时钟信号MCLK偏离访问时间T访问。用另一种方式声明,输出寄存器时钟信号OCLK的相应上升沿可与相应输出数据Di可用于取样和读出的时间对准,其中,i=0、1、2、3等。

响应于输出寄存器106接收到输出寄存器时钟信号OCLK和存储器输出114,输出寄存器106将读数据(例如,存储器输出114)锁存在输出寄存器时钟信号OCLK的上升沿处。锁存的读数据被输出寄存器106输出作为输出寄存器输出116,可使用输出总线118读出该输出寄存器输出。可从图2中观察到,倘若输出寄存器时钟信号OCLK偏离存储器时钟信号MCLK达不到访问时间T访问,则可通过输出寄存器106将不正确数据锁存到输出总线118上。数据在输出总线118上的错误锁存可表征存储器错误。

为了确定存储器104的访问时间T访问,输出寄存器时钟信号OCLK初始偏离存储器时钟信号MCLK达相对高的量。举例来说,初始偏移可被设置成在大约10纳秒至大约100纳秒的范围内。作为另一个示例,初始偏移可被设置成存储器时钟信号MCLK中的连续上升沿之间的时间(其可被称为存储器时钟信号MCLK的“周期”)的大约5%至大约50%之间。实质上,初始偏移可以是存储器时钟信号MCLK与输出寄存器时钟信号OCLK之间的延迟,该延迟大于预期访问时间或阈值访问时间。输出寄存器时钟信号OCLK与存储器时钟信号MCLK之间的时间延迟随后减小,使得输出寄存器时钟信号OCLK的上升沿在时间上移动,更接近存储器时钟信号MCLK的上升沿。输出寄存器时钟信号OCLK与存储器时钟信号MCLK之间的时间延迟逐渐减小,直到出现存储器错误。如以上提到的,出现存储器错误表征例如由于输出寄存器时钟信号OCLK和存储器时钟信号MCLK之间的偏移小于存储器104的访问时间T访问而导致的输出寄存器106锁存不正确数据。由此,存储器104的访问时间T访问可以被确定或估计为是避免存储器错误的输出寄存器时钟信号OCLK与存储器时钟信号MCLK之间的最小时间延迟。

为了进行读操作,当输出寄存器输出116提供到输出总线118上的数据生效时(例如,当没有存储器错误出现时),存储器命令信息110无法立即改变以开始另一个读操作。这是因为,存储器104需要一定时间量(被称为读恢复时间)来在后续访问存储器单元阵列104-2之前完成其内部操作。访问时间T访问和读恢复时间的总和有时被称为读周期时间(在图2中被指示为“T周期”),它可以是或者可以代表或者可以关于存储器时钟信号MCLK的周期。

如上所述,可使用存储器104外部的电路来确定存储器104的访问时间T访问。例如,可使用自动测试设备(ATE)或其中通过存储器104外部的电路或存储器104中不包括的电路来驱动存储器104的其他类型的设备来执行确定访问时间T访问的上述方法。外部电路可以包括接收存储器命令信息110或控制信号中的至少一个的寄存器(例如,输入寄存器102)。外部电路还可包括还可用于对来自存储器104的输出数据进行取样的数据寄存器(例如,输出寄存器106)。然而,使用外部电路来确定存储器104的访问时间T访问可造成若干优点。

首先,在终端用户产品中可不包括适于确定访问时间T访问的外部逻辑。因此,当存储器104在应用中或在终端用户产品中时确定、验证或表征访问时间T访问可以是可能或可行的。其次,如图2中所示,以与存储器时钟信号MCLK相当的频率将输出寄存器输出116提供到输出总线118上,并且以与存储器时钟信号MCLK的频率相当频率对输出总线118进行取样,例如,以判定是否已出现存储器错误。然而,随着存储器时钟信号MCLK频率因技术发展而增加,可能难以在所期望频率下对输出总线118进行取样。确定访问时间T访问的上述方法还依赖于在其间具有可控相移的时钟信号ICLK、MCLK、OCLK(例如,时钟信号MCLK与OCLK之间的时间延迟逐渐减小,直到开始出现存储器错误)。然而,会难以精确地控制时钟信号ICLK、MCLK、OCLK之间的相移,并且这会导致所确定的访问时间T访问的不确定性。

鉴于与系统100和确定访问时间T访问的相关方法相关联的缺点,可期望提供一种在不必依赖于不同时钟信号之间的相对时间延迟的情况下确定存储器访问时间的简化但准确且可靠的方法和系统。还可期望提供一种确定独立于外部逻辑的存储器的访问时间的方法和系统。还可能期望提供一种为了判定是否出现存储器错误而避免必须以高频对存储器输出的数据进行取样的确定存储器访问时间的方法和系统。

图4示出了一种根据实施例的确定存储器的访问时间T访问的方法400。可由给定存储器执行方法400,以确定该给定存储器的访问时间T访问。相比于以上针对图1至图3描述的方法,方法400在不必依赖于不同时钟信号之间的相对时间延迟的情况下确定给定存储器的访问时间T访问。方法400还确定独立于外部逻辑的给定存储器的访问时间T访问。方法400还通过为了判定是否出现存储器错误而避免必须以高频对存储器输出的数据进行取样来确定给定存储器的访问时间T访问

在随后的描述中,在图5和图6的辅助下解释方法400。具体地,图5示出了实施例的简化框图,其中,存储器500包括多个触发器104-1、存储器单元阵列104-2以及与多个触发器104-1通信耦合的控制器502。此外,图6示出了根据实施例的存储器500的存储器单元阵列104-2中存储的数据的简化表示。

如图4中所示,方法400包括在存储器的第一多个存储器位置中的每个存储器位置中存储该第一多个存储器位置中的另一个存储器位置的地址(在步骤402中)。在步骤402中,地址可被存储在图5中示出的存储器单元阵列104-2中。如图6中描绘的,存储器单元阵列104-2可被表示为布置为N行M列的存储器位置。存储器位置可被划分成两组,即,第一多个存储器位置601和第二多个存储器位置602。在图6的示例中,N个存储器位置被包括在该第一多个存储器位置601中,而N(M-1)个存储器位置被包括在该第二多个存储器位置602中。如图6中描绘的,包括在该第一多个存储器位置601中的存储器位置可不同于包括在该第二多个存储器位置602中的存储器位置。由此,存储器位置中的每个存储器位置可属于该第一多个存储器位置601或该第二多个存储器位置602,但并不属于这二者。举例来说,在图6中,列1的行1至N处的存储器位置被包括在该第一多个存储器位置601中(而不包括在该第二多个存储器位置602中),而列2至M的行1至N处的存储器位置被包括在该第二多个存储器位置602中(而不包括在该第一多个存储器位置601中)。

该第一多个存储器位置601中的每个存储器位置存储该第一多个存储器位置601中的另一个存储器位置的地址。换句话讲,从该第一多个存储器位置601读取的数据包括参考该第一多个存储器位置601中所包括的另一个存储器位置的存储器地址。举例来说,在图6中,列1行1处的存储器位置存储值0x00000010(例如,在十六进制数字系统中指示的),该值包括列1行2处的存储器位置的地址。例如,列1行2处的存储器位置的地址可被存储在值0x00000010的下半个字中。以类似方式,列1行2处的存储器位置存储值0x00000020,该值包括列1行3处的存储器位置的地址。例如,列1行3处的存储器位置的地址可被存储在值0x00000020的下半个字中。在图6的示例中,对于列1的行3至N处的存储器位置,以类似方式继续此步骤。最后,列1行N处的存储器位置存储值0x00000000,该值包括列1行1处的存储器位置的地址。例如,列1行1处的存储器位置的地址可被存储在值0x00000000的下半个字中。由此,基于存储在该第一多个存储器位置601中的数据,可观察到预定的一系列读操作。在图6的示例中,预定的一系列读操作包括按列1行1、接着是列1行2、接着是列1行3等等直到列1行N进行的读操作。预定的一系列读操作产生预定的一系列预期数据。在图6的示例中,预定的一系列预期数据是0x00000010(在列1、行1中),接着是0x00000020(在列1、行2中)等等,直到0x00000000(在列1、行N中)。

作为步骤402的结果,从该第一多个存储器位置601的存储器位置读取的数据的至少一部分可被用作后续读操作的地址。由于地址参考该第一多个存储器位置601的另一个存储器位置,因此后续读操作将再次从该第一多个存储器位置601中的另外存储器位置读取数据。从另外存储器位置读取的数据的一部分随后可被用作将从该第一多个存储器位置601中的又另一个存储器位置读取数据的又另一个读操作的地址。举例来说,在图6中,从列1行1处的存储器位置读取的值0x00000010的一部分(例如,下半个字)可用作将访问列1行2处的存储器位置的后续读操作的地址并且读取值0x00000020。进而,从列1行2处的存储器位置读取的值0x00000020的一部分(例如,下半个字)然后可用作将访问列1行3处的存储器位置的又另一个读操作的地址并且读取列1行3处的存储器位置中存储的值。同样地,从列1行N处的存储器位置读取的值0x00000000的一部分(例如,下半个字)然后可用作将访问列1行1处的存储器位置的又另一个读操作的地址并且读取值0x00000000。因此,一旦提供了初始地址,就可以执行从该第一多个存储器位置601连续读取数据,其中,来自每个读操作的数据的至少一部分用作下一个读操作的地址。

相比于该第一多个存储器位置601,在一些实施例中,该第二多个存储器位置602中的每个存储器位置存储不包括存储器单元阵列104-2的另一个存储器位置地址的数据。在此示例中,存储在该第二多个存储器位置602中的每个存储器位置中的值可不在存储器单元阵列104-2的存储器地址空间中,或者可没有参考存储器单元阵列104-2的存储器地址空间的一部分。替代性地或另外地,该第二多个存储器位置602可均存储包括受保护或禁用存储器块的地址(即,无法对其进行读或写的存储器500的一个或多个存储器位置)的值。在图6的示例中,该第二多个存储器位置602中的每个存储器位置存储值0xFFFFFFFF,值0xFFFFFFFF的下半个字或上半个字都不是存储器单元阵列104-2的存储器位置的地址。

返回参照图4,方法400继续从在存储器处接收的地址总线信号中读取第一地址,该第一地址是该第一多个存储器位置中的第一存储器位置的地址(在步骤404中)。参照图5和图6,在方法400的步骤404中,第一地址(其可以是该第一多个存储器位置601中的一个存储器位置的地址)可在地址总线信号HADDR上被提供到存储器500(例如,存储器500的多个触发器104-1)。说明性地,第一地址可以是列1行1处的存储器位置的地址(在这个示例中,其被称为“该第一多个存储器位置中的第一个存储器位置”)。实质上,访问并且读取来自存储器单元阵列104-2的数据的初始读操作可使用第一地址,并且这开始继续从存储器单元阵列104-2读取数据。如图5中所展示,该多个触发器104-1对来自地址总线信号HADDR的第一地址进行取样,并且将取样的第一地址提供到存储器单元阵列104-2作为待读取的第二地址(在图5中被指示为NEXT_ADDR)。

返回参照图4,方法400继续读取该第一多个存储器位置中的第一存储器位置中存储的数据(在步骤406中)。在方法400的这个步骤中,访问并且读取来自存储器单元阵列104-2的数据的初始读操作使用第一地址。从以上示例继续,在第一地址可以是列1行1处的存储器位置地址的情况下,在方法400的步骤406处,存储在列1行1处的存储器位置中的数据被访问和读取(例如,读取值0x00000010)。如图5中描绘的,从列1行1处的存储器位置读取的数据被输出作为读数据HRDATA,该读数据被反馈回控制器502并且还从存储器500输出。

返回参照图4,方法400继续判定读数据是否包括该第一多个存储器位置中的另外存储器位置的地址(例如,在步骤408的第一次迭代中)。参照图5和图6并且从以上的示例继续,在方法400的步骤408的这次迭代中,控制器502判定读数据HRDATA(例如,从列1行1处的存储器位置读取的值0x00000010)是否包括该第一多个存储器位置601中的另外存储器位置的地址,或者读数据HRDATA(例如,值0x00000010)是否是预定的一系列读操作中的预期数据(例如,以上关于图6所描述的)。在一些实施例中,诸如在图6的示例中,该第一多个存储器位置601中的另外存储器位置的地址可被存储在读数据HRDATA的下半个字(例如,值0x00000010的下半个字)中。在其他实施例中,该第一多个存储器位置601中的另外存储器位置的地址可被存储在读数据HRDATA的上半个字中。可通过控制器502来完成判定读数据HRDATA是否包括该第一多个存储器位置601中的另外存储器位置的地址。在一些实施例中,举例来说,通过使用诸如Verilog的硬件描述语言(HDL)初始地设计控制器502来实现控制器502的电路。控制器502的具体电路可至少部分地取决于用于设计控制器502的结构和性能的HDL。从以上示例继续,假设控制器502判定读数据HRDATA(例如,具有值0x00000010)是预定的一系列读操作中的预期数据,或者读数据HRDATA包括该第一多个存储器位置601中的另外存储器位置的地址(即,列1行2处的存储器位置的地址)。

返回参照图4,如果读数据HRDATA包括该第一多个存储器位置中的另外存储器位置的地址,或者如果读数据HRDATA是预定的一系列读操作中的预期数据,则方法400继续判定是否将对存储在该第一多个存储器位置中的另外存储器位置中的数据执行读操作(在步骤410中)。参照图5和图6并且从以上示例继续,在方法400的步骤410处,控制器502判定应该读取存储在列1行2处的存储器位置中的数据。如图5中所示,控制器502可通过监测控制器502的输入端处的第一控制信号CTRL_SIG1并且判定该第一控制信号CTRL_SIG1被设置成第一值还是第二值来对此进行确定。被设置成第一值(例如,二进制值1)的第一控制信号CTRL_SIG1可表征将对存储在该第一多个存储器位置601中的另外存储器位置中的数据执行读操作。另一方面,被设置成第二值(例如,二进制值0)的第一控制信号CTRL_SIG1可表征将不对存储在该第一多个存储器位置601中的另外存储器位置中的数据执行读操作。在一些实施例中,第一控制信号CTRL_SIG1可以是从属指定信号HSEL,该从属指定信号可以是当主机获得总线占用许可时(例如,当主机接收到高级微控制器总线架构(AMBA)读命令时)供主机用于指定目标从属的信号。在一些实施例中,诸如在图5的示例中,可通过对地址总线信号HADDR进行解码来生成第一控制信号CTRL_SIG1(例如,HSEL)。在存储器单元阵列104-2包括PCM阵列的实施例中,第一控制信号CTRL_SIG1(例如,HSEL)可以是提供到存储器单元阵列104-2的PCM输入信号。由此,存储器500可包括解码器504。虽然解码器504在图5中被示出为与控制器502分开且不同,但在一些其他实施例中,解码器504可被包括在控制器502内。从以上示例继续,假设控制器502确定将对存储在列1行2处的存储器位置中的数据执行读操作。

返回参照图4,如果将对存储在另外存储器位置中的数据执行读操作,则方法400继续读取存储在该第一多个存储器位置中的另外存储器位置中的数据(在步骤412中)。参照图5和图6并且从以上示例继续,在一些实施例中,在方法400的步骤412处,列1行2处的存储器位置的地址被控制器502经由第二控制信号CTRL_SIG2提供到多个触发器104-1。该多个触发器104-1对经由第二控制信号CTRL_SIG2提供的地址进行取样,并且将取样的地址作为待读取的下一个地址NEXT_ADDR提供到存储器单元阵列104-2。在一些实施例中,用于驱动该多个触发器104-1的时钟信号还被控制器502经由第二控制信号CTRL_SIG2提供到该多个触发器104-2。响应于接收到待读取的下一个地址NEXT_ADDR,读取存储在列1行2处的存储器位置中的数据(例如,值0x00000020,在这个示例中被称为“存储在该第一多个存储器位置中的另外存储器位置中的数据”)。从存储器500输出从列1行2处的存储器位置读取的数据,并且将读数据HRDATA的值更新成还被反馈回至控制器502的值0x00000020。

返回参照图4,在读取另外存储器位置中存储的数据(例如,如在步骤412中一样)之后,方法400继续判定读数据是否包括该第一多个存储器位置中的另一个存储器位置的地址(例如,在步骤408的第二次迭代中)。参照图5和图6并且从以上示例继续,在方法400的步骤408的此次迭代中,控制器502判定读数据HRDATA(例如,值0x00000020)是否包括该第一多个存储器位置601中的另一个存储器位置的地址。在一些实施例中,诸如在图6的示例中,该第一多个存储器位置601中的另一个存储器位置的地址可被存储在读数据HRDATA的下半个字中(例如,值0x00000020的下半个字)。在其他实施例中,该第一多个存储器位置601中的另一个存储器位置的地址可被存储在读数据HRDATA的上半个字中。可通过以上关于方法400的步骤408的第一次迭代所描述的方法,完成判定读数据HRDATA是否包括该第一多个存储器位置601中的另一个存储器位置的地址。从以上示例继续,假设控制器502确定读数据HRDATA(例如,具有值0x00000020)包括该第一多个存储器位置601中的另外存储器位置的地址(即,列1行3处的存储器位置的地址)。因此,方法400从步骤408过渡到步骤410。

返回参照图4,如果在步骤410中,控制器502确定将不对存储在另外存储器位置中的数据执行读操作,方法400继续禁用(或暂停)后续读操作并且保持存储器的输出(在步骤414中)。实质上,在步骤414处,没有从该多个存储器单元104-2中读取其他数据。控制器502可向该多个触发器104-1提供关于该多个触发器104-1将不进一步执行地址取样的指示(例如,经由第二控制信号CTRL_SIG2)。响应于接收到指示禁用或暂停后续读操作的第二控制信号CTRL_SIG2,该多个触发器104-1的输出(即,待读取的下一个地址NEXT_ADDR)和存储器单元阵列104-2的输出(即,读数据HRDATA)被保持在它们的电流值处并且不进行更新。从以上示例继续,假定读数据HRDATA具有值0x00000020,但是确定将不执行后续读操作,读数据HRDATA保持在值0x00000020处,并且不读取列1行3处的存储器位置中存储的数据。

返回参照图4,如果在步骤408中确定读数据HRDATA并不包括该第一多个存储器位置601中的另外存储器位置的地址,或者如果确定读数据HRDATA不是预定的一系列读操作中的预期数据,则还可以实现步骤414。举例来说,假定因为出现了存储器或读错误并且在步骤412中从该第二多个存储器位置602读取数据,所以读数据HRDATA具有值0xFFFFFFFF。在这个示例中,控制器502在步骤408中确定具有值0xFFFFFFFF的读数据HRDATA不包括该第一多个存储器位置601中的另一个存储器位置的地址,或者具有值0xFFFFFFFF的读数据HRDATA不是预定的一系列读操作中的预期数据,并且因此,方法400从步骤408过渡到步骤414,在步骤414中,禁用(或暂停)后续读操作并且将读数据HRDATA保持在值0xFFFFFFFF处。

返回参照图4,方法400从步骤414继续判定是否出现存储器错误(在步骤416中)。实质上,在方法400的此步骤处,控制器502判定是否因为并不需要执行后续读操作(例如,自步骤410后)或者因为读数据HRDATA不包括该第一多个存储器位置601中的另一个存储器位置的地址(例如,自步骤408后)而实现步骤414。这可通过控制器502读取读数据HRDATA并且判定读数据HRDATA是否在存储器单元阵列104-2的存储器地址空间中或者读数据HRDATA是否是预定的一系列读操作中的预期数据来完成。作为预定的一系列读操作中的预期数据或者在存储器单元阵列104-2的存储器地址空间中的读数据HRDATA可指示:在存储器500的访问时间T访问成功进行读操作并且有限状态机(FSM)停止执行方法400,因为确定将不执行后续读操作。另一方面,不在存储器单元阵列104-2的存储器地址空间中的读数据HRDATA可指示:在存储器500的访问时间T访问成功进行读操作并且FSM停止执行方法400,因为确定读数据HRDATA不包括该第一多个存储器位置601中的另一个存储器位置的地址。举例来说,如果确定具有值0x00000020的读数据HRDATA包括列1行3处的存储器位置的地址(例如,自步骤408后),但将不执行后续读操作(例如,自步骤410后),则读数据HRDATA具有值0x00000020。由于值0x00000020在存储器单元阵列104-2的存储器地址空间中,因此控制器502可确定在存储器500的访问时间T访问成功进行读操作并且FSM停止执行方法400,因为确定将不执行后续读操作。作为另一个示例,如果确定具有值0xFFFFFFFF的读数据HRDATA不包括第一多个存储器位置601中的另一个存储器位置的地址(例如,自步骤408后),则读数据HRDATA具有值0xFFFFFFFF。由于值0xFFFFFFFF不在存储器单元阵列104-2的存储器地址空间中,因此控制器502可确定在存储器500的访问时间T访问没有成功进行读操作并且FSM停止执行方法400,因为出现了存储器错误。

如上所述,方法400可用于确定存储器500的访问时间T访问。在确定访问时间T访问期间,存储器时钟信号MCLK被提供到存储器500,并且存储在该第一多个存储器位置601中的数据被连续从存储器500读取和输出,直到出现存储器错误(例如,从步骤408过渡到步骤414)或者直到存储器500接收到关于将不执行后续读操作的指示(例如,从步骤410过渡到步骤414)。要注意,读数据HRDATA的至少一部分被用作下一个读操作的地址。可以以存储器时钟信号MCLK的频率出现读操作,并且可增加存储器时钟信号MCLK的频率,直到遇到存储器错误。当所读取的数据不包括该第一多个存储器位置601的存储器位置的地址时,出现存储器错误。在一些实施例中,当出现读错误或存储器错误时,读取来自该第二多个存储器位置602的数据(即,没有存储器单元阵列104-2的存储器位置地址的数据)。在其他实施例中,当出现读错误或存储器错误时,可从该第一多个存储器位置601读取数据,但是读数据HRDATA可不同于预期将从后续一系列读操作中读取的预定数据。由此,存储器500的访问时间T访问可以是或者可以表示或者可以关于存储器时钟信号MCLK中的允许在没有存储器错误的情况下从该第一多个存储器位置601读取数据的最小周期。

要注意,在图5中示出的示例中,地址总线信号HADDR被提供到该多个触发器104-1。然而,在一些其他实施例中,诸如在(下述)图7中示出的示例中,地址总线信号HADDR被提供到控制器502(例如,控制器502的组件),并且控制器502可被配置成用于将地址总线信号HADDR上的读数据HRDATA的一部分或第一地址提供到该多个触发器104-1。

图7示出了根据实施例的控制器500的示意图。相比于图5中示出的简化框图,图7中示出的存储器500的实施例示出控制器502包括:第二多个触发器702、704;多个逻辑门706、708、710(例如,与门);多个复用器712、714;以及测试电路716,该测试电路716被配置成判定读数据HRDATA是否包括该第一多个存储器位置601中的另一个存储器位置的地址。如图7中所示,存储器500还包括解码器504,在一些实施例中,该解码器还可被包括在控制器502中。

存储器500接收地址总线信号HADDR和存储器时钟信号MCLK作为其输入。存储器500输出读数据HRDATA,在图7的示例中,假设读数据HRDATA是32位字。如图7中所示,解码器504接收并且解码地址总线信号HADDR,并且解码地址总线信号HADDR产生了执行以上关于图4至图6所描述的方法400所需的信息。具体地,解码地址总线信号HADDR可产生位ENAB_TACC_MEAS、Amba Read Cmd、HSEL和ADD_IS_DATAH,以及其他。在随后的描述中更详细地描述了这些位。

解码地址总线信号HADDR可产生可指示是否将执行方法400的位ENAB_TACC_MEAS。举例来说,当位ENAB_TACC_MEAS被设置成二进制值1时,控制器502可确定将执行方法400。然而,当位ENAB_TACC_MEAS被设置成二进制值0时,控制器502可确定将不执行方法400。

解码地址总线信号HADDR可产生可指示主机是否已接收到AMBA命令的位Amba Read Cmd。举例来说,当位Amba Read Cmd被设置成二进制值1时,那么控制器502可确定AMBA高性能总线(AHB)主机(下文中被称为“主机”)已经接收到AMBA读命令。然而,当位Amba Read Cmd被设置成二进制值0时,那么控制器502可确定主机尚未接收到AMBA读命令。

解码地址总线信号HADDR可产生信号HSEL,信号HSEL可以是PCM阵列的输入信号并且可指示主机是否已指定目标AHB从属(下文中被称为“从属”)。举例来说,当信号HSEL被设置成二进制值1时,那么控制器502可确定主机已经指定目标从属。然而,当信号HSEL被设置成二进制值0时,那么控制器502可确定主机尚未指定目标从属。

可由控制器502使用上述Amba Read Cmd和HSEL位来判定是否将执行读操作(例如,在方法400的步骤410中)。具体地,在一些实施例中,主机已接收到AMBA读命令并且主机已指定目标从属的指示可足以确定将执行后续读操作。

解码地址总线信号HADDR可产生位ADD_IS_DATAH(例如,测试寄存器位),该位ADD_IS_DATAH可指示地址是存储在读数据HRDATA的下半个字还是上半个字中。举例来说,当位ADD_IS_DATAH被设置成二进制值1时,那么控制器502可确定地址被存储在读数据HRDATA的上半个字中。然而,当位ADD_IS_DATAH被设置成二进制值0时,那么控制器502可确定地址被存储在读数据HRDATA的下半个字中。

如图7中所示,当开始AMBA读时(例如,当位Amba Read Cmd被设置成二进制值1时)以及当方法400将被执行时(例如,当位ENAB_TACC_MEAS被设置成二进制值1时),位MEAS_TACC_ON(其是该第二多个触发器702、704中的触发器702的输出)升高(例如,设置成二进制值1)。位MEAS_TACC_ON被提供到复用器712并且可被配置成用于向复用器712指示地址将被提供到该多个触发器104-1。举例来说,当位MEAS_TACC_ON被设置成二进制值1时(例如,当Amba Read Cmd和ENAB_TACC_MEAS都被设置成二进制值1时),复用器712可被配置成应用向该多个触发器104-1提供地址。另一方面,当位MEAS_TACC_ON被设置成二进制值0时(例如,当Amba Read Cmd或ENAB_TACC_MEAS被设置成二进制值0时),复用器712可被配置成向该多个触发器104-1提供地址。在一些实施例中,该多个触发器104-1对从复用器712接收到的地址进行取样。在图7中示出的实施例中,假设存储器单元阵列104-2中的存储器位置的地址中的每个地址是16位存储器地址。因此,图7中示出的该多个触发器104-1被描述为具有被配置成用于对16位存储器地址进行取样的16个触发器。

关于方法400,假设已执行方法的步骤402并且图7中的存储器单元阵列104-2将该第一多个存储器位置601中的另一个存储器位置的地址存储在存储器500的第一多个存储器位置601中的每个存储器位置中。方法400继续步骤404,在步骤404中,从地址总线信号HADDR[15:0]读取第一地址。如以上关于图4至图6所描述的,第一地址是该第一多个存储器位置601中的一个存储器位置的地址。如图7中所示,复用器712接收地址总线信号HADDR[15:0]以及读数据HRDATA[31:0]的一部分(在图7中被指示为“HRDATA[x:y]”)。由此,在HRDATA[x:y]和地址总线信号HADDR[15:0]之间选择进行读操作的地址。地址总线信号HADDR[15:0]用于第一次读(例如,方法400的第一次迭代),而HRDATA[x:y]用于第一读之后的读操作。由此,在方法400的步骤404中,复用器712选择地址总线信号HADDR[15:0]并且将其提供给该多个触发器104-1。该多个触发器104-1对地址总线信号HADDR[15:0]进行取样,并且将取样的第一地址提供到存储器单元阵列104-2。在图7中示出的示例中,当位READ_ENABLE被设置成二进制值1时,该多个触发器104-1被时钟信号MCLK_INT驱动,时钟信号MCLK_INT是存储器时钟信号MCLK的副本。在方法400的第一次迭代中,位READ_ENABLE可被设置成二进制值1,以允许进行初始读操作,使得可读取存储在第一地址处的数据。

方法400继续步骤406,在步骤406中,将存储在第一地址处的数据从存储器500读取并输出,作为读数据HRDATA[31:0]。如图7中所示,读数据HRDATA[31:0]也被反馈回至测试电路716,该测试电路被配置成用于执行方法400的步骤408,即,判定读数据HRDATA[31:0]是否包括该第一多个存储器位置601中的另一个存储器位置的地址。虽然在图7中未描绘,但位ADD_IS_DATAH(例如,测试寄存器位)也被提供到测试电路716,从而使得测试电路716可读取读数据HRDATA[31:0]的下半个字或上半个字,以判定读数据HRDATA[31:0]是否包括该第一多个存储器位置601中的另一个存储器位置的地址。如图7中所示,可用位ADD_CORR来指示此确定的结果,可响应于确定读数据HRDATA[31:0]包括该第一多个存储器位置601中的另一个存储器位置的地址,将位ADD_CORR设置成二进制值1。替代性地,可响应于确定读数据HRDATA[31:0]不包括该第一多个存储器位置601中的另一个存储器位置的地址,将位ADD_CORR设置成二进制值0。

如图7的示意图中示出的,当位ADD_CORR被设置成二进制值0时(即,当读数据HRDATA[31:0]不包括该第一多个存储器位置601中的另一个存储器位置的地址时),逻辑门706输出二进制值0。因此,位READ_ENABLE被设置成二进制值0。当位READ_ENABLE被设置成二进制0时,逻辑门710的输出(例如,时钟信号MCLK_INT)也被设置成二进制值0,并且该多个触发器104-1没有被驱动成对其输入端处的地址进行取样或者将取样的地址提供到存储器单元阵列104-2。由此,禁用后续读操作并且读数据HRDATA[31:0]保持在其当前值处。可通过从方法400的步骤408过渡到步骤414来识别这一系列事件,在步骤414中,禁用后续读操作并且将存储器的输出保持在其当前值处,因为读数据不包括该第一多个存储器位置601的另外存储器位置的地址。

然而,如图7的示意图中所示,当位ADD_CORR被设置成二进制值1时(即,当读数据HRDATA[31:0]包括该第一多个存储器位置601中的另一个存储器位置的地址时),只要从属指定信号HSEL和位Amba Read Cmd均被设置成二进制值1,位READ_ENABLE就也被设置成二进制值1。当从属指定信号HSEL和位Amba Read Cmd均被设置成二进制值1时,这可指示:主机已接收到AMBA读命令并且主机已指定目标从属,并因此将执行读操作。另一方面,当从属指定信号HSEL或位Amba Read Cmd均被设置成二进制值0时,这可指示:将不执行读操作。即使当读数据包括该第一多个存储器位置601中的另外存储器位置的地址时,也可通过从方法400的步骤408过渡到步骤410来识别这一系列事件,在步骤410中,判定是否将执行后续读操作。

当所有位ADD_CORR、HSEL和Amba Read Cmd都被设置成二进制值1时,READ_ENABLE也被设置成二进制值1。当位READ_ENABLE被设置成二进制值1时,该多个触发器104-1被时钟信号MCLK_INT驱动,该时钟信号MCLK_INT是存储器时钟信号MCLK的副本。由此,该多个触发器104-1可对其输入端处提供的地址进行取样,并且将取样的地址提供到存储器单元阵列104-2,其进而从存储器500读取存储在取样地址处的数据并且输出读数据HRDATA[31:0]。可通过从方法400的步骤410过渡到步骤412来识别这一系列事件,在步骤412中,读取存储在该第一多个存储器位置601中的另外存储器位置中的数据。

如图7中所示,复用器712在其输入端处接收第一地址HADDR[15:0]和读数据HRDATA[x:y]的一部分。复用器712进而向该多个触发器104-1提供第一地址HADDR[15:0]或读数据HRDATA[x:y]的一部分。如图7中所展示的,读数据HRDATA[x:y]的一部分被接收位ADD_IS_DATAH的复用器714提供到复用器712。位ADD_IS_DATAH指示地址是被存储在读数据HRDATA[31:0]的下半个字还是上半个字中。如果位ADD_IS_DATAH被设置成二进制值1,则这指示地址被存储在读数据HRDATA[31:0]的上半个字中,并且复用器714将HRDATA[31:16]提供到复用器712。另一方面,如果位ADD_IS_DATAH被设置成二进制值0,则这指示地址被存储在读数据HRDATA[31:0]的下半个字中,并且复用器714将HRDATA[15:0]提供到复用器712。由此,HRDATA[x:y]当位ADD_IS_DATAH被设置成二进制值0时可以是HRDATA[15:0],或者当位ADD_IS_DATAH被设置成二进制值1时可以是HRDATA[31:16]。

返回参照图7,即使当位ADD_CORR被设置成二进制值1时(即,当读数据HRDATA[31:0]包括该第一多个存储器位置601中的另一个存储器位置的地址时),如果从属指定信号HSEL或位Amba Read Cmd均被设置成二进制值0,则位READ_ENABLE也被设置成二进制值0。在这种情况下,时钟信号MCLK_INT也被设置成二进制值0,并且该多个触发器104-1没有被驱动成对其输入端处的地址进行取样或者将取样的地址提供到存储器单元阵列104-2。由此,禁用后续读操作并且读数据HRDATA[31:0]保持在其当前值处。可通过从方法400的步骤410过渡到步骤414来识别这一系列事件,在步骤414中,禁用后续读操作并且将存储器的输出保持在其当前值处。

一旦禁用后续读操作并且将存储器500的输出(例如,读数据HRDATA)保持在其当前值处,控制器502(例如,测试电路716)就可判定是否出现了存储器错误。这可通过测试电路716读取读数据HRDATA[31:0]的值并且判定它是否是或包括与存储器500的存储器地址空间兼容的地址来完成。响应于确定读数据HRDATA[31:0]的值与存储器500的存储器地址空间不兼容,可得到结论,因为出现了存储器错误,所以在存储器500的访问时间T访问没有成功进行读操作并且停止访问时间T访问的确定。然而,响应于确定与存储器500的存储器地址空间不兼容,可得到结论,因为没有执行后续读操作,所以在存储器500的访问时间T访问成功进行读操作并且停止访问时间T访问的确定。在一些其他实施例中,测试电路716可读取读数据HRDATA[31:0]的值并且判定该值是否等于预定的一系列读操作中的预期数据。可通过以下步骤来确定预定的一系列读操作中的预期数据:确定自读操作开始起已经经过的时钟周期C的数量;以及将读数据HRDATA[31:0]与存储在该第一多个存储器位置601中内置的预定的一系列读操作中的第C个步骤中的数据进行比较。

图8A和图8B示出了根据实施例的展示了一种确定图7中示出的存储器500的访问时间T访问的方法800的流程图。实质上,当存储器500执行方法800(类似于方法400)时,简单逻辑自动启动并且使用读数据HRDATA[31:0]的一部分(例如,HRDATA[31:0]的半个字)作为用于下一次读取的地址来连续地读取存储器500。在每个时钟周期处,使用从存储器单元阵列104-2读取的数据HRDATA[31:0]的一部分作为下一个地址,自动地开始新一次读取。每当读操作提供与存储器500的存储器地址空间不兼容的数据HRDATA[31:0]时,方法800自动停止。如果另一方面数据HRDATA[31:0]包括存储器500的存储器地址空间中的地址,则方法800继续进行下一个读操作,除非信号HSEL指示将不执行读操作(在这种情况下,方法800停止)。

如图8A中所示,方法800包括使存储器500能够确定其访问时间T访问,这可通过将ENAB_TACC_MEAS位设置成二进制值1(在步骤802中)来完成。如以上关于图7所描述的,ENAB_TACC_MEAS位可被提供到地址总线信号HADDR上。方法800还包括接收地址总线信号HADDR上的AMBA读命令(在步骤804中)。响应于接收到AMRA读命令并且将ENAB_TACC_MEAS位设置成二进制值1,使得能够确定访问时间T访问,并且通过从存储器单元阵列104-2处的并行高级高性能总线(AHB)接口进行读取而开始确定访问时间T访问。方法800继续对地址总线信号HADDR进行取样(在步骤806中),这可通过方法400中的步骤404来识别。之后,在存储器时钟信号MCLK的上升沿处读取从地址总线信号HADDR取样的地址处存储的数据(在步骤808中)。可通过方法400中的步骤406来识别步骤808的第一次迭代。

读数据被输出为HRDATA[31:0],并且在方法800的步骤810中,控制器502判定读数据是否包括存储器单元阵列104-2的存储器地址空间中的地址。根据位ADD_IS_DATAH的值,读数据HRDATA[31:0]的下半个字或上半个字被读取以判定读数据是否包括存储器单元阵列104-2的存储器地址空间中的地址。可通过方法400中的步骤408来识别方法800的步骤810。

如果读数据HRDATA[31:0]不包括存储器单元阵列104-2的存储器地址空间中的地址,则方法800从步骤810前进至步骤812,在步骤812中,FSM停止执行方法800。可通过方法400中的步骤414来识别方法800的步骤812。另一方面,如果读数据HRDATA[31:0]包括存储器单元阵列104-2的存储器地址空间中的地址,则方法800从步骤810前进至步骤814。在步骤814处,对信号HSEL进行取样,以判定是否允许进行连续读取。可通过方法400中的步骤410来识别方法800的步骤814。

如果信号HSEL被设置成二进制值1,则根据位ADD_IS_DATAH的值,将待取样的下一个地址设置成读数据HRDATA[31:0]的下半个字或上半个字(在步骤816中),并且在存储器时钟信号MCLK的上升沿处读取待取样的下一个地址处存储的数据(在步骤808中)。在一些实施例中,可通过用待取样的下一个地址来更新存储器地址寄存器来实现步骤816。可通过方法400中的步骤412来识别步骤816和步骤808的进一步迭代的组合。另一方面,如果信号HSEL被设置成二进制值0,则方法800从步骤814前进至步骤812,在步骤812中,FSM停止执行方法800。

现在,参照图8B,方法800从步骤812前进至步骤818、820、822和824,这些步骤可全体地用方法400中的步骤416来识别。在步骤810和820中,读数据HRDATA[31:0]被读取,以判定它是否存储器单元阵列104-2的存储器地址空间中的地址或者它是否是预定的一系列读操作中的预期数据。如果读数据HRDATA[31:0]包括存储器单元阵列104-2的存储器地址空间中的地址,或者如果读数据HRDATA[31:0]是预定的一系列读操作中的预期数据,则因为信号HSEL被设置成二进制值0,所以(例如,在步骤822中)确定在存储器500的访问时间T访问成功进行读操作并且FSM停止执行方法800。另一方面,如果读数据HRDATA[31:0]不包括存储器单元阵列104-2的存储器地址空间中的地址,或者如果读数据HRDATA[31:0]不是预定的一系列读操作中的预期数据,则因为出现了存储器错误,所以(例如,在步骤824中)确定在存储器500的访问时间T访问没有成功进行读操作并且FSM停止执行方法800。

图9A展示了简化时序图900,该简化时序图示出了在确定存储器500的访问时间T访问期间从存储器500输出的读数据HRDATA[31:0],其中,所有读数据HRDATA[31:0]与存储器单元阵列104-2的存储器地址空间相兼容。在图9A的示例中,因HSEL位被设置成二进制值0(在图9A中被指示为过渡902),停止确定访问时间T访问

如图9A中所示,在地址总线信号HADDR上提供初始地址ADD0。可用发起对存储器500进行连续读取的地址总线信号HADDR[15:0]上的第一地址来识别初始地址ADD0,如以上关于方法400和800所描述的。响应于信号HSEL被设置成二进制值1,执行方法800(或等同地,方法400),在该方法中,从地址总线信号HADDR读取第一地址ADD0并且存储在存储器单元阵列104-2的第一地址ADD0处的数据D0被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D0的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D0。

之后,存储在D0中包含的地址处的数据D1被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D1的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D1。

之后,存储在D1中包含的地址处的数据D2被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D2的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D2。

之后,存储在D2中包含的地址处的数据D3被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D3的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D3。

之后,存储在D3中包含的地址处的数据D4被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D4的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D4。

之后,存储在D4中包含的地址处的数据D5被从存储器500读取并且被输出为HRDATA[31:0]出。控制器502(例如,测试电路716)确定具有值D5的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D5。

之后,存储在D5中包含的地址处的数据D6被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D6的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。然而,由于在进行了此确定之后信号HSEL被设置成二进制0,因此不执行后续读操作并且读数据HRDATA[31:0]将其值保持在其最新输出处(即,D6)。在图9A中示出的示例中,待取样的下一个地址NEXT_ADDR[15:0]也保持在其最新输出D5处。

图9B展示了简化时序图904,该简化时序图示出了在确定存储器500的访问时间T访问期间从存储器500输出的读数据HRDATA[31:0],其中,读数据HRDATA[31:0]与存储器单元阵列104-2的存储器地址空间不兼容。在图9B的示例中,即使HSEL输入引脚(例如,通向PCM阵列)被设置成二进制值1,因为读数据HRDATA[31:0]与存储器单元阵列104-2的存储器地址空间不兼容,所以停止确定访问时间T访问

如图9B中所示,在地址总线信号HADDR上提供初始地址ADD0。响应于信号HSEL被设置成二进制值1,执行方法800(或等同地,方法400),在该方法中,从地址总线信号HADDR读取第一地址ADD0并且存储在第一地址ADD0处的数据D0被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D0的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D0。

之后,存储在D0中包含的地址处的数据D1被从存储器500读取并且被输出为HRDATA[31:0]。控制器502(例如,测试电路716)确定具有值D1的读数据HRDATA[31:0]包括与存储器单元阵列104-2的存储器地址空间兼容的地址。此外,由于在进行了此确定之后信号HSEL仍被设置成二进制1,因此执行后续读操作并且待取样的下一个地址NEXT_ADDR[15:0]被设置成D1。

之后,存储在除了D1外的地址处的错误数据D错误被从存储器500读取并且被输出为HRDATA[31:0]。这可能是由于存储器错误或读错误而发生的,该存储器错误或读错误当错误数据D错误与存储器单元阵列104-2的存储器地址空间不兼容时,或者在D错误不是预定的一系列读操作中的预期数据的情况下出现。控制器502(例如,测试电路716)确定具有值D错误的读数据HRDATA[31:0]不包括与存储器单元阵列104-2的存储器地址空间兼容的地址或者D错误不是预定的一系列读操作中的预期数据。因此,即使在进行了此确定之后信号HSEL仍被设置成二进制1,也不执行后续读操作(由于存储器错误)并且读数据HRDATA[31:0]将其值保持在其最新输出处,即,D错误。在图9B中示出的示例中,待取样的下一个地址NEXT_ADDR[15:0]保持设置在其最新输出D1处。

鉴于以上关于图9A和图9B给出的描述,可发现,在确定访问时间T访问期间,存储器时钟信号MCLK被提供到存储器500,并且存储在该第一多个存储器位置601中的数据被从存储器500连续地读取和输出,直到出现存储器错误或者直到存储器500接收到关于将不执行后续读操作的指示(例如,通过将信号HSEL设置成二进制值0)。从图9A和图9B中注意到,可以以在存储器时钟信号MCLK的频率出现产生读数据HRDATA[31:0]的读操作。由此,可增加存储器时钟信号MCLK的频率,直到遇到存储器错误。存储器500的访问时间T访问可以是或者可以表示或者可以关于存储器时钟信号MCLK中的允许在没有存储器错误的情况下(例如,在没有与正读取的存储器单元阵列104-2的存储器地址空间不兼容的错误数据D错误的情况下)从该第一多个存储器位置601读取数据的最小周期。

相比于确定存储器的访问时间T访问的传统方法(例如,关于图1至图3描述的方法),以上关于图4、图5、图6、图7、图8A、图8B、图9A和图9B描述的方法和电路提供简化但准确且可靠的对存储器访问时间T访问的确定。具体地,以上关于图4、图5、图6、图7、图8A、图8B、图9A和图9B所描述的方法和电路示出:在确定过程中使用单个时钟源(即,存储器时钟信号MCLK)。由此,不需要依赖于不同时钟信号之间的相对时间延迟。可通过仅仅增大单个时钟源(即,存储器时钟信号MCLK)的频率并且判定是否出现存储器错误来研究访问时间T访问的极限。

另外,以上关于图4、图5、图6、图7、图8A、图8B、图9A和图9B所描述的方法和电路提供嵌入存储器中并且独立于外部逻辑的确定访问时间T访问的方式。例如,地址总线信号HADDR和存储器时钟信号MCLK只是提供到存储器500的外部信号,在存储器内生成执行方法400和800所需的所有其他信号。由此,当存储器在应用中或者在终端用户产品中时,可能可以表征存储器的访问时间T访问

更进一步地,方法400和800具有基于出现存储器错误或指示将不执行后续读操作的停止标准。由此,相比于确定访问时间的系统100和相关方法,方法400和800不需要以与存储器时钟信号MCLK的频率相当的频率对读数据HRDATA进行取样。而是,可对从存储器输出的数据进行取样,并且在执行方法400和800结束时检查数据。

在实施例中,一种方法可包括:在存储器的第一多个存储器位置中的每个存储器位置中存储该第一多个存储器位置中的另一个存储器位置的地址;从在该存储器处接收的总线信号中读取该第一多个存储器位置中的第一存储器位置的地址;读取存储在该第一多个存储器位置中的该第一存储器位置中的数据;以及使用该读取的数据来判定是否出现了读错误。

在实施例中,一种方法可以包括:接收关于将确定存储器的访问时间的指示;响应于该存储器接收到读命令,从该存储器处接收的总线信号中取样第一地址,该第一地址是第一多个存储器位置中的第一存储器位置的地址;以及读取存储在该第一多个存储器位置中的该第一存储器位置处的数据。该方法可以进一步包括:判定该读取的数据是否包括正确数据;响应于确定该读取的数据包括该正确数据而判定是否将执行后续读操作;以及响应于确定将执行该后续读操作而读取存储在另外存储器位置的地址处的数据。

在实施例中,一种电路可以包括:多个存储元件,该多个存储元件被配置成用于在第一多个存储器位置中的每个存储器位置中存储该第一多个存储器位置中的另一个存储器位置的地址;地址取样电路,该地址取样电路耦合到该多个存储元件并且被配置成用于向该多个存储元件提供地址;以及控制器,该控制器耦合到该多个存储元件和该地址取样电路,该控制器被配置成用于基于判定是否出现读错误来控制该地址取样电路的操作。

本领域技术人员将进一步理解的是,结合在此所公开的实施例描述的各示意性逻辑块、模块、电路、和算法可以被实现为电子硬件、存储在存储器中或另一计算机可读介质中并被处理器或其他处理设备执行的指令、或两者的组合。在此所描述的设备和处理系统可以用于任何电路、硬件部件、集成电路(IC)、或IC芯片(作为示例)。在此所公开的存储器可以是任何类型或尺寸的存储器并且可以被配置成用于存储任何类型的期望信息。为了清楚地展示这种可交换性,上文已经总体上就各示意性部件、块、模块、电路、和步骤的功能对其进行了描述。如何实现这种功能取决于具体应用、设计选择、和/或对总体系统施加的设计限制。技术人员可以对每个具体应用以不同方式实现所描述的功能,但此类实现决策不应当被理解为造成背离本实用新型的范围。

各示意性逻辑块、模块、以及结合在此所公开实施例描述的电路可以用以下各项实现或执行:处理器、数字信号处理器(DSP)、和专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分离式门或晶体管逻辑、分离式硬件部件、或其被设计成用于执行在此所描述的功能的任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、一个或多个微处理器结合DSP内核、或任何其他这种配置。

在此所公开的实施例可以用硬件和用存储在硬件中的指令具体化,并且可以例如存在于随机访问存储器(RAM)、闪存存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移除磁盘、CD-ROM、或本领域中已知的任何其他形式的计算机可读介质。示例性存储介质耦合至存储器,从而使得处理器可以从该存储介质读取信息和向其写入信息。在替代方案中,该存储介质对处理器可以是完整的。处理器和存储介质可以存在于ASIC中。

虽然已经参考说明性实施例描述了本实用新型,但是本说明书并非旨在以限制性意义被解释。本领域的技术人员通过参考本说明书将明白说明性实施例的各种修改和组合以及本实用新型的其他实施例。因此,旨在所附权利要求书包括任何此类修改或实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1