GPIB接口芯片专用分析论文

时间:2022-06-26 11:34:00

导语:GPIB接口芯片专用分析论文一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。

GPIB接口芯片专用分析论文

摘要:TNT4882是美国NI公司推出的一款gpib接口专用芯片。文中介绍了其内部结构、外围时钟电路和部分重要的寄存器,给出了GPIB接口设计中对TNT4882编程的基本思路和注意事项。

关键词:GPIB接口TNT4882

1概述

TNT4882是美国NI公司的一款单芯片、高速、听/讲功能的兼备的GPIB(Generalpurposeinterfacebus)接口专用芯片。它内部集成了Turbo488(高速传输电路)以及NAT4882(IEEE488.2兼容电路),并拥有诸多新的特性,能够兼容ANSIIEEEStandard488.1和ANSIIEEEStandard488.2规范,因而可以为GPIB系统提供一套完整的解决方案。为了达到更高的传输速率。TNT4882采用了单芯片FIFO缓存电路设计,其内置的16个增强型IEEE488.1兼容收发器可以直接连接GPIB总线,以实现HS488传输模式(一种新的GPIB高速传输模式)。在兼容性方面,它与以往使用的μPD7210、TMS9914A中的寄存器设置完全兼容,用户可以将以前所用的代码直接移植到TNT4882上。同时,它所包含的Turbo488电路及其诸多新特性也可以在一定程度上减少软件的开销。另外,TMT4882还具有灵活的CPU接口,可以方便地连接各种16位或8位微处理器,并将CPU发出的消息和信号转化成相应的GPIB消息和信号,以使实现GPIB设备和CPU及内存之间的通信。

图1双芯片模式结构框图

2内部结构和外围时钟电路

2.1TNT4882的内部结构

TNT4882的内部结构以其工作模式的不同而有所不同。工作模式可分为单芯片模式和双芯片模式两种,而双芯片模式又可分为Turbo+7210模式和Turbo+9914模式。工作模式的选择和转换由寄存器的设置来决定,不同的工作模式决定着FIFO与GPIB的连接方式、寄存器的状态和访问属性。

在双芯片工作模式下,NAT4882相当于μPD7210(Turbo+7210模式)或TMS9914A(Turbo+9914模式),但功能更加强大。此时的结构及工作过程如图1所示。当前GPIB写数据时,CPU首先将数据写入TNT4882的FIFO里,并由传输状态机将数据从FIFO传至NAT4882电路,再由NAT4882电路将数据传送至GPIB上;而当从GPIB上读数据时,过程则正好相反。

在单芯片工作模式下,FIFO可直接与GPIB相连而不需要传输状态机,其结构如图2所示。此时,TNT4882中寄存器的设置与Turbo+7210模式类似。

由于单芯片模式采用的是最简单且最快速的结构,且是NI公司推荐的TNT4882工作模式,因此,本文主要讨论这种模式。

2.2外围时钟电路

TNT4882工作时需要40MHz的驱动时钟,产生时钟信号的方法有两种:一是采用40MHz的CMOS晶振,将晶振的输出接至TNT4882的XTALI管脚,并将XTALO管脚悬空;二是采用如图3所示的外围时钟电路。

图2单芯片模式结构框图图3TNT4882外围时钟电路

3寄存器简介

TNT4882内部寄存器的数量和种类都很多,而且在不同的工作模式下,寄存器的情况又不尽相同。本文只对单芯片模式以及与最基本的GPIB操作有关的一些寄存器进行简要地介绍。

需要注意的是,TNT4882内部的寄存器都是8位的。所以,每个寄存器的控制字也必须是8位。寄存器的地址通常是TNT4882的基地址加上各个寄存器所对应的偏移量。TNT4882的基地址由硬件电路决定,而每个寄存器对应的偏移量则是固定的,其范围从0至0x1F。寄存器有三种类型:只读、只写和读/写。表1列出了一些比较重要的寄存器类型。

表1TNT4882的部分寄存器

寄存器英文缩写偏移量类型

命令寄存器CMDR1C只写

辅助模式寄存器AUXMR0A只写

连续轮询模式寄存器SPMR06只写

握手选择寄存器HSSEL0D只写

高速使能寄存器HIER13只写

多功能寄存器MISC15只写

地址模式寄存器ADMR08只写

地址寄存器ADR0C只写

中断寄存器0IMR01D只写

中断寄存器1IMR102只写

配置寄存器CFG10只写

总线控制寄存器BCR1F只写

总线状态寄存器BSR1F只读

地址状态寄存器ADSR08只读

FIFO缓存AFIFOA19读/写

FIFO缓存BFIFOB18读/写

计数寄存器0CNT014读/写

计数寄存器1CNT116读/写

计数寄存器2CNT209读/写

计数寄存器3CNT30B读/写

4软件编程

TNT4882是一种需要软件编程的集成电路。其内部各个寄存器的状态决定或标志着芯片及GPIB的工作状态。在GPIB接口设计中,只有通过编程对寄存器进行正确设备,才能实现对GPIB的各种操作。以下是编程的基本思路和注意事项。

4.1芯片初始化

最典型的初始化程序需完成以下工作:

(1)复位TNT4882器件中的Turbo488电路;

(2)将TNT4882设置成Turbo+7210模式;

(3)将TNT4882设置成单片机模式;

(4)使LocalPower-On信号有效;

(5)配置TNT4882以为GPIB操作作准备,其具体任务是设置TNT4882的GPIB地址、设置初始串行轮询响应、设置初始并行轮询响应、清除或设定中断、设置GPIB握手参数等。

(6)清除LocalPower-On信号,开始GPIB操作。

上述工作只是编程时考虑实现各种功能的基本原则,设计得可以根据自己的实际需要,对TNT4882进行适当的编程,而没有必要完成每种功能的设置。

4.2GPIB数据传输

用TNT4882进行GPIB数据传输时,需经历初始化、数据传输和传输终止三个阶段,传输初始化步骤如下:

(1)正确设置TNT4882的地址模式。在GPIB写操作之前,应将TNT4882设置成讲状态;而在GPIB读操作之前,要将TNT4882设置成听状态;

(2)清空FIFO,为数据传输作准备;

(3)向配置寄存器中写入正确的控制字以设定传输参数;

(4)将欲传输字符个数的二进制补码写入计数寄存器;

(5)如果需要的话,可以设置DMA参数并使用DMA方式进行传输;

(6)根据需要,合理设置或清除中断;

(7)向TNT4882发送传输命令。

在传输初始化完成之后,就可以在系统内存和GPIB之间传输数据了。此时,所要考虑的只是如何协调内存和FIFO间的工作,而TNT4882会自动管理FIFO与GPIB间的数据传输。通常可以选择两种传输方式:DMA方式和程序控制方式。若使用DMA方式,则必须在传输初始化时对TNT4882进行正确设定。如果使用程序控制方式,则需设计控制程序来对数据传输进行管理。控制程序的基本流程如图4所示。

当数据传输终止时,还应进行以下几步操作:

(1)向TNT4882发送停止命令;

(2)若使用了DMA方式,还需禁止外部的DMA控制器;

(3)清除所有的中断设置。

5结束语

使用TNT4882时,除了要求外接一个40MHz的外部时钟以外,几乎不需要其它任何辅助电路,因而大大简化了接口电路的设计和开发。通过笔者的实验证明:TNT4882是一款廉价的、高性能的GPIB接口专用芯片,是GPIB接口设计的理想选择。