技术文章及通讯

音频编解码器数字滤波器的自动硬件实现

联发科公司


设计音频编解码器滤波器链需要仔细平衡性能、功率和尺寸。我们团队设计的解决方案不仅要满足信噪比(SN金宝搏官方网站R)和总谐波失真(THD)的严格标准,还要最小化功耗和芯片上所需的硅总面积。

我们过去通过手写寄存器传输级别(RTL)代码来实现我们的设计。虽然这种方法产生了相对较小的芯片面积,但它导致了较长的开发时间,并且对需求的任何后续更改都可能导致实现的大量返工。从业务角度来看,这种方法也带来了一些风险:我们常常不知道在设计过程的最后阶段放置和安排设计有多困难,这时几乎不可能进行更改并仍然满足我们的发布日期。

我们采用了一种新的方法,在MATLAB中进行设计®并使用Filter Design HDL Coder™生成可合成的RTL代码。通过将系统设计与硅连接起来,这种方法使我们能够快速评估滤波器架构并优化硅区域。它将我们的RTL代码开发周期从三个月缩短到不到两周。过去需要将近一个月才能完成的系统修改,现在只需三天就能完成。

构建音频编解码器

音频编解码器由两个独立的处理链组成(图1)。音频编码器提供了从麦克风到数字信号处理器(DSP)的接口。音频解码器工作在相反的方向,将信号从DSP转换成数据发送到扬声器。

audio_codec_fig1_w.gif
图1。高级音频编解码器框图。点击图片查看放大视图。

在我们设计的系统中,一个关键的技术挑战是麦克风前置放大器后面的模数转换器(ADC)和扬声器功率放大器前面的数模转换器(DAC)都必须在相对较高的6.5 MHz频率下工作。另一方面,DSP以48千赫的普通速率处理数据。音频编解码器的数字部分通过应用一系列数字滤波器在这两个频率之间转换。例如,立体声编码器通道使用8个滤波器对输入信号进行抽取,而立体声解码器使用9个滤波器对输入信号进行插值。

在架构设计阶段,我们使用MATLAB对编解码器通道进行建模。使用模拟设计人员提供的参数,我们对数字到模拟和模拟到数字转换器进行建模,并构造多速率数字滤波链。

接下来,我们使用MATLAB、信号处理工具箱™和滤波器设计工具箱™,通过计算快速傅里叶变换(FFTs)和估计信噪比和THD对模型产生的结果进行后处理。通过这种方式,我们可以在进行实现之前制定出一个优化的体系结构。

使用有限状态机排序器实现

在我们之前的设计方法中,我们使用单个乘数-累加器(MAC)和有限状态机定序器来实现信号处理链(图2)。定序器负责寻址RAM和ROM并控制它们的操作。它还为MAC设置输入参数。ROM存储过滤系数,RAM存储中间的乘法累加结果,MAC根据系数和数据样本执行计算。

audio_codec_fig2_w.gif
图2。一个传统音频编解码器的框图设计。点击图片查看放大视图。

传统上,音序器是用纸笔工艺设计的,既复杂又耗时。手写的RTL代码非常不灵活,即使是很小的修改也很困难。有时,我们还发现用于排序器有限状态机的RTL代码几乎不可能放置和路由。在有限状态机中大约有2000个状态,在这些状态中分配了40多个变量。这导致在栅极级网表的放置和路由过程中,区域利用率非常低,只有10%。换句话说,提议的硅面积比预期的大10倍!它花了巨大的努力合成排序器逻辑到一个自定义ROM存储器。然而,与我们最初预测的组合逻辑相比,排序器的面积仍然有大约2倍的损失(定制ROM通常需要更多的硅面积)。

自动化实现

在我们的新设计方法中,我们取消了复杂的定序器。相反,我们使用了一系列用MATLAB和Filter Design Toolbox设计的数字滤波器,并使用Filter Design HDL Coder实现(图3)。每个数字滤波器块都独立运行,因此可以轻松地修改、删除或添加到整个链中。

audio_codec_fig3_w.gif
图3。新的设计架构,其中每个过滤器都是使用filter design HDL Coder独立实现的。R1、R2和Rn表示链中第一个、第二个和第n个过滤器的速率变化(插值/抽取)。点击图片查看放大视图。

解码器链包括四个半带FIR滤波器和一个采样率转换器。每个滤波器插值两个,将初始48 kHz信号分别转换为96 kHz、192 kHz、384 kHz和768 kHz。然后,采样速率转换器直接从768 kHz转换到目标频率6.5 MHz。

编码器链包括两个级联积分器梳状(CIC)抽取器,以及两个半带FIR滤波器。第一个CIC decimator从6.5 MHz的信道输入速率降至260 kHz,抽取25个小数。然后是一个简单的手写48插补零填充器。然后在第二个CIC decimator内以12.48 MHz的速率对插值数据进行65次抽取。然后在第一个半带FIR抽取-2滤波器内以192 kHz的速率处理。最后,第二个半带抽取滤波器将数据从96 kHz降采样到48 kHz的通道输出速率。在编码器通道的情况下,Filter Design Toolbox简化了CIC设计,使我们能够快速评估许多设计选项,例如要使用的比特数。

生成RTL代码和区域优化

在编码器和解码器链中设计了单独的滤波器之后,我们使用filter Design HDL Coder为每个滤波器生成Verilog代码(图4)。在这个阶段,我们可以开始优化实现以最小化设计的硅面积。

audio_codec_fig4_w.gif
图4。过滤器设计HDL编码器界面,显示部分过滤器架构和一段生成的代码。点击图片查看放大视图。

我们尝试了几个Filter Design HDL Coder优化和RTL生成的架构选项。例如,为了优化半带FIR滤波器,我们首先尝试了一种产生完全并行架构的选项,其中滤波器时钟速率与数据速率相同。然后我们使用Synopsys®设计编译器合成的代码和报告上分配的区域。Filter Design HDL Coder中的分布式算法选项,需要比其数据速率高16到20倍的时钟速率,产生的设计使用了大约25%的全并行设计面积。由于我们的芯片上已经有一个足够高的频率时钟,这是最好的选择。

验证实现

我们使用MATLAB脚本、RTL测试台和Verilog模拟来验证RTL实现。事实上,我们重用了架构阶段开发的许多MATLAB脚本来生成刺激信号,并通过绘制FFTs和计算SNR和THD对结果进行后处理。

在第一轮验证之后,我们将RTL代码传递给我们的同事进行合成。综合的地点和路线步骤以SDF(标准延迟格式)文件生成定时数据。我们将该计时数据包含在另一轮门级模拟中,以确保逻辑中不存在竞争条件。然后设计就被送去制作了。

对初始芯片的测试没有发现音频编解码器的数字部分有任何问题。这意味着我们的团队可以自由地帮助设计的模拟部分和其余的测试工作。

新制造技术的影响

制造技术的变化正在改变我们设计的芯片上模拟和数字组件的平衡。模拟晶体管必须保持一定的尺寸来驱动所需的负载,而数字晶体管在引入新的制造工艺后会缩小。例如,当从0.25um迁移到45nm制造工艺时,混合信号音频编解码器的整体面积从50%数字和50%模拟变成了25%数字和75%模拟。

虽然我们的新设计方法比传统方法需要更多的硅面积,但在新的制造工艺中,数字元件尺寸的减小抵消了这一增加,同时使我们能够节省大量的开发时间。

在未来,通过使用Filter design HDL Coder提供的其他低区域架构,例如部分串行架构,或通过自动生成代码实现单个序列器架构,可能会进一步优化我们的设计过程。

发布于2009 - 91761v00

查看相关行业的文章