GPIB,也称为IEEE-488标准或HPIB(惠普接口总线),是一种历史悠久且至今仍在许多测试测量、科研和教育领域广泛使用的并行通信标准,其核心目标是让多个独立的仪器能够连接到同一总线上,并由一台计算机进行控制。

以下是GPIB通信的几大关键技术,我将逐一进行详细说明:
三线异步握手协议
这是GPIB最核心、最基础的技术,确保了在高速并行传输中,数据能够被可靠地发送和接收,而不会丢失或错位,它依赖于三条“握手线”:
-
DAV (Data Valid - 数据有效线)
- 控制方:讲者通过拉低DAV线(逻辑“真”)来通知所有听者:“现在数据总线上的数据是稳定、有效的,请你们可以来读取了。”
- 接收方:听者检测到DAV线变低后,才会从数据总线上读取数据。
-
NRFD (Not Ready For Data - 未准备好接收数据线)
(图片来源网络,侵删)- 接收方:这是“线或”(Wired-OR)逻辑的典型应用。任何一个听者如果没有准备好接收数据(内部缓冲区已满),就会将NRFD线拉高(逻辑“假”)。只有当所有听者都准备好接收数据时,NRFD线才会被所有听者释放而变为低电平(逻辑“真”)。
- 控制方:讲者会持续监测NRFD线,只有当NRFD线变为低电平(表示所有听者都已就绪)时,讲者才会将数据放到数据总线上,并准备拉低DAV线。
-
NDAC (Not Data Accepted - 数据未接收线)
- 接收方:同样是“线或”逻辑。任何一个听者在读取完数据后,并不会立即释放NDAC线,它会保持NDAC线为高电平(逻辑“假”)。只有当所有听者都确认已经读取完数据后,NDAC线才会被所有听者释放而变为低电平(逻辑“真”)。
- 控制方:讲者会持续监测NDAC线,只有当NDAC线变为低电平(表示所有听者都已接收完毕)后,讲者才会将DAV线拉高,表示本次数据传输完成,并可以开始下一轮的传输。
工作流程简述:
- 讲者检查NRFD是否为低(所有听者准备好)。
- 若准备好,讲者将数据放到数据总线上。
- 讲者拉低DAV(数据有效)。
- 听者检测到DAV变低,开始读取数据,并拉高NDAC。
- 所有听者读取完毕后,NDAC变低。
- 讲者检测到NDAC变低,拉高DAV(数据无效)。
- 讲者准备发送下一个字节,同时听者将NRFD拉低,准备下一次握手。
这个协议确保了即使总线上连接着速度不同的多个设备,也能以最慢的那个设备的速度进行可靠通信。
总线结构与电气特性
- 物理拓扑结构:GPIB总线采用无源总线结构,所有设备都通过标准GPIB电缆并联在总线上,推荐的总线拓扑是星型或线型混合结构,而非单纯的菊花链,以减少信号反射和衰减。
- 电气标准:GPIB使用TTL(晶体管-晶体管逻辑)电平,逻辑“真”(通常表示1或有效状态)为低电平(0V ~ 0.8V),逻辑“假”(通常表示0或无效状态)为高电平(2.0V ~ 5.25V),这种负逻辑设计是为了提高抗干扰能力。
- 驱动能力:总线上的每个设备接口都具备一定的驱动能力,为了保证信号质量,标准规定总线最多可以连接15个设备(包括控制器),如果需要连接更多设备,必须使用GPIB扩展器或中继器。
设备角色与寻址机制
GPIB总线上的设备根据其功能被分配不同的角色,并通过地址进行唯一标识。

