存储器电路、多端口存储器电路及其操作方法与流程

文档序号:14609257发布日期:2018-06-05 20:28阅读:165来源:国知局
存储器电路、多端口存储器电路及其操作方法与流程

本发明的实施例一般地涉及半导体技术领域,更具体地,涉及存储器电路、多端口存储器电路及其操作方法。



背景技术:

涉及存储器电路的应用经常采用保护存储数据和地址的方法以防止可能引起功能错误的故障。这些方法包括在线故障检测和离线故障检测以及错误校正。

使用基于错误校正码(ECC)的在线方法,在功能操作期间可以识别和校正永久性、瞬态性、间歇性和潜在性故障。使用基于专用硬件和/或软件的离线方法,在上电时序或电路未进行功能活动的其它情况期间处理错误。



技术实现要素:

根据本发明的一方面,提供了一种存储器电路,包括:存储器,被配置为存储数据单元和奇偶校验位,所述奇偶校验位基于与存储的数据单元相关联的写入地址;地址端口,被配置为接收用于所述存储的数据单元的读取地址;第一解码电路,被配置为从所述读取地址和所述奇偶校验位生成解码写入地址;以及错误检测电路,被配置为基于所述解码写入地址和所述读取地址的比较来确定地址错误是否存在。

根据本发明的另一方面,提供了一种多端口存储器电路,包括:写入地址端口,被配置为接收写入地址;数据输入端口,被配置为接收数据单元;编码电路,被配置为从所述写入地址生成奇偶校验位;存储器,被配置为在所述写入地址处存储所述数据单元和所述奇偶校验位;读取地址端口,与所述写入地址端口分开,所述读取地址端口被配置为接收用于存储的数据单元的读取地址;第一解码电路,被配置为从所述读取地址和所述奇偶校验位生成解码写入地址;以及错误检测电路,被配置为基于所述解码写入地址和所述读取地址的比较确定地址错误是否存在。

根据本发明的又一方面,提供了一种操作存储器的方法,所述方法包括:在所述存储器的端口处接收用于存储在所述存储器中的数据单元的读取地址;从所述存储器获取奇偶校验位,所述奇偶校验位基于用于存储的数据单元的写入地址;基于所述读取地址和获取的奇偶校验位使用解码电路生成解码写入地址;以及使用错误检测电路基于所述解码写入地址和所述读取地址确定地址错误的存在。

附图说明

当结合附图进行阅读时,从以下详细描述可以最佳地理解本发明的各个方面。应该注意,根据工业中的标准实践,各种部件没有按比例绘制。实际上,为了清楚的讨论,各种部件的尺寸可以被任意增大或减小。

图1是根据一些实施例的存储器电路的示意图。

图2是根据一些实施例的存储器电路的示意图。

图3是根据一些实施例的存储器电路的示意图。

图4是根据一些实施例的存储器电路的示意图。

图5是根据一些实施例的保护存储器电路的方法的流程图。

图6示出了数据页的格式。

图7是示出用于再现的数据解码处理的框图。

具体实施方式

以下公开内容提供了许多用于实现所提供主题的不同特征的不同实施例或实例。下面描述了组件、数值、操作、材料、布置等的具体实例以简化本发明。当然,这些仅仅是实例,而不旨在限制本发明。其它组件、数值、操作、材料、布置等是预期的。例如,在以下描述中,在第二部件上方或上形成第一部件可以包括第一部件和第二部件直接接触形成的实施例,并且也可以包括在第一部件和第二部件之间形成额外的部件使得第一部件和第二部件可以不直接接触的实施例。而且,本发明在各个实例中可以重复参考标号和/或字母。这种重复仅是为了简明和清楚的目的,其自身并不表示所讨论的各个实施例和/或配置之间的关系。

而且,为便于描述,在此可以使用诸如“在…之下”、“在…下方”、“下部”、“在…上方”、“上部”等空间相对术语以描述如图所示的一个元件或部件与另一个(或另一些)元件或部件的关系。除了图中所示的方位外,空间关系术语旨在包括器件在使用或操作过程中的不同方位。装置可以以其它方式定位(旋转90度或在其它方位上),并且在本文中使用的空间关系描述符可以同样地作出相应的解释。

存储器电路包括存储器、地址端口、解码电路和错误检测电路。存储器以数据单元和奇偶校验位的形式存储数据位,地址端口接收与存储数据单元相关联的读取地址,解码电路从读取地址和奇偶校验位生成解码写入地址,并且错误检测电路将读取地址和解码写入地址进行比较以确定是否存在地址错误。在一些实施例中,从写入地址和数据单元生成奇偶校验位,并且在其它实施例中,仅从写入地址生成奇偶校验位。在一些实施例中,地址端口是读取地址端口,并且存储器电路包括与读取地址端口分开的写入地址端口,并且在其它实施例中,地址端口还在写入操作中接收写入地址。在一些实施例中,存储器是只读存储器(ROM),并且奇偶校验位作为ROM编程处理的一部分生成。

