数字信号处理实验操作教程:3-3 mp3音频编码实验(AD7606采集)

本文主要是介绍数字信号处理实验操作教程:3-3 mp3音频编码实验(AD7606采集),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验目的

学习AD7606采集音频数据的方法并掌握MP3音频编码的原理,并实现AD7606采集音频数据进行MP3编码并保存到SD卡。

二、实验原理

AD7606原理图

硬件原理图,找到AD采集,可查看相关控制引脚,同时可看到ADC输入的V1V8通道分别对应CON29CON36口。

image.png

image.png

A/D转换

A/D转换,即模数转换,是指将一个输入电压信号转换为一个输出的数字信号。一般分为四个步骤进行:取样、保持、量化和编码。前两个步骤在取样-保持电路中完成,后两步骤则在ADC中完成。

AD7606

TL6748-PlusTEB实验箱上的AD采集是基于 ADI AD7606 芯片进行设计的,具体特性如下:

八通道;

16bit采样;

支持串行和并行读取方式;

支持全部通道 200K 采样率并行采集和转换;

支持真正±10V 或±5V 的双极性信号输入。

模数转换工作过程

AD7606上8个通道的数据是同时采集,轮流转换的。

模数转换模块接到启动转换信号后,按照排序器的设置,开始转换第一个通道的数据;经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存;按顺序进行下一个通道的转换;如果为连续转换方式则从新开始转换过程;否则等待下一个启动信号。

image.png

音频编解码的主要对象是音乐和语音,音频的编解码格式可分为无压缩的格式、无损压缩格式、有损音乐压缩格式、有损语音压缩格式和合成算法。本实验中使用的MP3格式属于有损音乐压缩格式。音频编解码的目的是减少传输的信息量和减少储存的信息。

image.png

MP3音频格式

MP3是一个数据压缩格式,它丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据(类似于JPEG是一个有损图像压缩),从而达到了小得多的文件大小。

MP3音频可以按照不同的位速进行压缩,提供了在数据大小和声音质量之间进行权衡的一个范围,MP3格式使用了混合的转换机制将时域信号转换成频域信号。

特点:

(1)音质还原较好,压缩比比较高:10:1~12:1。

(2)软硬件支持好,应用领域广泛:随声听、MP3。

(3)文件体积较小,有利网络传输:网络主流音频格式。

(4)多次编辑后,音质会急剧下降。

(5)实现片内存储器、片内外设以及外部存储器之间的数据传输。

MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。它被设计用来大幅度地降低音频数据量。利用 MPEG Audio Layer 3 的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的文件,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。

从信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余。音频信号在时域和频域上具有相关性,也即存在数据冗余。将音频作为一个信源,音频编码的实质是减少音频中的冗余。

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字信号。

PCM文件格式

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。最常见的方式是通过脉冲编码调制PCM(Pulse Code Modulation) 。

PCM脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。

MP3编码参数

(1)采样率(sampleRate):采样率越高声音的还原度越好。

(2)比特率(bitrate):每秒钟的数据量,越高音质越好。

(3)声道数(channels):声道的数量,通常只有单声道和双声道,双声道即所谓的立体声。

(4)比特率控制模式:

CBR:constant bitrate,固定比特率,压缩出来的体积会很大,音质最好。

VBR:Variable Bitrate,动态比特率,压缩时根据音频数据即时确定使用什么比特率,兼顾了音质和体积大小,以质量为前提兼顾文件大小。

ABR:Average Bitrate,平均比特率,是VBR的一种插值参数,做为 VBR和CBR的一种折衷选择。

libmp3lame库

MP3编码一般会使用libmp3lame库,这是一个开源的MP3编码库。适合嵌入式移植和开发。通过lame库实现MP3编码的流程是初始化编码参数、设置编码参数、初始化编码器、编码PCM数据、结束编码,最后销毁编码器。

image.png

编码参数设置接口

