一种快速检测存储器的方法及装置转让专利

申请号 : CN201010585952.6

文献号 : CN102486938A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李丹温晓辉刘志红

申请人 : 北大方正集团有限公司北京大学北京北大方正电子有限公司

摘要 :

本发明提供一种快速检测存储器的方法,包括:配置写入存储器地址的数据,以使这些数据中的至少部分数据遍历存储器的至少部分数据位来检测这些数据位中的每个数据位的正确性;遍历所有存储器地址进行读写检测;判断写入的数据是否遍历完所有数据位,如果没有遍历完所有数据位,则重复执行以下步骤,直到遍历完所有数据位为止:配置从存储器首地址开始重新写入存储器地址的数据,以使这些数据遍历还未检测到的数据位来检测这些数据位中的每个数据位的正确性;遍历重新写入数据的存储器地址进行读写检测。相应地,提供一种快速检测存储器的装置。本发明可快速地对存储器的地址线和数据线进行并行检测,实现方法简单,不增加系统的复杂度。

权利要求 :

1.一种快速检测存储器的方法,包括以下步骤:

配置写入存储器地址的数据,以使这些数据中的至少部分数据遍历存储器的至少部分数据位来检测这些数据位中的每个数据位的正确性;遍历所有存储器地址以对每个存储器地址进行读写检测;

判断写入的数据是否遍历完所有数据位,如果写入的数据没有遍历完所有数据位,则重复执行以下步骤,直到遍历完所有数据位为止:配置从存储器首地址开始重新写入存储器地址的数据,以使这些数据遍历还未检测到的数据位来检测这些数据位中的每个数据位的正确性;遍历重新写入数据的存储器地址以对这些存储器地址中的每个存储器地址进行读写检测。

2.根据权利要求1所述的方法,其特征在于,在遍历存储器地址和数据位之前,根据存储器的地址位数和数据位数预先配置好写入存储器地址的所有数据。

3.根据权利要求1所述的方法,其特征在于,所述读写检测包括以下步骤:遍历将写入数据的存储器地址,写入数据;

遍历写入数据的存储器地址,读取数据,并将读取的数据与写入的数据进行比较;

如果从存储器地址读取的数据与写入该存储器地址的数据相同,则判断与该存储器地址相应的地址线和与该数据所检测的数据位相应的数据线工作正常,否则根据该存储器地址和/或该数据所检测的数据位判断相应的地址线和/或数据线工作异常。

4.根据权利要求3所述的方法,其特征在于,

监测读数据和写数据是否遍历完所有存储器地址和所有数据位,并根据监测结果来配置写入存储器地址的数据、写入数据、读取数据和将读取的数据与写入的数据进行比较。

5.根据权利要求3所述的方法,其特征在于,

逐个存储器地址地写入数据、读取数据和将读取的数据与写入的数据进行比较。

6.根据权利要求3所述的方法,其特征在于,

在遍历所有存储器地址之前,配置写入存储器地址的数据为该存储器地址本身;在遍历所有存储器地址时,在从写入数据的存储器地址读取数据之后,当存储器的数据位数不多于存储器的地址位数时,将读取的数据与该存储器地址的低m位进行比较,其中,m为存储器的数据位数;当存储器的数据位数多于存储器的地址位数时,直接将读取的数据与该存储器地址进行比较;

在遍历完所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置重新写入存储器地址的数据为该存储器地址左移n位的值,其中,n为存储器的地址位数;在从重新写入数据的存储器地址读取数据之后,将读取的数据与该存储器地址左移n位的值进行比较。

7.根据权利要求6所述的方法,其特征在于,

分别设置写数据遍历完所有存储器地址的标志位和写数据遍历完所有数据位的标志位来表示写数据是否遍历完所有存储器地址和写数据是否遍历完所有数据位;

当写数据遍历完所有存储器地址的标志位表示写数据没有遍历完所有存储器地址时,配置写入存储器地址的数据为该存储器地址本身;在从存储器地址读取数据之后,如果存储器的数据位数不多于存储器的地址位数,则将读取的数据与该存储器地址的低m位进行比较;如果存储器的数据位数多于存储器的地址位数,则直接将读取的数据与该存储器地址进行比较;

当写数据遍历完所有存储器地址的标志位表示写数据已经遍历完所有存储器地址时,配置写入存储器地址的数据为该存储器地址左右n位的值;当写数据遍历完所有数据位的标志位表示写数据已经遍历完所有数据位时,将从存储器地址读取的数据与该存储器地址左移n位的值进行比较。

8.根据权利要求1所述的方法,其特征在于,

在配置写入存储器地址数据时,配置存储器每次读写数据的长度。

