馮玉光 林文軍 奚文駿 冷 江
(海軍航空工程學(xué)院 煙臺 264001)
目前,數(shù)字電路板常用的測試方法有以下幾種:在線測試、功能測試和總線測試[1~2]。其中,功能測試將某個(gè)功能模塊作為測試對象,通過施加激勵(lì)、觀察響應(yīng),判斷此功能模塊能否完成其功能。數(shù)字電路板的功能測試關(guān)鍵在于驗(yàn)證測試向量如何生成。時(shí)序電路是數(shù)字電路板的重要組成部分,其測試相較于組合電路而言困難的多,因此,對其測試方法的研究是很有必要的。
對某型測試設(shè)備進(jìn)行反解反繪是我們了解其功能、并進(jìn)行仿制的重要手段,對于其中的數(shù)字電路板,需要對其通電測試,以驗(yàn)證其功能和反解反繪的正確性,為了測試方便,我們假定電路板不存在故障,若測試過程中發(fā)現(xiàn)電路功能與預(yù)期不一致,則認(rèn)為是電路板反解反繪過程中電路模塊原理圖繪制錯(cuò)誤。
自上世紀(jì)60年代門級電路檢測方法問世以來,邏輯電路的測試出現(xiàn)了“結(jié)構(gòu)測試”和“功能測試”并存的局面。結(jié)構(gòu)測試是從電路的結(jié)構(gòu)出發(fā),通過電路的輸入/輸出引腳,檢測連線上是否存在故障,采用的是數(shù)字電路的故障模型,而功能測試是從電路的功能出發(fā),檢查電路是否正常,采用的是數(shù)字電路的功能模型。
時(shí)序電路的測試,可以采用兩種方法,一種是上面所說的采用故障檢查方法,若該電路在結(jié)構(gòu)上不存在故障,則認(rèn)為該電路正常。還有一種就是采用其功能驗(yàn)證測試方法,輸入端施加功能驗(yàn)證向量,輸出端采集響應(yīng),若響應(yīng)與預(yù)期一致,則說明該電路正常。時(shí)序電路的功能測試方法,關(guān)鍵在于其功能測試向量,若時(shí)序電路的功能測試向量是已知的,我們將根據(jù)該向量生成的激勵(lì)施加到電路的輸入端,在輸出端觀測其響應(yīng)即可。而對于未知其功能測試向量的時(shí)序電路模塊,需要分析其功能,生成其功能測試向量。
有限狀態(tài)機(jī)的模型可以采用六元組:M=(S,I,O,δ,λ,s0)來描述[3]。其中:S表示時(shí)序模塊狀態(tài)的集合,I表示時(shí)序電路輸入向量的集合,O表示時(shí)序電路輸出向量的集合,其中S、I和O均為非空的集合。s0表示時(shí)序電路的初始狀態(tài)。
δ表示時(shí)序電路的狀態(tài)轉(zhuǎn)換函數(shù),δ:S×I→S,為笛卡爾積S×I映入S的映射,其中,S表示狀態(tài),I表示輸入向量。
λ表示時(shí)序電路輸出函數(shù),λ:S×I→O,為笛卡爾積S×I映入O的映射,其中,S表示當(dāng)前狀態(tài),I表示輸入向量,O表示輸出向量。
時(shí)序電路數(shù)學(xué)模型最常用的方式是用五元組F=(Q,I,Z,δ,λ)來描述 ,這其中,包括了兩個(gè)集合和三個(gè)映射,其中:Q是狀態(tài)集合,I是輸入向量的集合,Z是輸出向量的集合,q0是初始狀態(tài)(復(fù)位狀態(tài));δ:笛卡爾積Q×I映入Q 的映射,即Q×I→Q;λ:笛卡爾積Q×I映入Z的映射,即Q×I→Z。
從二者的定義可以看出,時(shí)序電路可以用有限狀態(tài)機(jī)來表示,而有限狀態(tài)機(jī)又可以采用有向圖來表示,因此,時(shí)序電路的功能可以采用有向圖G=(V,E)來描述,其中,V是頂點(diǎn)集,E是有向邊集。頂點(diǎn)表示狀態(tài),有向邊代表狀態(tài)轉(zhuǎn)換,輸入輸出標(biāo)注在有向邊旁。
時(shí)序電路功能分析,需要求取時(shí)序電路的狀態(tài),即在輸入作用各狀態(tài)之間的轉(zhuǎn)換關(guān)系,從而得到其狀態(tài)轉(zhuǎn)換圖,在電路無故障時(shí),其狀態(tài)轉(zhuǎn)換是其穩(wěn)定狀態(tài)之間的轉(zhuǎn)換。基于邏輯值計(jì)算求取時(shí)序電路狀態(tài)的是一種代數(shù)方法[4],采用該方法,可以使用較為精確的模型,較為真實(shí)地反映信號在電路中的傳播和改變情況,運(yùn)算的最終結(jié)果中,所包含有的狀態(tài)標(biāo)量較少。但該方法也存在缺點(diǎn),當(dāng)時(shí)序電路的規(guī)模很大時(shí),單位時(shí)間內(nèi)所發(fā)生的狀態(tài)轉(zhuǎn)移是非常大的,對應(yīng)的狀態(tài)轉(zhuǎn)移表的規(guī)模很大,相應(yīng)的計(jì)算量變的相當(dāng)大,實(shí)際應(yīng)用很困難,此時(shí),該方法只具有理論上的意義。EDA工具的出現(xiàn),使得數(shù)字電路的設(shè)計(jì)和分析變得更為容易,文獻(xiàn)[5]提出了一種使用EDA工具,通過仿真的方法得到時(shí)序電路的穩(wěn)定狀態(tài)。但是,該方法只能通過嘗試設(shè)置電路的輸入,盡可能的得到時(shí)序電路的完全的穩(wěn)定狀態(tài)。
文獻(xiàn)[6]提出了一種系統(tǒng)化的求取時(shí)序電路穩(wěn)定狀態(tài)的方法,該方法易于用計(jì)算機(jī)實(shí)現(xiàn)。該方法定義可初態(tài)矩陣Qn、次態(tài)矩陣Qn+1和輸入矩陣(J-K矩陣)等概念,定義了一種新的矩陣運(yùn)算方法。
定義:矩陣 A、B和C是同行同列矩陣,矩陣乘法定義為矩陣中對應(yīng)行列元素相乘,即Cij=Aij×Bij(或),矩陣加法定義為矩陣中對應(yīng)行列元素相加。
對于有J-K觸發(fā)其構(gòu)成的時(shí)序電路而言,有:
對于由D觸發(fā)器構(gòu)成的時(shí)序電路而言,有:
qi→ai(0≤i≤n)表示電路由狀態(tài)qi轉(zhuǎn)換到ai,其中ai=qj(0≤i,j≤n)。假設(shè)電路的初態(tài)為q0,其對應(yīng)的次態(tài)為a0,且a0=qj,則qj對應(yīng)的次態(tài)為aj,依此類推,則可以得到電路的狀態(tài)轉(zhuǎn)移圖,如圖1所示。
圖1 時(shí)序電路原理圖
該算法在 LabWindow s/CVI采用C語言編寫,對于不同的電路模塊,需要編寫不同的輸入矩陣,參數(shù)的輸入在函數(shù)面板上完成。對圖1所示的時(shí)序電路進(jìn)行運(yùn)算,其結(jié)果如圖2所示。
則可以得到時(shí)序電路的狀態(tài)轉(zhuǎn)換圖如圖3所示,其中,S0表示000,S1表示001,S2表示010,S3表示011,S4表示100,S5表示 101,S6表示110,S7表示111。
在實(shí)際的時(shí)序電路的設(shè)計(jì)過程中,需要對時(shí)序電路的狀態(tài)表進(jìn)行簡化,簡化之后的狀態(tài)表內(nèi)的狀態(tài)都是可及狀態(tài),對于任何兩個(gè)狀態(tài)Si和Sj,從Si出發(fā),總是能夠找到某一個(gè)輸入向量序列,使得電路狀態(tài)轉(zhuǎn)換到Sj,反之亦然,對應(yīng)的狀態(tài)轉(zhuǎn)換圖(STG)是強(qiáng)連通的。
但是,若從已經(jīng)設(shè)計(jì)好的時(shí)序電路的原理圖中得到的時(shí)序電路的狀態(tài),卻不一定都是可及的,也就是說,所得到的狀態(tài)轉(zhuǎn)換圖不一定是連通的。
理論分析和實(shí)際試驗(yàn)都表明,凡屬正確設(shè)計(jì)的時(shí)序電路,分析所得到的時(shí)序電路中可能包含有多個(gè)強(qiáng)連通圖,其中必有一個(gè)主要的 SCC,稱為PSCC,PSCC中所對應(yīng)的狀態(tài)必為可及狀態(tài),而其它SCC中所對應(yīng)的狀態(tài)必為不可及狀態(tài),對于弱連通圖,可以有一些邊不屬于圖的任何一個(gè)SCC,這些邊被稱為連接邊。對于PSCC而言,它是一個(gè)或多個(gè)連接邊的末端,而不是任何連接邊的始端[7]。由此,我們將狀態(tài)轉(zhuǎn)換圖劃分為多個(gè)SCC之后,很容易區(qū)分PSCC與SCC,根據(jù)時(shí)序電路的PSCC,可以生成時(shí)序電路的功能測試向量。
對于圖3所示的狀態(tài)轉(zhuǎn)換圖,是一個(gè)弱連通圖,包含有兩個(gè)SCC,其中一個(gè)為S1,另一個(gè)為由頂點(diǎn)S0,S2,S3,S4,S5,S6和S7以及連接他們的有向邊組成,為PSCC,如圖 4所示。
圖4 時(shí)序電路PSCC
對于以時(shí)序電路功能為基礎(chǔ)的功能測試,采用功能覆蓋率的概念來衡量其功能測試的完全性,當(dāng)激勵(lì)信號作用于時(shí)序電路時(shí),在圖論模型中的反映就是經(jīng)歷了若干條有向邊。由此,將圖論模型中經(jīng)歷的有向邊與電路所有的有向邊之比定義為功能覆蓋率[8]。
給定了時(shí)序電路的PSCC,需要尋找到(I,O)序列,該序列使得電路歷經(jīng)了所有的有向邊,則功能覆蓋率為100%。其測試流程圖如圖5所示。
圖5 數(shù)字電路板功能測試流程圖
對于圖3所示的時(shí)序電路,其測試向量為表1中n所對應(yīng)的序列。
文章研究了數(shù)字電路板時(shí)序電路功能測試方法,采用有向圖作為時(shí)序電路的功能模型,通過有向圖的SCC劃分,尋找到PSCC。根據(jù)PSCC生成其功能測試向量序列及對應(yīng)響應(yīng)序列。為了節(jié)省測試時(shí)間,需要生成其最簡測試向量,如何通過有向圖生成最簡測試向量還需要進(jìn)一步研究。
表1 電路測試序列
[1]王琳,劉邁.電子線路自動(dòng)測試技術(shù)的研究[J].大連海事大學(xué)學(xué)報(bào),1999(3):108~111
[2]楊士元.模擬系統(tǒng)的故障診斷與可靠性設(shè)計(jì)[M].北京:清華大學(xué)出版社,1993:143~183,238~272
[3]G.Buonanno,et al.FsmTest:Functional test generation for sequential circuits[J].IN TEGRATION,the VLSI Journal,1996,20:303~325
[4]魏道政.異步時(shí)序電路測試生成的一種代數(shù)方法[J].軟件學(xué)報(bào),1999(10)
[5]王紅霞,葉曉慧,姚瓊薈.求解門級時(shí)序電路穩(wěn)定狀態(tài)的仿真方法[J].國外電子測量技術(shù),2006(8):10~12
[6]賈默伊.用矩陣方法分析同步時(shí)序電路[J].河北理工學(xué)院學(xué)報(bào),1996(2):50~53
[7]劉澤堅(jiān),劉華,周天戎,等.時(shí)序電路的可及狀態(tài)的枚舉和自動(dòng)測試生成[J].微電子測試,1995(3)
[8]鄭菊言.面向功能的測試矢量生成技術(shù)探討[J].航空電子技術(shù),1998(1):35~37