在各種單片機(jī)應(yīng)用系統(tǒng)中,存儲(chǔ)器的正常與否直接關(guān)系到該系統(tǒng)的正常工作。為了提高系統(tǒng)的可靠性,對(duì)系統(tǒng)的可靠性進(jìn)行測(cè)試是十分必要的。通過(guò)測(cè)試可以有效地發(fā)現(xiàn)并解決因存儲(chǔ)器發(fā)生故障對(duì)系統(tǒng)帶來(lái)的破壞問(wèn)題。本文針對(duì)性地介紹了幾種常用的單片機(jī)系統(tǒng)RAM測(cè)試方法,并在其基礎(chǔ)上提出了一種基于種子和逐位倒轉(zhuǎn)的RAM故障測(cè)試方法。
1 RAM測(cè)試方法回顧
(1)方法1
參考文獻(xiàn)中給出了一種測(cè)試系統(tǒng)RAM的方法。該方法是分兩步來(lái)檢查,先后向整個(gè)數(shù)據(jù)區(qū)送入#00H和#FFH,再先后讀出進(jìn)行比較,若不一樣,則說(shuō)明出錯(cuò)。
(2)方法2
方法1并不能完全檢查出RAM的錯(cuò)誤,在參考文獻(xiàn)中分析介紹了一種進(jìn)行RAM檢測(cè)的標(biāo)準(zhǔn)算法MARCH—G。MARCH一G算法能夠提供非常出色的故障覆蓋率,但是所需要的測(cè)試時(shí)間是很大的。MARCH—G算法需要對(duì)全地址空間遍歷3次。設(shè)地址線為”根,則CPU需對(duì)RAM訪問(wèn)6×2n次。
(3)方法3
參考文獻(xiàn)中給出了一種通過(guò)地址信號(hào)移位來(lái)完成測(cè)試的方法。在地址信號(hào)為全O的基礎(chǔ)上,每次只使地址線Ai的信號(hào)取反一次,同時(shí)保持其他非檢測(cè)地址線Aj(i≠j)的信號(hào)維持0不變,這樣從低位向高位逐位進(jìn)行;接著在地址信號(hào)為全1的基礎(chǔ)上,每次只使地址線Ai的信號(hào)取反一次,同時(shí)保持其他非檢測(cè)地址線Aj(i≠j)的信號(hào)維持1不變,同樣從低位向高位逐位進(jìn)行。因此地址信號(hào)的移位其實(shí)就是按照2K(K為整數(shù),最大值為地址總線的寬度)非線性尋址,整個(gè)所需的地址范圍可以看成是以全0和全1為背景再通過(guò)移位產(chǎn)生的。在地址變化的同時(shí)給相應(yīng)的存儲(chǔ)單元寫(xiě)入不同的偽隨機(jī)數(shù)據(jù)。在以上的寫(xiě)單元操作完成后,再倒序地將地址信號(hào)移位讀出所寫(xiě)入的偽隨機(jī)數(shù)據(jù)并進(jìn)行檢測(cè)。設(shè)地址線為n根,則CPU只對(duì)系統(tǒng)RAM中的2n+2個(gè)存儲(chǔ)單元進(jìn)行訪問(wèn)。
2 基于種子和逐位倒轉(zhuǎn)的RAM測(cè)試方法
基于種子和逐位倒轉(zhuǎn)的測(cè)試方法是在方法3的基礎(chǔ)上進(jìn)一步改進(jìn)獲得的。方法3主要是使用全O和全1兩個(gè)背景數(shù)來(lái)移位展開(kāi)的,與MARCH—G算法相比獲得的故障覆蓋率稍微低些,但使用了較少的地址單元。這里我們把方法3中的背景數(shù)稱為“種子”。以地址線為8根的RAM為例,種子分別取00000000和11111111兩個(gè)數(shù),取00000000、11111111、0000llll和llll0000四個(gè)數(shù),以及取00000000、11111111、00001111、11110000、00110011、1100llOO、01010101和10101010八個(gè)數(shù)來(lái)移位展開(kāi)測(cè)試,所達(dá)到的故障覆蓋率是不一樣的。種子數(shù)為2的改進(jìn)方法要低于MARCH—G算法的故障覆蓋率,種子數(shù)為4的改進(jìn)方法與MARCH—G算法相當(dāng),種子數(shù)為8的改進(jìn)方法能夠超過(guò)MARCH—G算法的效果。整體上基于種子和逐位倒轉(zhuǎn)的改進(jìn)方法是可以代替MARCH—G算法的,但是種子數(shù)目不同所需要的尋址次數(shù)也是不同的。設(shè)地址線為n根,種子數(shù)為2時(shí)需要訪問(wèn)RAM共計(jì)4”+4次,種子數(shù)為4時(shí)需要訪問(wèn)RAM共計(jì)8n+8次,種子數(shù)為8時(shí)需要訪問(wèn)RAM共計(jì)16n+16次,而MARCH—G算法需要訪問(wèn)RAM共計(jì)6×2n次??梢?jiàn),基于種子和逐位倒轉(zhuǎn)的改進(jìn)方法比MARCH—G算法的測(cè)試時(shí)間開(kāi)銷(xiāo)大大降低。同時(shí),故障覆蓋率會(huì)隨著種子數(shù)目的增加而提高,當(dāng)然不同種子數(shù)時(shí)所需要的測(cè)試時(shí)間開(kāi)銷(xiāo)也不同。在實(shí)際測(cè)試應(yīng)用中要根據(jù)測(cè)試時(shí)間和測(cè)試故障覆蓋率的需求來(lái)選擇合適的種子數(shù)目,才能達(dá)到滿意的效果。
3 結(jié) 語(yǔ)
本文介紹了單片機(jī)系統(tǒng)RAM測(cè)試的一般方法,并在原有基礎(chǔ)上提出了一種基于種子和逐位倒轉(zhuǎn)的RAM故障測(cè)試方法。它具有診斷耗時(shí)短、故障覆蓋率高的特點(diǎn),因而有著很高的應(yīng)用價(jià)值。