图1是根据一些实施例的存储器电路100的示意图。存储器电路100包括存储器110、编码电路130、解码电路150和错误检测电路160。写入地址端口101被配置为接收写入地址W_ADD,数据输入端口103被配置为接收存储在由写入地址W_ADD指定的位置处的存储器110中的数据单元D_U,并且读取地址端口105被配置为接收识别数据单元D_U存储位置的读取地址R_ADD。

存储器110被配置为接收写入地址端口101上的写入地址W_ADD、数据输入端口103上的数据单元D_U和读取地址端口105上的读取地址R_ADD。存储器110还被配置为接收来自奇偶校验位端口131上的编码电路130的一个或多个奇偶校验位P_B。

存储器110被配置为将包括数据单元D_U的数据存储在存储器部分111中,并且将包括奇偶校验位P_B的奇偶校验数据存储在存储器部分113中。存储器110被配置为将数据单元D_U和奇偶校验位P_B存储在基于写入地址端口101上的写入地址W_ADD确定的一个或多个位置处,并从响应于读取地址端口105上的读取地址R_ADD的一个或多个位置获取存储的数据单元D_U和奇偶校验位P_B。

在一些实施例中,存储器110被配置为将数据单元D_U和奇偶校验位P_B存储为单个字,数据单元D_U所存储的存储器部分111的位置邻近奇偶校验位P_B所存储的存储器部分113的位置。在一些实施例中,数据单元D_U所存储的存储器部分111的位置与奇偶校验位P_B所存储的存储器部分113的位置分开。

在一些实施例中,存储器110是多端口存储器。在一些实施例中,存储器110是双端口存储器。在一些实施例中,存储器110是随机存取存储器(RAM)。在一些实施例中,存储器110是静态随机存取存储器(SRAM)。在一些实施例中,存储器110是动态随机存取存储器(DRAM)。

在一个或多个实施例中,存储器110包括诸如一个或多个控制电路,一个或多个地址解码电路,一个或多个输入/输出电路,和/或被配置为执行与存储器110的操作相关联的其它功能的一个或多个附加电路的电路(未示出)。

编码电路130是配置为在写入地址端口101上接收写入地址W_ADD并在数据输入端口103上接收数据单元D_U的逻辑电路。编码电路130被配置为将ECC应用于写入地址W_ADD和数据单元D_U中以生成奇偶校验位P_B。ECC是产生奇偶校验位或可用于识别和/或校正其所应用的位中的错误的其它位的逻辑。编码电路130被配置为在奇偶校验位端口131上输出奇偶校验位P_B。

在一些实施例中,编码电路130包括被配置为执行ECC的硬件。在一些实施例中,编码电路130包括被配置为执行ECC的硬件和软件的组合。

在一些实施例中,写入地址W_ADD包括10位数据。在其它实施例中,W_ADD包括多于或少于10位的数据。在一些实施例中,数据单元D_U包括32位数据。在其它实施例中,数据单元D_U包括多于或少于32位的数据。在一些实施例中,奇偶校验位P_B包括7位数据。在其它实施例中,奇偶校验位P_B包括多于或少于7位的数据。

存储器110被配置为在存储器输出端口151上输出获取数据单元R_D_U和获取奇偶校验位R_P_B。解码电路150被配置为在存储器输出端口151上接收获取数据单元R_D_U和获取奇偶校验位R_P_B,并且在读取地址端口105上接收读取地址R_ADD。

解码电路150被配置为将ECC应用于获取数据单元R_D_U、获取奇偶校验位R_P_B和读取地址R_ADD。在一些实施例中,解码电路150包括被配置为执行ECC的硬件。在一些实施例中,解码电路150包括被配置为执行ECC的硬件和软件的组合。

基于应用于获取数据单元R_D_U和获取奇偶校验位R_P_B的ECC,解码电路150被配置为在数据输出端口153上输出获取数据单元R_D_U并在数据错误端口155上输出错误信号D_ERR。在一些实施例中,解码电路150被配置为在数据输出端口153上输出获取数据单元R_D_U之前校正获取数据单元R_D_U中的一个或多个错误。解码电路150被配置为在数据错误端口155上输出错误信号D_ERR,指示ECC检测到获取数据单元R_D_U中的错误。在一些实施例中,解码电路150不被配置为在数据错误端口155上输出错误信号D_ERR。

基于应用于获取奇偶校验位R_P_B和接收的读取地址R_ADD的ECC,解码电路150被配置为在解码输出端口157上生成并输出解码写入地址D_W_ADD。编码电路130和解码电路150被配置为使得在写入地址端口101上的原始写入地址W_ADD或读取地址端口105上的读取地址R_ADD不存在可检测的错误的情况下,解码输出端口157上的解码写入地址D_W_ADD是写入地址端口101上接收的原始写入地址W_ADD的副本。编码电路130和解码电路150被配置为使得如果在写入地址端口101上的写入地址W_ADD或读取地址端口105上的读取地址R_ADD中检测到错误,则解码输出端口157上的解码写入地址D_W_ADD不是写入地址端口101上的写入地址W_ADD的副本。关于解码的附加细节在2010年8月17日授权的共同转让的美国专利号7,779,334、在2012年10月30日授权的共同转让的美国专利号8,301,959、在2013年6月11日授权的共同转让的美国专利号8,464,136,以及在1992年12月22日授权的美国专利号5,173,905中公开,其各自的全部内容通过引用并入本文。

