具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,根据不同容量SDRAM的内部行列结构的差别,通过在多个不同的目标地址中写入不同的数据,再从上述目标地址中读取数据,判断从目标地址中读取的数据与写入目标地址中的数据是否相等,来检测待测SDRAM的容量。其中多个不同的目标地址中的N个地址对应待测SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同。
其中不同容量SDRAM的内部行列结构的差别在于,不同容量的SDRAM的行和列的大小是不一样的,表1.1示出了不同容量的8bit位宽和16bit位宽的SDRAM的内部行列结构:
表1.1
容量 |
组织结构 |
Bank |
行地址 |
列地址 |
16Mb |
1M*16 |
2 |
A0~A10 |
A0~A7 |
64Mb |
4M*16 |
4 |
A0~A11 |
A0~A7 |
64Mb |
8M*8 |
4 |
A0~A11 |
A0~A8 |
128Mb |
8M*16 |
2 |
A0~A11 |
A0~A8 |
128Mb |
16M*8 |
4 |
A0~A11 |
A0~A9 |
256Mb |
16M*16 |
4 |
A0~A12 |
A0~A8 |
256Mb |
32M*8 |
4 |
A0~A12 |
A0~A9 |
512Mb |
32M*16 |
4 |
A0~A12 |
A0~A9 |
512Mb |
1M*16 |
4 |
A0~A12 |
A0~A9,A11 |
从表1.1可以得出,对于不同容量的SDRAM,其行地址或者列地址的长度均不相同,同时,请参阅图1,为嵌入式应用系统中SDRAM的访问示意图。在嵌入式应用系统中,需要通过SDRAM控制器才能对外部的SDRAM进行访问。其中通过SDRAM控制器访问SDRAM的过程简述如下:
CPU通过总线将对SDRAM的读/写命令传输至SDRAM控制器,SDRAM控制器对总线传输的对SDRAM的读/写命令进行译码,将对SDRAM的读/写命令转化为对SDRAM的读写时序。在将对SDRAM的读/写命令转化为对SDRAM的读写时序时,预先在SDRAM控制器的相应寄存器中配置SDRAM的容量信息,再根据预先配置的SDRAM的容量信息以及该容量的SDRAM的内部行列结构,将总线传输的读/写地址分割成两部分,一部分作为Bank地址和行地址,另一部分作为列地址,同时发出相应的时序对SDRAM进行访问。
在对SDRAM进行读写操作时,需要先发送激活命令以及需要激活的Bank和行地址,然后才可以发送针对该行的读写命令和列地址。根据表1.1所示的不同容量的SDRAM存储的行列地址之间的差别以及SDRAM控制器访问SDRAM的方式可以得出,当预先在SDRAM控制器中相应寄存器中配置好SDRAM的容量信息后,即可根据SDRAM控制器对总线传输的地址的分割方式以及表1.1所示的不同容量的SDRAM存储的行列地址之间的差别,得到不同容量的SDRAM的行列地址与配置容量的SDRAM的行列地址之间的有效位和无效位的对应关系。以128Mbit、16bit位宽的SDRAM为例:它的行地址为A0~A11,列地址为A0~A8,如果将SDRAM控制器中的容量信息配置为521Mbit,则在输入行地址时,对于128Mbit容量的SDRAM来说,A12pin脚是无效的输入pin脚,在输入列地址时,A9~A12pin脚是无效的输入pin脚,因此对于不同容量的SDRAM,可能出现多个不同地址对应同一个存储单元的情况。
如假设将SDRAM控制器中的容量信息配置为512Mbit,由于256Mbit容量、128Mbit、64Mbit、16Mbit等小容量SDRAM的行列地址的长度比512Mbit容量的SDRAM的行列地址的长度短,从而使某些pin脚的输入对于不同容量的SDRAM来说,是无效的。因此,存在地址不相同,但在SDRAM里面实际对应的是同一个存储单元。其中不同容量SDRAM相对于预先配置容量的SDRAM的行列地址有效位和无效位的对应关系如表1.2所示,其中“*”表示该位输入为无效,“x”表示该位输入为有效:
表1.2
容量 |
组织结构 |
bank |
行地址A12~A0 |
列地址A11,A9~A0 |
512Mbit |
32M*16 |
xx |
x xxxx xxxx xxxx |
* xx xxxx xxxx |
512Mbit |
64M*8 |
xx |
x xxxx xxxx xxxx |
x xx xxxx xxxx |
256Mbit |
16M*16 |
xx |
x xxxx xxxx xxxx |
** x xxxx xxxx |
256Mbit |
32M*8 |
xx |
x xxxx xxxx xxxx |
* xx xxxx xxxx |
128Mbit |
8M*16 |
xx |
* xxxx xxxx xxxx |
* * x xxxx xxxx |
128Mbit |
16M*8 |
xx |
* xxxx xxxx xxxx |
* xx xxxx xxxx |
64Mbit |
4M*16 |
xx |
* xxxx xxxx xxxx |
* ** xxxx xxxx |
64Mbit |
8M*8 |
xx |
* xxxx xxxx xxxx |
* * x xxxx xxxx |
16Mbit |
1M*16 |
*x |
* * xxx xxxx xxxx |
* ** xxxx xxxx |
以下以外接128Mbit容量的SDRAM为例,对上面表格的信息进行说明,假设预先将SDRAM控制器的容量信息配置为512Mbit,此时假设总线上发生的读/写地址为0x03800400,二进制为:11100000000000010000000000。此时,根据表1.2中所示的行列地址有效位和无效位的对应关系,得到如下SDRAM的响应信息:
|
Bank地址 |
行地址 |
列地址 |
SDRAM控制器输出地址 |
11 |
1000000000000 |
10000000000 |
128Mbit SDRAM实际对应的地址 |
11 |
*000000000000 |
*0000000000 |
其中“*”表示该位对于128Mbit容量的SDRAM来说是无效的输入,即无论“*”表示的位的输入为1还是0,均对应该128Mbit容量的SDRAM的同一地址,采用二进制的地址来表示如下:
11 *000 0000 0000 0*00 0000 0000=11 0000 0000 0000 0000 0000 0000
=11 1000 0000 0000 0000 0000 0000=11 0000 0000 0000 0100 0000 0000
=11 1000 0000 0000 0100 0000 0000
采用十六进制的地址来表示如下:0x30000000=0x38000000=0x30000400=0x38000400
也就是说,当将SDRAM控制器中的容量配置为512Mbit时,对于外接128Mbit容量的SDRAM来说,对地址0x03800400进行读/写操作等于对地址0x03000000或者0x38000000或者0x30000400进行读/写操作。
综上所述,当预先将SDRAM控制器的容量信息配置好之后,根据表1.2所示的不同容量的SDRAM的地址有效位对应关系,即可得到SDRAM控制器不同输出地址与每一容量级别的SDRAM的同一实际地址之间的对应关系。
如当预先将SDRAM控制器的容量信息配置为512Mbit时,根据表1.2所示的不同容量的SDRAM的地址有效位对应关系,可以得到对于256Mbit容量的SDRAM来说,SDRAM控制器的两个不同输出地址00xx xxxx xxxx x00xxxxx xxxx和00xx xxxx xxxx x10x xxxx xxxx对应256Mbit容量的SDRAM的同一实际地址,其中两个地址中相同位的x取相同的值,不同位的x可以取相同的值,也可以取不同的值。依此类推,根据表1.2所示的不同容量的SDRAM的地址有效位对应关系,均可以得到SDRAM控制器的不同输入地址与每一容量级别的SDRAM的同一实际地址之间的对应关系,详见下表1.3。
表1.3
该表1.3中,对于256Mbit容量的SDRAM来说,每一组SDRAM控制器的两个不同输出地址对应256Mbit容量的SDRAM的同一实际地址,且这样的地址组有8组;对于128Mbit容量的SDRAM来说,每一组SDRAM控制器的四个不同输出地址对应128Mbit容量的SDRAM的同一实际地址,且这样的地址组有4组;对于64Mbit容量的SDRAM来说,每一组SDRAM控制器的八个不同输出地址对应64Mbit容量的SDRAM的同一实际地址,且这样的地址组有2组;对于16Mbit容量的SDRAM来说,每一组SDRAM控制器的十六个不同输出地址对应16Mbit容量的SDRAM的同一实际地址,且这样的地址组有1组。为了便于说明,在本发明实施例中,将SDRAM控制器的不同输出地址对应某容量SDRAM的同一实际地址的地址组称为同一实际地址组。对于不同容量的SDRAM来说,同一实际地址组中每个地址的相同地址位中的x取相同的值,不同地址位中的x可以取相同值,也可以取不同值。
当SDRAM控制器对同一实际地址组中的其中一个地址进行读写操作时,相当于对同一实际地址组中的其他地址进行读写操作。由于对于不同容量SDRAM来说,同一实际地址组中的地址均不完全相同,因此可以通过在这些地址中写入数据,再从这些地址中读取数据,根据读取的数据是否等于写入的数据来检测SDRAM的容量。本发明正是利用了嵌入式应用中SDRAM的访问特性和内部行列结构,从上述同一实际地址组中选择多个目标地址,通过在选择的目标地址中写入数据,再从目标地址中读取数据,判断读取的数据是否等于写入的数据来快速检测SDRAM的容量的。其中多个目标地址的选择标准如下:
多个目标地址中的N个地址对应SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同。其中目标地址的个数最少为待测SDRAM的容量级别数,最多为2M个,其中M为待测最小容量的SDRAM相对于配置容量的SDRAM的地址的无效位数。
如当SDRAM控制器中配置的容量为512Mbit时,如果待测SDRAM的容量级别包括5个容量级别,分别为512Mbit、256Mbit、128Mbit、64Mbit和16Mbit,则至少选择5个不同的目标地址,根据表1.2所示的不同容量SDRAM的地址有效位对应关系,由于16Mbit容量的SDRAM与512Mbit容量存储器之间的地址无效位为4位,因此,至多可以选择24=16个不同的目标地址。在本示例中,以选择5个不同的目标地址为例,进行说明,选择的5个目标地址中每一个目标地址均对应512Mbit容量的SDRAM的不同实际地址,且5个目标地址中两个目标地址对应256Mbit容量的SDRAM的同一实际地址,其余目标地址均对应256Mbit容量的SDRAM的不同实际地址,且5个目标地址中三个目标地址对应128Mbit容量的SDRAM的同一实际地址,其余目标地址均对应128Mbit容量的SDRAM的不同实际地址,且5个目标地址中四个目标地址对应64Mbit容量的SDRAM的同一实际地址,其余目标地址均对应64Mbit容量的SDRAM的不同实际地址,且5个目标地址中五个目标地址均对应16Mbit容量的SDRAM的同一实际地址。
根据上述示例以及表1.3所示的不同容量的SDRAM的同一实际地址组,该5个目标地址可以根据如下标准进行选择,选择256Mbit容量的SDRAM的其中一组同一实际地址组,包括两个不同地址,再从128Mbit容量的SDRAM的包括已选择的两个地址的同一实际地址组中选择一个地址,此时,已选择了三个目标地址,接着从64Mbit容量的SDRAM的包括已选择的三个地址的同一实际地址组中选择一个地址,此时,已选择四个目标地址表1.4或者表1.5中的地址,最后在16Mbit容量的SDRAM的包括已选择的四个目标地址的同一实际地址组中选择一个地址,此时,5个目标地址选择完毕。按照上述选择标准选择的5个目标地址可以如表1.4和表1.5所示,当然该5个目标地址不以表1.4和表1.5所示的为限,可以根据表1.3以及上述的选择标准任意选择。
表1.4
表1.5
其中表1.4和表1.5中的五个目标地址中相同地址位的x取相同的值(均为0或者均为1),不同地址位的x可以取相同的值,也可以取不同的值。
图2示出了本发明实施例提供的存储器容量检测方法的实现流程,详述如下:
在步骤S201中,配置存储控制器的容量。
在本发明实施例中,在配置存储控制器的容量时,可以将存储控制器的容量配置成任何容量,如512Mbit、256Mbit等。由于存储控制器在对总线传输的读/写地址进行译码时,是根据预先配置的存储控制器的容量的内部行列结构进行的,根据表1.2所示的不同容量的SDRAM的地址有效位的对应关系,当将SDRAM控制器的容量配置为512Mbit时,只能检测出容量小于或者等于512Mbit的SDRAM的容量,因此,在配置SDRAM控制器的容量时,可以根据SDRAM容量检测的需要,合理的配置。
在步骤S202中,在预先选择的多个不同目标地址中写入不同的数据。
预先选择多个目标地址的标准和依据如上所述,在此不再赘述。其中预先选择的多个不同目标地址中N个目标地址对应SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同。其中多个不同的目标地址的个数最少为待测SDRAM的容量级别数,最多为2M个,其中M为待测最小容量的SDRAM与配置容量的SDRAM的地址的无效位数。
在本发明实施例中,为了便于比较写入的同一地址中的数据是否等于从同一地址中读取的数据,预先在参考地址中写入与目标地址中相同的数据,其中参考地址的个数与选择的多个不同目标地址的个数相同,且参考地址对应不同容量SDRAM的不同目标地址,且参考地址与多个不同目标地址均不相同。
在步骤S203中,从上述多个不同目标地址中读取数据。
在步骤S204中,根据读取的数据是否等于写入的数据来检测存储器的容量。
在本发明实施例中,由于多个不同目标地址中N个目标地址对应SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同,因此,对该N个目标地址的读取和写入操作均是对SDRAM的同一实际地址进行读取和写入操作,从而通过判断多个目标地址中哪些地址中读取与写入的数据相同,哪些地址中读取与写入数据不相同,即可判断SDRAM的容量。
在本发明另一实施例中,该方法还包括下述步骤:
根据从多个目标地址中读取的数据与写入多个目标地址中的数据之间的相等关系判断SDRAM容量检测是否出错。
以下以一个具体的示例对本发明实施例提供的方法进行进一步的详细说明,如果待测SDRAM的容量包括512Mbit、256Mbit、128Mbit、64Mbit和16Mbit,则根据以上描述可知,需要将SDRAM控制器的容量信息配置为512Mbit或者更大容量,至少选择五个目标地址,且对于每个容量级别的SDRAM来说,五个目标地址中对应每个容量级别的SDRAM的同一实际地址的地址个数均不相同。在本示例中,选择的参考地址为0x00000000、0x00000002、0x00000004、0x00000006和0x00000008,选择的五个目标地址分别为:0x003ff9fe、0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe,其中五个目标地址均对应16Mbit容量的SDRAM的同一实际地址,且五个目标地址中0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe均对应64Mbit容量的SDRAM的同一实际地址,且五个目标地址中0x007ffbfe、0x00fffbfe和0x00fffffe均对应128Mbit容量的SDRAM的同一实际地址,且五个目标地址中0x00fffbfe和0x00fffffe均对应256Mbit容量的SDRAM的同一实际地址,且五个目标地址均对应512Mbit容量的SDRAM的不同实际地址。图3示出了本发明实施例提供的SDRAM容量检测方法的实现流程,详述如下:
在步骤S301中,将SDRAM控制器的容量信息配置为512Mbit,并向待测SDRAM的参考地址中分别写入不同的数据。
在本发明实施例中,先将SDRAM控制器的容量信息配置为512Mbit,再向预先选择的参考地址0x00000000中写入1,在参考地址0x00000002中写入2,在参考地址0x00000004中写入3,在参考地址0x00000006中写入4在参考地址0x00000008中写入5。
在步骤S302中,在待测SDRAM的目标地址中写入与参考地址对应的数据。
在本发明实施例中,在待测SDRAM的目标地址0x003ff9fe中写入1,在0x007ff9fe中写入2,在0x007ffbfe中写入3,在0x00fffbfe中写入4,在0x00fffffe中写入5。
当待测SDRAM的容量为16Mbit时,由于五个目标地址0x003ff9fe、0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe均对应16Mbit容量的SDRAM的同一实际地址,从而经步骤S302后,待测SDRAM的0x003ff9fe、0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe五个地址中的数据均为5;
当待测SDRAM的容量为64Mbit时,由于五个目标地址中0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe均对应64Mbit容量的SDRAM的同一实际地址,从而经步骤S302后,待测SDRAM的0x003ff9fe地址中的数据为1,0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe地址中的数据均为5;
当待测SDRAM的容量为128Mbit时,由于五个目标地址中0x007ffbfe、0x00fffbfe和0x00fffffe均对应128Mbit容量的SDRAM的同一实际地址,从而经步骤S302后,待测SDRAM的0x003ff9fe地址中的数据为1,0x007ff9fe地址中的数据为2,0x007ffbfe、0x00fffbfe和0x00fffffe地址中的数据均为5;
当待测SDRAM的容量为256Mbit时,由于五个目标地址中0x00fffbfe和0x00fffffe均对应256Mbit容量的SDRAM的同一实际地址,从而经步骤S302后,待测SDRAM的0x003ff9fe地址中的数据为1,0x007ff9fe地址中的数据为2,0x007ffbfe地址中的数据为3,0x00fffbfe和0x00fffffe地址中的数据均为5;
当待测SDRAM的容量为512Mbit时,由于五个目标地址均对应512Mbit容量的SDRAM的不同实际地址,从而经步骤S302后,待测SDRAM的0x003ff9fe地址中的数据为1,0x007ff9fe地址中的数据为2,0x007ffbfe地址中的数据为3,0x00fffbfe地址中的数据为4,0x00fffffe地址中的数据均为5。
在步骤S303中,从待测SDRAM的目标地址0x003ff9fe中读取数据并将读取的数据赋给A,同时从待测SDRAM的参考地址0x00000000中读取数据,并将读取的数据赋给B。
在本发明实施例中,如果待测SDRAM的容量为16Mbit,则经步骤S303后,A的值为5,B的值为1;如果待测SDRAM的容量为64Mbit、128Mbit、256Mbit或者512Mbit。则经步骤S303后,A的值为1,B的值为1。
在步骤S304中,判断A是否等于B,如果是,则执行步骤S305,如果否,则判定待测SDRAM的容量为16Mbit。
在本发明实施例中,在从读取待测SDRAM的目标地址0x003ff9fe中读取数据时,同时分别从待测SDRAM的目标地址0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe中读取数据,同时从待测SDRAM的参考地址0x00000008中读取数据,并判断从待测SDRAM的目标地址0x007ff9fe、0x007ffbfe、0x00fffbfe和0x00fffffe中读取数据是否均等于从待测SDRAM的参考地址0x00000008中读取数据,如果是,则SDRAM检测未出错,如果否,则SDRAM容量检测出错,提示用户检查SDRAM的PCB连接是否正常或者提示用户检查其他引起SDRAM访问出错的因素。
在步骤S305中,从待测SDRAM的目标地址0x007ff9fe中读取数据并将读取的数据赋给A,同时从待测SDRAM的参考地址0x00000002中读取数据,并将读取的数据赋给B。
在本发明实施例中,如果待测SDRAM的容量为16Mbit、或64Mbit,则经步骤S305后,A的值为5,B的值为2;如果待测SDRAM的容量为128Mbit、256Mbit或者512Mbit。则经步骤S305后,A的值为2,B的值为2。
在步骤S306中,判断A是否等于B,如果是,则执行步骤S307,如果否,则判定待测SDRAM的容量为64Mbit。
在本发明实施例中,在从读取待测SDRAM的目标地址0x007ff9fe中读取数据时,同时分别从待测SDRAM的目标地址0x007ffbfe、0x00fffbfe和0x00fffffe中读取数据,同时从待测SDRAM的参考地址0x00000008中读取数据,并判断从待测SDRAM的目标地址0x007ffbfe、0x00fffbfe和0x00fffffe中读取数据是否均等于从待测SDRAM的参考地址0x00000008中读取数据,如果是,则SDRAM检测未出错,如果否,则SDRAM容量检测出错,提示用户检查SDRAM的PCB连接是否正常或者提示用户检查其他引起SDRAM访问出错的因素。
在步骤S307中,从待测SDRAM的目标地址0x007ffbfe中读取数据并将读取的数据赋给A,同时从待测SDRAM的参考地址0x00000004中读取数据,并将读取的数据赋给B。
在本发明实施例中,如果待测SDRAM的容量为16Mbit、64Mbit、128Mbit,则经步骤S307后,A的值为5,B的值为3;如果待测SDRAM的容量为256Mbit或者512Mbit。则经步骤S307后,A的值为3,B的值为3。
在步骤S308中,判断A是否等于B,如果是,则执行步骤S309,如果否,则判定待测SDRAM的容量为128Mbit。
在本发明实施例中,在从读取待测SDRAM的目标地址0x007ffbfe中读取数据时,同时分别从待测SDRAM的目标地址0x00fffbfe和0x00fffffe中读取数据,同时从待测SDRAM的参考地址0x00000008中读取数据,并判断从待测SDRAM的目标地址0x00fffbfe和0x00fffffe中读取数据是否均等于从待测SDRAM的参考地址0x00000008中读取数据,如果是,则SDRAM检测未出错,如果否,则SDRAM容量检测出错,提示用户检查SDRAM的PCB连接是否正常或者提示用户检查其他引起SDRAM访问出错的因素。
在步骤S309中,从待测SDRAM的目标地址0x00fffbfe中读取数据并将读取的数据赋给A,同时从待测SDRAM的参考地址0x00000006中读取数据,并将读取的数据赋给B。
在本发明实施例中,如果待测SDRAM的容量为16Mbit、64Mbit、128Mbit或256Mbit,则经步骤S309后,A的值为5,B的值为4;如果待测SDRAM的容量为512Mbit。则经步骤S309后,A的值为4,B的值为4。
在步骤S3010中,判断A是否等于B,如果是,则执行步骤S3011,如果否,则判定待测SDRAM的容量为256Mbit。
在本发明实施例中,在从读取待测SDRAM的目标地址0x00fffbfe中读取数据时,同时从待测SDRAM的目标地址0x00fffffe中读取数据,同时从待测SDRAM的参考地址0x00000008中读取数据,并判断从待测SDRAM的目标地址0x00fffffe中读取数据是否等于从待测SDRAM的参考地址0x00000008中读取数据,如果是,则SDRAM检测未出错,如果否,则SDRAM容量检测出错,提示用户检查SDRAM的PCB连接是否正常或者提示用户检查其他引起SDRAM访问出错的因素。
在步骤S3011中,从待测SDRAM的目标地址0x00fffffe中读取数据并将读取的数据赋给A,同时从待测SDRAM的参考地址0x00000008中读取数据,并将读取的数据赋给B。
在步骤S3012中,判断A是否等于B,如果是,则判定待测SDRAM的容量为512Mbit,如果不是,则判定SDRAM容量检测出错,提示用户检查SDRAM的PCB连接是否正常或者提示用户检查其他引起SDRAM访问出错的因素。
图4示出了本发明实施例提供的存储器容量检测装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分。该存储器容量检测装置可以是内置于控制器中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到存储控制器中或者存储控制器的应用系统中。其中:
容量配置单元41配置存储控制器的容量。在本发明实施例中,以SDRAM控制器为例进行说明。在配置SDRAM控制器的容量时,可以将SDRAM控制器的容量配置成任何容量,如512Mbit、256Mbit等。由于SDRAM控制器在对总线传输的读/写地址进行译码时,是根据预先配置的SDRAM控制器的容量的内部行列结构进行的,根据表1.2所示的不同容量的SDRAM的地址有效位的对应关系,当将SDRAM控制器的容量配置为512Mbit时,只能检测出容量小于或者等于512Mbit的SDRAM的容量,因此,在配置SDRAM控制器的容量时,可以根据SDRAM容量检测的需要,合理的配置。
目标地址写入单元42在预先选择的多个不同目标地址中写入不同的数据。其中多个不同的目标地址中N个目标地址对应SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同。其中多个不同的目标地址的个数最少为待测SDRAM的容量级别数,最多为2M个,其中M为待测最小容量的SDRAM与配置容量的SDRAM的地址的无效位数。
目标地址读取单元43从上述多个不同目标地址中读取数据。
容量检测单元44根据目标地址读取单元43读取的数据是否等于目标地址写入单元42写入的数据来检测SDRAM的容量。在本发明实施例中,由于多个不同目标地址中N个目标地址对应SDRAM的同一实际地址,且对于不同容量的SDRAM,N的值均不相同,因此,对该N个目标地址的读取和写入操作均是对SDRAM的同一实际地址进行读取和写入操作,从而通过判断多个目标地址中哪些地址中读取与写入的数据相同,哪些地址中读取与写入数据不相同,即可判断SDRAM的容量。
在本发明另一实施例中,该装置还包括检测出错判断单元45根据目标地址读取单元43从多个目标地址中读取的数据与目标地址写入单元42写入多个目标地址中的数据之间的相等关系判断SDRAM容量检测是否出错。
可以理解,上述SDRAM容量检测方法和SDRAM容量检测装置可用于检测任何与SDRAM具有相同或者相似内部行列结构的其他存储器(如DDR、DDR2、DDR3等)的容量,由于采用上述SDRAM容量检测方法和SDRAM容量检测装置检测与SDRAM具有相同或者相似内部行列结构的其他存储器的容量的过程与检测SDRAM的容量的过程一致,在此不再赘述。
在本发明实施例中,利用不同容量SDRAM的内部行列结构的差异,在多个不同的目标地址中写入不同的数据,再从上述目标地址中读取数据,判断从目标地址中读取的数据与写入目标地址中的数据是否相等,来检测待测SDRAM的容量,从而可以方便的移植到各种不同应用场合来检测SDRAM的容量。由于需要访问的目标地址的数量较少,从而提高了SDRAM的容量检测速度和效率。同时通过根据从目标地址中读取的数据与写入目标地址中的数据之间的相等关系,可以快速的判断容量检测是否出错。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。