9.根据权利要求8所述的方法,其特征在于,

根据存储器的容量大小和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有存储器地址;

根据存储器的容量大小、数据位数和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有数据位。

10.一种快速检测存储器的装置,包括:

配置单元,其用于在遍历所有存储器地址之前,配置写入存储器地址的数据,以使这些数据中的至少部分数据遍历存储器的至少部分数据位来检测这些数据位中的每个数据位的正确性;在遍历所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置从存储器首地址开始重新写入存储器地址的数据,以使这些数据遍历还未检测到的数据位来检测这些数据位中的每个数据位的正确性;

写数据单元,其用于根据配置单元配置的数据遍历将写入数据的存储器地址将配置的数据写入存储器地址;

读数据单元,其用于遍历写入数据的存储器地址从存储器地址读取数据;

比较单元,其用于将读数据单元从存储器地址读取的数据与写数据单元写入该存储器地址的数据进行比较,如果读取的数据与写入的数据相同,则判断与该存储器地址相应的地址线和与该数据所检测的数据位相应的数据线工作正常,否则根据该存储器地址和/或该数据所检测的数据位判断相应的地址线和/或数据线工作异常。

11.根据权利要求10所述的装置,其特征在于,配置单元根据存储器的地址位数和数据位数预先配置好写入存储器地址的所有数据。

12.根据权利要求10所述的装置,其特征在于,还包括监测单元,其用于监测读数据和写数据是否遍历完所有存储器地址和所有数据位,配置单元、写数据单元、读数据单元和比较单元分别根据监测单元的监测结果来配置写入存储器地址的数据、写入数据、读取数据和将读取的数据与写入的数据进行比较。

13.根据权利要求10所述的装置,其特征在于,

写数据单元、读数据单元和比较单元逐个存储器地址地写入数据、读取数据和将读取的数据与写入的数据进行比较。

14.根据权利要求10所述的装置,其特征在于,所述配置单元执行以下配置操作:在遍历所有存储器地址之前,配置写入存储器地址的数据为该存储器地址本身;在遍历完所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置重新写入存储器地址的数据为该存储器地址左移n位的值,其中,n为存储器的地址位数。

15.根据权利要求14所述的装置,其特征在于,所述比较单元执行以下比较操作:在遍历所有存储器地址时,在从写入数据的存储器地址读取数据之后,当存储器的数据位数不多于存储器的地址位数时,将读取的数据与该存储器地址的低m位进行比较,其中,m为存储器的数据位数;当存储器的数据位数多于存储器的地址位数时,直接将读取的数据与该存储器地址进行比较;

在从重新写入数据的存储器地址读取数据之后,将读取的数据与该存储器地址左移n位的值进行比较。

16.根据权利要求14所述的装置,其特征在于,还包括监测单元,其用于监测写数据和读数据是否遍历完所有存储器地址和数据位,并分别设置写数据遍历完所有存储器地址的标志位和写数据遍历完所有数据位的标志位来表示写数据是否遍历完所有存储器地址和写数据是否遍历完所有数据位,当从监测单元接收的写数据遍历完所有存储器地址的标志位表示写数据没有遍历完所有存储器地址时,配置单元配置写入存储器地址的数据为该存储器地址本身;在读取单元从存储器地址读取数据之后,如果存储器的数据位数不多于存储器的地址位数,则比较单元将读取的数据与该存储器地址的低m位进行比较;如果存储器的数据位数多于存储器的地址位数,则比较单元直接将读取的数据与该存储器地址进行比较;

当从监测单元接收的写数据遍历完所有存储器地址的标志位表示写数据已经遍历完所有存储器地址时,配置单元配置写入存储器地址的数据为该存储器地址左右n位的值;

当写数据遍历完所有数据位的标志位表示写数据已经遍历完所有数据位时,比较单元将从存储器地址读取的数据与该存储器地址左移n位的值进行比较。

17.根据权利要求10所述的装置,其特征在于,

配置单元在配置写入存储器地址数据时,配置存储器每次读写数据的长度。

18.根据权利要求17所述的装置,其特征在于,

监测单元根据存储器的容量大小和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有存储器地址;根据存储器的容量大小、数据位数和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有数据位。

说明书 :

一种快速检测存储器的方法及装置

技术领域

[0001] 本发明涉及信息存储技术领域,尤其涉及一种快速检测存储器的方法及装置。

背景技术

