Многокаскадный iir-фильтр и распараллеленная фильтрация данных таковым

Иллюстрации

Показать все

Группа изобретений относится к многокаскадным фильтрам и может быть использована для фильтрации данных с использованием таких фильтров. Техническим результатом является обеспечение параллельной обработки данных. В одном из вариантов осуществления устройство содержит буферную память, по меньшей мере два каскада биквадратных фильтров и контроллер, связанный с каскадами биквадратных фильтров и сконфигурированный для утверждения единого потока команд в первый и во второй каскад биквадратного фильтра, указанные каскады действуют независимо и параллельно в ответ на поток команд, первый каскад связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на блоке из N входных дискретных значений в ответ на поток команд для генерирования промежуточных значений и для утверждения промежуточных значений в памяти, которые включают подвергнутую фильтрации версию каждого из подмножества входных дискретных значений, следующий каскад фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на буферизованных значениях, извлекаемых из памяти в ответ на поток команд, для генерирования блока выходных значений, при этом выходные значения содержат выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и буферизованные значения содержат некоторые из промежуточных значений, сгенерированных в первом каскаде в ответ на блок из N входных дискретных значений. 8 н. и 28 з.п. ф-лы, 11 ил.

Реферат

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ

Перекрестная ссылка на родственные заявки

Данная заявка заявляет приоритет предварительной заявки на патент США №61/645291, поданной 10 мая 2012 г., которая ссылкой полностью включается в настоящее раскрытие.

1. Область изобретения

Изобретение относится к многокаскадным фильтрам, включающим каскады биквадратных фильтров, и к распараллеленной фильтрации данных (например, аудиоданных) с использованием таких фильтров. Некоторые варианты осуществления изобретения представляют собой способы, системы и процессоры для фильтрации аудиоданных (с использованием многокаскадного фильтра, включающего каскады биквадратных фильтров) в ходе кодирования или декодирования данных в соответствии с одним из форматов, известных как Dolby Digital (AC-3), Dolby Digital Plus (E-AC-3) и Dolby E, или в соответствии с другим форматом кодирования. Dolby, Dolby Digital, Dolby Digital Plus и Dolby E являются торговыми знаками Dolby Laboratories Licensing Corporation.

2. Предпосылки изобретения

Повсюду в данном раскрытии, в том числе в формуле изобретения, выражение выполнения операции «на» сигналах или данных (например, фильтрация или масштабирование сигналов или данных) используется в широком смысле для обозначения операции непосредственно на сигналах или данных, или на обработанных версиях сигналов или данных (например, на версиях сигналов, которые претерпели предварительную фильтрацию или другую обработку перед выполнением на них указанной операции).

В области обработки сигналов цифровой биквадратный фильтр представляет собой рекурсивный линейный фильтр второго порядка, содержащий два полюса и два нуля. Сокращение «biquad» будет использоваться в настоящем раскрытии для обозначения цифрового биквадратного фильтра. В области Z передаточная функция биквадратного фильтра представляет собой отношение двух квадратичных функций:

H ( z ) = b 0 + b 1 z − 1 + b 2 z − 2 1 + a 1 z − 1 + a 2 z − 2 .

Рекурсивные фильтры высокого порядка (фильтры с бесконечной импульсной характеристикой, или «IIR-фильтры», с порядком выше второго порядка) могут иметь высокую чувствительность к квантованию их коэффициентов и легко могут становиться неустойчивыми. Рекурсивные фильтры первого и второго порядка также могут иметь трудности, связанные с неустойчивостью этого типа, но эти связанные с неустойчивостью трудности являются менее серьезными. Поэтому рекурсивные фильтры высокого порядка, как правило, реализуются как последовательно соединенные в каскад фильтры, включающие последовательный каскад из биквадратных звеньев (и, необязательно, также фильтр первого порядка). Такие последовательно соединенные в каскад фильтры иногда именуются в настоящем раскрытии многокаскадными биквадратными фильтрами и включают последовательность биквадратных фильтров (иногда именуемых в настоящем раскрытии биквадратными каскадами или биквадратными звеньями).