图6示出了数据页的格式。

数据页600包括其中映射了LDPC码(low density parity check,又称低密度奇偶校验)的N(N为正整数)个数据块610、其中映射了用于对数据页600编址以便再现的地址信息的m(m为正整数)个地址块620。其中,LDPC码是一种奇偶校验码,并且其具有大多数元素为符号“0”而其余元素具有随机散乱权重的奇偶校验矩阵。

数据块610和地址块620具有相同大小“Xb×Yb”。在此,“Xb”表示行方向上的像素的数量,而“Yb”表示列方向上的像素的数量。并且,地址块620可以位于数据页600内的任意位置。

数据块包括多个子块。子块的数量可以等于构成数据页的数据块和子块的和。

子块612的大小为“Xsb×Ysb”。在此,“Xsb”表示行方向上的像素的数量,而“Ysb”表示列方向上的像素的数量。并且,子块612的数量是(N+m),该数量等于构成数据页600的数据块610的数量和地址块620的数量的和。

LDPC码被划分成“Xsb×Ysb”的大小,并且独立地映射到全部子块612中的N个子块内,而标记614被映射到m个子块内。

标记614用于提取信息以计算与标记614所属的数据块610相对应的子块612的概率。标记614位于数据块610的中心,并且标记614的全部区域仅用开像素(on-pixel)或关像素(off-pixel)来表示。

图7是示出用于再现的数据解码处理的框图。

如图7所示,由解码部分780执行数据的解码。

解码部分780包括:解映射单元782,其用于对地址块620、数据块610和子块612进行解映射,从而再现从光信息检测器750检测到的数据页600,并且利用子块612和标记来计算进行解码的概率值;以及LDPC解码器784,其利用在解映射单元782处获得的概率值和从解映射出的数据页600获得的数据块610的密度来进行LDPC解码。

当再现记录在光数据存储器D中的光信息时,解码部分780可以利用地址块620和子块612的标记614来获得用于进行LDPC解码的解码概率值和密度,使得解码部分780能够解码从光数据存储器D再现出的光信息。

在非限制性实例中,在操作中,解码电路150将ECC应用于读取地址端口105上的读取地址R_ADD以产生再生的奇偶校验位。如果写入地址端口101上的写入地址W_ADD或读取地址端口105上的读取地址R_ADD中没有错误,则再生的奇偶校验位与存储器输出端口151上的获取奇偶校验位R_P_B相同,并且读取地址R_ADD输出为解码输出端口157上的解码写入地址D_W_ADD。如果写入地址端口101上的写入地址W_ADD或读取地址端口105上的读取地址R_ADD存在错误,则再生的奇偶校验位与存储器输出端口151上的获取奇偶校验位R_P_B不相同。在这种情况下,ECC通过解码电路150被应用于读取地址端口105上的读取地址R_ADD,使得解码电路150在解码输出端口157上生成并输出解码写入地址D_W_ADD作为读取地址R_ADD的校正版本,该校正被设计为使得解码写入地址D_W_ADD产生与获取奇偶校验位R_P_B相同的奇偶校验位。

错误检测电路160被配置为接收解码输出端口157上的解码写入地址D_W_ADD并且接收在读取地址端口105上的读取地址R_ADD。错误检测电路160被配置为将解码输出端口157上的解码写入地址D_W_ADD与读取地址端口105上的读取地址R_ADD进行比较,确定是否存在地址错误,并生成指示比较结果的错误信号A_ERR。错误检测电路160被配置为在地址错误端口161上输出错误信号A_ERR。在一些实施例中,错误检测电路160被配置为如果解码输出端口157上的解码写入地址D_W_ADD不等于读取地址端口105上的读取地址R_ADD,则在地址错误端口161上输出指示错误的错误信号A_ERR。

错误检测电路160包括被配置为对解码输出端口157上的解码写入地址D_W_ADD与读取地址端口105上的读取地址R_ADD进行比较并生成错误信号A_ERR的硬件。在一些实施例中,错误检测电路包括一个或多个逻辑门。

因此,存储器电路100被配置为使得在操作中,根据解码输出端口157上的解码写入地址D_W_ADD和读取地址端口105上的读取地址R_ADD确定地址错误的存在,解码输出端口157上的解码写入地址D_W_ADD基于读取地址端口105上的读取地址R_ADD和从写入地址端口101上的原始写入地址W_ADD生成的奇偶校验位P_B。

在一些实施例中,存储器电路100通过依赖解码写入地址(诸如解码输出端口157上的解码写入地址D_W_ADD)和接收的读取地址(诸如读取地址端口105上的读取地址R_ADD)检测地址错误,而不在存储器中存储写入地址。因此,相比于写入地址存储在存储器中的存储器电路,存储器电路100因此采用更小的存储器尺寸促进错误检测和校正。

