GPIB接口專(zhuān)用芯片TNT4882
1 概述
TNT4882是美國NI公司的一款單芯片、高速、聽(tīng)/講功能的兼備的GPIB(General purpose interface bus)接口專(zhuān)用芯片。它內部集成了Turbo488(高速傳輸電路)以及NAT4882(IEEE488.2兼容電路),并擁有諸多新的特性,能夠兼容ANSI IEEE Standard 488.1和ANSI IEEE Standard 488.2規范,因而可以為GPIB系統提供一套完整的解決方案。為了達到更高的傳輸速率。TNT4882采用了單芯片FIFO緩存電路設計,其內置的16個(gè)增強型IEEE 488.1兼容收發(fā)器可以直接連接GPIB總線(xiàn),以實(shí)現HS488傳輸模式(一種新的GPIB高速傳輸模式)。在兼容性方面,它與以往使用的μPD7210、TMS9914A中的寄存器設置完全兼容,用戶(hù)可以將以前所用的代碼直接移植到TNT4882上。同時(shí),它所包含的Turbo488電路及其諸多新特性也可以在一定程度上減少軟件的開(kāi)銷(xiāo)。另外,TMT4882還具有靈活的CPU接口,可以方便地連接各種16位或8位微處理器,并將CPU發(fā)出的消息和信號轉化成相應的GPIB消息和信號,以使實(shí)現GPIB設備和CPU及內存之間的通信。
圖1 雙芯片模式結構框圖
2 內部結構和外圍時(shí)鐘電路
2.1 TNT4882的內部結構
TNT4882的內部結構以其工作模式的不同而有所不同。工作模式可分為單芯片模式和雙芯片模式兩種,而雙芯片模式又可分為T(mén)urbo+7210模式和Turbo+9914模式。工作模式的選擇和轉換由寄存器的設置來(lái)決定,不同的工作模式?jīng)Q定著(zhù)FIFO與GPIB的連接方式、寄存器的狀態(tài)和訪(fǎng)問(wèn)屬性。
在雙芯片工作模式下,NAT4882相當于μPD7210(Turbo+7210模式)或TMS9914A(Turbo+9914模式),但功能更加強大。此時(shí)的結構及工作過(guò)程如圖1所示。當前GPIB寫(xiě)數據時(shí),CPU首先將數據寫(xiě)入TNT4882的FIFO里,并由傳輸狀態(tài)機將數據從FIFO傳至NAT4882電路,再由NAT4882電路將數據傳送至GPIB上;而當從GPIB上讀數據時(shí),過(guò)程則正好相反。
在單芯片工作模式下,FIFO可直接與GPIB相連而不需要傳輸狀態(tài)機,其結構如圖2所示。此時(shí),TNT4882中寄存器的設置與Turbo+7210模式類(lèi)似。
由于單芯片模式采用的是最簡(jiǎn)單且最快速的結構,且是NI公司推薦的TNT4882工作模式,因此,本文主要討論這種模式。
2.2 外圍時(shí)鐘電路
TNT4882工作時(shí)需要40MHz的驅動(dòng)時(shí)鐘,產(chǎn)生時(shí)鐘信號的方法有兩種:一是采用40MHz的CMOS晶振,將晶振的輸出接至TNT4882的XTALI管腳,并將XTALO管腳懸空;二是采用如圖3所示的外圍時(shí)鐘電路。
圖2 單芯片模式結構框圖 圖3 TNT4882外圍時(shí)鐘電路
3 寄存器簡(jiǎn)介
TNT4882內部寄存器的數量和種類(lèi)都很多,而且在不同的工作模式下,寄存器的情況又不盡相同。本文只對單芯片模式以及與最基本的GPIB操作有關(guān)的一些寄存器進(jìn)行簡(jiǎn)要地介紹。
需要注意的是,TNT4882內部的寄存器都是8位的。所以,每個(gè)寄存器的控制字也必須是8位。寄存器的地址通常是TNT4882的基地址加上各個(gè)寄存器所對應的偏移量。TNT4882的基地址由硬件電路決定,而每個(gè)寄存器對應的偏移量則是固定的,其范圍從0至0x1F。寄存器有三種類(lèi)型:只讀、只寫(xiě)和讀/寫(xiě)。表1列出了一些比較重要的寄存器類(lèi)型。
表1 TNT4882的部分寄存器
寄存器 | 英文縮寫(xiě) | 偏移量 | 類(lèi) 型 |
命令寄存器 | CMDR | 1C | 只寫(xiě) |
輔助模式寄存器 | AUXMR | 0A | 只寫(xiě) |
連續輪詢(xún)模式寄存器 | SPMR | 06 | 只寫(xiě) |
握手選擇寄存器 | HSSEL | 0D | 只寫(xiě) |
高速使能寄存器 | HIER | 13 | 只寫(xiě) |
多功能寄存器 | MISC | 15 | 只寫(xiě) |
地址模式寄存器 | ADMR | 08 | 只寫(xiě) |
地址寄存器 | ADR | 0C | 只寫(xiě) |
中斷寄存器0 | IMR0 | 1D | 只寫(xiě) |
中斷寄存器1 | IMR1 | 02 | 只寫(xiě) |
配置寄存器 | CFG | 10 | 只寫(xiě) |
總線(xiàn)控制寄存器 | BCR | 1F | 只寫(xiě) |
總線(xiàn)狀態(tài)寄存器 | BSR | 1F | 只讀 |
地址狀態(tài)寄存器 | ADSR | 08 | 只讀 |
FIFO緩存A | FIFOA | 19 | 讀/寫(xiě) |
FIFO緩存B | FIFOB | 18 | 讀/寫(xiě) |
計數寄存器0 | CNT0 | 14 | 讀/寫(xiě) |
計數寄存器1 | CNT1 | 16 | 讀/寫(xiě) |
計數寄存器2 | CNT2 | 09 | 讀/寫(xiě) |
計數寄存器3 | CNT3 | 0B | 讀/寫(xiě) |
4 軟件編程
TNT4882是一種需要軟件編程的集成電路。其內部各個(gè)寄存器的狀態(tài)決定或標志著(zhù)芯片及GPIB的工作狀態(tài)。在GPIB接口設計中,只有通過(guò)編程對寄存器進(jìn)行正確設備,才能實(shí)現對GPIB的各種操作。以下是編程的基本思路和注意事項。
4.1 芯片初始化
最典型的初始化程序需完成以下工作:
(1)復位TNT4882器件中的Turbo488電路;
(2)將TNT4882設置成Turbo+7210模式;
(3)將TNT4882設置成單片機模式;
(4)使Local Power-On信號有效;
(5)配置TNT4882以為GPIB操作作準備,其具體任務(wù)是設置TNT4882的GPIB地址、設置初始串行輪詢(xún)響應、設置初始并行輪詢(xún)響應、清除或設定中斷、設置GPIB握手參數等。
(6)清除Local Power-On信號,開(kāi)始GPIB操作。
上述工作只是編程時(shí)考慮實(shí)現各種功能的基本原則,設計得可以根據自己的實(shí)際需要,對TNT4882進(jìn)行適當的編程,而沒(méi)有必要完成每種功能的設置。
4.2 GPIB數據傳輸
用TNT4882進(jìn)行GPIB數據傳輸時(shí),需經(jīng)歷初始化、數據傳輸和傳輸終止三個(gè)階段,傳輸初始化步驟如下:
(1)正確設置TNT4882的地址模式。在GPIB寫(xiě)操作之前,應將TNT4882設置成講狀態(tài);而在GPIB讀操作之前,要將TNT4882設置成聽(tīng)狀態(tài);
(2)清空FIFO,為數據傳輸作準備;
(3)向配置寄存器中寫(xiě)入正確的控制字以設定傳輸參數;
(4)將欲傳輸字符個(gè)數的二進(jìn)制補碼寫(xiě)入計數寄存器;
(5)如果需要的話(huà),可以設置DMA參數并使用DMA方式進(jìn)行傳輸;
(6)根據需要,合理設置或清除中斷;
(7)向TNT4882發(fā)送傳輸命令。
在傳輸初始化完成之后,就可以在系統內存和GPIB之間傳輸數據了。此時(shí),所要考慮的只是如何協(xié)調內存和FIFO間的工作,而TNT4882會(huì )自動(dòng)管理FIFO與GPIB間的數據傳輸。通??梢赃x擇兩種傳輸方式:DMA方式和程序控制方式。若使用DMA方式,則必須在傳輸初始化時(shí)對TNT4882進(jìn)行正確設定。如果使用程序控制方式,則需設計控制程序來(lái)對數據傳輸進(jìn)行管理??刂瞥绦虻幕玖鞒倘鐖D4所示。
當數據傳輸終止時(shí),還應進(jìn)行以下幾步操作:
(1)向TNT4882發(fā)送停止命令;
(2)若使用了DMA方式,還需禁止外部的DMA控制器;
(3)清除所有的中斷設置。
5 結束語(yǔ)
使用TNT4882時(shí),除了要求外接一個(gè)40MHz的外部時(shí)鐘以外,幾乎不需要其它任何輔助電路,因而大大簡(jiǎn)化了接口電路的設計和開(kāi)發(fā)。通過(guò)筆者的實(shí)驗證明:TNT4882是一款廉價(jià)的、高性能的GPIB接口專(zhuān)用芯片,是GPIB接口設計的理想選擇。
評論