-
三种基本角色:
- 讲者:负责向总线发送数据的设备,数字万用表(测量后输出读数)、波形发生器(输出波形数据),同一时间只能有一个讲者在工作。
- 听者:负责从总线接收数据的设备,打印机(打印数据)、电源(设置电压电流),可以有多个听者同时接收来自同一个讲者的数据。
- 控者:负责管理总线通信的设备,通常是计算机或主控制器,它负责发布命令、指定讲者和听者、发起和结束通信,控者本身也可以作为讲者或听者。
-
寻址机制:
- 听地址:控者通过发送一个特定的命令字节(通常是
5位地址 + 1位(L) = 6位),来指定一个或多个设备成为“听者”,被寻址的设备会响应这个命令,进入听者状态,准备接收数据。 - 讲地址:同理,控者发送讲地址命令,指定一个设备成为“讲者”,被寻址的设备成为讲者,获得发送数据的权利。
- 地址范围:GPIB支持31个讲地址和31个听地址(通过扩展地址可以更多),理论上可以连接很多设备,但受限于电气负载,实际限制在15个。
- 听地址:控者通过发送一个特定的命令字节(通常是
工作流程简述(让电源设置电压,然后万用表测量):
- 控者(计算机)成为讲者,发送电源的听地址。
- 电源被寻址,成为听者。
- 控者发送设置电压的命令字符串(如 "VOLT 5.0")。
- 电源接收并执行命令。
- 控者再次成为讲者,发送万用表的听地址。
- 万用表被寻址,成为听者。
- 控者发送万用表的讲地址。
- 万用表被寻址,成为讲者。
- 万用表将测量结果发送到数据总线。
- 控者(或指定的其他听者,如计算机)接收数据。
命令与消息格式
GPIB总线上的通信内容分为两种:接口消息和设备消息。
-
接口消息:管理总线本身操作的消息,由控者发送,所有设备都必须能识别。
- 通令:所有设备都必须无条件执行的命令,如
IFC(接口清除,复位总线)、REN(远程使能)。 - 寻址命令:用于指定讲者和听者的命令,如
ATN(注意线)为真时发送的就是寻址命令。 - 副地址:用于扩展寻址范围或发送特定命令。
- 通令:所有设备都必须无条件执行的命令,如
-
设备消息:与具体设备功能相关的数据,设置电压为5V”、“读取当前温度”,这些消息是设备特定的,通常采用ASCII字符串格式。
- 消息格式:没有严格规定,但通常遵循SCPI(标准命令用于可编程仪器)标准,这是一种业界广泛接受的命令集。
*IDN?是让设备返回其身份标识的通用命令。 - 数据传输:设备消息通过数据线传输,此时ATN线必须为假(高电平),表示数据线上的内容是设备消息,而非接口命令。
- 消息格式:没有严格规定,但通常遵循SCPI(标准命令用于可编程仪器)标准,这是一种业界广泛接受的命令集。
ATN (Attention - 注意线) 的核心控制作用
ATN线是控者用来区分接口消息和设备消息的“开关”,是控者权力的象征。
- ATN = 1 (逻辑真,低电平):控者正在发送接口消息,只有控者可以发送数据,所有其他设备都必须作为“听者”来接收这些命令(如寻址命令、通令),数据总线上的内容是指令,不是数据。
- ATN = 0 (逻辑假,高电平):控者放弃对总线的控制,由当前被寻址的讲者向当前被寻址的听者发送设备消息(即实际的数据)。
控者通过控制ATN线的状态,来切换总线的“管理模式”和“数据传输模式”。
GPIB关键技术的协同工作
GPIB的强大之处在于这些关键技术协同工作,构成一个稳定可靠的系统:
- 控者通过ATN线宣布自己要发命令(
ATN=1)。 - 控者通过数据总线发送听地址,指定电源为听者。
- 控者通过三线握手协议(NRFD/DAV/NDAC)确保电源正确接收到命令。
- 控者拉高ATN线(
ATN=0),宣布进入数据传输模式。 - 控者将自己设为讲者,向电源发送设备消息(如
"VOLT 5.0"),同样通过三线握手确保数据可靠送达。 - 控者再次拉低ATN线(
ATN=1),宣布发命令。 - 控者发送万用表的听地址和讲地址。
- 控者拉高ATN线(
ATN=0)。 - 万用表作为讲者,通过三线握手将测量数据发送给控者(或其他听者)。
尽管现代的USB、LAN、LXI等总线技术在速度和易用性上已超越GPIB,但GPIB的这套设计思想——特别是其三线异步握手机制——在并行通信领域具有里程碑式的意义,至今仍在许多自动化测试系统中扮演着重要角色。
