文献标识码:A
文章编号: 0258-7998(2013)04-0055-03
随着现代社会信息技术的高速发展,数据采集的快速性、稳定性、精确性成为数据采集的重要指标。传统数据采集系统采用单片机与DSP作为控制器,控制模数转换器(ADC)、存储器及其各自的外围电路,对数据进行采集并处理。然而,单片机本身的指令周期及其处理速度的限制使其很难达到多通道高速采集数据的要求,并且单片机控制各功能模块需要软件来支持,软件运行时间在整个采样时间中占有很大的比例,效率较低[1];以FPGA作为控制器的多通道采集系统,具有较高的时钟频率,较快的运行速度,具有开发周期短、功耗低、开发费用低等优点。因此,本设计采用FPGA作为控制器对数据进行采集。
1 系统总体架构
多路模拟信号经过A/D模数转换后,将输入的模拟信号转为数字信号,该数字信号通过FPGA核心单元,经过USB传输到计算机中并存储。该数据适用于控制过程、存储、处理,并显示在计算机中。FPGA不仅控制A/D转换器,还应完成对USB及内部FIFO的读写控制,实现了其逻辑控制功能。系统整体原理图如图1所示。
2 主要芯片选型
2.1 FPGA芯片
FPGA设计数字系统电路时,设计灵活,集成度高,工作速度快,可以很大地降低成本。本设计采用Altera公司的Cyclone II 系列的EP2C35F484芯片,该芯片系统门数为35 000个,I/O端口为475个,1.20 V的电源电压,能在-40℃~+100℃的温度下工作,完全能达到设计的要求。
2.2 A/D转换芯片
通过对系统的采样率、分辨率、通道数等要求的分析,本设计采用的是一片低功耗ADS7825芯片进行模数转换。ADS7825是一片4通道、16位模数转换器,其数据采样及转换时间不超过25 μs,可输入-10.0 V~+10.0 V的模拟电压。ADS7825的最大优点就是经过A/D转换后的数据既可以并行输出也可以串行输出,它可以被配置在一个连续转换模式,按顺序数位化所有4个通道,使用非常方便。
2.3 USB传输芯片的选型
使用USB2.0通用串行接口总线,USB接口特点是即插即用和支持热插拔,并且传输速率高,USB2.0支持高达480 Mb/s的数据传输速率。系统采用了应用广泛、性能稳定的Cypress公司CY7C68013芯片,实现了USB接口的扩展,能够与计算机之间实现高速的数据传递。
3 系统硬件设计
3.1 A/D转换电路
在使用ADS7825时,将其片选引脚CS置低电平,读数/启动转换引脚R/C给予一个下降沿,以启动A/D转换器。当BUSY保持低电平时, A/D进入到采样保持和转换的过程中;当BUSY为高电平,R/C为高电平时,A/D进入到开始读取数据过程。在此过程中,必须先将R/C置高电平,再将BUSY置高电平,否则可能会引起数据还未读完,就开始了新的转换,导致数据的丢失[2]。
ADS7825的输出有两种模式:一种为并行输出,另一种为串行输出,其工作原理不同。为了能实现多通道高速采集系统,设计采用并行输出的方式。
并行输出的工作原理:将片选引脚CS置低电平,给予R/C下降沿,以启动A/D转换器。检测BUSY引脚的状态,当BUSY引脚为低电平时,表示A/D数据的转换还在进行;当BUSY为高电平时,数据转换完成,开始读取数据。读取数据时,要输出16位数据,输出只有8个引脚,需要BYTE引脚的功能,当BYTE引脚为高电平时,输出的是低8位数据;当BYTE引脚为低电平时,输出的是高8位数据[3]。ADS7825外围电路图如图2所示。
3.2 USB通信接口
CY7C68013有Ports、Slave FIFO和GPIF 3种接口方式。本设计采用Slave FIFO接口方式。Slave FIFO是从机方式,即FX的CPU不直接参与USB数据处理,而是简单地把FX作为USB和外部数据处理逻辑(如ASIC、DSP和IDE(串行接口引擎)控制器)之间的通道,数据流并不经过CPU,而是通过FX的FIFO直接传输。FIFO通过外部主机控制,同时,FIFO提供所需的时序信号、握手信号(满、空等)和输出使能等[4]。
图3为FPGA与USB接口示意图,采用Slave FIFO模式,外部时钟使用的是FPGA提供的12.5 MHz的时钟信号,FD[15:0]为16位双向数据总线,因此最大传输速度可达200 Mb/s,FLAGA、FLAGB、FLAGC是CY7C68013FIFO的标志管脚,SLOE用于使能数据总线FD的输出;FIFOADR[1:0]用于选择和FD连接的端点缓冲区;SLRD和SLWR可分别作为FIFO的读写选通信号。
FPGA控制进程如下[5]:
(1)IDLE:当写事件发生时,跳转到状态1;
(2)状态1:通过改变FIFOADR[1:0],指向FIFO,跳到状态2;
(3)状态2:如果“FIFO满”为假,则跳到状态3,否则在状态2循环等待;
(4)状态3:传送总线驱动数据,每个IFCLK激活SLWR,跳到状态4;
(5)状态4:是否还有数据要传送,有数据则跳到状态2,无数据则要传送跳到IDLE。
异步Slave FIFO 读状态如图4所示。
4 FPGA控制程序设计及仿真
4.1 ADS7825仿真控制设计
基于FPGA实现对ADS7825模数转换器的控制,并读出其转换的数据。采用Verilog HDL硬件描述语言,实现对ADS7825的控制与数据的读出,并在Quartus Ⅱ9.0开发工具中综合编译并映射到FPGA中运行,其仿真结果如图5所示。
仿真程序如下:
case(ad_state)
{......
4′b0010: begin //高字节读取
data_16bit[15:8]
<= ads7825data_8bit[7:0];
ad_state <= 4'b0110;
end
4′b0101: begin //低字节读取
data_16bit[7:0] <= ads7825data_8bit[7:0];
ad_state <= 4′b0111;
data_valid <= 1′b1;
//数据开始完毕,外部允许读取寄存器
end
......
}
波形结果显示了该模块在设置好时钟频率50 MHz和片选信号的情况下,通过ADS7825模数转换器转换的高8位和低8位的数据,FPGA逻辑控制单元能够快速准确地接收,转换成16位数据,并输出对ADS7825的逻辑控制信号,从而实现了FPGA对ADS7825模数转换器准确无误的控制和数据的接收,充分体现了系统的快速性、准确性,稳定性。
4.2 USB传输控制仿真模块
CY7C68103为每个端口都提供了空满标志位,设计利用FPGA对CY7C68013的空满状态的检测,完成输出对CY7C68013的控制信号,控制读写过程[6]。仿真波形如图6所示。
仿真程序如下[7-8]:
always @(negedge CLK or negedge RESET)
begin
if(!RESET)
begin
SLWR_reg <= 1′b0;
SLCS <= 1'b0;
SLOE <= 1'b1;
SLRD <= 1'b1;
end
else
begin
SLOE <= 1'b1;
SLRD <= 1'b1;
SLCS <= 1'b0;
if(full == 1′b1) // SLWR_reg is generated
only when full is low.
begin
SLWR_reg <= ~SLWR_reg;
end
else
begin
SLWR_reg <= 1′b1;
end
end
end
本设计介绍了以FPGA芯片EP2C35F484为主体,配合ADS7825和USB传输控制器CY7C68013构成的数据采集系统。利用FPGA的逻辑控制功能,实现对ADS7825与CY7C68013的逻辑控制,实现对数据快速、准确的采集。利用Altera公司的Quartus Ⅱ9.0开发工具,采用Verilog HDL硬件描述语言实现了对数据的传输,仿真结果表明本设计的可行性,从而实现了对4路模拟信号的采集与传输,具有良好的稳定性。
参考文献
[1] 胡敦利,肖力,尤文艳. 基于FPGA的测试控制板卡的设计与实现[J]. 电子技术应用,2012,38(1):10-13.
[2] 王霞,李刚. 具有串行和并行输出接口的模数转换器——ADS7825[J].国外电子元器件,1999(1):30-33.
[3] 张原峰,高彦,王彦文.ADS7825模数转换芯片及其在高速数据采集系统中的应用[J].计算机测量与控制,2002,10(6):49-53.
[4] 夏宇闻. Verilog数字系统设计教程[M]. 北京:北京航空航天大学出版社,2008:44-46.
[5] 张思杰,赵泰,汪振兴,等. 基于FPGA的USB接口数据采集系统设计[J]. 电子技术应用,2011,37(5):64-69.
[6] 张俊涛,王豫莹.基于FPGA和USB2.0的高速数据采集系统[J].仪表技术与传感器,2011(10):173-174.
[7] 吴继华,王诚. Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005:88-96.
[8] 吴继华,王诚. Altera FPGA/CPLD设计(高级篇)[M]. 北京:人民邮电出版社,2005:91-100.