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

联发科公司。


工程音频编解码器滤波链需要仔细平衡性能,功率和尺寸。我们的小组必须设计解决方案,不仅满足信噪比(金宝搏官方网站SNR)和总谐波失真(THD)的严格标准,还可以最大限度地减少芯片上所需的功耗和硅的总面积。

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

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

构建音频编解码器

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

图1.音频编解码器的高级框图。单击图像以查看放大视图。

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

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

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

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

在我们以前的设计方法中,我们使用单个乘法器累加器(MAC)和有限状态机定序器来实现信号处理链(图2)。序列仪负责解决RAM和ROM并控制其操作。它还设置Mac的输入参数。ROM存储滤波器系数,RAM存储中间乘法累积结果,并且MAC基于系数和数据样本执行计算。

图2.传统音频编解码器设计的框图。单击图像以查看放大视图。

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

自动化实施

在我们的新设计方法中,我们已经消除了复杂的序列机。相反,我们使用带有MATLAB和滤波器设计工具箱的一系列数字滤波器,并使用过滤器设计HDL编码器实现(图3)。每个数字过滤器块独立运行,以便可以轻松修改,删除或添加到整个链中。

图3.使用过滤器设计HDL编码器独立实现每个滤波器的新设计架构。R1,R2和RN表示链中第一,第二和第n个滤波器的速率变化(插值/抽取)。单击图像以查看放大视图。

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

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

RTL代码生成及区域优化

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

图4.滤波器设计HDL编码器接口,显示了滤波器架构的一部分和生成的一段代码。单击图像以查看放大视图。

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

验证实施情况

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

在第一轮验证之后,我们将RTL代码传递给我们的同事进行合成。合成的位置和路由步骤生成SDF(标准延迟格式)文件中的定时数据。我们在另一轮门级模拟中包含了这个时序数据,以确保逻辑中没有竞争条件。设计随后被送去制作。

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

新制造技术的影响

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

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

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

2009年出版-91761v00

查看相关行业的文章