共享存储器和共享乘法器的可编程数字滤波器的实现的制作方法

文档序号:6568773阅读:109来源:国知局
专利名称:共享存储器和共享乘法器的可编程数字滤波器的实现的制作方法
技术领域
本发明涉及电子电路在功率、性能和物理尺寸方面的高效实现方 案,以在较宽的可选择的频率范围内对电子信号执行数字滤波。该实 现方案可用于快速地编程和执行特定的有限脉冲响应(FIR)滤波器、 级联FIR滤波器或多速率FIR滤波器,以符合应用的频率选择^!范。
背景技术
用于计算数字FIR滤波器的数学算法是公知的,近年来随着高计 算速率数字硬件的出现,该数学算法得到了广泛的应用。但是,由于 计算需要较高的乘法和累加速率,并且乘法器难以实现(较大的面积 或时间延迟),因此大部分实现都非常特定于固定的频带。通常经由 软件在数字信号处理器中进行低频带的实现,而较高的频带典型地实 现在高度优化的特定硬件中,并可应用于一组特定的频率,而且有时 可应用于失去期望的可编程属性的特定滤波器(特定数量的抽头)。
以下为实现FIR滤波器的采样数据等式的常见形式
<formula>formula see original document page 9</formula>
其中K")-釆样时间n的滤波器输出;
6(0 = W -1阶滤波器的滤波器系数; =釆样时间w的滤波器输入;A^滤波器抽头的数量。 由于线性相位FIR滤波器具有围绕中心系数的"镜像"系数,因
此,折叠系数方法可以将相乘的次数减少到原来的1/2。对于具有固 定数量抽头(固定阶)的特定滤波器,可以通过保存长度为N-1的位移 寄存器中的采样并提供足够的加法器和乘法器以在下一个输入采样 到达前完成每一输出采样的计算,从而容易地实现该等式。但是,如 果抽头的数量是可编程的,则实现最小至最大数量抽头的位移寄存器 的寻址就需要更复杂的硬件。并且,如果该实现方案必须容许可编程 的采样频率速率,则加法器、乘法器和和累加器的处理速率必须容许 最差吞吐量速率(抽头数量乘以输入采样速率)。如果我们还希望将其 用于级联滤波器(通常使用抽取以减少过采样输入速率与期望的输出 采样速率之比)和多速率滤波器(在第一滤波器中使用抽取并在第二 滤波器中使用内插以有效实现极高数量的抽头滤波器并相当程度地 减少乘法器的数量),则就需要增加更多的逻辑和寄存器,且所需的 功率并不随采样频率线性地变化。

发明内容
本文披露了用于实现数字滤波器的集成电路和方法。集成电路具
有数据存储器,所述数据存储器具有第一和第二端口,以允许同时 对两个数据采样进行访问;系数存储器,用于存储滤波器系数。还有
第一加法器,用于对来自所述第一和第二端口的在数据存储器中寻址
的数据采样进行加法运算;乘法器,用于将来自所述第一加法器的值 与从所述系数存储器中读取的值进行乘法运算;第二加法器,用于累 加来自所述乘法器的值。
提供主控制器用于选择性地将所累加的值存储在所述数据存储 器中以做进一步的处理或输出所累加的值。
集成电路还包括地址和控制块,用于保存适于所述滤波器执行的 值;所述地址和控制块与下列存储器进行通信所述数据存储器和所 述系数存储器。
所述地址和控制块还包括第一组寄存器,用于保存第一预定数存器,用于保存第二预定数字滤波器的对应 值。所述第一组寄存器包括至少下列各项写地址寄存器,将下一个 输入数据的地址选择性地保存到数据存储器或系数存储器中;第一读 地址寄存器,保存要从所述第一端口读取的下一个数据存储器地址的 地址;第二读地址寄存器,保存要从第二端口读取的下一个数据的存 储器地址的地址;系数地址寄存器,保存要读取的下一个系数的地址。 在优选实施例中,实现滤波器的方法包括将数据的当前写地址 作为循环链表保存在所述地址和控制块中,其中所述循环链表的大小 等于滤波器抽头的预定数量。所述方法以先进先出队列形式保存数据 的第一读地址,以便从第一端口读取所述数据;以后进先出堆栈形式 保存数据的第二读地址,以便从第二端口读取所述数据;将系数读地 址保存为循环链表。所述系数地址的大小等于所述滤波器抽头预定数 量除以2,如果所述滤波器抽头的数量为奇数,则向上取整。所述方 法还包括将输入数字采样存储在所述数据存储器中,其存储位置由 所述地址和控制块中的当前写地址确定;根据所述数据存储器中存储 的釆样和所述系数存储器中存储的系数计算所述第一数字滤波器的 输出采样;将所述地址和控制块中的所述第一组参数与所述地址和控 制块中的所述第二组参数进行交换;根据所述数据存储器中存储的采 样和所述系数存储器中存储的系数计算所述级联数字滤波器的输出 采样。在计算后,将所述地址和控制块中的所述第一组参数与所述地 址和控制块中的所述第二组参数进行交换,其中将要计算第二滤波 器。


图1示出了优选实施例的总体框图2的流程图示出了优选实施例的主控制器功能的执行流程; 图3的流程图示出了主控制器的地址控制功能的执行流程。
具体实施例方式
本文描述了宽频范围内可编程的硬件集的实现,所述范围仅受乘 法器性能或存储器的访问时间或用于存储数据和系数的寄存器的限
制。该设计还容许从3到N个抽头的线性滤波器,其中N仅受当前 实际的IC技术约束的存储器大小和计算速率的限制。相同的硬件资 源可用于执行具有很少附加控制硬件的级联或多速率滤波器。
图1示出了优选实施例的总体块图。数据存储器(100)用于存储 输入采样,所述输入采样通常来自已经进行过防混叠过滤并已经进行 过模数转换器数字化的模拟输入。数据存储器(100)还用于存储来自 第一滤波器操作的计算出的输出采样,当针对级联或多速率过滤对系 统进行编程时,所述计算出的输出釆样由第二滤波器操作使用。将存 储器(lOO)优选组织为两端口存储器以允许同时访问两个采样,其中 一个端口为只读端口,而另一个为读或写端口。
系数存储器(105)为一个或多个滤波器保存系数或抽头权重。系 数存储器(105)的大小适于保存一个或多个待执行的滤波器的多个唯 一的系数。系数的数量是折叠滤波器设计的抽头数量的一半。
数据存储器(100)和系数存储器(105)优选均为随机存取存储器 (RAM)。
加法、乘法和累力卩(AMAC)功能部件用于执行FIR操作的基本计 算功能。AMAC功能部件包括第一加法器(110)、乘法器(115)以及累 加功能部件(120)。需要注意的是,在优选实施例中,累加的结果被 存储在了数据存储器(100)中或被输出以做进一步的处理。AMAC功 能部件由存储在地址和控制块(125)中的值控制。主控制器(190)从输 入到系数存储器(105)中的程序加载系数,并存储执行期望的滤波器 功能所必需的其他控制参数。这些参数包括每一滤波器的抽头的数 量、每一滤波器采样和系数的初始开始和结束地址、以及每一滤波器 的抽取值和内插值。
图1示出了一组下一个滤波器地址和控制寄存器(150)和一组有 源滤波器地址和控制寄存器(155),它们共同组成地址和控制块寄存 器(125)。主控制器(190)是具有与其关联的计算机可读介质(195)的处 理器。计算机可读介质可以是之前己经加载了主控制器(l卯)的程序
的只读存储器(ROM)、闪速存储器或RAM。(图1中所分配 的)ROM(195)保存执行实现本文所述数字滤波器所需指令的存储的程序。
对于折叠FIR的操作,AMAC功能部件从数据存储器(100)接收 两个操作数,将这些操作数在第一加法器(110)中求和,在乘法器(115) 中将该结果与从系数存储器(105)中所选择的系数相乘,并将此结果 在累加器(120)中累加。如果所累加的值是单一 FIR滤波器或级联滤 波器的第二滤波器的操作的结果,则将结果输出到后处理器(未示 出);如果该值是级联滤波器的第一滤波器的结果,则将结果存储在 为第二滤波器操作的输入保留的数据存储器空间中。
地址和控制块寄存器(125)和系数存储器(105)由主控制器(190)预
加载适于执行滤波器的值。在优选实施例中,所加载的值由主控制器 (190)例如通过与外部处理器相连接的串行端口从滤波器硬件外部的 信源进行预加载。举一个这种预加载滤波器参数的方法和装置的例 子,请参见所引用的共同待决的申请No. 10/884,200。但本发明并不 限于共同待决申请中所披露的系统和方法。
通过生成捕获输入采样所需的所有地址、选通功能和时机,主控 制器(190)开始执行滤波器操作;执行一般化的FIR等式以生成输出 采样;在适当的时间输出釆样(或在数据存储器(100)中存储第二滤波 器使用的采样;并将控制从第一滤波器操作切换到第二滤波器操作 (如果实现了级联滤波器的话))。需要注意的是,如果启用抽取的话, 则仅计算n个输出采样中的一个,其中n是抽取值。
优选实施例的FIR设计是基于折叠方法进行的,以减少乘法器的 数量。由于抽头的数量可以非常大,则位移计算器的实现并不现实, 因此我们必须在存储器中保存数据点,并以正确的顺序将数据元素和 系数提供给AMAC硬件。这是通过在规定数量的滤波器抽头上以循 环位移方式对元素进行寻址、并在新的数据元素进入数据阵列时重复 该过程来实现的(当使用最新的数据点重写最旧的数据点时开始地址 适当地位移),如图2和图3所示,下面将对此进行描述。
本设计使用单一组AMAC功能部件和双端口 16位数据存储器(100)。图1示出了两个数据端口,将第一端口(210)标记为data—0, 并将第二端口(220)标记为data—1。在优选实施例中,将系数存储在 20位宽的分开的存储器(105)中。读者可以看出,在其他实现中,数 据或系数可使用更长或更短的字。
主控制器(190)或相似的计算机模块可以控制将新数据写入分配 的存储器空间中,并开始计算新的数据点。该控制器还将适当的开始 地址交换到地址寄存器中,以允许级联滤波器中的每一滤波器具有或 不具有抽取功能。
存储器分配
给每一滤波器的数据存储器(IOO)分配虚拟地址空间0至N-1, 其中N是抽头的数量。双端口存储器具有第一(210)和第二(220)端口 ; 一个读写端口以及一个只读端口。为了容许多个滤波器,实际的地址 空间将从0偏移。在优选实施例中,分配的系数存储器(105)是N/2 个20位的字,如果N无法被2整除则对其进行向上取整。在数据存 储器(100)中存储新数据的开始地址是N-l加上适当的偏移,而写地 址寄存器将递减计数直到其到达虚拟地址O为止,随后再对其重新加 载虚拟地址N-1。第一滤波器数据空间的范围是从地址O到Nrl,而 第二滤波器空间开始于Ni并结束于NrfN2-l。系数以下面的方式存 储系数O存储在上地址空间中,而下降的系数地址存储较高阶的系 数。高阶系数将存储在系数虚拟地址0中。
存储器寻址
写地址寄存器(130Xwritejddr)包含用于存储下一个输入到虚拟 存储器空间中的操作数的地址。在数据输出计算完成时将对其进行更 新。
系数地址寄存器(145)(coef—addr)包含从系数存储器(105)的数据 端口(230)访问的下一个系数的地址。在每一时钟周期对其进行更新。 针对系数存储器(105)数据端口(230)的标记有coef和coef—1的框表示 第二缓冲区优选用于该端口 (230)以保存流向乘法器(l 15)的操作数数据流的时机。
操作数地址寄存器,read—addrO(135)和read—addr 1(140),包含每 一周期从相应的第一数据端口(210)和第二数据端口(220)访问的两个 操作数的地址,read一addrO是从第一数据端口(210)读取数据的地址, 而read—addrl是从第二数据端口(220)读取数据的地址。
常量寄存器包括配对的数据操作数和系数的最大和最小地址分 布为add—max(165)禾B addr—min(170), 以及coef—max(175)和 coef一min(180)。这些值用于与地址寄存器进行比较,以在操作数地址 范围上"包裹"地址值并在数据点计算完成时提供初始的地址。
欠采样由预加载为0的递减计数器(185)(decm—ctr)和常量寄存器 (160)(decm)来控制。仅对递减计数器(185)等于0的输入进行数据点的 计算。其他输入仅进行存储而不进行计算(即不存在输出数据点),并 对地址计数器进行更新。例如,抽取值为4的滤波器将计算每4个输 入采样的仅一个输出采样。
每一数据点计算的地址控制本质上将输入数据视为堆栈,其中, read—addrO寄存器(135)作为开始于从第一端口(210)读取的最新数据 字的FIFO队列而运行,而read—addrl寄存器(140)作为开始于从第二 端口读取的最旧数据字的LIFO队列而运行。在执行周期结束后,下 一个数据输入替代存储器中的最旧数据点,堆栈地址适当位移,下一 个输出的执行开始。
控制操作
图2和3的简化流程图示出了地址寄存器的控制。图2示出了主 控制器(190)中运行的程序,而图3示出了主控制器(190)的地址控制
器功能部件的操作。
主控制器(190)分别保存每一滤波器的状态控制。该控制包括用 以存储下一个输入采样的地址的指针、系数的数量和系数集的开始地 址。在接收到输入时,主控制器(190)在釆样指针地址存储输入,并 对将在加法、乘法和累加逻辑中使用的系数和采样进行寻址,并输出 计算出的采样。如果使用抽取,则主控制器(190)将存储输入,但仅
计算并输出n个输入之一,其中n是抽取值。主控制器(190)随后递 增输入指针地址,并将上下文切换到第二滤波器操作的状态,并随后 对第二滤波器执行相同的功能。(需要注意的是,如果启用内插,则 主控制器(190)对从多速率滤波器的第一到第二滤波器通过的M+l个 输出中的M个输出插入O。)在第二滤波器的操作完成时,主控制器 (190)更新第二滤波器的指针,并将状态切换回第一滤波器,处理继 续进行,如下面以及图2和图3的流程图所描述的那样。
地址和控制块(125)中的寄存器预加载了适用于一个滤波器或一 对滤波器的值。在步骤240,程序査看是否设置了运行模式。如果设 置了运行模式的话,则在步骤245,程序从模数转换器选择输入。在 步骤250,程序检查新的数据(数据输入采样)。主控制器(190)保持空 闲状态,直到按新数据信号所示将接收到的采样输入到write_data寄 存器(200)中为止。随后在步骤255,主控制器(190)为地址控制器功能 部件设置Go信号,以初始化第一滤波器输出采样的处理,并将第一 采样写入数据存储器(IOO)。在步骤260,程序随后进入执行-Fl状态, 以等待输出采样处理的完成(其中"F1"表示两个级联的滤波器中的 第一个滤波器)。通过在步骤315或步骤325重置Go信号,地址控制 器发送采样处理完成的信号。需要注意的是,如果程序处于此状态中, 则不计算任何采样,(递加计数器(180)非0),主控制器(190)在步骤275
返回到空闲状态,如在仅启用了一个滤波器的情况下其所做的那样。 在歩骤245,地址控制器功能部件设置None信号以标识没有计算采 样。如果存在第二滤波器,则在步骤280,第二滤波器的控制寄存器 移动到有源寄存器。
如果要计算第二滤波器采样,则程序在步骤285进入等待状态, 以等待指示采样结果在AMAC流水线中已经完成处理的Delay—Last 信号。随后在步骤290,将采样结果值写入到数据存储器(100)中,并 设置Go以在步骤300在控制器进入执行-F2状态(其中"F2"表示两 个级联的滤波器中的第二个滤波器)时开始采样处理,将F2值移动到 控制寄存器并将None设置为0。地址控制器功能部件指示通过重置 Go而完成的F2输出采样。
如图3中所示,地址控制器功能部件为存储器寻址执行所有的地 址计算,并转向提供AMAC功能部件的操作数寄存器。如果在步骤 305出现Go信号,则在步骤310,地址控制器功能部件检査抽取计 数器值(185)。
在步骤310,如果抽取值非0,则在步骤315,程序递减抽取计 数器,将Go设置为O,并将None设置为真;否则,在步骤320,程 序接下来检查系数地址以判断其是否在最大地址。如果不是,则在步 骤325,抽取计数器加载抽取恒量(160),将Go设置为O,将Last标 志设置为真,并将系数地址值(145)设置为恒量寄存器(175)中的最大 值。如果系数地址为其最大值,则在步骤330,程序递减系数地址, 并将数据存储器(100)内的read一addr寄存器(135, 140)中的读地址值 数据移动到第一加法器的数据寄存器,并将当前系数地址的系数值移 动到与乘法器(115滩关的系数寄存器(coefJ)。
如果系数地址是其最小值,则在步骤325之后,在步骤335,程 序检查奇数抽头滤波器。如果不存在,则在步骤340,在当前的读地 址从数据存储器(100)加载数据和系数数据。如果存在奇数抽头滤波 器,则在步骤345,将与第一端口(210)(data—O滩关的数据寄存器设 置为read一addr0(135)的值所指向的值,将与第二端口(220)(data一l)相 关的寄存器设置为0,并从当前的系数地址加载与系数存储器端口 (230)(coef)相关的寄存器。在步骤345进行执行以继续步骤365,在 步骤365中检查写地址的最小值。如果值为最小值,则将写地址寄存 器(130)设置为addr一max恒量寄存器(165)的最大地址,将read—addrO 寄存器(135)设置为写地址,并将read—addrl(140)设置为最大地址。如 果写地址不是其最小值,则在步骤370,递减写地址寄存器(130),将 写地址移动到read_addrO寄存器(135),并将经递减的写地址移动到 read—addrl寄存器(140)。执行随后返回到步骤300。
从步骤330继续,在步骤350,程序进行检査以判断read—addrO 中的值是否处于其最大值。如果不是,则在步骤360,读地址递减, 执行继续到步骤380。否则,将add—min寄存器(170)中的恒量加载到 read_addO寄存器(135)中,并且执行继续到步骤380。
步骤380检查以判断read—addrl寄存器(140)中的值是否为恒量寄 存器addi^min(170)中的最小地址。如果不是,则递减读地址;否贝U, 将read—addrl寄存器(140)设置为addr—max恒量寄存器(165)中的值, 并且执行继续到步骤300。
如上所述,随后,地址控制器功能部件还处理针对折叠的FIR操 作的FIFO和LIFO寻址的环绕(wrap-around)。其通过重置Go来指 示计算的完成。
还需注意的是,操作数地址寄存器是9位以对512X 16位的数据 存储器进行寻址,而系数地址寄存器是8位以对256X20位的系数存 储器进行寻址。再一次地读者应注意的是,这些值仅是示例性的,其 他的实现方式可以在存储器中使用不同大小的字。
对应于为所示实施例所列的值,在长度上,操作数相加寄存器是 17位的,被乘数寄存器是37位的,而累加器是45位的。将输出截 短到16位。
例如,考虑两个级联的低通滤波器,其对输入采样速率的抽取因 数为4,并为后面的操作提供干净、防混叠的输出。
第一滤波器是27抽头的低通滤波器,其抽取因数为2,第二滤 波器是63抽头的低通滤波器,其抽取因数也为2。输入采样速率是 每秒200000个采样,输出是每秒50000个采样。需要注意的是,滤 波器块以能够在输入采样之间的时间中计算每一输出采样的任何采 样速率运行。对于极高的采样速率,可以添加附加的加法、乘法和累 加功能,存储器可由附加的因数进行交织,以改善存储器的带宽。
例如,为27抽头的滤波器分配的存储器地址为从0到26,为63 个抽头的滤波器分配的地址为从28到90。第一滤波器的系数被加载 到系数存储器(105)的地址0到13中,而第二滤波器抽头重量被存储 到位置14至45中。主控制器(190)为每一滤波器保持当前状态,交 换控制从而执行一个接着一个滤波器的适当抽取。抽取因数为2表示 对于每一输入采样,仅计算每两个输出采样中的一个输出采样并将其 输出。
权利要求
1、一种用于实现数字滤波器的集成电路,所述集成电路包括数据存储器,所述数据存储器具有第一和第二端口,以允许同时对两个数据采样进行访问;系数存储器,存储滤波器系数;第一加法器,对从所述第一和第二端口读取的数据采样进行相加;乘法器,将来自所述第一加法器的值与从所述系数存储器中读取的值进行相乘;第二加法器,累加来自所述乘法器的值;主控制器,所述主控制器用于选择性地将所累加的值存储在所述数据存储器中以便做进一步的处理或输出所累加的值。
2、 如权利要求1所述的集成电路,其中,所述数据存储器和所 述系数存储器是随机存取存储器。
3、 如权利要求1所述的集成电路,还包括 地址和控制块,用于保存适于所述滤波器执行的值; 所述地址和控制块与所述数据存储器和所述系数存储器进行通信。
4、 如权利要求3所述的集成电路,其中,所述地址和控制块还 包括-第一组寄存器,保存第一预定数字滤波器的值; 第二组寄存器,保存第二预定数字滤波器的对应值。
5、 如权利要求4所述的集成电路,其中,所述第一组寄存器包 括至少下列各项写地址寄存器,将下一个输入数据的地址选择性地保存到数据存 储器或系数存储器中;第一读地址寄存器,保存要从所述数据存储器的第一端口读取的 下一个数据的地址;第二读地址寄存器,保存要从所述数据存储器的第二端口读取的 下一个数据的地址;系数地址寄存器,保存要读取的下一个系数的地址。
6、 如权利要求1所述的集成电路,还包括主控制器,所述主控制器具有计算机可读介质,所述计算机可读 介质包含用以实现预定数字滤波器的指令。
7、 一种实现数字滤波器的方法,所述方法包括 提供数据存储器和系数存储器,所述数据存储器包括第一和第二端口;还提供地址和控制块,所述地址和控制块保存用于控制所述数字 滤波器操作的第一组参数;将数据的当前写地址以循环链表的形式保存在所述地址控制块 中,所述循环链表的大小等于滤波器抽头的预定数量;把要从所述第一数据存储器端口读取数据的第一读地址以先进 先出队列的形式进行保存;把要从所述第二数据存储器端口读取数据的第二读地址以后进 先出堆栈的形式进行保存;将系数读地址以循环链表的形式进行保存,所述系数地址的大小 等于滤波器抽头的预定数量除以2,如果所述滤波器抽头数量为奇数, 则向上取整;将输入数字采样存储在所述数据存储器中,其存储位置由所述地 址控制块中的当前写地址确定;根据所述数据存储器中存储的采样和所述系数存储器中存储的 系数计算输出采样。
8、 如权利要求7所述的方法,还包括下列步骤-将所计算出的输出采样存储在所述数据存储器中。
9、 如权利要求7所述的方法,还包括 在所述地址控制块中保存抽取计数值;对于每一输入采样,在计算所述输出采样之前,递减所述抽取计 数值,直到所述抽取计数值变成O为止。
10、 如权利要求7所述的方法,其中,将所述第一和第二读地址、 所述写地址以及所述系数地址作为虚拟存储器地址保存在相应的存 储器中。
11、 一种实现级联数字滤波器的方法,所述方法包括提供数据存储器和系数存储器,所述数据存储器包括第一和第二存储器端口;还提供地址和控制块,所述地址和控制块保存用于控制第一数字 滤波器操作的第一组参数;还在所述地址控制块中提供第二组控制参 数,所述第二组参数保存用于控制第二数字滤波器操作的值;将数据的当前写地址以循环链表的形式保存在所述地址控制块 中,所述循环链表的大小等于滤波器抽头的预定数量;把要从所述第一数据存储器端口读取数据的第一读地址以先进 先出队列的形式进行保存;把要从所述第二数据存储器端口读取数据的第二读地址以后进 先出堆栈的形式进行保存;将系数读地址保存为循环链表,所述系数地址的大小等于滤波器 抽头的预定数量除以2,如果所述滤波器抽头的数量为奇数,则向上 取整;将输入数字采样存储在所述数据存储器中,其存储位置由所述地 址控制块中的当前写地址确定;根据所述数据存储器中存储的采样和所述系数存储器中存储的 系数计算所述第一数字滤波器的输出采样;将所述地址控制块中的所述第一组参数与所述地址控制块中的 所述第二组参数进行交换;根据所述数据存储器中存储的采样和所述系数存储器中存储的 系数计算所述级联数字滤波器的输出采样;将所述地址控制块中的所述第一组参数与所述地址控制块中的 所述第二组参数进行交换。
12、 如权利要求10所述的方法,还包括下列步骤 将所计算出的输出采样存储在所述数据存储器中。
13、 如权利要求10所述的方法,还包括 在所述地址控制块中保存抽取计数值;对于每一输入采样,在计算所述输出采样之前,递减所述抽取计 数值,直到所述抽取计数值变成O为止。
14、 如权利要求10所述的方法,其中,将所述第一和第二读地 址、所述写地址以及所述系数地址作为虚拟存储器地址保存在相应的 存储器中。
15、 一种具有计算机可执行指令的计算机可读介质,所述指令用 于执行在装置中实现数字滤波器的方法,所述装置包括数据存储器 和系数存储器,所述数据存储器包括第一和第二存储器端口;地址和 控制块,所述地址和控制块保存用于控制所述数字滤波器操作的第一 组参数;所述方法包括将数据的当前写地址以循环链表的形式保存在所述地址控制块 中,所述循环链表的大小等于滤波器抽头的预定数量;把要从所述第一数据存储器端口读取数据的第一读地址以先进 先出队列的形式进行保存;把要从所述第二数据存储器端口读取数据的第二读地址以后进先出堆栈的形式进行保存;将系数读地址保存为循环链表,所述系数地址的大小等于滤波器 抽头的预定数量除以2,如果所述滤波器抽头的数量为奇数,则向上 取整;将输入数字采样存储在所述数据存储器中,其存储位置由所述地 址控制块中的当前写地址确定;根据所述数据存储器中存储的采样和所述系数存储器中存储的 系数计算输出采样。
16、 如权利要求15所述的计算机可读介质,其中,所述方法还 包括下列步骤将所计算出的输出采样存储在所述数据存储器中。
17、 如权利要求15所述的计算机可读介质,其中,所述方法还 包括-在所述地址控制块中保存抽取计数值;对于每一输入采样,在计算所述输出采样之前,递减所述抽取计 数值,直到所述抽取计数值变成O为止。
18、 如权利要求15所述的计算机可读介质,其中,将所述第一 和第二读地址、所述写地址以及所述系数地址作为虚拟存储器地址保 存在相应的存储器中。
19、 一种具有计算机可执行指令的计算机可读介质,所述指令用 于执行在装置中实现级联数字滤波器的方法,所述装置包括数据存储器和系数存储器,所述数据存储器包括第一和第二 存储器端口;地址和控制块,所述地址和控制块保存用于控制第一数字滤 波器操作的第一组参数;所述地址控制块中的第二组控制参数,所述第二组参数保存用于控制第二数字滤波器操作的值; 所述方法包括将数据的当前写地址以循环链表的形式保存在所述地址控 制块中,所述循环链表的大小等于滤波器抽头的预定数量;把要从所述第一数据存储器端口读取数据的第一读地址以 先进先出队列的形式进行保存;把要从所述第二数据存储器端口读取数据的第二读地址以 后进先出堆栈的形式进行保存;将系数读地址保存为循环链表,所述系数地址的大小等于所 述滤波器抽头预定数量除以2,如果所述滤波器抽头的数量为奇数, 则向上取整;将输入数字采样存储在所述数据存储器中,其存储位置由所 述地址控制块中的当前写地址确定;根据所述数据存储器中存储的采样和所述系数存储器中存 储的系数计算所述第一数字滤波器的输出采样;将所述地址控制块中的所述第一组参数与所述地址控制块 中的所述第二组参数进行交换;根据所述数据存储器中存储的采样和所述系数存储器中存 储的系数计算所述级联数字滤波器的输出采样;将所述地址控制块中的所述第一组参数与所述地址控制块 中的所述第二组参数进行交换。
20、 如权利要求19所述的计算机可读介质,其中,所述方法还 包括下列步骤将所计算出的输出采样存储在所述数据存储器中。
21、 如权利要求19所述的计算机可读介质,其中,所述方法还 包括在所述地址控制块中保存抽取计数值;对于每一输入采样,在计算所述输出采样之前,递减所述抽取计 数值,直到所述抽取计数值变成o为止。
22、如权利要求19所述的计算机可读介质,其中,将所述第一 和第二读地址、所述写地址以及所述系数地址作为虚拟存储器地址保 存在相应的存储器中。
全文摘要
一种用于实现数字滤波器的集成电路,包括数据存储器(100)和系数存储器(105),所述数据存储器(100)具有两个端口(210,220)以允许同时对两个数据采样进行访问,所述系数存储器(105)用于存储滤波器系数。第一加法器(110)将来自第一和第二数据存储器端口(210、220)的数据采样相加;乘法器(115)将来自第一加法器(110)的值与来自系数存储器(105)的值相乘;第二加法器累加来自乘法器(115)的值。提供主控制器(190)以选择性地将所累加的值存储在所述数据存储器(100)中以做进一步的处理或输出所累加的值。地址和控制块(125)与数据存储器(100)和系数存储器(105)进行通信,所述地址和控制块(125)用于保存适于所述滤波器执行的值。地址和控制块(125)具有两组寄存器,第一组寄存器用于保存第一预定数字滤波器的值,而第二组寄存器用于保存级联的第二预定数字滤波器的值。一种方法将数据的当前写地址以循环链表的形式保存在地址和控制块(125)中,其中所述循环链表的大小等于滤波器抽头的预定数量。所述方法保存数据的第一读地址,以便将所述数据从第一端口以先进先出队列形式读取,所述方法保存数据的第二读地址,以便将所述数据从第二端口以后进先出堆栈形式读取,所述方法还将系数读取地址保存为循环链表。
文档编号G06F17/10GK101351791SQ200680032041
公开日2009年1月21日 申请日期2006年8月29日 优先权日2005年9月2日
发明者D·贝斯特, T·梅格德伯格 申请人:奎克菲尔特技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1