当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Adaptive Filtering 功能详解及代码实现

 摘 要

Texas instruments 推出的超低功耗miniDSP 音频Codec 集成了miniDSP 内核,可在耗电极低的工作状态下为电池供电的便携式产品提供高性能的语音及音乐处理能力。AdaptiveFiltering 是miniDSP 的一项重要功能。本文详细介绍了该功能的使用方法及注意事项,并给出了示例代码以供参考。

1 miniDSP Codec 简介

德州仪器半导体公司(Texas Instruments)推出的内嵌miniDSP 的音频编解码器(简称miniDSP Codec)在普通音频编解码器的基础上提供了强大、灵活的低功耗DSP 引擎来满足消费类电子应用中对音质、音效的需求。

miniDSP 的内核是完全可编程的,支持许多录音和回放的专用算法。例如:多段均衡(Multi-Band Equalization)、动态噪声消除(Dynamic Noise Filter)、回声消除(Echo Cancellation)等。miniDSP Codec 具有非常优秀的电源管理功能,在提供强大的音效处理能力的同时兼顾了低功耗特性,非常适合电池供电的便携式产品应用,例如智能手机,多媒体播放器,导航仪,电子相框等。

TLV320AIC3254(简称AIC3254)是miniDSP Codec 的典型器件,本文将基于该器件展开分析。其他miniDSP Codec 均具有类似的架构、功能及使用方法。请用户参考相应产品的器件手册获得详细信息。

1.1 miniDSP Codec 架构

以AIC3254 为例,该miniDSP Codec 集成了两个miniDSP 内核,如图1 所示,miniDSP-A 位于ADC 信号路径上,主要负责ADC 采样后的数字音频流处理。miniDSP-D 位于DAC 路径上,主要负责I2S 总线输入的数字音频流处理。miniDSP-A 和miniDSP-D 之间有互联的内部数据总线可用于数据交换及共享代码空间。

图 1. miniDSP 音频Codec 内部简化框图

除了Audio Codec 以外,某些ADC、DAC 也拥有miniDSP 内核,本文介绍的部分内容也适用于该类器件。请参考相应器件的手册获得详细信息。

1.2 miniDSP 内存架构及寄存器地址

miniDSP-A 和D 分别有自己独立的内存空间。每个DSP 的内存分为指令内存(Instruction RAM)、数据内存(Data RAM)和系数内存(Coefficient RAM)三类。

• 指令内存用于存储miniDSP 的运行指令及程序。

• 数据内存用来暂存miniDSP 运行时的运算结果等临时数据。

• 系数内存用来存储miniDSP 音效、增益等控件的参数数据。

指令内存和系数内存均可通过映射的I2C 或SPI 地址来进行读写。Codec 上电时主控芯片需要通过I2C 或SPI 接口将miniDSP 程序下载到指令内存和系数内存以供运行。以TLV320AIC3254 为例,指令内存、系数内存的寄存器映射地址及功能如表1 所示:

表 1. TLV320AIC3254 内存架构及寄存器地址

从寄存器映射地址可发现,miniDSP-A 和 miniDSP-D 的系数内存控件均被等分成两块:Buffer-A和Buffer-B。当Adaptive Filtering 功能关闭时,Buffer-A 和Buffer-B 是一个整体,连续的存储空间。当Adaptive Filtering 功能开启时,两个Buffer 的内容是完全同步并相互备份的。这种内存架构是Adaptive Filtering 功能的基础。

注 意:

当用户不需要Adaptive Filtering 功能时,建议关闭该功能。系数内存(Coefficent

RAM)将不会划分Buffer-A 和Buffer-B。能提供多一倍的系数内存给用户使用。

2 Adaptive Filtering

2.1 功能概述

Adaptive Filtering 是一种在miniDSP 运行时的滤波器、音效控件、混音比例等参数的实时切换功能。启动该功能后主控芯片可以通过控制端口对系数内存内的参数数据进行实时更新。

当miniDSP Codec 运行在non-Adaptive Filtering 模式下,系数内存中的滤波器、音效控件、混音比例等参数将被锁定,无法实时更改。这种模式适用于不需要实时调节参数的场合。miniDSP 的代码将在启动时一次性被下载并执行,运行过程中不会进行任何miniDSP 系数内存参数的修改。

当Adaptive Filtering 功能启动后,系数内存将启用缓存(Buffer-A 和Buffer-B)设置。允许用户在miniDSP 工作时实时修改系数内存中的参数设置,从而满足用户实时调节音效等参数的需求。例如,启用了Adaptive Filtering 模式后,用户可在听歌过程中将EQ 均衡器从流行(POP)转换为古典(Classic)模式,该效果实时产生作用无需中断播放。

2.2 Adaptive Filtering 控制寄存器

Adaptive Filtering 功能是通过特定寄存器来控制和实现的,以AIC3254 的miniDSP-A 为例,表2列出了miniDSP-A 的Adaptive Filtering 控制寄存器的含义。用户可通过D2 位开启或关闭miniDSP-A 的Adaptive Filtering 功能。D1 位用来指示miniDSP 运行时哪一个Buffer 被锁定,用户可读取该位来确认Buffer 使用的状态。D0 位用来控制Buffer 的切换,向D0 位写入1 后miniDSP-A 会切换到新的Buffer 进行工作,并向控制端口释放原先使用的Buffer。切换完毕后D0的值会自动清零,用户可通过循环读取D0 的值来判断Buffer 的切换是否已经完成。

