首页 » 技术文章 » 单片机实现音频频谱显示的快速算法研究

单片机实现音频频谱显示的快速算法研究

作者:  时间:2010-11-11 23:54  来源:EDN

  基2-FFT算法的基本思想是用3层循环完成全部NFFT运算:(1)最里层循环处理单独的一个蝶形运算,采用查表方法实现乘法运算;(2)中间层循环完成每一级的N2个蝶形运算;(3)最外层循环完成log2N级蝶形运算。

  由此可看出:在每一级中,最里层循环完成N2L个蝶形运算;中间层循环控制最里层循环进行2L-1次运算。因此,中间层循环完成时,共进行2L-1xN2L=N2个蝶形运算。实际上最里层和中间层循环完成了第L级计算,最外层则最终完成log2N级蝶形运算。

  需要加以说明的数据是:(1)在第L级中,每个蝶形的两个输入端相距b=2L-1一个点;(2)同一乘数对应着相邻间隔为2L个点的N2L个蝶形;(3)L级的2L-1个蝶形因子WPN中的P,可表示为P=jx25-L,其中j=012…(2L-1-1)

  完成16FFT运算的RAM需求量是128字节,而单片机SST89V58RD2RAM1 K字节:显示器每10 ms刷新一次,而单片机SST89V58RD2的时钟频率是40 MHz,完成一次16FFT运算实际所需时间不到6 ms,因此该系统完全满足FFT运算的时间复杂度和空间复杂度要求。

  5 频谱值在VFD上的显示

  系统要求将音频信号频谱划分成14段,每段按14级量化,再使用VFD显示器显示,因此对于FFT运算结果还要作一定转换才能输出到显示器。第n点的FFT运算结果是复数,实部是dataRe[n],虚部是datalm[i]。该点的模值除以2N就是对应该频率下信号的幅度(对于第1个点则是除以N);该点的相位即是对应该频率下信号的相位。最后的结果保存在dataRe[i]中,因为音频信号频谱被划分成14段,所以dataRe[0]dataRe[15]的值应该舍去。同时,dataRe[i]可能不是整数,而VFD显示器要求每个频段按照14级量化,因此还需将dataRe[i]的值量化成014整数,最后输出到VFD电路上显示。

  6 结束语

  讨论了单片机实现音响系统频谱显示的快速傅里叶变换算法,针对SST89V58RD2单片机进行算法优化,并详细论述系统的实现方法,结果证明该方法具有可行性。

相关推荐

飞思卡尔CEO:新战略初现成效 未来更关注中国市场

飞思卡尔  单片机  2013-04-28

飞思卡尔携手周立功单片机 共同拓展中国MCU市场

飞思卡尔  MCU  单片机  2012-12-19

英飞凌为提高XMC4000单片机生产率免费提供DAVE 3

英飞凌  单片机  2012-04-20

英飞凌XMC4500工业单片机现已量产供货

英飞凌  单片机  XMC4500  2012-03-19

ZLG成为Energy Micro中国区合作伙伴

周立功  Energy  Micro  单片机  2011-12-19

Microchip第100亿颗PIC单片机交付三星电子

微芯科技  单片机  PIC32  2011-09-21
在线研讨会
焦点