频谱分析仪是微电子测量领域中最基础、最重要的测量仪器之一,是从事各种电子产品研发、生产、检验的重要工具。高分辨率、宽频带数字频谱分析的方法和实现一直是该领域的研究热点[1]。现代频谱分析仪是基于现代数字信号处理理论的频谱分析仪,信号经过前置预处理、抗混叠滤波、A/D变换、数字频谱分析等环节而得到信号中的频率分量, 达到与传统频谱分析仪同样的结果。
本设计完全利用FPGA实现FFT,在FPGA上实现整个系统构建。其中CPU选用Altera公司的Nios II软核处理器进行开发, 硬件平台关键模块使用Altera公司的EDA软件QuartusIIV8.0完成设计。整个系统利用Nios II软核处理器通过Avalon总线进行系统的控制。全文重点阐述了整个系统的设计流程,同时对于方案中的设计思路和重要部分给予说明。
1 系统设计方案
频谱分析仪一般分为两类:
一种是扫频调谐式的分析仪,此类分析仪通过各类滤波,再经过一个外差的接收机,把输入信号中的中频信号进行分析,从而得到频谱分析的结果。这是现在最为普遍的频谱分析仪结构,此类分析仪结构复杂[2]。
另外一种是动态的信号分析仪,即快速傅里叶变换FFT分析仪。它利用FFT将信号分解成分立的频率分量,由模拟/数字转换器(ADC)直接对输入信号取样,经过FFT处理后获得频谱分布图。此类分析仪速度明显优于传统分析仪,可以进行实时分析。本文的设计就采用这种原理。
在此设计中,信号经过滤波、放大之后,通过AD取样,在FGPA内对信号进行全硬件的数字滤波后,交给FFT信息处理单元进行FFT变换,最后送到LCD显示其频谱分析的结果。
图1是系统的硬件结构框图。整个系统设计主要由FPGA的内部硬件电路及外围接口模块构成。
2 系统的硬件单元
2.1 AGC电路
因为输入信号幅度变化较大,为了使信号的幅度恒定且其幅度满足A/D采样的范围(高位为2 V~3 V),因此此设计中加入AGC电路。本设计中的AGC电路采用AD603型线性增益放大器[3]。
2.2 ADC电路
为保证ADC输入动态范围的要求和对特定干扰的抑制,信号首先需要预处理。根据采样定理,输入ADC的信号必须小于采样频率的1/2。ADC是完成从模拟到数字转换的关键环节,它的精度和速度直接决定了频谱分析仪的性能,所以ADC应尽量选用精度和速度都比较高的芯片[4]。系统采用WM8731芯片实现ADC,该芯片采用Sigma-delta ADC方式,通过采样和数字滤波技术实现低频信号的高分辨率转换和含有音频信号的低失真转换。
2.3 LCD显示模块
本系统直接定义NiosⅡ控制LCD液晶显示模块,利用FPGA中的PIO接口模拟LCD的接口电路。外围电路上选用320×240液晶显示模块,选用SEDl335作为液晶模块的控制器。
3 FFT/DFT信号处理模块的实现
3.1 FIFO模块
AD采样的数据不能立即送到Nios CPU中进行处理,因为CPU还有许多其他任务要做,所以只有等AD采集到一定数量的数据之后再读取采样数据,这样节省CPU的时间[5]。因此首先需设计一个FIFO来存储AD采样的数据,等FIFO中的数据满之后再将它们读取到CPU中进行处理。
FIFO是一种先进先出的数据缓存器,根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。本设计中采用了宽度为16 bit,深度为256的异步FIFO。
3.2 FFT/DFT处理模块
根据DFT算法将信号处理的模块分为乘累加器、平方器、加法器、开方器。
用再内建FPGA内部到16 bit双口RAM,可方便地使刷新数据和显示读出数据同时进行,而不产生逻辑冲突,同时也保留了结果的精度,其FPGA实现模块连接图如图2所示。
4 软件设计方案
控制系统的主程序采用C语言和汇编语言编写,程序分为下列几个部分:采样数据处理、FFT转换、标准参数设定、操作界面和频谱显示。
软件流程图如图3所示。
5 实验的结果与分析
给频谱分析仪输入峰-峰值为2 V、频率为100 Hz的方波信号,其信号处理结果见图4。从图4看出输出的方波频谱图只有奇次谐波,没有偶次谐波,而且此方波的基波、三次谐波、五次谐波和七次谐波的幅值满足1、1/3、1/5、1/7的理论数值,这与方波理论频谱基本相同[6],表1为其测量值与理论值的对比结果分析。
通过比对可以验证分析仪的LCD显示的频谱图形与其输入信号的理论频谱数值基本一致,谱线位置准确,幅度值与理论误差较小,该频谱分析仪较好地完成了测量信号频谱的要求,达到了预期设计的要求。
该设计在分析和利用Nios II软核处理器和频谱分析仪理论的基础上,完成仪器硬件和软件部分的设计。分析仪采用周期图法进行频谱分析,这样可以保证测试结果较高的分辨率和频率准确性;其中FFT运算模块采用全硬件级联结构,不仅有效满足了仪器对于信号处理实时性的要求,同时也节省了硬件资源;本设计可重构性好,在多种不同的应用领域,可根据实际需要对模块进行替换升级.选择高性能AD和大逻辑资源的FPGA等可以使性能得到大幅度提升;实现了片上设计,降低了系统的成本,实现了高集成度和可靠度。