Например, традиционные кодеры, сконфигурированные для кодирования аудиоданных в соответствии с хорошо известным форматом AC-3 (Dolby Digital) или хорошо известными форматами Dolby Digital Plus и Dolby E, реализуют несколько многокаскадных биквадратных фильтров. Например, кодер Dolby Digital Plus, как правило, задействует для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов двухкаскадный биквадратный фильтр (т.е. фильтр, включающий два соединенных в каскад биквадратных фильтра), четырехкаскадный биквадратный фильтр (т.е. фильтр, включающий четыре соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»); и трехкаскадный биквадратный фильтр для реализации фильтрации пропускания нижних частот с ограничением полосы пропускания. Кодер Dolby E, как правило, задействует двухкаскадный биквадратный фильтр (т.е. фильтр, включающий два соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов, и четырехкаскадный биквадратный фильтр (т.е. фильтр, включающий четыре соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»). Кодер Dolby E, как правило, задействует трехкаскадный биквадратный фильтр (т.е. фильтр, включающий три соединенных в каскад биквадратных фильтра) для реализации фильтрации пропускания нижних частот в подсистеме низкочастотных эффектов («LFE»).

Например, фиг. 1 представляет собой схему биквадратного фильтра (относящегося к типу, иногда именуемому «конструкция Direct Form II - Transposed»), включающего элементы 1, 2, 3, 4, 5, b0, b1, b2, -a1 и -a2, соединенные так, как это показано. Элементы 1, 2 и 3 представляют собой элементы сложения, элементы 4 и 5 представляют собой элементы задержки, и каждый из элементов усиления b0, b1, b2, -a1 и -a2 применяет к сигналу, утвержденному в его вводе, соответствующий один из коэффициентов усиления b0, b1, b2, -a1 и -a2. И хотя это не показано и не описано в настоящем раскрытии, специалистам в данной области техники хорошо известно, что существуют и другие, эквивалентные конструкции биквадратных фильтров, например «Direct Form I», «Direct Form I - Transposed» и «Direct Form II». Любые такие эквивалентные конструкции биквадратных фильтров находятся в пределах объема изобретения.

Как показано на фиг. 1А, если биквадратный фильтр по фиг. 1 (помеченный на фиг. 1А как Biquad 1) соединен в каскад с биквадратным фильтром, имеющим такую же конструкцию (помеченным на фиг. 1А как Biquad 2), но элементы усиления которого могут применять иные коэффициенты усиления, чем элементы по фиг. 1, то результирующий многокаскадный биквадратный фильтр будет представлять собой один из примеров двухкаскадного биквадратного фильтра, который может быть задействован (например, для реализации фильтрации пропускания верхних частот в подсистеме детектора кратковременных сигналов одного из вышеупомянутых аудиокодеров). В многокаскадном биквадратном фильтре по фиг. 1А выходной сигнал, x1(n), первого каскада является входным сигналом во второй каскад.

Для многокаскадных биквадратных фильтров (и некоторых других многокаскадных IIR-фильтров) вычисление в каждом каскаде выходного дискретного значения в момент времени «n» (т.е. выходного сигнала y(n) каскада) в ответ на значения сигнала x(n) во временной области (входного сигнала или сигнала, сгенерированного в другом каскаде многокаскадного фильтра) в момент времени «n» и предыдущие моменты времени, обладает зависимостью от предыдущих выводов (т.е. выводов y(n-1) и y(n-2) в моменты времени n-1 и n-2). Также, для каждых двух последовательных каскадов (биквадратных фильтров) в многокаскадном биквадратном фильтре вывод каждого более раннего каскада является вводом в следующий каскад, поэтому вывод следующего каскада нельзя определить до тех пор, пока не будет определен вывод более раннего каскада. Эти причины являются основными причинами того, почему для реализации многокаскадного биквадратного фильтра (до настоящего изобретения) не была задействована полностью распараллеленная обработка данных.

Во многих современных архитектурах процессорного ядра (например, в архитектурах процессоров цифровой обработки сигналов) имеются блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или блоков AMU (блоков арифметической обработки), которые могут быть использованы для распараллеливания многих алгоритмов и повышения производительности. Однако традиционные алгоритмы для программирования процессоров с целью реализации многокаскадных биквадратных фильтров не используют команды SIMD и не являются распараллеленными.

Например, кодеры Dolby Digital Plus (которые кодируют аудиоданные в соответствии с форматом Dolby Digital Plus) были реализованы как программируемые процессоры ARM neon (каждый из которых представляет собой процессор ARM Cortex с механизмом Neon SIMD, допускающим параллельную обработку данных) и как программируемые процессоры цифровой обработки сигналов Texas Instruments C64. Многие кодеры аудиоданных (например, кодеры, которые кодируют аудиоданные в соответствии с AC-3, Dolby Digital Plus, Dolby E и/или другими форматами кодирования) были реализованы или могли бы быть реализованы как программируемые процессоры, имеющие любую из большого разнообразия архитектур, содержащих блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или блоков AMU (блоков арифметической обработки). Такие процессоры могли бы программироваться для реализации различных алгоритмов (включенных в кодирование аудиоданных) с использованием параллельной обработки данных. Однако традиционным программированием, которое было задействовано для реализации многокаскадных биквадратных фильтров в таких процессорах, не была реализована параллельная обработка данных.

Типичные варианты осуществления настоящего изобретения задействуют для реализации многокаскадного биквадратного фильтра параллельную обработку данных. Некоторые варианты осуществления изобретения задействуют параллельную обработку данных для реализации многокаскадного биквадратного фильтра, относящегося к типу, используемому при кодировании аудиоданных в соответствии с форматом AC-3 (Dolby Digital), форматом Dolby Digital Plus или форматом Dolby E.

И хотя изобретение не ограничивается использованием при кодировании аудиоданных в соответствии с форматом AC-3, Dolby Digital Plus или Dolby E, некоторые варианты осуществления изобретения представляют собой способы, системы и процессоры для кодирования аудиоданных (например, для кодирования аудиоданных в соответствии с форматом AC-3, Dolby Digital Plus или Dolby E), которые задействуют по меньшей мере один многокаскадный биквадратный фильтр, реализующий один из вариантов осуществления изобретения (или спроектированный в соответствии с ним).

Кодированный битовый поток AC-3 включает от одного до шести каналов звукового содержимого и метаданные, служащие признаком по меньшей мере одной характерной особенности этого звукового содержимого. Звуковое содержимое представляет собой аудиоданные, которые были сжаты с использованием перцепционного кодирования звука.

Подробности кодирования AC-3 (также известного как Dolby Digital) хорошо известны и изложены во многих опубликованных источниках, включая следующие:

стандарт ATSC A52/A: Digital Audio Compression Standard (AC-3), Revision A, Advanced Television Systems Committee, 20 августа 2001;

«Flexible Perceptual Coding for Audio Transmission and Storage», авторов Craig C. Todd и др., 96th Convention of the Audio Engineering Society, 26 февраля, 1994, Preprint 3796;

«Design and Implementation of AC-3 Coders», автора Steve Vernon, IEEE Trans. Consumer Electronics, Vol.41, No. 3, август 1995;

глава «Dolby Digital Audio Coding Standards» авторов 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 и др., Audio Engineering Society Preprint 3365, 93rd AES Convention, октябрь 1992; и

патенты США №№5583962; 5632005; 5633981; 5727119 и 6021386.

Подробности кодирования Dolby Digital (AC-3) и Dolby Digital Plus (иногда именуемого Enhanced 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, 28 октября, 2004, и в технических условиях Dolby Digital/Dolby Digital Plus (ATSC A/52:2010), доступных по адресу:

http://www.atsc.org/cms/index.php/standards/published-standards.

КРАТКОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

В одном из классов вариантов осуществления изобретения изобретение представляет собой многокаскадный фильтр, включающий по меньшей мере два каскада (каждый из которых представляет собой биквадратный фильтр), где каскады объединены c задержкой между указанными каскадами так, что все каскады являются действующими независимо в ответ на единый, общий поток команд с целью выполнения полностью распараллеленной обработки данных на указанных каскадах. Как правило, многокаскадный фильтр также включает контроллер, подключенный для утверждения общего потока команд во всех каскадах, и память данных, соединенную со всеми каскадами, где все каскады являются действующими параллельно с целью фильтрации блока входных значений данных в ответ на общий поток команд, но где каждый из каскадов действует на разные значения данных, и где по меньшей мере один из каскадов действует на значениях данных, которые включают буферизованные значения, сгенерированные другим из каскадов в ответ на подмножество входных значений данных и сохраненные в памяти с отличающимися задержками перед извлечением для обработки в указанном одном из каскадов. Таким образом, многокаскадный фильтр в этих вариантах осуществления изобретения имеет архитектуру SIMD («один поток команд - много потоков данных»), в которой отдельные каскады биквадратных фильтров действуют независимо и параллельно в ответ на единый поток команд. Например, многокаскадный фильтр может включать N каскадов (где N - число больше единицы), и один из каскадов («M+1»-й каскад в последовательности) может действовать на значениях данных, генерируемых предыдущим одним из каскадов («М»-м каскадом в последовательности) в разное время (например, в ответ на последовательность разных входных значений данных блока), сохраненных в буферную память (в разное время) и считываемых («М+1»-м каскадом) из буферной памяти после пребывания в буферной памяти в течение разного времени ожидания.

В некоторых вариантах осуществления изобретения, изобретение представляет собой многокаскадный фильтр, включающий:

буферную память;

по меньшей мере два каскада биквадратных фильтров, в том числе первый каскад биквадратного фильтра и следующий каскад биквадратного фильтра; и

контроллер, соединенный с каскадами биквадратных фильтров и сконфигурированный для утверждения единого потока команд как в первом каскаде биквадратного фильтра, так и в следующем каскаде биквадратного фильтра, где указанный первый каскад биквадратного фильтра и указанный следующий каскад биквадратного фильтра действуют независимо и параллельно в ответ на поток команд,

где первый каскад биквадратного фильтра соединен с памятью и сконфигурирован для выполнения биквадратной фильтрации на блоке из N входных дискретных значений в ответ на поток команд с целью генерирования промежуточных значений и для утверждения этих промежуточных значений в памяти (для хранения в указанной памяти), где промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений, и

где следующий каскад биквадратного фильтра связан с памятью и сконфигурирован для выполнения биквадратной фильтрации на буферизованных значениях, извлеченных из памяти, в ответ на поток команд с целью генерирования блока выходных значений, где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, и буферизованные значения включают по меньшей мере некоторые из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра в ответ на блок из N входных дискретных значений.

В типичных вариантах осуществления изобретения многокаскадный фильтр является сконфигурированным для выполнения многокаскадной фильтрации на блоке из N входных значений в едином цикле обработки данных с повторением по индексу дискретных значений, но без повторения по индексу каскадов биквадратных фильтров.

В некоторых вариантах осуществления многокаскадного фильтра согласно изобретению, при этом многокаскадный фильтр содержит М каскадов, следующий каскад биквадратного фильтра является сконфигурированным для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, в ответ на подмножество буферизованных значений, извлеченных из памяти, где j - индекс в интервале от M-1 до N-1, при этом указанное подмножество включает подвергнутую фильтрации версию «j»-го из входных дискретных значений, подвергнутую фильтрации версию «j-1»-го из входных дискретных значений и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений.

В некоторых вариантах осуществления многокаскадного фильтра согласно изобретению следующий каскад биквадратного фильтра является сконфигурированным для генерирования выходного значения, соответствующего каждому из входных дискретных значений, в ответ на другое подмножество буферизованных значений, извлеченных из памяти, где каждое такое подмножество включает по меньшей мере три из промежуточных значений, сгенерированных в первом каскаде биквадратного фильтра и извлеченных из памяти после пребывания в указанной памяти в течение разного времени ожидания. Например, в одном из типичных вариантов осуществления изобретения, где многокаскадный фильтр содержит М каскадов биквадратных фильтров, подмножество буферизованных значений, извлекаемое для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включает по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j»-е из входных дискретных значений, по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-1»-е из входных дискретных значений, и по меньшей мере одно значение, сгенерированное в первом каскаде биквадратного фильтра в ответ на «j-2»-е из входных дискретных значений

В другом классе вариантов осуществления изобретения изобретение представляет собой способ выполнения многокаскадной фильтрации на блоке из N входных дискретных значений, при этом указанный способ включает этапы:

(а) выполнения первой операции биквадратной фильтрации на блоке из N входных дискретных значений с целью генерирования промежуточных значений и утверждение промежуточных значений в буферной памяти (для хранения в указанной памяти), где промежуточные значения включают подвергнутую фильтрации версию каждого из по меньшей мере подмножества входных дискретных значений; и

(b) выполнения второй операции биквадратной фильтрации на буферизованных значениях, извлеченных из памяти, с целью генерирования блока выходных значений, где выходные значения включают выходное значение, соответствующее каждому из входных дискретных значений в блоке из N входных дискретных значений, другое подмножество буферизованных значений извлекается и фильтруется для генерирования выходного значения, соответствующего каждому из входных дискретных значений в блоке, и каждое такое подмножество буферизованных значений включает по меньшей мере два (например, три) из промежуточных значений, сгенерированных в ходе выполнения этапа (а), которые извлекаются из памяти после пребывания в указанной памяти в течение разного времени ожидания,

где этапы (а) и (b) выполняются в ответ на единый поток команд так, что этапы (а) и (b) выполняются независимо и параллельно в ответ на единый поток команд. В типичных вариантах осуществления изобретения многокаскадная фильтрация блока входных дискретных значений выполняется в едином цикле с повторением по индексу дискретных значений, но без повторения по индексу каскадов биквадратных фильтров.

В некоторых вариантах осуществления способа согласно изобретению, где фильтрация выполняется в многокаскадном фильтре, содержащем М каскадов, буферизованные значения, извлекаемые на этапе (b) для генерирования выходного значения, соответствующего «j»-му из входных дискретных значений, где j - индекс в интервале от M-1 до N-1, включают подвергнутую фильтрации версию «j»-го из входных дискретных значений, сгенерированную на этапе (а), подвергнутую фильтрации версию «j-1»-го из входных дискретных значений, сгенерированную на этапе (а), и подвергнутую фильтрации версию «j-2»-го из входных дискретных значений, сгенерированную на этапе (а).

В другом классе вариантов осуществления изобретения изобретение представляет собой аудиокодер, сконфигурированный для генерирования кодированных аудиоданных в ответ на входные аудиоданные, при этом указанный кодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, для фильтрации предварительно обработанной версии аудиоданных). В другом классе вариантов осуществления изобретения изобретение представляет собой способ кодирования аудиоданных с целью генерирования кодированных аудиоданных, что заключается в выполнении какого-либо из вариантов осуществления способа согласно изобретению многокаскадной биквадратной фильтрации на аудиоданных (например, на предварительно обработанной версии аудиоданных). Например, один из вариантов осуществления изобретения представляет собой аудиокодер, включающий каскад предварительной обработки данных (предназначенный для предварительной обработки входных аудиоданных, подлежащих кодированию кодером), где каскад предварительной обработки данных включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, входных данных или предварительно обработанной версии входных данных). Другой вариант осуществления изобретения представляет собой предпроцессор (предназначенный для выполнения предварительной обработки аудиоданных, подлежащих кодированию кодером), где предпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, данных, которые являются входными в предпроцессор, или предварительно обработанной версии таких входных данных).

