未知電路板原理圖測(cè)繪系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
近年來,我國引進(jìn)了大量先進(jìn)的儀器設(shè)備,這些設(shè)備系統(tǒng)龐大、結(jié)構(gòu)復(fù)雜、集成度高。經(jīng)過多年的使用,這些設(shè)備在維護(hù)修理、備件保障方面遇到了極大的困難。由于不是技術(shù)引進(jìn),幾乎沒有任何關(guān)于設(shè)備的技術(shù)資料,無法獲得電子備件的電路原理圖,所以對(duì)未知(無電路原理圖)電路板電路原理圖的測(cè)繪,對(duì)于電子備件尤其是軍工產(chǎn)品的反設(shè)計(jì)具有重要意義。
1 基本原理
要完成對(duì)未知電子備件的反設(shè)計(jì),必須首先獲知該備件的連線表,然后才能依據(jù)元器件數(shù)據(jù)庫的相關(guān)知識(shí)繪制出原電路原理圖,進(jìn)而通過技術(shù)分析和設(shè)計(jì)形成替代方案,實(shí)現(xiàn)反設(shè)計(jì)。對(duì)未知電路板的測(cè)繪所使用的常用辦法主要有如下兩種:
(1)用萬用表的歐姆檔,對(duì)印制電路板上的各外露焊點(diǎn)和元器件管腳進(jìn)行連接測(cè)試,即首先測(cè)量第一個(gè)焊點(diǎn)(或管腳)和第二、第三個(gè)焊點(diǎn)(或管腳)之間的電阻,直至測(cè)量完所有焊點(diǎn)和管腳,從而得到第一個(gè)焊點(diǎn)或管腳在電路板上的連接圖。用同樣的方法,再測(cè)第二個(gè)焊點(diǎn)(或管腳)與第三、第四個(gè)焊點(diǎn)(或管腳)之間的電阻,直至測(cè)量完所有焊點(diǎn)和管腳,得到第二個(gè)焊點(diǎn)或管腳在電路板上的連接圖。依次類推,可以得到電路板上各焊點(diǎn)和元器件管腳的連接關(guān)系(即網(wǎng)絡(luò)圖)。這種方法雖然能夠得到電路板的網(wǎng)絡(luò)圖,但十分繁瑣、效率低、差錯(cuò)率也高,因此應(yīng)開發(fā)自動(dòng)測(cè)繪設(shè)備。
(2)采用固定針床的辦法進(jìn)行測(cè)繪,對(duì)于每種電路板設(shè)計(jì)專門的測(cè)試針床,將專用針床與被測(cè)電路板的所有接點(diǎn)可靠接觸,在計(jì)算機(jī)測(cè)試軟件的控制下,通過專門的通道控制器可在較短時(shí)間內(nèi)完成測(cè)試工作,而且能完成對(duì)多層電路板的測(cè)繪。但這種方式要求為每種被測(cè)對(duì)象設(shè)計(jì)一個(gè)專門的針床和測(cè)試軟件,投入成本高、周期長。
綜合以上兩種方法的優(yōu)點(diǎn),根據(jù)常用的通路電阻測(cè)試法,設(shè)計(jì)了“柔性針床網(wǎng)絡(luò)圖測(cè)繪系統(tǒng)”,實(shí)現(xiàn)了靈活高效的測(cè)繪。連線表測(cè)試完成后,借助專門建立的器件數(shù)據(jù)庫,通過人工干預(yù)的方式即可完成電路原理圖的繪制工作。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)總體結(jié)構(gòu)
該系統(tǒng)由計(jì)算機(jī)、開關(guān)矩陣、柔性針床陣列和被測(cè)備件組成,其結(jié)構(gòu)見圖1。其中,柔性針床陣列通過柔性針與電路板上的所有節(jié)點(diǎn)可靠連接,開關(guān)矩陣實(shí)現(xiàn)通道的自動(dòng)切換或順序切換,柔性針床寬度僅能夠覆蓋一個(gè)電子芯片,這樣通過多個(gè)針床,即可覆蓋整個(gè)待測(cè)電路板。
測(cè)試時(shí)將電路板水平固定,在電路板上方和下方間距為2至3厘米處水平固定柔性針床,柔性針床的一面有密集分布的焊點(diǎn),這些焊點(diǎn)通過長短可變的彈性探針與被測(cè)電路板一面上的外露焊點(diǎn)或元器件管腳相連。柔性針床的另一面由連線將各焊點(diǎn)與開關(guān)矩陣相連,電路板的另一面也進(jìn)行相同的操作,從而將電路板的外露焊點(diǎn)或元器件管腳引到柔性針床上,通過計(jì)算機(jī)對(duì)開關(guān)矩陣進(jìn)行控制,實(shí)現(xiàn)柔性針床上各節(jié)點(diǎn)之間的連接關(guān)系的自動(dòng)測(cè)試。
2.2 測(cè)試電路結(jié)構(gòu)組成
本系統(tǒng)采用自定義的總線結(jié)構(gòu),各柔性針床通過總線進(jìn)行連接,由控制模塊控制相互間的通信。測(cè)試電路通過USB總線接口與主機(jī)進(jìn)行連接,如圖2所示。
其中,ADDR1和ADDR2為針床地址總線,控制模塊通過發(fā)送相應(yīng)的地址碼實(shí)現(xiàn)針床的尋址。由于在測(cè)試時(shí)需要在針床本身和兩個(gè)針床之間進(jìn)行測(cè)試,只設(shè)計(jì)一套地址總線不能同時(shí)尋址兩個(gè)針床,故設(shè)計(jì)了ADDR1和ADDR2兩套地址總線,可同時(shí)實(shí)現(xiàn)對(duì)兩個(gè)測(cè)試針床的尋址。
RD、WR為讀使能和寫使能總線,RD有效時(shí),允許測(cè)試針床向控制模塊發(fā)送數(shù)據(jù),WR有效時(shí),允許控制模塊發(fā)送指令到各個(gè)針床,實(shí)現(xiàn)控制功能。
AD1、AD2為針床探針地址總線。由于在測(cè)試時(shí),各個(gè)探針都需要和其它探針進(jìn)行遍歷測(cè)試,所以設(shè)計(jì)兩套地址總線用來同時(shí)尋址兩個(gè)不同的探針。AD1所尋址探針信號(hào)經(jīng)數(shù)據(jù)線D1引出,AD2所尋址探針信號(hào)經(jīng)數(shù)據(jù)線D2引出,通過測(cè)量D1與D2之間的電阻,就可以得到所對(duì)應(yīng)的電路板焊點(diǎn)之間的連接情況。
2.2.1 USB接口部分
在本設(shè)計(jì)中,PC機(jī)通過USB接口完成對(duì)測(cè)試機(jī)的控制,而測(cè)試數(shù)據(jù)又通過USB接口送回PC機(jī)進(jìn)行分析,分析結(jié)果用于對(duì)UUT進(jìn)行故障診斷。
本系統(tǒng)采用Cypress公司的AN2131QC作為控制器芯片。圖3所示為AN2131QC的結(jié)構(gòu)簡化框圖,USB總線收發(fā)器與USB總線引腳D+、D-相連,串行接口引擎用來對(duì)串行數(shù)據(jù)進(jìn)行解碼和譯碼、錯(cuò)誤校驗(yàn)、位填充,并完成其它USB總線所需的信號(hào),最終實(shí)現(xiàn)與USB總線接口的數(shù)據(jù)傳輸。通用微處理器采用增強(qiáng)型8051,與標(biāo)準(zhǔn)8051相比較,執(zhí)行速度更快、功能更強(qiáng)大。在內(nèi)部使用RAM作為程序代碼和數(shù)據(jù)存儲(chǔ)器,因此8051序列具有“軟”特性,即:用戶可以自動(dòng)裝載代碼和數(shù)據(jù)來實(shí)現(xiàn)具體功能。
2.2.2 控制模塊
控制模塊用來完成各個(gè)針床的尋址、控制、測(cè)試以及數(shù)據(jù)的發(fā)送與接收功能。通過USB接口由主機(jī)下達(dá)控制命令及接收數(shù)據(jù)??刂颇K結(jié)構(gòu)如圖4所示。
系統(tǒng)控制芯片采用ALTERA公司的MAX7000系列可編程邏輯器件(CPLD),用來接收主機(jī)發(fā)送的控制信號(hào),對(duì)測(cè)試電路進(jìn)行控制;接收測(cè)試數(shù)據(jù)并上傳到主機(jī)。當(dāng)WR有效時(shí),接收控制指令;當(dāng)RD有效時(shí),接收測(cè)試數(shù)據(jù)。在測(cè)試電路自定義總線上共有五種測(cè)試信號(hào),所以采用三根控制信號(hào)線A、B、C,經(jīng)譯碼即可輸出不同的控制信號(hào)。電阻測(cè)試電路也位于控制模塊中,負(fù)責(zé)對(duì)經(jīng)D1和D2引出的電路板兩個(gè)焊點(diǎn)(或管腳)進(jìn)行測(cè)試,測(cè)試結(jié)果經(jīng)A/D變換后由CPLD送到主機(jī)中。
2.2.3 測(cè)試針床
測(cè)試針床用來使用探針連接電路板各個(gè)焊點(diǎn)或管腳,并使用開關(guān)矩陣進(jìn)行各個(gè)探針之間連接的自動(dòng)順序切換,從而實(shí)現(xiàn)各個(gè)焊點(diǎn)之間的互連測(cè)試。針床電路如圖5所示。
開關(guān)矩陣采用MAX7000系列可編程邏輯器件實(shí)現(xiàn),用來連接針床上所有探針,接收控制信號(hào)并將所尋址探針信號(hào)輸出。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件運(yùn)行于PC機(jī)平臺(tái)上,通過USB總線對(duì)測(cè)試電路進(jìn)行控制并接收測(cè)試電路測(cè)試數(shù)據(jù),根據(jù)接收到的數(shù)據(jù)形成所測(cè)電路板電路連線表?,F(xiàn)主要分析與電路測(cè)繪有關(guān)的測(cè)試電路控制程序:
(1)首先利用ADDR1尋址測(cè)試基準(zhǔn)針床,每個(gè)針床都有特定的地址碼,如發(fā)送ADDR1=00000001,表示選中1號(hào)測(cè)試針床,以此為基準(zhǔn)測(cè)試針床來對(duì)其它針床進(jìn)行測(cè)試。
(2)1號(hào)測(cè)試針床利用AD1總線對(duì)其上所有探針進(jìn)行尋址,AD1總線尋址該針床的基準(zhǔn)測(cè)試點(diǎn),如發(fā)送AD1=00000001,表示尋址到1號(hào)探針,即1號(hào)探針連接D1端。
(3)以ADDR1所尋址針床為基準(zhǔn),利用ADDR2尋址所有針床,所尋址的針床利用AD2總線對(duì)其上探針進(jìn)行尋址。
(4)以AD1總線所尋址探針為基準(zhǔn),對(duì)AD2總線所尋址探針進(jìn)行遍歷測(cè)試。
程序偽代碼如下:
for( ADDR1=1 to 20) //假定共有20個(gè)測(cè)試針床,選定基準(zhǔn)測(cè)試針床
{
for( AD1 = 1 to 256) //假定每個(gè)針床上有256個(gè)探針和焊/點(diǎn)相連,選定基準(zhǔn)測(cè)試焊點(diǎn)
{
for( ADDR2 = 1 to 20) //依次尋址所有針床
{
for( AD2 = 1 to 256) //依次尋址測(cè)試針床上所有探針(焊點(diǎn))
{
//測(cè)試電路測(cè)試函數(shù)
?。?br /> }
}
}
}
通過以上測(cè)試程序,即可實(shí)現(xiàn)每個(gè)探針(焊點(diǎn))和其它所有探針(焊點(diǎn))的遍歷測(cè)試,從而獲取電路板上每個(gè)焊點(diǎn)的連接情況。
通過電路板上元器件型號(hào)知識(shí),利用此套測(cè)繪系統(tǒng)所測(cè)繪的電路板連線表,結(jié)合相應(yīng)PCB設(shè)計(jì)軟件及人工干預(yù),在某個(gè)引進(jìn)裝備上實(shí)現(xiàn)了未知電路板的測(cè)繪工作,得到了其電路原理圖,為下一步的反設(shè)計(jì)工作奠定了基礎(chǔ)。由于涉及知識(shí)產(chǎn)權(quán)問題,該系統(tǒng)僅應(yīng)用于特殊領(lǐng)域電子設(shè)備。