数字频谱分析仪设计论文

更新时间:2023-11-07 10:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

东华理工大学毕业设计

论文题目姓名学号班级年级专业学

院指导教师完成时间

科 生 毕 业 论 设 计

: 数字频谱分析仪

: : : :

机械与电子工程学院

: :

东华理工大学毕业设计

作 者 声 明

本人以信誉郑重声明:所呈交的学位毕业设计(论文),是本人在指导教师指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。文中引用他人的文献、数据、图件、资料均已明确标注出,不包含他人成果及为获得东华理工大学或其他教育机构的学位或证书而使用过的材料。对本设计(论文)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本毕业设计(论文)引起的法律结果完全由本人承担。

本毕业设计(论文)成果归东华理工大学所有。 特此声明。

毕业设计(论文)作者(签字):

签字日期: 年 月 日

本人声明:该学位论文是本人指导学生完成的研究成果,已经审阅过论文的全部内容,并能够保证题目、关键词、摘要部分中英文内容的一致性和准确性。

学位论文指导教师签名:

年 月 日

东华理工大学毕业设计

数字频谱分析仪

Digital Spectrum Analyzer

东华理工大学毕业设计 摘要

摘 要

频谱分析仪是一种测量无线通信信号的常用工具,它对从事电子产品研发、生产以及检验扮演中重要的角色。在本文中将介绍一种基于快速傅里叶变换算法(FFT)的数字式频谱分析仪。

离散傅里叶变换DFT是一种将信号从时域变换成频域的变换,快速傅里叶变换FFT是与离散傅里叶变换相同的一种变换,是一种快速有效地减少DFT计算次数的算法,可以很明显地减少运算量,很大地提升DFT运算速度,运算的时间缩短了1到2个数量级,从而使DFT变换的应用更加快速普遍。FFT是数字信号处理中最基本的运算,已经普遍应用到数字频谱分析仪设备中,像电子医学通讯之类的,以及在雷达定位和天文学研究等领域。现在基于快速傅里叶变换( FFT) 的数字式频谱分析仪主要是通过傅里叶变换运算将被测实时信号分解成独自分立的频率分量,这样的效果不仅可以满足前期频谱分析仪的功能 ,而且在原理上这种频谱分析仪运用了数字的方法直接由模数转换器( ADC) 对输入信号取样, 再经FFT算法处理后获得频谱分布图进行LCD显示。

本文介绍了FFT的算法原理,以及如何利用单片机通过FFT算法来实现频谱。单片机的优点是较高的性价比和较低的成本,其缺点是无法很好的解决在FFT运算中运算速度及RAM容量的问题。本文采用高速单片机为核心,分别采用浮点和定点方法实现了FFT运算,并采用液晶显示输出结果。

采用单片机实现FFT的方法,对于如何在便携式、小型化、低价位的电子产品中嵌入复杂的算法设计具有重要的应用价值和市场前景,必将得到较为广泛的应用。 关键词:离散傅里叶变换(DFT); 快速傅立叶变换(FFT); 单片机; 频谱分析仪

东华理工大学毕业设计 ABSTRACT

ABSTRACT

Spectrum analyzer is commonly used tools in a wireless communication signal measurements, it engaged in electronic product development, production and testing plays an important role. In this article introduces a fast Fourier transform algorithm based on digital spectrum analyzer.

The discrete Fourier transform DFT is a signal from the time domain into the frequency domain transform, fast Fourier transform FFT is a kind oftransformation and the discrete Fourier transform, is an effective way to reducethe number of DFT calculation algorithm, can obviously reduce the amount of computation, greatly enhance the speed of DFT, operation time by one to two orders of magnitude, so that the application of DFT transform more quickly and widely.FFT is the most basic operations in digital signal processing, has been widely applied to the equipment of the digital spectrum analyzer, such as electronicmedical communication and so on, as well as in radar positioning and astronomy.Now the digital spectrum analyzer based on fast Fourier transform (FFT) is mainly measured by Fourier transform real-time signal operation will be broken down into discrete frequency components alone, this effect is not only to meet the pre-spectrum analyzer function, and in principle, use of this spectrum analyzer method directly from the analog-digital (ADC) of the input signal is sampled, and then get processed by the FFT algorithm spectral distribution diagram LCD display.

