摘 要:采用FPGA器件EP1C12Q240C8实现对高速A/D转换芯片ADC08200的实时采样控制,解决了传统方法的速度问题。使用VHDL语言采用自顶向下的设计方法编写出源程序;结合FIFO存储器的设计实现了高速A/D采集转换和转换后的数据存储,并给出了采样存储电路原理图。数据处理可通过与SoPC技术结合实现。
关键词:FPGA;ADC08200;FIFO;VHDL
对A/D转换器进行采样控制,传统方法一般是用 CPU或单片机完成的。其优点是编程简单、控制灵活,但缺点是控制周期长、速度慢。例如 MCS-51系列单片机最高时钟频率为12 MHz,AT89C2051单片机为24 MHz,这样当A/D本身的采样速度比较快时,CPU或单片机的慢速工作时序将极大地限制A/D高速性能的利用。当采用FPGA对其进行控制时,由于FPGA的时钟频率可达 100 MHz以上,从而可实现数据的高速采集,还可以把采样数据实时存入FPGA内部的高速RAM中。本设计是利用FPGA直接控制高速ADC08200对模拟信号进行采样,采集速度可达200 MS/s,然后将转换好的8位二进制数据迅速存储到FPGA内部的FIFO存储器中。在完成对模拟信号一个周期的采样后,由外部电路系统将存储器中的采样数据读出处理。采用自顶向下的设计方法可将本设计分为控制器模块和FIFO缓冲模块。
1 控制器模块设计
1.1 ADC08200芯片功能介绍
ADC08200[1]是美国国家开云棋牌官网在线客服(NS)公司生产的单通道、低功耗、高速8位模数转换器。它具有成本低、功耗低、体积小和易于使用等优点。最高采样频率达200 MS/s。在掉电模式下ADC0820仅消耗1 mW。独特的结构在50 MHz标准信号的输入情况下可达到7.3有效采样位。单电源3 V或2.5 V的供电,内带高质量参考源和高性能采样保持电路。
主要端口:
CLK:时钟输入端;
VIN:模拟信号输入端;
PD:掉电保护,当PD为低时,D0~D7正常输出,当PD为高时,D0~D7输出保持;
D0~D7:数据输出端口。D0为数据最低位,D7为最高位;
图1、图2分别为ADC08200的工作时序图和外围接口电路图。
1.2 基于VHDL控制器的软件设计
VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述。基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。根据ADC08200的特点,可通过硬件描述语言(VHDL)设计一个状态机,最后下载到FPGA芯片上,通过FPGA芯片控制ADC08200的工件。时钟由外部引入,由分频模块得到想要的时钟。设计过程为编写VHDL[2]代码,然后在QuartusⅡ[3]平台下进行编译、仿真,最后下载到FPGA芯片中。仿真图代码如图3所示。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY 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 BEHAVIOURAL OF adc08200 IS
TYPE ADS_STATES IS(STATE0_TYPE,STATE1_
TYPE);
SIGNAL STA_G_CURRENTSTATE : ADS_STATES;
SIGNAL STA_G_NEXTSTATE : ADS_STATES;
SIGNAL CTL_GP_LATCHFLAG : STD_LOGIC;
SIGNAL CTL_GP_CHIPSELECT : STD_LOGIC;
BEGIN
COM:PROCESS(STA_G_CURRENTSTATE)
BEGIN
CASE STA_G_CURRENTSTATE IS
WHEN STATE0_TYPE =>ADCLK<=′1′;
CTL_GP_LATCHFLAG<=′1′;
DCLK<=′0′;
STA_G_NEXTSTATE<=STATE1_TYPE;
WHEN STATE1_TYPE =>ADCLK<=′0′;
CTL_GP_LATCHFLAG<=′0′;
DCLK<=′1′;
STA_G_NEXTSTATE<=STATE0_TYPE;
WHEN OTHERS=>ADCLK<=′0′;
CTL_GP_LATCHFLAG<=′0′;
DCLK<=′1′;
STA_G_NEXTSTATE<=STATE1_TYPE;
END CASE;
END PROCESS COM;
REG:PROCESS(CLK,RST)
BEGIN
IF RST=′0′ THEN STA_G_CURRENTSTATE<=
STATE0_TYPE;
ELSIF(CLK′EVENT AND CLK=′1′) THEN
STA_G_CURRENTSTATE<=STA_G_NEXTSTATE;
END IF;
END PROCESS REG;
LATCH:PROCESS(CTL_GP_LATCHFLAG)
BEGIN
IF RST=′0′ THEN DATA<=(OTHERS=>′0′);
ELSIF(CTL_GP_LATCHFLAG'EVENT AND
CTL_GP_LATCHFLAG =′1′) THEN DATA<=D;
END IF;
END PROCESS LATCH;
CTL_GP_CHIPSELECT<=CTLOE;
ADPD<=NOT CTL_GP_CHIPSELECT;
END ARCHITECTURE BEHAVIOURAL;
2 高速存储模块的设计与功能仿真
FIFO是一种存储器参数可设置模块库,在高速数字系统中常用作缓存。在高速数据传输和实时显示领域中,需要对数据进行快速储存和发送,要实现快速的数据采集、顺序储存和传送,传统的RAM型存储器已经无法满足要求。目前许多高速系统都采用FIFO作为缓存体。因为FIFO的写入(读出)时间只需要一个时钟周期,不需要对地址进行加1操作,大大提高了存储速度。
利用LPM中的宏功能块LPM_FIF0+,在QuartusⅡ平台下定制一个高速的先进先出FIFO,根据需要对所使用的宏功能块的参数进行适当调整,由此生成一个满足自己特定需要的模块。最后,利用例化语句,在顶层设计中调用该模块。参数如下:
LPM_W lDTH=>8,LPM_NIJM W ORDS=>1024,LPM _SHOW AHEAD=>“OFF”,LPM_HIN=>“USE_EAB=ON”
图4为模块 FIFO时序图和例化后的模块。
3 系统的模块设计与功能仿真
A/D转换模块与高速存储模块结合调理电路与数据处理电路就构成了一个完整的系统。调理电路和模拟信号经由A/D转换器ADC08200转换模块后变为数字信号,传给同样由FPGA控制的先进先出存储器FIFO。这样就弥补了由单片机控制带来的速度低的缺点。FIFO存储的数字信号可由单片机系统来读取和处理。在QuartusⅡ平台下使用原理图输入方式可以使设计得到简化。系统的连接图如图5所示。其中CLK为时钟信号;RST为复位信号;D[7..0]为转换后的数字信号,接A/D的输出;WR/RD为读写控制;RDCLK为读时钟;ACLR为清零信号;ADCLK接A/D转换器的时钟CLK;ADPD接ADC08200的PD;WRFULL,RDEMPTY为写满,读空显示信号;Q[7..0]为输出数据。
带FIFO的功能仿真图如图6。
采用EP1C12Q240C8芯片实现对高速A/D转换器ADC08200的实时采样控制,充分利用了FPGA器件的高速高效优势,解决了传统方法使用CPU或单片机控制速度慢的问题,发挥了ADC08200高速采样的性能(最高采样频率达 200 MS/s),实现简单,可以广泛用于实际电路的控制系统。该电路的数据处理可以由CPU或单片机进行,由SoPC技术进行数据的处理效果更好。
参与文献
[1] National Semiconductor.ADC08200 8-Bit,20 Msps to 200 Msps,Low Power A/D Converter with Internal Sample-
and-Hold[P].2008,2.
[2] 乔庐峰,王志功.VHDL数字电路设计教程[M].北京:电子工业出版社,2005.
[3] 郑亚民,董晓舟.可编程逻辑器件开发软件QuartusⅡ[M].北京:国防工业出版社,2006.
[4] 潘松,黄继业.EDA技术实用教程(第2版)[M].北京:科学出版社,2005.
[5] 昊继华,王诚.AheraFPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2007.
[6] 潘松,王国栋.VHDL实用教程[M].成都:电子科技大学出版社,1999.