[0002] 存储器作为记忆设备在各种数据控制系统中得到了广泛使用,其稳定性和可靠性直接影响到整个控制系统的性能。比如,在高速传输数据的控制系统中,为了保证数据的实时性,需要高速传输大量的数据,因此,在该控制系统中需要使用大容量的存储器对数据进行缓存,此时,存储器的读写速度和存储器的带宽利用率直接影响到整个系统的传输速度,而存储器能否稳定可靠地工作更是将影响到整个系统的可操作性和稳定性。因此,在初次使用存储器时,需要检测存储器器件本身的正确性和焊接的准确性,并且在每次系统正常工作之前,需要检测系统所使用的存储器是否能正常工作。当检测存储器能够正常工作之后,再启动整个系统工作,从而保证使用该存储器的系统的可靠性和正确性。
[0003] 目前提出了一些存储器检测技术,其中部分检测技术的基本思路是首先将数据写入存储器中,然后再从存储器读回数据,并将写入的数据和读回的数据进行比较,从而判断存储器读写是否正确。比如,在申请号为00115308.0的中国专利“随机存储器的自动检测方法及其检测电路”提出的检测方法中,通过适当地配置测试数据和安排测试数据写入和读出时序来对每个测试数据进行逐个测试,从而实现对数据线和地址线的高效率检测;在申请号为200710073427.4的中国专利“一种存储器检测方法”提出的检测方法中,分三个检测阶段对存储器进行检测,包括读写检测、数据线检测和地址线检测,其中,在对数据线进行检测时只需利用需要进行检测的一段地址空间的首地址和末地址,在对地址线进行检测时,只需利用非常少的地址单元,从而进一步提高了检测效率;在申请号为200810119303.X的中国专利申请“一种外部存储器的检测方法和装置”提出的检测方法中,不是逐个数据的进行测试,而是将产生的伪随机码一次性地写入存储器中,然后再读回,并将读回的数据与写入的伪随机码进行比较。
[0004] 上述方法存在以下问题:1、对于数据线和地址线的测试不能并行进行,也就是说,只能先对数据线和地址线中的一种进行检测,然后再对另一种进行检测;2、需要对写入存储器的测试数据进行存储。

发明内容