В другом классе вариантов осуществления изобретения изобретение представляет собой аудиодекодер, сконфигурированный для генерирования декодированных аудиоданных в ответ на кодированные аудиоданные. В некоторых вариантах осуществления изобретения в этом классе декодер включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации кодированных аудиоданных (например, для фильтрации предварительно обработанной версии кодированных аудиоданных). В другом классе вариантов осуществления изобретения изобретение представляет собой способ декодирования кодированных аудиоданных с целью генерирования декодированных аудиоданных. В некоторых таких вариантах осуществления изобретения декодирование включает выполнение какого-либо из вариантов осуществления способа согласно изобретению многокаскадной биквадратной фильтрации на кодированных аудиоданных (например, на предварительно обработанной версии кодированных аудиоданных). Например, один из вариантов осуществления изобретения представляет собой аудиодекодер, включающий каскад постобработки (предназначенный для постобработки декодированных аудиоданных, которые были декодированы декодером), где каскад постобработки включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, декодированных данных или обработанной версии декодированных данных). Другой вариант осуществления изобретения представляет собой постпроцессор (например, предназначенный для выполнения постобработки декодированных аудиоданных, которые были декодированы декодером), где постпроцессор включает по меньшей мере один многокаскадный фильтр (который представляет собой какой-либо из вариантов осуществления многокаскадного фильтра согласно изобретению), подключенный и сконфигурированный для фильтрации аудиоданных (например, декодированных данных, которые являются входными в постпроцессор, или обработанной версии таких входных данных).

