FFT—音频频谱设计
文章目录
- 1. 频谱简介
- 1.1 FFT简介
- 2. 程序设计
- 2.1 系统框图
- 2.2 源码
1. 频谱简介
频谱:信号的一种新的表示方法
1.1 FFT简介
在数字信号处理中常常需要用到离散傅里叶变换(DFT),以获取信号的频域特征。传统的DFT算法计算量大,耗时长,不利于计算机实时对信号进行处理。
FFT是一种DFT的高效算法,称为快速傅里叶变换(Fast Fourier Transform),它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅里叶变换的算法进行改进获得的。
假设信号频率为F,采样频率为Fs,采样点数为N:
那么FFT之后结果就是N个复数;
每一个复数对应着一个频率点,频率间隔(分辨率)为Fs/N;
第一个点表示直流分量(频率为0Hz),第n个点频率为Fn=(n-1)*Fs/N;
各频率点下复数的模值,就是该频率下正弦信号的幅度特性;
FFT结果具有对称性,通常我们只使用前半部分的结果。
2. 程序设计
使用FPGA开发板采集音频信号,然后使用Altera FFT IP核对输入的音频信号进行傅里叶变换,并将其频谱显示到4.3寸RGB TFT-LCD上。
2.1 系统框图
2.2 源码
module FFT_audio_lcd(input sys_clk,input rst_n,// WM8978接口output aud_mclk,input aud_bclk, input aud_lrc, input aud_adcdat, output aud_dacdat, output aud_scl, inout aud_sda,//LCD接口output lcd_hs,output lcd_vs,output lcd_de,output [15:0] lcd_rgb,output lcd_bl,output lcd_rst,output lcd_pclk);//wire define
wire clk50M;
wire clk10M;wire audio_valid;
wire [15:0] audio_data;wire fft_sop;
wire fft_eop;
wire fft_valid;
wire [15:0] fft_data;//*****************************************************
//** main code
//***************************************************** //锁相环模块
pll pll_inst (.inclk0 (sys_clk),.c0 (aud_mclk),.c1 (clk50M),.c2 (clk10M));//例化WM8978控制模块
wm8978_ctrl u_wm8978_ctrl(.clk (clk50M),.rst_n (rst_n),.aud_bclk (aud_bclk), // WM8978位时钟.aud_lrc (aud_lrc), // 对齐信号.aud_adcdat (aud_adcdat), // 音频输入.aud_dacdat (aud_dacdat), // 音频输出.aud_scl (aud_scl), // WM8978的SCL信号.aud_sda (aud_sda), // WM8978的SDA信号.dac_data (audio_data), // 输出的音频数据.adc_data (audio_data), // 输入的音频数据.rx_done (audio_valid), // 一次接收完成.tx_done () // 一次发送完成);//对输入的音频数据进行傅里叶变换
FFT_top FFT_u(.clk_50m (clk50M),.rst_n (rst_n),.audio_clk (aud_bclk),.audio_data (audio_data),.audio_valid (audio_valid),.data_modulus (fft_data),.data_sop (fft_sop),.data_eop (fft_eop),.data_valid (fft_valid));//RGB_LCD 显示模块
LCD_top LCD_u(.clk50M (clk50M),.clk10M (clk10M),.rst_n (rst_n),.lcd_hs (lcd_hs),.lcd_vs (lcd_vs),.lcd_de (lcd_de),.lcd_rgb (lcd_rgb),.lcd_bl (lcd_bl),.lcd_rst (lcd_rst),.lcd_pclk (lcd_pclk),.fft_data (fft_data),.fft_sop (fft_sop),.fft_eop (fft_eop),.fft_valid (fft_valid));endmodule
子模块详见FFT—音频频谱设计
FFT—音频频谱设计相关推荐
- STM32F103+全彩LED显示屏+万年历闹钟+FFT音频频谱制作
目录 1.硬件总体框图 2.材料准备 3.IO口的连接 4.自制的模块 5.源程序及其相关模块资料 6.最终效果演示 1.硬件总体框图 工作原理:电脑,手机等外部设备3.5mm耳机孔输出音频信号,经过 ...
- 音频频谱 via FFT
音频频谱 via FFT 频谱和均衡器 声音信号的时域和频域 FFT AudioSpectrum sample 工作流程 源代码 _readAudioData 函数 FFTUtil::calc 函数 ...
- 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)
音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...
- 一步一步教你实现iOS音频频谱动画(一)
如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...
- php绘制频谱图,一步一步教你实现iOS音频频谱动画(二)
本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲述数据处理和动画的绘制. 前言 在上篇文章中我们已经拿到了频谱数据,也知道了数组每个元素表示的是振幅,那这些数组元素之间有什么关系呢? ...
- 音频断句Matlab,一步一步教你实现iOS音频频谱动画(二)
如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲述数据处理和动画的绘制. 前言 在上篇文章中我们已 ...
- Processing Arduino 音频频谱显示
文章目录 前言 一.音频频谱简介 二.使用Minim库显示音频频谱 2.1 Minim文档中的例子 2.2 部分代码的解释 2.3 改写对数平均的频谱显示 三.调整优化 3.1 节奏匹配 3.2 锯齿 ...
- 音频频谱图(自定义View——进阶篇2)
音频频谱 + 波形图绘制 我们经常有看到音乐播放器播放界面会有频谱图显示,感觉很炫,今天我就带大家来实现频谱图,顺便将波形图绘制也分享给大家,这里重点讲频谱这块.我们这里的频谱采用8分频fft,这里 ...
- 音频频谱显示-显示音频文件静态频谱图(一)
音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...
最新文章
- 用c语言编写心里测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...
- 用UltraISO制作支持windows 7的U盘启动盘
- MySQL自带工具使用介绍
- 推荐四十多条纯干货 Java 代码优化建议
- Entity Framework Core生成的存储过程在MySQL中需要进行处理及PMC中的常用命令
- java单例模式_java设计模式-单例模式
- mac读写ntfs工具
- 【2013年04月18号】
- 使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework
- L2Dwidget.js L2D网页动画人物添加
- mysql 对日期的处理函数_MySQL日期处理函数
- C/C++_宏定义神仙级用法 实现枚举字符串互转
- vsftpd的参数说明和虚拟用户配置
- 信息技术测试计算机疑难问题处理,江苏省中小学信息技术等级考试常见问题处理.doc...
- Vue入门项目:学生管理系统之班级管理 【含源码】
- 一元三次方程c语言程序,一元三次方程求解
- 5g局域网传输速度_4G5G和上网带宽与下载速度的换算方法
- vscode 全局背景图片设置 background
- wordpress友联_WordPress制作独立的友情链接(Links)页面
- 安卓系统 samba服务器搭建,介绍在电脑上建samba服务器的方法 安卓samba服务器的安装方法...
热门文章
- 支付宝 收款通知 mysql_基于支付宝微信通知的一种个人收款回调方案(转)
- 社群团购到底有哪些优势?为什么社群团购很容易打造爆品?
- uni-app的由来
- ZYNQ开发系列——双串口打印以及串口波特率设置
- STM32芯片的ADC引脚的识别与选择
- 2019年3月WHQL认证最新申请流程
- transforms.ToTensor()与transforms.Normalize()函数解析
- 《『EcmaScript』之理顺Js中的四种继承
- http状态码有哪些 ,表示了什么
- 从数据库读取数据,该数据作为参数传入万得的wsd命令中