引言
在自动测试领域中,GPIB通用接口是测试仪器常用的接口方式,具有一定的优势。通过GPIB组建自动测试系统方便且费用低廉。而GPIB控制芯片是自动测试系统中的关键芯片,此类芯片只有国外少数公司能生产,不仅价格昂贵,而且购买不便。因此,GPIB 接口的FPGA实现具有很大的实用价值。
本文论述的是采用Verilog语言来设计基于IEEE488.1协议的IP Core,然后将用户逻辑与此Core集成在一片FPGA中实现GPIB接口功能。

图1 GPIB接口内部结构

图2 AH功能状态图

图3 AH功能仿真图
GPIB 接口体系结构设计
首先把整个待设计系统划分为若干基本功能模块,其中包括复杂的同步状态机以及寄存器读写电路。内部结构如图1所示。
接口功能设计
接口功能的设计是设计的核心。按照IEEE488.1协议与实际设计的要求,设计选取了八种接口功能:源方挂钩 、受方挂钩、讲者、听者、服务请求、远控/本控、器件清除和器件触发。其中源方挂钩接口功能保证多项消息的正确传输;受方挂钩接口功能保证正确地接受远地消息;讲者接口功能让器件在接口上把数据发送到其他一些器件去;听者接口功能让器件在接口上接受来自于其他器件的数据;本控就是本地控制(面板或后背板)。在实际设计中,再把各接口功能划分为若干相关状态,这样在用VerilogHDL实现这些相互作用影响的状态跃迁的时候就可以引入状态机设计。为了保持状态机之间相互的状态挂钩的协调一致性,设计采用同步状态机,在时钟信号的触发下,完成各个状态之间的转移。
接口功能的Verilog HDL实现
由于八种接口功能实现方式较为相似,这里以最具有代表性的受方挂钩功能(AH)来具体说明其用VerilogHDL的实现方式。对受者接口功能应具有的能力、作用及变迁条件,用一组互相排斥而又互相联系的状态图来给定,如图2所示。状态图中,各状态之间的变迁分别用状态之间的箭头来表示。每一个状态变迁都用一个逻辑表达式来表示变迁的条件。表达式由本地消息、远地消息、状态交连、运算符等组成。其中本地消息用三个小写的英文字母表示。远地消息用三个大写的英文字母来表示。状态交连是指一个接口功能的状态变迁受其他接口功能的状态的制约。
在用VerilogHDL语言对状态机进行的设计中,采用了一位热码状态编码。虽然一位热码采用的触发器较多,但可以简化组合电路。对于寄存器数量多,而组合逻辑门相对缺乏的FPGA器件,一位热码可以提高电路的速度和可靠性,也有利于提高器件资源的利用率。AH功能状态机代码如下:
module
input clk,reset,swrst,LADS, LACS,rdy,ATN,DAV;
output AIDS,ANRS,ACRS, ACDS,AWNS,NRFD,NDAC;
parameter S1=5'h01,S2=5'h02, S3=5'h04,S4=5'h08,S5=5'h10;
assign NRFD=(ANRS| ACRS|ACDS|AWNS ) ? NRFDt: 1'bz;
assign NDAC = (ANRS| ACRS|ACDS|AWNS) ? NDACt: 1'bz;
always @(negedge clk )
begin if ((~reset)|swrst|((~ATN) &(~(LACS|LADS)))) present=S1;
else present=next; end
always @(present or LADS or LACS or rdy or ATN or DAV)
begin AIDS=0 ;ANRS=0; ACRS=0; ACDS=0; AWNS=0; NRFDt=0; NDACt=0;
case (present)
S1: begin if (ATN) next=S3;
else if((~ATN)& (LADS|LACS)) next=S2;
else next=S1; AIDS=1; NRFDt=0;NDACt=0; end
S2: begin if (ATN|rdy) next=S3;
else next=S2; ANRS=1; NRFDt=1;NDACt=1; end
S3: begin if (~(ATN|rdy)) next=S2;
else if (DAV) next=S4;
else next=S3; ACRS=1; NRFDt=0;NDACt=1; end
S4: begin if( (ATN)|(~ATN)&(~rdy)) next=S5;
else next=S4; ACDS=1; NRFDt=1;NDACt=1; end
S5: begin if (~DAV) next=S2;
else next=S5; AWNS=1; NRFDt=1;NDACt=0; end
default: next=S1;
endmodule
AH功能逻辑设计的功能仿真
对前述AH功能编码进行编译和功能仿真,仿真结果如图3所示。由图可见,当同步触发信号reset为0,swrst为1时,系统回到空闲态。LADS(听者被寻址态)与LACS(听者作用态)同时为0时,系统进入AIDS(受者空闲态),此时受者NRFD、NDAC为高阻态。LADS与LACS任一为1时,受者进入ANRS(受者未准备好态)。rdy为1与ATN为0时,受者进入ACRS(受者准备好态),NRFD、NDAC为0。可以看出,随着输入条件的变化,输出相应变化,满足时序逻辑。接下来,生成受者功能模块符号图,以便于下一步系统级的设计。
其他接口功能的状态机实现与AH功能类似。最后将每个接口功能的状态机实现,生成便于互连的符号模块,各个模块连接起来就组成系统的接口主状态机模块。其中状态机子集模块所需的信号一些来自状态交连(图2阴影部分即各接口功能之间的互相影响信号),另外一些则来自其他模块所产生的信号。
寄存器读写电路设计
在设计图1中的寄存器读写电路时,选择设计了9个8位内部寄存器。其中可读寄存器有5个:中断状态寄存器0(ISR0)、中断状态寄存器1(ISR1)、总线状态寄存器(BSR)、数据输入寄存器(DIR)和地址状态寄存器(ADSR);可写寄存器有4个:中断屏蔽寄存器0(IMR0)、中断屏蔽寄存器1(IMR1)、地址寄存器(ADR)和辅助命令寄存器(AUXCR)。其中可读寄存器用来存储状态机的当前状态、中断情况、仪器地址、输入数据和控制信息。计算机把中断屏蔽位,辅助命令写入可写寄存器,从而实现对GPIB总线的控制。在上位机与芯片之间引入D0~D7 作为本地双向数据总线,通过译码模块实现对内部寄存器的读写,产生状态机子集模块所需的信号以及GPIB接口信号。寄存器读写电路的设计用译码器,寄存器等实现,由于篇幅所限,这里不再赘述 。
接口的FPGA实现
在完成基本模块以后,可以用类似画电路图的方法直接对这些模块符号进行调用。然后通过MAXplusⅡ进行综合、仿真,做在线调试。再完成整个内部电路的软件设计以后就可以把该“软件核”(Core)固化到具体选定的FPGA芯片上,本文选用ALTERA公司的ACEX1K30QC208芯片。
结语
在测试仪器的研制过程中发现,GPIB接口往往不需要IEEE488.1的全部接口功能,很多仪器只需要听、讲功能即可。如果采用Nat9914之类的芯片,控者、并行查询功能都用不到,这样既会造成资源与功能的浪费,又延长了开发周期。设计基于FPGA芯片的专用IP Core不仅拥有自主知识产权,而且可以通过与计算机接口(如ISA口)与计算机直接相连,装入驱动程序即可工作。这对测试仪器开发有一定的借鉴作用,无论是采用PCI、USB,还是单片机控制,只需将用户逻辑与符合IEEE488.1协议的IP Core集成在一片FPGA中即可实现测试仪器的GPIB接口功能。这将大大缩短开发周期,降低开发成本。
- GPIB(38854)
- GA实现(6726)
相关推荐
基于GPIB总线的虚拟仪器信号自动测试系统设计
5472
FPGA SERDES接口电路怎么实现?
FPGA实现SPI接口(包括主机和从机程序)
GPIB-USB-HS
GPIB接口仪器控制中数据波形更新速度慢问题
GPIB接口扩展
GPIB接口连接了哪些仪器
GPIB_463_464
GPIB命令的数据结构
LabVIEW以及GPIB接口的系统组成结构分析
【FPGA设计实例】FPGA接口实现文本液晶显示模块
【FPGA设计实例】基于FPGA的SPI接口应用
使用HP 82357 u***到GPIB接口的时序问题
基于FPGA实现接口协议的方法
基于FPGA技术的IDE硬盘接口的设计
基于FPGA技术的RS 232接口的时序逻辑设计实现
基于FPGA的万兆以太网接口的设计与实现
怎么使用FPGA实现SPI总线的通信接口?
怎么使用VEE 5和USB-GPIB接口?
通过FPGA实现温控电路接口及其与DSP通信接口的设计
采用FPGA实现DVI/HDMI接口具有什么优点?
采用PM3388和FPGA实现网络接口设计
SPI-4.2接口的FPGA实现
32基于FPGA的PCI总线接口设计
48基于GPIB接口微波内场自动测量系统的设计搭建
17基于FPGA 的IDE硬盘接口卡的实现
0GPIB接口在电磁兼容自动测量系统中的应用
16PC104 模块与通用并行接口(GPIB)通讯的实现
35PL4接口在FPGA中的设计与实现
7基于GPIB接口总线的虚拟仪器
88基于GPIB接口的自动测试系统
43基于GPIB接口的TD3000仪器控制系统设计
17基于虚拟仪器GPIB接口总线
39基于半导体激光器恒温控制器的GPIB标准接口板的设计
18VC++环境下实现的GPIB通讯设计
89GPIB命令的数据结构
70基于GPIB接口的数字存储示波器功能扩展
25CPLD 实现GPIB控制器的设计
22基于FPGA的IDE硬盘接口卡的实现
22GPIB卡说明书
88GPIB命令的数据结构
0基于FPGA的指纹采集接口设计与实现
1107供应全新GPIB卡美国NI
426供应全新PCI GPIB卡GPIB USB卡
619仪器控制总线比较(GPIB、USB、PCI、PCI Expr
8599GPIB接口总线简介及应用
7628光纤纵差保护同步接口的FPGA实现
40IIS接口的FPGA实现
7291
一种通用SPI接口的FPGA设计与实现
67采用低成本FPGA实现高效的低功耗PCIe接口
72基于GPIB接口总线的虚拟仪器详解
10053GPIB-RS232C接口转换设计及应用概述
3906
LabVIEW的GPIB的总线标准接口功能解析
3474基于FPGA技术实现VXIbus模块的接口电路设计
789
采用复杂可编程逻辑器件实现GPIB接口的功能设计
1761
TEK-USB-488_GPIB转换器的应用特点分析
1242如何在FPGA中实现SPI4.2接口
13ARM与FPGA的接口实现的解析
14GPIB仪器控制设备使用GPIB接口将仪器集成到系统中
2535ADL-GPIB IEEE 488命令集函数参考手册
2
电子发烧友App




评论