在電子設(shè)備運(yùn)行過(guò)程中,存儲(chǔ)器發(fā)生故障或失效,不僅導(dǎo)致經(jīng)濟(jì)損失,而且還有可能導(dǎo)致災(zāi)難性的后果。因此存儲(chǔ)器的測(cè)試也成為當(dāng)今世界的一個(gè)重要問(wèn)題,在軍事裝備中存儲(chǔ)器正扮演著很重要的角色。目前,基于虛擬儀器設(shè)計(jì)的自動(dòng)測(cè)試系統(tǒng)已成為主流,而軟件則是虛擬儀器的核心。在此,以LabVIEW為軟件工具,結(jié)合相應(yīng)的數(shù)字I/O卡,開(kāi)發(fā)一套用于某裝備存儲(chǔ)器檢測(cè)的檢測(cè)系統(tǒng)。
1 總體方案及硬件設(shè)計(jì)
1.1 需求分析
該系統(tǒng)所選的被測(cè)對(duì)象是某型裝備中的公用存儲(chǔ)器,測(cè)試通道有地址總線18根、數(shù)據(jù)總線18根,控制線3根(控制線共7根,其中3根有效)。其中,狀態(tài)輸出信號(hào)表示讀/寫(xiě)信號(hào)是否有效;讀/寫(xiě)信號(hào)表示對(duì)RAM的讀/寫(xiě)操作;數(shù)據(jù)輸出有效信號(hào)表示數(shù)據(jù)輸出是否有效。容量8 KB,讀周期400 ns,寫(xiě)周期500 ns,供電電壓5 V。
1.2 系統(tǒng)硬件設(shè)計(jì)
該硬件系統(tǒng),以中心計(jì)算機(jī)為主體,以插入其中的數(shù)字I/O卡為功能部件。通過(guò)計(jì)算機(jī)控制數(shù)字I/O卡進(jìn)行數(shù)字信號(hào)的輸出和測(cè)量。由此可知,系統(tǒng)平臺(tái)的搭建關(guān)鍵是選擇合適的數(shù)字I/O卡。該系統(tǒng)測(cè)試的主要信號(hào)有地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)??紤]到輸出位數(shù)和速度,用NI公司的數(shù)字波形發(fā)生器/分析儀 6542,它具有32路可雙向控制的通道,可方便地進(jìn)行信號(hào)輸出和對(duì)信號(hào)的采集。該模塊每個(gè)通道都有1 Mb,8 Mb和64 Mb的板載內(nèi)存,便于測(cè)試信息的存儲(chǔ)。
1.3 接口適配器設(shè)計(jì)和端口的分配
接口適配器用于連接被測(cè)設(shè)備和測(cè)試平臺(tái)。設(shè)計(jì)時(shí)只選用一塊6542模塊,所以只有32個(gè)輸出通道,不能實(shí)現(xiàn)所有信號(hào)的有效同步輸出,設(shè)計(jì)時(shí)需采用數(shù)據(jù)線和地址線共用的原則予以解決。接口適配器的組成框圖如圖1所示。選擇6542的port0~port2作為公用的地址線和數(shù)據(jù)線,port3作為控制線。鎖存器選擇雙向鎖存器,通過(guò)鎖存方向控制數(shù)據(jù)的輸入/輸出,片選控制線控制數(shù)據(jù)的鎖存,鎖存輸出控制線控制鎖存器里的數(shù)據(jù)讀出。
2 存儲(chǔ)器測(cè)試算法分析
2.1 存儲(chǔ)器故障類(lèi)型
存儲(chǔ)器故障總體可以分為單個(gè)單元的故障和單元之間的故障兩類(lèi)。單個(gè)單元的故障包括:粘滯故障(SAF)一個(gè)陣列總是0或1;轉(zhuǎn)換故障(TF),即一個(gè)特定單元在一定轉(zhuǎn)換序列后不能進(jìn)行0/1翻轉(zhuǎn);數(shù)據(jù)保持故障(DFR),即一個(gè)單元在一段時(shí)間后不能保持它的邏輯值等。單元之間的故障主要是耦合故障(CF),它包括字間故障和字內(nèi)故障。
2.2 March算法
針對(duì)存儲(chǔ)器不同的故障類(lèi)型,提出了多種存儲(chǔ)器的測(cè)試算法,如 March算法、Walking算法、Calloping算法等。其中,March算法具有較高的故障覆蓋率,較小的時(shí)間復(fù)雜度,在存儲(chǔ)器測(cè)試中得到廣泛應(yīng)用。其基本步驟用公式表示如下:
式中:Cij表示第i行,第j列的存儲(chǔ)單元;R表示讀操作;W表示寫(xiě)操作;∀ij表示全部c的集合;∑表示∀ij,集內(nèi)的總和;逗號(hào)“,”是公式內(nèi)各有序操作之間的分隔符;0或1表示背景數(shù)據(jù)和操作數(shù)據(jù)。根據(jù)公式可以算出測(cè)試的復(fù)雜度為 5N。簡(jiǎn)單說(shuō)就是按照一定的規(guī)則向存儲(chǔ)器寫(xiě)入和讀出數(shù)據(jù)。針對(duì)不同的故障模型,在測(cè)試中添加不同的數(shù)據(jù)背景可以實(shí)現(xiàn)相應(yīng)的故障覆蓋。通常,一種算法不能覆蓋所有的故障類(lèi)型,所以測(cè)試時(shí)要用兩種或兩種以上的算法。
2.3 March算法在檢測(cè)系統(tǒng)中的應(yīng)用
一般的March算法都是以位進(jìn)行操作的,而被測(cè)對(duì)象是18位的數(shù)據(jù)通道,存儲(chǔ)方式為字節(jié)存儲(chǔ),因此應(yīng)該對(duì)March算法進(jìn)行擴(kuò)展。測(cè)試時(shí)不僅要考慮到字間故障,而且也應(yīng)該考慮一個(gè)字內(nèi)多個(gè)位之間的耦合故障。面對(duì)這種情況就應(yīng)該增加March算法的測(cè)試數(shù)據(jù)。對(duì)于N位的存儲(chǔ)器,共有l(wèi)og2N+1種測(cè)試數(shù)據(jù),文獻(xiàn)[7]給出了數(shù)據(jù)背景的計(jì)算公式。被測(cè)對(duì)象有18位存儲(chǔ)器,通過(guò)計(jì)算有5組測(cè)試數(shù)據(jù):
3 系統(tǒng)的軟件設(shè)計(jì)
3.1 軟件總體方案
該系統(tǒng)軟件部分基于虛擬儀器技術(shù)進(jìn)行開(kāi)發(fā)。選擇LabVIEW作為測(cè)試程序開(kāi)發(fā)工具,Access作為數(shù)據(jù)庫(kù)工具。整個(gè)軟件由主控程序、人機(jī)界面、測(cè)試模塊、診斷模塊、數(shù)據(jù)庫(kù)模塊組成。主控程序負(fù)責(zé)各個(gè)模塊之間的調(diào)用和協(xié)調(diào);人機(jī)界面實(shí)現(xiàn)用戶(hù)與測(cè)試系統(tǒng)的交互;測(cè)試模塊完成數(shù)字信號(hào)的輸出和采集;數(shù)據(jù)庫(kù)模塊主要用于實(shí)現(xiàn)整個(gè)系統(tǒng)數(shù)據(jù)的管理。
3.2 主程序
主程序依托LabVIEW軟件,采用模塊化的設(shè)計(jì)思想,主要包括程序初始、測(cè)試數(shù)據(jù)、讀/寫(xiě)數(shù)據(jù)、取消設(shè)置、和錯(cuò)誤判斷五個(gè)部分。程序初始模塊,用于進(jìn)行面板參數(shù)設(shè)置和板卡設(shè)置;測(cè)試數(shù)據(jù)模塊。用于:通過(guò)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢(xún),提取地址和數(shù)據(jù)等信息;通過(guò)對(duì)讀/寫(xiě)信息的判斷,選擇數(shù)據(jù)信息輸出的讀入。如果測(cè)試時(shí)出現(xiàn)異?,F(xiàn)象,則由程序輸出自定義錯(cuò)誤,通過(guò)自定義錯(cuò)誤傳遞故障信息,同時(shí)跳出讀/寫(xiě)循環(huán);取消設(shè)置,用來(lái)恢復(fù)測(cè)試時(shí)改變的各個(gè)參數(shù);錯(cuò)誤判斷模塊,用于判斷錯(cuò)誤類(lèi)型,通過(guò)判斷自定義錯(cuò)誤攜帶的信息判斷故障類(lèi)型,并反饋給人機(jī)界面。圖2是主程序的程序框圖。
3.3 測(cè)試程序
對(duì)存儲(chǔ)器測(cè)試時(shí)采用March算法。March 算法的特點(diǎn)是向存儲(chǔ)器順序地寫(xiě)入和讀出數(shù)據(jù),通過(guò)分析數(shù)據(jù)判斷存儲(chǔ)器的故障。因此在測(cè)試程序的編制過(guò)程中,數(shù)字信號(hào)的輸入/輸出較為關(guān)鍵。圖3是讀/寫(xiě)操作的程序框圖。根據(jù)適配器的實(shí)際方案,數(shù)據(jù)的輸入/輸出在設(shè)計(jì)時(shí)也有一定的要求。向存儲(chǔ)器寫(xiě)數(shù)據(jù)時(shí)分為三個(gè)步驟:向鎖存器寫(xiě)地址,向鎖存器寫(xiě)數(shù)據(jù),鎖存器和狀態(tài)輸出。讀取存儲(chǔ)器的數(shù)據(jù)分為4個(gè)步驟:向鎖存器寫(xiě)地址,鎖存器和狀態(tài)輸出,檢測(cè)數(shù)據(jù)輸出有效信號(hào),讀鎖存器數(shù)據(jù)。實(shí)際應(yīng)用時(shí),可以根據(jù)不同的芯片,設(shè)置不同的延遲時(shí)間,以滿(mǎn)足讀/寫(xiě)周期的要求。
3.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
軟件設(shè)計(jì)時(shí),采用主控程序與測(cè)試信息分離的思想,通過(guò)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)測(cè)試信息。數(shù)據(jù)庫(kù)采用比較常用的數(shù)據(jù)庫(kù)Access。測(cè)試時(shí),根據(jù)不同的測(cè)試算法,將不同測(cè)試數(shù)據(jù)編繪到數(shù)據(jù)庫(kù)中。測(cè)試時(shí)主程序通過(guò) SQL語(yǔ)言對(duì)數(shù)據(jù)庫(kù)進(jìn)行調(diào)用,控制數(shù)字信號(hào)的輸入/輸出,從而實(shí)現(xiàn)測(cè)試內(nèi)容的可擴(kuò)展性。根據(jù)March算法的規(guī)則,設(shè)計(jì)數(shù)據(jù)表時(shí),要設(shè)計(jì)編號(hào)、讀/寫(xiě)操作、地址、數(shù)據(jù)和結(jié)束標(biāo)志5列。編號(hào)用來(lái)實(shí)現(xiàn)March算法的順序執(zhí)行;讀/寫(xiě)操作用于主程序中判斷數(shù)據(jù)的讀/寫(xiě)操作;地址用于存儲(chǔ)地址信息;數(shù)據(jù)用于存儲(chǔ)數(shù)據(jù)信息;結(jié)束標(biāo)志用于結(jié)束本算法的測(cè)試。數(shù)據(jù)庫(kù)存儲(chǔ)表格如圖4所示。第一行表示第一次讀/寫(xiě)操作,向0地址寫(xiě)入數(shù)據(jù)80。
4 結(jié)語(yǔ)
采用NI系列PXI板卡及靈活方便的LabVIEW軟件平臺(tái),構(gòu)建了一套某裝備存儲(chǔ)器的檢測(cè)系統(tǒng)。通過(guò)數(shù)據(jù)庫(kù)實(shí)現(xiàn)了測(cè)試算法與測(cè)試程序的獨(dú)立性,可以根據(jù)不同的March算法進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果表示,該系統(tǒng)具有自動(dòng)測(cè)試性強(qiáng),容易操作,可擴(kuò)展性強(qiáng)等特點(diǎn),有效提高了對(duì)某裝備存儲(chǔ)器的測(cè)試效率。