中國電子科技集團公司第41研究所 徐玉華
GPIB(General purpose Interface Bus,通用接口總線)是一種面向程控儀器的通用接口總線,適用于實時控制與快速數據采集等場合。隨著自動測試系統的不斷發展,GPIB總線的應用也越來越多,它是目前組建自動測試系統最成熟的總線之一,深受國內外儀器廠家的青睞。在以C8051F020單片機為主控CPU的智能儀器的設計中,將GPIB接口配置在功能比較單一的高端口(P4~P7),把功能比較強大的低端口(P0~P3)解放出來用作儀器的其他功能,使得單片機的系統資源配置達到最優化。
GPIB于二十世紀60年代末誕生于惠普公司,現已成為工業控制及可編程儀器的標準接口之一,它是由國際電子電氣工程師協會于1974年9月制定的一種標準接口總線,又稱IEEE.488總線。GPIB是一種24芯的并行無源總線,其中16條被用作信號線,包括8條數據線(DIO1~DIO8),3條握手線(DAV、NRFD、NDAC)和5條管理線(ATN、REN、IFC、EOI、SRQ),其余8條為地線。數據傳輸采用位并行,字節串行的雙向異步傳輸方式。消息采用負邏輯,低電平(≤0.8V)為邏輯1,高電平(≥2.0V)為邏輯0。
GPIB功能接口可以通過以下三種方式來實現:1)中小規模集成電路;2)軟件模擬;3)專用大規模集成電路。其中采用中小規模集成電路和軟件模擬實現GPIB接口都比較復雜,而且應用效率和可靠性比較差。因此,在本設計中,我們采用了專用大規模集成電路NAT9914來實現GPIB接口電路的設計。
本設計選用C8051F020作為儀器的主控CPU,原因在于C8051F020具有豐富的I/O端口,其中低端口(P0、P1、P2和P3)既可以按位尋址也可以按字節尋址,且每個引腳既可定義為通用的端口I/O(GPIO)引腳,又可以分配給一個數字外設或功能;高端口(P4、P5、P6和P7)只能按字節尋址,也只能作為普通的I/O端口使用。由此可見,單片機的低端口配置比較靈活,功能比較強大,高端口功能比較單一。故為了優化資源配置,我們把儀器的GPIB接口配置在高端口,把低端口解放出來用作儀器的其他功能。
C8051F020是美國Cygnal公司推出的一款新型的SOC型8位單片機,結合設計需求,主要介紹該款單片機的以下特征:
(1)高速、流水線結構的8051兼容的CIP-51內核(可達25MIPS),指令系統與標準51系列單片機兼容,程序編寫容易。
(2)除了有標準8051的端口(P0、P1、P2和P3)外,還附加4個端口(P4、P5、P6和P7)。外部數據存儲器接口(EMIF)可被配置為使用低I/O端口(P0~P3)或高I/O端口(P4~P7)。
(3)集成了JTAG端口,對于JTAG調試方式,它支持在系統、全速、非插入調試和編程,并且不占用片內資源。
(4)可尋址64kB地址空間的外部數據存儲器接口。
(5)64kB可在系統編程的FLASH存儲器,可用于單片機程序和非易失性數據存儲。
NAT9914可以被看作為一個總線翻譯器,它把來自單片機的消息轉換成相應的GPIB總線的消息,又可以將GPIB總線的消息轉變成單片機能夠識別的信號。它共有25個可尋址的寄存器,對應用來說,最主要的有19個工作寄存器。這19個寄存器包括8個只讀寄存器和11個只寫寄存器。微處理器通過地址選擇端RS0、RS1、RS2和讀寫端DBIN、/WE來選擇這些寄存器,進行讀寫操作。當/WE和DBIN均為低電平時,微處理器可對寫寄存器進行操作,當/WE和DBIN均為高電平時,微處理器可對讀寄存器執行操作,NAT9914正是通過這些讀/寫寄存器來實現GPIB總線與CPU之間的全部通訊。
NAT9914的性能特點如下:
(1)NAT9914的管腳與TMS9914的管腳完全兼容。
(2)在軟件上可以與μPD7201兼容。
(3)低功耗,與CMOS和TTL電平兼容。
(4)完成所有IEEE488.1的接口功能。
(5)滿足IEEE488.2的所有協議。
(6)可以程控數據傳輸速率(延遲350ns、500ns、1.1μs和1.2μs)。
(7)可以自動檢測EOS和NL消息。
(8)具有直接存取功能。
(9)自動執行IEEE488的命令并可以讀出未定義命令。
(10)有幾種一次和二次地址尋址方式。
(11)程控時鐘頻率可高達20MHz。
如圖1所示,本文設計的GPIB接口電路主要由C8051F020、74LS373、NAT9914、SN75160和SN75161等芯片組成。NAT9914接在主控CPU C8051F020與數據總線收發器SN75160和控制總線收發器SN75161之間,充當GPIB總線和儀器之間的適配器,硬件上保證了GPIB接口物理性能的實現。

