基于FPGA的音频信号分析仪设计(含完整程序)_第1页
基于FPGA的音频信号分析仪设计(含完整程序)_第2页
基于FPGA的音频信号分析仪设计(含完整程序)_第3页
基于FPGA的音频信号分析仪设计(含完整程序)_第4页
基于FPGA的音频信号分析仪设计(含完整程序)_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于fpga的音频信号分析仪本科毕业论文(设计)题 目 基于fpga的音频信号分析仪 学生姓名 专业名称 电子信息科学与技术 指导教师 教师职称 2009年12月10日基于fpga的音频信号分析仪基于fpga的音频信号分析仪摘要:本音频信号分析仪以fpga为核心,通过前级信号调理电路和12位a/d转换芯片,对音频信号进行正确采样,把连续信号离散化。然后通过基于altera cyclone ii 系列fpga嵌入高性能的nios ii处理器,代替传统的dsp芯片和高性能mcu,实现了基于fft的音频信号分析仪,并在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理。最后采用高分辨率的彩

2、色液晶对信号的功率谱等信息进行显示并通过触摸屏控制整个系统的运行。该系统能够精确测量的音频信号频率范为100hz-10khz,其幅度范围为100mvpp-5vpp,分辨力分为100hz和20hz两档,测量功率精确度高达5%,是理想的音频信号分析仪的解决方案。关键词:fft;fpga;nios ii ;频谱;信号功率;the audio signal analyzer based on fpgaabstract: the audio signal analyzer is based on fpga, through the signal processing circuit and 12bit

3、a / d converter chip for audio signal sampling, the continuous signal discrete. instead of using dsp or mcu, we use high performance nios ii embedded processor for fft fast fourier transform computing and in the time domain and frequency domain of the various audio frequency signal weight and power,

4、 and other indicators for analysis and processing. at last through the high-resolution touch screen lcd display the signal power spectrum and control the operation of the entire system. the system can accurately measure the audio signal frequency range of 100hz - 10 khz, the range of 100mvpp-5vpp, r

5、esolution of 100 hz and 20 hz correspondent. power measurement accuracy up to 5%, is the ideal audio signal analyzer solution.keyword: fft;fpga;nios ii ;spectrum;signal power;目 录1 前言11.1音频分析原理11.2音频分析方法11.3音频参数测量及分析12 系统方案设计32.1系统设计要求32.2系统方案论证32.2.1 系统整体方案选择32.2.2 系统核心处理器的选择33 系统硬件设计53.1 fpga与nios

6、ii介绍53.2 fpga核心板电路设计53.2.1 fpga电源电路63.2.2fpga时钟电路73.2.3fpga配置电路93.3前级信号调理电路103.4ad采样电路设计133.5系统电源电路设计143.6彩色液晶电路设计143.7触摸屏电路设计154系统软件设计174.1niosii集成开发环境介绍174.2系统主程序设计174.3ad转换驱动程序184.4触摸屏识别程序194.5 fft算法的c语言实现204.5.1 fft的matlab仿真与分析204.5.2倒位序算法分析234.5.3实数蝶形运算算法234.5.4 ditfft算法的基本思想分析245 系统调试与测试结果265.

7、1系统调试265.2测试方案与测试结果265.2.1测试电路265.2.2两路信号总功率测量275.2.3单个频率分量测量275.3误差分析286结束语29参考文献30附 录31附录一31附录二35附录三36附录四42附录五43附录六44谢 辞46iii基于fpga的音频信号分析仪1 前言1.1 音频分析原理音频是多媒体中的一种重要媒体。我们能够听见的音频信号的频率范围大约是20hz-20khz,其中语音大约分布在300hz-4khz之内,而音乐和其他自然声响是全范围分布的。声音经过模拟设备记录或再生,成为模拟音频,再经数字化成为数字音频。这里所说的音频分析就是以数字音频信号为分析对象,以数字

8、信号处理为分析手段,提取信号在时域、频域内一系列特性的过程。音频分析的原理主要涉及数字信号处理的基本理论、音频分析的基本方法以及音频参数测量和分析内容,其中数字信号处理是音频分析的理论基础。傅立叶变换和信号的采样是进行音频分析时用到的最基本的技术。傅立叶变换是进行频谱分析的基础,信号的频谱分析是指按信号的频率结构,求取其分量的幅值、相位等按频率分布规律,建立以频率为横轴的各种“谱”,如幅度谱、相位谱。在以计算机为中心的测试系统中,模拟信号进入数字计算机前先经过a/d变换器,将连续时间信号变为离散时间信号,称为信号的采样。然后再经幅值量化变为离散的数字信号。这样,在频域上将会出现一系列新的问题,