This paper introduces the principle of FFT algorithm, and how to use the FFT algorithm to realize spectrum. The chip is high performance and low cost, it isunable to solve the speed and capacity of RAM in FFT operation problem very well. This paper adopts high-speed microcontroller as the core, using floating-point and fixed-point method to realize the FFT operation, and the use of liquid crystal display output.

The methods is using MCU to realize FFT, which has important application value and market prospect for how to embed in the portable electronic product, miniaturization, low price of algorithm design in complex, will be widely used. Key words : Discrete Fourier Transform (DFT); Fast Fourier Transform(FFT);MCU; spectrum analyzer

东华理工大学毕业设计 理论分析

图3-2 信号的时域波形

图3-3 FFT频谱分析结果

由图3-3分析可知,当频率在f1和f2的时候,波形信号才显著,而其它频率几乎

10

东华理工大学毕业设计 理论分析

没有显著波动,波形不明显,那是因为由高斯白噪声的干扰所导致的。由此可以说明FFT算法是合理的。

3.3 波形中心频率的判断

由于等幅波形频率是比较单一的,其频谱结构也只有一条频谱线。如果调制信号为单音余弦波f(t)=cos(ωt),则AM调幅波的表达式为:

V(t)?Vcm[1?macos(wt)cos(wct)]

式中:Ma为调制指数;Vcm为载波振幅。由于单音调频信号的频谱比较复杂,可设调制信号频率为fΩ;调制频偏为△f,则信号带宽近似为2△f;谱线间间隔即为调制信号频率,对于各个谱线的高度可以由贝塞尔函数得到。△f反映的是调频波所占的带宽,表示△f越大,占用的带宽也就越大,但是每根谱线之间的间隔是相等的。 在基于FFT的频谱分析仪中,定义信号的频率的分辨率为:RBW=1/NT=Fs/N 而T表示抽样周期,Fs为采样率;N为FFT采样点数。由于Fs是ADC的采样频率,是常数,所以,如果要减小分辨率,就应该增加N,但是如果去增加N的话,就会使运算时间增加,而且存储器的容量也会增加,这样就会使N的增加受到约束,一般规定,N应该不能够超过64000。

由频谱分辨率可以看出.通带宽度如果越小就越好。由图3-4可知,频率对每根谱线的距离都是有影响的,如果调制信号频率fΩ越小,那么频谱线的间隔也会越小,那么频谱就看起来越来越密集;反之调制信号频率fΩ越大,频谱线间隔就会越大,频谱看起来则越分散。但是频谱占用的带宽距离是一样的。

中心频率的判定:它是对不同输入波形的频谱特性进行了特定的识别之后,来找出一个意义上最大的频率和幅值的点,然后在剩余的各个点中找出第2个意义上最大的幅值和它的频率,此时测出(f1+f2)/2对应点的幅值,并与f1和f2的幅值进行比较,如果(f1+f2)/2的幅值相对较大,则(f1+f2)/2是它的中心频率,并且该波为调频波;反之,f1是它的中心频率,并且该波为调幅波,也可称为等幅波。

图3-4不同频率时的频谱图

11

东华理工大学毕业设计 理论分析

3.4 波形显示信息

输入波形 图3-5 输入信号与频谱图

频谱图

由3-5分析可知,由于FFT计算的是输入信号中个正弦信号的分量,因此,若输入一个矩形波或者三角波,由于不是标准的正弦,所以又非常多的谐波,各个谐波的比例不一样,也会在频谱图上显示出来,若输入一个正弦信号,虽然信号源有误差,但该信号的绝大部分由与输入信号相同频率的正弦信号,因此谐波会非常的少。 已知一个随时间作正弦变化的信号f(t)=Asin2πft,其幅度为A ,频率为f,周期T=1/f ,那么我们就可以画出输入的波形图。如果把这个信号用幅度来作为频率表示的函数,就会得到频谱图的波形。这个图形要比输入波形简单许多,一目了然就可以看出这个信号中包括一个频率、幅度为A的正弦波。这就是信号的频域表示法,即信号的频谱。

