基于FFT的音频信号分析仪报告
用FFT对信号做频谱分析报告

备注:按照要求独立完成实验容。
实验五 用FFT 对信号做频谱分析一、实验目的学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT 。
二、实验原理用FFT 对信号作频分析是学习数字信号处理的重要容,经常需要进行分析的信号是模拟信号的时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。
频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是2π/N ,因此要求2π/N 小于等于D 。
可以根据此式选择FFT 的变换区间N 。
误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱,因此N 要适当选择大一些。
三、实验容(包括代码与产生的图形及分析讨论)1. 对以下序列进行谱分析:14()()x n R n =选择FFT的变换区间N为8和16 两种情况进行频谱分析。
分别打印其幅频特性曲线, 并进行对比、分析和讨论。
function mstem(Xk)%mstem(Xk)绘制频域采样序列向量Xk的幅频特性图M=length(Xk);k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值)stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度');axis([0,2,0,1.2*max(abs(Xk))]);x1n=[ones(1,4)]; %产生序列向量x1(n)=R4(n)X1k8=fft(x1n,8); %计算x1n的8点DFTX1k16=fft(x1n,16); %计算x1n的16点DFT%以下绘制幅频特性曲线subplot(3,2,1);mstem(X1k8); %绘制8点DFT的幅频特性图title('(1a) 8点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,2);mstem(X1k16); %绘制16点DFT的幅频特性图title('(1b)16点DFT[x_1(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X1k16))])x2n=[1 2 3 4 4 3 2 1 zeros(1,50)]; %产生序列向量x1(n)=R4(n) X2k8=fft(x2n,8); %计算x1n的8点DFTX2k16=fft(x2n,16); %计算x1n的16点DFT%以下绘制幅频特性曲线subplot(3,2,3);mstem(X2k8); %绘制8点DFT的幅频特性图title('(2a) 8点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X2k8))])subplot(3,2,4);mstem(X2k16); %绘制16点DFT的幅频特性图title('(2b)16点DFT[x_2(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X2k16))])x3n=[4 3 2 1 1 2 3 4 zeros(1,50)]; %产生序列向量x1(n)=R4(n) X3k8=fft(x3n,8); %计算x1n的8点DFTX3k16=fft(x3n,16); %计算x1n的16点DFT%以下绘制幅频特性曲线subplot(3,2,5);mstem(X3k8); %绘制8点DFT的幅频特性图title('(3a) 8点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');subplot(3,2,6);mstem(X3k16); %绘制16点DFT的幅频特性图title('(3b)16点DFT[x_3(n)]');xlabel('ω/π');ylabel('幅度');axis([0,2,0,1.2*max(abs(X3k16))])分析:图(1a)和(1b)说明x1(n)=R4(n)的8点DFT和16点DFT分别是x1(n)的频谱函数的8点和16点采样因为x3(n)=x2((n+3))8R8(n),所以,x3(n)与x2(n)的8点DFT的模相等,如图(2a)和(2b ),但是当N=16时,x2(n )与 x3(n )不满足循环移位关系,模值不相等。
fft实验分析实验报告

fft实验分析实验报告FFT实验分析实验报告一、引言傅里叶变换(Fourier Transform)是一种重要的信号分析工具,它能够将一个信号分解成不同频率的成分。
快速傅里叶变换(Fast Fourier Transform,FFT)是一种高效的计算傅里叶变换的算法。
本实验旨在通过实际操作,探究FFT在信号分析中的应用。
二、实验设备与方法1. 实验设备:本实验使用的设备包括示波器、信号发生器和计算机。
2. 实验方法:(1)将信号发生器的输出接入示波器的输入端。
(2)调节信号发生器的参数,如频率、振幅等,产生不同的信号。
(3)通过示波器观察信号的波形,并记录相关数据。
(4)将示波器与计算机通过USB接口连接,将示波器上的数据传输到计算机上。
(5)使用计算机上的软件进行FFT分析,得到信号的频谱信息。
三、实验结果与分析1. 实验一:正弦波信号的FFT分析(1)设置信号发生器的频率为1000Hz,振幅为5V,产生一段正弦波信号。
(2)通过示波器观察信号的波形,并记录相关数据。
(3)将示波器上的数据传输到计算机上,进行FFT分析。
实验结果显示,正弦波信号的频谱图呈现出单个峰值,且峰值位于1000Hz处。
这说明FFT能够准确地分析出信号的频率成分,并将其可视化展示。
2. 实验二:方波信号的FFT分析(1)设置信号发生器的频率为500Hz,振幅为5V,产生一段方波信号。
(2)通过示波器观察信号的波形,并记录相关数据。
(3)将示波器上的数据传输到计算机上,进行FFT分析。
实验结果显示,方波信号的频谱图呈现出多个峰值,且峰值位于500Hz的倍数处。
这说明方波信号由多个频率成分叠加而成,FFT能够将其分解出来,并显示出各个频率成分的强度。
3. 实验三:复杂信号的FFT分析(1)设置信号发生器的频率为100Hz和200Hz,振幅分别为3V和5V,产生一段复杂信号。
(2)通过示波器观察信号的波形,并记录相关数据。
(3)将示波器上的数据传输到计算机上,进行FFT分析。
实验二 用FFT分析语音信号的频谱

实验二用FFT分析语音信号的频谱
一、实验目的
1、分析实际工程中一个语音信号的频谱。
2、掌握FFT反变换的意义。
二、实验内容
1、实际中通过一个语音信号进行采样,获得数字信号对频谱信号进行FFT进行
分析。
2、去除频谱中幅值小于1的系数进行反变换,重构原来语音进行对比分析。
3、
三、实验用设备仪器及材料
P4计算机MATLAB软件
四、实验原理
实验程序如下:
[x,f,n,o]=wavread(‘bird.wav’);
subplot(2,2,1);plot(x);title(‘原始语音信号’);
y=fft(x);subplot(2,2,2);plot(abs(y));title(‘FFT变换’);
y(abs(y)<1)=0;x=ifft(y);
subplot(2,2,3);plot(abs(y));title(‘去掉幅值小于1的FFT变换值’);
subplot(2,2,4);plot(real(x));title(‘重构语音信号’);
wavwrite(x,f,’bird1.wav’);
五、实验步骤和及方法
1、对一个语音进行FFT,画出其频谱。
2、去掉幅值小于1的系数,进行傅立叶变换。
3、给出一个语音信号,用MATLAB进行FFT分析。
六、实验报告要求
1、对FFT变换及IFFT有一定的认识。
2、了解数据压缩的意义。
3、画出语音信号时频图、及重构语音图。
基于FFT算法的音频频谱仪设计

基于FFT算法的音频频谱仪设计音频频谱仪是一种用于分析音频信号频谱特征的工具,能够显示音频信号在频域上的能量分布情况。
其中,FFT(快速傅立叶变换)算法是一种用于对连续时间域信号进行频谱分析的算法,通过将时域信号转换为频域信号,能够高效地进行频谱分析。
一、基本原理FFT算法的基本原理是将N点的离散时间序列转换为N/2个频率序列,从而实现时域信号到频域信号的转换。
其核心思想是将连续信号进行离散化处理,然后通过计算傅立叶系数来得到频域信号的能量分布情况。
具体而言,FFT算法将时域信号表示为由N个采样点组成的离散序列,然后将序列进行重排列、分解为偶数序列和奇数序列,并通过递归地进行分解和求解傅立叶系数,最终得到频域信号的能量分布。
二、设计要点1.采集音频信号:通过音频输入设备(如麦克风)采集音频信号,并将其转换为数字信号。
2.分帧:将连续的音频信号分成多个帧,每帧包含若干个采样点。
常用的帧长度为1024、2048等。
3.加窗:对每帧采样点进行加窗处理,常用的窗函数有汉宁窗、汉明窗等。
窗函数的作用是减小边界效应,使得频谱分析更加准确。
4. 快速傅立叶变换:对加窗后的每帧信号应用FFT算法进行频谱分析,得到每帧的频域信号。
常用的FFT算法有Cooley-Tukey算法等。
5.平滑处理:对每帧的频谱信号进行平滑处理,以减小噪声对频谱分析的影响。
常用的平滑算法有加权平均法、中值滤波法等。
6.显示频谱:将每帧的频谱信号按照频率进行展示,通常使用图表或图像显示方式。
横轴表示频率,纵轴表示能量。
三、设计步骤1.初始化:初始化音频输入设备,并设置采样率、帧长度等参数。
2.采集音频信号:使用音频输入设备采集音频信号,并将其转换为数字信号。
3.分帧:将采集到的音频信号分成多个帧,每帧包含若干个采样点。
4.加窗:对每帧信号进行加窗处理,选择合适的窗函数。
5.快速傅立叶变换:对加窗后的每帧信号应用FFT算法进行频谱分析,得到每帧的频域信号。
实验三用FFT对信号作频谱分析_实验报告

实验三用FFT对信号作频谱分析_实验报告一、实验目的1.学习使用FFT(快速傅里叶变换)对信号进行频谱分析;2.掌握频谱分析的基本原理和方法;3.熟悉使用MATLAB进行频谱分析的操作。
二、实验原理FFT是一种基于傅里叶变换的算法,可以将时域信号转换为频域信号,并将信号的频谱特征展示出来。
在频谱分析中,我们通过分析信号的频谱可以获得信号的频率、幅值等信息,从而对信号的性质和特征进行研究。
对于一个连续信号,我们可以通过采样的方式将其转换为离散信号,再利用FFT算法对离散信号进行频谱分析。
FFT算法可以将信号从时域转换到频域,得到离散的频谱,其中包含了信号的频率分量以及对应的幅值。
MATLAB中提供了fft函数,可以方便地对信号进行FFT分析。
通过对信号进行FFT操作,可以得到信号的频谱图,并从中提取出感兴趣的频率信息。
三、实验步骤1.准备工作:(2)建立新的MATLAB脚本文件。
2.生成信号:在脚本中,我们可以通过定义一个信号的频率、幅值和时间长度来生成一个信号的波形。
例如,我们可以生成一个频率为1000Hz,幅值为1的正弦波信号,并设置信号的时间长度为1秒。
3.对信号进行FFT分析:调用MATLAB中的fft函数,对信号进行FFT分析。
通过设置采样频率和FFT长度,可以得到信号的频谱。
其中,采样频率是指在单位时间内连续采样的次数,FFT长度是指离散信号的样本点数。
4.绘制频谱图:调用MATLAB中的plot函数,并设置x轴为频率,y轴为幅值,可以绘制出信号的频谱图。
频谱图上横坐标表示信号的频率,纵坐标表示信号的幅值,通过观察可以得到信号的频率分布情况。
四、实验结果在实验过程中,我们生成了一个频率为1000Hz,幅值为1的正弦波信号,并对其进行FFT分析。
通过绘制频谱图,我们发现信号在1000Hz处有最大幅值,说明信号主要由这一频率成分组成。
五、实验总结本实验通过使用FFT对信号进行频谱分析,我们可以方便地从信号的波形中提取出频率分量的信息,并绘制出频谱图进行观察。
基于FFT算法的音频信号分析仪

邓晓平,张贤,谭书伟,尹朝亮武汉大学电子信息学院,武汉(430079)E-mail:dxp190000@摘要:系统基于快速傅立叶变换(FFT)算法,以单片机和FPGA为控制与数据处理核心,实现对频率范围在20Hz~10KHz音频信号频率成分的分析。
系统由控制与运算核心、程控放大器、滤波和采样等模块组成。
通过对程控放大器增益的调整将系统可测电压(峰-峰值)的动态范围扩展到10mV~8V;通过改变模数转换器的采样频率,系统能实现频率分辨力100Hz、20Hz 两挡可调;频谱分析结果可按序存储,并使用点阵式液晶屏实时显示;通过对频谱数据特征的提取判断信号的周期性,并实现对信号的失真度分析。
另外,可通过点阵式液晶屏以图形方式显示信号各频率分量及其相对大小。
关键词:频域分析 FFT PGA 失真度1.引言音频信号的分析是语音通信、语音识别、语音合成、语音增强等技术的前提与基础。
只有将语音信号分析成表示其特性的参数,才可能利用这些参数进行高效的语音通信,才可能建立用于语音合成的语音库和用于语音识别的模版或知识库[5]。
而且,语音合成音质的好坏、语音识别率的高低,都取决于对语音信号分析的正确性与准确性。
音频信号分析可分为时域、频域、倒谱域等方法。
时域分析方法简单、运算量小、物理意义明确;但为有效的方法是在频域的分析。
傅立叶变换在信号处理中具有十分重要的作用,它可使信号的某些特性变得很明显,而在原始信号中这些特性可能不明显。
本文利用了频域分析方法的优点,实现对一般语音信号幅度、基音频率等特征信息的实时提取。
2.方案设计与论证2.1 控制与运算核心的选择方案一:单片机作为控制与运算核心。
方案二:FPGA作为控制与运算核心。
方案三:单片机与FPGA联合作为运算与控制核心。
单片机具有控制灵活简单的优点,但逻辑资源少,运行速度不能做得很高;FPGA相对于单片机在逻辑资源和速度上有绝对的优势,但不便于调试。
若将两者联合起来,可以充分发挥各自的优势,有可补充对方的缺点。
用FFT对信号进行频谱分析报告

——————————————————————————装 订 线 ————————————————————————————————
报告份数:
西安邮电大学 通信与信息工程学院 科研训练报告
专业班级: 学生姓名: 学号(班内序号): 2T对信号进行频谱分析
摘 要: 快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离 散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行 改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算 机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大 步。 傅里叶变换的理论与方法在“数理方程”、“线性系统分 析”、“信号处理、仿真”等很多学科领域都有着广泛应用,由于计算 机只能处理有限长度的离散的序列,所以真正在计算机上运算的是一种 离散傅里叶变换. 虽然傅里叶运算在各方面计算中有着重要的作用, 但是它的计算过于复杂,大量的计算对于系统的运算负担过于庞大, 使得一些对于耗电量少,运算速度慢的系统对其敬而远之,然而,快 速傅里叶变换的产生,使得傅里叶变换大为简化,在不牺牲耗电量的 条件下提高了系统的运算速度,增强了系统的综合能力,提高了运算 速度,因此快速傅里叶变换在生产和生活中都有着非常重要的作用, 对于学习掌握都有着非常大的意义。 关键词 快速傅氏变换;信号频谱分析;离散傅里叶变换
三、实验原理
数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT)方法。DFT 存在的不足是计算量太大,很难进行实时处理。计算一个N 点的DFT ,一 般需要次复数乘法和N(N-1)次复数加法运算.因此,当N较大或要求对信 号进行实时处理时,往往难以实现所需的运算速度。1965年,J.W.Cooly
for some Less power consumption, the slow speed of operation of its system at arm's length, however, have the fast Fourier transform, Fourier transform greatly simplifying the making, not in power at the expense of the conditions to increase the speed of computing systems, and enhance the system The comprehensive ability to improve the speed of operation, the Fast Fourier Transform in the production and life have a very important role in learning to master all have great significance. Key words: Fast Fourier Transform; Signal spectrum analysis Discrete Fourier Transform 引言: 1965年,库利(J.W.Cooley)和图基(J.W.Tukey)在《计算数 学》杂志上发表了“机器计算傅立叶级数的一种算法”的文章,这是一 篇关于计算DFT的一种快速有效的计算方法的文章。它的思路建立在对 DFT运算内在规律的认识之上。这篇文章的发表使DFT的计算量大大减 少,并导致了许多计算方法的发现。这些算法统称为快速傅立叶变换 (Fast Fourier Transform),简称FFT,1984年,法国的杜哈梅尔 (P.Dohamel)和霍尔曼(H.Hollmann)提出的分裂基快速算法[2][6] 使运算效率进一步提高。FFT即为快速傅氏变换,是离散傅氏变换的快 速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立 叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现, 但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说 是进了一大步。随着科学的进步,FFT算法的重要意义已经远远超过傅 里叶分析本身的应用。FFT算法之所以快速,其根本原因在于原始变化 矩阵的多余行,此特性也适用于傅里叶变换外的其他一些正交变换,例 如,快速沃尔什变换、数论变换等等。在FFT的影响下,人们对于广义 的快速正交变换进行了深入研究,使各种快速变换在数字信号处理中占 据了重要地位。因此说FFT对数字信号处理技术的发展起了重大推动作 用。
应用FFT对信号进行频谱分析实验报告

