《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于SoPC的嵌入式多功能仪器接口协议转换器设计
基于SoPC的嵌入式多功能仪器接口协议转换器设计
来源:电子技术应用2010年第11期
郭晓冉1, 崔少辉1, 王宝龙1,2, 方 丹1
1.石家庄军械工程学院, 河北 石家庄 050003;2.北京航天指挥控制中心, 北京100094
摘要: 基于SoPC技术和嵌入式系统,利用Nios II软核处理器的优异性能和软硬件协同设计的方法完成了GPIB、UART和USB接口协议转换器的设计,实现了程控仪器接口GPIB与主控计算机RS-232、USB接口之间的转换。
中图分类号: TP336
文献标识码: B
文章编号: 0258-7998(2010)11-0086-05
Design of on embedded multi-purpose instrumment interface protocol transformer based on SoPC
GUO Xiao Ran1, CUI Shao Hui1, WANG Bao Long1,2, FANG Dan1
1.Ordnance Engineering College, Shijiazhuang 050003,China;2.Beijing Aerospace Control Center, Beijing 100094, China
Abstract: In order to slove the connection switch between instrument′s GPIB interface and computer′s USB or RS-232 interface, this paper achieves the design of GPIB, USB and RS-232 interfaces protocol tranformer,and the connection switch between instrument′s GPIB and computer′s USB or RS-232 is realized based on SoPC and embedded system, by using the excellent capability of Nios II soft core processor and software cooperate with hardware design method.
Key words : SoPC; Nios II; protocol transformer

 目前国内外在解决仪器GPIB接口与RS-232或USB接口的转接问题时能常遵循“微处理器+专用接口控制芯片”和“微处理器+FPGA”的设计思路,其中微处理器主要为单片机、ARM、PowerPC 和 MIPS等硬核处理器;FPGA的作用主要是用来实现专用接口芯片的功能,方法是在FPGA内部编写专用接口芯片的IP核。“微处理器+专用接口控制芯片”的设计方案虽然成本较低,技术门槛也不高,但是不利于系统的功能扩展与性能升级;而“微处理器+FPGA”的设计方案中,IP核的编写难度较大,开发周期太长;如果购买IP核,价格又过于昂贵。综合分析以上方法的优缺点,本文提出一种基于Nios II软核处理器的SoPC解决方案,利用Nios II软核处理器的优异性能以及uC/OS-II嵌入式实时操作系统在执行效率、占用内存、实时性能以及可扩展性等方面的优势,设计了GPIB、RS-232和USB接口协议转换器,实现了GPIB-USB、GPIB-UART及UART-USB协议之间的转换[1,2]。该方案具有设计灵活、可重构、集成度高、实现风险低、开发周期短的优点。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引脚,为接口协议转换器的设计提供了充裕的接口资源。图1给出了基于Cyclone II平台的仪器接口协议转换器的总体设计方案。

   图1中的Nios II微处理器、存储器接口、片上存储器、定时器以及各类接口控制器都是由FPGA内部的逻辑单元和RAM资源提供的。方案中RS-232接口协议的实现相对比较简单,可以根据Altera公司提供的UART软核配置获得,而USB和GPIB协议部分均选用专用接口芯片来完成。Nios处理器通过Avalon Switch Fabric总线将Nios II处理器、存储器和接口控制器等系统组件桥接在一起,形成一个接口统一的高性能SoPC系统[3]。其中,Nios II处理器主要完成协议之间的转换,并将?滋C/OS-II操作系统内核移植到Nios II处理器上。开发中使用的工具包括Quartus II(含有集成的SoPC Builder工具包)、Nios II IDE以及仿真软件ModelSim,利用Verilog语言进行硬件设计,利用C语言进行软件开发。
