1、基于FPGA数据采集系统方案 基于FPGA数据采集系统一引言 传统的数据采集系统, 通常采用单片机或DSP 作为主要控制模块, 控制ADC、存储器和其他外围电路的工作。随着数据采集对速度性能的要求越来越高,传统采集系统的弊端就越来越明显。单片机的时钟频率较低且需用软件实现数据采集, 这使得采集速度和效率降低, 此外软件运行时间在整个采样时间中也占很大的比例。而FPGA(现场可编程门阵列)有单片机无法比拟的优势。FPGA 时钟频率高, 部延时小, 全部控制逻辑由硬件完成, 速度快、效率高。在此技术基础上, 为了满足数据采集对速度的要求, 本文就着重介绍了一种基于FPGA, 采用VHDL硬件描述语
2、言设计实现的高速数据采集系统。二设计思路本设计采用FPGA器件EP1C12Q240C8实现对高速A/D转换芯片ADC08200的采样控制,解决了传统方法的速度问题。使用VHDL语言采用电路结构图为顶层向下的方法;结合FIFO存储器的设计实现了高速A/D采集转换和转换后数据存储,并给出了采样系统框图与FPGA部设计框图。 图1 系统框图 图2 FPGA部结构一硬件设计对A/D转换器进行采样控制,传统方法一般是用CPU或单片机完成的。其优点是编程简单、控制灵活,但缺点是控制周期长、速度慢,例如MCS51系列单片机最高时钟频率为12MHZ,AT89C2051单片机为24MHZ,这样当A/D本身的采样
3、速度比较快时,CPU或单片机的慢速工作时序将极限制A/D高速性能的利用。当采用FPGA对其进行控制时,由于FPGA的时钟频率可达100MHZ以上,从而可实现数据的高速采集,还可以把采样数据实时存入FPGA部的高速RAM中。本设计是利用FPGA直接控制高速ADC08200对模拟信号进行采样,采集速度可达200MS/s,然后将转换好的8位二进制数据迅速存储到FPGA部的FIFO存储器中。在完成对模拟信号一个周期的采样后,由外部电路系统将存储器中的采样数据读出处理。采用自顶向下的设计方法可将本设计分为控制器模块和FIFO缓冲模块 。1.系统的模块设计与功能仿真 ad转换模块与高速存储模块结合调理电路
4、与数据处理电路就构成了一个完整的系统。调理电路和模拟信号经由a/d转换器adc08200转换模块后变为数字信号,传给同样由fpga控制的先进先出存储器fifo这样就弥补了由单片机控制带来的速度低的缺点.fpga存储的数字信号可由单片机系统来读取和处理.在quartus2平台下使用原理图输入方式可以使设计得到简化.系统的连接图如图4所示.其中clk为时钟信号;rst为复位信号;d7.0转换后的数字信号,接a/d的输出;wr/rd为读写控制;rdclk为读时钟;aclr为清零信号;adclk接a/d转换器的时钟clk;adpd接adc08200的pd;wrfull;rdempty为写满,读空显示信
5、号;q7.0为输出数据.2.控制器模块设计2.1 ADC08200芯片功能介绍ADC08200是美国国家半导体公司生产的单通道、低功耗、高速8位模数转换器。它具有成本低、功耗低、体积小和易于使用等优点。最高采样频率达200MS/s。在掉电模式下ADC08200仅消耗1mw。独特的结构在50MHZ标准信号的输入情况下可达到7.3有效采样位。单电源3v或2.5v的供电,带高质量参考源和高性能采样保持电路。主要端口:Clk:时钟输入端;Vin模拟信号输入端;PD:掉电保护,当PD为低时,D0-D7正常输出,当PD为高时,D0-D7输出保持;D0-D7:数据输出端口。D0为数据最低位,D7为最高位;图
6、3为ADC08200的工作时序图和外围接口电路图。 图3 ADC08200接口电路图2.2 基于VHDL控制器设计VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述。基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。根据ADC08200的特点,可通过硬件描述语言设计一个状态机,最后下载到FPGA芯片上,通过FPGA芯片控制ADC08200的工件。时钟由外部引入,由分频模块得到想要的时钟。设计过程为编写VHDL代码,然后在Quartus II平台下进行编译,仿真。最后下载到FPGA芯片中。2.3高速存储模块的设计FIFO是一种存储器参数可设置模块库,在高速数字系统中
7、常用作缓存。在高速数据传输和实时显示领域中,需要对数据进行快速储存和发送,要实现快速的数据采集、顺序储存和传送,传统的RAM型存储器已经无法满足要求。目前许多高速系统都采用FIFO作为缓存体。因为FIFO的写入(读出)时间只需要一个时钟周期,不需要对地址进行加1操作,大大提高了存储速度。利用LPM中的宏功能块LPM_FIFO,在Quartus II平台下定制一个高速的先进先出FIFO根据需要对所使用的宏功能块的参数进行适当调整,由此生成一个满足自己特定需要的模块。二VHDL软件设计1.主控制模块VHDL程序library ieee;use ieee.std_logic_1164.all;ent
8、ity adc08200 is port(rst:in std_logic; clk:in std_logic; d:in std_logic_vector(7 downto 0); ctloe:in std_logic; adclk:out std_logic; adpd:out std_logic; data:out std_logic_vector(7 downto 0); dclk:out std_logic);end entity adc08200;architecture bhv of adc08200 istype ad_states is (state0_type,state1
9、_type);signal sta_g_currentstate:ad_states;signal sta_g_nextstate:ad_states;signal ctl_gp_latchflag:std_logic;signal chipselect:std_logic;begin:process(sta_g_currentstate)begincase sta_g_currentstate iswhen state0_type=adclk=1;ctl_gp_latchflag=1;dclk=0;sta_g_nextstateadclk=0;ctl_gp_latchflag=0;dclk=
10、1;sta_g_nextstateadclk=0;ctl_gp_latchflag=0;dclk=1;sta_g_nextstate=state1_type;end case;end process ;reg:process(clk,rst)begin if rst=0then sta_g_currentstate=state0_type;elsif(clkevent and clk=1)thensta_g_currentstate=sta_g_nextstate;end if;end process reg;latch:process(ctl_gp_latchflag)beginif rst
11、=0 then data0);elsif(ctl_gp_latchflagevent and ctl_gp_latchflag=1)then data=d;end if;end process latch;chipselect=ctloe;adpd=not chipselect;end architecture bhv;2.LPM-FIFO宏模块的调用 1.1在设计数据采集系统前,必须首先完成对采集转换数据缓存和存放的设计。利用MegaWizardPlug-In Manager 定制FIFO宏功能块。设计步骤如下: (1)打开MegaWizard Plug-In Manager 初始对话框。在
12、Tools 菜单中选择MegaWizardPlug-In Manager,产生如图7-5 所示的界面,选择Create a new custom 项(如果要修改一个已编辑好的LPM 模块,则选择Edit an existing custom 项),即定制一个新的模块。单击Next 按钮后,产生如图7-6 所示的对话框,在左栏选择memory compiler项下的LPM_FIFO,再选择Cyclone 器件和VHDL 语言方式;最后输入FIFO文件存放的路径和文件名:F:adc08200fifo(定制的fifo元件文件名),单击Next按钮。 (2)选择ROM 控制线、地址线和数据线。在如图7
13、-7 和图7-8 所示的对话框中选择地址线位宽和ROM 中数据数分别为6 和64;选择地址锁存控制信号inclock。(3)单击Next按钮后出现图7-9的界面。在“What should the fifo”栏选择默认的“Auto”。在适配中,Quartus II将根据选中的目标器件系列,自动确定嵌入fifo模块的类型。生成FIFO模块如下:1.2其FIFO部VHDL语言程序:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY fifo IS PORT ( clock : IN
14、STD_LOGIC ; data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); rdreq : IN STD_LOGIC ; wrreq : IN STD_LOGIC ; empty : OUT STD_LOGIC ; full : OUT STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0); usedw : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) );END fifo;ARCHITECTURE SYN OF fifo IS SIGNAL sub_wire0 : STD_LOGIC_VECTO
15、R (9 DOWNTO 0); SIGNAL sub_wire1 : STD_LOGIC ; SIGNAL sub_wire2 : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL sub_wire3 : STD_LOGIC ; COMPONENT scfifo GENERIC ( add_ram_output_register : STRING; intended_device_family : STRING; lpm_numwords : NATURAL; lpm_showahead : STRING; lpm_type : STRING; lpm_width : NATURAL; lpm_widthu : NATURAL; overflow_checking : STRING; u
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1