图2是根据一些实施例的存储器电路200的示意图。存储器电路200包括上述关于存储器电路100和图1所述的错误检测电路160、写入地址端口101、数据输入端口103和读取地址端口105。存储器电路200还包括存储器210、编码电路220、编码电路230、解码电路240和解码电路250。

存储器电路200类似于存储器电路100,但被配置为生成、存储和获取与用于数据的奇偶校验位分开的用于地址的奇偶校验位。因此,在存储器电路200中,编码电路220和编码电路230代替编码电路130,并且解码电路240和解码电路250代替解码电路150。

存储器210包括上述关于存储器电路100的存储器110的每一个特征,并且下面的描述限于与存储器110不同的存储器210的特征。

存储器210被配置为从编码电路230接收奇偶校验位端口231上的地址奇偶校验位A_P_B,并且从编码电路220接收奇偶校验位端口221上的数据奇偶校验位D_P_B。在一些实施例中,奇偶校验位端口231和奇偶校验位端口221被布置为单个奇偶校验位端口。

存储器210被配置为将包括数据单元D_U的数据存储在存储器部分211中,将包括数据奇偶校验位D_P_B的奇偶校验数据存储在存储器部分213中,并将包括地址奇偶校验位A_P_B的奇偶校验数据存储在存储器部分215中。存储器210被配置为将数据单元D_U、地址奇偶校验位A_P_B和数据奇偶校验位D_P_B存储在由写入地址端口101上的写入地址W_ADD确定的一个或多个位置处,并响应于读取地址端口105上的读取地址R_ADD从一个或多个位置获取被存储的数据单元D_U、地址奇偶校验位A_P_B和数据奇偶校验位D_P_B。

在一些实施例中,存储器210被配置为将数据单元D_U、数据奇偶校验位D_P_B和地址奇偶校验位A_P_B存储为单个字,其中数据单元D_U存储在存储器部分211中的位置与数据奇偶校验位D_P_B存储在存储器部分213中的位置相邻,并且与地址奇偶校验位A_P_B存储在存储器部分215的位置相邻。在一些实施例中,数据单元D_U、数据奇偶校验位D_P_B或地址奇偶校验位A_P_B中的一个或多个被存储在存储器210中的一个或多个位置处,其中,该一个或多个位置与存储数据单元D_U、数据奇偶校验位D_P_B或地址奇偶校验位A_P_B中的另外一个或另外多个的一个或多个位置分开。

编码电路220是逻辑电路,该逻辑电路被配置为接收数据输入端口103上的数据单元D_U,并将ECC应用于数据单元D_U以生成数据奇偶校验位D_P_B。编码电路220被配置为在奇偶校验位端口221上输出数据奇偶校验位D_P_B。在一些实施例中,数据奇偶校验位D_P_B包括6位数据。在其它实施例中,数据奇偶校验位D_P_B包括多于或少于6位的数据。

编码电路230是被配置为接收写入地址端口101上的写入地址W_ADD,并将ECC应用于写入地址W_ADD以生成地址奇偶校验位A_P_B的逻辑电路。编码电路230被配置为在奇偶校验位端口231上输出地址奇偶校验位A_P_B。在一些实施例中,地址奇偶校验位A_P_B包括2位数据。在其它实施例中,地址奇偶校验位A_P_B包括1位数据或多于2位的数据。

在一些实施例中,编码电路220和编码电路230被布置为单个编码电路,其中,单个编码电路被配置为接收数据输入端口103上的数据单元D_U和写入地址端口101上的写入地址W_ADD,并且生成和输出奇偶校验位端口221上的数据奇偶校验位D_P_B以及奇偶校验位端口231上的地址奇偶校验位A_P_B。

存储器210被配置为在存储器输出端口241上输出获取的数据单元R_D_U和获取的数据奇偶校验位R_D_P_B。解码电路240被配置为接收存储器输出端口241上的获取的数据单元R_D_U和获取的数据奇偶校验位R_D_P_B。

基于应用于获取的数据单元R_D_U和获取的数据奇偶校验位R_D_P_B的ECC,解码电路240被配置为在数据输出端口243上输出获取的数据单元R_D_U并在数据错误端口245上输出错误信号D_ERR。在一些实施例中,解码电路240被配置为在数据输出端口243上输出获取的数据单元R_D_U之前,校正获取的数据单元R_D_U中的一个或多个错误。解码电路240被配置为在数据错误端口245上输出指示ECC检测到获取的数据单元R_D_U中错误的错误信号D_ERR。在一些实施例中,解码电路240不被配置为在数据错误端口245上输出错误信号D_ERR。

存储器210被配置为在存储器输出端口251上输出获取的地址奇偶校验位R_A_P_B。解码电路250被配置为接收存储器输出端口251上的获取的地址奇偶校验位R_A_P_B,并且接收读取地址端口105上的读取地址R_ADD。

