Multistage IIR Filter and Parallelized Filtering of Data with Same
Abstract
In some embodiments, a multistage filter whose biquad filter stages are combined with latency between the stages, a system (e.g., an audio encoder or decoder) including such a filter, and methods for multistage biquad filtering. In typical embodiments, all biquad filter stages of the filter are operable independently to perform fully parallelized processing of data. In some embodiments, the inventive multistage filter includes a buffer memory, at least two biquad filter stages, and a controller coupled and configured to assert a single stream of instructions to the filter stages. Typically, the multistage filter is configured to perform multistage filtering of a block of input samples in a single processing loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
Claims
exact text as granted — not AI-modified1 . A multistage filter, including:
a buffer memory; at least two biquad filter stages, including a first biquad filter stage and a subsequent biquad filter stage; and a controller, coupled to the biquad filter stages and configured to assert a single stream of instructions to both the first biquad filter stage and the subsequent biquad filter stage, wherein said first biquad filter stage and said subsequent biquad filter stage operate independently and in parallel in response to the stream of instructions, wherein the first biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on a block of N input samples in response to the stream of instructions to generate intermediate values, and to assert the intermediate values to the memory, wherein the intermediate values include a filtered version of each of at least a subset of the input samples, and wherein the subsequent biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on buffered values retrieved from the memory in response to the stream of instructions to generate a block of output values, wherein the output values include an output value corresponding to each of the input samples in the block of N input samples, and the buffered values include at least some of the intermediate values generated in the first biquad filter stage in response to the block of N input samples.
2 . The multistage filter of claim 1 , wherein said multistage filter is configured to perform multistage filtering of the block of N input samples in a single processing loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
3 . The multistage filter of claim 1 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples, the filtered version of a “j−1”th one of the input samples, and the filtered version of a “j−2”th one of the input samples.
4 . The multistage filter of claim 1 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples generated by the first biquad filter stage, and a value generated by the subsequent biquad filter stage in response to a “j−1”th one of the input samples, and a value generated by the subsequent biquad filter stage in response to a “j−2”th one of the input samples.
5 . The multistage filter of claim 1 , wherein the subsequent biquad filter stage is configured to generate an output value corresponding to each of the input samples in response to a different subset of the buffered values retrieved from the memory, each said subset includes at least three of the intermediate values generated in the first biquad filter stage and retrieved from the memory after residing in said memory for different latency times.
6 . A multistage filter comprising at least two biquad filter stages, wherein the stages are combined with latency between said stages, such that all the stages are operable independently in response to a single, common stream of instructions to perform fully parallelized processing of data in said stages.
7 . The multistage filter of claim 6 , also including a controller coupled to assert the common stream of instructions to all the stages, and a data memory coupled to all the stages, wherein all the stages are operable in parallel to filter a block of input data values in response to the common stream of instructions, but with each of the stages operating on different data values, and with at least one of the stages operating on data values which include buffered values, generated by another one of the stages in response to a subset of the input data values and stored with different latencies in the memory before being retrieved for processing in said one of the stages.
8 . The multistage filter of claim 6 , wherein said multistage filter has a single instruction, multiple data architecture.
9 . The multistage filter of claim 8 , wherein the multistage filter includes M biquad filter stages, wherein M is a number greater than one, and one of the stages is operable on data values generated by a previous one of the stages at different times, stored in a buffer memory at different times, and read by said one of the stages from the buffer memory after residing in the buffer memory with different latency times.
10 . A method for performing multistage filtering on a block of N input samples, said method including the steps of:
(a) performing a first biquadratic filtering operation on the block of N input samples to generate intermediate values, and asserting the intermediate values to a buffer memory, wherein the intermediate values include a filtered version of each of at least a subset of the input samples; and (b) performing a second biquadratic filtering operation on buffered values retrieved from the memory, to generate a block of output values, wherein the output values include an output value corresponding to each of the input samples in the block of N input samples, a different subset of the buffered values is retrieved and filtered to generate the output value corresponding to each of the input samples in the block, and each said subset of the buffered values includes at least two of the intermediate values generated during performance of step (a) which are retrieved from the memory after residing in said memory for different latency times, wherein steps (a) and (b) are performed in response to a single stream of instructions, such that steps (a) and (b) are performed independently and in parallel in response to the single stream of instructions.
11 . The method of claim 10 , wherein the multistage filtering of the block of input samples is performed in a single loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
12 . The method of claim 10 , wherein the multistage filtering is performed in a multistage filter having M stages, the buffered values retrieved in step (b) to generate the output value corresponding to a “j”th one of the input samples, where j is an index in the range from M−1 to N−1, include the filtered version of the “j”th one of the input samples generated in step (a), the filtered version of a “j−1”th one of the input samples generated in step (a), and the filtered version of a “j−2”th one of the input samples generated in step (a).
13 . An audio encoder configured to generate encoded audio data in response to input audio data, said encoder including at least one multistage filter coupled and configured to filter the audio data, wherein the multistage filter includes:
a buffer memory; at least two biquad filter stages, including a first biquad filter stage and a subsequent biquad filter stage; and a controller, coupled to the biquad filter stages and configured to assert a single stream of instructions to both the first biquad filter stage and the subsequent biquad filter stage, wherein said first biquad filter stage and said subsequent biquad filter stage operate independently and in parallel in response to the stream of instructions, wherein the first biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on a block of N input samples in response to the stream of instructions to generate intermediate values, and to assert the intermediate values to the memory, wherein the intermediate values include a filtered version of each of at least a subset of the input samples, and wherein the subsequent biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on buffered values retrieved from the memory in response to the stream of instructions to generate a block of output values, wherein the output values include an output value corresponding to each of the input samples in the block of N input samples, and the buffered values include at least some of the intermediate values generated in the first biquad filter stage in response to the block of N input samples.
14 . The encoder of claim 13 , wherein the multistage filter is configured to perform multistage filtering of the block of N input samples in a single processing loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
15 . The encoder of claim 13 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples, the filtered version of a “j−1”th one of the input samples, and the filtered version of a “j−2”th one of the input samples.
16 . The encoder of claim 13 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples generated by the first biquad filter stage, and a value generated by the subsequent biquad filter stage in response to a “j−1”th one of the input samples, and a value generated by the subsequent biquad filter stage in response to a “j−2”th one of the input samples.
17 . The encoder of claim 13 , wherein the subsequent biquad filter stage is configured to generate an output value corresponding to each of the input samples in response to a different subset of the buffered values retrieved from the memory, each said subset includes at least three of the intermediate values generated in the first biquad filter stage and retrieved from the memory after residing in said memory for different latency times.
18 . The encoder of claim 13 , wherein said encoder is a processor including at least one single instruction, multiple data unit programmed to implement the multistage filter.
19 . The encoder of claim 13 , wherein said encoder is a processor including multiple arithmetic logic units programmed to implement the biquad filter stages.
20 . The encoder of claim 13 , wherein said encoder is a processor including multiple arithmetic manipulation units programmed to implement the biquad filter stages.
21 . An audio encoder configured to generate encoded audio data in response to input audio data, said encoder including at least one multistage filter coupled and configured to filter the audio data, wherein the multistage filter includes at least two biquad filter stages, and the stages are combined with latency between said stages, such that all the stages are operable independently in response to a single, common stream of instructions to perform fully parallelized processing of data in said stages.
22 . The encoder of claim 21 , wherein the multistage filter also includes a controller coupled to assert the common stream of instructions to all the stages, and a data memory coupled to all the stages, wherein all the stages are operable in parallel to filter a block of input data values in response to the common stream of instructions, but with each of the stages operating on different data values, and with at least one of the stages operating on data values which include buffered values, generated by another one of the stages in response to a subset of the input data values and stored with different latencies in the memory before being retrieved for processing in said one of the stages.
23 . The encoder of claim 21 , wherein the multistage filter has a single instruction, multiple data architecture.
24 . The encoder of claim 23 , wherein the multistage filter includes M biquad filter stages, wherein M is a number greater than one, and one of the stages is operable on data values generated by a previous one of the stages at different times, stored in a buffer memory at different times, and read by said one of the stages from the buffer memory after residing in the buffer memory with different latency times.
25 . The encoder of claim 21 , wherein said encoder is a processor including at least one single instruction, multiple data unit programmed to implement the multistage filter.
26 . The encoder of claim 21 , wherein said encoder is a processor including multiple arithmetic logic units programmed to implement the biquad filter stages.
27 . The encoder of claim 21 , wherein said encoder is a processor including multiple arithmetic manipulation units programmed to implement the biquad filter stages.
28 . A method for encoding audio data to generate encoded audio data, including by performing multistage filtering on a block of N audio data samples, wherein the multistage filtering includes the steps of:
(a) performing a first biquadratic filtering operation on the block of N samples to generate intermediate values, and asserting the intermediate values to a buffer memory, wherein the intermediate values include a filtered version of each of at least a subset of the N samples; and (b) performing a second biquadratic filtering operation on buffered values retrieved from the memory, to generate a block of output values, wherein the output values include an output value corresponding to each of the samples in the block of N samples, a different subset of the buffered values is retrieved and filtered to generate the output value corresponding to each of the samples in the block, and each said subset of the buffered values includes at least two of the intermediate values generated during performance of step (a) which are retrieved from the memory after residing in said memory for different latency times, wherein steps (a) and (b) are performed in response to a single stream of instructions, such that steps (a) and (b) are performed independently and in parallel in response to the single stream of instructions.
29 . The method of claim 28 , wherein the multistage filtering of the block of samples is performed in a single loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
30 . The method of claim 28 , wherein the multistage filtering is performed in a multistage filter having M stages, the buffered values retrieved in step (b) to generate the output value corresponding to a “j”th one of the samples, where j is an index in the range from M−1 to N−1, include the filtered version of the “j”th one of the samples generated in step (a), the filtered version of a “j−1”th one of the samples generated in step (a), and the filtered version of a “j−2”th one of the samples generated in step (a).
31 . An audio decoder configured to generate decoded audio data in response to encoded audio data, said decoder including at least one multistage filter coupled and configured to filter the encoded audio data, wherein the multistage filter includes:
a buffer memory; at least two biquad filter stages, including a first biquad filter stage and a subsequent biquad filter stage; and a controller, coupled to the biquad filter stages and configured to assert a single stream of instructions to both the first biquad filter stage and the subsequent biquad filter stage, wherein said first biquad filter stage and said subsequent biquad filter stage operate independently and in parallel in response to the stream of instructions, wherein the first biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on a block of N input samples in response to the stream of instructions to generate intermediate values, and to assert the intermediate values to the memory, wherein the intermediate values include a filtered version of each of at least a subset of the input samples, and wherein the subsequent biquad filter stage is coupled to the memory and configured to perform biquadratic filtering on buffered values retrieved from the memory in response to the stream of instructions to generate a block of output values, wherein the output values include an output value corresponding to each of the input samples in the block of N input samples, and the buffered values include at least some of the intermediate values generated in the first biquad filter stage in response to the block of N input samples.
32 . The decoder of claim 31 , wherein the multistage filter is configured to perform multistage filtering of the block of N input samples in a single processing loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
33 . The decoder of claim 31 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples, the filtered version of a “j−1”th one of the input samples, and the filtered version of a “j−2”th one of the input samples.
34 . The decoder of claim 31 , wherein the multistage filter has M biquad filter stages, the subsequent biquad filter stage is configured to generate an output value corresponding to a “j”th one of the input samples in response to a subset of the buffered values retrieved from the memory, where j is an index in the range from M−1 to N−1, said subset including the filtered version of the “j”th one of the input samples generated by the first biquad filter stage, and a value generated by the subsequent biquad filter stage in response to a “j−1”th one of the input samples, and a value generated by the subsequent biquad filter stage in response to a “j−2”th one of the input samples.
35 . The decoder of claim 31 , wherein the subsequent biquad filter stage is configured to generate an output value corresponding to each of the input samples in response to a different subset of the buffered values retrieved from the memory, each said subset includes at least three of the intermediate values generated in the first biquad filter stage and retrieved from the memory after residing in said memory for different latency times.
36 . The decoder of claim 31 , wherein said decoder is a processor including at least one single instruction, multiple data unit programmed to implement the multistage filter.
37 . The decoder of claim 31 , wherein said decoder is a processor including multiple arithmetic logic units programmed to implement the biquad filter stages.
38 . The decoder of claim 31 , wherein said decoder is a processor including multiple arithmetic manipulation units programmed to implement the biquad filter stages.
39 . An audio decoder configured to generate decoded audio data in response to encoded audio data, said decoder including at least one multistage filter coupled and configured to filter the encoded audio data, wherein the multistage filter includes at least two biquad filter stages, and the stages are combined with latency between said stages, such that all the stages are operable independently in response to a single, common stream of instructions to perform fully parallelized processing of data in said stages.
40 . The decoder of claim 39 , wherein the multistage filter also includes a controller coupled to assert the common stream of instructions to all the stages, and a data memory coupled to all the stages, wherein all the stages are operable in parallel to filter a block of input data values in response to the common stream of instructions, but with each of the stages operating on different data values, and with at least one of the stages operating on data values which include buffered values, generated by another one of the stages in response to a subset of the input data values and stored with different latencies in the memory before being retrieved for processing in said one of the stages.
41 . The decoder of claim 39 , wherein the multistage filter has a single instruction, multiple data architecture.
42 . The decoder of claim 41 , wherein the multistage filter includes M biquad filter stages, wherein M is a number greater than one, and one of the stages is operable on data values generated by a previous one of the stages at different times, stored in a buffer memory at different times, and read by said one of the stages from the buffer memory after residing in the buffer memory with different latency times.
43 . The decoder of claim 39 , wherein said decoder is a processor including at least one single instruction, multiple data unit programmed to implement the multistage filter.
44 . The decoder of claim 39 , wherein said decoder is a processor including multiple arithmetic logic units programmed to implement the biquad filter stages.
45 . The decoder of claim 39 , wherein said decoder is a processor including multiple arithmetic manipulation units programmed to implement the biquad filter stages.
46 . A method for decoding encoded audio data to generate decoded audio data, including by performing multistage filtering on a block of N audio data samples, wherein the multistage filtering includes the steps of:
(a) performing a first biquadratic filtering operation on the block of N samples to generate intermediate values, and asserting the intermediate values to a buffer memory, wherein the intermediate values include a filtered version of each of at least a subset of the N samples; and (b) performing a second biquadratic filtering operation on buffered values retrieved from the memory, to generate a block of output values, wherein the output values include an output value corresponding to each of the samples in the block of N samples, a different subset of the buffered values is retrieved and filtered to generate the output value corresponding to each of the samples in the block, and each said subset of the buffered values includes at least two of the intermediate values generated during performance of step (a) which are retrieved from the memory after residing in said memory for different latency times, wherein steps (a) and (b) are performed in response to a single stream of instructions, such that steps (a) and (b) are performed independently and in parallel in response to the single stream of instructions.
47 . The method of claim 46 , wherein the multistage filtering of the block of samples is performed in a single loop with iteration over a sample index but without iteration over a biquadratic filter stage index.
48 . The method of claim 46 , wherein the multistage filtering is performed in a multistage filter having M stages, the buffered values retrieved in step (b) to generate the output value corresponding to a “j”th one of the samples, where j is an index in the range from M−1 to N−1, include the filtered version of the “j”th one of the samples generated in step (a), the filtered version of a “j−1”th one of the samples generated in step (a), and the filtered version of a “j−2”th one of the samples generated in step (a).
49 . A method for processing an encoded bitstream, comprising:
receiving the encoded bitstream and extracting therefrom encoded data representing one or more channels of audio information processed by a multistage filter including at least two biquad filter stages combined with latency between the stages such that all the stages are operable independently in response to a single, common stream of instructions to perform fully parallelized processing of data in the stages; and decoding the encoded data to provide decoded representations of the one or more channels of audio information processed by the multistage filter.
50 . A method for processing an encoded bitstream, comprising:
receiving the encoded bitstream and extracting therefrom encoded data representing one or more channels of audio information processed by a multistage filter; and decoding the encoded data to provide decoded representations of the one or more channels of audio information processed by the multistage filter, wherein the multistage filter is operative to perform independently and in parallel, in response to a single stream of instructions:
(a) a first biquadratic filtering operation on a block of N samples to generate intermediate values to assert to a buffer memory, wherein the intermediate values include a filtered version of each of at least a subset of the N samples; and
(b) a second biquadratic filtering operation on buffered values retrieved from the memory to generate a block of output values, wherein the output values include an output value corresponding to each of the samples in the block of N samples, a different subset of the buffered values is retrieved and filtered to generate the output value corresponding to each of the samples in the block, and each said subset of the buffered values includes at least two of the intermediate values generated during performance of step (a) which are retrieved from the memory after residing in said memory for different latency times.
51 . The method of either claim 49 or claim 50 wherein the multistage filter is a three-stage biquad filter for performing bandwidth limiting low-pass filtering.
52 . The method of either claim 49 or claim 50 wherein one of the one or more channels is a LFE channel and the multistage filter is a four-stage biquad filter for performing low pass filtering on the LFE channel.
53 . An apparatus for processing an encoded bitstream, comprising:
an input coupled to receive the encoded bitstream; and a decoder coupled to the input, and configured to extract, from the encoded bitstream, encoded data representing one or more channels of audio information processed by a multistage filter including at least two biquad filter stages combined with latency between the stages such that all the stages are operable independently in response to a single, common stream of instructions to perform fully parallelized processing of data in the stages, and to decode the encoded data to provide decoded representations of the one or more channels of audio information processed by the multistage filter.
54 . An apparatus for processing an encoded bitstream, comprising:
an input coupled to receive the encoded bitstream; and a decoder coupled to the input, and configured to extract, from the encoded bitstream, encoded data representing one or more channels of audio information processed by a multistage filter, and to decode the encoded data to provide decoded representations of the one or more channels of audio information processed by the multistage filter, wherein the multistage filter is operative to perform independently and in parallel, in response to a single stream of instructions:
(a) a first biquadratic filtering operation on a block of N samples to generate intermediate values to assert to a buffer memory, wherein the intermediate values include a filtered version of each of at least a subset of the N samples; and
(b) a second biquadratic filtering operation on buffered values retrieved from the memory to generate a block of output values, wherein the output values include an output value corresponding to each of the samples in the block of N samples, a different subset of the buffered values is retrieved and filtered to generate the output value corresponding to each of the samples in the block, and each said subset of the buffered values includes at least two of the intermediate values generated during performance of step (a) which are retrieved from the memory after residing in said memory for different latency times.
55 . The apparatus of either claim 53 or claim 54 , wherein the multistage filter is a three-stage biquadratic filter for performing bandwidth limiting low-pass filtering.
56 . The apparatus of either claim 53 or claim 54 , wherein one of the one or more channels is a LFE channel and the multistage filter is a four-stage biquadratic filter for performing low pass filtering on the LFE channel.Join the waitlist — get patent alerts
Track US2016254006A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.