基于LabVIEW的虚拟频谱分析仪的设计与实现
扫描二维码
随时随地手机看文章
O 引言
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化的编程语言,集成了满足GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能,还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。利用LabVIEW可以方便地建立各种虚拟仪器。
频谱分析仪是对无线电信号进行测量的必备手段,是从事电子产品研发、生产、检验的常用工具,应用十分广泛,被称为工程师的射频万用表。传统的频谱分析仪的前端电路是一定带宽内可调谐的接收机,输入信号经变频器变频后由低通滤器输出。滤波输出信号作为垂直分量,频率作为水平分量,在示波器屏幕上绘出坐标图,就是输入信号的频谱图。由于变频器可以达到很宽的频率,例如30Hz-30GHz,与外部混频器配合,可扩展到100GHz以上,所以频潜分析仪是频率覆盖最宽的测量仪器之一,无论测量连续信号或调制信号,频谱分析仪都是很理想的测量工具。但是传统的频谱分析仪只能测量频率的幅度,缺少相位信息,因此属于标量仪器,而且体积庞大。利用LabVIEW强大的虚拟仪器开发功能,可实现基于快速傅里叶变换(FFT)的现代频谱分析仪功能,采用数字方法直接由模拟/数字转换器(ADC)对输入信号取样,再经FFT处理后获得频谱图,可以解决传统频谱分析仪价格昂贵,携带不便等缺点。
1 虚拟频谱分析仪总体设计方案
虚拟频谱分析仪由数据采集卡、计算机和在其上运行的用LabVIEW开发的应用软件组成,如图1所示。
虚拟频谱分析仪利用数据采集卡的模拟输入和模拟输出两个功能,用模拟输出功能产生所需的激励信号,并将其加到被测网络上,再用两个模拟输入通道将激励信号和网络输出端的响应信号同时采集到计算机中,经处理后,构成幅频和相频特性曲线,并显示在计算机屏幕上,最后对模拟生成的信号进行分析,在计算机屏幕上输出模拟信号的幅频/相频特性。
2 虚拟频谱分析仪组成及功能
2.1 虚拟仪器和频谱分析仪组成
本文设计的虚拟频谱分析仪由周期性信号发生器、滤波器以及幅频/相频特性、频谱分析结果三个子模块组成。信号发生器子模块生成两路模拟输入信号,一路是可调频率、相位和振幅的正弦信号,另一路是指可调频率、相位和振幅的余弦信号,最后利用信号合成器把两路信号混合起来作为生成的2路模拟信号;频谱分析和滤波器子模块利用LabVIEW强大的数字信号处理功能,对这组数据进行滤波、加窗、FFT运算处理,得到信号的实部谱和虚部谱,最重要的是得到信号的幅频特性曲线和相频特性曲线;在频谱分析的结果子模块中,对生成信号的频谱进行分析,并将均方根值、一个周期内的信号均值等参数在系统退出时保存到文本文件中。其中,在滤波设置中可以控制滤波的通过方式以及截止频率,最后显示出频谱分析结果,系统退出时提示保存当前数据到文本文件。
虚拟频谱分析仪前面板分为3部分:周期性信号发生器、周期性信号滤波器及幅频/相频特性和周期性信号频谱分析结果,如图2所示。图中显示的是周期性信号发生器的界面,图中正弦波和余弦波信号可以通过鼠标拖拽和旋转按钮来改变信号的频率、振幅及相位。当拖拽的时候可以发现下方的"2路原始模拟信号波形"会发生变化,而且横坐标轴的最大值也会发生变化。程序内部通过调用后面介绍的"XScaleControl.VI"就可以实现这个功能;对于"周期性信号滤波器及幅频/相频特性"和"周期性信号频谱分析结果"这两个功能模块界面限于篇幅不再赘述。
虚拟频谱分析仪后面板由五个子模块组成:波形生成模块,波形分析模块,控制X轴范围,滤波器以及幅频/相频特性和数据保存模块,如图3所示。
2.2 虚拟频谱分析仪子模块的设计
(1)波形生成子模块
要进行频谱分析,首先得生成模拟信号,本文采取系统的两个子模块:Triangle waveform.VI和Sinewaveform.VI生成2路模拟输入信号,为了实现模拟信号的频率、相位和幅度的调节增加了几个控制输入,引脚图4和图5所示。
在图4和图5中,输入引脚和输出引脚完全相同,"offset"是指波形的偏移量,一般不进行设置;"resetsignal"是一个布尔型的输入控制,若加载为True时则可以复位波形,若为False则不对波形进行复位;"frequency"是指生成信号的频率;"amplitude"是指想要生成信号的振幅;"phase"是指生成信号的相位;"error in"和"error out"是指当程序有异常发生时的输入和输出;"sampling info"是指要生成信号的采样率,缺省设定为1000,即一秒采样1000个点;"Duty Cycle"即占空比,是指一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。
(2)控制X轴范围子模块
子模块XscaleControl.VI用于实现动态控制波形X轴范围,共有4个输入引脚,其中3个是引用型reference输入,一个是常数型输入引脚。随着输入信号频率的增大,若输出波形的X轴范围固定不变为1的话,那么波形显示太密,导致根本看不清楚图形,故需要当频率增大时,波形x轴范围相对缩小,让波形显示更加清楚。其中三个引用型输入引脚分别指代正弦波频率、三角波频率和波形控件WaveformGraph三个原控件的属性节点(propertynode)。内部工作原理是当正弦波频率和三角波形频率二者中有任一个大于10HZ时就按照二者频率之中较大的那个频率的倒数的数值来当作波形控件WaveformGraph的横坐标轴的最大值,实现了当模拟信号频率增大时波形依然清晰的功能,从而实现了动态地控制波形控件x轴的范围。
(3)波形分析子模块
LabVIEW提供了丰富的波形频谱分析工具,最典型的就是Amplitude and Level Measurement.VI,它的存放路径是后面板中Functions->Signal Analysis,参数对话框中共分为4个区域,分别是要求进行的幅值特征值求取的项目(Amplitude Measurements)、当前信号幅值求取的结果(Results)、输入信号预览窗口(Input Signal)和加窗后信号预览窗口(Result Signal),其中最重要的是幅值特征值求取项目的设置,需要求取哪个特征值,就在它前面划勾,Amplitude and Level Measurement.VI自动在其图标中添加这一输出端口。频谱分析Amplitudeand Level Measurement.VI功能引脚如图7所示。
该模块有3个输入引脚和8个输出引脚。3个输入引脚分别如下:"Restart Averaging"引脚标识是否重启选定的平均处理过程,缺省为False;"Signals"引脚是输入要分析的信号;"error in(no error)"引脚是对在执行到这个VI之前若是发生错误条件的描述;8个输出引脚叙述如下:"RMS"引脚指信号均方根值;"Positive Peak"引脚指正向峰值;"error out"引脚指子VI执行错误时的输出信息;"Cycle Average"引脚指一个周期的平均值;"Cycle RMS"引脚指一个周期的均方根值;"Mean(DC)"引脚指信号均值;"Negative Peak"引脚指负向峰值;"Peak to Peak"引脚指峰一峰值,即输入信号波形的正向和负向的最大振幅值。
把模拟生成的2路信号作为此VI的输入引脚"Signals",就可以对生成的信号进行分析,从而输出该信号的一些参数信息,如信号均值、峰值和一个周期的均方根值等。
另外一个比较典型的信号分析VI就是FFTSpectrum(Real-Im).VI,该VI可以对输入的时域信号计算出快速傅立叶变换频谱,并分别返回波形的实部谱和虚部谱,在实际应用中进行实部谱和虚部谱的分析也很有意义,傅立叶频谱变换FFT Spectrum.VI功能引脚如图8所示。
该模块共有10个引脚。其中"restart averaging(F)"引脚和上面提到的功能一样,用来标识是否重启选定的平均处理过程;"time signals"引脚标识输入的时域信号;"window"引脚指加窗设置,加窗方式包括可以有多种不同的方式,如Uniform、Hanning、Hamming以及Blackman等;"error in(noerror)"引脚和"error out"引脚标识执行此VI有错误发生时的输入和输出信息;"averaging parameters"引脚指输入波形信号的平均参数;"real parts"引脚标识波形的实部谱,输出可以是用graph图像直观描述的方式也可以是一堆参数的描述形式;"imaginary parts"引脚指输入波形的虚部谱,描述方式同实部谱;其余两个引脚"averaging done"引脚和"averages completed"引脚一般不用,都是对输入波形的一些不常用的参数的叙述。
(4)滤波器以及幅频/相频特性子模块
滤波器子模块处于Functions->Signal Analysis子模板中,它的设置分为4个区域,分别为滤波器参数设置(Filtering Type)、两个预览窗口和预览模式设定区域(VIew Mode)。滤波器种类有四种,分别为高通、低通、带通以及平滑滤波。前三种都容易理解,而平滑滤波主要用于对信号进行局部平均,消除周期性噪声或白噪声。低通滤波器子模块Filter.VI的功能引脚如图9所示。
带通滤波器子模块BandFilter.VI的功能引脚如图10所示。顾名思义,带通滤波器的意思就是频率在某个范围内的波形可以通过,它比图9中的低通滤波器就多了一个引脚Upper Cut-Off。
(5)数据保存子模块
数据保存子模块即SaveData.VI功能引脚如图11所示。它把想要保存的数据处理成统一的格式,在系统退出时保存到文本文件中。
其中,只有两个引脚是输出端,即"string"和"系统日期和时间",分别代表格式化输出的字符串和系统当期日期和时间。输出端"string"在系统自动存储文件中的一条记录格式如下:
"周期平均值:-0.258667正峰值:2.845332信号均方根值:2.845332 3dB带宽:392.968235.
2007年8月21日12:21:32"。其中,"周期平均值"表示波形信号在一个周期内的信号平均值;"正峰值"表示波形信号达到的最大幅度值;"信号均方根值"表示波形信号按均方根公式求出的值;"3dB带宽"表示通过子VI求出的带宽幅度值;最后一个代表的是存储该条记录的日期和时间。其中主要用到LabVIEW提供的Format函数,通过把多个中文字符串和一个数字通过Fromat函数格式化到同一个字符串"string"中输出,从而为系统退出时保存数据做准备,因为若是把保存数据放到while循环里,则会因一直提示保存数据而导致程序死循环。
图11中,有六个输入端引脚,其中"RMS"引脚表示信号的周期平均值,"Positive Peak"引脚表示正向最大峰值,"CycleAverage"引脚表示信号均方根值,"detected frequencies"引脚是指检测到的频率,而"3db带宽"引脚和"上限带宽"引脚是通过嵌套的—个子Ⅵ即Compute 3db bandwidth.VI计算出来的。
3 结语
基于LabVIEW编程环境下的虚拟频谱分析仪主要实现了时域分析和频域分析两个功能。信号的时域分析主要是测量测试信号经滤波处理后的特征值,这些特征值以一个数值表示信号的某些时域特征,是对测试信号最简单直观的时域描述。将测试信号采集到计算机后,在测试VI中进行信号特征值处理,并在测试VI前面板上直观地表示出信号的特征值,可以给测试VI的使用者提供一个了解测试信号变化的快速途径。信号的特征值分为幅值特征值、时间特征值和相位特征值,本文对幅值特征值的分析进行了设计。
信号的频域分析就是根据信号的频域描述来估计和分析信号的组成和特征量。也就是研究信号的频率结构,即求取其分量的幅值、相位按频率的分布规律,并建立以频率为横轴的各种谱。对于周期信号可将其展开为傅立叶系数,其频谱具有离散性、谐波性和收敛性;对于非周期信号可用频谱密度函数分析其频率构成,其频谱具有连续性。
频域分析包括频谱分析、功率谱分析、相干函数分析以及频率响应函数分析。本文实现了频谱分析,即信号的幅频特性和相频特性。