В соответствии с типичными вариантами осуществления настоящего изобретения для выполнения многокаскадного фильтра с целью программирования процессора (например, процессора цифровой обработки сигналов или процессора общего назначения) используются команды SIMD (или команды для параллельной обработки данных несколькими блоками ALU или AMU). Многокаскадный фильтр может реализовывать полосовую фильтрацию, фильтрацию пропускания нижних частот (например, в подсистеме LFE аудиокодера), фильтрацию пропускания верхних частот (например, в подсистеме детектора кратковременных сигналов аудиокодера) или другую фильтрацию.

Другие особенности изобретения включают систему или устройство (например, кодер, декодер или процессор), сконфигурированные (например, запрограммированные) для выполнения какого-либо из вариантов осуществления способа согласно изобретению, и машиночитаемый носитель данных (например, диск), на котором хранится код, предназначенный для реализации какого-либо из вариантов осуществления способа согласно изобретению или его этапов. Например, система согласно изобретению может представлять собой или включать в себя программируемый процессор общего назначения, процессор цифровой обработки сигналов или микропроцессор, запрограммированные программным обеспечением или аппаратно-программным обеспечением и/или иначе сконфигурированные для выполнения какой-либо из множества операций на данных, включающих один из вариантов осуществления способа согласно изобретению или его этапов. Такой процессор общего назначения может представлять собой или включать в себя компьютерную систему, включающую устройство ввода, память и схему обработки данных, запрограммированную (и/или иначе сконфигурированную) для выполнения одного из вариантов осуществления способа согласно изобретению (или его этапов) в ответ на утвержденные в ней данные.

