当前位置:文档之家› 基于FFT的音频信号分析仪报告

基于FFT的音频信号分析仪报告

音频信号分析仪设计实践报告摘要系统基于快速傅立叶变换(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数据并发送至串口,具体连接和程序代码详见见附录。

相关主题