基于USB接口的数据采集系统的设计与实现
扫描二维码
随时随地手机看文章
系统简介
通用串行总线(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>。[!--empirenews.page--]
图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下载电缆进行手工下载。但是前者会增加系统的成本,而后者又很不方便。
上面的程序给出了这一次读过程中读地址指针的变化情况。随着读地址指针的变化,缓冲器中的数据顺次输出到数据总线D[7…0>上去。程序中 …0>为缓冲器的读地址指针, …0>是缓冲器的输出端口, … 是 芯片的数据总线 … 。
3.5 功能的实现
在 芯片与 芯片进行数据传输的同时,双方需要一些握手信号来协调传输过程。为此,我们选择了 芯片中的 总线主控制器作为 端口,用来传输一些必要的控制和状态信息。
为了与 芯片中的 总线主控制器配合工作,我们在 芯片中编写了一个 总线从模块,使得 总线上的数据传输能够顺利进行。根据 总线传输规范,我们设定了一个状态机 ,它共有如下7个状态: 。图6给出了此状态机的状态图。
图6 总线状态机流程图
由图6可以看出,在开始条件( 产生后, 由空闲( 状态进入地址状态( 。我们在 中指定了两个寄存器用于存储从 总线上发送来的控制信号和将要发送到 总线上的状态信号,它们分别是控制寄存器 ‥0 和状态寄存器 ‥0 ,这两个寄存器地址的高4位均为“1110“。同样,我们可以把1 芯片中所有由 总线寻址的寄存器的高4位地址都设定为“1110”。如图6所示, 总线在地址期内发送的高位地址只有为“1110”时,1 才会产生响应。这样做的好处是便于扩充其它 总线设备。
总线在地址期内发送的最低地址用于指定随后的数据传输是主要设备读还是主设备写,高电平表示主设备读,低电平表示主设备写。读写状态转换如图6所示。因此,8位地址中可以用作寻址 端口的地址位为 ‥ 。
4 结束语
本文介绍了数据通信解决方案中数据传输通道和 功能的实现。实验证明,两个模块配合工作即可实现数据的正常传输,从而顺利地将 转换器的输出信号经 总线传送到上位机去。这个解决方案基于 总线设计并且结合 来进行控制,充分利用了 总线数据传输速率高、 设备可热插拨等功能和 速度快、效率高、配置灵活的特点。经实践证明,它是一个功能完备、高效稳定的解决方案。