圖1 GPIB硬件電路圖
D0~D7為NAT9914的八條數據線,由于GPIB總線采用負邏輯,D7是內部數據總線的最低有效位,與C8051F020相連時,D7~D0與P7.0~P7.7對應相連。RS2、RS1、RS0是NAT9914內部寄存器選擇端,與地址鎖存器74LS373輸出端低3位相連,并與讀寫操作線配合使用,以選擇需要操作的寄存器。/INT為中斷請求線,直接與C8051F020的中斷端相連,使NAT9914可以通過中斷方式實現接口功能。當NAT9914的讀寫端口DBIN和/WR為高電平時,允許對其讀,為低電平時,允許對其寫,因此C8051F020的/WR直接與NAT9914的/WR相連,而/RD則經反相后與NAT9914的DBIN相連。NAT9914無內部時鐘發生器,本電路通過3MHz時鐘振蕩電路,產生3MHz時鐘與NAT9914的CLK端相連。
因為儀器的GPIB接口是通過C8051F020的外部數據存儲器接口(EMIF)對NAT9914的寄存器進行讀寫來實現的,而NAT9914寄存器的地址線只有3位,所以我們將C8051F020的外部數據存儲器接口配置成“地址數據復用方式”,即數據總線和地址總線的低8位共享相同的端口P7;將外部數據存儲器空間配置為“無塊選擇的分片模式”,由于在這種模式下,單片機訪問片外存儲器期間一個8位MOVX操作不驅動地址總線的高8位P6,因此我們又可以把P6口用作儀器的其他功能。
本設計中軟件采用C51語言編寫,在主程序初始化部分對C8051F020高端口進行配置并對NAT9914進行初始化設置。單片機的高端口配置主要包括:首先將EMIF配置到到高端口(P4~P7),并將其配置成地址數據復用模式,然后選擇存儲器模式為不帶塊選擇的分片方式,最后設置單片機與片外存儲器接口的時序;NAT9914初始化主要包括:設置GPIB通信時鐘頻率、設置設備的GPIB地址、設置三線掛鉤參數、NAT9914中斷使能等,初始化完成后將NAT9914接入GPIB通信總線。
單片機系統以中斷方式對GPIB各種事件進行處理,當有GPIB事件時,NAT9914會觸發C8051F020芯片的外部中斷,單片機進入中斷子程序對事件進行處理。引起單片機中斷的最常見GPIB事件是數據的接收和數據的發送,流程分別如圖2和圖3所示。

圖2 GPIB接收數據子程序流程圖

圖3 GPIB發送數據子程序流程圖
在接收數據時,NAT9914每接收到一個字節數據后,即置位寄存器ISR0中的BI位,觸發單片機外部中斷,單片進入外部中斷處理程序后,讀取ISR0寄存器,判斷NAT9914觸發中斷的原因是接收數據事件后,開始接收來自GPIB儀器的數據。
在主程序中,NAT9914發送完第一個字節數據后,即置位寄存器ISR0中的BO位,觸發單片機外部中斷。單片機進入外部中斷處理程序后,根據BO位判斷事件類型為發送數據事件,將緩沖區中剩余的數據依次發送到GPIB總線上,直至所有數據發送完畢。
本設計利用C8051F020單片機的高端口控制NAT9914芯片,實現了以該單片機為主控CPU的智能儀器的GPIB接口,把功能比較強大的單片機低端口解放出來,用作儀器的其他功能。資源配置合理,設計簡單,效果良好。
[1]NAT9914 Reference Manual.America,National Instruments Corporation,1995.
[2]潘琢金.C8051F020/1/2/3混合信號ISP FLASH微控制器數據手冊[S].2005.