Некоторые варианты осуществления изобретения представляют собой кодеры (например, кодеры, которые кодируют аудиоданные в соответствии с форматом Dolby Digital Plus, AC-3 или Dolby E) или декодеры, реализованные как программируемые процессоры (например, процессоры ARM neon, каждый из которых представляет собой процессор ARM Cortex с механизмом Neon SIMD, допускающим параллельную обработку данных, или другие процессоры, содержащие блоки SIMD («один поток команд - много потоков данных») и/или несколько блоков ALU (арифметических логических блоков) или AMU (блоков арифметической обработки)) или программируемые (и/или иначе конфигурируемые) процессоры цифровой обработки сигналов (например, процессоры DSP, содержащие блоки SIMD и/или несколько блоков ALU или AMU).

КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ

Фиг. 1 - блок-схема традиционного биквадратного фильтра.

Фиг. 1А - блок-схема традиционного многокаскадного биквадратного фильтра.

Фиг. 2 - схема последовательности операций традиционного способа выполнения фильтрации в фильтре, реализованном как последовательно соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»).

Фиг. 3 - схема последовательности операций одного из вариантов осуществления способа согласно изобретению выполнения фильтрации в многокаскадном биквадратном фильтре, включающем соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»), которые действуют параллельно в ответ на единый поток команд.