除了存储器输出端口251上的获取的地址奇偶校验位R_A_B_P代替存储器输出端口151上的获取的奇偶校验位R_P_B以外,解码电路250还包括与以上关于解码电路150所描述的解码写入地址D_W_ADD的生成和输出有关的每一个特征。因此,基于应用于获取的地址奇偶校验位R_A_P_B和接收的读取地址R_ADD的ECC,解码电路250被配置为在解码输出端口253上输出解码写入地址D_W_ADD。

因此,编码电路230和解码电路250被配置为使得在写入地址端口101上的写入地址W_ADD或读取地址端口105上的读取地址R_ADD中不存在可检测的错误时,解码输出端口253上的解码写入地址D_W_ADD是写入地址端口101上的写入地址W_ADD的副本。因此,编码电路230和解码电路250被配置为使得如果在写入地址端口101上的写入地址W_ADD或读取地址端口105上的读取地址R_ADD中检测到错误,则解码输出端口253上的解码写入地址D_W_ADD不是写入地址端口101上的写入地址W_ADD的副本。

错误检测电路160被配置为在解码输出端口253上接收解码写入地址D_W_ADD。否则,如以上关于存储器电路100所述配置错误检测电路160。

在一些实施例中,解码电路240和解码电路250被布置为单个解码电路,其中,单个解码电路被配置为在存储器输出端口241上接收获取的数据单元R_D_U和获取的数据奇偶校验位R_D_P_B,以及在存储器输出端口251上接收获取的地址奇偶校验位R_A_P_B,并且生成和输出数据输出端口243上的获取的数据单元R_D_U、数据错误端口245上的错误信号D_ERR和解码输出端口253上的解码写入地址D_W_ADD。尽管单个解码电路需要比分开的解码电路更小的面积,但是与单个解码电路相比,分开的解码电路能够提供更有效和稳定的调试(debug)和诊断能力。

因此,存储器电路200被配置为使得在操作中,由解码输出端口253上的解码写入地址D_W_ADD和读取地址端口105上的读取地址R_ADD确定地址错误的存在,解码输出端口253上的解码写入地址D_W_ADD基于读取地址端口105上的读取地址R_ADD和由写入地址端口101上的原始写入地址W_ADD专门生成的奇偶校验位P_B。

存储器电路200通过依赖解码输出端口253上的解码写入地址(诸如D_W_ADD)和读取地址端口105上的接收的读取地址(诸如R_ADD)来检测地址错误,而不在存储器中存储写入地址。因此,存储器电路200与写入地址存储在存储器中的存储器电路相比,便于用更小的存储器尺寸进行错误检测和校正。在一些实施例中,与存储器电路100相比,存储器电路200消耗稍大的存储器区域/占位面积,以分开存储数据奇偶校验位和地址奇偶校验位,并且对于分开的解码电路需要稍大的区域/占位面积,但是便于更好的故障诊断并避免地址故障混叠。

图3是根据一些实施例的存储器电路300的示意图。存储器电路300包括以上关于存储器电路100和200以及图1和图2所述的错误检测电路160、存储器210、编码电路220、编码电路230、解码电路240、解码电路250和数据输入端口103。存储器电路300还包括单端口存储器接口310和读取/写入地址端口301。

存储器电路300类似于存储器电路200,但存储器电路300被配置为在单个地址端口上接收读取/写入地址,而不是在分开的地址端口上的分开的读取和写入地址。因此,在存储器电路300中,地址端口301代替写入地址端口101和读取地址端口105。

地址端口301被配置为接收读取/写入地址RW_ADD。读取/写入地址RW_ADD包括来源于存储器电路300的外部位置处的输入地址并且用作读取地址或写入地址。在一些实施例中,存储器电路300被配置为根据写入使能信号(未示出)的逻辑状态将读取/写入地址RW_ADD响应为读取地址或写入地址。

单端口存储器接口310包括地址端口311,其中,地址接口311被配置为在地址端口301上接收读取/写入地址RW_ADD,并且在多端口配置中将读取/写入地址RW_ADD提供给存储器210。在图3所示的实施例中,存储器210是双端口存储器,并且地址端口311被配置为在由图3中两个箭头所表示的地址端口311的两个分支上向存储器210提供读取/写入地址RW_ADD。在一些实施例中,存储器210是具有多于两个端口的多端口存储器,并且地址端口311被配置为在与多端口存储器的端口数量相匹配的多个分支上向存储器210提供读取/写入地址RW_ADD。

由于存储器210是双端口存储器或具有多于两个端口的多端口存储器,所以存储器210包括两个或更多个地址解码电路(未示出)。如上面关于存储器电路200所述,存储器210、编码电路230、解码电路250和错误检测电路160的组合便于确定在分开的读取和写入地址端口上接收的地址的错误。通过在分开的端口上向存储器210提供读取/写入地址RW_ADD,单端口存储器接口310便于存储器电路300中的相同的错误检测能力。

因此,存储器电路300被配置为使得在读取操作中,根据解码输出端口253上的解码写入地址D_W_ADD和地址端口301上的读取/写入地址RW_ADD确定地址错误的存在,解码写入地址D_W_ADD基于地址端口301上的读取/写入地址RW_ADD和由先前写入操作中使用的地址端口301上的读取/写入地址RW_ADD生成的奇偶校验位P_B。

