《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于USB接口的数据采集系统的设计与实现
基于USB接口的数据采集系统的设计与实现
Epdoc
Epdoc
摘要: 通用串行总线(USB)支持热插拨,真正的即插即用。USB1.1在全速传输时可以达到12Mbps的传输速率;低速传输时传输速率可达1.5Mbps。USB电缆线只有4根,两根是电源线,传送5V电源,可用来向设备供电;另外两根是信号线,用来传输
Abstract:
Key words :
 

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

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

基于<a class=USB接口的数据采集系统的设计与实现" height="203" src="http://files.chinaaet.com/images/20111217/848e3c07-0a10-4b4a-9d2a-c8f712f65591.jpg" title="基于USB接口的数据采集系统的设计与实现" />

图中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 系统的设计与实现

USB接口芯片介绍

在设计中,我们选取Cyprees公司的EZ-USB系列芯片来实现USB接口设备方的控制。它是一款带有多个外设、高度集成的芯片,其功能框图如图2所示。一个集成的USB收发器(transceiver)连接USB总线的D+和D-。串行接口引擎(SIE)对总线上的数据进行编/解码、错误检测、位填充以及USB规范规定的其它信号级操作的实现,并且最终把数据收或发到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芯片中的通用I2C总线主控制器接口作为数据通信过程中进行控制和状态信息传输的GPIO接口。这样,芯片中的一般GPIO引脚就可以用来实现其它功能,方便了系统的进一步扩充。图3所示为AN2135SC芯片与FPGA芯片的接口示意图。

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

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

3.3  FPGA的独特配置方案

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

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

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

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

           图4 FPGA自动配置示意图

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

   Void TD 基于USB接口的数据采集系统的设计与实现 基于USB接口的数据采集系统的设计与实现           ∥Called  once  at startup

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

……

PORTACFG=O 基于USB接口的数据采集系统的设计与实现 ;∥ Congigure  PA4 as DCLK out-put  port,PA5  as  CONF 基于USB接口的数据采集系统的设计与实现 DONE in  port

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

基于USB接口的数据采集系统的设计与实现 ;∥ 基于USB接口的数据采集系统的设计与实现    基于USB接口的数据采集系统的设计与实现    基于USB接口的数据采集系统的设计与实现   as output port, 基于USB接口的数据采集系统的设计与实现   as  n 基于USB接口的数据采集系统的设计与实现  out-put port

基于USB接口的数据采集系统的设计与实现 ;∥ PC4 as Nstatus  input port ,PC5 as DATAO output port

……

OUTC&=0 基于USB接口的数据采集系统的设计与实现 ;∥ 基于USB接口的数据采集系统的设计与实现       基于USB接口的数据采集系统的设计与实现

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

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

基于USB接口的数据采集系统的设计与实现 ∣= 基于USB接口的数据采集系统的设计与实现 08;  ∥Set Nconfig=1;

……

3.4 数据传输通道的实现

本系统中EN 基于USB接口的数据采集系统的设计与实现 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大小的双端口缓冲器来缓冲数据。

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

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

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

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

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

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

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

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

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

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

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

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

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

上面的程序给出了这一次读过程中读地址指针的变化情况。随着读地址指针的变化,缓冲器中的数据顺次输出到数据总线D[7…0]上去。程序中 基于USB接口的数据采集系统的设计与实现 …0]为缓冲器的读地址指针, 基于USB接口的数据采集系统的设计与实现 …0]是缓冲器的输出端口, 基于USB接口的数据采集系统的设计与实现 … 基于USB接口的数据采集系统的设计与实现 是 基于USB接口的数据采集系统的设计与实现 芯片的数据总线 基于USB接口的数据采集系统的设计与实现 … 基于USB接口的数据采集系统的设计与实现 。

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

在 基于USB接口的数据采集系统的设计与实现 芯片与 基于USB接口的数据采集系统的设计与实现 芯片进行数据传输的同时,双方需要一些握手信号来协调传输过程。为此,我们选择了 基于USB接口的数据采集系统的设计与实现 芯片中的I2C总线主控制器作为 基于USB接口的数据采集系统的设计与实现 端口,用来传输一些必要的控制和状态信息。

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

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

                         图6 I2C总线状态机流程图

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

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

 结束语

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

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