kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 设计应用> 基于FPGA与单片机的音频频谱分析系统设计
基于FPGA与单片机的音频频谱分析系统设计
来源:微型机与应用2013年第1期
李明明,李 宏,王晨波
(宁波大学 信息科学与工程学院,浙江 宁波 315211)
摘要:详细介绍了一种基于FPGA与单片机的音频频谱分析系统的实现。整个系统由信号预处理电路、单片机最小系统和FPGA目标板模块3部分组成。预处理电路负责声音-电压信号的转换以及电压信号的放大;单片机最小系统完成音频信号的测频、采集与存储、LCD液晶屏的频谱显示以及相关的时序控制工作;FPGA部分对单片机ADC所采集的音频信号进行快速傅里叶变换(FFT),然后将变换后的结果返回并在液晶屏上显示。系统实现了对20 Hz~20 kHz音频信号的采集与频谱分析,该系统具有较好的实时性和准确性,频谱刷新时间小于0.5 s,最大误差约为10%。
Abstract:
Key words :

摘 要:详细介绍了一种基于FPGA单片机音频频谱分析系统的实现。整个系统由信号预处理电路、单片机最小系统和FPGA目标板模块3部分组成。预处理电路负责声音-电压信号的转换以及电压信号的放大;单片机最小系统完成音频信号的测频、采集与存储、LCD液晶屏的频谱显示以及相关的时序控制工作;FPGA部分对单片机ADC所采集的音频信号进行快速傅里叶变换(FFT),然后将变换后的结果返回并在液晶屏上显示。系统实现了对20 Hz~20 kHz音频信号的采集与频谱分析,该系统具有较好的实时性和准确性,频谱刷新时间小于0.5 s,最大误差约为10%。
关键词:音频;频谱分析;FFT;单片机;FPGA

频谱分析仪(Spectrum Analyzer)是指能以模拟或数字方式显示信号频谱的仪器。频谱分析仪的主要用途是对动态变化的信号进行频域上的分析,其研究的对象可以是电子设备,也可以是机械系统,并且不一定要求是线性系统。其应用情况大致可分为两类:一类是用于通信系统和电子系统的监测,例如测试各种天线的驻波比,对信号进行调制分析,监视电台的工作情况以及无线电频谱占用情况等;另一类是对一些低频系统和机械系统进行动态分析,例如冲击信号、振动信号及声音信号的分析,对机械结构进行振动模态分析和设备的故障诊断等。此外,频谱分析仪还广泛应用于航空航天、地质、建筑、气象和医学等领域。
本文以FPGA与C8051F020单片机为核心,设计并制作一个音频频谱分析系统。该系统能对音频信号进行实时采样与分析并在液晶屏上显示频谱,同时可根据输入信号频率的不同自动调整采样频率以达到更小的频谱分辨率。
本系统的设计主要包括硬件设计和软件设计两部分。硬件设计包括信号预处理电路和单片机最小系统的设计,其中预处理电路包括音频信号的声音-电压转换以及电压信号的放大;软件设计主要包括单片机C语言编程以及FPGA的VHDL语言编程来实现音频信号的采集与存储、快速傅里叶变换(FFT)以及音频频谱的LCD液晶屏显示。
1 系统方案设计
图1为总体方案设计框图。驻极体话筒将外部声音信号转变为电压信号,放大电路将该电压信号放大到适合单片机A/D采样的幅值,当单片机ADC采满一定点数(即FFT点数)之后,单片机将该组数据发往FPGA,由FPGA进行FFT后再将变换结果发送回单片机,最终由单片机作相应处理并在LCD液晶屏上显示所采集信号的频谱图。通过按键可以让频谱分析系统在某一时刻暂停,以便于观察。

2 系统硬件设计
2.1 单片机系统设计
2.1.1 C8051F020微控制器

C8051F020器件是完全集成的混合信号系统级MCU芯片,具有64个数字I/O引脚。
2.1.2 JTAG接口设计
JTAG是Joint Test Action Group(联合测试行动小组)的缩写,是一种国际标准测试协议,最初是用来芯片测试的,还可用来在线编程,C8051F020单片机本身已经提供了该接口。
将TMS1、TCK1、TDI1、TDO1引脚直接与单片机端口相连即可,4个引脚分别为模式选择、时钟、数据输入和数据输出口。
2.1.3 ZLG7289模块设计
 为了设计与编程的方便,本设计直接采用ZLG7289芯片来进行按键和数码管模块设计,ZLG7289芯片可直接驱动8位共阴式数码管,同时还可以扫描多达64只按键。
2.2 声压信号转换电路设计
 本文采用驻极体话筒输入音频信号,此类话筒有两根引出线,漏极D与电源正极之间接一漏极电阻R,信号由漏极经一隔直电容输出,这种接法有一定的电压增益,话筒的灵敏度比较高,但动态范围比较小。在实际使用中,场效应管在电路中的状态不仅决定了话筒能否正常工作,而且决定了话筒工作性能的好坏。
 场效应管的电路状态取决于负载电阻R和电压V的大小。一般应取电源电压的1/2较为合适。应保证RL的阻值要始终大于话筒输出阻抗的3~5倍才能使话筒处于良好的匹配状态。由于话筒的输出阻抗在2 kΩ左右,因此RL至少要在10 kΩ以上才能满足要求。
 取RL为10 kΩ,隔直电容取1 μF。电路原理如图2所示。