在一些实施例中,通过具有多端口存储器210和单端口存储器接口310,存储器电路300便于地址错误的检测和校正并避免地址故障混叠,同时向外部电路提供单端口存储器功能。与不具有多端口存储器的其它单端口存储器电路相比,存储器电路300以多端口存储器的较大存储器面积为代价改进了地址错误检测。

图4是根据一些实施例的存储器电路400的示意图。存储器电路400包括以上关于存储器电路100和200以及图1和图2所描述的错误检测电路160、解码电路240、解码电路250和读取地址端口105,以及只读存储器(ROM)410。图4还包括表示为与存储器电路400分开的ROM编程器420。

ROM编程器420是包括硬件和软件的组合的系统,其中,该硬件和软件的组合被配置为在诸如ROM 410的ROM中生成和编程或写入数据位。在操作中,ROM编程器420执行离线处理,该离线处理包括包括将ECC应用于数据单元D_U以生成数据奇偶校验位D_P_B,并将ECC应用于数据单元D_U的写入地址W_ADD以生成地址奇偶校验位A_P_B。在操作中,由ROM编程器420执行的离线处理还包括对具有数据单元D_U、数据奇偶校验位D_P_B和地址奇偶校验位A_P_B的ROM 410进行编程。

作为由ROM编程器420执行的离线处理的结果,ROM 410被配置为将包括数据单元D_U的数据存储在ROM部分411中,将包括数据奇偶校验位D_P_B的奇偶校验数据存储在ROM部分413中,并且将包括地址奇偶校验位A_P_B的奇偶校验数据存储在ROM部分415中。ROM 410被配置为将数据单元D_U、地址奇偶校验位A_P_B和数据奇偶校验位D_P_B存储在由写入地址W_ADD确定的一个或多个位置处,并且响应于读取地址端口105上的读取地址R_ADD从一个或多个位置处获取存储的数据单元D_U、地址奇偶校验位A_P_B和数据奇偶校验位D_P_B。

在一些实施例中,ROM 410被配置为将数据单元D_U、数据奇偶校验位D_P_B和地址奇偶校验位A_P_B存储为单个字,其中,存储数据单元D_U的ROM部分411的位置邻近于数据奇偶校验位D_P_B存储在ROM部分413中的位置和地址奇偶校验位A_P_B存储在ROM部分415中的位置。在一些实施例中,数据单元D_U、数据奇偶校验位D_P_B或地址奇偶校验位A_P_B中的一个或多个存储在ROM 410中的一个或多个位置处,其中,该一个或多个位置与存储数据单元D_U、数据奇偶校验位D_P_B或地址奇偶校验位A_P_B中的另外一个或另外多个的一个或多个位置分开。

因此,存储器电路400被配置为使得在操作中,根据解码输出端口253上的解码写入地址D_W_ADD和读取地址端口105上的读取地址R_ADD确定地址错误的存在,解码写入地址D_W_ADD基于读取地址端口105上的读取地址R_ADD和由写入地址W_ADD生成的奇偶校验位P_B。

在一些实施例中,通过存储地址奇偶校验位和包括解码和错误检测电路,存储器电路400便于地址错误的检测和校正,同时向外部电路提供单端口ROM功能。在一些实施例中,与没有存储地址奇偶校验位的其它ROM电路相比,存储器电路400以稍大的ROM面积为代价改进了地址错误检测。

图5是根据一个或多个实施例的保护存储器电路的方法500的流程图。能够通过如上所述的存储器电路100、200、300或400中的每一个执行方法500。

图5所示的方法500的操作顺序仅用于说明;方法500的操作能够以不同于图5所示的顺序执行。在一些实施例中,,可以在图5所示的操作之前、之间和/或之后执行除了图5所示的操作之外的操作。

在操作510中,生成写入地址。在一些实施例中,生成写入地址由与存储器电路通信的电路执行,并作为写入操作的一部分提供给存储器电路。在一些实施例中,写入地址是以上关于存储器电路100、200和400所描述的写入地址W_ADD。在一些实施例中,写入地址是以上关于存储器电路300所描述的读取/写入地址RW_ADD。在一些实施例中,操作510是可选的。

在操作520中,生成用于写入地址的奇偶校验位。在一些实施例中,基于写入地址和与写入地址相关的数据单元的组合来执行生成奇偶校验位。在一些实施例中,仅基于写入地址来执行奇偶校验位的生成。在一些实施例中,通过将ECC应用于写入地址来执行奇偶校验位的生成。在一些实施例中,操作520是可选的。

在一些实施例中,使用以上关于存储器电路100所描述的编码电路130来执行奇偶校验位的生成。在一些实施例中,使用以上关于存储器电路200和300所描述的编码电路230来执行奇偶校验位的生成。在一些实施例中,执行奇偶校验位的生成作为以上关于存储器电路400所描述的ROM编程处理420的一部分。

