FPGA-音频模块开发(一)

这篇具有很好参考价值的文章主要介绍了FPGA-音频模块开发(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本实验将实现音频模块和FPGA之间的数据通信,通过音频模块把麦克风输入的语音数据存储到SDRAM存储器里,再把音频数据发送给音频模块,从耳机接口进行语音的播放,从而实现录音和播放的功能。

这里简单介绍一下音频模块AN831用到的音频编/解码芯片WM8731。该芯片在本设计中主要完成声音信号在采集和回放过程中的A/D和D/A转换功能。该芯片的ADC和DAC的采样频率为8KHZ到96KHZ可调,可转换的数据长度为16-32位可调。WM8731的内部有11个寄存器。该芯片的初始化以及工作时的工作状态和功能都是通过I2C总线方式对内部的这11个寄存器进行相应的配置来实现的。本设计中WM8731工作于主模式,采样频率设为48KHZ,转换的数据位长度为16位。WM8731的数字音频接口有5根引脚,分别为:BCLK(数字音频位时钟)、DACDAT(DAC数字音频数据输入)、DACLRC(DAC采样左/右声道信号)、ADCDAT(ADC数字音频信号输出)、ADCLRC(ADC采样左/右声道信号)。在本设计中FPGA为从设备,WM8731为主设备。ADCDAT、DACDAT、ADCLRC和DACLRC与位时钟BCLK同步,在每个BCLK的下降沿进行一次数据传输。在本系统中FPGA和WM8731的控制和数据通信将用到I2C和数据音频总线接口。FPGA通过I2C接口配置WM8731的寄存器,通过I2S总线接口来进行音频数据的通信。

FPGA-音频模块开发(一)

可以从时序图看出,数据被采样是在BCLK的上升沿(两个设备以某种通信协议通信,必须双方都遵从,如i2s,上升沿接受数据,下降沿发送数据,那么主从设备都是上升沿采样,下降沿发送),时序图中出现的1/fs为一个周期,完成了一次数据的收发(左右声道)。每一次收发数据的开始,从ADCLRC/DACLRC的上升沿开始,到下一个上升沿结束。

FPGA-音频模块开发(一)top

 FPGA-音频模块开发(一)

该模块主要用于通过I2S通信协议对WM8731音频芯片AD输出的数据进行采样(接收)以及将存储的数据发送给WM8731进行DA 。

FPGA-音频模块开发(一) 

由于SDRAM存储数据的mem_clk与FPGA内部的clk不同步,所以需要一个跨时域的数据交互,以便数据由CLK到MEM_CLK这个时域。

并输出给SDRAM控制器burst_data/burst_len/burst_addr。

FPGA-音频模块开发(一)

 Pll倍频输出的MEM_CLK走线

FPGA-音频模块开发(一)

通过I2C配置WM8731 

 top.v

FPGA-音频模块开发(一)

FPGA-音频模块开发(一) 

FPGA-音频模块开发(一) 

FPGA-音频模块开发(一) 

FPGA-音频模块开发(一) 

顶层设计可以由(Analysis&Synthesis中的Netlist Viewers RTL)即上面的顶层模块电路图看出具体设计。

 文章来源地址https://www.toymoban.com/news/detail-409303.html

到了这里,关于FPGA-音频模块开发(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DTMF双音频信令检测,基于Goertzel(戈泽尔算法),FPGA实现

    目录 1.引言 2.细节介绍 3.DTMF双音频信号的产生 4.DTMF双音频信号的检测 4.1(Goertzel)戈泽尔算法的使用 4.2戈泽尔算法的详细计算过程  4.3计算的优化 4.3.1时间复杂度方面 4.3.2空间复杂度方面 4.4算法的具体实现 4.4.1从串行思维入手 4.4.2如何减少资源的使用 4.5仿真 5.源码分享

    2023年04月26日
    浏览(86)
  • 物联网开发笔记(51)- 使用Micropython开发ESP32开发板之通过MAX98357 I2S音频模块播放音乐

    一、目的         这一节我们学习如何使用我们的ESP32开发板来播放音乐。 二、环境         ESP32 + MAX98357 I2S音频模块 + Thonny IDE + 几根杜邦线 接线方法: 三、代码     代码1,播放wav格式文件:wav格式文件几百K,别太大ESP32存储空间有限。 音频格式转换网站: 在线转

    2024年02月16日
    浏览(50)
  • 通用读写仲裁模块(FPGA实现)

      当涉及多个模块向同一个模块进行读写操作、向一个半双工模块请求读写,甚至综合一下,多个模块向一个半双工模块发起读写请求,那就要涉及读写仲裁。因为最近做的项目中涉及的读写仲裁太多了,所以就想还是要写一个通用的读写仲裁模块,最好还是具备“凡请求

    2024年02月07日
    浏览(40)
  • 【Python】串口通信-与FPGA、蓝牙模块实现串口通信(Python+FPGA)

    🎉欢迎来到Python专栏~与FPGA、蓝牙模块实现串口通信 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ Python与FPGA串口通信

    2024年02月15日
    浏览(45)
  • fpga verilog rs232 发送模块实现

    RS-232是一种串行通信协议,用于在计算机和其他外部设备之间进行数据传输。RS-232定义了电气特性、信号级别、机械特性和传输速率等规范,为串行通信提供了一种标准化的接口。 RS-232通常使用DB9连接器,用于传输和接收数据、控制信号以及地线连接。 但除了235脚其它基本

    2024年02月03日
    浏览(52)
  • 【FPGA】用Verilog语言实现呼吸灯实验

    包含两个输入信号:系统时钟(sys_clk)以及复位信号(sys_rst_n)。 一个输出信号:led_out 通过PWN来控制呼吸灯的亮、灭程度 前一周期为:完全熄灭 —— 完全点亮 后一周期为:完全点亮 —— 完全熄灭 完全熄灭 —— 完全点亮 、 完全点亮 —— 完全熄灭 时间均为1s 由板子频

    2024年02月11日
    浏览(60)
  • FPGA在校学习记录系列---实验4不同状态的LED+开发板(Verilog HDL)

    此系列记录FPGA在学校的学习过程。 FPGA系列 需要用到的软硬件: 软件:Quartus II 15.0 (64-bit) 硬件: 5CEBA4F23C7芯片 链接: FPGA在校学习记录系列—新建一个FPGA工程编写程序并仿真(Verilog HDL) 创建的工程名字为:LED (这次不用仿真,直接用开发板验证) 编译文件 按键资源:

    2024年04月09日
    浏览(49)
  • SPI简介及FPGA通用MOSI模块实现

    SPI(Serial Peripheral Interface,串行外围设备接口)通讯协议 ,是Motorola公司提出的一种同步串行接口技术。是 一种高速、全双工、同步通信总线 。在芯片中只占用 四根管脚 用来控制及数据传输。 优缺点: SPI通讯协议的优点是支持全双工通信,通讯方式较为简单,且相对数据

    2024年01月25日
    浏览(39)
  • 【FPGA实验一】半加器全加器实现

    半加器 什么是半加器? 半加器是能够对两个一位的二进制数进行相加得到半加和以及半加进位的组合电路。 半加器的真值表 半加器表达式: 半加器电路图: 建立原理图 启动 Quartus II 软件,选择File-New Project Wizard,在出现的界面下先Next,填写工程的路径和名称,然后接着

    2024年02月12日
    浏览(45)
  • FPGA实现蜂鸣器播放音乐实验,以儿歌《两只老虎》为例

    ** ** 开发板上电后,通过蜂鸣器播放《两只老虎》。 原理:想要让蜂鸣器播放音乐,就需要知道每个音符的频率,再通过换算将频率转换为周期,再结合开发板具体的系统时钟周期,便可计算出每个音符对应多少个系统时钟周期个数,通过对这些个数计数,便可控制蜂鸣器播

    2024年02月15日
    浏览(132)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包