基于FPGA的智能仪器远程控制系统
摘要:为实现智能仪器的远程控制,提高控制系统的速度,采用现场可编程门阵列(FPGA)芯片、USB芯片等实现了智能仪器远程控制系统的设计。重点介绍RS232与USB的接口转换原理及FPGA程序设计和仿真。系统采用先入先出存储器和有限状态机实现了RS232与USB的接口转换,并实现上位机的控制、数据处理等功能。系统可大大减少上位机的工作量,不仅可以用于实验室也可应用在工业生产中。
目前智能仪器已广泛应用于科研和工业生产当中,但是许多仪器分散在不同的地理位置上,不易操作和维护,并且实时跟踪性能差,人为误差大,数据无法保存,另外大量高档仪表价格相当昂贵。为解决上述难题,在计算机的提示下完成操作,可以减少人为因素造成的损坏,并提高测试数据的准确度。由于智能仪器是RS232接口,上位机用的是USB接口,所以还需由FPGA实现RS232与USB之间的接口转换。由于FPGA可以并行处理,集成度高,可用资源丰富,所以利用FPGA进行数据处理,可以减少上位机的工作量,减少数据处理的时间,还可以缩短设计周期,减小板卡体积,以便于集成到其他板卡上。
1 控制系统及接口简介
1.1 系统功能
在整个系统中,上位机可以实时对系统进行监控,并下发相应的命令。智能仪器传出的数据通过RS232接口传送到FPGA,FPGA根据上位机下发的命令对这些数据进行判决、处理,然后经过USB接口上传给上位机,再由上位机对FPGA处理过的数据进行显示、存储等操作。
1.2 USB接口芯片简介
本设计采用的是CYPRESS半导体公司的EZUSBFX2系列芯片CY7C68013。CY7C68013是一款高性能USB 2.0微控制器,它提供了全面的USB 2.0外围设备解决方案。工作模式有Port,Slave FIFO和GPIFMaster三种,本方案采用Slave FIFO模式。在该模式下,外部控制器(如FPGA)可像对普通FIFO一样对FX2中端点为2,4,6,8的数据缓冲区进行读/写。FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器,以及控制FX2何时工作在Slave FIFO模式下。一旦8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,外部逻辑(如FPGA)即可按照Slave FIFO的传输时序,高速地与主机进行通信,而在通信过程中不需要8051固件的参与。
1.3 RS232接口简介
RS232C标准(协议)的全称是EIARS232C标准。EIARS232C是用正负电压来表示逻辑状态的,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够与计算机接口或终端的TTL器件连接,必须使EIARS232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。该设计用的是MAX3232芯片。
RS232的数据传输格式如图1所示。
图1 RS232标准的数据传输格式
RS232传输格式包含起始位(1b)、有效数据位(8b)、奇偶校验位(0~2b)、停止位(1b)。传输线在空闲时为高电平,因此起始位为低电平,停止位为高电平。
奇偶校验位可设置为奇校验、偶校验或不校验,有效数据位是从低位开始传送。
2 FPGA设计
2.1 USB接口时序
在Slav e FIFO方式下,外部逻辑与FX2的连接信号如图2所示。
图2 FX2 Slave模式下接口管脚连接图
在Slav e FIFO模式下,CY7C68013芯片为端口2,4,6,8 提供满空标志位FLAGA,FLAGB,FLAGC,FLAGD。IFCLK为FX2输出的时钟,可作通信的同步时钟;SLCS为FIFO的片选信号;SLOE为FIFO输出使能;SLRD为FIFO读信号;SLWR为FIFO写信号。对FPGA来说,4个端口分别为4个FIFO。
FPGA检测4个满空标志位来分别对相应的FIFO进行读/写。FPGA可以选择同步或异步读/写,在该设计中采用异步读/写。在异步Slave FIFO写时,时钟由FPGA提供。数据在SLWR的每个有效-无效的跳变沿时被写入,FIFO写指针递增。异步Slave FIFO读时,FIFO读指针在SLRD的每个有效-无效的跳变沿时递增以改变数据。
2.2 FPGA程序设计
FPGA设计是整个系统的核心部分,由VHDL语言实现。FPGA实现了USB与RS232接口的转换、数据的处理、命令的传输等功能。有了上面的接口时序,便可以进行FPGA设计。FPGA部分的总体设计如图3所示。模块介绍:
USB与FPGA接口模块:USB与FPGA之间的接口转换模块,主要功能为将USB接口传过来的信息缓存到FPGA内部FIFO,并将由数据处理模块处理过的数据传给USB芯片。即产生控制信号读/写USB芯片内部FIFO。可以由读/写FIFO两个有限状态机实现。
以读取CY7C68013芯片内数据为例,根据异步读USB内的FIFO时序图可分为4个状态:空闲态、选择地址态、准备读数据态、读数据态、读取后状态[6] 。在空闲态,当读事件发生时进入选择地址态;在选择地址态,使FIFOADR[1: 0] 指
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)