12

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

第4章 基于FFT算法的硬件与软件设计的实现

4.1 FFT算法实现的硬件平台选择

随着单片机功能的快速发展,在单片机上对FFT算法的运算变的更加的现实完美,本文选用的是51内核系列的产品由Cygnal公司推出的C8051F020单片机,它的成本对于其他设备来说相对较低,其中的C8051F020单片机含有64kB片内Flash程序存储器,4352B的RAM、8个I/O端口共64根I/O口线、一个12位A/D转换器和一个8位A/D转换器以及一个双12位D/A转换器、2个比较器、5个16位通用定时器、5个捕捉/比较模块的可编程计数/定时器阵列、看门狗定时器、VDD监视器和温度传感器等部分。和以往的51系列单片机相比较,C8051F020新增添了很多功能同时它的速度可可靠性也有了较大的提升。在FFT算法中要用到该单片机的功能有:

1. 8位A/D转化器都带采样保持。

2. 有2个可编程的计数/定时器,设计中用到了计数器1来控制信号的采样周期。 3. 指令系统较为丰富。

4. 4352B的RAM和专用的寄存器,解决了累加器不足的问题,一定程度的提升了编程效率,从而减少运行指令的时间。

5. 与输出设备相连的8个I/O。

在这里选择LCD(128*64)显示屏来显示频谱,它是通过图形点阵来实现显示的,它在功能上产生的功耗比较低、而且所占用的体积比较小、它所显示屏幕信息内容比较广、具有模块化,数字化说我特征另外它的接口电路也是比较简单的。该液晶模块具有64点行,每行128个点列,能够显示图形和字符也可以比较复杂,特别适合在低功耗设备应用中应用,它的主要原理是通过电流来激起液晶分子对显示屏的碰撞并产生点,线,面并通过背部的LED来照亮屏幕并形成画面,显示屏具有128*64的分辨率。能够显示8*4行或者16*16点阵的字。

4.2 FFT算法实现的硬件平台的构建

FFT信号的分析系统从结构上可以分成信号输入,信号处理和信号输出三个部分。信号输入主要由ADC将输入的模拟信号并将其转换成数字信号,处理部分是对数字信号进行有效的FFT处理。输出部分是用输出设备LCD显示其结果。这里用到的C8051F020单片机它本身就包括了输入部分和处理部分,完成数据的采集是片内的8位A/D转换器以及单片机本身和外存储器对数字信号的运算、存储和控制在进行FFT运算的时候。系统结构框架如下图4-1所示。

13

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

硬件和A/D转 输入 软件调换及数 波形 试 据存储 C8051F020 控制器 图4-1所示的结构可以完成以下功能:

处理器进行FFT运算 LCD显示 图4-1 硬件系统框架 1. 定时器对A/D转换器的采样周期进行控制。 2.A/D转换器对数据的存储和输出。 3.运算器进行FFT运算。 4. LCD显示频谱。

经过单片机FFT的运算后在LCD(128*64)显示器上显示输出频谱图。在LCD显示模块中,I/O端口比较多,而且并行数据传输方式对信号的控制比较简单,并且易于设计和实现,在显示动态图时效果也较好,对此用8位并行显示。

其I/O口设置为:P2.7为DI,P2.6为RW,P2.5为E,P2.4为PSB; P3为DB0~DB7;引脚设置为:1---VSS---GND,2---VDD---+5V,3---VO/VDD/NC---悬空,4---D/I---DI(P8)/CS(S),5---R/W---RW(P8)/SID(S),7到14---DB0到DB7---,15 ---PSB---高电平(8位并行方式P8),16---NC---悬空,17---RST---悬空,18---VEE/NC---悬空,19---A---+5V,20---K---GND。

4.3 混频信号电路设计

