基于FPGA的数据采集分析系统设计
2009-06-10
作者:肖祖胜,程 明
摘 要: FPGA是一种高密度逻辑器件。与通用的MCU相比, FPGA具有并行数据处理特性。利用该特性,能够实现对高速A/D的采样控制;同样, 使用FPGA对采样数据进行频谱分析,能够达到比DSP芯片更高的数据处理速度。
关键词: 采样;MCU;FPGA
在计算机控制系统中,常常需要采集各种模拟量信号,并对它们进行模数转换,将外部输入的模拟信号转换成数字信号,以便计算机进行加工处理。在很多情况下,计算机应用系统中常用普通MCU(如51系列单片机或控制型DSP)完成系统任务。由于MCU一般均采用指令处理结构,要想达到高的处理速度相当困难,一般速率不会超过MHz级。而FPGA具有高速并行处理的特性,采用FPGA控制数据采集可以达到很高的采样速率。
数字信号处理的方式一般有两种:一种是使用单片机或DSP等MCU,通过软件编程实现;另外一种是利用专用逻辑电路或可编程逻辑器件实现。用软件编程来实现,虽然有很大的灵活性,但受DSP或单片机性能及程序指令顺序执行的限制,难以实现高速、大规模运算;而专用集成电路芯片或FPGA却可以实现很高的运算速度,非常适合高速信号处理系统的应用。
鉴于此,可以采用FPGA来完成一个模拟信号的采集分析系统。现在用FPGA做信号处理使用的大多是比较高端的片子,价格都比较贵,像ALTERA的Stratix系列、XILINIX的Virtex系列等。考虑到成本,在本设计中尝试使用ALTERA的低端FPGA来完成设计。
尽管ALTERA提供了很多关于数字信号处理的IPCORE,但使用是需要收费的,而且费用较高。通过自己编程实现信号处理可以节省大量的成本,本设计就是采用这一方法。
1 器件选择
采用的FPGA是ALTERA的EP1C6T144C8,EP1C6T144C8有144个引脚,最多可使用98个I/O口,支持JTAG调试,AS、PS下载,内有5 980个LES,总的RAM位数是92 160 bit,内嵌有两个锁相环,四个全局时钟,内核电压为1.5 V,输出I/O口驱动电压为3.3 V,支持LVDS、TTL、CMOS等电平传输。采用的配置芯片为EPCS1。这是一款低端的FPGA芯片,具有较高的性价比。
A/D采样芯片是TLC5510,这是一款高速A/D采样芯片,它是一种采用CMOS工艺制造的8位高阻抗并行A/D芯片,能提供的最大采样率为20 MS/s。由于TLC5510采用了半闪速结构及CMOS工艺,因而大大减少了器件中比较器的数量,而且在高速转换的同时能够保持较低的功耗。
2 FPGA内部电路
FPGA内部电路分为两大模块。
(1)采样控制:TLC5510的采样控制引脚只有两个,一个是时钟端CLOCK,一个是输出使能端(低电有效)。根据TLC5510采样控制的时序电路,芯片CLOCLK的下降沿采样,经过2.5个周期的延迟后,得到采样结果,这时如果使能端有效,则数据送到输出端,所以控制起来比较简单。但是要注意的是采样时钟和FFT时钟之间的匹配。
根据TLC5510的采样时序特点,在设计采样控制模块时可以只控制采样时钟,而输出始终使能,就能够完成采样控制。
控制FPGA内部RAM的写入时钟,当完成一次采样后,将TLC5510数据端的数据取走,这样就完成了采样到写入的过程。
分频模块将时钟分到和系统时序相适合的时钟。采样控制电路将采样结果由八位变为十六位,存入RAM中。
(2)FFT模块:设计中的FFT模块实现的是256点的定点FFT运算,采用基-2频率抽选法,图1为8位算法的流程示意图,256点算法与其类似。
FFT模块主要包括四个单元:蝶形变换单元,地址发生单元,RAM块选择单元(其中包括旋转因子表),时钟控制单元。图2为整体电路结构。
①蝶形变换单元:在蝶形变换电路中,最为核心的就是乘法器和加法器,可以通过对QUARTUS的宏单元的调用,实现乘法运算,也可以自己编写乘法器,利用Verilog的for语句实现16×16无符号乘法器的部分原码如下:
always@(data1,data2)
begin
data_out=32′d0;//初始赋0
for(a=5′d0;a<=5′d15;a=a+5′d1)
if(data2[a]==1)