title('p=13,q=8 信号序列');
subplot(3,1,3);stem(x3);
title('p=14,q=8 信号序列');
figure(2)
subplot(3,1,1);stem(abs(fft(x1)))
title('p=8,q=8 幅频特性');
(1)利用8点FFT分析三角波和反三角波的时域和频域幅频特性,如图2.8,图2.9所示:
图2.8
图2.9
从图2.8和图2.9 可以看出,三角波和反三角波序列恰好相反,且其频谱是一样的。
(1)利用16点FFT分析三角波和反三角波的时域和频域幅频特性,如图2.10,图2.11所示:
图2.10
图2.11
对比图2.10和图2.11可以看出,对于16点时,三角波和反三角波的频谱明显不一样。和前面8点时的相比,其频谱也出现了较大出入,而正三角波的频谱变化不明显。
subplot(3,1,2);stem(abs(fft(x2)));
title('p=13,q=8 幅频特性');
subplot(3,1,3);stem(abs(fft(x3)));
title('p=14,q=8 幅频特性');
clc;
clearall;
n=0:50;%定义序列的长度是15
a=0.1; f=0.5625;x=exp(-a*n).*sin(2*pi*f*n);
(2-1)
如果对信号进行理想采样,可以得到离散傅里叶变换:
(2-2)
在各种信号序列中,有限长序列在数字信号处理中占有很重要的。无限长的序列往往可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅里叶变换(DFT),这一序列可以很好的反应序列的频域特性,并且容易利用快速算法在计算机上实现当序列的长度是N时,我们定义离散傅里叶变换为:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音频信号分析仪设计实践报告摘要系统基于快速傅立叶变换(FFT)算法,以FPGA和NIOS软核为数据处理与控制核心,实现对频率范围在100Hz~10KHz,电压范围(峰-峰值)在1mV~2.5V的音频信号频率成分的分析。
系统由音频信号采集、FFT处理、FIFO数据缓存、NIOS软核控制和LABVIEW 上位机显示等模块组成,硬件采用Cyclone III系列FPGA芯片EP3C25F324C8为核心,采用高性能的立体音频Codec芯片TLV320实现音频处理,对输出具有可编程增益调节,然后在Quartus环境下采用FFT IP核完成离散信号的FFT处理,采用DC_FIFO对FFT变换后的数据进行缓存处理,实现与高时钟NIOS核的通讯,在IDE环境下通过C语言编程实现FIFO 和软核CPU的控制,最终在LABVIEW显示音频信号主要频率成分的信息,实现对音频信号的分析和显示。
关键词:音频分析 FFT FPGA NIOS软核 FIFO目录音频信号分析仪设计实践报告 (1)摘要 (1)一、设计任务及要求 (3)1)任务 (3)2)要求 (3)二、系统设计方案 (3)2.1 设计方案的选择 (3)2.2 总体设计思路 (4)三、模块电路与程序设计 (5)3.1 TLV320控制电路 (5)3.2 FFT控制电路 (5)3.3 FIFO控制电路 (7)3.4 NIOS软核 (8)3.5 LABVIEW显示 (8)3.6 程序说明 (8)四. 测试方案与测试结果 (9)4.1 测试方案 (9)4.2 测试结果 (9)五.遇到问题及解决办法 (10)六. 组员分工.................................................................................................. 错误!未定义书签。
七. 总结与感想.............................................................................................. 错误!未定义书签。
八.参考文献 (12)附录 ................................................................................................................ 错误!未定义书签。
一、设计任务及要求1)任务设计、制作一个可分析音频信号频率成分,并可测量正弦信号失真度的仪器。
2)要求1.基本要求(1)输入阻抗:50Ω(2)输入信号电压范围(峰-峰值):100mV~5V(3)输入信号包含的频率成分范围:200Hz~10kHz(4)频率分辨力:100Hz(可正确测量被测信号中,频差不小于100Hz的频率分量的功率值。
)(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的绝对值小于5%。
(6)分析时间:5秒。
应以5秒周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。
2.发挥部分(1)扩大输入信号动态范围,提高灵敏度。
(2)输入信号包含的频率成分范围:20Hz~10kHz。
(3)增加频率分辨力20Hz档。
(4)判断输入信号的周期性,并测量其周期。
(5)测量被测正弦信号的失真度。
(6)其他。
二、系统设计方案2.1 设计方案的选择系统设计采用的硬件构架是以EP3C25F324C8为核心的FPGA开发板,板子包含TLV320音频信号处理电路模块,通过音频线外接PC机,PC机产生测试音频信号或采用数字信号发生器代替音频信号,完成整体硬件搭建。
而对FPGA的硬件配置编程和对NIOS软核的控制编程则主要通过在PC机上编写程序来实现。
系统整体分为五部分,分别为:音频信号采集、FFT处理、数据传输、NIOS软核控制以及LABVIEW面板显示,音频信号采集部分采用IIC总线方式控制TLV320对音频信号进行采集和AD转换。
根据我们查找的资料,FFT的实现方式比较多,可以通过在C语言编程实现,也可以通过VHDL语言硬件编程实现,同样可以通过MA TLAB编写算法来实现,我们最终采用的方案是在Quartus环境下使用ALTERA元件库里的FFT IP核来实现,与整体硬件设计相辅相成。
由于FFT工作时钟与NIOS CPU工作时钟不一致,数据传输需要使用FIFO做缓存,DC FIFO为双时钟工作模式,可以实现读和取的单独控制,可以十分方便地实现不同时钟模块的数据通讯。
在Quartus环境下设置好的硬件需要通过NIOS软核编程实现控制,SOPC Builder可以通过Avalon总线挂接需要使用的模块,生成软核CPU,然后在IDE环境下编写C程序实现CPU对各硬件电路或信号的处理以及控制。
通过串口把需要显示的信息以字符串形式发送至上位机端,LABVIEW读取串口数据,并经行相应处理和计算,最终显示出来。
2.2 总体设计思路系统设计原理框图如图2-1所示,输入音频信号首先进行信号调理,然后是16位的TLV320对音频信号的采样和AD转换(内部DAC模块可选择性使用),接着是FFT模块对离散信号进行1024点FFT变换,FFT处理之后的数据通过FIFO缓存,然后CPU读入数据,并对数据进行频谱分析,计算出主要频率成分的频率与幅值,并把信息发送至串口,最后LABVIEW进行功率运算,显示主要频率成分的信息。
图 2-1三、模块电路与程序设计3.1 TLV320控制电路TLV320AIC23是TI推出的一款高性能的立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。
AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigma-delta过采样技术,可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit 的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。
与此同时,AIC23还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于15uW。
本系统设计时采用96KHZ采样时钟,直接使用ADC之后的数字数据进行后面的处理,而没有直接使用DAC模块。
NIOS软核驱动和访问TLV320是通过IIC总线方式实现的,IIC 工作时序如图3-1所示。
(VHDL硬件连接见附录)图 3-1编写VHDL程序,生成相应控制模块,通过地址数据的操作,改变TLV320采样时钟。
音频端口输入单一频率的正弦波,经过TLV320 AD处理之后,逻辑分析仪显示效果如图3-2所示,输入频率范围为100HZ----10KHZ。
图 3-23.2 FFT控制电路FFT是DFT的一种高效算法,称为快速傅立叶变换(fast Fourier transform),作用是用于将一个有限长数字信号从时间域转换到频率域,FFT算法可分为按时间抽取算法和按频率抽取算法。
利用DFT中的周期性和对称性,使整个DFT的计算变成一系列迭代运算,可大幅度提高运算过程和运算量。
系统采用96KHZ驱动时钟,对离散ADC值进行1024点FFT变换,以8点FFT频域抽取的基2算法为例,算法过程如图3-3所示:图 3-3编写并加入控制模块ctl_fft来控制FFT转换,电路如图3—4所示:图 3-4由于进行FFT变换之后,离散数据变为了频域的复数形式,要想得到输入音频信号直观的幅频曲线,还必须对FFT变换之后输出的实部和虚部的数据进行求模处理,这就需要添加相应的求模运算模块,我们通过MA TLAB仿真生成了求模运算模块,导出之后,在工程中添加应用,很好地实现了求模运算,MA TLAB仿真原理如图3—5所示。
图 3-53.3 FIFO控制电路FIFO的作用就是不同时钟域间的数据缓存,只是一种BUF作用。
比如不同速率模块间的数据传输,用FIFO做缓存,这时候FIFO的容限,也就是深度需要根据两者速率计算得到。
FIFO有两种工作模式:(1)SCFIFO指读写用一个时钟进行同步,可以支持同时读写的功能。
(2)DCFIFO指读写使用不同的时钟进行同步,这在设计多时钟系统中相当有用,可用于不同时钟同步信号之间的同步调整。
本系统数据的存入并不是一直不断的,而是间隔存储的,我们通过NIOS软核编程控制FIFO的读和写操作。
设计使用的是DCFIFO,数据深度与FFT点数一致为1024,数据的存储和读取采用不同的工作时钟,写入时采用96KHZ时钟,而读取数据时是通过CPU的IO 管脚模拟产生的时钟,读取得到的数据,并存入数组。
对FIFO操作的关键是时钟的处理,我们将wrfull和valid(fft数据有效标志位)在SOPC builder分配IO时设置为上升沿触发的中断模式,当valid触发中断时,写操作有效同时屏蔽中断,FIFO写入数据,中断最后使能wrfull 的中断,当wrfull触发中断时,读取FIFO数据,读完1024组数据之后,再使能valid中断。
这样,数据的存和取就实现了CPU控制的反复操作,同时不会出现读数据的时候被写入数据中断打乱,每次数据操作均按照先写后读,读完才允许写入的模式进行。
FIFO工作时序(写操作为例)如图3—6所示:图3-6FIFO在Quartus环境里配置连接如图3-7所示:图3-73.4 NIOS软核Altera的SOPC Builder自动系统开发工具为设计人员提供了强大的开发平台,可构成包括处理器、外设和存储器接口等常用系统组成的总线系统。
在FPGA器件上使用SOPC Builder创建软硬件开发的基础平台, 也就是用SOPC Builder创建软核CPU和参数化的接口总线Avalon。
在此基础上, 可以很快地将硬件系统与常规软件集成在单一可编程芯片中。
Nios II 嵌入式处理器是Altera公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器, 其最大特点是模块化的硬件结构, 具有很强的灵活性和可裁减性。
NIOS软核的使用既包括在Quartus环境下SOPC builder的外设配置,还包括对该软核的编程控制部分。
系统设计时,在SOPC builder中,配置使用的UART串口、SDRAM、Flash、IIC总线以及部分PIO来实现系统控制的硬件搭建,特别是分配管脚控制FIFO的部分是NIOS核软编程的主要部分,CPU工作时钟为PLL提供的50MHZ,软件部分主要包括中断处理FIFO和读取FIFO数据并发送至串口,具体连接和程序代码详见见附录。