文章目录

  • 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—音频频谱设计相关推荐

  1. STM32F103+全彩LED显示屏+万年历闹钟+FFT音频频谱制作

    目录 1.硬件总体框图 2.材料准备 3.IO口的连接 4.自制的模块 5.源程序及其相关模块资料 6.最终效果演示 1.硬件总体框图 工作原理:电脑,手机等外部设备3.5mm耳机孔输出音频信号,经过 ...

  2. 音频频谱 via FFT

    音频频谱 via FFT 频谱和均衡器 声音信号的时域和频域 FFT AudioSpectrum sample 工作流程 源代码 _readAudioData 函数 FFTUtil::calc 函数 ...

  3. 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)

    音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...

  4. 一步一步教你实现iOS音频频谱动画(一)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...

  5. php绘制频谱图,一步一步教你实现iOS音频频谱动画(二)

    本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲述数据处理和动画的绘制. 前言 在上篇文章中我们已经拿到了频谱数据,也知道了数组每个元素表示的是振幅,那这些数组元素之间有什么关系呢? ...

  6. 音频断句Matlab,一步一步教你实现iOS音频频谱动画(二)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 本文是系列文章中的第二篇,上篇讲述了音频播放和频谱数据计算,本篇讲述数据处理和动画的绘制. 前言 在上篇文章中我们已 ...

  7. Processing Arduino 音频频谱显示

    文章目录 前言 一.音频频谱简介 二.使用Minim库显示音频频谱 2.1 Minim文档中的例子 2.2 部分代码的解释 2.3 改写对数平均的频谱显示 三.调整优化 3.1 节奏匹配 3.2 锯齿 ...

  8. 音频频谱图(自定义View——进阶篇2)

    音频频谱 +  波形图绘制 我们经常有看到音乐播放器播放界面会有频谱图显示,感觉很炫,今天我就带大家来实现频谱图,顺便将波形图绘制也分享给大家,这里重点讲频谱这块.我们这里的频谱采用8分频fft,这里 ...

  9. 音频频谱显示-显示音频文件静态频谱图(一)

    音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...

最新文章

  1. 用c语言编写心里测试,求各位大神赐教!我做了一个“心理测试的答题卷”编程,总共有1...
  2. 用UltraISO制作支持windows 7的U盘启动盘
  3. MySQL自带工具使用介绍
  4. 推荐四十多条纯干货 Java 代码优化建议
  5. Entity Framework Core生成的存储过程在MySQL中需要进行处理及PMC中的常用命令
  6. java单例模式_java设计模式-单例模式
  7. mac读写ntfs工具
  8. 【2013年04月18号】
  9. 使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework
  10. L2Dwidget.js L2D网页动画人物添加
  11. mysql 对日期的处理函数_MySQL日期处理函数
  12. C/C++_宏定义神仙级用法 实现枚举字符串互转
  13. vsftpd的参数说明和虚拟用户配置
  14. 信息技术测试计算机疑难问题处理,江苏省中小学信息技术等级考试常见问题处理.doc...
  15. Vue入门项目:学生管理系统之班级管理 【含源码】
  16. 一元三次方程c语言程序,一元三次方程求解
  17. 5g局域网传输速度_4G5G和上网带宽与下载速度的换算方法
  18. vscode 全局背景图片设置 background
  19. wordpress友联_WordPress制作独立的友情链接(Links)页面
  20. 安卓系统 samba服务器搭建,介绍在电脑上建samba服务器的方法 安卓samba服务器的安装方法...

热门文章

  1. 支付宝 收款通知 mysql_基于支付宝微信通知的一种个人收款回调方案(转)
  2. 社群团购到底有哪些优势?为什么社群团购很容易打造爆品?
  3. uni-app的由来
  4. ZYNQ开发系列——双串口打印以及串口波特率设置
  5. STM32芯片的ADC引脚的识别与选择
  6. 2019年3月WHQL认证最新申请流程
  7. transforms.ToTensor()与transforms.Normalize()函数解析
  8. 《『EcmaScript』之理顺Js中的四种继承
  9. http状态码有哪些 ,表示了什么
  10. 从数据库读取数据,该数据作为参数传入万得的wsd命令中