首页> 中国专利> 多级IIR滤波器和利用其对数据进行并行化的滤波

多级IIR滤波器和利用其对数据进行并行化的滤波

摘要

在一些实施例中,其双二阶滤波器级与级之间等待时间的结合的多级滤波器、包括此类滤波器的系统(例如,音频编码器或解码器)、和用于多级双二阶滤波的方法。在典型的实施例中,滤波器的所有双二阶滤波器级可独立地操作以对数据执行完全并行化的处理。在一些实施例中,本发明的多级滤波器包括缓冲存储器、至少两个双二阶滤波器级、和被耦接并被配置为将单个指令流断言到滤波级的控制器。通常,多级滤波器被配置为利用对样本索引的迭代而不利用对双二阶滤波器级索引的迭代在单个处理环路中对输入样本的块执行多级滤波。

著录项

  • 公开/公告号CN104272593A

    专利类型发明专利

  • 公开/公告日2015-01-07

    原文格式PDF

  • 申请/专利权人 杜比实验室特许公司;

    申请/专利号CN201380024378.9

  • 发明设计人 K·P·拉蒂;

    申请日2013-04-17

  • 分类号H03H17/04(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人李晓芳

  • 地址 美国加利福尼亚

  • 入库时间 2023-12-17 04:40:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-24

    专利实施许可合同备案的生效 IPC(主分类):H03H17/04 合同备案号:2017990000387 让与人:杜比实验室特许公司|杜比国际公司 受让人:青岛海尔电子有限公司 发明名称:多级IIR滤波器和利用其对数据进行并行化滤波的方法 申请公布日:20150107 授权公告日:20170208 许可种类:普通许可 备案日期:20170926 申请日:20130417

    专利实施许可合同备案的生效、变更及注销

  • 2017-02-08

    授权

    授权

  • 2015-02-04

    实质审查的生效 IPC(主分类):H03H17/04 申请日:20130417

    实质审查的生效

  • 2015-01-07

    公开

    公开

说明书

对相关申请的交叉引用

本申请要求2012年5月10日提出的美国临时专利申请No. 61/645,291的优先权,其全部通过引用而被合并于此。

技术领域

本发明有关于包括双二阶滤波器级的多级滤波器,并且有关于利 用此类滤波器对数据(例如,音频数据)进行并行化的滤波。本发明 的某些实施例是根据被称为杜比数字(AC-3)、杜比数字加(E-AC-3)、 和杜比E中的一个格式、或根据另一个编码格式在编码或解码数据期 间用于对音频数据进行滤波(利用包括双二阶滤波器级的多级滤波 器)的方法、系统、和处理器。杜比、杜比数字、和杜比数字加和杜 比E是杜比实验室许可公司的商标。

背景技术

贯穿包括在权利要求中的本公开,“对”信号或数据执行操作(例 如,滤波或缩放信号或数据)的表达被广义上使用以表示对信号或数 据、或对信号或数据的处理的版本(例如,对在对其执行操作之前已 经经历初步滤波或其它处理的信号的版本)直接执行操作。

在信号处理中,数字双二阶滤波器是二阶的递归线性滤波器,包 含两极和两个零。这里将使用缩写“双二阶”(或“双二阶”)滤波 器以表示数字双二阶滤波器。在Z域中,双二阶滤波器的转移函数是 两个二次函数的比率:

H(z)=b0+b1z-1+b2z-11+a1z1+a2z2

高阶递归滤波器(无限脉冲响应或大于二阶的阶数的“IIR”滤 波器)可以对它们的系数的量化是高度敏感的,并且可以容易变得不 稳定的。第一和第二阶数递归滤波器也可以具有此类型的不稳定性问 题但是不稳定性问题不严重得多。因此,高阶递归滤波器通常被实施 为包括双二阶部分的串联级联的串联级联的滤波器(并且可选地也是 一阶滤波器)。此类串联级联的滤波器这里有时被称为多级双二阶滤 波器,并且包括双二阶滤波器的序列(有时这里称为双二阶级或双二 阶部分)。

例如,被配置为根据公知的AC-3(杜比数字)格式、或公知的 杜比数字加和杜比E格式的任何一个编码音频数据的传统的编码器, 实施许多多级双二阶滤波器。例如,杜比数字加编码器通常采用两级 双二阶滤波器(即,包括两个级联的双二阶滤波器的滤波器)以在瞬 态检测器子系统中实施高通滤波、四级双二阶滤波器(即,包括四个 级联的双二阶滤波器的滤波器)以在低频效果(“LFE”)子系统中 实施低通滤波、和三级的双二阶滤波器以实施带宽限制的低通滤波。 杜比E编码器通常采用两级双二阶滤波器(即,包括两个级联的双二 阶滤波器的滤波器)以在瞬态检测器子系统中实施高通滤波、以及四 级双二阶滤波器(即,包括四个级联的双二阶滤波器的滤波器)以在 低频效果(“LFE”)子系统中实施低通滤波。杜比E解码器通常采 用三级的双二阶滤波器(即,包括三个级联的双二阶滤波器的滤波器) 以在低频效果(“LFE”)子系统中实施低通滤波。

例如,图1是包括如图所示连接的元件1、2、3、4、5、b0、b1、 b2、-a1、和-a2的双二阶滤波器的图(有时被称为直接形式II-转置结 构的类型)。元件1、2、和3是加法元件,元件4和5是延迟元件, 并且增益元件b0、b1、b2、-a1、和-a2的每一个将增益b0、b1、b2、-a1、 和-a2中对应的一个施加到断言到它的输入的信号。虽然这里未示出 或描述,本领域技术人员所公知的是,其它等效的双二阶滤波器结构 存在,例如直接形式I、直接形式I-转置的、和直接形式II。任何此 类等效双二阶滤波器结构在本发明的范围之内。

如图1A所示,如果图1的双二阶滤波器(在图1A中标签为双 二阶1)与具有相等结构的双二阶滤波器(在图1A中标签为双二阶2) 级联,但是它的增益元件可以施加与图1滤波器的增益相比较不同的 增益,产生的多级双二阶滤波器是可以被采用的两级双二阶滤波器的 示例(例如,以在如上所述的音频编码器的瞬态检测器子系统中实施 高通滤波)。在图1A的多级双二阶滤波器中,第一级的输出信号x1(n) 是到第二级的输入信号。

对于多级双二阶滤波器(和一些其它的多级IIR滤波器),响应 于在时刻“n”和先前时刻的时域信号x(n)的值(输入信号或在多级 滤波器的另一个级中生成的信号)在每个级中在时刻“n”处(即, 级的输出信号y(n))的输出样本计算取决于先前的输出(即,在时刻 n-1和n-2的输出y(n-1)和y(n-2))。此外,对于在多级双二阶滤波器 中的每个两个连续级(双二阶滤波器),每个前一级的输出被输入到 后续级,以使得后续级的输出直到在前一级的输出已被确定之后可以 被确定。这些是关于为什么完全并行化的处理没有被采用(在本发明 之前)以实施多级双二阶滤波器的主要原因。

在许多现代核处理器架构(例如,数字信号处理器结构)中存在 SIMD(单指令、多数据)单元和/或多个ALU(算术逻辑单元)或 AMU(算术操作单元),其可以用于并行化许多算法并且改善性能。 但是,用于编程处理器以实施多级双二阶滤波器的传统算法不使用 SIMD指令并且不被并行化。

例如,杜比数字加编码器(其根据杜比数字加格式编码音频数据) 已被实施为编程的ARM氖处理器(每个是具有允许并行处理的氖 SIMD引擎的ARM Cortex处理器),并且作为编程的德州仪器公司 C64数字信号处理器。许多音频数据编码器(例如,根据AC-3、杜 比数字加、杜比E、和/或其它编码格式编码音频数据的编码器)已被 或可以被实施为具有各种架构、具有SIMD(单指令、多数据)单元 和/或多个ALU(算术逻辑单元)或AMU(算术操作单元)中的任何 一个的编程的处理器。此类处理器可以被编程来利用并行处理实施各 种算法(包括在音频数据编码中)。但是,在此类处理器中已被采用 以实施多级双二阶滤波器的传统编程没有实施并行处理。

本发明的典型实施例采用并行处理以实施多级双二阶滤波器。某 些实施例采用并行处理以实施在根据AC-3(杜比数字)格式、杜比 数字加格式、或杜比E格式编码音频数据中使用的类型的多级双二阶 滤波器。

虽然本发明不局限于根据AC-3、杜比数字加、或杜比E格式在 编码音频数据中使用,但是某些实施例是采用实施本发明的实施例 (或根据本发明的实施例设计)的至少一个多级双二阶滤波器的音频 编码方法、系统、和处理器(例如,根据AC-3、杜比数字加、或杜 比E格式编码音频数据)。

AC-3编码的比特流包括音频内容的一个到六个信道、和指示音 频内容的至少一个特性的元数据。音频内容是已利用感知音频编码压 缩的音频数据。

AC-3(也称为杜比数字)编码的细节是公知的并且在许多公开 的参考文献中阐述,包括以下:

ATSC Standard A52/A:Digital Audio Compression Standard (AC-3),Revision A,Advanced Television Systems Committee,2001 年8月20日;

Flexible Perceptual Coding for Audio Transmission and  Storage,”Craig C.Todd,et al,96th Convention of the Audio  Engineering Society,February 26,1994,Preprint 3796;

“Design and Implementation of AC-3Coders”,Steve Vernon, IEEE Trans.Consumer Electronics,Vol.41,No.3,August 1995;

“Dolby Digital Audio Coding Standardss”一章,Robert L. Andersen和Grant A.Davidson在The Digital Signal Processing  Handbook,Second Edition,Vijay K.Madisetti,Editor-in-Chief, CRC Press,2009;

“High Quality,Low-Rate Audio Transform Coding for  Transmission and Multimedia Applications”,Bosi et al,Audio  Engineering Society Preprint 3365,93rd AES Convention,October, 1992;以及

美国专利5,583,962;5,632,005;5,633,981;5,727,119;和 6,021,386。

杜比数字(AC-3)和杜比数字加(有时被称为增强的AC-3或 “E-AC-3)编码的细节在“Introduction to Dolby Digital Plus,an  Enhancement to the Dolby Digital Coding System”AES Convention  Paper 6196,117th AES Convention,October 28,2004、和在 http://www.atsc.org/cms/index.php/standards/published-standards可 访问的the Dolby Digital/Dolby Digital Plus Specification(ATSC  A/52:2010)中阐述。

发明内容

在一类实施例中,本发明是包括至少两级(每级是双二阶滤波器) 的多级滤波器,其中级与所述级之间的等待组合,以使得所有级响应 于单个公共的指令流可独立地操作,以在所述级中执行完全并行化的 数据处理。通常,多级滤波器也包括被耦接以将公共的指令流断言到 所有级的控制器、和耦接到所有级的数据存储器,并且所有级可并行 操作以响应公共的指令流滤波输入数据值的块,但是每个级对不同的 数据值操作,并且至少一个级对包括缓冲的值、由另一个级响应于输 入数据值的子集生成并且在被取回以用于在所述一个级中处理之前 利用不同的等待存储在存储器中的数据值操作。因此,在这些实施例 中的多级滤波器具有SIMD(单指令、多数据)架构,其中各个双二 阶滤波器级响应于单个指令流独立地并且并行操作。例如,多级滤波 器可以包括N级(其中N是大于一的数),并且级中的一个(在序 列中的第“M+1”级)可以对由级中的先前一个级(在序列中的第“M” 级)在不同的时间(例如,响应于块的不同的输入数据值的序列)生 成的、存储在缓冲存储器中(在不同的时间)的、并且在不同的等待 时间驻留在缓冲存储器之后从缓冲存储器读取(由第“(M+1)”级) 的数据值操作。

在一些实施例中,本发明是多级滤波器,包括:

缓冲存储器;

至少两个双二阶滤波器级,包括第一双二阶滤波器级和后续的双 二阶滤波器级;以及

控制器,耦接到双二阶滤波器级并且被配置为将单个指令流断言 到第一双二阶滤波器级和后续的双二阶滤波器级二者,其中所述第一 双二阶滤波器级和所述后续的双二阶滤波器级响应于指令流独立地 并且并行操作,

其中第一双二阶滤波器级被耦接到存储器并且被配置为响应于 指令流对N个输入样本的块执行双二阶滤波以生成中间值,并且将中 间值断言到存储器(用于存储在所述存储器中),其中中间值包括输 入样本的至少一个子集的每一个的滤波的版本,以及

其中后续的双二阶滤波器级被耦接到存储器并且被配置为响应 于指令流对从存储器取回的缓冲的值执行双二阶滤波以生成输出值 的块,其中输出值包括与在N个输入样本的块中的输入样本的每一个 对应的输出值,并且缓冲的值包括响应于N个输入样本的块在第一双 二阶滤波器级中生成的至少一些中间值。

在典型的实施例中,多级滤波器被配置为利用对采样索引的迭代 而不用对双二阶滤波级索引的迭代在单个处理环路中执行N个输入 样本的块的多级滤波。

在本发明的多级滤波器的一些实施例中,其中多级滤波器具有M 级,后续的双二阶滤波器级被配置为响应于从存储器取回的缓冲的值 的子集生成与输入样本中的第“j”个样本对应的输出值,其中j是从 M-1到N-1范围的索引,所述子集包括输入样本中的第“j”个样本 的滤波的版本、输入样本中的第“j-1”个样本的滤波的版本、以及输 入样本中的第“j-2”个样本的滤波的版本。

在发明的多级滤波器的一些实施例中,后续的双二阶滤波器级被 配置为响应于从存储器取回的缓冲的值的不同子集生成与每个输入 样本对应的输出值,每个所述子集包括在第一双二阶滤波器级中生成 并且在不同的等待时间驻留在所述存储器之后从存储器取回的至少 三个中间值。例如,在典型的实施例中,其中多级滤波器具有M个 双二阶滤波器级,被取回以生成与输入样本中的第“j”个样本对应的 输出值的缓冲的值的子集,其中j是从M-1到N-1范围的索引,包括 响应于输入样本中的第“j”个样本在第一双二阶滤波器级中生成的至 少一个值、响应于输入样本中的第“j-1”个样本在第一双二阶滤波器 级中生成的至少一个值、以及响应于输入样本中的第“j-2”个样本在 第一双二阶滤波器级中生成的至少一个值。

在另一类实施例中,本发明是用于对N个输入样本的块执行多 级滤波的方法,所述方法包括步骤:

(a)对N个输入样本的块执行第一双二阶滤波操作以生成中间 值,并且将中间值断言到缓冲存储器(用于存储在所述存储器中), 其中中间值包括输入样本的至少一个子集的每一个的滤波的版本;以 及

(b)对从存储器取回的缓冲的值执行第二双二阶滤波操作以生 成输出值的块,其中输出值包括与在N个输入样本的块中的每个输入 样本对应的输出值,缓冲的值的不同子集被取回和滤波以生成与块中 每个输入样本对应的输出值,并且缓冲的值的每个所述子集包括在执 行步骤(a)期间生成的至少两个(例如,三个)中间值,其在驻留 在所述存储器中不同的等待时间之后从存储器取回,

其中步骤(a)和(b)被响应于单个指令流执行,以使得步骤(a) 和(b)响应于单个指令流被独立地并且并行执行。在典型的实施例 中,利用对采样索引的迭代而不用对双二阶滤波级索引的迭代在单个 处理环路中执行输入样本块的多级滤波。

在发明的方法的一些实施例中,其中在具有M级的多级滤波器 中执行滤波,在步骤(b)中取回以生成与输入样本中的第“j”个对 应的输出值的缓冲的值,其中j是从M-1到N-1范围的索引,包括在 步骤(a)中生成的输入样本中的第“j”个样本的滤波的版本、在步 骤(a)中生成的输入样本中的第“j-1”个样本的滤波的版本、以及 在步骤(a)中生成的输入样本中的第“j-2”个样本的滤波的版本。

在另一类实施例中,本发明是被配置为响应于输入音频数据生成 编码的音频数据的音频编码器,所述编码器包括至少一个多级滤波器 (其是发明的多级滤波器的任何实施例),被耦接并且被配置为对音 频数据进行滤波(例如,对音频数据进行滤波的初步处理的版本)。 在另一类实施例中,本发明是用于编码音频数据以生成编码的音频数 据的方法,包括通过对音频数据(例如,对音频数据的初步处理的版 本)执行发明的多级双二阶滤波方法的任何实施例。例如,本发明的 实施例是音频编码器,包括预处理级(用于初步处理要被编码器编码 的输入音频数据),其中预处理级包括至少一个多级滤波器(其是发 明的多级滤波器的任何实施例),被耦接并且被配置为对音频数据进 行滤波(例如,输入数据或输入数据的初步处理的版本)。本发明的 另一个实施例是预处理器(用于初步处理要被编码器编码的音频数 据),其中预处理器包括至少一个多级滤波器(其是发明的多级滤波 器的任何实施例),被耦接并且被配置为对音频数据进行滤波(例如, 输入到预处理器的数据或此类输入数据的初步处理的版本)。

在另一类实施例中,本发明是被配置为响应于编码的音频数据生 成解码的音频数据的音频解码器。在这一类中的某些实施例中,解码 器包括至少一个多级滤波器(其是发明的多级滤波器的任何实施例), 被耦接并且被配置为滤波编码的音频数据(例如,对音频数据进行滤 波的初步处理的编码的版本)。在另一类实施例中,本发明是用于解 码编码的音频数据以生成解码的音频数据的方法。在某些此类实施例 中,解码包括对编码的音频数据(例如,对编码的音频数据的初步处 理的版本)执行发明的多级双二阶滤波方法的任何实施例。例如,本 发明的实施例是包括后处理阶段(用于已被解码器解码的解码音频数 据的后处理)的音频解码器,其中后处理阶段包括至少一个多级滤波 器(其是发明的多级滤波器的任何实施例),被耦接并且被配置为对 音频数据进行滤波(例如,解码的数据或解码数据的处理的版本)。 本发明的另一个实施例是后处理器(例如,用于执行已被解码器解码 的解码音频数据的后处理),其中后处理器包括至少一个多级滤波器 (其是发明的多级滤波器的任何实施例),被耦接并且被配置为对音 频数据进行滤波(例如,输入到后处理器的解码数据或此类输入数据 的处理的版本)。

根据本发明的典型实施例,SIMD指令(或用于由多个ALU或 AMU并行处理的指令)用于编程处理器(例如,数字信号处理器或 通用处理器)以实施多级滤波器。多级滤波器可以实施带宽滤波、低 通滤波(例如,在音频编码器的LFE子系统中),高通滤波(例如, 在音频编码器的瞬态检测器子系统中),或其它滤波。

本发明的其它方面包括被配置(例如编程)以执行发明的方法的 任何实施例的系统或设备(例如,编码器、解码器或处理器),和存 储用于实施发明的方法或它的步骤的任何实施例的代码的计算机可 读媒介(例如,盘)。例如,发明的系统可以是或包括可编程的通用 处理器、数字信号处理器、或微处理器,利用软件或固件编程的和/ 或否则被配置为对数据执行各种操作中的任何一个,包括发明的方法 或它的步骤的实施例。此类通用处理器可以是或包括计算机系统,包 括输入设备、存储器、和处理电路,被编程(和/或否则配置)以响应 于对其断言的数据执行发明的方法(或它的步骤)的实施例。

本发明的某些实施例是编码器(例如,根据杜比数字加、AC-3、 或杜比E格式编码音频数据的编码器)或解码器,被实施为编程的处 理器(例如,ARM氖处理器,每个是具有允许并行处理的氖SIMD 引擎的ARM Cortex处理器、或具有SIMD(单指令、多数据)单元 和/或多个ALU(算术逻辑算术器)或AMU(算术操作单元)的其它 处理器或被编程(和/或否则配置)的数字信号处理器(例如,具有 SIMD单元和/或多个ALU或AMU的DSP)。

附图说明

图1是传统的双二阶滤波器的方框图。

图1A是传统的多级双二阶滤波器的方框图。

图2是用于在被实施为串联级联的双二阶滤波器(“级联的双二 阶部分”)的滤波器中执行滤波的传统方法的流程图。

图3是用于在包括响应于单个指令流并行操作的级联的双二阶 滤波器(“级联的双二阶部分”)的多级双二阶滤波器中执行滤波的 发明方法的实施例的流程图。

图4是包括级联的双二阶滤波器并且可以参考图3执行描述的类 型的方法的多级滤波器(例如,通过根据本发明的实施例编程DSP 或其它处理器实施)的方框图。在图4中,存储器10包括存储器位 置,其存储输入数据x(n)的每个块,和缓冲存储器位置,其存储由双 二阶滤波器生成的所有需要的中间值x1(n),…,xN-1(n)。

图5是包括编码器(包括发明的多级滤波器的实施例)和解码器 (也包括发明的多级滤波器的实施例)的系统的方框图。

图6是用于在包括响应于单个指令流并行操作的级联的双二阶 滤波器(“级联的双二阶部分”)的多级双二阶滤波器中执行滤波的 发明方法的另一个实施例的流程图。

图7是发明的方法的实施例的图6所述的步骤40、41、和42的 实施例的流程图。

图8是发明的方法的实施例的图6所述的步骤47、48、和49的 实施例的流程图。

图9是在其中适当地执行计算的图4系统的实施方式中生成的值 的图。

图10是包括编码器(包括发明的多级滤波器的实施例)和作为 发明的解码器的实施例的解码器的系统的方框图。

具体实施方式

将参考图3、4、5、6、7、和8描述发明的方法和被配置为实施 发明方法的系统(例如,编码器和解码器)的实施例。

首先,参考图2,我们描述用于利用包括M个双二阶滤波器(其 中M是在下面和在图2中被称为“nsections”的数目)的级联的多级 滤波器滤波数据样本(例如,音频数据样本块)的传统方法。此类传 统的多级双二阶滤波器的示例是以上描述的图1A的滤波器。

在图2的方法中,要被滤波的每个新的N个样本的块初始被缓 冲(在步骤20中)。块中的每个样本由索引j标识,其中0≤j≤N-1。 在多级滤波器中的每个级(部分)由索引i标识,其中0≤i≤M-1。

在步骤21中,索引i被初始化为零,并且在步骤22中,索引j 被初始化为零。

在步骤23中,在第“i”个双二阶滤波器中滤波第“j”个输入 样本,并且然后在步骤24中,索引j递增。步骤25确定递增的索引 j(等于j+1)是否小于N。如果在步骤25中确定递增的索引j小于 N,则再一次执行步骤23以在第“i”个双二阶滤波器中滤波下一个 (第“(j+1)”)样本。

如果在步骤25中确定递增的索引j等于N,以使得在当前块中 的所有样本已在当前双二阶滤波器中被滤波,则在步骤26中,索引i 递增。

步骤27确定最近递增的索引i(等于i+1)是否小于数目 “nsections”(其等于M)。如果在步骤27中确定最近递增的索引i 小于M,则执行步骤22-26的另一个迭代以滤波在下一个((第“(i+1)” 个)双二阶滤波器中的中间值的最新块(在步骤22-25的先前迭代中 在先前的双二阶滤波器中生成的先前(第“i”个)双二阶滤波器的输 出)。

如果在步骤27中确定最近递增的索引i等于M,以使得在所有 双二阶滤波器中在当前块中的所有样本的处理完成,然后执行步骤 28。在步骤28中,通过在多级滤波器中滤波输入样本的当前块生成 的N个滤波的样本被输出。在这一点上,要被滤波的N个样本的任 何附加块被缓冲(在步骤20的新执行中)并且图2方法被重复以在 多级滤波器中滤波新的样本块。

对于图2处理,在M=2的情况中(即,在多级滤波器仅仅包括 两个级联的双二阶滤波器的情况中),也通过以下伪代码描述在多级 滤波器的每个级中执行的处理,其中N=通过在多级滤波器中滤波N 个样本块生成的输出样本的数目:

在传统的图2方法的执行期间,因为用于每个样本(“output[j]) 的多级滤波器的每个级的输出一般取决于用于两个先前的样本 (output[j-1]和[j-2])的级的输出,并且取决于到级的当前输入 (“input[j]”)和到级的两个先前输入(input[j-1]和input[j-2]), 因此用于在级内实施的环路(图2的步骤23、24、和25)的操作不 被并行化。同样,因为第一级(i=0)的输出被输入到第二级(i=1), 在传统图2方法的执行中不并行化跨级的操作。这导致对多级滤波器 的高指令计数(有时被称为MIPS或每秒数百万指令数)需要,甚至 当它由其架构包括多个ALU(或AMU)或SIMD单元的处理器实施 时。

接下来,参考图3,我们描述用于利用包括级联的两个双二阶滤 波器的多级滤波器滤波数据样本块(例如,音频数据样本块)的发明 方法的实施例。开始,在步骤30中,要被滤波的N个样本的每个新 块被缓冲(例如,在图4的存储器10中)以便在后面的步骤(包括 步骤31、33、和34)可以加以应用。

块中的每个样本由索引j标识,其中0≤j≤N-1。在多级滤波器 中的每个级(部分)由索引i标识,其中0≤i≤1。

在步骤31中,在第一(i=0)双二阶滤波器中滤波第一输入样本 (j=0)。由此步骤生成的值被缓冲(例如,在图4的存储器10中) 以便后续使用(例如,在步骤33和/或34的后续执行中)。

在步骤32中,索引j被设置为1。

然后,并行执行步骤33和34。在步骤33中,在第一(i=0)双 二阶滤波器中滤波第“j”个输入样本,并且由此步骤生成的至少一个 (例如,每个)值(“中间”值)被缓冲(例如,在图4的存储器10) 以便在后面的步骤中可以加以应用。在步骤34中,到第二(i=1)双 二阶滤波器的第“j-1”个输入样本被滤波,并且由此步骤生成的至少 一个(例如,每个)值(“中间”值)被缓冲(例如,在图4的存储 器10中)以便在后面的步骤可以加以应用。

然后,在步骤35中,索引j递增。步骤36确定递增的索引j(等 于j+1)是否小于N。如果在步骤36中确定递增的索引j小于N, 则步骤33和34被再一次执行以滤波到第一双二阶滤波器的下一个输 入样本(在步骤33中)并且到第二双二阶滤波器的下一个输入样本 (在步骤34中)。由步骤33和34的每一个的每个迭代生成的至少 一个(例如,每个)值(“中间”值)被缓冲(例如,在图4的存储 器10)以便在后面的步骤中可以加以应用。例如,在步骤33的一个 或多个先前的迭代中生成的一个或多个中间值可以从缓冲器取回以 用于步骤34的执行。

如果在步骤36中确定递增的索引j等于N以使得在当前块中的 所有输入样本已在第一双二阶滤波器中被滤波,则执行步骤37。

在步骤37中,滤波到第二(i=1)双二阶滤波器的最后一个输入 样本(j=N-1)。由此步骤生成的值被缓冲(例如,在图4的存储器 10中)以便在后面的使用(例如,用于在步骤38中输出)可以加以 应用。

然后,在步骤38中,由第二双二阶滤波器生成的N个滤波的样 本被输出(响应于N个输入样本的当前块作为多级滤波器的输出)。 在这一点上,要被滤波的N个样本的任何附加块被缓冲(在步骤30 的新执行中)并且图3方法被重复以在多级滤波器中滤波新的样本块。

由以下伪代码也描述在多级滤波器的每个级中执行的处理(在图 3方法的执行期间),其中N=通过在多级滤波器中滤波N个样本块 生成的输出样本的数目,outputstage1[k]是响应于第k个输入样本的 多级滤波器的第一级的输出,outputstage2[k]是对应于第k个输入样 本的多级滤波器的第二级的输出,以及input[k]是到多级滤波器的第 一级的第k个输入样本:

{第一级的第一样本处理}

{第二级的最后(第“N-1”)样本处理。}

如从图3和对应的伪代码中可见,在多级滤波器的两个级中的处 理合并成单个样本环路(图3的步骤33、34、35、和36)。一般地 通过在两级或多个之间引入一个样本等待,如下面关于图6、图7、 和图8描述的,在具有两个或更多个双二阶滤波器级的多级滤波器的 每个级之间引入一个样本等待,在多级滤波器的所有级中的处理可以 根据本发明被完全并行化。根据本发明的描述的实施例,在多级滤波 器的所有双二阶滤波器级中的样本块的处理可以因此在单个样本环 路(对于所有级被组合)中被并行化。

利用包括M个双二阶滤波器(其中M大于2)的级联的多级滤 波器滤波数据样本块(例如,音频数据样本块)的本发明的方法的图 3实施例的变化被预期。此类变化通常以参考图6、7、和8描述的方 式实施。

开始,在图6流程图的步骤40中,要被滤波的N个样本的每 个新块被缓冲(例如,在图4的存储器10中)以便在后面的步骤(包 括步骤41、43-45、和48)可以加以应用。

块中的每个样本由索引j标识,其中0≤j≤N-1。在多级滤波器 中的每个双二阶级(部分)由索引i标识,其中0≤i≤M-1。

在步骤41中,在双二阶滤波器级i=0至i=M-2(例如,以参考 图7描述的方式)中对第一M-1个输入样本(j=0至j=M-2)执行预 环路滤波。应当指出,如图7所示,对于某些双二阶滤波器级,预环 路滤波对应于仅仅第一M-1个输入样本的子集出现。由此步骤生成的 值被缓冲(例如,在图4的存储器10中)以便在后面的步骤可以加 以应用(例如,在步骤43-45的后续执行)。

在步骤42中,索引j被设置为M-1。

然后,并行执行步骤43-45(一个步骤用于M级的每个)。在步 骤43中,到第一(i=0)双二阶滤波器的第“j”个输入样本被滤波, 并且由此步骤生成的至少一个(例如,每个)值(“中间”值)被缓 冲(例如,在图4的存储器10中)以便在后面的步骤可以加以应用。 在步骤44中,到第二(i=1)双二阶滤波器的第“j-1”个输入样本被 滤波,并且由此步骤生成的至少一个(例如,每个)值(“中间”值) 被缓冲(例如,在图4的存储器10中)以便在后面的步骤可以加以 应用。类似地(在与步骤43和44并行执行的至少一个步骤中,假定 M大于2),到第三(i=2)双二阶滤波器的第“j-2”个输入样本被 滤波,到第四(i=3)双二阶滤波器的第“j-3”个输入样本被滤波(假 定M大于或等于4),等等对于双二阶滤波器i=4至i=M-2中的每个 附加一个、和由每个这样步骤生成的至少一个(例如,每个)值(“中 间”值)被缓冲以便在后面的步骤可以加以应用。在步骤45(与步骤 43和44并行执行,如果M大于2)中,到最后(i=M-1)个双二阶 滤波器的第“j-M+1”输入样本被滤波,并且由此步骤生成的至少一 个(例如,每个)值(“中间”值)被缓冲(例如,在图4的存储器 10中)以便在后面的步骤可以加以应用。

然后,在步骤46中,索引j递增,并且步骤47确定递增的索引 j(等于j+1)是否小于N。如果在步骤47中确定递增的索引j小于 N,则43-45(和与步骤43-45并行执行的任何其它步骤)被再一次执 行以在第一双二阶滤波器中滤波下一个样本(在步骤43中),在第 二双二阶滤波器中滤波下一个样本(在步骤44中),等等对于每个 附加双二阶滤波器级。由步骤43-45的每一个的每个迭代生成的至少 一个(例如,每个)值(“中间”值)被缓冲(例如,在图4的存储 器10)以便在后面的步骤中可以加以应用。例如,在步骤43的一个 或多个先前的迭代中生成的一个或多个中间值可以从缓冲器取回以 用于步骤44的执行。

如果在步骤47中确定递增的索引j等于N,以使得在当前块中 的所有输入样本已在双二阶滤波器的一个(i=0的滤波器)中被滤波, 则执行后环路滤波步骤48。

在步骤48中,对到双二阶滤波器级i=1至i=M-1的任何其余未 滤波的输入样本执行后环路滤波(例如,以参考图8描述的方式)。 由此步骤生成的值被缓冲(例如,在图4的存储器10中)以便在后 面的步骤(例如,在步骤49中的输出)可以加以应用。

在步骤48之后,在步骤49中,由最终(i=M-1)双二阶滤波器 生成的N个滤波的样本被输出(作为响应于N个输入样本的当前块 的多级滤波器的输出)。在这一点上,要被滤波的N个样本的任何附 加块被缓冲(在步骤40的新执行中)并且图6方法被重复以在多级 滤波器中滤波新的样本块。

图7是步骤40和42、以及发明的方法的图6实施例的步骤41 的实施例的细节的流程图。图7的步骤50-58是图6的预环路滤波步 骤41的实施方式,在步骤50中,在第一双二阶滤波器级(i=0)中滤 波当前块的第一样本(j=0),并且由此步骤生成的滤波的样本值被 缓冲(例如,在图4的存储器10中)以便可用于后续步骤使用(例 如,在步骤51和52)。在步骤51中,在第一双二阶滤波器级(i=0) 中滤波块的第二样本(j=1),并且由此步骤生成的滤波的样本值被 缓冲(例如,在图4的存储器10中)以便可用于后续步骤使用(例 如,在步骤53中)。在步骤52中,到第二双二阶滤波器级(i=1)的 块的第一样本(j=0)被滤波,并且由此步骤生成的滤波的样本值被 优选地缓冲(例如,在图4的存储器10中)以便后续使用可用(例 如,在步骤54中)。步骤51和52被优选并行执行(响应于相同的 指令或断言到第一和第二阶段的指令序列)。

在图7中的步骤51垂直下方示出的步骤(包括步骤53和56) 中,在第一双二阶滤波器级(i=0)中滤波当前块的第三样本(j=2) 至第“M-1”样本(j=M-2)的每一个,并且由每个此类步骤生成的 滤波的样本值被缓冲以便后续使用可用。在步骤53中,在第一双二 阶滤波器级(i=0)中滤波块的第三样本(j=2),并且由此类步骤生 成的滤波的样本值被缓冲以便可用于后续使用。在步骤56中,在第 一双二阶滤波器级(i=0)中滤波当前块的第“M-1”个样本(j=M-2), 并且由此类步骤生成的滤波的样本值被缓冲以便可用于后续使用。

在图7中的步骤52垂直下方示出的步骤(包括步骤54和57) 中,将到第二双二阶滤波器级(i=1)的第二输入样本(j=1)至第“M-2” 输入样本(j=M-3)的每一个滤波,并且由每个此类步骤生成的滤波 的样本值被缓冲以便后续使用可用。在步骤54中,到第二双二阶滤 波器级的第二输入样本(j=1)被滤波,并且由此类步骤生成的滤波 的样本值被缓冲(例如,在图4的存储器10中)以便后续使用可用。 在步骤57中,到第二双二阶滤波器级的第“M-2”个输入样本(j=M-3) 被滤波,并且由此类步骤生成的滤波的样本值被缓冲(例如,在图4 的存储器10中)以便后续使用可用。

一般地,对于第“k”双二阶滤波器级,其中k是从0到M-2范 围的索引,步骤的序列(在图7的一列步骤)被执行以滤波到第“k” 双二阶滤波器级的第一输入样本(j=0)至到第“k”双二阶滤波器级 的“M-1-k”输入样本(j=M-2-k)的每一个,并且由每个此类步骤 生成的滤波的样本值被缓冲(例如,在图4的存储器10中)以便后 续使用可用。

因此,如果M=3,则(优选地并行)执行图7的步骤53、54、 和55。在步骤53中,到第一双二阶滤波器级(i=0)的第三输入样本 (j=2)被滤波,并且由此步骤生成的滤波的样本值被缓冲。在步骤 54中,到第二双二阶滤波器级(i=1)的第二输入样本(j=1)被滤波, 并且由此步骤生成的滤波的样本值被缓冲。在步骤55中,到第一双 二阶滤波器级(i=0)的第一输入样本(j=0)被滤波,并且由此步骤 生成的滤波的样本值被缓冲。

类似地,如果M>5,则(优选地并行)执行包括步骤53-55(如 同在图7指示的)的行以下的步骤行的步骤,并且然后(优选地并行) 执行包括图7的步骤56、57、和58的步骤行的步骤。在步骤56中, 到第一双二阶滤波器级(i=0)的第“M-1”个输入样本(j=M-2)被 滤波,并且由此步骤生成的滤波的样本值被缓冲。在步骤57中,到 第二双二阶滤波器级(i=1)的第“M-2”个输入样本(j=M-3)被滤 波,并且由此步骤生成的滤波的样本值被缓冲。在步骤58中,到第 “M-1”个双二阶滤波器级(i=M-2)的第一输入样本(j=0)被滤波, 并且由此步骤生成的滤波的样本值被缓冲。

图7中的每个步骤行的步骤(例如,步骤51和52、或步骤53、 54、和55)被优选地并行执行(响应于相同的指令或断言到相关级的 指令序列)。

图8是发明的方法的实施例的图6的步骤47和49的实施例、和 步骤48的实施例的细节的流程图。图8的步骤60-66是图6的后环路 滤波步骤48的实施方式。

一般地,如图8所示,对于第“k”个双二阶滤波器级,其中k 是从1到M-1范围的索引,步骤的序列(图8的一列步骤)被执行以 滤波到第“k”个双二阶滤波器级的第“N-k+1”个输入样本(j=N-k) 至到第“k”个双二阶滤波器级的最后一个输入样本(j=N-1)的每一 个,并且由每个此类步骤生成的滤波的样本值被缓冲(例如,在图4 的存储器10中)以便后续使用可用。

例如,在步骤60中,在第二双二阶滤波器级(i=1)中滤波当前 块的最后一个样本(j=N-1),并且由此类步骤生成的滤波的样本值 被缓冲(例如,在图4的存储器10中)以便可用于后续使用。在步 骤61中,在第三双二阶滤波器级(i=2)中滤波块的第二最后样本 (j=N-2),并且由此步骤生成的滤波的样本值被缓冲(例如,在图4 的存储器10中)以便后续步骤使用(例如,在步骤63中)。例如, 在步骤63中,在第三双二阶滤波器级(i=2)中滤波块的最后一个样 本(j=N-1),并且由此类步骤生成的滤波的样本值被优选地缓冲(例 如,在图4的存储器10中)以便可用于后续使用。

在步骤64中,在第二最后一个双二阶滤波器级(i=M-2)中滤 波块的最后一个样本(j=N-1),并且由此类步骤生成的滤波的样本 值被优选地缓冲(例如,在图4的存储器10中)以便可用于后续使 用。

在步骤62中,在最后一个双二阶滤波器级(i=M-1)中滤波块 的第“N-M+1”样本,并且由此步骤生成的滤波的样本值被优选地缓 冲(例如,在图4的存储器10中)以便后续使用可用(例如,图8 中的步骤62垂直下方的步骤)。在步骤65中,在最后一个双二阶滤 波器级(i=M-1)中滤波块的第二最后一个(j=N-2)样本,并且由此 步骤生成的滤波的样本值被优选缓冲(例如,在图4的存储器10中) 以便后续使用可用(例如,在图8中的步骤66)。在步骤66中,在 最后一个双二阶滤波器级(i=M-1)中滤波块的最后一个样本(j=N-1), 并且由此类步骤生成的滤波的样本值被优选地缓冲(例如,在图4的 存储器10中)以便可用于后续使用。

图8中的每个步骤行的步骤(例如,步骤64和65、或包括步骤 60、61、和62的行的步骤)被优选地并行执行(响应于相同的指令 或断言到相关级的指令序列)。

图3方法(用于利用包括大于两个双二阶滤波器的级联的多级滤 波器滤波数据样本块的对其的变化)利用对样本索引(图3的索引j) 的迭代而不利用对双二阶滤波级索引的迭代在单个环路中执行对N 个输入样本块的多级滤波。相反,图2的传统方法利用对样本索引(图 2的索引j)的迭代和对双二阶滤波级索引(图2的索引i)的迭代二 者在两个嵌套的环路中处理数据样本块。

在典型实施例(例如,下面描述的图4实施例)中,发明的多级 滤波器的级(每个级是双二阶滤波器)与级之间的等待组合,以使得 所有级可以独立地操作,允许不同级的处理并行化。所有级可以响应 于来自于控制器的单个、公共的指令流并行操作(以滤波输入数据值 的块),但是每个级对不同的数据值操作,级的至少一个对包括缓冲 的值(由另一个级响应于输入数据值的子集生成的、并且在被取回以 用于在级中的所述一个中处理之前以不同的等待存储在缓冲存储器 中)的数据值操作。因此,多级滤波器具有SIMD(单指令、多数据) 架构,其中各个双二阶滤波器级响应于单个指令流独立地并且并行操 作。例如,多级滤波器可以包括N级,并且级中的一个(在序列中的 第“M+1”级)可以对由级中先前的一个(在序列中的第“M”级) 在不同的时间(例如,响应于块的不同输入数据值的序列)生成的、 (在不同的时间)存储在缓冲存储器中的、并且在驻留在缓冲存储器 中不同的等待时间之后从缓冲存储器(由第“(M+1)”级)读取的 数据值操作。

接下来,参考图4,我们描述发明的多级滤波器的一类实施例。 图4的多级滤波器包括多个双二阶滤波器(M个双二阶滤波器,其中 M是大于一的整数)并且被配置为执行参考图3描述的类型的方法(或 对此类方法的变化,诸如在图6示出的)。图4滤波器包括存储器10、 控制器11、和双二阶滤波器B1、B2、…BM,如图所示连接,并且被 配置为响应于由控制器11断言到双二阶滤波器的单个指令流,滤波N 个输入数据值x(n)的块,其中“n”是从1至N范围的索引。输入数 据值x(n)的每一个可以是音频数据样本。

应当理解,表达“单个指令流”被断言到多级滤波器的各个级(例 如,每个是双二阶滤波器),这里在广义上被使用,包括如下两种情 况:其中单个指令流被断言到所有级(例如,在所有级耦接到的单个 总线或导体上)的情况;和其中相同(或基本上相同)的指令流被同 时(或基本上同时)断言到级的情况(例如,每个流被断言在耦接到 不同级的不同的总线或导体上)。

响应于输入数据值x(n)的块,滤波器B1生成N个中间(双二阶 滤波的)值x1(n),并且将它们断言到存储器10中的缓冲存储器位置。 在操作中,滤波器B2从存储器10中取回需要的中间值x1(n),响应于 其生成中间(双二阶滤波的)值x2(n),并且将它生成的中间值断言到 存储器10中的缓冲存储器位置。类似地,在操作中,双二阶滤波器 中的彼此一个(滤波器Bi,其中i是从3到M范围的索引)从存储器 10中取回中间值xi-1(n),响应于其生成双二阶滤波的值xi(n),并且将 它生成的值断言到存储器10中的缓冲存储器位置。在最终双二阶滤 波器(BM)中生成的双二阶滤波的值xM(n)=y(n)包括响应于输入数据 值x(n)的块生成的N个完全滤波的输出数据值的块。

存储器10包括存储器位置,其存储每个输入数据x(n)的块,和 缓冲存储器位置,其存储由双二阶滤波器B1、B2、…,BM-1生成的中 间值x1(n),…,xM-1(n)(例如,存储对于每个输入数据块生成的中间 值x1(n),…,xM-1(n)的缓冲器位置)。在为其适当地执行计算的某些 实施方式中,用于存储输入数据x(n)的相同的存储器位置可以用来存 储中间值x1(n),…,xM-1(n),只要特定输入数据样本不再由多级滤波器 需要。以此类实施方式,存储器10与传统存储器(用于实施多级滤 波器的传统、非并行化的版本)相比较,通常不需要包括更多的(或 显著地更多的)存储器位置,因为此类传统存储器将通常包括用于存 储要被滤波的输入数据x(n)的每个块的存储器位置,和由多级滤波器 的每一个级生成的每个输出值,每个输出值是级本身的操作和/或滤波 器的每个后续级的操作所需的。

例如,图9是在图4系统的实施方式中生成的值的图,其中在 N=4并且M=2的情况中(即,两级双二阶每次对4个样本块操作), 适当地执行计算。

在图9示例中,我们从在输入缓冲器中的四个样本开始,x(0)… x(3)。

在第一步骤中,样本x(0)被通过滤波器B0(第一级双二阶) 滤波以产生样本x1(0)。样本x1(0)被存储在存储器中的先前由 样本x(0)占据的位置中。所有其它存储器位置未改变。

在第二步骤中,样本x1(0)被通过滤波器B1(第二级双二阶) 滤波以产生样本y(0)。样本y(0)被存储在存储器中的先前由样 本x1(0)占据的位置中。

并行地,样本x(1)被通过滤波器B0滤波以产生样本x1(1)。 样本x1(1)被存储在存储器中的先前由样本x(1)占据的位置中。

在后面的步骤中,处理继续直到所有输入样本x(0)…x(3) 已被输出样本y(0)…y(3)代替。

在图9示例中,当滤波器B1应用于样本x1(2)时,样本x1(1) 和x1(0)不再存在于缓冲器(已被y(0)和y(1)代替)。反而, 由滤波器B1从x1(1)和x1(0)得出的样本(即,对应于图1中的 s1(n)和s2(n)的样本)被包含在与滤波器B1相关联的2个状态的变量 中。

在图9示例中,每个滤波器(例如,滤波器B0和B1的每一个) 需要访问存储两个样本(对应于图1中的s1(n)和s2(n))的存储器位置, 每个滤波器生成这两个样本(响应于N个输入样本的当前块的第“j-1” 个和第“j-2”个输入样本)以用于滤波当前块的第“j”个输入样本。 这些存储器位置可以在图4系统的存储器10之内(或可以是其它缓 冲存储器位置)。

对于每个滤波器,每次新的输入样本(具有递增的索引j)被断 言到滤波器,由滤波器已经生成的每对存储的样本(对应于图1中的 s1(n)和s2(n))被更新。存储的样本(对应于图1中的s1(n)和s2(n)) 是“中间值”的示例(如同这里其它地方使用的短语),所述中间值 根据本发明由滤波器(其是多级滤波器的一个级)生成并且被缓冲用 于后续使用,但是它们随后由生成它们的滤波器级(不由多级滤波器 的不同滤波器级)使用。

虽然图9示出利用适当的滤波的本发明的方法的具体示例,其中 块大小(n)等于4并且在发明的滤波器中双二阶滤波器级(M)的数目 等于2,但是利用适当的滤波的本发明的方法的实施例预期M和N 的任何值,服从条件M>1和N>M。在图9实施方式中(并且使用 适当的滤波的其它实施例,其中块大小不同于4和/或双二阶级的数目 不同于2),用于存储输入数据x(n)的相同的存储器位置(例如,在 图4的存储器10中)可以用来存储中间值x1(n),…,xM-1(n),只要特 定输入数据样本不再由多级滤波器需要。

图4滤波器可以通过编程数字信号处理器(DSP)或其它处理器 实施,所述处理器包括存储器(用作存储器10)、控制器(用作控制 器11)、和ALU(算术逻辑单元)或AMU(算术操作单元),每个 双二阶滤波器B1,B2,…,BM被实施为适当地配置的ALU或AMU 中的一个。

因此,图4滤波器包括:

缓冲存储器(存储器10中的缓冲位置);

至少两个双二阶滤波器级(双二阶滤波器B1,B2,…,BM), 包括第一双二阶滤波器级(例如,双二阶滤波器B1)和后续的双二 阶滤波器级(例如,双二阶滤波器B2);以及

控制器(控制器11),被耦接到双二阶滤波器级并且被配置为 将单个指令流断言到第一双二阶滤波器级和后续的双二阶滤波器级。 第一双二阶滤波器级和后续的双二阶滤波器级(以及图4滤波器的每 一个其它双二阶滤波器级)响应于指令流独立地并且并行操作。

第一双二阶滤波器级被耦接到存储器并且被配置为响应于指令 流对N个输入样本的块执行双二阶滤波以生成中间值(例如,值 x1(n)),并且将中间值断言到存储器(用于存储在所述存储器中)。 这些中间值包括输入样本的每一个的滤波的版本。在本发明的某些实 施例中,不多于一个中间值x1(n)需要在任一时间呈现在存储器10中。 后续的双二阶滤波器级被耦接到存储器并且被配置为响应于指令流 对从存储器取回的缓冲的值执行双二阶滤波以生成输出值的块(例 如,值x2(n)),其中输出值包括与N个输入样本的块的每一个对应 的输出值,并且缓冲的值包括响应于N个输入样本的块在第一双二阶 滤波器级中生成的中间值中的至少一些。

在多级滤波器具有M级的实施例中,后续的双二阶滤波器级(例 如,图4的滤波器B2)被配置为响应于从存储器取回的缓冲的值的子 集生成与输入样本中的第“j”个样本对应的输出值,其中j是从M-1 到N-1范围的索引,所述子集包括输入样本中的第“j”个样本的滤波 的版本、输入样本中的第“j-1”个样本的滤波的版本、以及输入样本 中的第“j-2”个样本的滤波的版本。

后续的双二阶滤波器级(例如,图4的滤波器B2)被配置为响 应于从存储器取回的缓冲的值的不同子集生成与每个输入样本x(n)对 应的输出值(x2(n)),每个所述子集包括在第一双二阶滤波器级中生 成并且在驻留在所述存储器中不同的等待时间之后从存储器取回的 至少两个(例如,三个)中间值(例如,值x1(n),x1(n-1),和x1(n-2), 在图4指示的)。更具体地,在其中多级滤波器具有M级的实施例 中,由滤波器B2取回以生成与输入样本中的第“j”个样本对应的输 出值的缓冲的值的子集包括响应于输入样本中的第“j”个样本在第一 双二阶滤波器级中生成的至少一个值、响应于输入样本中的第“j-1” 个样本在第一双二阶滤波器级中生成的至少一个值、以及响应于输入 样本中的第“j-2”个样本在第一双二阶滤波器级中生成的至少一个值, 其中j是从M-1到N-1范围的索引。

图4滤波器被配置为对N个输入样本(数据值x(n))的块执行 多级滤波,包括执行以下步骤:

(a)对N个输入样本的块执行第一双二阶滤波操作以生成中间 值(例如,在图4指示的值x1(n),x1(n-1),和x1(n-2)),并且将中间 值断言到缓冲存储器(用于存储在所述存储器中),其中中间值包括 输入样本的至少子集的每一个的滤波的版本;以及

(b)对从存储器取回的缓冲的值执行第二双二阶滤波操作,以 生成输出值的块(例如,在图4指示的值x2(n)),其中输出值包括与 N个输入样本的块中的每个输入样本对应的输出值,所述缓冲的值的 不同子集被取回和滤波以生成与块中每个输入样本对应的输出值,并 且缓冲的值的每个所述子集包括在执行步骤(a)期间生成的至少两 个(例如,三个)中间值(例如,值x1(n),x1(n-1),和x1(n-2),在图 4指示的),所述中间值在驻留在所述存储器不同的等待时间之后从 存储器取回,

其中步骤(a)和(b)响应于单个指令流被执行,以使得步骤(a) 和(b)响应于单个指令流被独立地并且并行执行。

在具有M级的多级滤波器中执行滤波的实施例中,在步骤(b) 中被取回以生成与输入样本中的第“j”个样本对应的输出值的缓冲的 值包括在步骤(a)中生成的输入样本中的第“j”个样本的滤波的版 本、在步骤(a)中生成的输入样本中第“j-1”个样本的滤波的版本、 和在步骤(a)中生成的输入样本中第“j-2”个样本的滤波的版本, 其中j是从M-1到N-1范围的索引。

图5是包括本发明的多级滤波器(“M B滤波器”153)的实施 例的编码器(编码器150)的系统的方框图。例如,滤波器153可以 是图4所示并且参考图4描述的类型的。编码器150可选地包括两个 或更多个多级滤波器,每个是本发明的多级滤波器的实施例。响应于 输入音频数据样本,编码器150生成编码的音频数据并且将编码的音 频数据断言到传递子系统151。

传递子系统151被配置为存储编码的音频数据和/或发送指示编 码的音频数据的信号。解码器152被耦接并且配置(例如,编程)以 从子系统151接收编码的音频数据(例如,通过从子系统151中的存 储器读取或取回编码的音频数据,或接收已被子系统151发送的指示 编码的音频数据的信号)。

解码器152包括本发明的多级滤波器(“M B滤波器”154)的 实施例。例如,滤波器154可以是图4所示并且参考图4描述的类型。 解码器152可选地包括两个或更多个多级滤波器,每个是本发明的多 级滤波器的实施例。解码器152操作以解码编码的音频数据,从而生 成解码的音频数据。

图5系统也包括音频预处理子系统(“预处理器”)155,被配 置为对要被编码器150编码的音频数据执行初步处理。预处理器155 包括本发明的多级滤波器(“M B滤波器”157)的实施例。例如, 滤波器157可以是图4所示并且参考图4描述的类型。

图5系统也包括音频后处理子系统(“后处理器”)156,被配 置为对已被解码器154解码的解码的音频数据执行后处理。后处理器 156包括本发明的多级滤波器(“M B滤波器”158)的实施例。例如, 滤波器158可以是图4所示并且参考图4描述的类型。

在某些实施方式中,编码器150是AC-3(或增强的AC-3,或杜 比E)编码器,其被配置为响应于时域输入音频数据生成AC-3(或 增强的AC-3,或杜比E)编码的音频比特流,并且解码器52是AC-3 (或增强的AC-3,或杜比E)解码器。

在另一类实施例中,本发明是被配置为响应于输入音频数据生成 编码的音频数据的音频编码器(例如,图5的编码器150),所述编 码器包括至少一个多级滤波器(其是本发明的多级滤波器的任何实施 例),被耦接并且被配置为对音频数据进行滤波(例如,对音频数据 的初步处理的版本进行滤波)。编码器150被配置为编码音频数据以 生成编码的音频数据,包括对音频数据(例如,对音频数据的初步处 理的版本)执行发明的多级滤波方法的实施例。

在另一类实施例中,本发明是被配置为响应于编码的音频数据生 成解码的音频数据的音频解码器(例如,图5的解码器152),所述 解码器包括至少一个多级滤波器(其是本发明的多级滤波器的任何实 施例),被耦接并且被配置为对编码的音频数据进行滤波(例如,对 编码的音频数据的初步处理的版本进行滤波)。解码器152被配置为 对编码的音频数据进行解码以生成解码的音频数据,包括对编码的音 频数据(例如,对编码的音频数据的初步处理的版本)执行本发明的 多级滤波方法的实施例。

本发明的另一个实施例是用于执行音频数据(例如,要被编码器 编码的音频数据)的初步处理的预处理器(例如,图5的预处理器155), 其中预处理器包括至少一个多级滤波器(其是本发明的多级滤波器的 任何实施例),被耦接并且被配置为对音频数据进行滤波(例如,输 入到预处理器的数据或此类输入数据的初步处理的版本)。

本发明的另一个实施例是用于对已被解码器解码的解码的音频 数据执行后处理的后处理器(例如,图5的后处理器156),其中后 处理器包括至少一个多级滤波器(其是发明的多级滤波器的任何实施 例),被耦接并且被配置为对音频数据(例如,输入到后处理器的解 码的数据或此类输入数据的处理的版本)进行滤波。

图10是包括发明的多级滤波器(“M B滤波器”153)的实施例 的编码器(编码器150)的系统的方框图。图10的编码器150等同于 图5的编码器150,并且可以被以其中可以实施图5的编码器150的 任何方式实施。多级滤波器153可以实施发明的多级滤波器的任何实 施例。响应于输入音频数据样本,编码器150生成编码的音频数据(表 示一个或多个输入音频频道)并且将编码的音频数据断言到传递子系 统151。

传递子系统151被配置为存储编码的音频数据和/或发送指示编 码的音频数据的信号。图10的子系统151等同于图5的子系统151, 并且可以被以其中可以实施图5的子系统151的任何方式实施。

图10的解码器252具被耦接以从子系统151接收编码的音频数 据(例如,通过从子系统151中的存储器中读取或取回编码的音频数 据、或接收已被子系统151发送的指示编码的音频数据的信号)的输 入端。

解码器252被配置(例如编程)以提取(从接收的编码比特流) 表示由多级滤波器153处理的音频信息的一个或多个信道的编码的数 据,并且对编码的数据进行解码以提供所述音频信息的一个或多个信 道的解码的表示。

根据本发明的典型实施例,SIMD指令(或用于由多个ALU或 AMU并行处理的指令)用于编程处理器(例如,数字信号处理器或 通用处理器)以实施多级滤波器。多级滤波器可以实施带宽限制的低 通滤波、低通滤波(例如,在音频编码器的LFE子系统中)、高通 滤波(例如,在音频编码器的瞬态检测器子系统)、或其它滤波。

本发明的其它方面包括被配置(例如编程)以执行本发明的方法 的任何实施例的系统或设备(例如,编码器、解码器或处理器),和 存储用于实施本发明的方法或它的步骤的任何实施例的代码的计算 机可读媒介(例如,盘)。例如,本发明的系统可以是或包括可编程 的通用处理器、数字信号处理器、或微处理器,利用软件或固件编程 和/或否则被配置为对数据执行各种操作中的任何一个,包括发明的方 法或它的步骤的实施例。此类通用处理器可以是或包括计算机系统, 包括输入设备、存储器、和处理电路,被编程(和/或否则配置)以响 应于对其断言的数据执行发明的方法(或它的步骤)的实施例。

本发明的某些实施例是编码器(例如,根据杜比数字加、AC-3、 或杜比E格式编码音频数据的编码器)或解码器,被实施为编程的处 理器(例如,ARM氖处理器,每个是具有允许并行处理的氖SIMD 引擎的ARM Cortex处理器、或具有SIMD(单指令、多数据)单元 和/或多个ALU(算术逻辑单元)或AMU(算术操作单元)的其它处 理器)或被编程(和/或否则配置)的数字信号处理器(例如,具有 SIMD单元和/或多个ALU或AMU的DSP)。

根据本发明的典型实施例组合多级双二阶滤波器的所有双二阶 滤波器级的操作(在单个样本环路中)通过使能并行化来改善性能。 具有SIMD单元和多个ALU(或AMU)的处理器可以通过实施发明 方法的实施例而有效地使用它们的资源。

用于实施多级双二阶滤波器的本发明的方法的典型实施例不影 响输出的精度或滤波器的稳定性(相对于由滤波器的传统实施方式可 得到的精度和稳定性)。

由发明人执行的测试已经表明,与当编码器被传统上编程以包括 两级滤波器的传统的(非并行化的)实施方式时滤波块所需的平均循 环数(4141)相反,被配置为根据杜比数字加格式编码音频数据、并 且被实施为被编程以包括本发明的两级双二阶滤波器(在编码器的瞬 态检测器子系统中实施高通滤波)的实施例的德州仪器公司C64数字 信号处理器的编码器仅仅需要平均1846个循环来对典型的音频数据 块进行滤波。

由发明人执行的测试也已经表明,与当编码器被传统上编程以包 括四级滤波器的传统的(非并行化的)实施方式时滤波块所需的平均 循环数(10375)相反,被配置为根据杜比数字加格式编码音频数据、 并且被实施为被编程以包括本发明的四级的双二阶滤波器(在编码器 的低频效果(“LFE”)子系统中实施低通滤波)的实施例的德州仪 器公司C64数字信号处理器的编码器仅仅需要平均5802个循环来对 典型的音频数据块进行滤波。

预期当通过适当地编程其它处理器(具有其它核处理器架构)实 施发明的滤波器时,本发明也可以提供类似的性能益处。也预期性能 改善程度将取决于处理器架构、滤波器的级的数目、和在滤波器中的 极的数目。

本发明可以在硬件、固件、或软件、或两者组合(例如,作为可 编程逻辑阵列)中实施。除非另作说明,包括为本发明的一部分的算 法或处理不固有地与任何特定计算机或其它装置相关。具体地,各种 通用机器可以与根据这里的教导编写的程序一起使用,或构建更专门 化的装置(例如,集成电路)执行需要的方法步骤可能更方便。因此, 本发明可以在一个或多个可编程的计算机系统(例如,实施图5的编 码器的计算机系统)上运行的一个或多个计算机程序中实施,每个计 算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性 的和非易失性存储器和/或存储元件)、至少一个输入设备或端口、和 至少一个输出设备或端口。程序代码应用于输入数据以执行这里描述 的功能并且生成输出信息。输出信息被以公知的方式应用于一个或多 个输出设备。

每个此类程序可以以任何期望的计算机语言(包括机器、汇编、 或高级程序、逻辑、或面向对象的编程语言)实施以与计算机系统通 信。在任何情况下,语言可以是编译或解释的语言。

例如,当由计算机软件指令序列实施时,本发明的实施例的各种 功能和步骤可以由在适当的数字信号处理硬件中运行的多线程软件 指令序列实施,在这种情况下实施例的各种设备、步骤、和功能可以 对应于软件指令的部分。

每个这样的计算机程序优选地存储在或下载到由通用或专用可 编程计算机可读的存储介质或设备(例如,固态存储器或介质、或磁 或光学介质)上,用于在存储介质或设备由计算机系统读取时配置和 操作该计算机以执行这里描述的过程。本发明系统也可以被实施为配 置有(即存储)计算机程序的计算机可读存储介质,其中这样配置的 存储介质使得计算机系统以特定和预定义的方式工作以执行这里描 述的功能。

预期各个级是IIR滤波器而不是双二阶滤波器(如同它们在这里 描述的具体实施例中)的多级滤波器可以被根据本发明实施以使得它 的各个级的处理是并行化的(例如,以使得所有它的级可响应于单个、 公共的指令流独立地操作以在所述级中对数据执行完全并行化的处 理)。例如,在2012年1月26日公开的、美国专利申请公开No. 2012/0019723A1中描述的类型的多级滤波器可以根据本发明的实施 例修改,以使得它的各个级的处理是并行化的(例如,以使得所有它 的级响应于单个、公共的指令流可独立地操作以在所述级中对数据执 行完全并行化的处理)。

在发明的方法的一些实施例中,这里描述的某些或所有步骤被同 时或以与在这里描述的示例中指定顺序不同的顺序执行。虽然步骤在 发明的方法的一些实施例中以特定的顺序执行,但是某些步骤在其它 实施例中可以被同时或以不同的顺序执行。

已经描述了本发明的大量实施例。然而,应当理解,在不脱离本 发明的精神和范围的情况下可以做出各种修改。根据以上教导,本发 明的许多修改和变化是可能的。因此要理解,在附加权利要求书的范 围内,本发明可以被除这里具体地描述的之外实践。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号