FPGA驱动WM8731音频收发全网最细讲解 提供2套工程源码和技术支持

news2024/12/25 0:55:56

目录

  • 1、前言
  • 2、WM8731音频解读
  • 3、vivado工程1介绍
  • 4、vivado工程2介绍
  • 5、上板调试验证
  • 6、资料获取

1、前言

本文用FPGA驱动WM8731音频芯片,实现音频相关的应用,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字音频应用领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

本设计提供两套vivado工程;
1:FPGA驱动WM8731实现音频环回工程;
2:FPGA驱动WM8731实现音频录音工程;

2、WM8731音频解读

WM8731音频解读我之前已经写过两篇文章,请前往参考;
链接1:https://blog.csdn.net/qq_41667729/article/details/120753491
链接2:https://blog.csdn.net/qq_41667729/article/details/120953453

3、vivado工程1介绍

设计框图如下:
在这里插入图片描述
FPGA作为i2s主机,WM8731作为i2s从机,这样设计的好处在于保证了时序的同步,即采集时钟和发送时钟都是同一个时钟,且这个时钟由FPGA提供,这样就不存在数据时钟不同源甚至不同步的问题,对数据采集而言具有高度科学性。。。
将i2c配置模块、音频接收模块、音频发送模块例化为一个顶层,代码如下:

module wm8731_i2s_slave(
	input  clk_100m  ,	//输入参考时钟   
	input  rst_n     ,	//低电平复位     
	input  i_adc_data,	//输入音频ADC串行数据   
	output o_av_bclk ,	//输出i2c音频时钟       
	output o_adc_rlc ,	//输出ADC左右声道信号       
	output o_dac_rlc ,	//输出DAC左右声道信号  	   
	output o_dac_data,	//输出音频DAC串行数据	
	output o_aud_scl ,	//i2c配置
	inout  o_aud_sda 	//i2c配置
    );
	      
wire p_bclk;           
wire n_bclk;		      
wire [31:0] o_rx_data;

//i2s时序生成模块,这里是i2s主机模块,WM8731作为从机;
//SYS_CLK参数配置系统参考时钟;
//SAMPLE_RATE参数配置i2s采样率,这里设置为48K;
//SAMPLE_DEEP参数配置采样深度,这里设置为32位;
i2s_slave_time #(
	.SYS_CLK     (100_000_000),
	.SAMPLE_RATE (48_000     ),
	.SAMPLE_DEEP (32         )
)
u_i2s_slave_time(
	.clk_100m         (clk_100m         ),
	.rst_n            (rst_n            ),
	.o_av_bclk        (o_av_bclk        ),
	.o_adc_rlc        (o_adc_rlc        ),
	.o_dac_rlc 	      (o_dac_rlc 	    ),
	.p_bclk           (p_bclk           ),
	.n_bclk		      (n_bclk		    )             	
    );

//音频接收模块,将串行ADC数据转为32位的并行ADC数据
//SAMPLE_DEEP可配置采样深度
i2s_slave_rx #(
	.SAMPLE_DEEP(32)
)
u_i2s_slave_rx(
	.clk_100m         (clk_100m         ),
	.rst_n            (rst_n            ),
	.i_adc_rlc        (o_adc_rlc        ),
	.i_adc_data 	  (i_adc_data		),
	.i_p_bclk         (p_bclk           ),
	.i_n_bclk         (n_bclk		    ),	
	.o_rx_data        (o_rx_data        ), 	   	       
	.o_rx_done        (                 )                             	
    );

//音频发送模块,将32位并行DAC数据转为串行ADC数据
//SAMPLE_DEEP可配置采样深度
i2s_slave_tx #(
	.SAMPLE_DEEP(32)
)
u_i2s_slave_tx(
	.clk_100m         (clk_100m         ),
	.rst_n            (rst_n            ),
	.i_dac_rlc        (o_dac_rlc 		),
	.i_adc_data 	  (o_rx_data 		),
	.i_p_bclk         (p_bclk           ),
	.i_n_bclk         (n_bclk		    ),	
	.o_dac_data       (o_dac_data       ), 	   	       
	.o_tx_done        (					),
	.p_rlc_edge       (                 )                                     	
    );

//WM8731 i2c配置模块
wm8731_config wm8731_config(
    .clk     (clk_100m         ),                  // 时钟信号
    .rst_n   (rst_n            ),                  // 复位信号   
	.i2c_ack (                 ),                  // I2C应答标志 0:应答 1:未应答
    .aud_scl (o_aud_scl        ),                  // wm8731的SCL时钟
    .aud_sda (o_aud_sda        )                   // wm8731的SDA信号
);
endmodule

基于此,设计了FPGA驱动WM8731实现音频环回工程;
工程架构如下:
在这里插入图片描述
开发板FPGA型号:xc7k410tffg676-2;
输入:麦克风,即ADC输入;
输出:耳机,即DAC输出;
应用:WM8731的音频回环测试;

工程源码架构如下:
在这里插入图片描述
FPGA资源消耗如下:
在这里插入图片描述

4、vivado工程2介绍

设计框图如下:
在这里插入图片描述
开发板FPGA型号:xc7k410tffg676-2;
输入:麦克风,即ADC输入;
输出:耳机,即DAC输出;
应用:WM8731的音频录音测试;

工程Block Design架构如下:
在这里插入图片描述
工程源码架构如下:
在这里插入图片描述

5、上板调试验证

由于板子不方便带回家录视频,所以演示就不给出了,请谅解。。。

6、资料获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
网盘资料如下:
在这里插入图片描述
FPGA驱动WM8731实现音频环回工程源码获取链接:https://download.csdn.net/download/qq_41667729/87781868
FPGA驱动WM8731实现音频录音工程源码获取链接:https://download.csdn.net/download/qq_41667729/87781869

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ae 首选项:启动和修复