在操作530中,将数据单元和奇偶校验位存储在存储器中。在一些实施例中,存储数据单元和奇偶校验位包括将数据单元和奇偶校验位存储在存储器中的相邻位置处。在一些实施例中,存储数据单元和奇偶校验位包括将数据单元和奇偶校验位存储在存储器中的非相邻位置处。在一些实施例中,操作530是可选的。

在一些实施例中,如以上关于存储器电路100所描述的,存储数据单元和奇偶校验位包括将数据单元D_U和奇偶校验位P_B存储在存储器110中。在一些实施例中,如以上关于存储器电路200和300所描述的,存储数据单元和奇偶校验位包括将数据单元D_U和地址奇偶校验位A_P_B存储在存储器210中。在一些实施例中,如以上关于存储器电路400所描述的,存储数据单元和奇偶校验位是由ROM 410的ROM编程器420执行的离线处理的一部分。

在操作540中,读取指令被存储器电路接收。在一些实施例中,接收读取指令作为存储器电路的读取操作的一部分。在一些实施例中,接收读取指令作为存储器电路的测试的一部分。读取指令包括存储在存储器电路的存储器中的数据单元的读取地址。

在一些实施例中,如以上关于存储器电路100、200或400所描述的,读取指令包括读取地址端口105上接收的读取地址R_ADD。在一些实施例中,如以上关于存储器电路300所描述的,读取指令包括读取/写入地址端口301上接收的读取/写入地址RW_ADD。

在操作550中,从存储器获取奇偶校验位。奇偶校验位基于存储在存储器中的数据单元的写入地址。在一些实施例中,从存储器获取奇偶校验位包括从存储器110的存储器输出端口151上获取获取的奇偶校验位R_P_B(如以上关于存储器电路100所描述的)。在一些实施例中,从存储器获取奇偶校验位包括从存储器210的存储器输出端口251上获取获取的地址奇偶校验位R_A_P_B(如以上关于存储器电路200和300所描述的)。在一些实施例中,从存储器获取奇偶校验位包括从ROM 410的存储器输出端口251上获取获取的地址奇偶校验位R_A_P_B(如以上关于存储器电路400所描述的)。

在一些实施例中,操作550包括从存储器获取数据单元。在一些实施例中,操作550包括从存储器110的存储器输出端口151上获取获取的数据单元R_D_U(如以上关于存储器电路100所描述的)。在一些实施例中,操作550包括从存储器210的存储器输出端口241上获取获取的数据单元R_D_U(如以上关于存储器电路200和300所描述的),或者从ROM 410的存储器输出端口241上获取获取的数据单元R_D_U(如以上关于存储器电路400所描述的)。

在操作560中,从读取指令的读取地址和获取的奇偶校验位生成解码写入地址。在一些实施例中,基于写入地址和数据单元的组合通过将ECC应用于奇偶校验位来执行生成解码写入地址。在一些实施例中,如以上关于存储器电路100所描述的,通过将ECC应用于读取地址端口105上的读取地址R_ADD和存储器输出端口151上的获取的奇偶校验位R_P_B来执行生成解码写入地址。

在一些实施例中,仅基于写入地址通过将ECC应用于奇偶校验位来执行生成解码写入地址。在一些实施例中,如以上关于存储器电路200和400所描述的,通过将ECC应用于读取地址端口105上的读取地址R_ADD和存储器输出端口251上的获取的地址奇偶校验位R_A_P_B来执行生成解码写入地址。在一些实施例中,如以上关于存储器电路300所描述的,通过将ECC应用于读取/写入地址端口301上的读取/写入地址RW_ADD和存储器输出端口251上的获取的地址奇偶校验位R_A_P_B来执行生成解码写入地址。

在一些实施例中,如以上关于存储器电路100所描述的,使用解码电路150来执行解码写入地址。在一些实施例中,如以上关于存储器电路200、300或400所描述的,使用解码电路250来执行解码写入地址。

在一些实施例中,操作560包括在数据输出端口上输出数据单元。在一些实施例中,如以上关于存储器电路100所描述的,输出数据单元包括使用解码电路150在数据输出端口153上输出获取的数据单元R_D_U。在一些实施例中,如以上关于存储器电路200、300或400所描述的,输出数据单元包括使用解码电路240在数据输出端口243上输出获取的数据单元R_D_U。

在一些实施例中,操作560包括基于检测到的存储的数据单元内的错误在数据错误端口上输出错误信号。在一些实施例中,如以上关于存储器电路100所描述的,输出错误信号包括使用解码电路150在数据错误端口155上输出错误信号D_ERR。在一些实施例中,如以上关于存储器电路200、300或400所描述的,输出错误信号包括使用解码电路240在数据错误端口245上输出数据错误信号D_ERR。

在操作570中,根据解码写入地址和读取地址确定地址错误的存在。在一些实施例中,确定地址错误的存在包括确定解码写入地址和读取地址是否相同。在一些实施例中,确定地址错误的存在包括用逻辑电路将解码写入地址和读取地址进行比较。在一些实施例中,如以上关于存储器电路100、200、300或400所描述的,通过使用错误检测电路160来执行确定地址错误的存在。

