仪表基础知识 流量仪表资料 物位仪表资料 数显仪表资料 压力仪表资料 温度仪表资料 校验仪表资料 仪表阀门资料 电线电缆资料控制系统资料
返回首页

基于USB接口的数据采集系统的设计与实现

时间:2010-10-27 09:03来源:网络 作者:艾瑾 点击:
摘要: 介绍了一种基于USB接口并用FPGA控制的数据采集系统的设计及此方案中使用到的USB接口芯片AN2135SC的工作原理,并详细描述了此解决方案的硬件实现。 关键词 数据采集系统 USB接口 EPGA 1 系统简介 通用串行总线(U

摘要: 介绍了一种基于USB接口并用FPGA控制的数据采集系统的设计及此方案中使用到的USB接口芯片AN2135SC的工作原理,并详细描述了此解决方案的硬件实现。

关键词    数据采集系统    USB接口   EPGA

1 系统简介

   通用串行总线(USB)支持热插拨,真正的即插即用。USB1.1在全速传输时可以达到12Mbps的传输速率;低速传输时传输速率可达1.5Mbps。USB电缆线只有4根,两根是电源线,传送5V电源,可用来向设备供电;另外两根是信号线,用来传输串行数据。与传统的RS-232串口比较,USB具有传输速度更快、集成化程度更高、编程化更好以及能够支持多个设备等优点。因此在我们的设计中用它来和主机接口实现高速的数据通信。

   在数据采集系统中,通常采用单片机或DSP(数字信号处理器)作为CPU,控制ADC(模/数转换器)、存储器和其他外围电路的工作。但是单片机的时钟频率较低,难以适应高速数据采集系统的要求,而DSP虽然可以实现较高速的数据采集,但其速度提高的同时也提高了系统的成本。FPGA(现场可编程门阵列)有单片机和DSP无法比拟的优势:时钟频率高,内部时延小;全部控制逻辑由硬件完成,速度快,效率高;组成形式灵活,可以集成外围控制、译码和接口电路。因此,在本系统中我们用FPGA来控制A/D和USB芯片的运行。系统结构图如图1所示。

                    图1  系统结构图

   图中FPGA采用ALTERA公司生产的APEX  1k系列芯片,型号为EP1K30,通过在EPGA中编写硬件逻辑控制A/D转换器的运行;实现A/D转换器和USB 控制芯片间数据传输的数据总线接口。除此之外,为了保证EPGA和USB控制芯片间数据交互过程的实现,必须在FPGA中提供一个用于传输通信双方控制和状态信息的GPIO接口。

2 A/D转换环节

  在该系统中我们采用TI公司的ADS7800。它是12位并行模数转换器[2],接口简单,很容易控制,最大采样率可达333kHz,输入的电压范围为-10V~+10V或-5V~+5V。ADS7800芯片的数字接口比较简单,可以很方便地与其它数字系统相连接。对此芯片地控制有完全控制模式(full  control mode )和孤立控制磨蚀(stand-alone  control mode )两种控制方法。

   在本系统中,对ADS7800芯片的控制是通过在FPGA芯片中编写控制逻辑来实现的。我们采用了孤立控制模式,在此控制模式下,输出数字信号是12位并行的。

   利用FPGA芯片的可编程性可以使用芯片中的12个IO脚作为数据总线,另使用一些IO脚作为ADS7800的控制信号输入,控制模/数变换器以32kHz的速率对模拟输入信号进行采样,采样的数据存入FPGA的RAM中。本系统中所使用的FPGA芯片型号为EP1K30QC208-3,它具有着良好的特性,芯片内部共有3万个逻辑门,容量相当大;6个嵌入式阵列块,可是现最大为3k字节的RAM存储器。

  3 系统的设计与实现

  3.1  USB接口芯片介绍

在设计中,我们选取Cyprees公司的EZ-USB系列芯片来实现USB接口设备方的控制。它是一款带有多个外设、高度集成的芯片,其功能框图如图2所示。一个集成的USB收发器(transceiver)连接USB总线的D+和D-。串行接口引擎(SIE)对总线上的数据进行编/解码、错误检测、位填充以及USB规范规定的其它信号级操作的实现,并且最终把数据收或发到USB接口部分。

            图2  EZ-USB系统框图

内部的微处理器是8051单片机的增强型,提高了执行速度并增加了一些新的特性。它使用内部RAM作为程序和数据存储器;带有16位地址线和8位数据线用来访问外部存储器,特有的快速传输模式可以在外部逻辑和内部USB FIFO间快速地传递数据。

3.2  USB总线数据通信解决方案

在实现数据通信解决方案时,为完成数据流地正常传输,所建立的硬件平台必须能够提供两个接口。首先必须要有一个实现数据传输的数据总线接口;除此之外,为了保证数据交互过程的正常实现,必须提供一个用于传输通信双方控制和状态信息的GPIO接口。

AN2135SC芯片提供了EZ-USB系列芯片的所有接口和功能。在本系统中,我们将利用这款芯片和FPGA芯片配合工作,建立一个基于USB总线接口的数据通信解决方案,以实现将采样信号输出到上位机中的功能。

在此解决方案中,我们选择AN2135SC芯片工作在快速数据传输模式下的8位并行数据总线D[7…0]作为数据传输的总线接口;选择AN2135SC芯片中的通用 C总线主控制器接口作为数据通信过程中进行控制和状态信息传输的GPIO接口。这样,芯片中的一般GPIO引脚就可以用来实现其它功能,方便了系统的进一步扩充。图3所示为AN2135SC芯片与FPGA芯片的接口示意图。

为了使AN2135SC芯片中快速数据传输模式下的数据总线D[7…0]和通用 主控制器分别完成流数据传输和控制状态信息传输的功能,需要在芯片的8051核中编写程序,对AN2135SC芯片内部相关的专用寄存器进行配置[3]

                  图3  AN2135SC与FPCA接口示意图

3.3  FPGA的独特配置方案

FPGA芯片是一种基于SRAM工艺制作的可编程器件,其编程数据存储于器件的SRAM存储器内。这是一种易失性的存储器,在系统掉电时,FPGA芯片中的逻辑将会丢失,芯片功能随即消失,上电后需要重新对其进行配置。利用此功能可以灵活地改变FPGA芯片中的逻辑结构。这是一种动态配置过程,这种方式称为ICR方式(in circuit reconfigurable)。

本系统中对FPGA的配置采用PS(passive serial,即被动串行)方式。通常采用的是以下两种配置方法:配置数据来自于ALTERA公司生产的串行配制器件或系统控制器,如 等,系统上电时可对ACEX1K系列芯片进行配置;配置逻辑也可以通过ALTERA公司生产的Master  Blaster、Byte Blaster  MV或Bitblaster下载电缆进行手工下载。但是前者会增加系统的成本,而后者又很不方便。

本系统中采用一种比较独特的PS方式对FPGA进行配置:将FPGA的5个配置管脚DCLK、CONF DONE、nCONFIG、nSTATUS、DATAO分别与USB控制器的5个I/O管脚USB 经过三态缓冲后相连;然后在软件(驱动程序)编程中通过设置AN2135SC芯片内与这5个I/O管脚相关联的I/O口寄存器PORTACFG、OEA、PORTCCFG、OEC来实现FPGA上电时通过PS方式的自动配置的(配置文件采用二进制格式,如rbf格式等),如图4所示。

           图4 FPGA自动配置示意图

   AN2135SC的I/O端口的定义以及配置命令见参考文献[3],FPGA的PS配置方式及相应的时序见参考文献[5]。以下是实现FPGA上电后自动配置功能的部分代码,实践证明,这种自动配置方式具有节约成本、省时、高效的特点。

   Void TD           ∥Called  once  at startup

 

……

PORTACFG=O ;∥ Congigure  PA4 as DCLK out-put  port,PA5  as  CONF DONE in  port

OEA=

;∥         as output port,   as  n   out-put port

;∥ PC4 as Nstatus  input port ,PC5 as DATAO output port

……

OUTC&=0 ;∥      

  ∥                 10   the    are 

                 ∥                   

∣= 08;  ∥Set Nconfig=1;

……

3.4 数据传输通道的实现

   本系统中EN USB芯片工作于快速数据传输模式。在这种模式下,芯片提供的一个8位并行的数据总线可以与外部的FIFO结构相连接。当USB总线开始一次数据传输时,芯片将发出一个读或写通信号。与此信号同步,芯片与外部FIFO每次可以完成一个字节的数据交互。把它和USB总线上的块传输模式相结合,芯片并行总线上就可以实现大数据量的传输。

由于本解决方案是将EPGA输出的数字信号发送到上位机去,因此在数据传输通道中只涉及到了USB总线读的操作。在这种条件下,EP1K30中实现数据传输通道的程序流程图如图5所示。

在图5中,EP1K30在采集到A/D转换器的12位输出数据之后,为把它发送到AN2135SC芯片中,必须首先转换为8位数据,我们将12位数据分层高4位和低8位两部分,分高、低字节两次发送出去。其中高字节的高4位传送12位数据的高4位,低4位填充0。A/D转换器的12位数据分成两个字节后,先传送低字节,后传送高字节,后传送高字节。我们利用EP1K30芯片中的嵌入式阵列块(EAB),借助ALTERA公司提供的双端口RAM宏函数,生成一个2K大小的双端口缓冲器来缓冲数据。

                  图5 数据传输通道程序流程图

每次数据总线读操作的启动均由AN2135SC芯片发送一个读选通信号来实现。AN2135SC芯片发送到EP1K30芯片的读选通信号可以作为上述缓冲器数据输出的同步信号,EP1K30芯片也利用这个选通信号来控制缓冲器的输出地址指针。实现这部分功能的AHDL源代码如下:

  00000000000”then

    

  

       

   

   

  

   上面的程序给出了这一次读过程中读地址指针的变化情况。随着读地址指针的变化,缓冲器中的数据顺次输出到数据总线D[7…0]上去。程序中 …0]为缓冲器的读地址指针, …0]是缓冲器的输出端口, 芯片的数据总线

