中國(guó)電子科技集團(tuán)公司第41研究所 徐玉華
GPIB(General purpose Interface Bus,通用接口總線(xiàn))是一種面向程控儀器的通用接口總線(xiàn),適用于實(shí)時(shí)控制與快速數(shù)據(jù)采集等場(chǎng)合。隨著自動(dòng)測(cè)試系統(tǒng)的不斷發(fā)展,GPIB總線(xiàn)的應(yīng)用也越來(lái)越多,它是目前組建自動(dòng)測(cè)試系統(tǒng)最成熟的總線(xiàn)之一,深受?chē)?guó)內(nèi)外儀器廠(chǎng)家的青睞。在以C8051F020單片機(jī)為主控CPU的智能儀器的設(shè)計(jì)中,將GPIB接口配置在功能比較單一的高端口(P4~P7),把功能比較強(qiáng)大的低端口(P0~P3)解放出來(lái)用作儀器的其他功能,使得單片機(jī)的系統(tǒng)資源配置達(dá)到最優(yōu)化。
GPIB于二十世紀(jì)60年代末誕生于惠普公司,現(xiàn)已成為工業(yè)控制及可編程儀器的標(biāo)準(zhǔn)接口之一,它是由國(guó)際電子電氣工程師協(xié)會(huì)于1974年9月制定的一種標(biāo)準(zhǔn)接口總線(xiàn),又稱(chēng)IEEE.488總線(xiàn)。GPIB是一種24芯的并行無(wú)源總線(xiàn),其中16條被用作信號(hào)線(xiàn),包括8條數(shù)據(jù)線(xiàn)(DIO1~DIO8),3條握手線(xiàn)(DAV、NRFD、NDAC)和5條管理線(xiàn)(ATN、REN、IFC、EOI、SRQ),其余8條為地線(xiàn)。數(shù)據(jù)傳輸采用位并行,字節(jié)串行的雙向異步傳輸方式。消息采用負(fù)邏輯,低電平(≤0.8V)為邏輯1,高電平(≥2.0V)為邏輯0。
GPIB功能接口可以通過(guò)以下三種方式來(lái)實(shí)現(xiàn):1)中小規(guī)模集成電路;2)軟件模擬;3)專(zhuān)用大規(guī)模集成電路。其中采用中小規(guī)模集成電路和軟件模擬實(shí)現(xiàn)GPIB接口都比較復(fù)雜,而且應(yīng)用效率和可靠性比較差。因此,在本設(shè)計(jì)中,我們采用了專(zhuān)用大規(guī)模集成電路NAT9914來(lái)實(shí)現(xiàn)GPIB接口電路的設(shè)計(jì)。
本設(shè)計(jì)選用C8051F020作為儀器的主控CPU,原因在于C8051F020具有豐富的I/O端口,其中低端口(P0、P1、P2和P3)既可以按位尋址也可以按字節(jié)尋址,且每個(gè)引腳既可定義為通用的端口I/O(GPIO)引腳,又可以分配給一個(gè)數(shù)字外設(shè)或功能;高端口(P4、P5、P6和P7)只能按字節(jié)尋址,也只能作為普通的I/O端口使用。由此可見(jiàn),單片機(jī)的低端口配置比較靈活,功能比較強(qiáng)大,高端口功能比較單一。故為了優(yōu)化資源配置,我們把儀器的GPIB接口配置在高端口,把低端口解放出來(lái)用作儀器的其他功能。
C8051F020是美國(guó)Cygnal公司推出的一款新型的SOC型8位單片機(jī),結(jié)合設(shè)計(jì)需求,主要介紹該款單片機(jī)的以下特征:
(1)高速、流水線(xiàn)結(jié)構(gòu)的8051兼容的CIP-51內(nèi)核(可達(dá)25MIPS),指令系統(tǒng)與標(biāo)準(zhǔn)51系列單片機(jī)兼容,程序編寫(xiě)容易。
(2)除了有標(biāo)準(zhǔn)8051的端口(P0、P1、P2和P3)外,還附加4個(gè)端口(P4、P5、P6和P7)。外部數(shù)據(jù)存儲(chǔ)器接口(EMIF)可被配置為使用低I/O端口(P0~P3)或高I/O端口(P4~P7)。
(3)集成了JTAG端口,對(duì)于JTAG調(diào)試方式,它支持在系統(tǒng)、全速、非插入調(diào)試和編程,并且不占用片內(nèi)資源。
(4)可尋址64kB地址空間的外部數(shù)據(jù)存儲(chǔ)器接口。
(5)64kB可在系統(tǒng)編程的FLASH存儲(chǔ)器,可用于單片機(jī)程序和非易失性數(shù)據(jù)存儲(chǔ)。
NAT9914可以被看作為一個(gè)總線(xiàn)翻譯器,它把來(lái)自單片機(jī)的消息轉(zhuǎn)換成相應(yīng)的GPIB總線(xiàn)的消息,又可以將GPIB總線(xiàn)的消息轉(zhuǎn)變成單片機(jī)能夠識(shí)別的信號(hào)。它共有25個(gè)可尋址的寄存器,對(duì)應(yīng)用來(lái)說(shuō),最主要的有19個(gè)工作寄存器。這19個(gè)寄存器包括8個(gè)只讀寄存器和11個(gè)只寫(xiě)寄存器。微處理器通過(guò)地址選擇端RS0、RS1、RS2和讀寫(xiě)端DBIN、/WE來(lái)選擇這些寄存器,進(jìn)行讀寫(xiě)操作。當(dāng)/WE和DBIN均為低電平時(shí),微處理器可對(duì)寫(xiě)寄存器進(jìn)行操作,當(dāng)/WE和DBIN均為高電平時(shí),微處理器可對(duì)讀寄存器執(zhí)行操作,NAT9914正是通過(guò)這些讀/寫(xiě)寄存器來(lái)實(shí)現(xiàn)GPIB總線(xiàn)與CPU之間的全部通訊。
NAT9914的性能特點(diǎn)如下:
(1)NAT9914的管腳與TMS9914的管腳完全兼容。
(2)在軟件上可以與μPD7201兼容。
(3)低功耗,與CMOS和TTL電平兼容。
(4)完成所有IEEE488.1的接口功能。
(5)滿(mǎn)足IEEE488.2的所有協(xié)議。
(6)可以程控?cái)?shù)據(jù)傳輸速率(延遲350ns、500ns、1.1μs和1.2μs)。
(7)可以自動(dòng)檢測(cè)EOS和NL消息。
(8)具有直接存取功能。
(9)自動(dòng)執(zhí)行IEEE488的命令并可以讀出未定義命令。
(10)有幾種一次和二次地址尋址方式。
(11)程控時(shí)鐘頻率可高達(dá)20MHz。
如圖1所示,本文設(shè)計(jì)的GPIB接口電路主要由C8051F020、74LS373、NAT9914、SN75160和SN75161等芯片組成。NAT9914接在主控CPU C8051F020與數(shù)據(jù)總線(xiàn)收發(fā)器SN75160和控制總線(xiàn)收發(fā)器SN75161之間,充當(dāng)GPIB總線(xiàn)和儀器之間的適配器,硬件上保證了GPIB接口物理性能的實(shí)現(xiàn)。
圖1 GPIB硬件電路圖
D0~D7為NAT9914的八條數(shù)據(jù)線(xiàn),由于GPIB總線(xiàn)采用負(fù)邏輯,D7是內(nèi)部數(shù)據(jù)總線(xiàn)的最低有效位,與C8051F020相連時(shí),D7~D0與P7.0~P7.7對(duì)應(yīng)相連。RS2、RS1、RS0是NAT9914內(nèi)部寄存器選擇端,與地址鎖存器74LS373輸出端低3位相連,并與讀寫(xiě)操作線(xiàn)配合使用,以選擇需要操作的寄存器。/INT為中斷請(qǐng)求線(xiàn),直接與C8051F020的中斷端相連,使NAT9914可以通過(guò)中斷方式實(shí)現(xiàn)接口功能。當(dāng)NAT9914的讀寫(xiě)端口DBIN和/WR為高電平時(shí),允許對(duì)其讀,為低電平時(shí),允許對(duì)其寫(xiě),因此C8051F020的/WR直接與NAT9914的/WR相連,而/RD則經(jīng)反相后與NAT9914的DBIN相連。NAT9914無(wú)內(nèi)部時(shí)鐘發(fā)生器,本電路通過(guò)3MHz時(shí)鐘振蕩電路,產(chǎn)生3MHz時(shí)鐘與NAT9914的CLK端相連。
因?yàn)閮x器的GPIB接口是通過(guò)C8051F020的外部數(shù)據(jù)存儲(chǔ)器接口(EMIF)對(duì)NAT9914的寄存器進(jìn)行讀寫(xiě)來(lái)實(shí)現(xiàn)的,而NAT9914寄存器的地址線(xiàn)只有3位,所以我們將C8051F020的外部數(shù)據(jù)存儲(chǔ)器接口配置成“地址數(shù)據(jù)復(fù)用方式”,即數(shù)據(jù)總線(xiàn)和地址總線(xiàn)的低8位共享相同的端口P7;將外部數(shù)據(jù)存儲(chǔ)器空間配置為“無(wú)塊選擇的分片模式”,由于在這種模式下,單片機(jī)訪(fǎng)問(wèn)片外存儲(chǔ)器期間一個(gè)8位MOVX操作不驅(qū)動(dòng)地址總線(xiàn)的高8位P6,因此我們又可以把P6口用作儀器的其他功能。
本設(shè)計(jì)中軟件采用C51語(yǔ)言編寫(xiě),在主程序初始化部分對(duì)C8051F020高端口進(jìn)行配置并對(duì)NAT9914進(jìn)行初始化設(shè)置。單片機(jī)的高端口配置主要包括:首先將EMIF配置到到高端口(P4~P7),并將其配置成地址數(shù)據(jù)復(fù)用模式,然后選擇存儲(chǔ)器模式為不帶塊選擇的分片方式,最后設(shè)置單片機(jī)與片外存儲(chǔ)器接口的時(shí)序;NAT9914初始化主要包括:設(shè)置GPIB通信時(shí)鐘頻率、設(shè)置設(shè)備的GPIB地址、設(shè)置三線(xiàn)掛鉤參數(shù)、NAT9914中斷使能等,初始化完成后將NAT9914接入GPIB通信總線(xiàn)。
單片機(jī)系統(tǒng)以中斷方式對(duì)GPIB各種事件進(jìn)行處理,當(dāng)有GPIB事件時(shí),NAT9914會(huì)觸發(fā)C8051F020芯片的外部中斷,單片機(jī)進(jìn)入中斷子程序?qū)κ录M(jìn)行處理。引起單片機(jī)中斷的最常見(jiàn)GPIB事件是數(shù)據(jù)的接收和數(shù)據(jù)的發(fā)送,流程分別如圖2和圖3所示。
圖2 GPIB接收數(shù)據(jù)子程序流程圖
圖3 GPIB發(fā)送數(shù)據(jù)子程序流程圖
在接收數(shù)據(jù)時(shí),NAT9914每接收到一個(gè)字節(jié)數(shù)據(jù)后,即置位寄存器ISR0中的BI位,觸發(fā)單片機(jī)外部中斷,單片進(jìn)入外部中斷處理程序后,讀取ISR0寄存器,判斷NAT9914觸發(fā)中斷的原因是接收數(shù)據(jù)事件后,開(kāi)始接收來(lái)自GPIB儀器的數(shù)據(jù)。
在主程序中,NAT9914發(fā)送完第一個(gè)字節(jié)數(shù)據(jù)后,即置位寄存器ISR0中的BO位,觸發(fā)單片機(jī)外部中斷。單片機(jī)進(jìn)入外部中斷處理程序后,根據(jù)BO位判斷事件類(lèi)型為發(fā)送數(shù)據(jù)事件,將緩沖區(qū)中剩余的數(shù)據(jù)依次發(fā)送到GPIB總線(xiàn)上,直至所有數(shù)據(jù)發(fā)送完畢。
本設(shè)計(jì)利用C8051F020單片機(jī)的高端口控制NAT9914芯片,實(shí)現(xiàn)了以該單片機(jī)為主控CPU的智能儀器的GPIB接口,把功能比較強(qiáng)大的單片機(jī)低端口解放出來(lái),用作儀器的其他功能。資源配置合理,設(shè)計(jì)簡(jiǎn)單,效果良好。
[1]NAT9914 Reference Manual.America,National Instruments Corporation,1995.
[2]潘琢金.C8051F020/1/2/3混合信號(hào)ISP FLASH微控制器數(shù)據(jù)手冊(cè)[S].2005.