作者:戴尔晗 王汝传 时间:2007-04-10 来源: | |
摘要:本文介绍了一种基于S3C44B0X的Ethernet-GPIB转换器的硬件设计,软件上也给出了完整实现。由于采用了嵌入式设计方法,系统的电路得到简化,并提高了系统的可靠性。 关键词:GPIB;以太网;转换器;ARM 引言 通常把在人工最少参与的情况下,能自动进行测量、数据处理,并以适当方式显示或输出测试结果的系统称为自动测试系统。随着自动测试系统应用的日益推广,GPIB总线的应用也越来越多。 事实上,GPIB是组建自动测试系统最成熟的总线。GPIB是测试系统中设备之间相互通讯的一个协议,实现了计算机与测量系统的首次结合。由于GPIB不是计算机的标准接口,因此计算机访问GPIB总线需具备各种转换器:PCI到GPIB转换器、并行口到GPIB转换器或者USB到GPIB转换器等等,这些转换器的功能是在计算机和GPIB总线之间传送数据。上述各种GPIB转换器都有如下缺点:计算机和转换器必须就近连接;处于GPIB总线上的各种仪器无法直接共享给不同的用户等。而Ethernet-GPIB转换器可以将仪器直接接入Internet,弥补上述缺点。因此设计了基于嵌入式系统的微型Ethernet-GPIB转换器。该转换器具有速度快、价格便宜等特点。 硬件设计 基于S3C44B0X的嵌入式系统的基本组成 程序/数据存储模块 GPIB通信模块
Ethernet通信模块 在本设计中,使用跳线模式(IOCS16B)来配置RTLS019AS为16位模式,使用了RTL8019的低5位地址线A0—A4以及16位数据线D0—D15,还有两个指示灯用于是否在线和是否正在接收数据包。CPU的引脚nGCS3作为RTLS019AS的片选信号。以太网硬件接口框图如图2所示。
软件设计 计算机通过Internet发出GPIB指令给相应的Ethernet-GPIB转换器,转换器接收到指令之后通过GPIB总线将GPIB指令转发给仪器,仪器接收GPIB指令后将执行结果返回给转换器,转换器将执行结果转发给计算机完成某一条GPIB指令的执行。上述体系中,Ethernet-GPIB转换器是GPIB命令的真正执行者。 个人计算机程序设计 传统的GPIB接口软件包提供了两种类型的函数:Device-Level(器件级)函数和Board-Level(板级)函数。当转换器被配置成责任控者时,可以直接调用Device-Level函数来完成对于GPIB总线的简单管理和控制。Board-Level函数则用于直接控制接口,从而可以提供更加底层、更加复杂的总线控制手段。表1是本接口软件包提供的部分Device-Level函数名和NI公司提供的Device-Level函数名的对照表,对应函数的调用参数和所完成的功能是完全一致的。以前用类似的API写成的软件程序只需稍微修改、重新编译就可以直接运行,从而保护了以前的软件投资。
Ethernet-GPIB转换器的程序设计 设备驱动程序的作用就是让硬件工作,它的另外一个好处就是程序员可以通过简单的函数接口对相关硬件接口进行访问,而不需要知道实现的具体细节,从而缩短开发时间。本系统硬件主要包括GPIB接口,以太网接口。以太网接口采用了RTL8019AS芯片,这个芯片完成数据包和电信号之间的相互转换、以太网协议等等。不过从程序员的角度看,RTL8019AS工作流程并不复杂,驱动该芯片仅需要3个功能:芯片初始化、收包、发包。 因此设计了3个子函数来完成上述3个功能,Init8019(void)、Send8019(unsignedchar*SendString)、Receive8019(void)。GPIB接口采用了NAT9914芯片,表1中所示的所有函数都必须最终通过该芯片来实现。与NAT9914的通信主要是靠给NAT9914发命令和数据来实现的,NAT9914数据手册给出了各种命令的代码和地址。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可完成相应的命令。 为了实现Ethernet-GPIB转换器的网络化,还需要移植TCP/IP协议。考虑到Ethernet-GPIB转换器对于传输的可靠性要求较高,因此在传输层选用传输控制协议TCP,在网络层选用基本数据传输协议IP。除此之外,系统还需要实现ARP,ICMP,DHCP协议。ARP模块完成的主要功是将一个IP地址与其物理地址关联起来。IP模块的主要功能是使数据包可以分片发往任何网络,而且也能正确接收。为了使TCP/IP协议栈具备一定的差错诊断功能,必须采用ICMP模块实现对请求消息产生回送应答。虽然TCP协议是整个协议栈中最复杂的一个协议,但是对外的接口只有两个:TCPReceive和TCPSend函数,一个用于发送数据包,一个用于接收数据包。在一个IP地址不是非常充足的环境下,系统必须支持DHCP,它的目的是自动获取IP。 该转换器的另外一个特殊性是它的双队列模型,其目的是为了加快GPIB命令的执行。双队列指的是转换器中有两个队列:一个命令队列,一个响应队列。命令队列可以一次接收多个来自于计算机的GPIB命令然后依次在GPIB总线上执行,对于来自于GPIB上的执行结果,将首先进入响应队列,等待某一时刻将结果从响应队列中取出回送给计算机。 应用实例 按照图3的连接方法组建了一个实际的自动测试系统。该系统采用点频法测量低通滤波器的幅频特性,函数发生器采用Agilent33120A函数/任意波形发生器,数字多用表采用2台Fluke45台式数字多用表,其中低通滤波器的带宽约为7000Hz。实际测量中,Agilent33120A函数/任意波形发生器的输出频率在计算机的远程控制下从0开始以100Hz为单位递增,随着其输出频率的不断增加,计算机控制数字多用表进行相应的Ui和Uo的数据采集。经过6min的测量,一共在90个测量点进行了数据采集。采集的数据通过Ethernet-GPIB转换器后途经Internet被送往计算机。图4是计算机上显示的低通滤波器的幅频特性曲线。
结束语 由于该Ethernet-GPIB转换器采用了嵌入式设计方法,系统的电路得到简化,系统的可靠性得到了显著提高。该转换器还为传统的GPIB总线和Internet网络之间提供了通途,可以使越来越多的测试和测量仪器融入Internet网。 |
文章评论(0条评论)
登录后参与讨论