9、频谱会发生变化。由模拟信号变成数字信号后,其傅立叶变换也变成离散傅立叶变换,涉及到采样定理、频率混叠、截断和泄漏、加窗与窗函数等一系列问题。1.2 音频分析方法通常在对某音频设备音频测量分析时,该设备被看成是一个具有输入端口和输出端口的黑箱系统。将某种己知信号输入该系统,然后从输出端获取输出信号进行分析,从而了解该系统的一些特性,这就是音频分析的一般方法。输入音频设备的信号,称作激励信号。激励信号可以是正弦、方波等周期信号,也可以是白噪声、粉红噪声等随机信号,还可以是双音、多音、正弦突发等信号。最常用的检测分析方法有正弦信号检测、脉冲信号检测、最大长度序列信号检测等。1.3 音频参数测量及分析

10、音频测量一般包括信号电压、频率、信噪比、谐波失真等基本参数。大部分音频参数都可以由这几种基本参数组合而成。音频分析可以分为时域分析、频域分析、时频分析等几类。由于信号的谐波失真对于音频测量比较重要,因此将其单独归类为失真分析。以下分别介绍各种音频参数测量和音频分析。音频测量中需要测量的基本参数主要有电压、频率、信噪比。电压测试可以分为均方根电压(rms)、平均电压和峰值电压等几种。频率是音频测量中最基本的参数之一。通常利用高频精密时钟作为基准来测量信号的频率。测量频率时,在一个限定的时间内的输入信号和基准时钟同时计数,然后将两者的计数值比较后乘以基准时钟的频率就得到信号频率。随着微处理芯片的运

11、算速度的提高,信号的频率也可以利用快速傅立叶变换通过软件计算得到。信噪比是音频设备的基本性能指标,是信号的有效电压与噪声电压的比值。在实际测量中,为方便起见,通常用带有噪声的信号总电压代替信号电压计算信噪比。时域分析通常是将某种测试信号输入待测音频设备,观察设备输出信号的时域波形来评定设备的相关性能。最常用的时域分析测试信号有正弦信号、方波信号、阶跃信号及单音突变信号等。例如将正弦信号输入设备,观察输出信号时域波形失真就是一种时域分析方法。频域分析是音频分析的重要内容,频域分析的主要依据是频率响应特性曲线图。频率响应曲线图反映了音频设备在整个音频范围内的频率响应的分布情况。一般来说曲线峰值处的

12、频率成分,回放声压大、声压强;曲线谷底处频率成分声压小、声音弱。若波峰和波谷起伏太大,则会造成较严重的频率失真。谐波失真的测量方法有两种,一种是以正弦信号输入待测设备,然后分析设备响应信号的频率成分,可以得到谐波失真。另一种更简单的测量方法是首先利用带阻滤波器滤除响应信号中的基频成分,然后直接测量剩余信号的电压,将其与原响应信号作比较,就可以得到谐波失真。显然第二种方法得到的谐波失真是thd+n,由于采用了信号的总电压值代替了基频分量电压值,因此得到的谐波失真比实际值偏小,且实际的谐波失真越大,误差越大。在实际的音频测量时,通常在一定的频率范围内选取若干个频率点,分别测量出各点的谐波失真,然后

13、将各谐波失真数值以频率为横坐标连成一条曲线,称为谐波失真曲线。2 系统方案设计2.1 系统设计要求本系统是在2007年全国大学生电子设计竞赛a题音频信号分析仪的基础上进行设计的,题目的基本部分要求如下:(1)输入阻抗:50ohm(2)输入信号电压范围(峰-峰值):100mv5v(3)输入信号包含的频率成分范围:200hz10khz(4)频率分辨力:100hz(可正确测量被测信号中,频差不小于100hz的频率分量的功率值。)(5)检测输入信号的总功率和各频率分量的频率和功率,检测出的各频率分量的功率之和不小于总功率值的95%;各频率分量功率测量的相对误差的绝对值小于10%,总功率测量的相对误差的

14、绝对值小于5%。(6)分析时间:5秒。应以5秒周期刷新分析数据,信号各频率分量应按功率大小依次存储并可回放显示,同时实时显示信号总功率和至少前两个频率分量的频率值和功率值,并设暂停键保持显示的数据。2.2 系统方案论证2.2.1 系统整体方案选择音频信号分析仪可分为模拟式音频信号分析仪和数字式音频信号分析仪。方案一:以fft为基础的的数字音频信号分析仪。通过对信号的频域分析可以很方便的得到输入信号的各种信息,如功率谱、频率分量以及周期性等。外围电路少,实现方便,精度高。方案二:以模拟滤波器为基础的模拟式频谱分析仪。扫描滤波法、有并行滤波法、小外差法等。因为受到模拟滤波器滤性能的限制,此种方法实

