基于USB2.0与FPGA技术的高速数据采集系统的设计
握手完毕后,设置中断标志并申请中断。在用户的任务中发现有数据接收的标志,就可以读出ISP1581中的数据。而ISP1581向主机发送数据时,首先是主机发送一个IN类型的令牌发起一次传输,如果此时ISP1581相应端点的FIFO非空,则立即发送数据,然后向单片机申请中断,响应中断以后如果还有数据要发送,则应该向ISP1581的FIFO中写入数据,否则直接清空中断标志即可。主机和数据采集器之间的握手配合要事先设计好。
根据输入传输要求,在具体的设计中,除了主数据传输端点外,还配置了一个数据缓冲区为64字节的、工作于中断传输方式的端点作为命令端口,负责与主机进行通信握手。如果主机想从设备读取数据,则首先发送一个读取命令,单片机接收到该命令后,就向主数据端点的FIFO中写入数据,随后主机发出读数据令牌,正好有数据可以发送。通过命令端口还可以发送各种命令,控制数据采集器动作。
3 FPGA数据采集模块设计
3.1 模块划分
FPGA模块划分为A/D接口、FIFO、单片机接口、DMA接口控制、主控制器等模块,其中设置了一些可以单片机写入的寄存器。A/D的采集速度,FIFO的空、满、数据写入、读出速度都可以灵活配置。整个模块以Verilog语言写成,稍加修改可以同各种A/D芯片接口。整个设计在Altera公司的Cyclone系列的EP1C12中完成。在ACEX1K系列EC1K100器件上也可以实现,工作时钟频率为50MHz。
为了提高系统的灵活性,在信号的调理、滤波模块中使用了Lattice公司的ispPAC80可编程滤波器作为输入滤波器,可以灵活地设定抗混叠滤波器的截止频率,最大截至频率可以达到750kHz,完全可以满足一般中、高频信号的滤波。FPGA作为A/D控制器可以同多种A/D芯片接口,本设计中使用了TI公司的10位高速A/D芯片TLC876。芯片工作于流水线方式,最高采样速率为20MSPS。
3.2 与单片机及ISP1581的接口
FPGA在与单片机信号的接口过程中,使用了同步设计的方法。即首先对单片机的I/O信号进行采样同步化,获得各信号上升、下降沿的时刻,输出同步脉冲,然后在这些时刻点处根据同步脉冲的出现与否来控制系统进行动作。这种设计的优点是可以在设计中采用同步状态机,以获得较高的运行速度和稳定的工作性能。这也是ALTERA、XILINX等公司的FPGA数字系统设计中所推荐使用的方法。
为了提高FPGA中的FIFO与ISP1581中的数据存储器的数据交换速度,FPGA与ISP1581之间采用DMA方式进行数据交换。
ISP1581有两种工作方式,由BUS_CONF、MODE0、MODE1三根引脚控制:
(1)如果上电时检测到BUS_CONF引脚为低电平,则工作于分裂总线方式(Split Bus Mode)。ISP1581具有8-bit地址/数据复用总线和16-bit的DMA专用数据线。此时MODE1引脚如果为低电平,则可以将芯片的ALE/A0引脚与89X51的ALE脚直接相连,进行地址/数据总线复用;而如果MODE1为高电平,则ALE/A0脚要接其他的89X51引脚,由用户编程将ALE/A0脚拉高/低进行地址/数据复用,而MODE0脚在这种方式下没有使用或作为其他用途。
(2)如果上电时检测到BUS_CONF引脚为高电平,则工作于通用处理器方式(Generic Processor Mode)。此时MODE1脚没有使用(可接Vcc),MODE0引脚则可接低/高电平,这样可以使芯片的读/写引脚分别符合Motorola/89X51微处理器的读写规范。所以让ISP1581芯片工作于分裂总线方式可以方便地与8051系列单片机接口,其AD[7:0]作为数据/地址总线复用,RD、WE、ALE分别为读、写、地址锁存线,DATA[15:0]作为DMA数据总线使用。
ISP1581芯片中与DMA相关的引脚有DREQ、DACK、DIOR、DIOW。DMA传输前必须设定工作模式、初始化DMA相关寄存器,然后对DMA命令寄存器写入一个命令便可以启动DMA传输。传输模式有主、从、IDE、ATA等方式。通用数据采集系统比较适合采用从模式,在这种模式下,单片机接收到主机发来的开始采集命令后,立即命令FPGA启动采样,然后命令ISP1581启动DMA传输,ISP1581将DREQ引脚拉高,表示请求数据,此时FPGA将数据准备好后,拉低DACK引脚,待准备好数据后,在DIOR线上产生读脉冲,供ISP1581将数据读入内部FIFO。DMA也可以使用主模式,此时读脉冲DIOR由ISP1581产生。DMA工作时序图如图6所示。
4 PC机多线程数据采集程序设计
USB的数据传输使用了虚拟管道的概念,可以同时接入127个设备。每个设备可以拥有若干个端点,每个端点可以跟主机组成一个连接,构成一个通信的最小实体。在数据传输过程中,只要带宽允许,主机可以同时跟几个端点通信,因此要求在主机的应用程序中开启多个线程进行通信。在本设计中,采用了命令端点和
- 单片机与串行AD转换器TLC0834的接口设计(01-22)
- 单收/单发RS-232接口芯片 ADM101E及其应用(01-25)
- 基于单片机的通用型智能充电器设计(01-06)
- 一种通信用高频开关型整流器监控系统的实现方案(02-13)
- 基于16位单片机的逆变电源系统的设计(05-26)
- 便携式单片机控制液晶显示型心率计(03-12)