Фиг. 4 - блок-схема многокаскадного фильтра (например, реализованного программируемым DSP или другим процессором в соответствии с одним из вариантов осуществления изобретения), который включает соединенные в каскад биквадратные фильтры и который может выполнять способ, относящийся к типу, описанному со ссылкой на фиг. 3. На фиг. 4 память 10 включает ячейки памяти, в которых хранится каждый блок входных данных x(n), и ячейки буферной памяти, в которых хранятся все необходимые значения из числа промежуточных значений x1(n),…, xN-1(n), сгенерированных биквадратными фильтрами.

Фиг. 5 - блок-схема системы, включающей кодер (включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению) и декодер (также включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению).

Фиг. 6 - схема последовательности операций другого варианта осуществления способа согласно изобретению выполнения фильтрации в многокаскадном биквадратном фильтре, включающем соединенные в каскад биквадратные фильтры («соединенные в каскад биквадратные звенья»), которые действуют параллельно в ответ на единый поток команд.

Фиг. 7 - схема последовательности операций одного из вариантов осуществления этапов 40, 41 и 42 варианта осуществления способа согласно изобретению по фиг. 6.

Фиг. 8 - схема последовательности операций одного из вариантов осуществления этапов 47, 48 и 49 варианта осуществления способа согласно изобретению по фиг. 6.