使用“首选项”里面的启动和修复 Start and Repair面板,可以解决 Ae 中的首选项设置问题,而无需更改、删除或者重新进行设置。 启动选项 Startup Options 启用主屏幕 Enable Home Screen 确定是否在启动 Ae 时显示主屏幕。 更改将在下次启动时有效。 显示…

element-plus 问题

对话框内部下拉框会在左上角 在对话框内打开下拉框后点击关闭按钮,尚未关闭的下拉框会在左上角出现(或闪现) 解决方案: popper-append-to-body 此方法失效,改用 :teleported"false" teleported:…

JDBC和数据库连接池

文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 JDBC 概述基本介绍模拟JDBCJDBC 带来的好处 JDBC 快速入门JDBC 程序编写步骤JDBC 第一个程序 获取数据库连接5种方式方式1…

接入 GPT-4 的 AI 虚拟女友,一周狂挣 50 万!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 随着 ChatGPT 的爆火,互联网上也衍生出不少令人直呼脑洞大开的 AI 应用。 最近,国外一位名为 Caryn Marjorie 的小姐姐搞了个骚操作,基于 GPT-4 调教出来…

Spring Cloud LoadBalancer是什么?

什么是Spring Cloud LoadBalancer Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代 Ribbon。 Spring官方提供了两种负载均衡的客户端: RestTemplate RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTempla…

30从零开始学Java之详解面向对象的7种创建方式

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中,壹哥给大家介绍了Java中的类及其特点、创建过程等内容,相信你…

【Nginx高级篇】Lua基础语法和OpenResty的安装

目录 一、前言 二、Lua基础语法 hello world 保留关键字 注释 变量 字符串 空值 布尔类型 作用域 控制语句 if-else for循环 函数 赋值 返回值 Table 数组 遍历 成员函数 三、openresty的安装 (一)预编译安装 (二&…

VMware中Ubuntu拓展磁盘容量的两种方式 图形化方式命令行磁盘分区方式(亲测有效简单且详细)linux磁盘分区

文章目录 前言1. 软件设置扩容2. 容量查看3. 容量拓展实现3.1 图形化容量拓展分配3.2 磁盘命令行方式拓展容量3.2.1 确定磁盘挂载目录3.2.2 系统磁盘扩容 4. 分盘扩容TIPS:总结: 前言 在用VMware虚拟机的情况下,一开始分配的容量在使用过程中…

PMP项目管理-[第十二章]采购管理

采购管理知识体系: 规划采购管理: 实施采购: 控制采购: 12.1 规划采购管理 定义:记录项目采购决策、明确采购方法、识别潜在卖方的过程 作用:确定是否从项目外部获取货物或服务.如果是,则还要确…

循环结构程序设计

一、循环结构语句 C语言提供了三种循环语句(for语句)、while语句和do-while语句。 for语句: for(表达式1 ; 表达式2 ; 表达式3) {   循环体语句; } for语句的执行过程: 首先计算表达式1。判断…

【LED子系统】五、核心层详解(二)

个人主页:董哥聊技术 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录…

基于B/S架构、可替代付费商业软件的一站式量化交易平台

产品简介 这是一个面向程序员的量化交易软件,用于期货、股票、外汇、炒币等多种交易场景,实现自动交易。已对接了CTP接口(国内期货)、老虎证券接口(美股港股)。 功能特性: 一站式平台&#x…

Protell99SE祭文

Protell99SE祭文 大概是在21年前的今天,我和你结合在一起,陪伴走过无数的设计。 我的感觉,大概是在2021年吧,你逐渐离我远去。啊,Protel99SE时代一去不复返了。 我用了你21年,虽着AD软件的到来&#xff…

【C++】19.C++11

1.C11 auto 范围for 新容器 线程库列表初始化右值引用和移动语义 lambda表达式容器支持花括号列表初始化 本质是增加一个initializer_list的构造函数initializer_list支持花括号 2.列表初始化 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <ve…

​数字化转型升级之工业元宇宙与AIGC

月説小飞象交流会 生活就是&#xff0c;面对复杂&#xff0c;保持欢喜。心烦时&#xff0c;记住三句话&#xff1a;1、算了吧。2、没关系。3、会过去的。 内部交流│24期 数字化转型升级 工业元宇宙与AIGC data analysis ●●●● 分享人&#xff1a;李铁军 ‍ 现如今数字化不再…

定风波、渡重山、至未来:2023中国数字能源生态大会开启的新旅程

全球碳中和的时代背景下&#xff0c;面向3060发展目标&#xff0c;新使命、新技术、新应用的到来&#xff0c;都给能源产业带来了持续变革的必要性与可能性。 2023年5月11日&#xff0c;在2023中国数字能源生态大会上&#xff0c;华为数字能源技术有限公司总裁侯金龙发表了“融…

【微电网】含风、光、储联合发电的微电网优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用

. IDEA 下载 1、打开浏览器输入https://www.jetbrains.com/&#xff0c;进入 Jetbrains官网&#xff0c;点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2、点击中间的 Download&#xff0c;进入IDEA下载界面 3、选择左边的 Ultimate 版本进行下载安装。Ultimate 版…

心法利器[84] | 最近面试小结

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

让Chat-GPT成为你的微信小助理

前言 最近公司裁员风波&#xff0c;很不幸成为了裁员名单中的一员&#xff1b;此时又恰逢一波AIGC浪潮&#xff0c;首当其冲的就是GPT这样的大语言模型的诞生&#xff0c;是整个AI领域的一个质的飞跃。正好在这样一个空挡期&#xff0c;我就基于Chat-GPT 做了一些深入的实践&a…