本文所描述的实施例涉及半导体存储器,包括用于数据编码以避免多次写入相同的存储器单元的结构和方法。
背景技术:
写入一次存储器(“WOM”)和一次可编程(“OTP”)存储器是用于分类限于任何存储单元的单个状态改变的非易失性半导体存储器技术的术语。这样的技术的示例包括熔丝连接存储器、电可编程只读存储器(“EPROM”)和电可擦除可编程只读存储器(“EEPROM”)等。
在制造期间,WOM或OTP半导体存储器阵列的存储单元通常都被初始化为相同的状态,不管全部逻辑0或全部逻辑1。应当注意,本文中的示例假设在制造期间阵列的存储器单元被初始化为全部逻辑0。然而,在上述公开中,一些存储器设备可以被初始化为全部逻辑1而不丧失普遍性。
在制造后已经写入一次之后,与WOM或OTP存储单元相关联的物理限制要么完全防止单元的多个状态改变,要么致使很难有多个状态改变。例如,因为没有办法恢复熔丝连接,所以一旦使用过电流写入信号已经熔化熔丝连接,则熔丝连接存储器的状态不能被改变。只有通过将与存储单元相关联的浮栅金属氧化物半导体场效应晶体管(MOSFET)暴露于高强度紫外线(UV),才可以对EEPROM存储器阵列进行重新编程。后一种工艺使用透明窗口以便于访问浮置栅极,并且在每个重新编程之前涉及使用UV光源的难处理的擦除操作。
对于要被写入到WOM或OTP阵列的数据的“存储器单元复位避免”(“MCRA”)编码的技术是已知的。MCRA编码使多个数据字能够写入到目标存储器位置,同时防止对与目标存储器位置相关联的任何单独存储单元的超过单个状态改变。这样做很重要,因为将连续的数据字写入到目标存储器位置将不正确地写入数据到一定程度,即连续的写入尝试使对应于目标存储器位置的单元的一个或多个位复位的程度。因为上面所描述的物理限制,所以已经写入的单元的状态将不会被复位。典型的MCRA编码技术可以将m位数据字D编码为位长度n=(2^m)-1位的n位码字C。然后,码字C被写入目标存储器位置,而不是写入D本身。因此,MCRA编码以存储器阵列中的写入一次位置可以被写入多次的权衡,使用额外的存储器单元以冗余地对数据进行编码。MCRA编码通常使得能够写入目标存储器位置T=1+2^(m-2)次。应当注意,为了该全部公开的目的,“存储器位置”、“目标存储器位置”和“存储单元的子集”应指两个或更多个单独存储器单元的集合,每个存储器单元能够存储单个码字位。因此,“存储器位置”或“存储单元的子集”能够存储整个码字。
图1是用于长度m=2的数据字D的现有技术示例MCRA编码表100。在表100的列110中按顺序列出了四种可能的数据字。被存储的每个D以要被写入到存储器位置的对应的C进行编码。C选自第一次存储器位置被写入的列115。C选自第二次存储器位置被写入的列120。然而,如果D不改变,则存储器位置不被重写。所以,例如,如果要被存储的第一D是“01”125,则用C1=“001”128写入存储器位置。如果在以后的时间处数据字D=“10”130要被存储在相同的存储器位置处,则用C2=“101”133重写存储器位置。注意,从C1=“001”128到C2=“101”133的码字改变不尝试从逻辑“1”到逻辑“0”来复位目标存储器位置的任何位,因为使用上面所描述的WOM存储器类型这样做是不可能的。然而,还应当注意,所描述的MCRA编码尝试写入C1的低阶位135A和C2的低阶位135B两次,在第一和第二期间每个写入一次。
再来看另一个示例,如果要被存储在存储器位置处的第一D是“11”140,则用C1=“100”144写入该存储器位置。如果在以后的时间处数据字D=“01”125将被存储在相同的存储器位置处,则用C2=“110”150重写该存储器位置。注意,从C1=“100”144到C2=“110”150的码字改变不尝试从逻辑“1”到逻辑“0”来复位目标存储器位置的任何位,因为这样做物理上是不可能的。然而,还应当注意,所描述的MCRA编码尝试写入C1的高阶位155A和C2的高阶位155B两次。
技术实现要素:
与一些半导体存储器技术相关联的位存储单元在它们的如所制造的状态经由第一写入操作已经被改变之后就不能够进行第二状态改变。对于其它技术诸如EEPROM、擦除和重写是可能的,但是繁琐。可以使用如先前所描述的MCRA编码来避免使目标存储器位置的一次编程的单元复位的问题。然而,MCRA编码操作可以尝试将逻辑“1”重写入先前写入的单元,如以上在与图1的MCRA编码表相关联的示例中所描述的。这样做可能导致位线干扰和噪声相关的问题,因为在写入操作期间对应的存储单元位置实际上没有被重写而是保持处于它们的先前的设置状态。使用其它存储器类型诸如闪速存储器实现的存储单元可以能够多个状态改变。然而,随着每个状态改变,单元可以逐渐变得更弱。因此,可以期望使用“多写避免”(“MWA”)码(本文中还被称为半导体存储器“增量(delta)编码”)对要被写入此类存储器类型的数据进行编码。
本文中所描述的结构和方法对将要被写入到给定的存储器位置的连续的数据字以MWA码字进行编码,该MWA码字不重写已经被写入一次逻辑“1”的单个位存储单元。实施例也不将包含逻辑“0”的单元重写为“0”状态。“增量编码”是指仅被写入的目标存储器位置的单元是新的码字需要从逻辑“0”到逻辑“1”状态改变(“增量”)的这些目标存储器位置的单元的特征。因此,不写入整个新的码字,只写入增量。
本文中公开了MWA编码器的各种实施例。第一实施例将MWA码字存储在查找表(“LUT”)中。在与要被重写的存储器位置相关联的现有的数据字(“OLD_D”)和将与该存储器位置相关联的新的数据字(“NEW_D”)之间确定逐位差。逐位差被用于从LUT中索引对应于NEW_D的几个潜在的MWA码字。验证(validation)和选择逻辑从几个潜在的MWA码字选择不违反存储器单元多写避免的原理(这里还被称为“MWA要求”)的一个。然后,所选择的MWA码字的增量位被写入存储器位置。
MWA编码器的第二实施例生成m位数据字,并且将每个生成的m位数据字变换为潜在的MWA码字,而不是从LUT查找MWA码字。m位模式生成器产生中间数据字。中间数据字与NEW_D相结合,并且进行二进制加权编码,以生成潜在的MWA码字。当生成每个潜在的MWA码字时,由验证逻辑进行检查,以确定其是否满足MWA要求。如果满足MWA要求,则对应的DELTA_C位被写入目标存储器位置。在MWA验证的情况下,从来自模式生成器的下一个m位模式生成另一个潜在的MWA码字,并且该另一个潜在的MWA码字被验证。过程继续直到发现有效的MWA码字。然后,来自MWA码字的DELTA_C位被写入目标存储器位置。
如同第二实施例,MWA编码器的第三实施例生成潜在的MWA码字。然而,第三实施例的模式生成器在码字域操作,而没有NEW_D输入。因此,第三实施例验证为了MWA有效性和为了与期望的NEW_D对应二者而生成的潜在的MWA码字。由第一有效性测试逻辑对由码字模式生成器生成的潜在的MWA码字针对MWA遵从(compliance)进行有效性测试,如先前针对第一实施例和第二实施例所描述的。如果潜在的MWA码字是无效的,则不同的潜在的MWA码字从码字模式生成器被请求。如果是有效的,则对潜在的MWA码字进行解码,以生成试验新的数据字(“NEW_D_TRIAL”)。将NEW_D_TRIAL与期望的NEW_D相比较。如果NEW_D_TRIAL与NEW_D相匹配,则有效性信号允许来自MWA码字的DELTA_C位被写入到目标存储器位置。如果NEW_D_TRIAL与NEW_D不匹配,则从码字模式生成器请求不同的潜在的MWA码字。
附图说明
图1是用于长度m=2的数据字D的现有技术示例MCRA编码表。
图2是根据各种示例方法和实施例图示说明基于LUT的半导体存储器单元多写避免编码装置的框图。
图3是根据各种示例方法和实施例图示说明与存储器单元多写避免编码装置相关联的MCRA解码器中的数据字和码字位字段的图示。
图4是根据各种示例方法和实施例图示说明与存储器单元多写避免编码装置相关联的MCRA解码器的框图。
图5是根据各种示例方法和实施例图示说明与存储器单元多写避免编码装置相关联的MCRA解码器中的示例中间数据值的数据表。
图6是根据各种示例方法和实施例图示说明基于模式生成器的半导体存储器单元多写避免编码装置的框图。
图7是根据各种示例方法和实施例图示说明基于模式生成器的半导体存储器单元多写避免编码装置的框图。
具体实施方式
图2是根据各种示例方法和实施例图示说明基于LUT的半导体存储器单元MWA编码装置200的框图。装置200接合到半导体存储器阵列205。存储器阵列205包括从其读取现有的(2^m-1)位MWA码字(“OLD_C”)208的存储单元的子集。OLD_C 208表示现有的m位数据字(“OLD_D”)212。编码装置200对OLD_C 208创建位改变以创建新的MWA码字(“NEW_C”)。NEW_C对新的数据字(“NEW_D”)215进行编码,用于存储在存储器阵列205中。OLD_D 212和NEW_D 215是m位宽。OLD_C 208和NEW_C是(2^m-1)位宽。
MWA编码装置200包括存储器单元复位避免(“MCRA”)解码器220。MCRA解码器220从存储器接收码字(例如,在MWA编码装置200的情况下的OLD_C 208)。MCRA解码器220对码字解码,以便找到对应的数据字(例如,从OLD_C 208解码的OLD_D 212)。
图3是图示说明由MCRA解码器220处理的(2^m-1)位长二进制码字C310中的位字段的图示。C的低阶位位置到高阶位位置被命名为j=0到j=(2^m-2)。图3还示出了由C的解码产生的数据字D 315中的位字段。D是具有被命名为i=0到i=m-1的低阶位位置到高阶位位置的m位二进制数据字。通过对码字位C(j)的子集实行异或(“XOR”)操作,重新获得每位D(i)。虚线320示出针对m=3示例情况哪些码字位C(j)进行XOR,以重新获得每个数据字位D(i)。
例如,D(0)=C(0)XOR C(2)XOR C(4)XOR C(6)。为了简洁和清晰起见,紧接着先前等式的以下等价形式在下文中将被使用为类似的XOR等式:D(0)=XOR[C(0),C(2),C(4),C(6)]。D(1)=XOR[C(1),C(2),C(5),C(6)]。D(2)=XOR[C(3),C(4),C(5),C(6)]。
一般来说,MCRA解码器对C实行以下操作以重新创建D:
可以用组合逻辑实施MCRA解码器,并且可以并行地针对每个i确定D(i)。MCRA解码器的一些实施例可以迭代地针对每个i确定D(i),如以下进一步描述的。以下描述的示例MCRA解码器结构和操作阐明用于选择哪些码位C(j)进行XOR以对特定的数据位D(i)解码的过程。应当注意,可以用模2和运算替换在本公开中描述的XOR操作,而不丧失普遍性。
图4是根据各种示例方法和实施例图示说明与存储器单元MWA编码装置相关联的MCRA解码器220的框图。应当注意,这里结合基于LUT的MWA编码装置200的描述来描述MCRA解码器220。还应当注意,解码器220在以下进一步描述的MWA编码装置的其它实施例中被使用。
MCRA解码器220包括数据字生成器408。数据字生成器408生成一系列m位二进制数据字D。由数据字生成器408生成的每个数据字D表示二进制加权整数值K。数据字生成器408生成表示K=1到K=(2^m-1)的位长度m的全部可能的二进制数据字D。生成器的一些实施例可以生成对应于K=0的D=(全部0);然而,解码器220不使用K=0。
图5是图示说明对于m=3的示例情况在MCRA解码器220内生成的中间数据值的数据表。二进制字510由数据字生成器408生成。所生成的每个二进制字510表示对应的二进制加权整数值K 515。应当注意,数据字生成器408不需要顺序地生成二进制字510,只要生成表示K=1到K=(2^m-1)的全部可能的二进制字。
现在转回到图4,MCRA解码器220还包括数据字索引生成器415。数据字索引生成器415生成从i=0到i=m-1的一系列数据字位位置索引i 418。
MCRA解码器220还包括耦接到数据字索引生成器415且耦接到数据字生成器408的数据位索引器422。数据位索引器422接收来自数据字索引生成器415的索引i 418的当前值和来自数据字生成器408的数据字K 412的当前值。数据位索引器输出表示K 412的当前数据字的第i位的状态,其被命名为B(K,i)425。简要地转到图5,针对示例515,K=3。对于i=0,设置对应于K=3的二进制字(011)的第0位。因此,对于示例515,B(3,0)=1。对于i=1,设置对应于K=3的二进制字(011)的第1位。因此,对于示例515,B(3,1)=1。对于i=2,重新设置对应于K=3的二进制字(011)的第2位。因此,对于示例515,B(3,2)=0。
转回到图4,MCRA解码器220还包括码位索引器430。码位索引器430被耦接到数据字生成器408以接收当前K 412,并且码位索引器430被耦接到解码器输入端以接收要被解码的码字C 435。码位索引器发现并且确定C 435的第(K-1)位的状态,并且将索引的码位状态输出为B_C(K-1)438。
MCRA解码器220还包括耦接到数据位索引器422并且耦接到码位索引器430的与(AND)逻辑442。AND逻辑442针对每个K和每个i确定是否设置了B(K,i)和B_C(K-1)两者。如果是,则存储逻辑445启动耦接到码位索引器430的交叉(intersection)位缓冲器455中的码位索引C(K-1)450的存储。对于图5的示例515,C(K-1)=C2被存储。
MCRA解码器220还包括耦接到数据字生成器408的数据值跟踪逻辑460。数据值跟踪逻辑460确定当i 418被设置为当前值时,是否已经生成全部可能的数据字。如果未生成全部可能的数据字,则数据值跟踪逻辑460向数据字生成器408启动下一个K的请求。另一方面,如果当i 418被设置为当前值时已经生成全部可能的数据字,则数据值跟踪逻辑启动将对标记为逻辑“1”且存储在交叉位缓冲器455中的全部码字位执行XOR操作。由通信地耦接到数据位索引器422且通信地耦接到码位索引器430的交叉XOR逻辑465实行XOR操作。对于每个i,交叉XOR逻辑对B(K,i)和C(K-1)都是逻辑“1”的全部位执行XOR操作,以便生成解码的数据字D的对应的位D(i)。现在再次转到图5,示例520示出包括在XOR操作中用于重新获得D(i=0)数据位的码字位位置的集合为{C0、C2、C4、C6}。
转回到图4,MCRA解码器220还包括耦接到数据字索引生成器415的数据字索引跟踪逻辑470。数据字索引跟踪逻辑470确定在每个XOR操作之后是否已经生成i的全部值。如果未生成i的全部值,则数据字索引跟踪逻辑470向数据字索引生成器415发起请求,以生成下一个i。另一方面,如果已经生成i的全部值,则数据字索引跟踪逻辑470终止解码,因为C435已经被完全解码。应当注意,K和i的值不需要顺序地或以任何特定的次序被迭代。还应当注意,MCRA解码器220的一些实施例可以在移动到不同的K之前针对每个K的值遍历数据字索引i的多个值,或者可以在移动到不同的i之前针对每个i遍历K的多个值,或者可以以任何次序这样做。
现在返回到图2,基于LUT的半导体存储器单元MWA编码装置200包括耦接到MCRA解码器220的m位宽XOR逻辑225。XOR逻辑225接收OLD_D 212和期望的NEW_D 215进行存储,并且对OLD_D 212和NEW_D215执行逐位XOR操作,以便创建m位宽二进制字DELTA_D 228A和DELTA_D 228B。DELTA_D 228A和DELTA_D 228B表示OLD_D212和NEW_D 215之间的位状态差。
MWA编码装置200还包括耦接到XOR逻辑225的表查找逻辑232。表查找逻辑232接收DELTA_D 228A,并且将来自耦接到表查找逻辑232的二维增量编码LUT 235的潜在的(potential)MWA码字DELTA_C(I)的集合编索引。
在操作期间,由表查找逻辑232使用DELTA_D 228A和DELTA_D 228B索引LUT 235。增量编码LUT 235存储与每个DELTA_D相关联的2^(m-1)个潜在的差(difference)码字DELTA_C(I)236的集合。每个差码字DELTA_C(i)236的集合(例如,集合238)对应于可能的DELTA_D 228B(例如,DELTA_D240)。每个DELTA_C(I)236的每个设置位表示在OLD_C 208和NEW_C之间对应的位位置处的状态改变。NEW_C表示NEW_D 215。
差码字DELTA_C(I)236中的一个或多个可以满足在位在OLD_C 208中被设置的位位置处没有位设置的MWA要求。如果不能由对应于当前DELTA_D的任何DELTA_C(I)(例如,对应于010的DELTA_D 240的四个DELTA_C(I)238中的任何DELTA_C(I)238)满足后一个条件,则尝试的NEW_D 215的编码失败。这样的失败是编码NEW_D 215必需的访问的存储单元的集合的全部单元先前已经被写入的指示。在后一种情况下,这由在MWA编码装置200的外部的监管逻辑负责,以决定做什么。例如,在WOM类型存储单元的情况下,不能写入如由编码器200编码的NEW_D。尝试这样做将尝试改变已经被写入的一个或多个单个写入存储单元的状态。
应当注意,可以在比使用用于编码操作的MWA编码装置200的时间更早的时间处确定LUT 235中的项目。可以通过利用最多两个设置的位生成(2^m-1)位字的全部位组合以创建LUT DELTA_C(I)值236来创建LUT项目。然后,可以使用MCRA解码器诸如上面所描述的解码器220对每个这样的LUT DELTA_C(I)值进行解码。MCRA解码器确定对应于解码器输入处的LUTDELTA_C(I)值的LUT DELTA_D值。然后,DELTA_C(I)值在LUT中与出现在解码器的输出处的DELTA_D值相关联。(例如,使用图2上所示的LUT可视化,解码为特定DELTA_D的DELTA_C(I)值被插入与该DELTA_D相关联的LUT行中)。
编码器200还包括通信地耦接到增量编码LUT 235的DELTA_C有效性测试和选择逻辑245。DELTA_C有效性测试和选择逻辑245确定(若有的话)对应于当前DELTA_D的DELTA_C(I)中的哪些满足如上所述的MWA要求。DELTA_C有效性测试和选择逻辑245的AND逻辑部分(图2中未示出)接收OLD_C 208和DELTA_C(I)字中的每个。AND逻辑部分通过确认OLD_C208与DELTA_C(I)的逐位比较导致全部逻辑“0”来测试DELTA_C(I)字中的每个。
如果是这样,则DELTA_C有效性测试和选择逻辑245通过对应于当前DELTA_D且满足MWA要求的DELTA_C(I)中选择的一个,使得能够进行存储单元的集合中的OLD_C 208的更新。所选择的DELTA_C(I)被命名为“DELTA_C”250。应当注意,仅DELTA_C 250的设置位需要被写入到存储器阵列存储单元的子集,以写入NEW_C。换言之,通过用NEW_C替代OLD_C208,编码的NEW_D 215可以被存储在与编码的OLD_D 212相同的存储器位置中。并且可以通过改变仅对应于DELTA_C 250的一个或两个设置位的这些存储单元的状态,OLD_C 208可以用NEW_C替代。
图6是根据各种示例方法和实施例图示示出基于模式生成器(pattem generator)的半导体存储器单元MWA编码装置600的框图。MWA编码装置600包括如利用图3、图4和图5所示出的且如以上参考图2的编码装置200所描述的MCRA解码器220。MCRA解码器220接收来自半导体存储器阵列205中的存储单元的子集的现有的(2^m)-1位宽MWA码字OLD_C 208。OLD_C 208表示现有的m位数据字OLD_D 212。MCRA解码器220对OLD_C208解码以确定OLD_D 212。
MWA编码装置600还包括耦接到MCRA解码器220的第一m位宽XOR逻辑225。XOR逻辑225接收将要写入的OLD_D 208和NEW_D 215。XOR逻辑225对OLD_D 212和NEW_D 215执行逐位XOR操作,以便创建DELTA_D 228。
编码装置600还包括通信地耦接到第一m位宽XOR逻辑225的m位模式生成器635。模式生成器635生成m位中间数据字(“DATA_I”)638。应当注意,不需要顺序地或以任何特定的次序生成DATA_I 638。
编码装置600还包括耦接到第一m位XOR逻辑225并耦接到m位模式生成器635的第二m位XOR逻辑642。第二m位XOR逻辑642接收DELTA_D228和DATA_I 638,并且对DELTA_D 228和DATA_I 638执行逐位XOR操作。这样做创建m位中间数据差字(“DELTA_D_I”)645。
编码装置600还分别包括第一二进制加权编码器650和第二二进制加权编码器655。第一二进制加权编码器650将DELTA_D_I 645变换为第一(2^m)-1位试验(trial)码字分量DELTA_C_TRIAL_1660。DELTA_C_TRIAL_1660具有在对应于DELTA_D_I 645的整数值的位位置处设置的单个位。例如,“110”的DELTA_D_I 645具有整数值6。DELTA_C_TRIAL_1 660是“0100000”,其中从右边第六位设置为逻辑“1”。同样地,第二二进制加权编码器655将DATA_I 638变换为第二(2^m)-1位试验码字分量DELTA_C_TRIAL_2 664。DELTA_C_TRIAL_2 664具有在对应于DATA_I的整数值的位位置处设置的单个位。
编码装置600还包括或(OR)逻辑668,该或逻辑668耦接到第一二进制加权编码器650和第二二进制加权编码器655。OR逻辑668对DELTA_C_TRIAL_1 660和DELTA_C_TRIAL_2 664执行逐位OR操作,以便将DELTA_C_TRIAL_1 660和DELTA_C_TRIAL_2 664结合为试验差码字DELTA C TRIAL 672。因此,DATA I 638与DELTA D 228相结合且被编码以形成DELTA_C_TRIAL 672。DELTA_C_TRIAL 672的每个设置位表示在OLD_C 208和新的码字NEW_C之间的对应的位位置处的状态改变。
MWA编码装置600包括通信地耦接到m位模式生成器635的DELTA_C有效性测试逻辑675。DELTA_C有效性测试逻辑675确定DELTA_C_TRIAL672是否满足没有位设置在位在OLD_C中被设置的位位置处的MWA要求。DELTA_C有效性测试逻辑675对OLD_C 208与DELTA_C_TRIAL 672执行逐位比较,并且确认该比较导致全部逻辑“0”。如果是这样,则DELTA_C有效性测试逻辑675使得通过命名为“DELTA_C”680的DELTA_C_TRIAL 672能够进行存储单元的集合中的OLD_C 208的更新。如果DELTA_C有效性测试逻辑675确定DELTA_C_TRIAL 672不满足MWA要求,则从模式生成器635请求不同的DATA_I 638,以便生成不同的DELTA_C_TRIAL 672。因此,MWA编码装置600在数据字域生成试验(trial),以发现满足MWA要求的新的码字。
图7是根据各种示例方法和实施例图示说明基于模式生成器的半导体存储器单元MWA编码装置700的框图。MWA编码装置700在码字域中生成试验,以发现满足MWA要求且适于要被存储的新的数据字NEW_D的新的码字。
MWA编码装置700包括码字差模式生成器705。码字差模式生成器705生成试验差码字DELTA_C_TRIAL 708A。DELTA_C_TRIAL 708A的每个设置位表示在当前存储在半导体存储器阵列205中的存储单元的子集中的现有的(2^m)-1位宽MWA码字OLD_C 208和替代OLD_C 208的新的码字NEW_C之间对应的位位置处的状态改变。OLD_C表示现有的m位数据字OLD_D;并且NEW_C表示要被存储的新的数据字NEW_D 215。应当注意,不需要顺序地或以任何特定的次序生成DELTA_C_TRIAL 708A。
编码装置700还包括有效性测试逻辑712,该有效性测试逻辑712耦接到码字差模式生成器705。有效性测试逻辑712确定DELTA_C_TRIAL 708A是否满足没有位设置在位在OLD_C 208中被设置的位位置处的第一条件。有效性测试逻辑712还确定DELTA_C_TRIAL 708A是否满足可解码为对应于NEW_D 215的新的试验数据字(“NEW_D_TRIAL”)720的第二条件。如果满足第一条件和第二条件二者,则有效性测试逻辑712还通过等于DELTA_C_TRIAL 708B的DELTA_C 250使能够对OLD_C 208更新。
有效性测试逻辑712包括第一DELTA_C有效性测试逻辑725,该第一DELTA_C有效性测试逻辑725耦接到码字差模式生成器705。第一DELTA_C有效性测试逻辑725接收DELTA_C_TRIAL 708A和OLD_C 208。第一DELTA_C有效性测试逻辑725对DELTA_C_TRIAL 708A和OLD_C 208执行逐位比较操作。如果在任何位位置处的位在DELTA_C_TRIAL 708A和在OLD_C 208二者中被设置,则第一DELTA_C有效性测试逻辑725从模式生成器请求不同的DELTA_C_TRIAL 708A。
MWA编码装置700的有效性测试逻辑712还包括或(OR)逻辑730,该OR逻辑730被耦接到第一DELTA_C有效性测试逻辑725。OR逻辑730接收DELTA_C_TRIAL 708B和OLD_C 208,并且经由逐位逻辑或操作将DELTA_C_TRIAL 708B和OLD_C 208结合。试验码字NEW_C_TRIAL 735由该结合产生。
MWA编码装置700的有效性测试逻辑712还包括MCRA解码器220,该MCRA解码器220被耦接到或逻辑730。MCRA解码器220接收NEW_C_TRIAL 735,并且对NEW_C_TRIAL 735解码,产生如先前在有效性测试逻辑712的概述的上下文中所提到的NEW_D_TRIAL 720。
MWA编码装置700的有效性测试逻辑712包括耦接到MCRA解码器220的第二DELTA_C有效性测试逻辑745。第二DELTA_C有效性测试逻辑745接收NEW_D_TRIAL 720和NEW_D 215,并且对NEW_D_TRIAL 720和NEW_D 215执行逐位比较操作。如果NEW_D_TRIAL 720不等于NEW_D215,则第二DELTA_C有效性测试逻辑745从模式生成器请求不同的DELTA_C_TRIAL 708A。
不等于NEW_D 215的NEW_D_TRIAL 720的状态是一种指示,即虽然如通过第一DELTA_C有效性测试逻辑725确定的,通过没有位设置在与OLD_C208中设置位的位置相同的位置中,DELTA_C_TRIAL 708B满足MWA有效性要求,但是DELTA_C_TRIAL 708B根本不对应于要被存储的新的数据字NEW_D 215。
MWA编码装置700的有效性测试逻辑712还包括DELTA_C使能逻辑750,该DELTA_C使能逻辑750被耦接到第二DELTA_C有效性测试逻辑745。DELTA_C使能逻辑750接收当NEW_D_TRIAL 720等于NEW_D 215时来自第二DELTA_C有效性测试逻辑745的指示,并且在该情况下,DELTA_C使能逻辑750使DELTA_C 250能够被写入存储器阵列205中的存储单元的子集。
本文所描述的装置和方法在除了对要被写入存储器阵列的数据字编码之外的应用中可以是有用的。本文所描述的装置200、装置400、装置600和装置700的示例旨在提供对各种实施例的结构的一般理解。它们不旨在作为可能使用这些示例结构和序列的装置、系统和方法的全部元件和特征的完整的描述。
本文所描述的实施例和方法以这样的方式对要被写入半导体存储器阵列的数据字进行编码,以避免尝试已经写入的存储器存储单元的重写。这样做可以减少由WOM存储技术的过驱动或过充电存储单元元件导致的不稳定性,和/或通过减少大块/块擦除和重写,可以增加可重写存储器类型的整体总寿命写操作。可以导致较高的设备可靠性和较低的成本。
通过图示说明而非限制的方式,附图示出其中可以实践主题的具体实施例。应当注意,在连接线的一端或两端处的箭头旨在示出电流量、数据流、逻辑流等的大体方向。连接器线箭头并不旨在限制这样的流为特定的方向,诸如排除在相反方向上的任何流。足够详细地描述了所示出的实施例,以使本领域技术人员能够实践本文所公开的教导。可以使用其它实施例并且由此得出其它实施例,使得可以进行结构替代和结构改变与逻辑替代和逻辑改变,而不脱离本公开的保护范围。因此,该详细的说明书不具有限制意义。由随附权利要求和这样的权利要求被赋予到的等同物的全部范围来限定各种实施例的广度。
本发明主题的此类实施例在本文中可以被单独称为或统称为术语“发明”以仅为了方便,而不旨主动将本申请限制到任何单个发明或发明概念(如果实际上公开了一个以上的发明或发明概念)。因此,虽然本文中已经示出和描述具体实施例,但是计划实现相同目的的任何布置均可替代示出的具体实施例。本公开旨在覆盖各种实施例的任何和全部改编或变型。
为了符合37C.F.R.§1.72(b),提供了说明书摘要,37C.F.R.§1.72(b)要求将允许读者快速确知技术公开的本质的摘要。可以理解,摘要将不用于解释或限制权利要求的保护范围或含义。在前述的详细的说明书中,为了精简本公开,各种特征被组合在单个实施例中。这种公开的方法不应被解释为要求比在每个权利要求中明确列举的特征更多的特征。相反,发明的主题可以存在于少于单个公开的实施例的全部特征。从而,所附权利要求被并入到详细的说明书中,其中每个权利要求本身作为单独的实施例。