第一个是设置设置被输入编码器的原始数据的采样率

第二个是设置最终MP3编码输出的声音的采样率,如果不设置则和输入采样率一样

第三个是设置被输入编码器的原始数据的声道数

第四个是设置最终MP3编码输出的声道模式,如果不设置则和输入声道数一样。

image.png

第五个是设置比特率控制模式,默认是CBR,但是通常我们都会设置VBR

第六个是设置CBR的比特率,只有在CBR模式下才生效

第七个是设置VBR的比特率,只有在VBR模式下才生效

image.png

接着看一下初始化编码器的接口,根据设置好的参数建立编码器

image.png

然后调用接口将PCM数据送入编码器,获取编码出的MP3数据。本实验中的双声道数据是交错在一起输入的,所以使用lame_encode_buffer_interleaved接口。

image.png

编码结束前需要刷新编码器缓冲,获取残留在编码器缓冲里的数据。

最后,编码结束后要销毁编码器释放资源。

image.png

SYS/BIOS 操作系统

SYS/BIOS 是一个可扩展的实时的操作系统(可拓展的实时内核)。

(1)具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性。

(2)SYS/BIOS提供了抢占式多线程,硬件抽象,实时分析和配置工具。

(3)优化的内存分配和堆栈管理(尽量少的消耗和碎片)。

(4)SYS/BIOS的设计是为了最大限度地减少对内存和CPU的要求.

能够实现系统的模块化并可裁剪。

(5)用于实时调度和同步的应用程序或实时的设备。

TASK任务

TASK任务模块是操作系统中最基本的模块,每个任务是一个单独的线程,各个线程(任务)具有各自的优先级。SYS/BIOS任务对象是被任务模块管理的线程。

(1)任务模块动态调度和抢占任务是基于任务的优先级和任务当前执行的状态的。这确保了处理器总是给予最高优先级的线程准备运行。

(2)SYS/BIOS的系统组件可以动态及静态创建任务,可以通过调用Task_create()动态创建Task对象,也可以在配置中静态创建Task对象。

(3)动态和静态创建任务的主要区别是:动态创建的线程可以在运行时删除,而静态创建的任务占用更少的内存资源。

cfg Script脚本语言。

点击“app.cfg->Open With-> XDCscript Editor”,可修改配置。

var Task = xdc.useModule('ti.sysbios.knl.Task');

var task0Params = new Task.Params();

task0Params.instance.name = "task0";

Program.global.task0= Task.create("&taskMain", task0Params);

程序流程设计

程序流程设计中首先要进行外设使能,接着初始化AD7606,进行管脚复用配置,初始化EMIFA,然后配置AD7606,接着进行按键中断检测,当按键按下时开始采集音频信号,进行MP3编码并将数据保存到SD卡上,编码完成后指示灯亮起即可。

image.png

三、操作现象

实验设备

本实验使用的硬件接口为AD接口和SD卡座,所需硬件为实验板,音频线,SMA转音频母口线,手机或电脑,SD卡,读卡器,仿真器和电源。

image.png

硬件连接

(1)使用SMA转音频母口线连接ADC的V1通道和音频线的一头,音频线的另一头连接手机或电脑,并播放音乐,采集时建议音乐音量放到最大,如果音量太低采集后播放可能会听不到音乐。

(2)将SD卡插入实验板的SD卡槽。

(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

点击运行程序

运行程序后,LED此时是熄灭状态,按下USER0,开始采集音频数据,同时 LED2闪烁,标记正在采集数据和编码。

编码过程大约需要 1 分钟。编码结束后,LED2常亮。

image.png

实验箱断电后,取下 SD 卡。

通过读卡器将SD卡插入电脑可查看 SD 卡目录下的内容,可查看保存的 song.mp3 文件。

打开并播放 MP3 文件.

image.png

这篇关于数字信号处理实验操作教程:3-3 mp3音频编码实验(AD7606采集)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874243

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则