我用ADAU1467加5个ADAU1772,做20进10出的音频处理板(八):增益

作者的话

ADAU1467是现阶段ADI支持最多通道的ADAU音频DSP,他配合外部的AD/DA,可以实现最多32路音频通道,接了一个小项目,我拿它做了一块20进10出的板,10个MIC/LINE输入,10个LINE IN输入,10个HPOUT,算是把他的接口几乎都用全,芯片性能开发到了极致。(其实可以做20个MIC IN,但是因为客户的具体需求是10个LINE IN,10个MIC IN)

芯片选型

项目背景的话,做这块板的目的是给ADAU1467搞功能验证,还有极限性能评估,所以并没有考虑更细节的芯片成本,怎么方便怎么来。

主芯片当然就是ADAU1467了,CODEC考虑到要LINE IN的同时能够模拟MIC IN,这就要求Codec的AD需要具备前置放大,需要有偏置电压,我选了ADAU1772做Codec,这其实也是一颗DSP,但他片内有一个adda,能做到4进2出,而且4进全部可以支持MIC IN,搞起来非常方便快捷,于是我就直接用它了。这颗codec也因为有自带的运放,我在模拟输出的设计时就不需要额外加运放了。

4进2出去配ADAU1467显然是不够的,那我就拼5个,就有20进10出了,这是我的选型思路。

这个系列文章将对这个电路板的软硬件开发设计做详细讲解,上一章我们讲了硬件设计,这一章我们开始讲软件开发。

硬件准备

开发板的产品链接:https://item.taobao.com/item.htm?id=625095214294&spm=a1z10.5-c.w4002-5192690539.15.713a1c74E0XfRv

在这里插入图片描述

调试器的产品链接:https://item.taobao.com/item.htm?id=38242936768&spm=a1z10.5-c.w4002-5192690539.11.663b2dbdDNXVZF

ADAU1467 的开发 10:总音量增益

通过上面的几个调音量的例程,用户可以发现,原始音量进来,我们的调音量模块只能对他进行音量减小的操作,想要增大音量,需要外部设备的输入的音量增加。那么原始音源进来,可否通过软件进行增益呢?答案一定是可以的,这个很简单,DSP 是怎么做的,加一个线性增益模块就好啦,看下面这个例程:

在这里插入图片描述

一个线性增益模块加到音源输入之后,数字自己填,数字越大,增益越多,直接把音量拉起来,大家可以改改数试试看,效果很明显。

ADAU1467 的开发 11:选择通道增益

这种设计很常见,比如在音源进来后进行音效处理,某个通道需要增益加强,就加一个模块。

在这里插入图片描述

这个程序里,我就单独在 4/5 输出通道这里再加了一个增益,让这个立体声输出音量更大。