本设计是采用C8051F020单片机的DAC0832数模转换器形成的电路系统并通用单片机编程来实现信号波形的产生,如下图4-2所示,另外添加了一个低通滤波器,使得生成波形更纯净清晰。该电路设计主要是由单片机控制,将程序写进单片机,再由数模转换器控它的电压信号,由于它直接输出的是电流信号,所以还外接两个运算放大器将电流转换成电压。优点是比较方便,功能多样,可产生任意波形,并且频率也容易调节,频率能达到1MHZ以上。它的性能好,而且在低频范围内比较稳定、体积小、容易操作,而且低功耗。

14

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

X(p)=a+jb

(4.2) X(q)=d+je (2)FFT运算流程图

蝶形运算对实现FFT运算是至关重要的,也是它的核心部分。蝶形运算是分多级来进行的;每级的运是根据旋转因子指数大小来进行的;如果指数大小相同时运算就可以从上到下依次进行。例如N?2M个点的FFT它表示有M级的运算,假设从左往右

依次的运算级数用L来表示(L=1,2,…,M )。且在第L级的不同指数的旋转因子个数为B?2L?1,如果按由上至下的顺序用J等于0到B-1来代替这些不同指数旋转因子。即第J个旋转因子的指数为P?2M?LJ,旋转因子指数是从P的第一个蝶的第一级节点标号为k,而在该级中指数相同的蝶共有2M?L个,且每两个蝶相距2L,那么对于旋转因子指数是P的最后一个蝶的第一节点标号k应为:(2M?L?1)?2L?J成4.3式所示:

AL(k)?AL?1(k)?WNPAL?1(k?B) (4.3) AL(k?B)?AL?1(k)?WNPAL?1(k?B)?N?2L?J,对于相

同级中各蝶的两个输入节点相距B点。如果按原位来计算蝶形运算,那么它可以表示

从上面所说的运算可以知道,对DIT-FFT运算可以使用如下运算方法。这里先要将数据读入,并根据它的长度来确定运算级数M,由此可得运算的总点数N?2M是多少,如果当它点数不够时即补0,接着对读入数据进行倒序操作。然后从第1级开始往后逐级来进行蝶形运算,运算级数为M。假如进行到第L级的运算时,我们要先算出第L级不同旋转因子的个数B?2L?1(这里B表示在L级中进行蝶形运算的两个输入数据间的间距),再依次让J从0到B-1按序计算。而每个J所对应的旋转因子指数是P?2M?LJ,如果旋转因子指数相同的话,那么蝶即从上往下依次进行运算,对于每个蝶的第一节点标号k都是从J开始计算的,把2L作为步长,计算到N?2L?J为止。由于蝶形运算也有两个输出数据,并且都需要用到本级所涉及的两个输入,因此只有在第二次输出完成时才能将第一次输出的数据存入到第二次的输入数据地址中。所以利用三重循环程序即可实现数据的倒序运算。整个运算流程如图4-8所示。

20

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

开始 读入x(n),N,M 输入序列倒序 L=1,M B=2L-1 J=0,B-1 P=2M-LJ K=J,N-1,2 LT?A(k)?A(k?B)WNP A(k?B)?A(k)?A(k?B)WNP A(k)?T

输出 图4-8 DIT-FFT运算程序框图 (3)序列倒序

将序列的输入位序的高位与低位进行互相调换,即是倒序的输入方法,它是为了确保运算输出的X(k)是按顺序进行的。当输入点数是N,并用M位二进制数来表示N?2M的x(n)的顺序数,那么进行位序颠倒只要把顺序数的二进制位倒置就可以,依据这一规律倒序数就很容易产生在硬件电路和程序语言中。但是在运算中如果直接倒置二进制的位数是不正确的,当用更高级语言来实现倒序时,务必要找到十进制规律来产

21

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