Фиг. 9 - схема значений, генерируемых в реализации системы по фиг. 4, где вычисления выполняются на месте.

Фиг. 10 - блок-схема системы, включающей кодер (включающий один из вариантов осуществления многокаскадного фильтра согласно изобретению) и декодер, который представляет собой один из вариантов осуществления согласно изобретению декодера.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

Варианты осуществления способа согласно изобретению и систем (например, кодеров и декодеров), сконфигурированных для реализации способа согласно изобретению, будут описаны со ссылкой на фиг. 3, 4, 5, 6, 7 и 8.

Сначала, со ссылкой на фиг. 2, описан традиционный способ фильтрации дискретных значений данных (например, блоков дискретных значений аудиоданных) многокаскадным фильтром, включающим каскад из М биквадратных фильтров (где М - число, которое ниже и на фиг. 2 именуется «nsections»). Одним из примеров такого традиционного многокаскадного биквадратного фильтра является фильтр по вышеописанной фиг. 1А.

В способе по фиг. 2 каждый новый блок из N дискретных значений, подлежащих фильтрации, первоначально буферизуется (на этапе 20). Каждое дискретное значение в блоке опознается по индексу j, где 0≤ j ≤N-1. Каждый каскад (звено) в многокаскадном фильтре опознается по индексу i, где 0≤i ≤M-1.

На этапе 21 индексу i присваивается нулевое начальное значение, и на этапе 22 индексу j присваивается нулевое начальное значение.

На этапе 23 «j»-е входное дискретное значение фильтруется в «i»-м биквадратном фильтре, а затем на этапе 24 индекс j приращивается. Этап 25 определяет, является ли приращенный индекс j (равный j+1) меньшим, чем N. Если на этапе 25 определено, что приращенный индекс j меньше, чем N, этап 23 выполняется снова с целью фильтрации следующего («(j+1)-го») дискретного значения в «i»-м биквадратном фильтре.

Если на этапе 25 определено, что приращенный индекс j равен N (так что все дискретные значения в текущем блоке были подвергнуты фильтрации в текущем биквадратном фильтре), то на этапе 26 приращивается индекс i.

Этап 27 определяет, является ли самый последний приращенный индекс i (равный i+1) меньшим, чем число «nsections» (которое равно М). Если на этапе 27 определено, что самый последний приращенный индекс i меньше М, то с целью фильтрации самого последнего блока промежуточных значений (выводов предыдущего («i»-го) биквадратного фильтра, сгенерированных в предыдущем биквадратном фильтре на предыдущем повторении этапов 22-25) выполняется следующее повторение этапов 22-26 в следующем («i+1»-м) биквадратном фильтре.

