基于CPLD的測(cè)試系統(tǒng)接口設(shè)計(jì)
引言
本文引用地址:http://cafeforensic.com/article/201807/384179.htmCLPD(復(fù)雜可編程邏輯器件)兼容了LPD(可編程邏輯器件)和通用門陣列的優(yōu)點(diǎn),具有編程靈活、可實(shí)現(xiàn)較大規(guī)模電路的特點(diǎn),同時(shí)具有設(shè)計(jì)開(kāi)發(fā)周期短、設(shè)計(jì)制造成本低、開(kāi)發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無(wú)需測(cè)試、質(zhì)量穩(wěn)定、可實(shí)時(shí)在線檢驗(yàn)等優(yōu)點(diǎn),因此廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和產(chǎn)品生產(chǎn)之中。
1、CPLD在測(cè)試系統(tǒng)中的作用
隨著計(jì)算機(jī)和微電子技術(shù)的迅猛發(fā)展,單片機(jī)技術(shù)被廣泛應(yīng)用到各種智能儀表、工業(yè)控制及家用電器控制領(lǐng)域。但是它們?cè)谔岣唠娐钒宓募啥?、增?qiáng)系統(tǒng)功能的同時(shí)也帶來(lái)了很多測(cè)試和維修上的問(wèn)題。傳統(tǒng)的測(cè)試儀器和設(shè)備(如萬(wàn)用表、示波器、邏輯分析儀等)已不能適應(yīng)現(xiàn)代測(cè)試要求,更無(wú)法快捷地診斷出系統(tǒng)的故障所在,因此給一個(gè)產(chǎn)品的生產(chǎn)和維護(hù)帶來(lái)了諸多困難。
為了提高診斷效率,我們?cè)O(shè)計(jì)了一套基于虛擬儀器的單片機(jī)電路板故障測(cè)試診斷系統(tǒng)。
本系統(tǒng)接口的硬件部分由仿真cPu、sRAM、RS232接口芯片、各種接插件加上核心控制電路構(gòu)成(見(jiàn)圖1)。對(duì)于核心控制電路可以考慮兩種方案:一種是采用TL集成電路塊如74LS573、74璐135、74LS24、74璐245等幾十個(gè)芯片構(gòu)成;另一種是采用CPLD構(gòu)成。
下面對(duì)兩種方案進(jìn)行比較。
1)可靠性
CPL/DFPGA的可靠性極高,幾乎可將整個(gè)系統(tǒng)下載于同一芯片中,從而大大縮小了體積,易于管理和屏蔽,而傳統(tǒng)的TTL器件數(shù)量多、體積大,由此帶來(lái)的故障隱患大,可靠性低,故障診斷困難。
2)可調(diào)整性
CPL/DFPGA可以通過(guò)軟件編程而對(duì)其硬件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),它采用先進(jìn)的JTAc-ISP和在系統(tǒng)配置編程方式,在十SV工作電平下可隨時(shí)對(duì)CPLD進(jìn)行全部或部分地在系統(tǒng)編程,其編程次數(shù)多達(dá)1萬(wàn)次,而傳統(tǒng)竹L器件不能再改變其邏輯功能,即使設(shè)計(jì)有誤也無(wú)法很快進(jìn)行調(diào)整。
3)可移植性
由于開(kāi)發(fā)工具的通用性、設(shè)計(jì)語(yǔ)言的標(biāo)準(zhǔn)化以及設(shè)計(jì)過(guò)程幾乎與所用CPLD的硬件結(jié)構(gòu)沒(méi)有關(guān)系,所以設(shè)計(jì)成功的各類邏輯功能塊軟件有很好的兼容性和可移植性,它幾乎可用于任何型號(hào)的CPLD中,而傳統(tǒng)的TL器件根本不具有可移植性。
4)開(kāi)發(fā)周期
由于相應(yīng)的EDA軟件功能完善而強(qiáng)大,仿真方式便捷而實(shí)時(shí),開(kāi)發(fā)過(guò)程形象而直觀,兼之硬件因素涉及甚少,因此可以在很短時(shí)間內(nèi)完成十分復(fù)雜的系統(tǒng)設(shè)計(jì),而傳統(tǒng)的TrL器件從設(shè)計(jì)原理圖、印制版圖到制板、調(diào)試至少需花幾星期時(shí)間,更不用說(shuō)調(diào)試成功需花的時(shí)間可能長(zhǎng)達(dá)數(shù)月之久。
由以上比較可以看出,用CPLD實(shí)現(xiàn)系統(tǒng)硬件的核心控制電路更加合理。CPLD的功能示意圖見(jiàn)圖2。
本測(cè)試系統(tǒng)中,cPLD的主要功能是切換wR、TxD和RxD這3根信號(hào)線,因?yàn)镃PU在通信狀態(tài)和仿真狀態(tài)時(shí)都要用到這3根信號(hào)線。當(dāng)接口板在與PC機(jī)通信時(shí),這3個(gè)信號(hào)輸人CPLD后輸出為wRI、TXDI和RXDI;當(dāng)CPU執(zhí)行測(cè)試程序發(fā)送測(cè)試數(shù)據(jù)到被測(cè)板時(shí),它們又從CPLD輸出切換為WRZ、TxDZ和RxDZ。CPLD的另外一個(gè)主要工作是隔離接口板上的邵口、咫口的地址數(shù)據(jù)線和ALE、PSEN等控制線,防止被測(cè)板上的故障影響到自身工作。從圖1可以看到,即OUT、P2OUT、ALEOUT,PSENOUT正是印口線、PZ口線、ALE線、PSEN線經(jīng)隔離后才送到仿真頭的信號(hào),而CPU的其他信號(hào)如PI口、T0,T1等則直接送到仿真頭上。另外,輸出信號(hào)AL是經(jīng)過(guò)鎖存的低地址信號(hào)線。測(cè)試結(jié)果的取回有3種方式:總線數(shù)據(jù)和SRAM、ROM的測(cè)試結(jié)果通過(guò)仿真頭從邵OUT送人CPLD隔離后由即口送入CPU;顯示接口、鍵盤接口等接口數(shù)據(jù)通過(guò)ro針或16針扁平電纜插頭從DATAI送人CPLD隔離后也由印送人CPU;其他一些遠(yuǎn)離總線的電路節(jié)點(diǎn)則通過(guò)探針從DATAZ送人CPLD后再送人CPU。
2、CPLD的設(shè)計(jì)
CPLD的設(shè)計(jì)是硬件系統(tǒng)中最重要的一環(huán)。從需要使用的FO引腳和硬件資源考慮,決定選用Altera公司MAX700()S系列中的7128SLC84一15芯片。該芯片內(nèi)部有128個(gè)邏輯塊、64個(gè)FO引腳,PLCC封裝,可以在+SV和+3.3V下工作。
硬件描述語(yǔ)言全部采用VHDL。這種語(yǔ)言的特點(diǎn)在于將一項(xiàng)工程設(shè)計(jì)或稱設(shè)計(jì)實(shí)體(可以是一個(gè)組件、一個(gè)電路或一個(gè)系統(tǒng))分成外部(或稱可視部分)和內(nèi)部(或稱不可視部分)兩部分,然后再設(shè)計(jì)實(shí)體的內(nèi)部功能和算法。
如圖2所示,在本測(cè)試系統(tǒng)中CPLD要實(shí)現(xiàn)以下功能:
a)用做單片機(jī)系統(tǒng)中的外部低地址鎖存器,相當(dāng)于74璐573。
b)用做通信CPu和仿真CPU之間的切換開(kāi)關(guān)。
因?yàn)榻涌诎逯械腃PU在與PC機(jī)進(jìn)行通信時(shí)需要用到控制線TXD、RXD,在往SRAM中寫數(shù)據(jù)時(shí)需要用到WR線,而在仿真測(cè)試用做仿真CPU時(shí)所有的3根總線均要提供給被測(cè)板,所以必須對(duì)兩種狀態(tài)都要使用的控制線進(jìn)行切換。切換的方法是在單片機(jī)的程序中執(zhí)行幾條指令,這類似于Flash的防誤操作方法。向外部數(shù)據(jù)存儲(chǔ)器地址FFFEH寫數(shù)據(jù)9H,即
MOVXDPTR,#OFFFEH
MOVA,#99H
MOVX @DPTR,A
就可以將CPU切換到仿真狀態(tài)。
往FFFFH寫數(shù)據(jù)55H,即
MOVX DPTR,#OFFFFH
MOVA,#55H
Mov xnDPTR .A
就可以將CPU切換到通信狀態(tài)。
具體的原理是在CPLD內(nèi)部用vHDL語(yǔ)言設(shè)計(jì)了一個(gè)切換開(kāi)關(guān)。向FFFEH地址寫9H,切換開(kāi)關(guān)在WR下降沿檢測(cè)到此時(shí)的低地址為FEH、高地址為FFH、數(shù)據(jù)為9H時(shí),就將WR信號(hào)輸出到WRZ引腳,而WRI引腳輸出為高阻狀態(tài);同理,往FFFFH地址寫5H,則將WR信號(hào)輸出到WRI引腳,而WRZ引腳輸出為高阻狀態(tài)。因此,每次切換須同時(shí)滿足3個(gè)條件(低地址、高地址、數(shù)據(jù))均相同。這樣,當(dāng)用做仿真CPU時(shí)提供給被測(cè)板的數(shù)據(jù)地址空間幾乎是全空間的,發(fā)生誤切換的概率幾乎沒(méi)有。
c)用做取回測(cè)試結(jié)果通道的切換開(kāi)關(guān)。因?yàn)楸粶y(cè)單片機(jī)電路板有可能不止一個(gè)FO接口,每個(gè)接口的測(cè)試數(shù)據(jù)都要由刊口送人單片機(jī),這就需要一個(gè)切換開(kāi)關(guān)來(lái)控制幾條通路的數(shù)據(jù)輸人以防止數(shù)據(jù)沖突。
采用的方法是給每個(gè)通路人為地分配一個(gè)程序存儲(chǔ)空間地址,如鍵盤口為8082H、顯示口為8083H、打印口為8084H等,使用MOVC指令來(lái)打開(kāi)通道,即
MOVDPrR,#8082H
CLRA
MOVC A,@DPTR+A
這是將鍵盤口的測(cè)試結(jié)果通過(guò)8針的扁平電纜取回。
MOV DPTR,#8083H
CLRA
MOVCA,@DPTR+A
這是取回顯示口的數(shù)據(jù),同理可取回其他口的數(shù)據(jù)。
具體原理是在CPLD中設(shè)計(jì)了一個(gè)多路轉(zhuǎn)換開(kāi)關(guān),以鍵盤口為例,轉(zhuǎn)換開(kāi)關(guān)的條件是當(dāng)PSEN為低,低地址為82H,高地址為80H時(shí)輸人鍵盤口的數(shù)據(jù),不理會(huì)其他口的數(shù)據(jù)。
d)隔離接口板與被測(cè)板上的邵口、PZ口及控制線。如果不隔離兩個(gè)板上的三總線,當(dāng)被測(cè)板發(fā)生故障必將影響接口板,使得接口板根本無(wú)法工作,更談不上對(duì)被測(cè)板進(jìn)行故障診斷。PI口不用隔離是因?yàn)镻I口不屬于三總線。
具體的工作原理是用CPLD模擬單片機(jī)內(nèi)部即口的時(shí)序,即先送出低地址,再送出數(shù)據(jù)。分析PO口讀寫外部數(shù)據(jù)存儲(chǔ)器的時(shí)序可知,讀周期中,低地址在ALE為高電平時(shí)送出,而數(shù)據(jù)在RD上升沿時(shí)讀人;寫周期中,低地址也在ALE為高時(shí)送出,外部器件在WR為低電平時(shí)打開(kāi),保證數(shù)據(jù)在低電平時(shí)有效寫人。
在后面波形圖中可以看到時(shí)序符合數(shù)據(jù)的有效讀人和送出。P1口沒(méi)有特別時(shí)序要求,輸人CPLD后直接輸出。
e)直接驅(qū)動(dòng)一個(gè)LED燈閃爍。通過(guò)計(jì)數(shù)AEL次數(shù)來(lái)翻轉(zhuǎn)電平,這樣可以判斷CPLD或接口板上的單片機(jī)是否工作正常。
3、CPLD的仿真
在用VHDL語(yǔ)言完成CPLD的設(shè)計(jì)并編譯通過(guò)后就可以進(jìn)行波形仿真,仿真主要是驗(yàn)證設(shè)計(jì)的時(shí)序是否滿足實(shí)際的運(yùn)行情況,所以仿真的條件須大致模擬系統(tǒng)的實(shí)際工作條件。本系統(tǒng)模擬的條件是晶振為11.092MHz的單片機(jī)時(shí)序。
按照單片機(jī)寫外部數(shù)據(jù)存儲(chǔ)器的時(shí)序進(jìn)行切換WR、RxD、TXD信號(hào)仿真,從仿真波形圖上可以看出,在發(fā)出切換到仿真CPU指令后WR入RxDZ、TxDZ能在下一個(gè)周期分別輸出WR、RxD、TxD信號(hào),而wRI、RXDI、TXDI都延遲幾納秒后變成高阻;同理,在發(fā)出切換到通信CPU指令后也能正確地切換。仿真圖如圖3所示。
按照單片機(jī)讀外部程序存儲(chǔ)器時(shí)序進(jìn)行取I/0口數(shù)據(jù)仿真,從仿真波形圖上也可看出,在發(fā)出取I/0口數(shù)據(jù)的MOvc指令后,數(shù)據(jù)結(jié)果延遲一段時(shí)間后開(kāi)始出現(xiàn)在數(shù)據(jù)總線上,但只要在PSEN上升沿來(lái)到時(shí)數(shù)據(jù)還能保持,CPU就可以有效讀人。仿真圖見(jiàn)圖4。
另外,數(shù)據(jù)線、地址線的隔離也比較理想,可保證數(shù)據(jù)線上的數(shù)據(jù)有效寫人外部器件和有效讀入數(shù)據(jù)。
4、結(jié)束語(yǔ)
經(jīng)過(guò)實(shí)踐證明,本測(cè)試系統(tǒng)接口應(yīng)用CPLD后大大簡(jiǎn)化了電路,提高了系統(tǒng)整體性能,使系統(tǒng)具有了集成度高、靈活性強(qiáng)、可靠性高、易于升級(jí)和擴(kuò)展等特點(diǎn)。
評(píng)論