生倒序。所以用I来代表十进制的顺序数,用IB来代表相对应的二进制数。用J来代表十进制的倒序数,用JB来代表相对应的二进制数。如果进行IB的位倒置,那么将变成JB,当I加1,就表示IB的最低位加1并且最低位加1如果是2时即要向高位进1,也等于是JB最高位加1并且遇到2时要向低位进1。J的变化会通过JB的改变而来,有两种情况:当JB的最高位为0(J?N/2)时,那么直接通过加1(J?J?N/2)就可以得到下一个倒序值;当JB的最高位为1(J?N/2)时,先把最高位变成0(J?J?N/2),接着在次高位加1(J?J?N/4)。但在这个时候,还是要判断0、1值,假如是0 (J?N/4)的时候,就可以直接加1(J?J?N/4),如果不是0 (J?N/4)的时候就要先把次高位变为0(J?J?N/4),接着判断下一位。照此类推,直到完成最高位加1不为2时,且不再向右推进时结束。通过这种算法,就可以按照顺序数I的递增顺序依次求出每一个相对应的倒序数J。数据倒序的原址进行运算可以空留很多内存,即如果I ≠ J就需要交换数据,否则就不需要交换。另外,实现数据的倒序操作不仅可以用对I

数据转换

Y I

J=0 T?A(I)

A(I)?A(J)

A(J)?T

K=N/2 算数序数

J?J?K J?K? Y K?K/2 N

图4-9 数据倒序程序框图

J?J?K 22

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

4.6.1 浮点FFT算法的软件实现 浮点FFT运算流程图如图4-10所示。

结束 平方根计算幅度 开始 数据存储 数据倒序 进行N点FFT 图4-10 浮点FFT运算流程图

下面介绍一下浮点FFT算法编程实现。当输入数据为浮点型时,FFT运算的软件实现程序总体分成四个子程序,分别是数据存储程序,数据倒序程序,进行N点FFT程序和平方根计算幅度程序。根据上节的概述,四个子程序的实现分别如下 (1)数据存储程序:把输入数据中的实部数组和虚部数组分别存放在单片机的 外部存储器中,输出的幅度数组同时也存放到单片机的外部储存器中。程序如下: float xdata dataR[N] _at_ FFT_DATA_REAL; float xdata dataI[N] _at_ FFT_DATA_IMAG; float xdata dataA[N] _at_ FFT_DATA_AMP;

(2)数据倒序程序:根据上节对数据倒序输入的介绍可知程序为: for(i = 1; i < N - 2; i++)

{ if(i < j)

{ temp = dataR[i]; } k = N / 2; while(1) { if(j < k)

dataR[i] = dataR[j]; dataR[j] = temp;

23

东华理工大学毕业设计 基于FFT算法的硬件与软件设计的实现

}

}

{ j = j + k; } else

{ j = j - k; }

k = k / 2; break;

(3).进行N点FFT程序:根据上节对蝶形运算的实现的基础,当为定点时其中实部Xr’表示上一级的Xr,虚部Xi’表示上一级的Xi。

设: T?XL?1(J?B)WNp?TR?jTI 下标R表示实部

'(J)?jXI'(J) 下标I表示虚部 XL?1(J)?XR X’R(J)代表上一次的实数值

'XL?1(J?B)?XR(J?B)?jXI'(J?B)

即可推得:{

Tr?Xr’(J?B)cos(2?PI?pN)?Xi’(J?B)sin(2?PI?pN)Ti?Xi’(J?B)cos(2?PI?pN)-Xi’(J?B)sin(2?PI?pN)

(J)-Tr,进而得:Xr?J??Xr’(J)?Tr,Xi?J??Xi’(J)?Ti,Xr?J?B??Xr’Xi?J?B??Xi’(J)-Ti。

由于N即2P的范围,所以只需求出0--N/2,幅频对应的位置就可以根据N*(1/2PI)=(N/25)*(1/x)求出,得到输入频率x=2PI/25,对应的幅频值的波形位置为N/25。因为2PI对应点的位置为128, PI对应点的位置为64) 128对应N(总的采样点数);25对应被测信号的一个完整周期在采样频率下的采样点数。故此128/25对应x(表示被测信号有x个完整的周期,同时x也对应FFT后数组的下标)

其中程序如下: for(L=1; L<=M;L++)

{ B = 1;

i = L-1; while(i) {B = B * 2;i--; }

24

本文来源:https://www.bwwdw.com/article/ib72.html

Top