[0005] 针对上述问题,本发明提供一种快速检测存储器的方法,以实现数据线和地址线的快速并行检测。
[0006] 为了实现以上目的,本发明提供的快速检测存储器的方法包括以下步骤:配置写入存储器地址的数据,以使这些数据中的至少部分数据遍历存储器的至少部分数据位来检测这些数据位中的每个数据位的正确性;遍历所有存储器地址以对每个存储器地址进行读写检测;判断写入的数据是否遍历完所有数据位,如果写入的数据没有遍历完所有数据位,则重复执行以下步骤,直到遍历完所有数据位为止:配置从存储器首地址开始重新写入存储器地址的数据,以使这些数据遍历还未检测到的数据位来检测这些数据位中的每个数据位的正确性;遍历重新写入数据的存储器地址以对这些存储器地址中的每个存储器地址进行读写检测。
[0007] 优选地,在遍历存储器地址和数据位之前,根据存储器的地址位数和数据位数预先配置好写入存储器地址的所有数据。
[0008] 优选地,所述读写检测包括以下步骤:遍历将写入数据的存储器地址,写入数据;遍历写入数据的存储器地址,读取数据,并将读取的数据与写入的数据进行比较;如果从存储器地址读取的数据与写入该存储器地址的数据相同,则判断与该存储器地址相应的地址线和与该数据所检测的数据位相应的数据线工作正常,否则根据该存储器地址和/或该数据所检测的数据位判断相应的地址线和/或数据线工作异常。
[0009] 优选地,监测读数据和写数据是否遍历完所有存储器地址和所有数据位,并根据监测结果来配置写入存储器地址的数据、写入数据、读取数据和将读取的数据与写入的数据进行比较。
[0010] 优选地,逐个存储器地址地写入数据、读取数据和将读取的数据与写入的数据进行比较。
[0011] 优选地,在遍历所有存储器地址之前,配置写入存储器地址的数据为该存储器地址本身;在遍历所有存储器地址时,在从写入数据的存储器地址读取数据之后,当存储器的数据位数不多于存储器的地址位数时,将读取的数据与该存储器地址的低m位进行比较,其中,m为存储器的数据位数;当存储器的数据位数多于存储器的地址位数时,直接将读取的数据与该存储器地址进行比较;在遍历完所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置重新写入存储器地址的数据为该存储器地址左移n位的值,其中,n为存储器的地址位数;在从重新写入数据的存储器地址读取数据之后,将读取的数据与该存储器地址左移n位的值进行比较。
[0012] 优选地,分别设置写数据遍历完所有存储器地址的标志位和写数据遍历完所有数据位的标志位来表示写数据是否遍历完所有存储器地址和写数据是否遍历完所有数据位;当写数据遍历完所有存储器地址的标志位表示写数据没有遍历完所有存储器地址时,配置写入存储器地址的数据为该存储器地址本身;在从存储器地址读取数据之后,如果存储器的数据位数不多于存储器的地址位数,则将读取的数据与该存储器地址的低m位进行比较;如果存储器的数据位数多于存储器的地址位数,则直接将读取的数据与该存储器地址进行比较;当写数据遍历完所有存储器地址的标志位表示写数据已经遍历完所有存储器地址时,配置写入存储器地址的数据为该存储器地址左移n位的值;当写数据遍历完所有数据位的标志位表示写数据已经遍历完所有数据位时,将从存储器地址读取的数据与该存储器地址左移n位的值进行比较。
[0013] 优选地,在配置写入存储器地址数据时,配置存储器每次读写数据的长度。
[0014] 优选地,根据存储器的容量大小和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有存储器地址;根据存储器的容量大小、数据位数和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有数据位。
[0015] 相应地,本发明提供一种快速检测存储器的装置,包括:配置单元,其用于在遍历所有存储器地址之前,配置写入存储器地址的数据,以使这些数据中的至少部分数据遍历存储器的至少部分数据位来检测这些数据位中的每个数据位的正确性;在遍历所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置从存储器首地址开始重新写入存储器地址的数据,以使这些数据遍历还未检测到的数据位来检测这些数据位中的每个数据位的正确性;写数据单元,其用于根据配置单元配置的数据遍历写入数据的存储器地址将配置的数据写入存储器地址;读数据单元,其用于遍历写入数据的存储器地址从存储器地址读取数据;比较单元,其用于将读数据单元从存储器地址读取的数据与写数据单元写入该存储器地址的数据进行比较,如果读取的数据与写入的数据相同,则判断与该存储器地址相应的地址线和与该数据所检测的数据位相应的数据线工作正常,否则根据该存储器地址和/或该数据所检测的数据位判断相应的地址线和/或数据线工作异常。
[0016] 优选地,配置单元根据存储器的地址位数和数据位数预先配置好写入存储器地址的所有数据。
[0017] 优选地,该装置还包括监测单元,其用于监测读数据和写数据是否遍历完所有存储器地址和所有数据位,配置单元、写数据单元、读数据单元和比较单元分别根据监测单元的监测结果来配置写入存储器地址的数据、写入数据、读取数据和将读取的数据与写入的数据进行比较。
[0018] 优选地,写数据单元、读数据单元和比较单元逐个存储器地址地写入数据、读取数据和将读取的数据与写入的数据进行比较。
[0019] 优选地,所述配置单元执行以下配置操作:在遍历所有存储器地址之前,配置写入存储器地址的数据为该存储器地址本身;在遍历完所有存储器地址之后,如果写入的数据还未遍历完所有数据位,则配置重新写入存储器地址的数据为该存储器地址左移n位的值,其中,n为存储器的地址位数。
[0020] 优选地,所述比较单元执行以下比较操作:在遍历所有存储器地址时,在从写入数据的存储器地址读取数据之后,当存储器的数据位数不多于存储器的地址位数时,将读取的数据与该存储器地址的低m位进行比较,其中,m为存储器的数据位数;当存储器的数据位数多于存储器的地址位数时,直接将读取的数据与该存储器地址进行比较;在从重新写入数据的存储器地址读取数据之后,将读取的数据与该存储器地址左移n位的值进行比较。
[0021] 优选地,该装置还包括监测单元,其用于监测写数据和读数据是否遍历完所有存储器地址和数据位,并分别设置写数据遍历完所有存储器地址的标志位和写数据遍历完所有数据位的标志位来表示写数据是否遍历完所有存储器地址和写数据是否遍历完所有数据位,当从监测单元接收的写数据遍历完所有存储器地址的标志位表示写数据没有遍历完所有存储器地址时,配置单元配置写入存储器地址的数据为该存储器地址本身;在读取单元从存储器地址读取数据之后,如果存储器的数据位数不多于存储器的地址位数,则比较单元将读取的数据与该存储器地址的低m位进行比较;如果存储器的数据位数多于存储器的地址位数,则比较单元直接将读取的数据与该存储器地址进行比较;当从监测单元接收的写数据遍历完所有存储器地址的标志位表示写数据已经遍历完所有存储器地址时,配置单元配置写入存储器地址的数据为该存储器地址左右n位的值;当写数据遍历完所有数据位的标志位表示写数据已经遍历完所有数据位时,比较单元将从存储器地址读取的数据与该存储器地址左移n位的值进行比较。
[0022] 优选地,配置单元在配置写入存储器地址数据时,配置存储器每次读写数据的长度。
[0023] 优选地,监测单元根据存储器的容量大小和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有存储器地址;根据存储器的容量大小、数据位数和配置的每次读写数据的长度来判断写数据和读数据是否遍历完所有数据位。
[0024] 通过以上技术方案,可获得如下技术效果:1、通过所配置的写入存储器的数据可以遍历存储器的所有数据位来检测存储器的每个数据位的正确性,这样,可在遍历存储器地址检测每个存储器地址能否正确读写数据的同时,还遍历数据位验证每个数据位的正确性,从而可快速地对存储器的地址线和数据线进行并行读写检测,实现方法简单,不增加系统的复杂度;2、通过将写入存储器地址的数据配置为存储器地址,不必对这些数据进行维护和存储,从而使得检测方法更加简便。