在操作580中,基于确定地址错误的存在来生成错误信号。在一些实施例中,如以上关于存储器电路100、200、300或400所描述的,生成错误信号包括使用错误检测电路160生成错误信号A_ERR。在一些实施例中,操作580是可选的。

在一些实施例中,操作580包括在地址错误端口上输出错误信号。在一些实施例中,如以上关于存储器电路100、200、300或400所描述的,输出错误信号包括使用错误检测电路160在地址错误端口161上输出错误信号A_ERR。

在操作590中,基于确定地址错误的存在来校正地址错误。在一些实施例中,使用存储器电路100、200、300或400中的一个来执行校正地址错误。在一些实施例中,使用与存储器电路100、200、300或400中的一个通信的电路来执行校正地址错误。在一些实施例中,操作590是可选的。

通过执行方法500的操作,根据解码写入地址和读取地址确定地址错误的存在,解码写入地址基于读取地址和从原始写入地址生成的奇偶校验位。

方法500基于依赖于解码写入地址和接收的读取地址来检测地址错误,而不在存储器中存储写入地址。因此,方法500使用比将写入地址存储在存储器中的应用更小的存储器尺寸便于错误检测和校正。方法500还便于在单端口存储器或ROM应用中进行基于双端口的错误检测和校正。

在一些实施例中,电路包括被配置为存储数据单元和奇偶校验位的存储器,所述奇偶校验位基于与存储的数据单元相关联的写入地址,以及被配置为接收用于所述存储的数据单元的读取地址的地址端口。所述存储器电路还包括被配置为从所述读取地址和所述奇偶校验位生成解码写入地址的解码电路,以及被配置为基于所述解码写入地址和所述读取地址的比较确定地址错误是否存在的错误检测电路。

在实施例中,所述奇偶校验位基于所述写入地址和所述存储的数据单元的组合。

在实施例中,所述奇偶校验位仅基于所述写入地址。

在实施例中,存储器电路还包括编码电路,被配置为仅从所述写入地址生成所述奇偶校验位。

在实施例中,存储器电路还包括第二解码电路,被配置为解码第二奇偶校验位,所述第二奇偶校验位基于所述存储的数据单元。

在实施例中,存储器电路还包括写入地址端口,被配置为接收所述写入地址。

在实施例中,所述存储器是双端口存储器,并且所述地址端口被配置为接收所述写入地址作为组合的读取/写入地址。

在实施例中,所述存储器是只读存储器。

在一些实施例中,多端口存储器电路包括写入地址端口,其中,写入地址端口被配置为接收写入地址;数据输入端口,被配置为接收数据单元;编码电路,被配置为从所述写入地址生成奇偶校验位;存储器,被配置为在所述写入地址处存储所述数据单元和所述奇偶校验位;以及读取地址端口,其与所述写入地址端口分开,所述读取地址端口被配置为接收用于存储的数据单元的读取地址。解码电路,被配置为从所述读取地址和所述奇偶校验位生成解码写入地址;以及错误检测电路,被配置为基于所述解码写入地址和所述读取地址的比较确定是否存在地址错误。

在实施例中,所述奇偶校验位基于组合的所述写入地址和所述存储的数据单元。

在实施例中,所述奇偶校验位仅基于所述写入地址。

在实施例中,多端口存储器电路还包括:编码电路,被配置为仅从所述写入地址生成所述奇偶校验位;以及第二解码电路,被配置为基于所述存储的数据单元解码第二奇偶校验位。

在一些实施例中,操作存储器的方法包括:在所述存储器的端口处接收用于存储在所述存储器中的用于数据单元的读取地址;从所述存储器获取奇偶校验位,所述奇偶校验位基于用于存储的数据单元的写入地址;所述方法还包括基于所述读取地址和获取的奇偶校验位使用解码电路生成解码写入地址;以及基于所述解码写入地址和所述读取地址使用错误检测电路确定地址错误的存在。

在实施例中,操作存储器的方法还包括在所述存储器中存储所述数据单元和所述奇偶校验位。

在实施例中,操作存储器的方法还包括从所述写入地址和所述存储的数据单元的组合生成所述奇偶校验位。

在实施例中,操作存储器的方法还包括仅从所述写入地址生成所述奇偶校验位。

在实施例中,操作存储器的方法还包括生成所述写入地址作为组合的读取/写入地址。

在实施例中,操作存储器的方法还包括生成和存储所述奇偶校验位作为只读存储器编程处理的一部分。

在实施例中,操作存储器的方法还包括基于确定地址错误的存在,生成错误信号。

在实施例中,操作存储器的方法还包括基于确定地址错误的存在,校正地址错误。

以上论述了若干实施例的特征,使得本领域技术人员可以更好地理解本发明的各个方面。本领域技术人员应该理解,他们可以容易地使用本发明作为基础来设计或修改用于实施与本文所介绍的实施例相同的目的和/或实现相同优点的其它工艺和结构。本领域技术人员也应该意识到,这种等同构造并不背离本发明的精神和范围,并且在不背离本发明的精神和范围的情况下,本文中他们可以做出多种变化、替换以及改变。

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