2 接口硬件电路设计
2.1 GPIB接口电路设计

   GPIB接口芯片选用NI公司的标准GPIB控制芯片NAT9914,它能够完成IEEE488.2标准协议中所有接口功能,并且在软件上与TI公司的TMS9914A及NEC公司的?滋PD7120兼容,具有可编程时钟和波特率,直接存储器存取等功能。NAT9914配套使用数据转换器75160以及握手线和控制线转换器75162完成GPIB接口的设计。GPIB接口电路设计如图2所示。

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的低速传输。本设计中USB接口目前主要用来完成设备的功能,但考虑到以后继续开发中功能升级的需要,所以选用ISP1362芯片来完成USB接口的设计,它可以实现继续开发中USB的主机和OTG功能。
2.3 RS-232接口电路设计
 SoPC Builder的标准组件库中提供了UART组件,使用这个组件可以方便地实现UART接口功能。为了保证UART的电气相容性,使用了一片MAX232来实现UART的电平转换。
   图3为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位数据通道和可配置的指令以及数据缓冲。它针对可编程逻辑进行了优化设计,也为可编程单芯片系统设计了一套综合解决方案[2]。Nios II处理器系列包括三种内核:高性能的内核Nios II/f、低成本内核Nios II/e及性能/成本折中的标准内核Nios II/s。本系统采用高性能的内核Nios II/f以获得最强的处理器性能。
4 接口协议转换器软件开发
4.1 软件总体框架

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

 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芯片的中断申请[3-4]。中断处理服务流程图如图5所示。

4.3 UART接口的软件开发
 在 Nios II 下,由于HAL的存在,UART编程已经变成标准的文件操作了。Nios II 把对UART的流操作当成了一种文件操作。操作一个UART时,只需要对它相应的设备驱动读写数据。Altera提供的UART驱动程序是一个集成到HAL系统中的HAL字符模式设备驱动程序,可以采用标准输入/输出流的方式使用UART。使文件指针指向打开的UART设备,即可通过标准C库函数fwrite、fread、fprintf、fget等来进行串口的读/写操作了。
 在写设备程序时需要通过寄存器直接访问UART。altera_avalon_uart_reg.h定义了UART核的寄存器映像,提供访问底层硬件的符号常量,该文件的符号仅被设备驱动程序使用。altera_avalon_uart.h、altera_avalon_uart.c为HAL库提供了UART核设备的驱动程序。
4.4 USB接口的软件开发[5]
 ISP1362在设计中作为USB设备使用。USB设备与Nios II系统通信的原理框图如图6所示。系统上电后,Nios II首先自身进行初始化,初始化完成后,通过发送相关指令,完成对ISP1362芯片的初始化。ISP1362芯片初始化完成后,主机就会给设备分配地址,并根据设备提供的描述符完成对设备的配置,从而实现USB设备的一般功能。

   USB接口控制器的软件结构如图7所示。软件包括信息处理和中断服务例程两部分。硬件抽象层用于将数据从硬件传输到将要被主循环处理的存储器空间中。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收到包含设备地址的输出或设置事务时,通过软件控制将接收到的数据存储在适当的端点位置,然后触发一个中断。设备的中断服务例程处理接收到的数据。当设备收到包含设备地址的输入事务时,如果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接口功能。
参考文献
[1] 吴杲,顾亚平,陈光礻禹  . USB-GPIB控制器设计[J].测控技术,2004,23(3):59-61.
[2] 李兰英. Nios II 嵌入式软核SoPC设计原理及应用[M]. 北京:航空航天大学出版社,2006.
[3] 黄君凯,吴延军. RS232-GPIB控制器的设计[J]. 电子技术应用,2006,32(3):90-92.

[4] National Instruments Corp. Nat9914 Reference Manual[Z]. 1995.
[5] Philips Semiconductors. ISP1362 Embedded Programming  Guide Rev: 0.9[Z]. 2002.
[6] [美] Jean J. Labrosse. 嵌入式实时操作系统?滋C/OS-II [M]. 邵贝贝,等译. 第2版. 北京:北京航空航天大学出版社,2003.

此内容为AET网站原创,未经授权禁止转载。