专利名称:一种滤波器及滤波方法
技术领域:
本发明涉及滤波技术,特别是涉及一种实现对称滤波的滤波器及滤波方法。
背景技术:
在诸如数字电视、视频会议等视频通信领域中,视频数据流经过信道从发送端被传递到接收端。原始的、未经过压缩的视频数据的数据量非常大,不适合于传输和存储,所以,一般需要在发送端对视频数据进行压缩,接收端对接收到的压缩的视频数据进行解压缩。然而,在某些情况下,通过压缩来减少视频数据仍然不能满足传输要求,需要进一步减少视频数据的数据量,通常发送端在进行压缩之前,先对视频数据进行下采样,接收端在解压缩之后,再对视频数据进行上采样。
上述视频通信的一般过程显示在图1中。如图1所示,在发送端对原始视频数据进行下采样,然后对下采样数据压缩编码,将压缩数据通过网络传输至接收端;在接收端对网络传来的压缩数据进行解码处理,然后对解码后的数据进行上采样并显示上采样后的视频数据。图1所示的下采样、上采样、压缩编码和解码的过程均需要滤波处理。因此可知,在视频通信的过程中,滤波处理是非常重要的处理步骤。
滤波系数的个数决定滤波的阶数,也就是说,采用N个滤波系数的滤波为N阶滤波,其滤波计算公式可表示为Ok=C1Pk1+C2Pk2+C3Pk3+…+CNPkN,其中Pk1到PkN为N个原始数据,C1到CN为滤波系数,Ok为滤波数据,从滤波公式可以看出,N个原始数据分别与N个滤波系数相乘,再将相乘的结果相加,得到一个滤波数据。
从上述公式可以看出,对于N阶滤波,每得到一个滤波数据,需要进行N次乘法运算和N-1次加法运算,其中乘法运算非常耗时,所以当滤波阶数增大时,滤波计算所耗费的计算时间也大大增加。
为了加速计算过程,现有技术通常采用单指令多数据(SIMD)处理器实现滤波运算,SIMD处理器又称为并行处理器。图2是现有技术利用SIMD处理器的滤波器的结构示意图。如图2所示,该滤波器包括存储原始数据的内存A201、存储滤波数据的内存B202和执行滤波运算的SIMD处理器210。
图2所示的SIMD处理器210包含存储N个待滤波数据的原始数据寄存器213、存储N个滤波系数的滤波系数寄存器214、并行乘法器212和地址访问控制单元211。地址访问控制单元211生成待滤波数据在内存A201中的相对地址,并将内存A201中N个待滤波数据复制到原始数据寄存器213。并行乘法器212将原始数据寄存器213中的N个待滤波数据与滤波系数寄存器214中的N个滤波系数并行相乘,将并行相乘的结果求和后存储在原始数据寄存器213中。然后,原始数据寄存器213将求和的结果作为一个滤波数据发送至内存B202。需要说明,以上处理过程对每一个输出的滤波数据都要进行一遍。
以8阶滤波为例,每输出一个滤波数据,需要逐次进行8次乘法运算和7次加法运算。由于SIMD处理器可执行并行乘法,通过一个可以在寄存器中同时存储8个数据的SIMD处理器,将8次乘法运算并行执行,这样,用1次乘法运算的时间可执行8次乘法运算,从而加快了滤波运算的所耗费的时间。
但是,这种传统的滤波器存在以下两个缺点第一,当滤波的阶次超过滤波器中并行乘法器的并行处理能力时,例如,可并行处理8个乘法运算的并行乘法器在执行16阶滤波运算时,由于滤波运算所需的乘法运算量增加,所以,如果采用原有的并行乘法器,则需要并行乘法器分别执行两次上述的并行乘法运算,即需要用2次乘法运算的时间执行16次乘法运算,这将增加滤波时间;如果不希望增加乘法运算的时间,则需要采用功能加倍的并行乘法器,使16个乘法运算同时执行,这将带来非常大的硬件开销。由此可见,除非大幅增加硬件开销,否则随着乘法运算量的增加,乘法运算的时间也以相同比例增加,由于乘法运算的时间在滤波运算中最为耗时,因此滤波运算的时间也基本以同比例增加。
第二,SIMD处理器每执行完一次并行处理,需要在内存访问控制单元的控制下从内存重新读入8个待滤波数据,上次读入的数据中的一部分虽然对本次以及后续的滤波计算仍然有用,但是传统的滤波器没有任何保存机制来利用这些已经读取到寄存器中的数据,这种内存和寄存器之间频繁的数据交换增加了滤波时间,而且成为传统滤波器的主要性能瓶颈。
发明内容
有鉴于此,本发明的目的在于提供一种滤波器和滤波方法,利用对称滤波的特性减少滤波运算所需的乘法运算量,在采用基本相同的硬件开销的前提下减少滤波运算中乘法运算的时间,从而减少滤波所需的时间。
本发明的另一目的在于提供一种滤波器和滤波方法,通过在寄存器中设置隐藏数据单元,减少从内存频繁调取数据至寄存器所耗费的时间,从而进一步减少滤波所需的时间。
本发明的目的是通过如下技术方案实现的本发明的滤波器包括存储原始数据的第一内存、存储滤波数据的第二内存和单指令多数据SIMD处理器,该SIMD处理器从第一内存中获取与滤波系数相对应的当前待滤波数据;将当前待滤波数据中与对称相等的滤波系数相对应的当前待滤波数据分别相加、保持与无对称相等的滤波系数相对应的当前待滤波数据不变;将所得数据分别与预先保存的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
在本发明的第一实施例中,所述的SIMD处理器包括并行数据处理单元,包括具有相反存储顺序的第一寄存器和第二寄存器、并行加法器和并行乘法器;
滤波系数寄存器,至少存储N个当前滤波系数,该N个当前滤波系数由2N个滤波系数中对称相等的滤波系数中的一个组成;第一地址访问控制单元,为2N个当前待滤波数据生成在第一内存中的相对地址,以控制从第一内存分别复制第一至第N个当前待滤波数据和第N+1至第2N个当前待滤波数据到第一和第二寄存器;其中,N为自然数,并行加法器对第一和第二寄存器中的当前待滤波数据并行相加,并行乘法器将并行相加结果和滤波系数寄存器中的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
在本发明的第二实施例中,所述的SIMD处理器包括并行数据处理单元,包括具有相反存储顺序的第一寄存器和第二寄存器、并行加法器和并行乘法器;滤波系数寄存器,至少存储N个当前滤波系数,该N个当前滤波系数由2N-1个滤波系数中无对称相等的滤波系数和对称相等的滤波系数中的一个组成;第一地址访问控制单元,为2N-1个当前待滤波数据生成在第一内存中的相对地址,以控制从第一内存分别复制第一至第N个当前待滤波数据和第N至第2N-1个当前待滤波数据到第一和第二寄存器;第一控制寄存器,控制所述第一和第二寄存器中与无对称相等的滤波系数相对应的当前待滤波数据位于最低有效数据单位的寄存器在其存储的数据发生改变后对其最低有效数据单位执行清零;其中,N为自然数,并行加法器对第一和第二寄存器中的当前待滤波数据并行相加,并行乘法器将并行相加结果和滤波系数寄存器中的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
在本发明的第三实施例中,所述的第一和第二寄存器包括有效数据单元和隐藏数据单元,有效数据单元用于存储当前待滤波数据,隐藏数据单元用于存储后续待滤波数据;所述的SIMD处理器进一步包括第二控制寄存器和第三控制寄存器,控制第一和第二寄存器在对当前待滤波数据的滤波运算结束之后进行移位操作,使隐藏数据单元中的后续待滤波数据通过移位进入有效数据单元。
在本发明的第四实施例中,所述的滤波器进一步包括用于存储一组以上滤波系数的第三内存;所述的SIMD处理器进一步包括第四控制寄存器,控制从第三内存中的一组以上滤波系数中选取一组滤波系数;第二地址访问控制单元,在第四控制寄存器的控制下,为所选取的一组滤波系数生成在第三内存中的相对地址,以控制从第三内存复制所选取的一组滤波系数至滤波系数寄存器。
在本发明的第五实施例中,所述的SIMD处理器进一步包括移位寄存器,存储并行乘法器输出的求和结果,通过移位将该求和结果除以滤波系数之和,输出滤波数据至第二内存;第五控制寄存器,控制移位寄存器移位的位数。
在本发明的第六实施例,即优选实施例中,包含第一至第五实施例中所有的结构。
在本发明的第七实施例中,所述的并行数据处理单元为一个以上,所述SIMD处理器进一步包括一个以上的累加寄存器,分别存储一个以上的并行数据处理单元输出的数据;第六控制寄存器,控制滤波器工作在单独模式或组合模式;当滤波器工作在单独模式时,所述的一个以上的并行数据处理单元中,每个并行处理单元分别处理当前待滤波数据,且每个累加寄存器中的数据分别直接输出至第二内存;当滤波器工作在组合模式时,所述的一个以上的并行数据处理单元组合在一起处理当前待滤波数据,并将每个累加寄存器中的数据经求和处理后输出至第二内存。
本发明的滤波方法包括以下步骤
从原始数据中获取与滤波系数相对应的当前待滤波数据;将与对称相等的滤波系数相对应的当前待滤波数据分别相加,保持与无对称相等的滤波系数相对应的当前待滤波数据不变;将所得数据与预先存储的当前滤波系数并行相乘,对并行相乘的结果求和获得一个滤波数据并存储。
在所述滤波系数的个数为偶数的情况下,所述的当前滤波系数由滤波系数中对称相等的滤波系数中的一个组成。
在所述滤波系数的个数为奇数的情况下,所述的当前滤波系数由滤波系数中无对称相等的滤波系数和对称相等的滤波系数中的一个组成。
从上述技术方案可以看出,本发明利用对称滤波的滤波系数对称相等的特点,首先将当前待滤波数据中相对称的数据并行相加,然后再将并行相加的结果与滤波系数并行相乘,这样,可以使滤波计算所需的乘法运算量减半,因此在采用基本相同的硬件开销的前提下有效减少了滤波运算中乘法运算的时间,从而减少了滤波所需的时间。
进一步,本发明在存储待滤波数据的寄存器设置了存储后续待滤波数据的隐藏数据单元,读入当前待滤波数据的同时读入后续待滤波数据,在执行完一次滤波计算后,通过寄存器的移位,使存储在隐藏数据单元的后续待滤波数据进入有效数据单元,以执行下一次滤波运算,而不用每执行完一次滤波运算就从内存重新调入当前待滤波数据,减少了从内存读取数据的时间,从而进一步减少了滤波所需的时间。同时,隐藏数据单元的设置也可以实现上采样和下采样,从而提高了滤波操作的灵活性。
进一步,本发明通过设置存储多组滤波系数的内存、从多组滤波系数中选择一组的控制寄存器以及为所选择的滤波系数产生在内存中相对地址的地址访问控制单元,可以对原始数据的不同部分采用不同的滤波系数,从而也提高了滤波操作的灵活性和适应性。
进一步,本发明利用多个并行数据处理单元进行滤波,可以实现更快速的滤波运算,或执行更高阶次的滤波。
图1是视频通信的一般过程的示意图。
图2是现有技术利用SIMD处理器实现滤波运算的滤波器结构示意图。
图3是本发明第一实施例的滤波器的结构框图。
图4示出了本发明第一实施例的寄存器RA和RB的构成。
图5是本发明第一实施例的在执行16阶滤波的情况下寄存器RA和RB从内存A调入数据的示例。
图6是本发明第二实施例的滤波器的结构框图。
图7A是本发明第二实施例的在执行15阶滤波的情况下寄存器RA和RB从内存A调入数据的示例。
图7B是对图7A所示的寄存器RB进行清零操作的结果示例。
图8是本发明第三实施例的滤波器的结构框图。
图9示出了本发明第三实施例的寄存器RA和RB的构成。
图10是本发明第三实施例的16阶滤波时寄存器RA和RB从内存A调入数据的示例。
图11是本发明第三实施例的控制寄存器的三个示例。
图12是本发明第四实施例的滤波器的结构框图。
图13是本发明第五实施例的滤波器的结构框图。
图14是本发明第六实施例的滤波器的结构框图。
图15是本发明第七实施例的滤波器的结构框图。
图16A是本发明第七实施例工作在单独模式下的多个并行数据处理单元中的寄存器RA和RB从内存A调入数据的示例。
图16B是本发明第七实施例工作在组合模式下的多个并行数据处理单元中的寄存器RA和RB从内存A调入数据的示例。
具体实施例方式
为了使本发明的目的、技术方案和优点更清楚,下面结合附图和具体实施方式
对本发明作进一步描述。
在视频滤波处理过程中,经常采用的滤波为对称滤波,即滤波系数具有对称性。如果是对称滤波,在滤波计算公式Ok=C1Pk1+C2Pk2+C3Pk3+…+CNPkN中,C1至CN这N个滤波系数对称相等,即C1=CN,C2=CN-1,…。由于滤波系数具有对称性,所以Pk1到PkN这N个原始数据也具有对称性,也就是说,与对称相等的滤波系数相乘的数据互为对称数据,例如,Pk1与PkN互为对称数据,Pk2与Pk(N-1)互为对称数据。需要说明,这里的对称数据并非指对称相等的数据,而是指在滤波计算公式中与对称相等的滤波系数相乘的数据。
如滤波计算公式所示出的,N个原始数据与N个滤波系数分别相乘,再对乘积求和,可得一个滤波数据。在下文中,将这N个原始数据称为当前待滤波数据,将滤波系数中除去滤波系数中对称相等部分所剩下的滤波系数作为当前滤波系数,即当前滤波系数由所有对称相等的滤波系数中的一个所组成。
本发明的基本思想是利用对称滤波的滤波系数对称相等、SIMD处理器并行处理的特点,在执行对称滤波运算时,将对称的当前待滤波数据分别相加,保持无对称数据的当前待滤波数据不变,将所得结果与当前滤波系数并行相乘,对并行相乘结果求和,得到一个滤波数据。下面分别通过七个具体第一实施例图3是本发明第一实施例的滤波器的结构框图。参见图3,在第一实施例中,滤波器300包括内存A301、内存B302和SIMD处理器310。其中,内存A301存储原始数据,由调用滤波器300的上层设备填充,以供SIMD处理器310读取;内存B302存储SIMD处理器310输出的滤波数据,由调用滤波器300的上层设备读取。举例来说,上层设备有编码器、解码器等。
SIMD处理器310包括地址访问控制单元311、滤波系数寄存器314和并行数据处理单元320。其中并行数据处理单元320包括存储当前待滤波数据的寄存器RA321和寄存器RB322、并行加法器323和并行乘法器324。图3中的粗实线表示数据流,细实线表示控制流。
图4是在本实施例中寄存器RA和RB的构成。参见图4,寄存器RA321和RB322的长度为128位,对于数据精度为16位的当前待滤波数据来说,寄存器RA321和RB322可同时存储8个数据。
本发明所采用的寄存器RA321和RB322的类型不同,寄存器RA321和RB322的最低有效位(LSB)分别处于寄存器的不同地址端。如图4所示,寄存器RA321的最低有效位(LSB)位于寄存器RA321的低地址端;而寄存器RB322的最低有效位(LSB)位于寄存器RB322的高地址端。向寄存器存入数据的顺序通常是从最低有效位开始存储,而对两个寄存器中的数据并行相加时,通常是将位于相同地址端的数据两两相加,因此,采用两个类型不同的寄存器便于并行加法器对两个寄存器中互为对称数据的当前待滤波数据并行相加。
在本实施例中,滤波系数寄存器314是128位的寄存器,可同时存储8个滤波系数。对于16阶对称滤波来说,实际的滤波系数为16个,但是由于滤波系数呈对称相等的分布,可仅保存将滤波系数中对称相等的部分去除的8个当前滤波系数。
下面详细说明本实施例的滤波器实现滤波的具体过程。
第一步,将原始数据中的一组当前待滤波数据分为两部分,并按照相反的存储顺序分别存储这两部分数据地址访问控制单元311分别为并行数据处理单元320的寄存器RA321和RB322生成第一部分当前待滤波数据和第二部分当前待滤波数据在内存A301中的地址,以控制将两部分当前待滤波数据从内存A301分别复制到寄存器RA321和寄存器RB322。
地址访问控制单元311由调用滤波器300的上层设备设置,设置的信息包括原始数据在内存A301中的起始地址、滤波阶数和数据长度。
如果是初次调入数据,则地址访问控制单元311生成的第一部分当前待滤波数据和第二部分当前待滤波数据的第一和第二起始地址分别为第一起始地址=原始数据起始地址;第二起始地址=原始数据起始地址+INT(滤波阶数/2),其中INT()表示取整操作。
如果不是初次调入数据,则地址访问控制单元311生成的第一部分当前待滤波数据和第二部分当前待滤波数据的第一和第二起始地址分别为第一起始地址=上次第一起始地址+1;第二起始地址=上次第二起始地址+1,然后,从第一起始地址开始,调入数据个数等于数据长度的数据至寄存器RA321;从第二起始地址开始,调入数据个数等于数据长度的数据至寄存器RB322。通常数据长度是根据寄存器的位数设置的。在本实施例中,所设置的数据长度为8,因此两部分当前待滤波数据各有8个数据。并且,由于寄存器RA321和RB322的类型不同,寄存器RA321中当前待滤波数据的存储顺序和寄存器RB322中当前待滤波数据的存储顺序相反。
图5所示为一个16阶滤波的具体示例。如图5所示,从内存A301复制到寄存器RA321的数据为16、26、37、41、47、49、128和141,其中16位于低地址端。从内存A301复制到寄存器RB322的数据为127、194、124、97、99、124、164和168,其中127位于高地址端。寄存器321的8个数据和寄存器322的8对互为对称数据的当前待滤波数据,即16和168、26和164、37和124、41和99、47和97、49和124、128和194、141和127分别将与对称相等的滤波系数相乘。
第二步,将两部分当前待滤波数据并行相加并行加法器323将寄存器RA321和RB322中的当前待滤波数据进行并行相加,然后将并行相加的结果送至并行乘法器324。在图5所示的具体示例中,将寄存器RA321中的16、26、37、41、47、49、128和141与寄存器RB322中的168、164、124、99、97、124、194和127分别对应相加,所得的并行相加结果为184、190、161、140、144、173、322和268。
第三步,将并行相加的结果与滤波系数并行相乘,并对并行相乘的结果求和并行乘法器324将并行加法器323计算出的并行相加的结果与滤波系数寄存器314中的当前滤波系数并行相乘,然后并行乘法器324对并行相乘的结果求和,最后将求和的结果作为一个滤波数据输出至内存302。
这样,就输出了一个滤波数据。通过从原始数据中调入当前待滤波数据,对每一组当前待滤波数据重复执行第一步至第三步,可得到所有滤波数据。
从第一实施例的技术方案可以看出,在进行对称滤波时,利用滤波系数对称相等的特点,通过采用两个类型不同的存储原始数据的寄存器,对这两个寄存器中的数据并行相加,再将并行相加的结果与滤波系数并行相乘,可以节省一半的乘法运算量。
第二实施例在实际的对称滤波处理中,滤波系数的个数有奇偶之分。对于滤波系数的个数为偶数的情况,滤波系数表示为C0,C1,C2,C3,…,CN,…,C2N-1,其中C0=C2N-1,C1=C2N-2,…,CN-1=CN,N为自然数,也就是说,滤波系数两两对称相等。
对于滤波系数的个数为奇数的情况,滤波系数可表示为C0,C1,C2,C3,…,CN,…,C2N-1,C2N,其中C0=C2N,C1=C2N-1,…,CN-1=CN+1,N为自然数,也就是说,除位于正中间的CN以外,滤波系数两两对称相等。
对于滤波系数的个数为奇数的情况,当前滤波系数为滤波系数中除去对称相等部分的滤波系数,即当前滤波系数由所有对称相等的滤波系数中的一个和无对称相等的滤波系数所组成。
图6是根据本发明第二实施例的滤波器的结构框图。为了对滤波系数的个数为奇数和偶数的情况进行不同的处理,本实施例在图3所示实施例的基础上,增加了控制寄存器601,当滤波系数的个数为奇数时,使寄存器RB322在每次发生数据改变后对最低有效数据单位执行一次清零操作。
参见图6,在第二实施例中,滤波器600包括存储原始数据的内存A301、存储滤波数据的内存B302和SIMD处理器610。其中,SIMD处理器610包括地址访问控制单元311、控制寄存器601、滤波系数寄存器314和并行数据处理单元320。图6中的粗实线表示数据流,细实线表示控制流。
控制寄存器601的长度为1位,用于控制寄存器RB322从内存A301复制数据后是否需要一次额外的清零操作,其值为0表示滤波系数为偶数,寄存器RB322发生数据改变后无需清零操作;其值为1表示滤波系数为奇数,寄存器RB322发生数据改变后需要一次额外的清零操作。
如果滤波系数的个数为偶数,在本实施例中,控制寄存器601的值为0,滤波的具体实现方式与第一实施例的第一步到第三步相同,在此请恕不予赘述。
如果滤波系数的个数为奇数,在本实施例中,控制寄存器601的值为1,滤波的具体实现方式与第一实施例的第一步到第三步大致相同,所不同之处仅在于,如上述第二起始地址的计算公式所给出的,地址访问控制单元311在滤波系数的个数为奇数2N-1时所生成的第二起始地址比滤波系数的个数为偶数2N时所生成的第二起始地址小1,即在滤波系数的个数为奇数时,第一部分当前待滤波数据的最后一个数据与第二部分当前待滤波数据的第一个数据重合,因此,当寄存器RB322从内存A301复制数据之后,需要增加一个步骤对位于其最低有效数据单位的所述重合数据清零。
图7A所示为一个15阶滤波的具体示例。如图7A所示,从内存A301复制到寄存器RA321的数据为16、26、37、41、47、49、128和141,16位于低地址端。从内存A301复制到寄存器RB322的数据为141、127、194、124、97、99、124和164,其中的141位于高地址端。从图7A可见,寄存器RB322中当前待滤波数据的141不应参与并行加法计算,因此在执行并行相加之前,将最低有效数据单位上的数据清零,即在本例中将141清零,执行完清零操作的结果显示在图7B中。如图7B所示,此时,寄存器RA321和寄存器RB322中互为对称数据的当前待滤波数据,即16和164、26和124、37和199、41和97、47和124、49和194、128和124、141和0分别将与对称相等的滤波系数相乘。
在本实施例中,寄存器RA321的最高有效数据单位和寄存器RB322的最低有效数据单位的数据重合,根据寄存器的设计特点,通常对位于最低有效数据单位的数据清零,所以此处对寄存器RB322的最低有效数据单位清零。反之,如果所述重合的数据位于寄存器RA321的最低有效数据单位和寄存器RB322的最高有效数据单位,则对寄存器RA321的最低有效数据单位清零。
从第二实施例的技术方案可以看出,通过设置控制两个存储原始数据的寄存器中的一个在改变数据时清零的控制寄存器,控制寄存器RA或RB在改变数据后执行一次清零操作,可以实现滤波系数为奇数的对称滤波。
第三实施例正如现有技术所述,SIMD处理器每执行一次滤波计算,需要从内存中读入新的数据以进行下次滤波计算,这种内存和寄存器之间的频繁的数据交换使滤波时间增加。为了减少从内存读入当前待滤波数据的时间,可以在存储当前待滤波数据的两个寄存器RA和RB中增加存储后续待滤波数据的隐藏数据单元,以及控制寄存器RA和RB移位的控制寄存器602和603。可对图3和图6所示的任一实施例增加上述结构,在此以对图3所示实施例进行增加为例。
图8是本发明第三实施例的滤波器的结构框图。参见图8,在第三实施例中,滤波器800包括存储原始数据的内存A301、存储滤波数据的内存B302和SIMD处理器810。其中SIMD处理器810包括地址访问控制单元311、控制寄存器602和603、滤波系数寄存器314和并行数据处理单元820。其中并行数据处理单元820包括存储待滤波数据的寄存器RA821和寄存器RB822、并行加法器323和并行乘法器324。图8中的粗实线表示数据流,细实线表示控制流。
控制寄存器602的长度为2位,用于控制控制寄存器603的有效数据位数;控制寄存器603的长度为8位,用于控制寄存器RA821和RB822的移位操作。控制寄存器602和603的值由调用滤波器800的上层设备设置。
参见图8,在本实施例中,寄存器RA821和RB822的长度为192位,对于数据精度为16位的待滤波数据来说,寄存器RA821和RB822可同时存储12个数据。192位中的128位是用来存储当前待滤波数据的有效数据单元,因此可一次存储8个当前待滤波数据,当前待滤波数据是参与本次滤波运算的数据;192位中的64位是存储后续待滤波数据的隐藏数据单元,用于在本次滤波运算结束后,通过寄存器RA821和RB822的移位操作使后续待滤波数据进入有效数据单元,参与后续的滤波运算。
与寄存器RA321和RB322一样,寄存器RA821和RB822也是不同类型的寄存器,其各自的最低有效位(LSB)分别位于寄存器的不同地址端。如图9所示,寄存器RA821的最低有效位(LSB)位于寄存器RA821的低地址端;而寄存器RB822的最低有效位(LSB)位于寄存器RB822的高地址端。
下面详细说明本实施例的滤波器实现滤波的具体过程。
第一步,将原始数据中的一组当前待滤波数据分为两部分,按照相反的存储顺序在寄存器中分别存储两部分数据,并将原始数据中紧跟每部分数据的几个数据作为后续待滤波数据也按相反的存储顺序分别存储地址访问控制单元311分别为并行数据处理单元820的寄存器RA821和寄存器RB822生成第一部分待滤波数据和第二部分待滤波数据在内存A301中的地址。
地址访问控制单元311由调用滤波器800的上层设备设置,设置的信息包括原始数据在内存A301中存储的起始地址、滤波阶数、数据长度以及每次产生新地址时需要增加的数据步长。
如果是初次调入数据,则地址访问控制单元311生成的第一部分待滤波数据和第二部分待滤波数据的第一和第二起始地址与第一实施例中第一步的初次调入数据所生成的第一和第二起始地址相同。
如果不是初次调入数据,则地址访问控制单元311生成的第一和第二起始地址为第一起始地址=上次第一起始地址+数据步长+1;第二起始地址=上次第二起始地址+数据步长+1,其中,数据步长为上组滤波运算中寄存器RA821和RB822向各自最低有效位所移动的数据数,寄存器移位操作的具体说明详见第四步。
然后,分别从第一和第二起始地址开始,调入数据个数等于数据长度的数据至寄存器RA821和寄存器RB822。在本实施例中,所设置的数据长度为12,因此两部分待滤波数据中各有12个数据,其中前8个数据为存储在有效数据单元中的当前待滤波数据,后4个数据为存储在隐藏数据单元中的后续待滤波数据。与寄存器RA321和RB322一样,寄存器RA821中待滤波数据的存储顺序和寄存器RB822中待滤波数据的存储顺序相反。
图10所示为一个16阶滤波的具体示例。如图10所示,从内存A301复制到寄存器RA821的数据为16、26、37、41、47、49、128、141、127、194、124和97,其中16至141这8个数据是位于有效数据单元的当前待滤波数据,16位于低地址端;127至97这4个数据是位于隐藏数据单元的后续待滤波数据,97位于高地址端。从内存A301复制到寄存器RB822的数据为127、194、124、97、99、124、164、168、169、1、169和170,其中的127至168这8个数据是位于有效数据单元的当前待滤波数据,127位于高地址端;169至170这4个数据是位于隐藏数据单元的后续待滤波数据,170位于低地址端。寄存器RA821的有效数据单元和寄存器RB822的有效数据单元中互为对称数据的当前待滤波数据,即16和168、26和164、37和124、41和99、47和97、49和124、128和194、141和127将与对称相等的滤波系数相乘。
本实施例的第二步和第三步分别与第一实施例的第二步和第三步相同,在此请恕不予赘述。
第四步,利用后续待滤波数据进行后续滤波计算
在完成一次滤波计算后,寄存器RA821在控制寄存器602和603的控制下向最低有效位端(低地址端)进行移位操作;寄存器RB822也在控制寄存器602和603的控制下向最低有效位端(高地址端)进行移位操作。移位操作所偏移的数据位数由控制寄存器603的有效控制位控制,控制寄存器603的有效位由控制寄存器602确定。控制寄存器602和控制寄存器603的值由调用本滤波器的上层设备设置。当控制寄存器602的值为00时,表示控制寄存器603的有效位为第7、8位;当控制寄存器602的值为01时,表示控制寄存器603的有效位为第5位至第8位;当控制寄存器602的值为10时,表示控制寄存器603的有效位为第3位至第8位;当控制寄存器602的值为11时,表示控制寄存器603的有效位为第1位至第8位。控制寄存器603的有效数据位的值之和为数据步长,数据步长表示寄存器RA和RB在一组滤波运算中所移的数据单位数,此处一组滤波运算指相邻两次从内存A调取数据之间所执行的滤波计算。下面通过参考图11以及三个具体示例对移位操作的实施方式及其效果予以说明。
在图11(a)所示的具体示例中,控制寄存器602的值为10,表示控制寄存器603的3至8位有效,这6位的值为010101。控制寄存器603的第7、8位为01,表示完成第一次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位,即16位;控制寄存器603的第5、6位为01,表示完成第二次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位;控制寄存器603的第3、4位为01,表示完成第三次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位。然后寄存器RA821和RB822将在地址访问控制单元311的控制下重新从内存A301调入12个数据。从本示例可见,在这一组滤波运算中,数据步长为3,并行数据处理单元每做一次滤波运算就输出一个滤波数据,并且进行移位一个数据单元的操作,因此在整个滤波完成后,输出的滤波数据的个数等于原始数据的个数。
在图11(b)所示的具体示例中,控制寄存器602的值为10,表示控制寄存器603的3至8位有效,这6位值为010001。控制寄存器603的第7、8位为01,表示完成第一次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位;控制寄存器603的第5、6位为00,表示完成第二次滤波计算之后,寄存器RA821和寄存器RB822不执行向各自的最低有效位移位的操作,用寄存器中当前存在的数据进行第三次滤波计算;控制寄存器603的第3、4位为01,表示完成第三次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位。然后寄存器RA821和RB822将在地址访问控制单元311的控制下从内存A301调入12个数据。从本示例可见,在这一组滤波运算中,数据步长为2,滤波器输出了4个滤波数据,而原始数据移动了3个数据,因此在整个滤波完成后,输出的滤波数据的个数大于原始数据的个数,从而实现了上采样。
在图11(c)所示的具体示例中,控制寄存器602的值为10,表示控制寄存器603的3至8位有效,这6位的值为011001。控制寄存器603的第7、8位为01,表示完成第一次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位;控制寄存器603的第5、6位为10,表示完成第二次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动二个数据单位;控制寄存器603的第3、4位为01,表示完成第三次滤波计算之后,寄存器RA821和寄存器RB822向各自的最低有效位移动一个数据单位。然后寄存器RA821和RB822将在地址访问控制单元311的控制下从内存A301调入12个数据。从本示例可见,在这一组滤波运算中,数据步长为4,滤波器输出了4个滤波数据,而原始数据移动了5个数据,因此在整个滤波完成后,输出的滤波数据的个数小于原始数据的个数,从而实现了下采样。
每次寄存器RA821和RB822向各自的最低有效位移位后,需重复执行第二步和第三步,直至寄存器RA821和RB822在控制寄存器602和603的控制下完成所有移位操作。然后,在地址访问控制单元311的控制下,从内存A301调入新的数据至寄存器RA821和RB822,然后重复执行第一步至第四步,直至对全部原始数据的滤波完成。
需要特别指出的是,如果在图6所示实施例中增加控制寄存器602和603,并在寄存器RA321和RB322上分别增加隐藏数据单元而使其成为寄存器RA821和RB822,那么,在滤波系数的个数为奇数时,控制寄存器601的值为1,每次寄存器RB822移位后,需要增加一个步骤对位于其最低有效数据单位的数据清零。如果滤波系数的个数为偶数,控制寄存器601的值为0,每次寄存器RB822移位后,无需清零的操作。
从上述第三实施例的技术方案可以看出,通过在寄存器RA和RB中增加隐藏数据单元,以及控制寄存器RA和RB移位的控制寄存器602和603,在得到一个滤波数据后,可以通过寄存器RA和RB的移位,使隐藏数据单元中的数据进入有效数据单元成为当前待滤波数据,进行滤波运算,无需每得到一个滤波数据即从内存A调入新的当前待滤波数据。因此,可以进一步减少滤波所需的时间。而且,通过对将隐藏数据单元中的数据移位进入有效数据单元的操作进行控制,可以有效地实现上采样和下采样,从而提高了滤波运算的灵活性。
第四实施例某些滤波需要针对同一组原始数据应用多组滤波系数,为了实现这类滤波,可增加存储多组滤波系数的内存C、从多组滤波系数中选择一组的控制寄存器和生成所选择的滤波系数在内存C中相对地址的地址访问控制单元,可以通过对图3、图6或图8所示任一实施例增加上述结构来实现,在此以在图3所示实施例上增加为例。
图12是本发明第四实施例的滤波器的结构框图。参见图12,在第四实施例中,滤波器1200包括存储原始数据的内存A301、存储滤波数据的内存B302、存储滤波系数的内存C303和SIMD处理器1210。其中内存C303中的滤波系数由调用滤波器1200的上层设备填充,内存C303可保存多组滤波系数。SIMD处理器1210包括地址访问控制单元311和312、控制寄存器604、滤波系数寄存器314和并行数据处理单元320。图12中的粗实线表示数据流,细实线表示控制流。
地址访问控制单元312生成所选择的滤波系数在内存C303中的相对地址、以控制从内存C303复制一组滤波系数至滤波系数寄存器314。
控制寄存器604的长度为10位,用于控制地址访问控制单元312生成所选择的滤波系数在内存C303中的相对地址,其值由调用滤波器1200的上层设备设置。
本实施例的第一步、第二步和第三步分别与第三实施例的第一步、第二步和第三步相同,在此请恕不予赘述。本实施例和第三实施例的区别仅在于,本实施例在第一步和第二步之间,增加了一个步骤从多组滤波系数中选择一组滤波系数作为本次滤波运算所选择的滤波系数,下面详细说明此步骤。
地址访问控制单元312在控制寄存器604的控制下生成所选择滤波系数在内存C303中的相对地址,以控制将所选择的滤波系数从内存C303复制到滤波系数寄存器314。
在本实施例中,控制寄存器604为10位寄存器,其中的每2位对应一组滤波系数,在进行滤波运算时,可根据控制寄存器604的值轮换滤波系数。举例说明,假设内存C303包含4组滤波系数C1、C2、C3和C4,控制寄存器604的值为0110000111,其中第1、2位为01,对应滤波系数C2;第3、4位为10,对应的滤波系数为C3;第5、6位为00,对应的滤波系数为C1;第7、8位为01,对应的滤波系数为C2;第9、10位为11,对应的滤波系数为C4。这样,在进行滤波运算时,可按照C2、C3、C1、C2的顺序轮换滤波系数。可以每执行一次滤波计算换一组滤波系数,也可以每执行M次滤波计算换一组滤波系数,其中M为预先设置的大于或等于2的自然数。
需要特别指出的是,如果在图8所示实施例中增加内存C303、地址访问控制单元312和控制寄存器604,优选地,控制寄存器604的有效数据位也由控制寄存器602确定,例如,当控制寄存器602的值为00时,控制寄存器604的有效数据位为7至10位;当控制寄存器602的值为01时,控制寄存器604的有效数据位为5至10位;当控制寄存器602的值为10时,控制寄存器604的有效数据位为3至10位;当控制寄存器602的值为11时,控制寄存器604的有效数据位为1至10位。
这样,可以在一组滤波计算的多次滤波计算中根据控制寄存器604的值轮换滤波系数,此处一组滤波计算为从内存A301调入一次数据后至下一次调入数据之前所进行的所有滤波计算。控制寄存器604的第1和2位的值、第3和4位的值、第5和6位的值、第7和8位的值、第9和10位的值分别对应一组滤波运算中第一次至第五次滤波运算所采用的滤波系数。
从上述第四实施例的技术方案可以看出,可以对同一组原始数据应用多组滤波系数。
第五实施例除了前述的滤波公式,滤波的计算公式还可表示为Ok=C1Pk1+C2Pk2+C3Pk3+···+CNPkNC1+C2+···+CN]]>,从此公式可以看出,N个原始数据与N个滤波系数分别相乘再对乘积求和之后,还要将求和的值除以滤波系数之和,得到一个滤波数据。为了实现这个目的,可增加将并行数据处理单元输出的结果除以滤波系数之和的移位寄存器以及控制移位寄存器所移位数的控制寄存器,可以通过对前述任一实施例进行增加来实现,在此以在图3所示实施例上增加为例。
图13是本发明第五实施例的滤波器的结构框图。参见图13,第五实施例的滤波器1300包括存储原始数据的内存A301、存储滤波数据的内存B302和SIMD处理器1310。其中SIMD处理器1310包括地址访问控制单元311、控制寄存器605、滤波系数寄存器314、移位寄存器313和并行数据处理单元320。图13中的粗实线表示数据流,细实线表示控制流。
控制寄存器605的长度为4位,用于控制移位寄存器313的移位操作,即控制移位寄存器313中的值除以滤波系数之和的操作。控制寄存器605的值由调用滤波器1300的上层设备设置。
本实施例的滤波器实现滤波的具体过程中的第一步至第三步与第一实施例中的第一步至第三步基本相同,在此请恕不予赘述。所不同之处仅在于,在实施例一的第三步中,并行乘法器324将处理的结果直接输出至内存B302,而本实施例的第三步中,并行乘法器324将处理的结果输出至移位寄存器313。
第四步将第三步所得到的结果除以滤波系数之和,得到一个滤波数据,其具体实现如下移位寄存器313在控制寄存器605的控制下向右移位,以实现将求和的结果除以滤波系数之和的操作。然后,移位寄存器313将该滤波数据输出至内存B302。控制寄存器605的值对应于移位寄存器313需要向右移位的位数,该值由调用滤波器1300的上层设备根据具体的滤波系数进行设置。
在移位寄存器313向右移位后,还可以对移位后的值进行饱和运算,饱和运算的作用是当移位寄存器313移位后的值超过某个预先设定的位数时,例如超过16位时,将其中的数据转换为具有16位精度的数据。
需要特别指出的是,如果在图12所示实施例上增加移位寄存器313和控制寄存器605,虽然并非使用同一组滤波系数对原始数据进行滤波,但是对于同一组原始数据,所使用的每组滤波系数之和是相等的,因此控制寄存器605中的值无需随着所使用的滤波系数的变换而变换。
从第五实施例的技术方案可以看出,可以通过在并行数据处理单元和存储滤波数据的内存之间增加一个移位寄存器,实现对经过并行相加和相乘,再对乘积求和之后的值除以滤波系数之和的操作。
第六实施例图14是本发明第六实施例的滤波器的结构框图。参见图14,本实施例中,滤波器1400包括存储原始数据的内存A301、存储滤波数据的内存B302和SIMD处理器1410。其中SIMD处理器1410包括地址访问控制单元311和312、控制寄存器601至605、滤波系数寄存器314、移位寄存器313和并行数据处理单元820。图14中的粗实线表示数据流,细实线表示控制流。
第六实施例是本发明的一个优选实施例,可以实现滤波系数的个数为奇数的对称滤波,可以通过寄存器RA和RB的移位操作进一步节省滤波时间并实现上下采样,可以在对同一组原始数据进行滤波的过程中采用多组滤波系数,可以实现对并行相乘之后求和的值除以滤波系数之和的操作。
第七实施例为了实现更快速的滤波运算,或实现更高阶次的滤波,滤波器可具有多个并行数据处理单元,以及分别对多个并行数据处理单元的输出进行处理的多个累加寄存器。可以通过对前述任一实施例进行增加而实现上述目的,在此以在图3所示实施例上增加为例。
图15是本发明第七实施例的滤波器的结构框图。参见图15,在第七实施例中,滤波器1500包括存储原始数据的内存A301、存储滤波数据的内存B302和SIMD处理器1510。其中SIMD处理器1510包括地址访问控制单元311、控制寄存器606、滤波系数寄存器314、累加寄存器315、累加寄存器315’、第一并行数据处理单元320和第二并行数据处理单元320’。累加寄存器315接收第一并行数据处理单元320的输出,累加寄存器315’接收第二并行数据处理单元320’的输出。为了便于显示,图15未示出第一并行数据处理单元320和第二并行数据处理单元320’中的组成部件及其连接关系。图15中的粗实线表示数据流,细实线表示控制流。
控制寄存器606的长度为1位,其具有两方面的控制作用首先,通过控制地址访问控制单元311生成的待滤波数据在内存A301中的相对地址来控制第一并行数据处理单元320的寄存器RA321和RB322之间的数据距离和第二并行数据处理单元320’的寄存器RA321’和RB322’之间的数据距离;其次,控制累加寄存器315和累加寄存器315’输出滤波数据,在下文进行详细说明。
对于每个并行处理单元,其实现滤波数据的基本流程与第一实施例的第一步至第三步类似,在此请恕不予赘述,下面仅对本实施例与第一实施例不同之处予以说明。
在本实施例中,配置两个并行数据处理单元的目的有二其一是加快滤波运算的速度;其二是实现更高阶次的滤波。不同的目的决定了两个并行数据处理单元的工作模式不同。工作模式包括单独模式和组合模式,在单独模式下两个并行数据处理单元独立工作;在组合模式下两个并行数据处理单元协同工作。
为了实现上述第一个目的,本实施例的两个并行数据处理单元的工作模式为单独模式,在这种模式下,控制寄存器606的值为0,两个并行数据处理单元分别对两组当前待滤波数据进行滤波运算,得到两个滤波数据。该模式下执行滤波运算的大致流程如下首先,从内存A301分别复制数据至第一并行数据处理单元320和第二并行数据处理单元320’时,在控制寄存器606的控制下,第一并行数据处理单元320的寄存器RA321和RB322中当前待滤波数据之间的数据距离为0,第二并行数据处理单元320’的寄存器RA321’和RB322’中当前待滤波数据之间的数据距离也为0。在16阶滤波中,16个当前待滤波数据为一组,每组当前待滤波数据分为两部分,每部分有8个数据。第一并行数据处理单元320的寄存器RA321和RB322中的当前待滤波数据分别是第一组当前待滤波数据的第一部分和第二部分的8个数据,第二并行数据处理单元320’的寄存器RA321’和RB322’中的当前待滤波数据分别是第二组当前待滤波数据的第一部分和第二部分的8个数据,图16A所示为工作在单独模式下从内存A复制数据到寄存器RA和RB的示意图。
然后,两个并行数据处理单元分别执行前述的滤波运算,第一并行数据处理单元320向累加寄存器315输出一个结果,第二并行数据处理单元320’向累加寄存器315’输出一个结果。然后,在控制寄存器606的控制下,累加寄存器315和315’分别输出一个滤波数据至内存B302。
这样,两个并行数据处理单元分别进行滤波运算,滤波阶数和使用一个并行数据处理单元的滤波一样,但滤波运算的速度加倍。
为了实现上述第二个目的,本实施例中的两个并行数据处理单元的工作模式为组合模式,在这种模式下,控制寄存器606的值为1,两个并行数据处理单元对一组当前待滤波数据进行滤波运算,将两个并行数据处理单元输出的结果相加作为一个滤波数据。以32阶滤波为例,该模式下执行滤波运算的大致流程如下首先,从内存A301分别复制数据至第一并行数据处理单元320和第二并行数据处理单元320’时,在控制寄存器606的控制下,第一并行数据处理单元320的寄存器RA321和RB322中当前待滤波数据之间的数据距离为16,第二并行数据处理单元320’的寄存器RA321’和RB322’中当前待滤波数据之间的数据距离为0。在32阶滤波中,32个当前待滤波数据为一组,每组当前待滤波数据分为两部分,每部分有16个当前待滤波数据。第一并行数据处理单元320的寄存器RA321和RB322中的当前待滤波数据分别是第一部分当前待滤波数据的前8个数据和第二部分当前待滤波数据的后8个数据,第二并行数据处理单元320’的寄存器RA321’和RB322’中的当前待滤波数据分别是第一部分当前待滤波数据的后8个数据和第二部分当前待滤波数据的前8个数据,图16B所示为工作在组合模式下从内存A复制数据到寄存器RA和RB的示意图。
然后,两个并行数据处理单元分别执行前述的滤波运算,第一并行数据处理单元320向累加寄存器315输出一个结果,第二并行数据处理单元320’向累加寄存器315’输出一个结果。
最后,在控制寄存器606的控制下,将累加寄存器315和累加寄存器315’中的值相加后存储在累加寄存器315中,由累加寄存器315输出一个滤波数据至内存B302。
这样,滤波器可以实现更高阶次的滤波。需要说明,为了实现更高阶次的对称滤波,滤波系数寄存器314的位数也要相应增加,或者,在本发明的其它实施例中,可以设置两个滤波系数寄存器,分别向两个并行数据处理单元提供滤波系数。
此外,累加寄存器315和315’也可以实现第五实施例中移位寄存器313的功能,即分别将第一并行数据处理单元320和第二并行数据处理单元320’的输出除以滤波系数之和的操作,同时增加控制累加寄存器315和315’移位操作的控制寄存器607(未示出),控制寄存器607的功能和控制寄存器605的功能类似,所不同之处为控制寄存器605控制移位寄存器313的移位,而控制寄存器607控制累加寄存器315和/或315’的移位。在单独模式下,累加寄存器315和315’分别接收第一和第二并行数据处理单元320的输出,在控制寄存器607的控制下,分别向右移位后向内存B302输出两个滤波数据,也可以在分别对经过向右移位的值进行饱和运算后向内存B302输出两个滤波数据;在组合模式下,在将累加寄存器315和315’中的值之和保存在累加寄存器315后,累加寄存器315在控制寄存器607的控制下,向右移位后向内存B302输出一个滤波数据,也可以在对经过向右移位的值进行饱和运算后向内存B302输出一个滤波数据。
在第七实施例的滤波器中,以两个并行数据处理单元为例进行说明,在实际应用中,也可以包含两个以上并行数据处理单元,从而进一步提高滤波运算的速度,或实现更复杂的滤波运算。
从第七实施例的技术方案可以看出,通过组合多个并行数据处理单元和累加寄存器来实现滤波运算的并行性,进一步减少滤波运算的时间,或者实现更加复杂的滤波运算。
需要说明,第一实施例至第七实施例中的控制寄存器601至607的位数仅为优选值,在实际应用中,控制寄存器601至607可以为任意合适的位数。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种滤波器,包括存储原始数据的第一内存;存储滤波数据的第二内存;和单指令多数据SIMD处理器,该SIMD处理器从第一内存中获取与滤波系数相对应的当前待滤波数据;将当前待滤波数据中与对称相等的滤波系数相对应的当前待滤波数据分别相加、保持与无对称相等的滤波系数相对应的当前待滤波数据不变;将所得数据分别与预先保存的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
2.根据权利要求1所述的滤波器,其中所述SIMD处理器包括并行数据处理单元,包括具有相反存储顺序的第一寄存器和第二寄存器、并行加法器和并行乘法器;滤波系数寄存器,至少存储N个当前滤波系数,该N个当前滤波系数由2N个滤波系数中对称相等的滤波系数中的一个组成;第一地址访问控制单元,为2N个当前待滤波数据生成在第一内存中的相对地址,以控制从第一内存分别复制第一至第N个当前待滤波数据和第N+1至第2N个当前待滤波数据到第一和第二寄存器;其中,N为自然数,并行加法器对第一和第二寄存器中的当前待滤波数据并行相加,并行乘法器将并行相加结果和滤波系数寄存器中的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
3.根据权利要求2所述的滤波器,其中所述第一和第二寄存器包括有效数据单元和隐藏数据单元,有效数据单元用于存储当前待滤波数据,隐藏数据单元用于存储后续待滤波数据;所述SIMD处理器进一步包括第二控制寄存器和第三控制寄存器,控制第一和第二寄存器在对当前待滤波数据的滤波运算结束之后进行移位操作,使隐藏数据单元中的后续待滤波数据通过移位进入有效数据单元。
4.根据权利要求3所述的滤波器,进一步包括用于存储一组以上滤波系数的第三内存;所述SIMD处理器进一步包括第四控制寄存器,控制从第三内存中的一组以上滤波系数中选取一组滤波系数;第二地址访问控制单元,在第四控制寄存器的控制下,为所选取的一组滤波系数生成在第三内存中的相对地址,以控制从第三内存复制所选取的一组滤波系数至滤波系数寄存器。
5.根据权利要求4所述的滤波器,其中所述SIMD处理器进一步包括移位寄存器,存储并行乘法器输出的求和结果,通过移位将该求和结果除以滤波系数之和,输出滤波数据至第二内存;第五控制寄存器,控制移位寄存器移位的位数。
6.根据权利要求4所述的滤波器,其中所述的并行数据处理单元为一个以上,所述SIMD处理器进一步包括一个以上的累加寄存器,分别存储一个以上的并行数据处理单元输出的数据;第六控制寄存器,控制滤波器工作在单独模式或组合模式;当滤波器工作在单独模式时,所述的一个以上的并行数据处理单元中,每个并行处理单元分别处理当前待滤波数据,且每个累加寄存器中的数据分别直接输出至第二内存;当滤波器工作在组合模式时,所述的一个以上的并行数据处理单元组合在一起处理当前待滤波数据,并将每个累加寄存器中的数据经求和处理后输出至第二内存。
7.根据权利要求6所述的滤波器,其中所述的SIMD处理器进一步包括第七控制寄存器,控制累加寄存器移位的位数;所述的累加寄存器在输出数据至第二内存之前,在第七控制寄存器的控制下,通过移位将该数据除以滤波系数之和。
8.根据权利要求1所述的滤波器,其中所述SIMD处理器包括并行数据处理单元,包括具有相反存储顺序的第一寄存器和第二寄存器、并行加法器和并行乘法器;滤波系数寄存器,至少存储N个当前滤波系数,该N个当前滤波系数由2N-1个滤波系数中无对称相等的滤波系数和对称相等的滤波系数中的一个组成;第一地址访问控制单元,为2N-1个当前待滤波数据生成在第一内存中的相对地址,以控制从第一内存分别复制第一至第N个当前待滤波数据和第N至第2N-1个当前待滤波数据到第一和第二寄存器;第一控制寄存器,控制所述第一和第二寄存器中与无对称相等的滤波系数相对应的当前待滤波数据位于最低有效数据单位的寄存器在其存储的数据发生改变后对其最低有效数据单位执行清零;其中,N为自然数,并行加法器对第一和第二寄存器中的当前待滤波数据并行相加,并行乘法器将并行相加结果和滤波系数寄存器中的当前滤波系数并行相乘,对并行相乘结果求和获得滤波数据并输出至第二内存。
9.根据权利要求8所述的滤波器,其中所述第一和第二寄存器包括有效数据单元和隐藏数据单元,有效数据单元用于存储当前待滤波数据,隐藏数据单元用于存储后续待滤波数据;所述SIMD处理器进一步包括第二控制寄存器和第三控制寄存器,控制第一和第二寄存器在对当前待滤波数据的滤波运算结束之后进行移位操作,使隐藏数据单元中的后续待滤波数据通过移位进入有效数据单元。
10.根据权利要求9所述的滤波器,进一步包括用于存储一组以上滤波系数的第三内存;所述SIMD处理器进一步包括第四控制寄存器,控制从第三内存中的一组以上滤波系数中选取一组滤波系数;第二地址访问控制单元,在第四控制寄存器的控制下,为所选取的一组滤波系数生成在第三内存中的相对地址,以控制从第三内存复制所选取的一组滤波系数至滤波系数寄存器。
11.根据权利要求10所述的滤波器,其中所述SIMD处理器进一步包括移位寄存器,存储并行乘法器输出的求和结果,通过移位将该求和结果除以滤波系数之和,输出滤波数据至第二内存;第五控制寄存器,控制移位寄存器移位的位数。
12.根据权利要求10所述的滤波器,其中所述的并行数据处理单元为一个以上,所述SIMD处理器进一步包括一个以上的累加寄存器,分别存储一个以上的并行数据处理单元输出的数据;第六控制寄存器,控制滤波器工作在单独模式或组合模式;当滤波器工作在单独模式时,所述的一个以上的并行数据处理单元中,每个并行处理单元分别处理当前待滤波数据,且每个累加寄存器中的数据分别直接输出至第二内存;当滤波器工作在组合模式时,所述的一个以上的并行数据处理单元组合在一起处理当前待滤波数据,并将每个累加寄存器中的数据经求和处理后输出至第二内存。
13.根据权利要求12所述的滤波器,其中所述的SIMD处理器进一步包括第七控制寄存器,控制累加寄存器移位的位数;所述的累加寄存器在输出数据至第二内存之前,在第七控制寄存器的控制下,通过移位将该数据除以滤波系数之和。
14.一种滤波方法,包括从原始数据中获取与滤波系数相对应的当前待滤波数据;将与对称相等的滤波系数相对应的当前待滤波数据分别相加,保持与无对称相等的滤波系数相对应的当前待滤波数据不变;将所得数据与预先存储的当前滤波系数并行相乘,对并行相乘的结果求和获得一个滤波数据并存储。
15.根据权利要求14所述的滤波方法,其中所述滤波系数的个数为偶数,所述当前滤波系数由滤波系数中对称相等的滤波系数中的一个组成。
16.根据权利要求14所述的滤波方法,其中所述滤波系数的个数为奇数,所述当前滤波系数由滤波系数中无对称相等的滤波系数和对称相等的滤波系数中的一个组成。
17.根据权利要求14至16中任一项所述的滤波方法,其中对并行相乘的结果求和之后进一步包括将求和结果除以滤波系数之和获得一个滤波数据。
全文摘要
本发明提供了一种滤波器和滤波方法,利用对称滤波的滤波系数对称相等的特点,在执行滤波运算时,从原始数据中获取与滤波系数相对应的当前待滤波数据;将与对称相等的滤波系数相对应的当前待滤波数据分别相加,保持与无对称相等的滤波系数相对应的当前待滤波数据不变;将所得数据与预先保存的当前滤波系数并行相乘后求和获得滤波数据。本发明通过减少滤波所需的乘法运算量减少滤波所需的乘法运算的时间。进一步,本发明在存储待滤波数据的寄存器中设置隐藏数据单元,在每次调入当前待滤波数据的同时调入后续待滤波数据,避免每次执行完滤波运算后从内存中复制数据,减少了从内存中调取待滤波数据的时间,从而进一步减少了滤波时间。
文档编号G06F15/80GK1964490SQ20051011581
公开日2007年5月16日 申请日期2005年11月9日 优先权日2005年11月9日
发明者王文东, 黄宁 申请人:松下电器产业株式会社