15、现起来比较困难。所以选用方案一作为本系统的实现方式。2.2.2 系统核心处理器的选择方案一:以普通单片机为核心进行相关算法的处理。从发展历史看,单片机的发展已经有比较长的时间,应用比较广泛,各种技术都比较成熟,但单片机处理速度不是很快,存储器资源不够,没有实现数字信号处理的dsp模块。故不采用普通单片机。方案二:采用dsp处理器进行处理。和普通单片机相比,dsp的处理速度快,存储器资源,很适合fft算法的实现。但是dsp处理器芯片的结构有点复杂,开发难度大。方案三:在fpga中嵌入nios ii处理器,通过软件实现。nios ii 支持c语言编程方式,普通的c语言版的fft稍加改正即可应用到本

16、方案中,而且altera cyclone ii fpga内部有丰富的硬件乘法器和存储器资源,开发难度低,速度快。考虑到本系统对处理器的处理速度要求不是很高。为了减小开发难度,采用了方案三。音频信号先经过由运放和电阻组成的50ohm阻抗匹配电路以满足输入阻抗50 ohm的系统要求,这样方便信号功率的计算。为了保证所处理的信号被不失真的采样,信号还要通过截止频率为10khz的抗混叠低通滤波器。最后为了ad能正确的采样,信号还要通过信号抬高电路。经过12位a/d转换芯片max144转换后的数字信号经由基于fpga的niosii处理器进行fft变换和处理,分析各个频率点的功率值,并将这些值显示在分辨率

17、320*240的彩色液晶上。图1 系统总体框图3 系统硬件设计3.1 fpga与nios ii介绍现场可编程门阵列(fpga)是一种半导体器件,可以在制造完成后进行编程。fpga硬件功能不是预先确定好的,而是针对产品特性和功能进行编程,以适应新标准,即使产品已经在现场使用了,也可以针对某些应用重新配置硬件因此,叫做“现场可编程”。也可以使用fpga来实现专用集成电路(asic)完成的任何逻辑功能,而且在产品发售后也能够对功能进行更新,在很多应用中都具有一定优势。与以前使用可编程逻辑和互联i/o的fpga不同,现在的fpga含有各种可配置嵌入式sram、高速收发器、高速i/o、逻辑模块和走线。特

18、别是,fpga含有名为逻辑单元(le)的可编程逻辑,以及分层的可配置互联,支持le的物理连接。您可以配置le来完成复杂的组合功能,或者只是简单的and和xor等逻辑门。在大部分fpga中,逻辑模块含有存储器单元,例如简单的触发器或者较复杂的存储器模块等。niosii系列软核处理器是altera的第二代fpga嵌入式处理器,其性能超过200dmips,在altera fpga中实现仅需35美分。altera的stratix、stratixgx、 stratix ii和 cyclon系列fpga全面支持nios ii处理器,以后推出的fpga器件也将支持nios ii。自altera于2000年推

19、出第一代16位nios处理器以来,已经交付了13000多套nios开发套件,nios成为最流行的软核处理器。刚推出的nios ii系列采用全新的架构,比第一代nios具有更高水平的效率和性能。和第一代相比,nios ii核平均占用不到50%的fpga资源,而计算性能增长了1倍。3.2 fpga核心板电路设计系统采用的是altera公司的cyclon ii 系列型号为ep2c8q208c8的fpga芯片。cyclon ii器件采用了90nm工艺制造,其增加了硬的dsp块,在芯片总体性能上要优于第一代产品cyclon系列器件。fpga核心板电路图主要由fpga电源电路(图2)、时钟电路(图3)、配

20、置电路(图4)和sdram和flash电路(图5)组成四部分组成。3.2.1 fpga电源电路本系统的fpga核心板需要3.3v和1.2v两种电压。cyclonii器件的每个bank都有vref引脚,可用来独立支持任一种基准电压标准,其具有两重功能,如果某一i/obank不使用基准电压标准,那么vref引脚作为可用的i/o引脚。每个bank也有专用的vccio引脚,每个cyclonii器件都支持1.5v,1.8v,2.5v和3.3v的接口,各个独立的bank也支持不同的i/o电压标准。每个i/obank通过多个vccio引脚为输入输出提供多种标准,例如当vccio为3.3v时,该bank为输入

21、输出引脚提供lvttl,lvcoms和3.3vpci。在i/obank中可使用许多单端和差分标准,只要他们使用相同的vref和适当的vccio值。cyclonii的架构支持多电压i/o接口,这就允许cyclonii器件为多系统提供不同的电压。cyclonii器件带有一组vcc引脚(vccint),用于驱动内部逻辑门阵列和使用lvpecl,lvds,hstl或者sstli/o标准的输入缓冲器。还有4组或者8组的vcc引(vccio)用于驱动输出i/o引脚和使用lvttl,lvcmos或者pcii/o标准的输入缓冲器。cyclonii器件的vccint引脚必须接1.2v的电源,如果vccint接的

