张国贤,王晓玲,周昕杰
(中国电子科技集团公司第五十八研究所,江苏 无锡 214035)
自摩尔定律提出以来,集成电路持续地按此定律增长,这是基于栅长不断缩小的结果,器件栅长的缩小基本上依照等比例缩小的原则,促进其他工艺参数的提高。目前集成电路CMOS基本单元已经进入纳米时代。和CMOS发展趋势一样,存储器具有更大容量、更小体积和更低功耗的发展前景。对于EEPROM来说,从问世至今几十年的时间里,发展速度惊人,目前容量已经发展到几十兆。EEPROM的发展是以EEPROM的单元结构的变革为基础的。良好的EEPROM单元结构具有以下特点[1]:
(1)简化的工艺。如何采用简化的工艺做出EEPROM是进行EEPROM单元结构变革的首要考虑因素;
(2)减少单元面积。在保证性能的前提下,面积必须做得尽可能小,以提高集成度;
(3)提高可靠性。耐久度和保持特性是EEPROM的两个重要的可靠性参数。单元的设计优化是保证EEPROM具有良好耐久性的基础。
由于存储器容量不断地增大,存储器阵列在生产过程中出现缺陷的可能性将大大增加。为了提高产品的可靠性及经济效益,冗余设计技术被提出来。利用冗余设计技术,将有误的数据发现并纠正。冗余纠错技术包括:硬件冗余纠错和软件冗余纠错。硬件冗余纠错指用冗余的单元替代正常阵列中有缺陷的单元。软件冗余纠错是指用编码技术,插入纠错码,将错误的存储信息纠正。
硬件冗余纠错技术主要有以下几类:列冗余、行冗余、行列冗余。
列冗余是指对位线,即Y方向上的冗余。如果正常存储阵列中在位线(BL)即Y方向单元存在缺陷,以位线为单位,使用冗余的位线(BR)替代有缺陷的位线(BL)。图1所示为列冗余示意图。
行冗余是指对字线,即X方向上的冗余,如果正常存储阵列中在字线(WL)即X方向单元存在缺陷,以字线为单位,使用冗余的字线(WR)替代有缺陷的字线(WL)。图2为行冗余示意图。
行列冗余是指对字线和位线,即X、Y方向均添加冗余,如果正常存储阵列中在字线(WL)即X方向,位线(BL)即Y方向单元均存在缺陷,以字线或者位线为单位,使用行列冗余线(WR、BR)替代有缺陷的字线(WL)和位线(BL)。图3为行列冗余示意图。
上述的三种冗余纠错技术,采用哪种技术,要根据芯片缺陷地址的分布来决定。如果存储阵列中的缺陷单元主要集中在位线上,则使用列冗余;如果存储阵列中的缺陷单元主要集中在字线上,则使用行冗余;如果存储阵列中的缺陷单元在字线和位线上都存在,则使用行列冗余。
硬件冗余纠错操作电路包括地址接收电路、地址译码电路。地址译码电路接收地址输入信号后,可以在存储阵列中找到唯一对应的存储单元,然后完成各种读写操作。
若所选中的操作存储单元存在缺陷,那将不能完成正常的存储功能(包括编程、擦除、读),则希望能够使用正常的冗余存储单元来替代这些缺陷单元,为此必须增加CAM(Content Addressable Memory)单元和地址比较电路。CAM单元的作用是存储缺陷地址,地址比较电路的作用是在地址译码前将输入地址与缺陷地址进行比较,并将比较结果送到行或列译码器,根据比较的结果以决定是否需要进行冗余替换。
当正常的存储阵列中存在缺陷单元时,首先要将缺陷单元地址写入CAM单元,每次译码电路启动前,都需要将存储阵列单元地址和CAM单元进行比较,如果比较结果显示为缺陷地址,标志为1,启动冗余译码电路,同时屏蔽正常的译码电路,有缺陷的单元被替换,完成冗余替换操作。如果比较结果显示为非缺陷地址,标志为0,则不启动冗余译码电路,仍然对正常阵列中的单元操作,不进行冗余替换。冗余替换电路如图4所示。
在外围第一个冗余代替存储单元中存储数据为20H,代表第32页存储阵列存在缺陷,将被替代。当地址输入为20H时,冗余替代电路经过判断后,Y<0>输出为“1”,用冗余阵reduan1代替有缺陷的存储阵列。冗余替代电路工作正常,仿真结果如图5所示。
软件冗余纠错技术考虑采用海明码编码技术,指在内部增加校验逻辑[2]。发现并纠正错误的数据。
海明码是R. Haiming提出的一种可以纠正一位错的差错控制码,海明码是利用在信息位为k位,增加r位冗余位,构成一个n=(k+r)位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式:
海明码的编码效率为:
式中:k为信息位位数;R为增加冗余位位数。
我们以8位存储数据适于编程的方法举例说明海明码的编码和解码。
(1)海明码的编码
已知信息码为:“11001100”(k-8),把冗余码A、B、C…顺序插入信息码中,得海明码码字:“A B 1 C 100 D 1100”,码位:12345678 9101112,其中A,B,C,D分别插于2k位(k=0,1,2,3),码位分别为1,2,4,8。
冗余码A,B,C,D的线性码位是:
A:1,3,5,7,9,11;
B:2,3,6,7,10,11;
C:4,5,6,7,12;(注5=4+1;6=4+2;7=4+2+1;12=8+ 4)
D:8,9,10,11,12。
把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0):
A=Σ(0,1,1,0,1,0)=1
B=Σ(0,1,0,0,1,0)=0
C=Σ(0,1,0,0,0)=1
D=Σ(0,1,1,0,0)=0
海明码为:“10111000 1100”。
(2)海明码的解码
已知接收的码字为:“10011000 1100”(k=8)
设错误累加器(err)初值=0
求出冗余码的偶校验和,并按码位累加到err中:
A=Σ(1,0,1,0,1,0)=1 err=err+20=1
B=Σ(0,0,0,0,1,0)=1 err=err+21=3
C=Σ(1,1,0,0,0)=0 err=err+0=3
D=Σ(0,1,1,0,0)=0 err=err+0=3
由err≠0可知接收码字有错,码字的错误位置就是错误累加器(err)的值3。
纠错,即对码字的第3位值取反得正确码字:“101110001 100”。把位于2 位冗余码删除得信息码:“11001100”。
由以上海明码理论,扩展存储块存储位数为12位,其中有4位是冗余位,放置纠错码,增加了外围逻辑电路对存储数据的纠错,从而保证数据的正确性。具体实现电路如图6所示。
用00001111一组数据进行模拟纠错仿真,生成的纠错码为0001,为验证纠错功能,我们修改了一位数据,修改后数据连纠错码一起组成新的一串数据:100011110001,代入验证。结果纠错电路将我们自行修改的10001111数据,该回00001111。电路实现了预期的功能,仿真波形如图7所示。
由于EEPROM存储器容量不断的增大,存储器阵列在生产过程中出现缺陷的可能性将大大增加。为了提高产品的可靠性及经济效益,本文引入了冗余设计技术。利用冗余设计技术,将有误的数据发现并纠正。冗余纠错技术包括:硬件冗余纠错和软件冗余纠错。硬件冗余纠错指用冗余的单元替代正常阵列中有缺陷的单元。软件冗余纠错是指用编码技术,插入纠错码,将错误的存储信息纠正。
利用硬件和软件冗余纠错技术保证了EEPROM的可靠性,为目前的工作提供了技术基础,并为以后的EEPROM设计工作提供了良好的技术借鉴。
[1]于宗光,郝跃.电可改写非挥发存储器[M].北京:国防工业出版社,2002.
[2]张钰,郑阳明,等.皮卫星星载计算机存储模块的容错结构设计[J].宇航学报,2008,(29):2057-2016.