表 2. AIC3254 miniDSP-A Adaptive Filtering 控制寄存器(P8_R1)

注 意:

每个支持Adaptive Filtering 功能的miniDSP 都有自己的Adaptive Filtering 控制寄存器,miniDSP-A 和miniDSP-D 的Adaptive Filtering 功能是独立运行的。

2.3 系数内存(Coefficient Memory)存取规范[!--empirenews.page--]

在介绍Adaptive Filtering 的具体流程前,首先需要了解系数内存存取的规范。

在non-Adaptive Filtering 模式下,系数内存在miniDSP 停止运行时可通过控制端口(I2C/SPI)直接存取。在miniDSP 工作时,系数内存将被锁定只有miniDSP 能够存取。表3 给出了该模式下的存取规范供参考:

表 3. 在non-Adaptive Filtering 模式下系数内存的存取规范

当启动了Adaptive Filtering 模式,系数内存将分为Buffer-A 和Buffer-B 两块,两块内存内容完全一致,相互备份。miniDSP 工作时将锁定Buffer-A 或者Buffer-B 其中的一个,从中获取参数信息。控制端口(I2C 或SPI)只可以读写未锁定的另一块Buffer。表4 给出了该模式下的存取规范供参考:

表 4. Adaptive Filtering 模式下系数内存的存取规范

为了简化Buffer 切换的操作,在miniDSP 运行时,控制端口访问系数内存的地址均映射到未锁定的Buffer 内。例如控制端口向锁定Buffer-A 某地址写入的参数将直接更新未锁定Buffer-B 内的镜像参数。这个设置允许用户在切换Buffer 后无需修改写入地址即可向释放出来的Buffer 内存更新参数。注意在miniDSP 停止运行的时候,Buffer-A 和Buffer-B 的页面地址均恢复正常模式,用户需使用它们各自的地址进行参数更新。

2.4 Adaptive Filtering 控制流程

本节详细介绍了如何使用Adaptive Filtering 功能来进行系数内存内参数的更新操作。附录A 给出了推荐的Adaptive Filtering 更新参数操作时序图供参考。

2.4.1 miniDSP 停止时的参数更新流程

如2.3 节所示,在miniDSP 停止运行时,控制端口可以存取所有的系数内存地址(Buffer-A 和 Buffer-B)。则该模式下参数更新的流程为:

1. 通过控制接口直接向Buffer-A 写入新参数。

2. 切换到Buffer-B 所在页面,向Buffer-B 写入同样参数。使Buffer-A 和Buffer-B 保持同步。

以AIC3254 为例,若需要更新的参数在miniDSP-A 的Buffer-A 内,其地址为p8_r44,新参数值为0xAB。则更新流程为:

1. 向p8_r44 写入新参数0xAB。

2. 向p26_r44 写入新参数0xAB。(p26_r44 是p8_r44 的镜像寄存器)

2.4.2 miniDSP 运行时的参数更新流程

miniDSP 运行时,系数内存的其中一个Buffer 被miniDSP 锁定,控制端口无法直接修改该Buffer内的参数。用户需要先更新未锁定Buffer 内的参数,然后通知miniDSP 切换Buffer 来使用新的参数。切换后原先被锁定的Buffer 将被释放,用户需要对它更新相同的参数以确保两块Buffer 的参数同步。

在miniDSP 运行时,系数内存参数更新的流程如下:

1. 通过控制端口向目标寄存器更新参数。

2. 向Adaptive Filtering 寄存器写入Buffer 切换命令。

3. 回读Adaptive Filtering 寄存器状态位,判断Buffer 切换是否完成。

4. 确认切换完成后,再次向目标寄存器更新参数确保Buffer-A 和Buffer-B 参数同步。

以AIC3254 为例,若需要更新的参数在miniDSP-A 的Buffer-A 内,其地址为p8_r44,新参数值为0xAB。则更新流程为:

1. 向p8_r44 写入新参数0xAB。

2. 将p8_r1_d0,Adaptive Filtering 寄存器的D0 位置1,执行Buffer 切换操作。

3. 回读p8_r1_d0,Adaptive Filtering 寄存器状态位,判断Buffer 切换是否完成。

4. 确认切换完成后,再次向目标寄存器p8_r44 更新参数0xAB,确保Buffer-A 和Buffer-B参数同步。

3 总结

本文详细介绍了miniDSP Codec 的Adaptive Filtering 功能的使用方法,并以AIC3254 为例给出了详细的操作步骤和示例代码。在实际使用中,用户需要注意准确的获取并判断miniDSP 工作状态,选择正确的操作流程来完成参数的切换和更新。

4 参考文献

1. TLV320AIC3254, Ultra Low Power Stereo Audio Codec With Embedded miniDSP-Data sheet (SLAS549)

2. Design and Configuration Guide for the TLV320AIC3204 & TLV320AIC3254 Audio Codec (SLAA404C)

3. Coefficient RAM Access Mechanisms (SLAA425A)

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