2.3 音频信号放大电路设计
 因为单片机ADC的基准电压为2.4 V,所以语音信号变化范围为0~2.4 V最为合适,而实际驻极体话筒的输出电压范围不到2.4 V,故需要对其作放大处理。本文采用集成运放LF353对语音信号放大以满足单片机的采集电压。
3 软件系统设计
3.1 FPGA设计

 FPGA部分的设计主要包括SPI通信模块、输入缓冲模块、FFT运算模块、时序控制模块、输出缓冲模块及时钟产生模块等。本文着重介绍SPI通信模块和时序控制模块的设计。
3.1.1 SPI通信模块
 SPI(Serial Peripheral Interface)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设备可以是Flash、RAM、网络控制器、LCD显示驱动器和A/D转换器等。
SPI总线系统的接口一般采用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线(CS)。
 其中,CS指此外围设备是否被选中,也就是说只有片选信号CS为预先规定的使能信号时(高电位或低电位),对此设备的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就是负责通信的3根线了。通信是通过数据交换完成的,首先SPI是串行通信协议,也就是说数据是一比特一比特的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,MISO、MOSI则基于此脉冲完成数据传输。数据通过 MOSI线输出,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,完成一位数据传输。输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8 bit数据的传输。SPI通信模块设计如图3所示。

 由于FFT的运算结果包括实数部分(8位)、虚数部分(8位)和指数部分(6位)共22位,为方便数据处理,取N为32。其中mosi为串行输入口,接收单片机发送过来的数据,并从data_R[31..0]端口并行输出;FPGA发往单片机的数据由data_T[31..0]并行输入,通过miso口串行发往单片机。
3.1.2 时序控制模块
 由FFT时序图可知,要使FFT模块正常工作,需要给出sink_valid、sink_sop及sink_eop 3个输入信号,sink_valid为高电平即可,而sink_sop与sink_eop则需要每隔256个时钟出现一次高电平,其他时间维持低电平,以表示有效数据输入号的开始与结束。因此,用VHDL语言设计了一个有限状态机来输出上述3种控制信号。生成的控制模块如图4所示。

 reset_n为状态机复位信号,低电平有效,状态机复位到初始状态(即下图中的idle状态)。clk为该状态机的工作时钟输入口,与FFT的工作时钟相同。sink_ready与FFT模块中的sink_ready输出相连,即只有当FFT模块数据接收准备信号有效时,该控制模块才开始输出控制信号。
3.2 单片机软件设计
3.2.1 单片机软件流程控制

 C8051F020单片机主要完成音频信号的采集、存储与频谱的LCD显示。C8051F020单片机的ADC1主要有向AD1BUSY写1启动、定时器3溢出启动、CNVSTR上升沿启动和定时器2溢出启动4种启动方式。通过配置ADC1控制寄存器ADC1CN中的AD1CM2-0来选择其中一种。考虑到单片机定时的精确度不够,故采用CNVSTR上升沿来启动ADC1,外部启动信号由FPGA系统时钟分频产生。配置时只要将端口I/O交叉开关寄存器XBR2中的位0置1,CNVSTR端口将连接到引脚,若无其他更高优先级的端口连接被配置,CNVSTR将被分配到P0.0口。每次ADC1的启动就由P0.0口的上升沿来控制。主程序流程图如图5所示。

3.2.2 LCD频谱显示设计
所使用的LCD液晶屏点数为128×64,即水平方向有128个像素点,垂直方向有64个像素点。由于FFT变换长度为256个点,其中有效点数为128个,刚好可以一一对应显示,一个像素点对应一个频点。幅值方面可以作适当量化,将最大幅值(2.4 V)量化为64,该液晶屏便可完整显示音频信号的频谱了。
4 FFT频谱分析测试
4.1 正弦信号测试

此时系统自动设定采样率为1 kHz,可计算得出频率分辨率约为3.9 Hz,用信号发生器产生3.9 Hz的正弦信号,幅值为0~2.4 V,观察到的频谱图如图6所示。

实际测试中,LCD液晶屏上的频谱实时地随着外部音频信号的变化而变化,刷新时间小于0.5 s,达到了较高的实时性。
本文综述了频谱分析系统的研究意义,完成了音频频谱分析系统的设计和制作,并对其进行了性能测试。测试结果表明,整个系统能够顺利采集音频信号并进行处理,最终在LCD液晶上显示所采集的频谱图,其达到一个较好的性能,实现了预期的效果。
参考文献
[1] 倪铭.浅谈频谱分析[J].淮南职业技术学院学报,2007(1):50-52.
[2] 王琦.频谱分析仪的原理[J].中国无线电管理,2000,2(1):23-25.
[3] 王春菊.数字式频谱分析仪原理分析[J].标准、检测与仪器,2001(12):95-96.
[4] 班万荣.频谱分析仪的原理与发展[J].现代电子技术,2005(7):101-102.
[5] 叶永杰,彭小名,李世杰.一种基于FPGA的数字化频谱分析技术[J].通信对抗,2005(1):22-26.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map