22、是1.2v,那么输入引脚允许接1.5v,1.8v,2.5v或者3.3v。vccio引脚能从1.5v,1.8v,2.5v或者3.3v的电源中任选,依赖于输出的需求。输出电平可以与系统的电源相容。(例如当vccio接了1.5v的电源,输出电平就会调整为1.5v的系统)。当vccio引脚接了3.3v的电源,输出最高为3.3v并且与3.3v的系统兼容。由于fpga核心板要驱动ad转换芯片和彩色液晶,而ad转换芯片和彩色液晶都需要与3.3v电压兼容的电平。所以vccio引脚接了3.3v的电源的电压。图2 fpga核心板电源电路3.2.2 fpga时钟电路(1)全局时钟网络在整个cyclonii器件中有1

23、6或者8个全局时钟网络驱动器,专用的时钟引脚(clk ),pll输出,逻辑阵列和两用的时钟引脚(dpclk)都能驱动全局时钟网络。如果这些专用的时钟引脚没有用来提供给全局时钟网络,那么他们可以被用作普通的输入引脚提供给逻辑阵列作为多通道连接。不过,如果他们被用作普通目的的输入引脚,他们没有可用的i/o寄存器,必须用le-based寄存器来代替。cyclonii器件总有20个或8个有双重用处的时钟引脚,dpclk19.0或者dpclk7.0,较大的器件有20个,左右两边各4个,上下两边各6个。角落的cdpclk引脚在进入时钟控制模块之前首先被复用。直到有信号通过一个多路复用器馈送到时钟控制模块之

24、前,这些信号到时钟控制模块产生的延时要大于其他直接馈送到时钟控制模块的dpclk引脚。在较小的cyclonii器件中(如ep2c5和ep2c8)有8个dpclk引脚,器件的每边各两个。一个可编程的延时信道从dpclk引脚到他的扇出终点是可见的,要设置从dpclk引脚到他扇出终点的延时,要使用quartusii软件中的input delay from dual-purpose clock pinto fan-out destinations assignment设置。这些双重作用的引脚能连接到全局时钟网络作为高扇出控制信号,例如时钟,异步清零,预设,时钟使能,或者协议控制信号如pci的trdy和

25、irdy,外部存储接口dqs。全局时钟网络可以为器件内部的所有资源提供时钟,例如ioes,les,存储模块和内部乘法器。全局时钟线也可被控制信号使用,例如时钟使能和通过外部引脚同步或异步清除反馈,也可用于ddrsdram或者qdriisram的dqs信号接口。内部逻辑也能驱动全局时钟网络内部产生全局时钟和异步清零,时钟使能,或者其他带大扇出的控制信号。 (2)时钟控制模块cyclonii器件有一个可见的时钟控制块来控制全局时钟网络。这些时钟控制模块被分配到器件的外围,每个cyclonii器件最多有16个可见时钟控制模块,器件的每边有4个,稍小一些的cyclonii器件(ep2c5或ep2c8)

26、有8个时钟控制模块,器件的左右各4个。这些控制模块有以下功能:1动态全局时钟网络时钟源选择;2动态使能或禁用全局时钟网络在cyclonii器件中,专用的clk引脚,pll计数器输出,pdclk引脚和内部逻辑都可以向全局时钟块提供源。时钟模块的输出又反馈给相应的全局时钟网络。以下几个源可以作为时钟控制模块的输入:在同一边的4个时钟引脚作为时钟控制模块;一个pll输出三个pll时钟引脚;四个dpclk引脚(包括cdpclk引脚)在同一边作为时钟控制模块;四个内部产生信号在这些源中,只有两个时钟引脚,两个pll时钟输出,一个dpclk引脚,和一个内部逻辑信号可以被器件选择输入到时钟控制模块,除了这六

27、个输入,两个时钟引脚和两个pll输出引脚可以被动态的选择提供给全局时钟网络。时钟控制模块支持从dpclk和内部逻辑信号中静态选择。图3 fpga核心板的时钟电路3.2.3 fpga配置电路cyclonii器件使用sram单元存储配置信息,由于sram存储器是易失性的,所以每次上电后配置信息都会重新加载到cyclonii芯片中。可以使用as(actionserial)配置方式,这需要dclk的频率达到40mhz的情况下,配置cyclonii芯片。也可使用ps(passiveserial)和jtag(jointtestactiongroup)方式来配置。此外,cyclonii芯片还能接收压缩的配置