Если на этапе 27 определено, что самый последний приращенный индекс i равен М, т.е. обработка всех дискретных значений текущего блока во всех биквадратных фильтрах завершена, то выполняется этап 28. На этапе 28 выводится N подвергнутых фильтрации дискретных значений, сгенерированных путем фильтрации текущего блока входных дискретных значений в многокаскадном фильтре. В этот момент буферизуется (при выполнении этапа 20 заново) какой-либо дополнительный блок из N дискретных значений, подлежащих фильтрации, и способ по фиг. 2 повторяется для фильтрации этого нового блока дискретных значений в многокаскадном фильтре.

Для процесса по фиг. 2 в случае, когда М=2 (т.е. в случае, когда многокаскадный фильтр включает лишь два соединенных в каскад биквадратных фильтра), обработка данных, выполняемая в каждом каскаде многокаскадного фильтра, также описывается нижеследующим псевдокодом, в котором N равно количеству выходных дискретных значений, подлежащих генерированию путем фильтрации блока из N дискретных значений в многокаскадном фильтре:

для (i=0; i<2; i++)

{

для (j=0; j<N; j++)

{

Output[j]=функция(output[j-1], output[j-2], input [j], input[j-1], input[j-2]);

}

}

В ходе выполнения традиционного способа по фиг. 2, так как вывод каждого каскада многокаскадного фильтра для каждого дискретного значения (output[j]) зависит, в общем, от выводов каскада для двух предыдущих дискретных значений (output[j-1] и output[j-2]) и от текущего ввода в каскад («input[j]») и двух предыдущих вводов в каскад (input[j-1] и input[j-2]), операции цикла (этапы 23, 24 и 25 по фиг. 2), реализуемые в пределах каскада, не являются распараллеленными. Также, поскольку вывод первого каскада (i=0) является вводом во второй каскад (i=1), операции по этим каскадам при выполнении традиционного способа по фиг. 2 не являются распараллеленными. Это ведет к высоким требованиям к числу команд (иногда именуемому MIPS или миллионы команд в секунду) для многокаскадного фильтра даже тогда, когда он реализуется процессором, архитектура которого содержит несколько блоков ALU (или AMU) или блоки SIMD.

Далее, со ссылкой на фиг. 3, описан один из вариантов осуществления способа согласно изобретению для фильтрации блока дискретных значений данных (например, блока дискретных значений аудиоданных) многокаскадным фильтром, содержащим каскад из двух биквадратных фильтров. Сначала на этапе 30 каждый новый блок из N дискретных значений, подлежащих фильтрации, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы он был доступен для использования на следующих этапах (включая этапы 31, 33 и 34).

Каждое дискретное значение в блоке опознается по индексу j, где 0≤j≤N-1. Каждый каскад (звено) в многокаскадном фильтре опознается по индексу i, где 0≤i≤1.

На этапе 31 первое входное дискретное значение (j=0) фильтруется в первом (i=0) биквадратном фильтре. Значение, сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для последующего использования (например, при последующих выполнениях этапов 33 и/или 34).

На этапе 32 индекс j приравнивается 1

Затем параллельно выполняются этапы 33 и 34. На этапе 33 «j»-е входное дискретное значение фильтруется в первом (i=0) биквадратном фильтре, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах. На этапе 34 «j-1»-е входное дискретное значение во второй (i=1) биквадратный фильтр фильтруется, и по меньшей мере одно (например, каждое) значение («промежуточное» значение), сгенерированное на этом этапе, буферизуется (например, в памяти 10 по фиг. 4) так, чтобы оно было доступно для использования на следующих этапах.

Затем на этапе 35 индекс j приращивается. Этап 36 определяет, является ли приращенный индекс j (равный j+1) меньшим, чем N. Если на этапе 36 определено, что приращенный индекс j меньше N, то этапы 33 и 34 выполняются снова для фильтрации следующего входного дискретного значения в первый биквадратный фильтр (на этапе 33) и следующего входного дискретного значения - во второй биквадратный фильтр (этап 34). По меньшей мере одно (например, каждое) значение («промежуточное» зна