自动测试系统课程设计
题目:ATS-程控仪器接口设计
日期:2015年7月6日
摘要:根据课程设计对接口的基本要求,本报告详细的阐述了基于NAT9914芯片的ATS-程控仪器接口设计过程及设计结果。整体方案是基于NAT9914芯片的任意波形发生器GPIB接口,涉及GPIB接口、发送/接收器等元器件的选型,电路原理和软件框图和主程序流程图。设计方案以IEEE488.2协议为基础,设计了GPIB听者、讲者等基本功能的软件,在此基础上完成了DDS任意波形发生器的SCPI析程序,实现了PC主控机与DDS任意波形发生器通过GPIB接口的消息通信。针对设计的接口,报告还设计了对应接口的程控仪器的基本程序指令和完整的状态报告管理。
Abstract:According to the basic requirements of the curriculum, the report illustrates the process and result of the interface based on NAT9914 chip of ATS-Instrument Controlled by Program in detail. The report based on the GPIB interface of Arbitrary Waveform Generator, connects to the selection of GPIB interface and send/receive instrument, circuit principle, software block diagram and main program flow chart. Report based on the IEEE 488.2, software design of the listener, speakers and other basic functions. Completed the DDS arbitrary waveform generator of SCPI analysis program, the report realized the PC master control machine and DDS arbitrary waveform generator through GPIB interface message communication. For the design of the interface, the report also designed the corresponding interface of the program of the basic program instructions and complete the state report management.
1
ATS-程控仪器接口设计
1.方案设计
本方案的设计是基于NAT9914芯片的任意波形发生器GPIB接口。该接口是通过DDS任意波形发生器主控芯片STM32F103VET6的FSMC方式访问并配置NAT9914的内部寄存器,实现了GPIB接口硬件上的简洁控制。本设计是以IEEE488.2协议为基础,设计了GPIB听者、讲者等基本功能的软件,在此基础上完成了DDS任意波形发生器的SCPI析程序,实现了PC主控机与DDS任意波形发生器通过GPIB接口的消息通信。
2.元器件选型
2.1.GPIB接口芯片选择
GPIB接口的实现有很多方法,或采用规模不等的门电路,或采用大规模集成电路,从硬件到软件的实现都有。本方案采用NI公司集成芯片NAT9914实现GPIB接口。NAT9914是一款需要软件编程的芯片,功能强大,外围电路简单,也满足IEEE488.1和IEEE488.2功能。 2.2.发送/接收器选择
GPIB总线系统通过双向数据母线在相连仪器间传递消息命令。当器件发送或接收消息时需要一定的驱动能力或能承受48mA以上的电流;再根据所传送消息特点决定用集电极开路驱动器还是二态驱动器驱动,因此信号线与接收器、发送器是一对一的收发的。GPIB接口共有16根信号线,fel此需选用16对接收发送门电路。专门的集成电路收发门器件有许多。TI的SN75160和SN75162、 SN75161等是常用且较典型的收发门。SN75160SN作为数据总线的收发器,配合SN75162BN控制总线收发器一起组成IEEE488总线外部控制系统,保证了 GPIB接口物理性能在硬件上的实现。SN75162可提供单个或多个控制设备间的总线管理和数据传输,其特殊的八个驱动接收对将总线和终端通过IO接口连接在一起,与SN75160八进制总线收发器联合使用可对IEEE488总线提供完全的16线接口。且SN75162内含屯源波动抵制电路,从而保证了其工作的可靠性。GPIB的接口要求信号线是三态的,而9914出来的信号只是高低电平,所以要加双向收发器,一个用于数据总线,另一个用于握手线和控制线。一般75160和75162搭配使用满足GPIB 16根地址线的配置。故选择SN75162作为控制总线收发器,SN75160作为数据总线收发器。
3.电路原理框图
2
基于NAT9914的GPIB接口电路框图
D0-D7为八条数据线,其上携载ASCII码的接口消息与设备消息,它们直接与单片机的数据总线相连。但由于GPIB总线采用负逻辑,因此,D0-D7位分别对应于单片机的P0.7-P0.0位。RS2-RS0为NAT9914的寄存器选择端,这三条线通过 74LS373与89C51的低位地址线相连,并与读写操作线配合使用,以选择需要操作的寄存器。图中 P2.7与 NAT9914 的片选端/CS 相连,P2.6经与非门与 74LS245相连。P2.7=0,P2.6 =0 时选通 NAT9914;P2.7 =1 , P2.6 =1 时,选通地址设定电路。/INT为中断请求线,直接与89C51的中断端相连,使NA T9914 可以通过中断方式实现接口功能。当能够引起中断的事件出现并且该事件又未被屏蔽时,NAT9914的/IN T 线进入作用状态,微处理器接收到中断申请后,立即转向接口管理程。ATN 、IFC 、SRQ 、EOI 、REN 为五条管理线,用来管理信息流,使之有秩序地通过接口母线。TE用来控制数据的传输方向。当TE为高电平时,NAT9914从GPIB总线上接收数据,微处理器对GPIB接口板进行读操作;当 TE为低电平时,微处理器对GPIB接口板进行写操作,将数据发送到GPIB总线上。
4.软件结构图
本接口软件设计中除了包含GPIB基本接口功能如听功能,讲功能等设计外,针对DDS的特定功能设计了一套SCPI命令,并给出了解析方法。因此接口的软件设计主要包含两火部分:一是GPIB接口功能软件设计,另一个是SCPI命令格式及解析方法设计。
3
软件结构图
如上图所示的流程图中,设备初始化囊括了 DDS任意波形发生器主板中开机界面显示初始化,蜂鸣器初始化,键盘芯片CH450初始化,FPGA配置初始化,LED初始化,中断设置等等。初始化过程结束后即进入循环状态,等待中断到来。在此仅对与GPIB接口相关的STM32引脚接口及FSMC配置作描述。当外部有触发GPIB屮断时,微处理器将保护好当前工作状态,并转入GPTB屮断处理服务程序,处理完GPIB的输入或输出或器件清除相关动作后继续中断前的操作。关于GPIB接口的软件设计包含有:
a. 对接口的初始化。一是STM32硬件接口引脚的功能初始化,主要是FSMC相关
寄存器配置。二是NAT9914初始状态的初始化。 b. 控者PC端向仪器发送地址、各种通令和程控码消息。
c. 仪器端可接收来自程控端的命令,并向其发送数据。
5.主程序流程图
实现接口系统所要的基本数据通信功能的软件编程方式有:査询方式和中断方式两种。本方案采用査询方式与中断方式相结合的方法来实现接口模块的通信控制,完成听者、讲者的数据传输功能。中断处理程序中完成可程控仪器端的基本功能,包括听者(接收数据)、远地本地、设备触发、设备清除及服务请求响应,数据的发送则在查询方式下实现。中断处理程序的最终将各种特定的状态标志置位,程序读取状态标志来进行相应的程序调用进行处理。中断处理程序流程图如下:
4
开始 是 MA中断? 否 是 R/L远程本地中断? 否 是 串行点名中断? 否 器件触发中断? 否 ERROR中断? 结束 否 是 ERROR响应 是 串行点名响应 器件清除中断? 否 器件清除响应 远程本地响应 听者/讲者功能响应 是 器件触发响应 5.1.听功能程序的实现
当接口板担当听者角色时,NAT9914要让讲者知道接口板是否准备好接收数 据。这时听功能程序开始检测ISR1中断状态寄存器1的MA位和状态寄存器ADSR 中的LA位是否为\"1\"。 LA置位时表示仪器被寻址为听者。将接收的数据放在数据缓冲区中,随后释放RFD握手线,解除锁定状态,为下一次接收作准备,并且检测结束位END判断接收是否完毕。在听者功能子程序中只需完成听状态标志的设 定,功能标志位可在屮断屮进行检测。听功能流程图如下:
5
开始 控者发送听寻址命令 检测ISR1及ADSR N MA&ATN&LA=1Y 发送rhdf命令,开始三线挂钩 令ATN=0 检测ISR0 N BI=1? Y 从DIR读数据到缓冲区 END=1? Y 结束 N
5.2.讲功能程序实现
讲功能的实现主要是判断数据总线上的命令或数据是否发送完毕,并将仪器设备的工作状态等数据回传给控者计算机。控制器发出寻址命令后,GPIB接口电路调用对应的服务程序,将地址消息与地址寄存器中内容相比对,如果相同则仪器进 入讲者状态。此时计算机成为听者接收听者传递过来的数据并作出相应处理。接口仪器被寻址为讲者时,须将保存在CDOR输出寄存器中的数据发送到GPIB总线上。CDOR中的数据处理完后,状态寄存器ISRO的BO位置位,向处理器发起中断请求,继续写数据到CDOR中。在査询方式讲功能子程序中,读取寻址状态寄存器
ADSR的TA位是否为1。TA为I表示仪器取得此刻的\"发言权\可以进行数据的
6
发送。直至发送最后一个数据时,须先发送END消息来知会听者即将发送的是最后一个数据。END消息表示方法有EOI方式和EOS方式。EOI方式是指在先向辅令寄存器写入feoi辅助命令,这样NAT9914作为讲者可S动发出END消息;而EOS方式是指芯片预先设置好结束字符END-OF-STRING的形式,再将CDOR的内容与预设结束符相比较,若匹配则产生结束消息。检验讲者功能标志位可在中断程序中实现,在听者功能子程序中只需完成讲状态标志的设定即可。讲功能中数据的发送过程我们采用査询的方式实现,并采用了 EOI方式来发送结束消息。讲功能的程序流程图如下图所示:
中断入口 令NDAC=0 检测ISR1和ADSR MA=1&ATN=0&TA=1 N Y N BO=1? Y 发送下一字节到CDOR 发送出错消息 是否为EOI消息 N Y 结束
7
6.假想仪器主要功能命令
APPLy:<函数 > [<频率 > [,< 振幅 > [,<偏移>]]] APPLy:SINusoid [<频率 > [,<振幅 > [,< 偏移>]]]
//输出一个具有指定频率,振幅和DC偏移的正弦波,执行命令后立即输出波形(频率范围:luHz~20MHz,幅度范围:CHA: 4mvpp~20vpp, CHB-. 4mvpp~5vpp,偏移:CHA:Ovdc~10vdc, CHB: 0vdc~2.5vdc)
APPLy:SQUare [<频率 > [,<振幅 > [,< 偏移>]]]
//输出一个a有指定频率,振幅和DC偏移的方波,该命令覆盖当前的占空比设置,并自动选择50%执行命令后立即输出该波形(频率:luHz~5MHz,幅度:CHA: 4mvpp~20vpp, CHB:4mvpp~5vpp,偏移:CHA: 0vdc~10vdc, CHB: 0vdc~2.5vdc)
APPLy:RAMP [<频率 > [,<振幅 > [,< 偏移 >]]]
//输出-个具有指定频率振幅和DC偏移的锯齿波该命令覆盖当前的对称性设置并自动选100%执行命令后立即输出该波形(频率:1mHz~5MHz,幅度:CHA: 4mvpp~20vpp, CHB:4mvpp~5vpp,偏移:CHA: 0vdc~10vdc, CHB: 0vdc~2.5vdc)
APPLy:PULSe [<频率 > [,<振幅 > [,< 偏移>]]]
//输出一个具有指定频率振幅和DC偏移的脉冲波执行命令后立即输出波形(频率:lmHz-5MHz,幅度:CHA:4mvpp~20vpp, CHB: 4mvpp~5vpp,偏移:CHA: 0vdc~10vdc,CHB: 0vdc~2.5vdc)
FUNCtion {SINusoid|SQUare|RAMP|PULSe} FUNCtion?
//选择输出的函数用以前选定的频率振幅和偏移电压设W输出选定的波形默认情况下为1K弦波(SIN)FUNC?査询将返回SIN SQU RAMP PULS
FREQuency {<频率>|MINimum|MAXimum} FREQuency?[MINimum | MAXimum]
//设置输出频率MIN选择指定函数所允许的最小频率MAX选抨指定函数所允许的最大频率对于所有函数默认值都为1。对于当前选定的函数FREQ?査询返回频率设置以Hz为单位
VOLTage {<振幅>|MINimum|MAXimum}
8
VOLTage?[MINimum | MAXimum] //设置输出振幅
VOLTage:OFFSet {<偏移>|MINimum|MAXimum} VOLTage:OFFSet? [MFNimum | MAXimum]
//设置DC偏移电压对f所有函数默认偏移都为0伏
FUNCtion:SQUare:DCYCle {<百分比>|MINimum|MAXimum} FUNCtion:SQUare:DCYCle?[MINimum | MAXimum] //为方波设置占空比百分数(0%~100%)
FUNQion:RAMP:SYMMetry {<百分比>|MINimum|MAXimum} FUNCtion:RAMP:SYMMetry?[MINimum | MAXimum] //为锯齿波设置对称性百分数(0%~ 100%)
OUTPut {OFF|ON} OUTPut?
//禁用或启用前面板Output连接器,默认情况F为OFF启用输出时在函数发生器的前面板点亮键OUTP?査询返回0 (OFF)或1 (ON)
PULSe:PERiod {<秒>|MINimum|MAXimum} PULSe:PERiod?[MINimum | MAXimum] //设置脉冲周期(50ns~10%s)
PULSe:DCYCle {<百分比>|MINimum|MAXimum} PULSe:DCYCle?[MTNimum | MAXimum] //为脉冲设S占空比百分数(0%?100%)
AM:SOURce {rNTernal|EXTernaI} AM:SOURce?
//选择调制信3的源函数发生器将接受内部或外部调制源,默认情况为INT :SOUR?查询返冋1NT或EXT
AM:INTernal
9
:FUNCtion {SINusoid|SQUare|RAMP|NRAMp|TRIangle } :FUNCtion?
//选择调制波形的形状
AM:INTernal:FREQuency {<频率>|MrNimum|MAXimum} AM:INTernal:FREQuency? [MINimum | MAXimum] //设置调制波形的频率(5Hz~5KHz)
AM:DEPTh {<深度百分比>|MINimum|MAXimum} AM:DEPTh?[MINimum | MAXimum]
//设置内部调制深度或调制百分比以百分比表不(0%~120%)
AM:STATe {0FF|ON} AM:STATe? //禁用或启用AM
FM:INTernal:FREQuency {<频率>|MINimum|MAXimum} FM:INTernal:FREQuency? [MINimum | MAXimum] //设置调制波形的频率(5Hz~5KHz)
FM:DEViation {<峰值偏移以Hz为单位>|MlNimum|MAXimum} FM:DEViation?[MrNimum | MAXimum]
//设置峰值频率偏移以Hz为单位(luHz~20MHz)
FM:STATe {OFF|ON} FM:STATe? //禁用或启用FM
FSKey:FREQuency {<频率>|MINinium|MA:Ximum} FSKey:FREQuency? [MINimum | MAXimum] //设置FSK交替或跳跃频率(luHz~20MHz)
FSKey:INTernal:RATE {<秒>|MrNimum|lV[AXimum} FSKey:lNTernal:RATE? [MINimum | MAXimum]
10
//设詈输出频率在载波频率和跳跃频率之M的变化间隔(lms~60s)
FSKey:STATe {OFF|ON} FSKey:STATe?
//禁用或启用FSK调制 Sweep
FREQuency:STARt {<频率>|MINimum|MAXimum} FREQuency:STARt? [MINimum | MAXimum]
//设S起始频率与停止频率一同使用(luHz~20MHz)
FREQuency:STOP {<频率>|MrNimuin|MAXimum} FREQuency:STOP? [MINimum | MAXimum]
//设置停止频率与起始频率一同使用(luHz~20MHz)
SWEep:TIME {<秒>|MINimum|MAXimum} SWEep:TIME? [MINimum | MAXimum]
//设置从起始频率到停止频率进行扫描所需的秒数(lmS~60S)
SWEep:STATe {OFF|ON} SWEep:STATe?
//禁用或启用扫描模式
BURSt:MODE {TRIGgered|GATed} BURSt:MODE? //选择脉冲串模式
BURSt:NCYCles {<#循环数>ilNFinity|MTNimum|MAXimum} BURSt:NCYCles? [MINimum | MAXimuml
//设置毎个脉冲中要输出的循环数,仅用于触发脉冲串模式(OCyc~50000Cyc)
BURSt:INTernal:PERiod {<秒>|MINimumiMAXimum} BURSt:INTernal:PERiod? [MINimum | MAXimum] //设置内部触发脉冲串的脉冲串周期(lms~500S)
11
BURSt:PHASe {< ff] >|MINimum|MAXimum} BURSt:PHASe? [MINimum | MAXimum]
//将脉冲串的起始相位设为前一个UNIT:ANGL命令指定的度数或弧度(0° -360°)
BURSt:STATe {OFF|ON} BURSf.STATe?
//禁W或启用脉冲串模式
TRIGger:SOURce {IMMediate|EXTernal|BUS} TRIGger:SOURce?
//仅为触发脉冲串模式选择触发源
TRIGger:DELay {<秒>|MINimumiMAXimutn} TRIGger:DELay? [MINimum | MAXimum]
//可以在触发接收和脉冲串波形开始之间插入时间延迟仅用于触发脉沖串模式(0s~40s)
MEMory:STATe:NAME {0|1|2|3|4}[,<名称>] MEMory:STATe:NAME? {0|1|2|3|4} //为指定的存储位置指定一个自定义名称
MEMoty:STATe:DELete {0|1|2|3|4} //删除指定存储位置的内容
MEMory:STATe:VALid? {0|1|2|3|4}
//查询指定的存储位置以确定是否该位a当前已存储有效的状态
7.实现仪器的状态报告管理
SCPI规定了一套仪器最小状态报告模型,如下:
12
仪器最小状态报告模型
(1)Qestionable Status,OPeration Status
其中Questionable Status被称为可疑状态寄存器组,当仪器出现了一个可疑状态的时候被设置,如用户输入了一个超过范困的电压。OPeration Status称为操作状态寄存器组,报告仪器目前正在进行的操作。 (2)StandardEveniStatuS
Standard Event Status被称为标准事件状态寄存器组,由标准事件状态寄存器(EsR)和标准事件状态使能寄存器(ESE)组成,标准事件状态寄存器组的summery messsage由这两个寄存器按位与之后的各位进行逻辑或得到。 (3)Stautus Byte
Stautus Byte被称为状态字节。 (4)Error/Event Queue
一旦检测到特定的错误或事件,则将错误/事件信息放入队列。队列不为空时,SB的bit2=1。队列为先入先出队列,当队列溢出时,先发生的错误/事件保留,后来发生的(mostreeent)错误/事件丢弃,且将队列中最后一条错误信息以“-350,Queueoverflow,”取代。 最小状态报告模型应该包括五个部分:
13
(l)QuestionableStatuS (2)OPerationStatus (3)StandardEventStatus (4)StautusByte (5)Error/EventQueue
在实际的设计过程中,一个功能复杂的仪器需要对(l),(2),(3)进行扩展。 下图是本设计的一个扩展了的状态报告模型:
扩展的状态报告管理模型
8.总结及展望
本课程设计是基于GPIB接口技术和DDS技术的优点,设计了一台函数发生器,介绍了以NAT9914芯片为GPIB控制器的接口设计方法,实现了PC机与仪器之间基本的听者,讲者等功能。接口电路简单,软件编写遵从设计规范,实现基本接口通信功能。并详细介绍了SCPI命令解析过程。ATS仪器仪表有强大的功能,被广泛地应用于自动化技术等领域,随着GPIB技术的发展以及ATS仪器的应用普及,在仪器程控特别是组建测试系统的实际应用中,ATS仪器会有更广阔的应用前景。
14
因篇幅问题不能全部显示,请点此查看更多更全内容