28、信息比特流,在运行过程中解压这些数据,来降低存储要求和配置时间。可以通过cyclonii芯片的msel引脚的高低来选择哪中配置方式,msel引脚是有其所在bank的vccio引脚驱动的,msel1.0引脚有9k欧的内部下拉电阻始终有效。在上电复位和重新配置时,msel引脚肯定是出于lvttlvil或者vih电平,分别被看作逻辑低和逻辑高。因此,为了避免因使用了错误的配置方法而产生问题,需要将msel引脚连接到其所在的i/obank的vccio和gnd,不需要连上拉或下拉电阻。mesl引脚不需要处理器或其他的器件来驱动。表1 cyclonii配置模式配置模式msel1mselo描述as(20mh

29、z)00串行配置器件ps01增强配置器件fastas(40mhz)10as模式jtag*下载电缆和微机 图4 fpga的配置电路3.3 前级信号调理电路前级信号调理电路由前级阻抗匹配电路、低通滤波器和信号抬高电路组成。信号输入后通过r5,r6两个100ohm的并联电阻和一个高精度低噪声运放op07实现跟随作用,由于集成运放的输入阻抗很大,所以输入阻抗即为:r5/r6=50ohm。op07闭环带宽600khz,电压噪声密度10个单位,充分满足系统的设计要求。图5 前级阻抗匹配电路系统要求音频信号频率为20hz10khz,根据奎斯特定律,我们至少要保证20k的采样频率,才能保证所处理的信号被不失真

30、的采集,否则会发生混叠现象(还原信号时,被采样的低频信号与高频信号无法区分),现在就是要设计这样一个滤波器,能够很好的滤去10khz以上的频率,考虑到设计难度与实际情况,放弃了制作20hz10khz带通滤波器的想法,转而制作一款高性能的低通滤波器,截止频率10khz。低通滤波器的制作方法很多,有源,无源,查表,同时还可以借助丰富的滤波器设计软件验证自己的设计,结合自己的实际制作经验,选用一款开关电容滤波器芯片max293来完成本次设计低通滤波环节。max293是一款8阶低通椭圆开关电容滤波器芯片,有两种驱动方式,一种是时钟驱动,从clk脚输入一个频率为f的信号,即可得到截止频率为f/100的低

