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