USB-GPIB控制器的硬件電路設(shè)計
引言
USB是PC體系中一套全新的工業(yè)標(biāo)準(zhǔn),通用可編程接口GPIB(GeneralProgrammableInterfaceBUS),是Cy-press公司在其EZ-USBFX以及FX2系列單片機(jī)里設(shè)計的一個可由用戶編程的接口,具有快速、靈活等特點(diǎn);可使用多種協(xié)議完成與外圍器件的無縫連接,如EIDE/ATAPI、IEEE1284、Utopia等。對其可以根據(jù)需要進(jìn)行編程,且運(yùn)行中不需要CPU的干預(yù),僅通過一些CPU標(biāo)志和中斷與增強(qiáng)型8051內(nèi)核通信。作為自動化測試儀器的互聯(lián)標(biāo)準(zhǔn)歷史悠久,使用廣泛,組建費(fèi)用低廉且操作方便,特別是連接臺式機(jī)的時候尤其顯得靈活高效。在很多對測試速度要求不高以及對測試儀器體積不作要求的情況下,GPIB總線也有相當(dāng)?shù)膬?yōu)勢。因此,將USB所具有的獨(dú)特優(yōu)點(diǎn)引入到以GPIB為標(biāo)準(zhǔn)的自動測試系統(tǒng)中,設(shè)計基于USB總線的GPIB控制器,對提高便攜式和無外接插槽的自動測試系統(tǒng)整體性能有很大促進(jìn)作用。
1系統(tǒng)總體設(shè)計方案
硬件電路的設(shè)計分為硬件和固件兩部分。硬件要實(shí)現(xiàn)PC機(jī)與USB芯片的通信以及USB與GPIB接口邏輯之間的通信;同樣,固件也要滿足USB接口和GPIB邏輯協(xié)議。設(shè)計思路就是USB接口與PC機(jī)實(shí)現(xiàn)通信,并且提供給GPIB的信號線,最終建立兩者之間的通信,硬件總體框圖如圖1所示。
USB主芯片選取了Cypress公司CY7C68013控制芯片,芯片結(jié)構(gòu)如圖2所示。CY7C68013集成了以下特性:USB2。0收發(fā)器、SIE(串行接口引擎)和增強(qiáng)型8051微處理器;8051程序從內(nèi)部RAM開始運(yùn)行;4個可編程BULK/INTERRUPT/ISOCH-RONOUS端點(diǎn);8位16位外部數(shù)據(jù)接口;通用可編程接口(GPIF);3。3V電源系統(tǒng);矢量USB中斷;獨(dú)立的數(shù)據(jù)緩沖區(qū)供SETUP和DATA包控制傳輸;集成I2C控制器,頻率可達(dá)100或400kHz;4個FIFO,可與ASIC和DSP等無縫連接;專門的FIF0和GPIF自動矢量中斷。
美國NI公司推出的TMS9914控制芯片是一款高性能CMOS的GPIB接口專用芯片,滿足IEEE488協(xié)議的要求;工作在TMS9914模式下,能夠?qū)PIB母線上的信號按照GPIB協(xié)議進(jìn)行解碼和譯碼轉(zhuǎn)換為用戶可用的格式,同時將用戶發(fā)過來控制GPIB的信號進(jìn)行處理,按照協(xié)議要求發(fā)送到GPIB母線上;內(nèi)部有16個寄存器,分成兩組,一組是只寫寄存器,有8個;另一組是只讀寄存器,有8個。TMS9914內(nèi)部各個寄存器的狀態(tài)決定或標(biāo)志著芯片及GPIB的工作狀態(tài)。在GPIB接口設(shè)計中,只有通過編程對寄存器進(jìn)行正確編排,才能實(shí)現(xiàn)對GPIB的各種操作。
2硬件設(shè)計
2。1供電方式
設(shè)計中采用了USB總線供電方式。USB接口從PC機(jī)能獲取的電壓為5V,而USB控制芯片CY7C68013的工作電壓為3。3V,GPIB控制芯片TMS9914的工作電壓為5V,所以本設(shè)計中選用了Maxim公司的MAX882進(jìn)行電壓變換。從PC經(jīng)USB電纜到B端口來的5V電源,
經(jīng)去耦合和濾波電路后直接提供給系統(tǒng)中要求在5V正常工作的芯片,如TMS9914、75LS160、75LSl62等;而經(jīng)MAX882分壓后得到3。3V則提供給USB控制芯片CY7C68013以及LVC245。這樣就可保證整個控制器正常工作。電路中的SN7524,是專門為USB接口電路設(shè)計的,抑制USB數(shù)據(jù)線的瞬時電氣噪聲,如圖3所示。
2。2外接EEPROM電路
系統(tǒng)上電后,USB內(nèi)核首先檢查I2C總線上是否有EEPROM。如果有,并且其第一位數(shù)據(jù)是0xC2,則EZUSBFX2將EEPROM中的內(nèi)容全部拷貝到內(nèi)部RAM中,然后重列舉,并開始執(zhí)行RAM中的固件程序。由于CY68013芯片已經(jīng)將I2C總線集成,設(shè)計轉(zhuǎn)化為對I2C總線上掛接的EEPROM的設(shè)計;由于采用的是24LC64的EEPROM,整個串行I2C總線電路實(shí)現(xiàn)的原理如圖4所示。
3固件程序設(shè)計
本設(shè)計針對的主芯片CY7C68013是以軟件為框架的IC。CY7C68013芯片的固件開發(fā)所使用的集成開發(fā)環(huán)境為KEILμVision2,編程語言為德國Keil公司的C51。把編輯、編譯、匯編、連接、調(diào)試等各階段都集成在一個程序內(nèi),先用編輯器編寫程序,接著調(diào)用編譯器進(jìn)行編譯、連接后直接運(yùn)行,因此可以縮短開發(fā)周期。
固件程序負(fù)責(zé)處理PC機(jī)發(fā)來的各種請求,主要負(fù)責(zé)設(shè)備與外圍電路進(jìn)行數(shù)據(jù)傳輸。完成一個完整的事務(wù)傳輸,除了開發(fā)環(huán)境Keil包括的文件,還需要Fw。c(固件架構(gòu)原是程序代碼)、Dscr.a(chǎn)51(USB描述符表)、Ezusb.lib(EZUSB函數(shù)庫對象程序代碼)、Periph.c(用戶函數(shù),也就是設(shè)計中實(shí)現(xiàn)GPIB功能要編寫的函數(shù))以及相關(guān)的中斷跳轉(zhuǎn)函數(shù)USBjmpTB.OBJ。功能函數(shù)里的TD_Poll()負(fù)責(zé)完成用戶指定的功能,應(yīng)該包括一個執(zhí)行用戶外圍功能的狀態(tài)機(jī)。從這個函數(shù)返回的話,高優(yōu)先級的任務(wù)應(yīng)該首先執(zhí)行。
voidTD_Poll(void)
if(!(EP2468STAT&bmEP2EMPTY)){
if(!(EP2468STAT&bmEP6FULL))//判斷端點(diǎn)2的FIFO緩沖區(qū)是否滿
{APTRlH=MSB(&EP2FIFOBUF);//自動指針1
APTRlL=LSB(&EP2FIFOBUF):
AUTOPTRH2=MSB(&EP6FIFOBUF);//自動指針2
AUTOPTRL2=LSB(&EP6FIFOBUF);
count=(EP2BCH<<8)+EP2BCL;
for(i=0x0000;l
EXTAUTODAT2=EXTAUTODAT1;//將端點(diǎn)2中斷的數(shù)據(jù)復(fù)制到端點(diǎn)6
}
EP6BCH=EP2BCH;//設(shè)置端點(diǎn)6的字節(jié)數(shù)
SYNCDELAY;
EP6BCL=EP2BCL,
SYNCDELAY:
EP2BCL=0x80;}//設(shè)置端點(diǎn)6的字節(jié)數(shù)
}