附图说明

[0025] 图1是根据本发明实施例的快速检测存储器的方法的流程图;
[0026] 图2是根据本发明实施例的快速检测存储器的装置的框图。

具体实施方式

[0027] 以下,将参照附图和实施例对本发明进行详细描述。
[0028] 在以下将描述的实施例中,配置写入存储器地址的数据为存储器地址,这样,就只需将读取的数据与存储器地址进行简单的比较来验证存储器是否正常工作,而不必对配置写入存储器地址的数据进行维护和存储,从而进一步简化了存储器检测方法。以下,m表示存储器的数据位数,n表示存储器的地址位数。
[0029] 为了能够实现对所有存储器地址和所有数据位的同时遍历,本实施例的主要技术方案如下。
[0030] 当存储器的数据位数不多于存储器的地址位数时,即,存储器的地址位数多于或者等于存储器的数据位时,写入每个存储器地址的数据为该存储器地址本身。此时,当遍历完所有数据位时,并没有遍历完所有的存储器地址,所以仍然需要继续向未写入数据的存储器地址中写入数据。这时,向这些未写入数据的存储器地址中所写的数据仍然可以直接是存储器地址本身,但是,在从这些存储器地址中读取数据之后,由于实际写入的数据只有m位,所以需要将读出的数据值与存储器地址的低m位进行比较,直到遍历完所有的存储器地址。
[0031] 当存储器的数据位数多于存储器的地址位数时,当遍历完所有存储器地址后,仍有部分高位数据位没有测试到,因此,需要循环使用存储器的地址,但是这时写入存储器地址的值需要进行简单的处理,不再直接是存储器地址本身,而是存储器地址左移n位的值。
[0032] 图1是根据本发明实施例的快速检测存储器方法的流程图。参照图1,该方法包括以下步骤:
[0033] 步骤S100、启动一次存储器的检测;
[0034] 步骤S101、配置写存储器的地址,该地址从0开始,每写一次存储器后自动累加;配置每个存储器地址写入的数据值即为该存储器地址本身;配置写存储器的模式,即设置每次读写数据的长度;
[0035] 步骤S102、按照配置的写存储器地址,写入存储器地址的数据和写数据的长度发起一次写存储器的操作;
[0036] 步骤S103、根据所选存储器型号的容量大小和已配置的每次读写数据的长度来判断写数据是否遍历完所有存储器地址,如果已经遍历完所有存储器地址,则继续执行步骤S104,如果没有遍历完所有存储器地址,则跳转到步骤S102;
[0037] 步骤S104、发起一次读存储器的操作,其中读存储器的地址从0开始,每读一次存储器后自动累加;
[0038] 步骤S105、比较读取的数据是否正确,具体地,当存储器的地址位数多于或等于数据位数时,比较读取的数据和存储器读地址的低m位是否一致;当存储器的地址位数少于数据位数时,直接比较读取的数据和存储器的读地址是否一致。如果此次读取的数据正确,则继续执行步骤S106,如果此次读取的数据不正确,则执行步骤S114,报错,将错误标志位置1,本次测试结束;
[0039] 步骤S106、根据存储器型号的容量大小和已配置的每次读写数据的长度来判断读数据是否遍历完所有存储器地址,如果已经遍历完所有存储器地址,则继续执行步骤S107,如果没有遍历完所有存储器地址,则跳转到步骤S104;
[0040] 步骤S107、根据存储器型号的容量大小,数据位数和已配置的每次读写数据的长度来判断写数据是否遍历完存储器的所有数据位,如果已经遍历完所有数据位,则执行步骤S114,本次测试结束,如果没有遍历完所有数据位,则执行步骤S108;
[0041] 步骤S108、重新配置存储器写地址为0,在写完一次存储器后自动累加;配置重新写入存储器地址的数据为写该存储器地址左移n位的值;执行该步骤的原因是由于执行到该步骤就表示存储器的数据位数多于地址位数,当遍历完所有存储器件地址时,还没有遍历完所有数据位,这时需要循环使用存储器的地址,重新向存储器地址中写入用于遍历还未遍历的数据位的数据,从而实现对所有数据位的遍历检测;
[0042] 步骤S109、按照配置的写存储器地址,写入存储器地址的数据和写存储器的模式发起一次写存储器的操作;
[0043] 步骤S110、根据存储器型号的容量大小、数据位数和已配置的每次读写数据的长度来判断写数据是否遍历完存储器的所有数据位,如果已经遍历完所有数据位,则执行步骤S111,如果没有遍历完所有数据位,则跳转到步骤S109;
[0044] 步骤S111、发起一次读存储器的操作,其中读存储器的地址从0开始,每读一次存储器后自动累加;
[0045] 步骤S112、比较读取的数据是否正确,具体地,由于执行到该步骤即表示存储器的数据位数多于地址位数,因此,比较读取的数据和存储器地址左移n位的值是否一致;如果此次读取的数据正确,则继续执行步骤S113,如果此次读取的数据不正确,则报错,将错误标志位置1,执行步骤S114,本次测试结束;
[0046] 步骤S113、根据存储器型号的容量大小、数据位数和已配置的每次读写数据的长度来判断读数据是否遍历完存储器的所有数据位,如果已经遍历完所有数据位,则执行步骤S114,如果没有遍历完所有数据位,则跳转到步骤S111;
[0047] 步骤S114、本次测试结束。
[0048] 为了实现以上方法,本发明提供图2所示的快速检测存储器的装置。参照图2,该装置包括配置单元201、写数据单元202、读数据单元203、监测单元204和比较单元205。各单元的具体操作如下。
[0049] 监测单元204监测读写数据是否遍历完所有存储器地址,并产生读写数据遍历完所有存储器地址的标志位;监测读写数据是否遍历完所有数据位,并产生读写数据遍历完所有数据位的标志位。当标志位为0时,表示读数据或写数据没有遍历完所有存储器地址或所有数据位,当标志位为1时,表示表示读数据或写数据已经遍历完所有存储器地址或所有数据位。
[0050] 配置单元201配置每次读写存储器的地址,该地址为从0开始每次读写完数据后自动累加,当遍历完所有存储地址后,从0开始重新累加。配置单元201还根据从监测单元204接收的写数据遍历完所有存储器地址的标志位配置写入每个存储器地址的数据,如果该标志位为0,则配置写入每个存储器地址的数据即为该存储器地址本身;如果标志位为
1,则配置写入每个存储器地址的数据为该存储器地址左移n位的值。配置单元201还配置写存储器的模式,即,配置每次读写存储器的数据长度。此外,配置单元201还可根据存储器型号的容量大小和已配置的每次读写数据的长度来配置要遍历完所有存储器地址所需要的读写数据的次数以及配置要遍历完所有数据位所需要的读写数据的次数。此时,监测单元204可根据配置单元201配置的遍历完所有存储器地址所需要的读写数据的次数以及遍历完所有数据位所需要的读写数据的次数来检测读写数据是否遍历完所有存储器地址和所有数据位。
[0051] 写数据单元202根据从监测单元204接收的写数据遍历完所有存储器地址和所有数据位的标志位、配置单元201所配置的写存储器的地址和写入每个存储器地址的数据,向存储器启动一次写数据。具体地,当从监测单元204接收的写数据遍历完所有存储器地址的标志位为0时,继续根据配置单元201所配置的写存储器地址和写入每个存储器地址的数据,向存储器启动一次写数据,直到当该标志位为1时,写数据遍历完所有的存储器地址。当从监测单元204接收的写数据遍历完所有数据位的标志位为0时,继续根据配置单元201所配置的写存储器地址和写入每个存储器地址的数据,向存储器启动一次写数据,直到当该标志位为1时,写数据遍历完所有的数据位。
[0052] 读数据单元203根据从监测单元204接收的读数据遍历完所有存储器地址和所有数据位的标志位、配置单元201所配置的读存储器地址,启动一次从存储器中读取数据。具体地,当从监测单元204接收的读数据遍历完所有存储器地址的标志位为0时,继续根据配置单元201所配置的读存储器地址,继续启动一次从存储器中读数据,直到当该标志位为1时,读数据遍历完所有的存储器地址。当从监测单元204接收的读数据遍历完所有数据位的标志位为0时,继续根据配置单元201所配置的读存储器地址,继续启动一次从存储器中读数据,直到当该标志位为1时,读数据遍历完所有的数据位。
[0053] 比较单元205根据从监测单元204接收的写数据遍历完所有存储器地址和所有数据位的标志位来比较读取单元203读取的数据和写数据单元202写入的数据。具体地,当从监测单元204接收的写数据遍历完所有存储器地址的标志位为1时,当存储器的地址位数多于或等于数据位数时,比较读取的数据和存储器读地址的低m位是否一致;当存储器的地址位数少于数据位数时,直接比较读取的数据和存储器的读地址是否一致。当从监测单元204接收的写数据遍历完所有数据位的标志位为1时,比较读取的数据和存储器读地址左移n位的值是否一致。
[0054] 以下,将通过两个具体示例来对本发明方法进行进一步说明。
[0055] (第一示例)
[0056] 在本示例中,被检测的存储器为动态随机存储器SDRAM,选定的SDRAM型号是MT48LC32M8A2,选用4片该型号SDRAM作为一组存储器,这样该组存储器的地址位数为25位,数据位数为32位。SDRAM的每次读写数据长度可设定为2、4、8(单位是数据个数),或者可采用full-page模式来设置每次读写数据的长度,即,通过设置SDRAM的相关参数,在可允许的范围内每次实现任意长度的数据读写。关于SDRAM的读写数据长度的设置的具体内容,可参见MT48LC32M8A2芯片的使用手册。在本示例中,根据选定型号的SDRAM,采取full-page模式,把每次读写数据长度设定为512(单位是数据个数)。
[0057] 在系统正常工作前,启动一次SDRAM的检测,自动产生写SDRAM的地址,该地址从0开始,每写一次存储器后自动累加;配置每个写地址写入的数据值即为该写地址,即在地址0写入数据0,在地址1写入数据1,以此类推,在最高地址1FFFFFF中写入数据1FFFFFF。
写数据遍历完所有SDRAM地址之后,开始启动一次从SDRAM读取数据,并将读取的数据和SDRAM的读地址进行比较。在读数据过程中当从SDRAM中读取的数据和读存储器地址不一致时,如从地址1FFFFFF中读出的数据是1FFFFFE,则说明最低位数据位有问题,如从地址1FFFFFF中读出的数据是0,则说明对应的存储地址1FFFFFF有问题,在该地址没有正确的写入数据,结束本次检测并报告错误位。当从SDRAM中读取的数据和读存储器地址一致时,此次读数据正确,启动下一次从SDRAM读取数据,直到读数据遍历完所有地址位。当所有存储器地址已经遍历完时,由于数据位数有32位,所以此时只检查了数据的低25位,而数据的高7位还没有测试到,因此需要循环使用存储器地址,重新向地址0写入数据,这时在地址0写入的数据不再是0,应该是将此时的写地址左移25位,即此时写入的数据是2000000,直到写入的数据累加到FFFFFFFF。再一次启动读SDRAM,此时将读取的数据与SDRAM读地址左移25位后的值进行比较,在读数据过程中当从SDRAM中读取的数据和读存储器地址左移25位后的值不一致时,则说明对应的数据位或地址位有问题,结束本次检测并报告错误位。当从SDRAM中读取的数据和读存储器地址左移25位后的值一致时,此次读数据正确,启动下一次从SDRAM读取数据,直到读数据遍历完所有数据位,从而将所有的数据位都测试到,本次测试结束。
[0058] 在本示例中要注意的是,重新在地址0写入数据之前,存储器地址已经写满,应该先读取这些数据并做完比较之后再重新写入数据,以免循环使用地址空间时把原来已写入但还未读取出来的数据覆盖。
[0059] 参照图1,本示例的具体实现过程如下:
[0060] 步骤S100、在系统正常工作前,启动一次SDRAM的检测;
[0061] 步骤S101、自动产生写SDRAM的地址,该地址从0开始,每写一次SDRAM后自动累加;配置每个写地址写入的数据值即为写地址;配置full-page模式;
[0062] 步骤S102、启动一次向SDRAM中写数据;
[0063] 步骤S103、判断写数据是否遍历完所有的SDRAM地址,如果写数据没有遍历完所有的SDRAM地址,则重复执行步骤S102,启动下一次写数据,如果写数据已遍历完所有的SDRAM地址,则继续执行步骤S104;
[0064] 步骤S104、启动一次从SDRAM中读取数据;
[0065] 步骤S105、将读取的数据和SDRAM的读地址进行比较,如果比较的结果发现不一致,则结束本次检测并报告错误位;如果比较的结果一致,则继续执行步骤S106;
[0066] 步骤S106、判断读数据是否遍历完所有的SDRAM地址,如果读数据没有遍历完所有的SDRAM地址,则跳转到步骤S104,如果读数据已经遍历完所有的SDRAM地址,即,已将SDRAM读空,则执行步骤S107;
[0067] 步骤S107、判断写数据是否遍历完所有数据位,在本示例中,此时,由于数据位数有32位,而地址位数只有25位,所以此时写数据没有遍历完所有数据位,因此,继续执行步骤S108;
[0068] 步骤S108、配置重新写入SDRAM地址的数据为SDRAM地址左移25位的值;
[0069] 步骤S109、启动一次向SDRAM写数据;
[0070] 步骤S110、判断写数据是否遍历完所有数据位,如果写数据没有遍历完所有数据位,则跳转到步骤S109,如果写数据已经遍历完所有数据位,则执行步骤S111;
[0071] 步骤S111、启动一次从SDRAM读取数据;
[0072] 步骤S112、将读取的数据与SDRAM读地址左移25位后的值进行比较,如果发现的结果不一致,则结束本次检测并报告错误位;如果比较的结果一致,则执行步骤S113;
[0073] 步骤S113、判断读数据是否遍历完所有数据位,如果读数据没有遍历完所有数据位,则跳转到步骤S111,如果读数据已经遍历完所有数据位,本次测试结束。
[0074] (第二示例)
[0075] 在本示例中,选定的SDRAM型号是MT48LC32M8A2,选用2片该型号SDRAM作为一组存储器,这样该组存储器的地址位数为24位,数据位数为16位。根据选定型号的SDRAM,采取full-page模式,把每次读写数据长度设定为512(单位是数据个数)。
[0076] 在系统正常工作前,启动一次SDRAM的检测,自动产生写SDRAM的地址,该地址从0开始,每写一次存储器后自动累加;配置每个写地址写入的数据值即为该写地址,即在地址0写入数据0,在地址1写入数据1,以此类推。因为地址位数为24位,所以地址最高为FFFFFF,当在地址FFFFFF写入数据FFFFFF后,所有存储器地址已经遍历完,开始启动一次从SDRAM读取数据,但是由于数据有16位,实际上在地址FFFFFF写入的数据是FFFF,所以在读取SDRAM数据时只需要比较读取的数据和存储器读地址的低m位是否一致即可,在读数据过程中当从SDRAM中读取的数据和读存储器地址低m位的值不一致时,则说明对应的数据位或地址位有问题,结束本次检测并报告错误位。当从SDRAM中读取的数据和读存储器地址低m位的值一致时,继续启动下一次从SDRAM读取数据,直到读数据遍历完所有存储器地址。当所选存储器的地址位数大于数据位数时,当已经遍历完存储器地址时,必然也遍历完所有的数据位。
[0077] 参照图1,本示例的具体实现过程如下:
[0078] 步骤S100、在系统正常工作前,启动一次SDRAM的检测;
[0079] 步骤S101、自动产生写SDRAM的地址,该地址从0开始,每写一次SDRAM后自动累加;配置写入每个SDRAM地址的数据即为该地址;
[0080] 步骤S102、启动一次向SDRAM中写数据;
[0081] 步骤S103、判断写数据是否遍历完所有的SDRAM地址,如果写数据没有遍历完所有的SDRAM地址,则重复执行步骤S102,启动下一次写数据,如果写数据已遍历完所有的SDRAM地址,则继续执行步骤S104;
[0082] 步骤S104、启动一次从SDRAM中读取数据;
[0083] 步骤S105、将读取的数据和SDRAM的读地址的低m位进行比较,如果比较的结果发现不一致,则结束本次检测并报告错误位;如果比较的结果一致,则继续执行步骤S106;
[0084] 步骤S106、判断读数据是否遍历完所有的SDRAM地址,如果读数据没有遍历完所有的SDRAM地址,则跳转到步骤S104,如果读数据已经遍历完所有的SDRAM地址,即,已将SDRAM读空,则执行步骤S107;
[0085] 步骤S107、判断写数据是否遍历完所有数据位,在本示例中,此时,由于地址位数大于数据位数,因此,此时已经遍历完所有数据位,本次测试结束。
[0086] 以上已参照附图和实施例对本发明进行了详细描述,但是,应该理解,本发明并不限于以上所公开的具体实施例,任何本领域的技术人员在此基础之上容易想到的修改和变型都应包括在本发明的保护范围内。比如,除了存储器地址之外,还可将写入存储器地址的数据配置为按照一定规律遍历所有数据位的数据。此外,除了先判断是否遍历完所有存储器地址再判断是否遍历完所有数据位之外,还可先判断是否遍历完所有数据位,然后再判断是否遍历完所有存储器地址。在这种情况下,当判断读写数据没遍历完所有数据位,还需要根据读写数据是否遍历完所有存储器地址为条件来决定如何配置写入的数据。