31、通滤波器,第二种是在clk脚对地并一个电容,截止频率与电容的关系大约为f=100000/3c。考虑到防止时钟信号的串扰和简化设计,采用第二种方式。图6 低通滤波电路系统要求能测试的音频信号的峰峰值为5v,而ad转换电路只能采样正信号,所以需要把信号至少抬高2.5v才能让ad转换电路正确的采样。并且ad的参考电压为+5v,如果信号的最大幅值超过+5v将不能被ad转换电路正确采样。因此,信号抬高电路只有把输入信号抬高2.5v才能满足以上两个要求。根据叠加定理:vout(=(1+r7/r8)*(r11/(r11+r10)*vin+(1+r7/r8)*(r10/(r11+r10)*5=vin+2.5。

32、图7 信号抬高电路3.4 ad采样电路设计为了提高系统的精度,ad转换芯片我选用的是maxim公司生产的新型12位串行模数转换器max144。max144是美国maxim公司生产的新型双通道12位串行模数转换器,它具有自动关断和快速唤醒功能,且内部集成有时钟电路,采样/保持电路;同时具有转换速率高、功耗低等优点,特别适合于由电池供电且对体积和精度有较高要求的智能仪器仪表产品。图8 ad采样电路3.5 系统电源电路设计根据系统的要求,本系统需要+5v,-5v两种电压,考虑到实际调试情况和电路的升级,在系统电源设计的时候加上了正负电压可调的电源电路。直流稳压电源一般由电源变压器、整流滤波电路及稳压

33、电路所组成。其中+5v,-5v两种电压由稳压芯片cw7805和cw7905产生,正负可调电压由lm317和lm337产生。图9 系统电源电路3.6 彩色液晶电路设计为了让音频信号功率谱显示的更清晰,本系统采用了2.2寸分辨率为320*240的彩色液晶。这款液晶的驱动芯片采用的是nec公司pd161704a。pd161704a有1382400位的显示ram(240pixelsx18bitsx320lines)。图10彩色液晶驱动电路3.7 触摸屏电路设计为了让系统人机界面的操作性更好,在彩色液晶上面还加了一块触摸屏。触摸屏的驱动芯片采用的是ti公司的ads7843。ads7843是4线电阻触摸屏

34、转换接口芯片。它是一款具有同步串行接口的12位取样模数转换器。ads7843的工作原理就是通过连结触摸屏x+将触摸信号输入到ad转换器同时打开y+和y-驱动,然后将数字化的x+的电压,从而得到当前y位置的测量结果。同理也得到x方向的坐标。图11触摸屏驱动电路4 系统软件设计4.1 niosii集成开发环境介绍niosii集成开发环境(ide)是niosii系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以niosii ide下完成,包括编辑、编译和调试程序。niosii ide提供了一个统一的开发平台,用于所有niosii处理器系统。仅仅通过一台pc机、一片altera的fpga以及一

35、根jtag下载电缆,软件开发人员就能够往niosii处理器系统写入程序以及和niosii处理器系统进行通讯。niosii ide基于开放式的、可扩展eclipseideproject工程以及eclipsec/c+开发工具(cdt)工程。4.2 系统主程序设计主程序包括ad转换驱动程序,lcd初始化与显示,触摸屏驱动与触摸识别和fft运算。主程序流程图如图12所示,程序见附录。图12主程序设计流程图4.3 ad转换驱动程序为了让ad转换电路正确地采样数据和niosii软核cpu正确地读取数据,整个ad转换驱动程序由一个时钟控制模块,串行数据转并行数据模块,16位的加法器,一个12位d触发器缓冲模

36、块和max144的状态机模块组成。图13 quartusii软件下设计的max144驱动的顶层原理图由于本系统采用的是12位串行ad,对时序要求很严格。所以必须严格按照max144的数据手册上时序,利用状态机编写驱动程序。max144的两个模拟输入通道ch0与ch1可连接到两个不同的信号源上。上电复位后,max144将自动对ch0通道的模拟信号进行a/d转换,转换完毕又自动切换到ch1通道,并对ch1通道模拟信号进行a/d转换,之后交替地在ch0和ch1通道间进行切换和转换。输出数据中包含的一个通道标志位chid,用以确定该数据为哪一通道转换得到。如果只有一路模拟信号,可以将ch0与ch1连接

37、在一起作为一个输入通道,但输出的数据中仍包含有通道标志位chid。将cs/shdn设置为低电平可启动a/d转换过程,在cs/shdn的下降沿,内部采样/保持电路将进入采样模式,此时如果sclk为高电平,则选择内部时钟模式;若为低电平则选择外部时钟模式。当串行时钟频率小于100khz或大2.17mhz时,应选择内部时钟模式。当工作于外部时钟模式时,由于外部时钟不仅要移出数据,而且要驱动模数转换,因此,a/d转换必须在140s内完成,否则采样/保持电路中电容上电压的降低可能导致转换结果精度的降低。转换结束后,内部振荡电路被关闭,dout变为高电平,此时即可读取转换数据。图14 max144的时钟模

38、式时序图图15 max144驱动的状态转移图4.4 触摸屏识别程序当触摸屏幕时,penirq就被拉低,然后发送y轴或者x轴的控制字节,再延时消除抖动,接着就循环8次读取y轴或者x轴的坐标值并且取其平均值,这样得到的值就是比较精确的坐标值。最后判断penirq是否为高,如果为高,再判断一次。这样通过判断两次的方法可以克服触摸屏信号的抖动。如果两次都为高,则发送控制字节返回到开始继续判断penirq是否为低。如果两次判断有一次不为高电平,则发送x轴控制字节,读取x轴的坐标值。图16 触摸屏的触摸识别流程图4.5 fft算法的c语言实现4.5.1 fft的matlab仿真与分析信号经过adc采样后得

39、到的数字信号,就可以做fft变换了。n个采样点,经过fft之后,就可以得到n个点的fft结果。为了方便进行fft运算,通常n取2的整数次方。 假设采样频率为fs,信号频率f,采样点数为n。那么fft之后结果就是一个为n点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。假设原始信号的峰值为a,那么fft的结果的每个点(除了第一个点直流分量之外)的模值就是a的n/2倍。而第一个点就是直流分量,它的模值就是直流分量的n倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0hz),而最后一个点n的再下一个点(实际上这个点是不存在的,这里是假设的第n+1

40、个点,也可以看作是将第一个点分做两半分,另一半移到最后)则表示采样频率fs,这中间被n-1个点平均分成n等份,每个点的频率依次增加。例如某点n所表示的频率为:fn=(n-1)*fs/n。由上面的公式可以看出,fn所能分辨到频率为fs/n,如果采样频率fs为1024hz,采样点数为1024点,则可以分辨到1hz。1024hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做fft,则结果可以分析到1hz,如果采样2秒时间的信号并做fft,则结果可以分析到0.5hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。假设fft之后某点n用复数

41、a+bi表示,那么这个复数的模就是,相位就是pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n1,且n=n/2)对应的信号表达式为:an/(n/2)*cos(2*pi*fn*t+pn),即2*an/n*cos(2*pi*fn*t+pn)对于n=1点的信号,是直流分量,幅度即为a1/n。由于fft结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。假设我们有一个信号,它含有2v的直流分量,频率为50hz、相位为-30度、幅度为1.5v的交流信号,以及一个频率为75hz、相位为90度、幅度为2v的交流信号。用数学表达式就是如下:s=2+1.5*cos(2*pi*50

42、*t-pi*30/180)+2*cos(2*pi*75*t+pi*90/180)式中cos参数为弧度,所以-30度和90度要分别换算成弧度。现在以256hz的采样率对这个信号进行采样,总共采样256点。按照上面的分析,fn=(n-1)*fs/n,每两个点之间的间距就是1hz,第n个点的频率就是n-1。信号一共有3个频率:0hz、50hz、75hz,应该分别在第1个点、第51个点、第76个点上出现峰值,其它各点应该接近0。 图17 原始信号的波形图图18 原始信号经过fft后的波形图从上图中可以看到,在第1点、第51点、和第76点附近有比较大的值,经过fft后三点的幅值分别为512、192和25

43、6,三点附近的数据的幅值都近似为零。 按照公式,可以计算出直流分量为:512/n=512/256=2;50hz信号的幅度为:192/(n/2)=192/(256/2)=1.5;75hz信号的幅度为256/(n/2)=256/(256/2)=2。可见,从频谱分析出来的幅度是正确的。4.5.2 倒位序算法分析按时间抽取(dit)的fft算法通常将原始数据倒位序存储,最后按正常顺序输出结果x(0),x(1),.,x(k),.。假设一开始,数据在数组floatdatar128中,我们将下标i表示为(b6b5b4b3b2b1b0)b,倒位序存放就是将原来第i个位置的元素存放到第(b0b1b2b3b4b5

44、b6)b的位置上去.由于c语言的位操作能力很强,可以分别提取出b6、b5、b4、b3、b2、b1、b0,再重新组合成b0、b1、b2、b3、b4、b5、b6,即是倒位序的位置。这种算法充分利用了c语言的位操作能力。程序段如下(假设128点fft):int b0=b1=b2=b3=b4=b5=6=0;b0=i&0x01;b1=(i/2)&0x01;b2=(i/4)&0x01;b3=(i/8)&0x01;b4=(i/16)&0x01;b5=(i/32)&0x01;b6=(i/64)&0x01;invert_pos=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;4.5.3

45、实数蝶形运算算法图19蝶形图蝶形公式:x(k) = x(k) + x(k+b)wpn x(k+b) = x(k) - x(k+b) wpn其中wpn= cos(2p/n)- jsin(2p/n)。设 x(k+b) = xr(k+b) + jxi(k+b), x(k) = xr(k) + jxi(k),有:xr(k)+jxi(k)= xr(k)+jxi(k)+ xr(k+b) + jxi(k+b)* cos(2p/n)-jsin(2p/n);继续分解得到下列两式: xr(k)= xr(k)+ xr(k+b) cos(2p/n)+ xi(k+b) sin (2p/n) (1)xi(k)= xi(k

46、)-xr(k+b) sin(2p/n)+xi(k+b)cos (2p/n) (2) 需要注意的是: xr(k)、xr(k)的存储位置相同,所以经过(1)、(2)后,该位置上的值已经改变,而下面求x(k+b)要用到x(k),因此在编程时要注意保存xr(k)和xi(k)到tr和ti两个临时变量中。同理: xr(k+b)+jxi(k+b)= xr(k)+jxi(k)- xr(k+b)+jxi(k+b) * cos(2p/n)-jsin(2p/n)继续分解得到下列两式:xr(k+b)= xr(k)-xr(k+b) cos(2p/n)- xi(k+b) sin (2p/n) (3)xi(k+b)= xi

47、(k)+ xr(k+b) sin(2p/n)- xi(k+b) cos (2p/n) (4)注意: 在编程时, 式(3)、(4)中的xr(k)和 xi(k)分别用tr和ti代替。 经过式(3)后, xr(k+b)的值已变化,而式(4)中要用到该位置上的上一级值,所以在执行式(3)前要先将上一级的值xr(k+b)保存。 在编程时, xr(k)和 xr(k), xi(k)和 xi(k)使用同一个变量。通过以上分析,我们只要将式(1)、(2)、(3)、(4)转换成c语言语句即可。要注意变量的中间保存,详见以下程序段。tr=datark;ti=dataik;temp=datark+b;datark=d

48、atark+datark+b*cos_tabp+dataik+b*sin_tabp;dataik=dataik-datark+b*sin_tabp+dataik+b*cos_tabp;datark+b=tr-datark+b*cos_tabp-dataik+b*sin_tabp;dataik+b=ti+temp*sin_tabp-dataik+b*cos_tabp;4.5.4 ditfft算法的基本思想分析n点fft运算可以分成logn2级,每一级都有n/2个碟形。ditfft的基本思想是用3层循环完成全部运算(n点fft)。第一层循环:由于n=2m需要m级计算,第一层循环对运算的级数进行控制

49、。第二层循环:由于第l级有2l-1个蝶形因子(乘数),第二层循环根据乘数进行控制,保证对于每一个蝶形因子第三层循环要执行一次,这样,第三层循环在第二层循环控制下,每一级要进行2l-1次循环计算。第三层循环:由于第l级共有n/2l个群,并且同一级内不同群的乘数分布相同,当第二层循环确定某一乘数后,第三层循环要将本级中每个群中具有这一乘数的蝶形计算一次,即第三层循环每执行完一次要进行n/2l个碟形计算。可以得出结论:在每一级中,第三层循环完成n/2l个碟形计算;第二层循环使第三层循环进行2l-1次,因此,第二层循环完成时,共进行2l-1*n/2l=n/2个碟形计算。实质是:第二、第三层循环完成了第

50、l级的计算。几个要注意的数据:在第l级中,每个碟形的两个输入端相距b=2l-1个点。同一乘数对应着相邻间隔为2l个点的n/2l个碟形。第l级的2l-1个碟形因子wpn中的p,可表示为:p=j*2m-l其中j=0,1,2,.,(2l-1-1)5 系统调试与测试结果5.1 系统调试在完成本系统的过程中,我是按照模块化的思想来制作和调试的,这样大大地提高了系统制作效率,同时也给调试带来了很大的方便。然后在保证各指标和性能的前提下把做好的模块逐步级联起来。最后对整个系统进行调试直至满足设计要求。(1)前级信号调理电路调试前级电路的每个模块,在信号的处理中都不能引入噪声,每个模块都要都用通过示波器观察输

51、出的波形有没有出现失真和杂波干扰等现象。在处理低频信号的系统中,电源的噪声对系统的影响比较大,高频干扰一般比较小,所以每个模块的电源端都要加电容滤掉电源噪声。同时在每个模块级与级的连接上一定考虑阻抗匹配的问题。(2)系统电源电路的调试电源对系统的重要性是不言而喻的,一个系统的电源不仅要很稳定,同时电源的纹波也要非常小。所以电源调试过程中,先通过万用表测试电源的输出电压是否稳定,然后还要通过示波器观察输出的电压有没有很大的纹波。(3)系统整体联调在各模块调试通过后将各模块按系统电路图正确组装,将各模块程序进行合理综合,调试系统直到系统功能实现。5.2 测试方案与测试结果5.2.1 测试电路信号叠

52、加电路采用反向求和电路,将2路信号求和后输出,以便系统对多路信号进行测试,运放采用高精密、低噪声的op07。图20号叠加电路5.2.2 两路信号总功率测量由于实验室提供的能够模仿音频信号的且能方便测量的信号只有正弦信号,所以我们用信号发生器产生的两路信号通过叠加电路,然后进行测量,发现总功率相对误差的绝对值都小于5%。表2两路信号总功率测量频率(hz)信号总功率最大功率次大功率测量总功率误差f1=10k,f2=9k0.04978w0.03953w0.00900w0.04930w2.5%f1=1k,f2=3k0.05021w0.03990w0.01010w0.05000w0.4%f1=200,f

53、2=1000.05034w0.03925w0.01015w0.04940w1.9%f1=30,f2=200.05004w0.03900w0.01016w0.04916w1.7%5.2.3 单个频率分量测量单个频率分量测试时,峰峰值为100mv的电压信号测试的功率的误差明显大峰峰值为2.5v的电压信号,但整体误差都在10%内,能满足系统要求。表3单个频率分量测量结果电压峰峰值频率实际功率测量功率误差2.5v10k0.015625w0.014800w5.28%2.5v1k0.015625w0.015300w2.08%2.5v1000.015625w0.014950w4.32%1v10k0.0025

54、00w0.002298w8.08%1v1000.002500w0.002350w6.00%100mv1k0.000025w0.000023w8.00%100mv1000.000025w0.000023w8.00%5.3 误差分析本系统误差,经分析可见由以下几部分组成:数据后期处理计算误差;a/d转换器量化误差;fft运算频谱泄露误差;显示误差。上述误差中项误差主要由计算引入。对此部分误差,通过反复测量,最终通过软件进行修正。项误差由a/d量化的误差,以及通道噪声引入。项误差由于对数据进行加窗取样,产生截断效应造成。当取样时间不为周期信号整数倍时经fft后其频率分量将泄漏。项误差是因为lcd屏幕

55、大小有限,分辨力不够,显示时可能造成观察上的微小误差。6 结束语本次毕业设计是在2007年全国大学生电子设计竞赛a题音频信号分析仪的基础上进行的设计制作的,基本完成了系统设计的要求。在系统的研制过程中,我深切体会到,理论联系实际的重要性。本次设计是对我四年所学知识的一次综合性检测和考验,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我对网络资源认识,大大提高了查阅资料的能力和效率,使我有充足的时间投入到电路设计当中。参考文献1康华光.电子技术基础模拟部分m(第四版).北京:高等教育出版社,1999.2康华光.电子技术基础数字部分m(第四版).北京:高等教育出版社,2000.3谢自美.电子线路设计实验测试m(第三版).武汉:华中科技大学出版社,2006.4张永瑞.电子测量技术基础m(第二版)西安:西安电子科技大学出版社,2009.5谭浩强.c程序设计m北京:清华大学出版社,2006.6丁玉美,高西全.数字信号处理m(第二版

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论