摘要:GPIB 控制器芯片是组建自动测试系统的核心,在测试领域应用广泛。本文拟讨论用
ALTERA 公司的低成本 CPLD 来实现 GPIB 控制器的功能。GPIB 控制器芯片的硬件设计主 要分为状态机的实现、数据通道和微处理接口的设计。本文重点介绍了各个模块的实现原理。
关键词:GPIB,CPLD,三线挂钩,三态总线,VHDL。
1. 引言:
1.1 用 CPLD 实现 GPIB 控制芯片的意义
综观现今市场上的测试仪器,不难发现 GPIB 总线有重要的作用,在研制台式测试仪器 的时候,客户几乎均要求具备 GPIB 接口。可是在实际研发过程中,却发现 GPIB 控制芯片很难购买,而且价格昂贵。而且作为测试仪器具备 GPIB 的接口,一般只需要具有听、讲、串查功能,而不需要控、并查功能,这样又会造成资源与功能的浪费。所以我们尝试用 CPLD来实现 GPIB 接口的听、讲、串查功能,不仅可拥有自主知识产权,节省了产品的成本,而 且具有很大的灵活性。
1.2 GPIB 控制芯片简介:
GPIB 也叫 HPIB,是一个数字化的 24 脚并行总线,由 16 条信号线和 8 条地线组成。这16 条信号线分为 8 条数据线、5 条控制线和 3 条握手线。8 条数据线:从 DIO1 到 DIO8,用 来传送命令、地址和数据;5 条控制线:分别为 ATN 线、IFC 线、REN 线、SRQ 线和 EOI 线,用来管理通过接口的有序信息流;3 条握手线:DAV 线、NRFD 线和 NDAC 线,用于控制设备之间消息字节的传送。发送消息方(源方)和接收消息方(受方)利用这 3 条握手线进行三线挂钩,以保证数据线上的消息(命令或数据)能准确无误地传送。
在 GPIB 系统中,把器件与 GPIB 总线的一种交互作用定义成一种接口功能。GPIB 标准 接口共定义了 10 种接口功能。
1.3 设计软件及设计芯片的选择
开发工具采用 ALTERA 公司的 MAXplusⅡ10.0。MAXplusⅡ开发工具是美国 Altera 公司 自行设计的一种 EDA 软件工具,它具有原理图输入和文本输入(采用硬件描述语言)两种输入手段,配备有编辑、编译、仿真、综合、芯片编程等功能。
Altera 公司是世界上从事可编程逻辑芯片生产的几家主要厂商之一,其 MAX3000A 系列 可编程逻辑芯片速度快,容量大,性价比高。我们选用的 EPM3256ATC144-10,拥有 256个宏单元,144 个管脚,可自定义使用的管脚达 116 个,4.5ns 的传输延时完全能满足要求。
2. GPIB 控制器各个模块的设计 我们可以把整个系统划分为几个子系统。其中包括和微处理器接口的读写电路,与 GPIB母线通信的接口功能,以及内部寄存器。对每个子系统的设计也可以采用向下分解为模块级
设计,这样在调试和组件系统时,不仅具有很强的灵活性,而且方便代码的调试以及利于代 码的重利用。与微处理器接口的读写电路设计可以利用组合逻辑电路设计方法实现,其基本 模块,如:译码电路,读写电路,相对比较成熟,在设计的时候只要对其基本功能深刻理解的基础上容易实现。与 GPIB 母线通信的子系统设计是本课题设计的重点也是难点,它不仅 需要对 IEEE488 协议有深刻的认识,而且在接口功能子集的选择上也有一定的要求。
2.1 微处理器(MCU)接口电路 微处理器(MCU)接口包括提供正确的寄存器访问地址的译码电路,以及连同 WE 和DBIN 一起构成的访问 GPIB 控制器的读写电路,NCS 用来选通地址译码。地址译码电路以 及数据读写电路在数字电路设计中是最为成熟的电路,在此不作更多深入的阐述。值得注意
的是 GPIB 控制器的读写信号并不是通常意义上的 RD 和 WR 信号,而是由 DBIN 和 WE 信 号完成。而且,对 13 个寄存器的译码也用的仅仅是 RS[0:2],这就需要和 DBIN 信号的配合来完成译码功能。
2.2 内部寄存器
GPIB 控制器(参考 NAT9914)的内部体系结构有 13 个寄存器,其中 7 个可写寄存器,6 个只读寄存器。它们都是八位的,其中可读寄存器有中断状态寄存器 0(ISR0)、中断状态 寄存器 1(ISR1)、地址状态寄存器(ASR)、总线状态寄存器(BSR)、命令通过寄存器(CPR)、 数据输入寄存器(DIR);可写寄存器有中断屏蔽寄存器 0(IMR0)、中断屏蔽寄存器 1(IMR1)、地址寄存器(ADR)、辅助命令寄存器(AUXCR)、串行查询寄存器(SPR)、并行查找寄存器(PPR)、数据输出寄存器(CDOR)。在 GPIB 控制芯片的设计中对这十三个寄存器进行 详细的描述。本模块的设计采用图形方式,利用参数化模块库实现各个寄存器。
2.3 接口功能
GPIB 标准接口共定义了 10 种接口功能。每一个接口功能由一组或多组相互联系而又相 互排斥的状态来定义。在一个时刻,一组互联又互斥的状态中必须有一个而且也仅又一个状态在起作用。在 IEEE488 协议中对接口功能的每一个状态还做了两方面的规定:
1.当某个状态在起作用时,在接口上可以或必须发送的消息;
2.在什么条件下接口功能必须脱离某一状态而进入同一组状态的另一个状态; 这些因素决定了状态的处理能力。接口功能状态图给出了全部状态以及从一个状态变迁到另一个状态一切可能的途径。由于篇幅的限制,下面以受方挂钩接口功能 AH 功能为例, 来介绍功能模块的实现过程及原理。受方挂钩功能赋予器件保证正确地接收远地多线消息地能力。一个源方挂钩功能与一个或多个受方挂钩功能(分别含于各个器件中)的链锁挂钩序
列保证每个消息拜特的异步传递。受方挂钩功能可以延迟多线消息传递的开始或结束,直到 器件准备好继续参与传递过程为止。状态图如图 1: