一种嵌入式多功能仪器接口协议转换器设计

时间:2023-06-21

  目前国内外在解决仪器GPIB接口与RS-232或USB接口的转接问题时能常遵循“微处理器+专用接口控制芯片”和“微处理器+FPGA”的设计思路,其中微处理器主要为单片机、ARM、PowerPC 和 MIPS等硬核处理器;接口部分是由各种逻辑电路组成,与各仪器装置安装在一起,用于对传输的信息进行发送、接收、编码和译码;总线部分是一条无源的多芯电缆,用做传输各种消息。将具有GPIB接口的仪器用GPIB总线连接起来的标准接口总线系统。在一个GPIB标准接口总线系统中,要进行有效的通信联络至少有“讲者”、“听者”、“控者”三类仪器装置。 讲者是通过总线发送仪器消息的仪器装置( 如测量仪器、数据采集器、计算机等),在一个GPIB系统中,可以设置多个讲者, 但在某一时刻,只能有一个讲者在起作用。听者是通过总线接收由讲者发出消息的装置(如打印机、信号源等),在一个GPIB系统中,可以设置多个听者,并且允许多个听者同时工作。控者是数据传输过程中的组织者和控制者,例如对其他设备进行寻址或允许“讲者”使用总线等。控者通常由计算机担任,GPIB系统不允许有两个或两个以上的控者同时起作用。

我们使用一台计算机,通过GPIB控制卡可以实现和一台或多台仪器的听、讲、控功能,并组成仪器系统,使我们的测试和测量工作变得快捷, 简便, 和高效。通过GPIB电缆的连接,可以方便地实现星型组合、线型组合或者二者的组合。是一种工程控制用的协议。初由HP公司提出,目前成为一种国际标准,遵守的协议为IEEE488。一般被用来使用任何编程语言如VB、Vc、C++实现电脑对仪器的控制。当然也有某些仪器制造商自己开发的语言支持GPIB。如keithley公司使用的testpoint,NI公司的labview等。实现这种控制首先要被控仪器支持GPIB,其次,工控机安装IEEE488卡,并通过gpib线连接两个设备。

  1 总体设计方案

设计选用Altera公司的低成本SoPC平台——Cyclone II系列FPGA。Cyclone II提供百万级门阵列资源,包含4 608~68 416个逻辑单元;提供1个全局时钟网络与4个锁相环;支持的存储器类型包括双端口及单口RAM、ROM和FIFO缓冲器,存储器的数据总线可达36 bit,频率可达250 MHz。Cyclone II系列提供622个用户自定义I/O引脚,为接口协议转换器的设计提供了充裕的接口资源。给出了基于Cyclone II平台的仪器接口协议转换器的总体设计方案。


Nios II微处理器、存储器接口、片上存储器、定时器以及各类接口控制器都是由FPGA内部的逻辑单元和RAM资源提供的。方案中RS-232接口协议的实现相对比较简单,可以根据Altera公司提供的UART软核配置获得,而USB和GPIB协议部分均选用专用接口芯片来完成。Nios处理器通过Avalon Switch Fabric总线将Nios II处理器、存储器和接口控制器等系统组件桥接在一起,形成一个接口统一的高性能SoPC系统。

  2 接口硬件电路设计

  2.1 GPIB接口电路设计

GPIB接口芯片选用NI公司的标准GPIB控制芯片NAT9914,它能够完成IEEE488.2标准协议中所有接口功能,并且在软件上与TI公司的TMS9914A及NEC公司的?滋PD7120兼容,具有可编程时钟和波特率,直接存储器存取等功能。


  2.2 USB接口电路设计

ISP1362是飞利浦公司推出的OTG(On-The-Go)产品,在单芯片上集成了一个OTG控制器、一个主控制器(PSHC)和一个基于飞利浦公司ISP1181的外设控制器。ISP1362的OTG控制器完全兼容USB2.0及OTG Suppliment 1.0协议,主机和设备控制器兼容USB 2.0协议,支持12 Mb/s的高速传输和1.5 Mb/s的低速传输。

 2.3 RS-232接口电路设计

SoPC Builder的标准组件库中提供了UART组件,使用这个组件可以方便地实现UART接口功能。为了保证UART的电气相容性,使用了一片MAX232来实现UART的电平转换。

RS-232接口系统框,具有Avalon接口的通用UART核在FPGA上的Nios II处理器和外设之间实现了一种串行字符流通信方式,然后通过MAX232芯片实现电平转换,从而实现了RS-232接口功能。可以根据需要对其硬件进行配置,改变其波特率、奇偶校验位、停止位、传输的数据位以及其他可选的RTS-CTS流控制信号等。


  3  SoPC Builde中总体架构设计

设计中的Nios II微处理器内核、onchip_mem IP核、timer IP核、 JTAG调试模块jtag_uart、Flash控制器cfi_flash、SDRAM控制器sdram、UART组件uart以及用于液晶屏显示的组件lcd等均使用SoPC Builder工具在标准组件库中定制,而用于实现Avalon总线与片外NAT9914芯片和ISP1362芯片连接的接口控制器组件是通过自己编写Verilog代码来自定制的。在SoPC Builder中通过Avalon Switch Fabric总线将各组件互连起来。

Nios II嵌入式处理器是基于哈佛结构的RISC通用嵌入式处理器软核,能与用户逻辑相结合,编程至Altera的FPGA中。处理器具有32位指令集,32位数据通道和可配置的指令以及数据缓冲。前不久,Altera 正式推出了Nios II系列32位RSIC嵌入式处理器。Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPGA中实现仅需35美分。Altera的Stratix 、Stratix GX、 Stratix II和 Cyclone系列FPGA全面支持Nios II处理器,以后推出的FPGA器件也将支持Nios II。Nios II系列支持使用专用指令。专用指令是用户增加的硬件模块,它增加了算术逻辑单元(ALU)。用户能为系统中使用的每个Nios II处理器创建多达256个专用指令,这使得设计者能够细致地调整系统硬件以满足性能目标。专用指令逻辑和本身Nios II指令相同,能够从多达两个源寄存器取值,可选择将结果写回目标寄存器。同时,Nios II系列支持60多个外设选项,开发者能够选择合适的外设,获得合适的处理器、外设和接口组合,而不必支付根本不使用的硅片功能。

  4 接口协议转换器软件开发

  4.1 软件总体框架

软件部分需要完成的任务主要包括:GPIB接口功能的开发、RS-232接口功能的开发和USB接口功能的开发;μC/OS-II嵌入式操作系统在Nios II处理器上的移植;在Nios II处理器上实现接口协议的转换,完成各个接口之间的相互通信。Nios II系统下的软件分层架构。


Nios II 处理器硬件系统是软件开发的基础,同时也是整个分层架构的。

设备驱动软件是实现处理器与设备通信的特殊程序,它相当于硬件的接口,操作系统只有通过这个接口才能控制硬件设备的工作,如果设备没有对应的驱动软件便不能正常工作。

硬件抽象层应用程序接口HAL API(Application Program Interface),是由HAL系统库提供的,它常与NewLib C标准库集成在一起,为用户访问外设提供了标准的接口,开发人员可以非常方便地使用这些接口来与底层硬件通信。

μC/OS-II内核在Nios II的HAL系统库之上进行操作,它可以访问所有的HAL服务,并且能够调用HAL的API函数。μC/OS-II提供信号量、消息邮箱、消息队列、事件标志、消息传递、存储管理、时间管理等函数。本设计中主要用它来完成接口协议转换时的多任务调度。

GPIB组件、USB组件和RS-232组件分别实现了Nios II微处理器和GPIB、USB、RS-232外设之间的通信。

系统初始化部分用于初始化μC/OS-II、GPIB组件、USB组件和RS-232组件,实现所有应用程序的任务、信号量、队列和事件标志的实时操作系统任务之间通信资源的创建。

外一层包含发送GPIB命令和数据任务、接收GPIB数据和命令任务、发送USB命令和数据任务、接收USB命令和数据任务、发送RS-232命令和数据任务、接收RS-232命令和数据任务等。同时,该层通过信号量、队列和事件标志实现任务之间的通信。

  4.2 GPIB接口的软件开发

GPIB数据通信部分的代码编程方式主要有查询方式和中断方式两种。尽管查询方式也能较好地实现数据通信的基本要求,但其功能单一、系统资源利用率低,不适合系统功能的维护和扩展。因此,本设计中主要采用了中断方式完成GPIB数据通信部分的代码编程。引起NAT9914向处理器发出中断信号的事件主要有发送数据事件(BO)、接收数据事件(BI)、接收数据结束事件(END)、接收GET命令事件和接收DCAS命令事件。一旦这些事件发生,NAT9914就会触发Nios II处理器的外部中断,Nios II终止正常工作,将现场数据压入堆栈保护,并调用外部中断处理函数,响应NAT9914芯片的中断申请。


  4.3 UART接口的软件开发

在 Nios II 下,由于HAL的存在,UART编程已经变成标准的文件操作了。Nios II 把对UART的流操作当成了一种文件操作。操作一个UART时,只需要对它相应的设备驱动读写数据。Nios II处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(RTOS)和TCP/IP协议栈。设计者能够用Altera Quartus II开发软件中的SOPC Builder系统开发工具很容易地创建专用的处理器系统,并能够根据系统的需求添加Nios II处理器核的数量。使用Nios II软件开发工具能够为Nios II系统构建软件,即一键式自动生成适用于系统硬件的专用C/C++运行环境。Nios II集成开发环境(IDE)提供了许多软件模板,简化了项目设置。此外,Nios II开发套件包括两个第三方实时操作系统(RTOS)——MicroC/OS-II(Micrium),Nucleus Plus(ATI/Mentor)以及供网络应用使用的TCP/IP协议栈。

在写设备程序时需要通过寄存器直接访问UART。altera_avalon_uart_reg.h定义了UART核的寄存器映像,提供访问底层硬件的符号常量,该文件的符号仅被设备驱动程序使用。altera_avalon_uart.h、altera_avalon_uart.c为HAL库提供了UART核设备的驱动程序。

  4.4 USB接口的软件开发

ISP1362在设计中作为USB设备使用。USB设备与Nios II系统通信的原理框。系统上电后,Nios II首先自身进行初始化,初始化完成后,通过发送相关指令,完成对ISP1362芯片的初始化。ISP1362芯片初始化完成后,主机就会给设备分配地址,并根据设备提供的描述符完成对设备的配置,从而实现USB设备的一般功能。


USB接口控制器的软件结构如。软件包括信息处理和中断服务例程两部分。硬件抽象层用于将数据从硬件传输到将要被主循环处理的存储器空间中。HAL4SYS.C、HAL4D13.C、ISR.C、CHAP_9.C、D13BUS.C和MAINLOOP.C是实现USB设备控制器功能的六个主要的程序文件。其中,HAL4SYS.C和HAL4D13.C程序文件作为硬件抽象层,ISR.C程序文件作为中断服务例程,CHAP_9.C和D13BUS.C作为协议层,MAINLOOP.C用于主循环控制。


ISP1362在Nios II系统中采用中断的方法进行任务处理。当ISP1362收到包含设备地址的输出或设置事务时,通过软件控制将接收到的数据存储在适当的端点位置,然后触发一个中断。设备的中断服务例程处理接收到的数据。

  4.5 μC/OS-II实时操作系统

根据多功能仪器接口协议转换器的特点,设计需满足实时性和并发性的要求,以便更好地支持多种接口协议运行时的多任务环境的调度,所以应用软件应该基于嵌入式实时操作系统。考虑到?滋C/OS-II的规模较小、实时性和可靠性较高,以及Nios II IDE开发环境对?滋C/OS-II的良好支持,故操作系统选择?滋C/OS-II。它通过为每个任务分配单独的任务堆栈来保存任务工作环境,提供任务管理与调度,任务间的同步、互斥与通信,时间和中断管理、内存的动态分配等多种系统服务。设计中?滋C/OS-II主要完成任务的管理与调度,通过创建消息邮箱、信号量实现任务与任务之间、任务与中断服务程序之间的同步与互斥,以保证它们协调运行[6]。

  5 系统功能验证

  5.1 RS-232与GPIB接口通信功能测试

通过UART数据线将计算机的UART接口与接口转换器的UART接口连接,将接口转换器的GPIB接口与Aglient 33250A连接。

运行串口调试助手,并在串口调试助手中进行如下设置:串口设置为COM1,波特率设置为57 600,校验位为NONE,数据位为8,停止位为1。设置完成后,在串口调试助手中手动发送GPIB接口的SCPI命令。

以发送*IDN?命令为例,串口调试助手下方输入*IDN?,之后点击发送,观察串口调试助手接收窗口的显示变化,这时会显示Received String: Agilent Technologies,33250A,0,2.04-1.01-2.00-03-2,其中Agilent Technologies,33250A,0,2.04-1.01-2.00-03-2是33250A接收到来自计算机串口的识别查询命令后,要将自己的标识发往的计算机串口号。

  5.2 RS-232与USB接口通信功能测试

分别通过USB接口线和RS-232接口线将计算机主机USB接口与接口转换器USB接口相连,同时通过UART数据线将计算机的UART接口与接口转换器的UART接口连接。

运行USB调试助手和串口调试助手,同时观察USB接口发送数据到串口的情况。主机通过USB调试助手向协议转换器发送8 B数据“6e 69 68 61 6f 6d 61 00”,这8 B数据ASCII码对应的字符串为“nihaoma”,观察USB调试助手接收区和串口调试助手的接收区,这时USB调试助手接收区显示“6e 69 68 61 6f 6d 61 00”,串口调试助手的接收区显示“usb received 8 bytes data is:nihaoma”。

系统基于SoPC平台,采用软硬件协同设计的方法完成了GPIB、UART和USB接口协议转换器的设计。实现了RS-232接口的收发功能、USB设备控制器功能、GPIB接口的控者、听者、讲者、源方挂钩、受方挂钩五大功能,以及通过RS-232接口控制GPIB接口功能和通过USB接口控制RS-232接口功能。

上一篇:CPLD在高时间间隔测量系统中的应用
下一篇:浅谈静止无功发生器的微分几何变结构控制方法

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料