该便携式数字音频控制系统主要由2个模块组成。第一个是音频输入和处理模块,由 ADAU1761组成。第二个是输放大器级,由 SSM2518组成。该电路可接收模拟立体声音频信号作为输入,同时还能输最多8 通道音频,并单独处理每通道的信号。同时,该电路具有低功耗和高工作效率,不会降低音频质量,还能驱动耳机,而无需额外元件。 SigmaDSP处理器针对音频应用优化,使用方便的SigmaStudio 开发软件可快开发速度。利用串行接口,ADAU1761的 输可发送多达个数字音频数据通道至输放大器。ADAU1761允许每通道处理不同的音频信号,如针对特定扬声器配置调谐的音量控制、自定义均衡、滤波和空间化效果。ADAU1761处理模拟音频,并将其转换为数字格式信号,驱动SSM2518功率放大器。 ADAU1761是一款低功耗、立体声音频编解码器,集成数字音频处理(亦称为SigmaDSP:registered:),具有两个ADC,可接收两个音频通道,并利用集成式SigmaDSP:registered:内核对其行数字 处理。 SSM2518是一款数字输入D类音频功率放大器,可利用每通 道2 W的连续功率,将两个音频通道输至4 Ω负载。SSM2518的通道映射功能允许选择接口中可用的特定通道来输信 号。这一功能使其成为环绕声应用的理想选择。 基于ADAU1761和SSM2518的数字音频控制系统框图: 便携式数字音频控制系统电路 PCB截图,用candence打开: 附件资料截图:
Zedboard板基于SOC的Adau1761测试项目 郑郁正(百度) 项目模板来自:Lab4 1、 在vivado下执行TCL脚本可以生成SOC模型。 2、 直接创建SDK项目。 3、 将Line In输入的音频处理后送Line Out。 4、 通过SW0可以选择是否滤波处理音频,还是直通。 主要问题是提供的TCL脚本与vivado2015.2不兼容,按网上“ vivado + zedboard之audio驱动”的步骤运行TCL失败。其二是adau1761.h adau1761.c、iic.h、iic.c没用(实际上模板中也没有)。其三是testapp.c中的xfir_hw.h不存在(实际上不滤波处理时可以删除)。 说明一下如何修改TCL脚本。 1、 解压labsoure.rar后将 ..\labsource\sources\lab4 拷贝到 d:\ 下。 2、 启动vivado后点主菜单中的window中的Tcl Console打开Tcl Console命令窗口。 3、 在Tcl Console窗口下面的命令框中输入cd d:/lab4 4、 用windows的“记事本”打开该目录中的audio_project_create.tcl 文档(用其它文本编辑器打开也可以)。 5、 首先将第2行create_project audio C:/xup/hls/labs/lab4/audio -part xc7z020clg484-1路径改为create_project audio d:/lab4/audio -part xc7z020clg484-1 6、 第15行set_property ip_repo_paths C:/xup/hls/sources/lab4 [current_fileset]路径改为set_property ip_repo_paths d:/lab4 [current_fileset] 7、 将audio_project_create.tcl 的每一行拷贝入 Tcl Console 命令框中执行。 8、 执行第7行“create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.3 processing_system7_0”产生错误: ERROR: [BD 5-216] VLNV <xilinx.com:ip:processing_system7:5.3> is not supported for this version of the tools.The latest version is:5.5 ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors. 9、 在右上Diagram窗口右击鼠标选“Add IP…”,选择倒数第2个IPcore:“ZYNQ7 Processing System”,将现在Tcl Console窗口中的“create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0”拷贝代替第7行。实际上是vivado版本兼容问题,将5.3改为了5.510、 注消25行、26行。因为 执行第25行 delete_bd_objs [get_bd_nets processing_system7_0_fclk_clk1] 产生警告: WARNING: [BD 5-234] No nets matched 'get_bd_nets processing_system7_0_fclk_clk1' 执行第26行 connect_bd_net -net [get_bd_nets processing_system7_0_fclk_clk0] [get_bd_pins proc_sys_reset/slowest_sync_clk] [get_bd_pins processing_system7_0/FCLK_CLK0] 产生错误: WARNING: [BD 5-235] No pins matched 'get_bd_pins proc_sys_reset/slowest_sync_clk' WARNING: [BD 41-395] Exec TCL: all ports/pins are already connected to '/processing_system7_0_FCLK_CLK0' ERROR: [BD 5-4] Error: running connect_bd_net. ERROR: [Common 17-39] 'connect_bd_net' failed due to earlier errors.” 11、 注销59行。因为执行第59行 connect_bd_net [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins proc_sys_reset/ext_reset_in] 产生错识 WARNING: [BD 5-235] No pins matched 'get_bd_pins proc_sys_reset/ext_reset_in' ERROR: [BD 41-701] connect_bd_net requires at least two pins/ports, or one pin/port and a net ERROR: [BD 5-4] Error: running connect_bd_net. ERROR: [Common 17-39] 'connect_bd_net' failed due to earlier errors. 12、 回到vivado主菜单file中close project,不保存任何内容。关闭vivado,删除d:/lab4/audio目录。 重新启动vivado后点主菜单中的Tools中的Run Tcl Script…,选中d:/lab4/audio_project_create.tcl,即可自动完成硬件SOC系统的创建,工程项目位于d:/lab4/audio中。 1. 在右上窗口Diagram中右击鼠标选“Validate Design”验证。 2. 入主菜单File选“Save Block Design”保存创建的系统结构图。 3. 点击左上窗口Design的左下选项Sources,显示项目顶层结构,右击其中的顶层“system(system.bd)(6)”选“Create HDL Wrapper”OK 4. 点击左上窗口Sources中“Constraints”右边的“+”展开,右击constrs_1  Add Sources  Next  点中间的“+”,添管脚文件d:/lab4/zed_audio_constraints.xdc。(由于新版本的vivado区分大小写字母,所以必须将该文件中的IIC、GPIO换成小写字母iic、gpio) 5. 入主菜单Flow选Generate BitStream。运行过程中都点OK。 6. 入主菜单File选Export  Export Hardware…  将“Include Bitstream”左的框打勾  OK 7. 入主菜单File选Launch SDK。 在SDK中 1、 入主菜单File选New  Application Project,在Project Name输入框中输入一个项目命zyzAudio,然后Next到下一级选空白项目模板Empty Project。 2、 点开左边项目管理窗口中的zyzAudio,右击src后import,选General中的File System,找到d:/lab4目录,将audio.h和testapp.c选中入项目中。 3、 注销testapp.c包含的头文件 #include “xfir_hw.h 4、 修改滤波器函数filter_or_bypass_input(),注销if(sw_check & 01){…}语句全体,将其后的两条输语句 Xil_Out32(I2S_DATA_TX_L_REG, u32DataL); Xil_Out32(I2S_DATA_TX_R_REG, u32DataR); 改为 if(sw_check & 01){ Xil_Out32(I2S_DATA_TX_L_REG, u32DataL); Xil_Out32(I2S_DATA_TX_R_REG, u32DataR); }else{ static u32 zyzTest=0; zyzTest += 0x0800; Xil_Out32(I2S_DATA_TX_L_REG, zyzTest<<8); Xil_Out32(I2S_DATA_TX_R_REG, zyzTest<<8); } 5入主菜单Xilinx Tools选Program FPGA,将BitStream.bit下载到板上。 6、 入主菜单Run选Run Configuration…,然后用GDB运行程序。 7、 运行时,拨动板上的SW0,耳机插入Line Out即可听到声音。如果有音频从Line In输入,也可以听到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADI_OP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值