3.5  功能的实现

芯片与 芯片进行数据传输的同时,双方需要一些握手信号来协调传输过程。为此,我们选择了 芯片中的 总线主控制器作为 端口,用来传输一些必要的控制和状态信息。

为了与 芯片中的 总线主控制器配合工作,我们在 芯片中编写了一个 总线从模块,使得 总线上的数据传输能够顺利进行。根据 总线传输规范,我们设定了一个状态机 ,它共有如下7个状态: 。图6给出了此状态机的状态图。

                         图6 总线状态机流程图

由图6可以看出,在开始条件( 产生后, 由空闲( 状态进入地址状态( 。我们在 中指定了两个寄存器用于存储从 总线上发送来的控制信号和将要发送到 总线上的状态信号,它们分别是控制寄存器 ‥0 和状态寄存器 ‥0 ,这两个寄存器地址的高4位均为“1110“。同样,我们可以把1 芯片中所有由 总线寻址的寄存器的高4位地址都设定为“1110”。如图6所示, 总线在地址期内发送的高位地址只有为“1110”时,1 才会产生响应。这样做的好处是便于扩充其它 总线设备。

总线在地址期内发送的最低地址用于指定随后的数据传输是主要设备读还是主设备写,高电平表示主设备读,低电平表示主设备写。读写状态转换如图6所示。因此,8位地址中可以用作寻址 端口的地址位为

4  结束语

    本文介绍了数据通信解决方案中数据传输通道和 功能的实现。实验证明,两个模块配合工作即可实现数据的正常传输,从而顺利地将 转换器的输出信号经 总线传送到上位机去。这个解决方案基于 总线设计并且结合 来进行控制,充分利用了 总线数据传输速率高、 设备可热插拨等功能和 速度快、效率高、配置灵活的特点。经实践证明,它是一个功能完备、高效稳定的解决方案。

(流量计:admin)
------分隔线----------------------------
热门商品