Добавить в цитаты Настройки чтения

Страница 249 из 436

Можно существенно улучшить эффективность простого КИХ-фильтра скользящего среднего, выбирая разные веса или значения коэффициентов вместо равных значений. Крутизна спада может быть увеличена добавлением большего количества звеньев в фильтр, а характеристики полосы затухания улучшаются выбором надлежащих коэффициентов фильтра. Обратите внимание, что, в отличие от фильтра скользящего среднего, для реализации каждой ступени обобщенного КИХ-фильтра требуется цикл умножения с накоплением. Сущность проектирования КИХ-фильтра сводится к выбору соответствующих коэффициентов и необходимого числа звеньев при формировании желаемой частотной характеристики фильтра H(f). Для включения необходимой частотной характеристики H(f) в набор КИХ-коэффициентов имеются различные алгоритмы и программные пакеты. Большинство этого программного обеспечения разработано для персональных компьютеров и доступно на рынке. Ключевой теоремой проектирования КИХ-фильтра является утверждение, что коэффициенты h(n) КИХ-фильтра являются просто квантованными значениями импульсной характеристики этого фильтра. Соответственно, импульсная характеристика является дискретным преобразованием Фурье от H(f).

Обобщенная форма КИХ-фильтра с числом звеньев N представлена на рис. 6.11. Как было сказано, КИХ-фильтр должен работать в соответствии с уравнением, задающим свертку:

где h(k) — массив коэффициентов фильтра и x(n-k) — входной массив данных фильтра. Число N в уравнении представляет собой число звеньев и определяет эффективность фильтра, как было сказано выше. КИХ-фильтр с числом звеньев N требует N циклов (операций) умножения с накоплением.

Согласно рис. 6.12, диаграммы КИХ-фильтров часто изображаются в упрощенном виде. Операции суммирования представляются стрелками, указывающими в точки, а операции умножения обозначают, помещая коэффициенты h(k) рядом со стрелками на линиях. Элемент задержки z-1 показывают, помещая его обозначение выше или рядом с соответствующей линией.

РЕАЛИЗАЦИЯ КИХ-ФИЛЬТРА НА ПРОЦЕССОРЕ DSP С ИСПОЛЬЗОВАНИЕМ ЦИКЛИЧЕСКИХ БУФЕРОВ

В рядах, задаваемых уравнениями КИХ-фильтров, предполагается последовательное обращение к N коэффициентам от h(0) до h(N-1). Соответствующие точки данных циркулируют в памяти. При этом добавляются новые отсчеты данных, заменяя самые старые, и каждый раз производится вычисление выходного значения фильтра. Для реализации циклического буфера может использоваться фиксированный объем оперативной памяти, как показано на рис. 6.13 для КИХ-фильтра с 4 звеньями. Самый старый отсчет данных заменяется новым после каждой операции вычисления свертки. Выборка из четырех последних отсчетов данных всегда сохраняется в оперативной памяти.

Чтобы упростить адресацию, чтение из памяти старых значений начинается с адреса, который следует непосредственно за адресом только что записанного нового элемента выборки. Например, если значение х(4) только что записано в ячейку памяти 0, то значения данных читаются из ячеек 1, 2, 3 и 0. Этот пример может быть расширен применительно к любому числу звеньев фильтра. Используя адресацию ячеек памяти таким способом, адресный генератор должен лишь вычислять последовательные адреса, независимо от того, является ли данная операция чтением памяти или записью. Такой буфер в памяти данных называется циклическим, потому что, когда достигается его последняя ячейка, указатель автоматически позиционируется на начало буфера.

Выборка коэффициентов из памяти осуществляется одновременно с выборкой данных. В соответствии с описанной схемой адресации, самый старый отсчет данных выбирается первым. Поэтому сначала должна осуществляться выборка из памяти последнего коэффициента. При использовании адресного генератора, поддерживающего инкрементную адресацию, коэффициенты могут быть сохранены в памяти в обратном порядке: h(N-1) помещается в первую ячейку, a h(0) — в последнюю. И наоборот, коэффициенты могут быть сохранены в порядке возрастания их номеров, если использовать адресный генератор, поддерживающий декрементную адресацию. В примере, показанном на рис. 6.13, коэффициенты сохранены в обратном порядке.





Простая итоговая блок-схема для этих операций представлена на рис. 6.14.

Для DSP-процессоров компании Analog Devices все операции, выполняемые за один цикл фильтра, производятся за один командный цикл процессора, благодаря чему существенно увеличивается эффективность вычислений. Данное преимущество известно как реализация циклов без дополнительных операций. Ассемблерный код КИХ-фильтра для семейства процессоров ЦОС ADSP-21XX с фиксированной точкой представлен на рис. 6.15. Стрелками в тексте помечены исполняемые команды, остальная часть кода — просто комментарии, добавленные для пояснения.

Первая команда (помеченная меткой fir:) инициирует вычисления, очищая регистр MR и заполняя регистры МХ0 и MY0 первым значением данных и первым значением коэффициентов из памяти программ и памяти данных. Затем, для вычисления суммы первых N-1 слагаемых, N-1 раз в N циклах выполняется операция умножения с накоплением, реализуя свертку выборки следующего набора данных и коэффициентов. Заключительная команда умножения с накоплением выполняется с включенным режимом округления для округления результата до старших 24 разрядов регистра MR. Затем регистр MR1 условно насыщается до своего наибольшего положительного или отрицательного значения, в зависимости от состояния флага переполнения в регистре MV. Благодаря такому подходу, при накоплении результата используются преимущества регистра MR 40-разрядной точности. Насыщение происходит только в том случае, если вычисление заключительного результата привело к переполнению 32 младших значащих разрядов регистра MR.

Ограничение на число звеньев фильтра, реализующего подпрограммы КИХ-фильтрации в реальном масштабе времени, определяется, прежде всего, длительностью процессорного цикла, частотой дискретизации и требуемым объемом других вычислений. Подпрограмма КИХ-фильтра, представленная в примере, требует общего количества циклов N+5 для фильтра с числом звеньев N. Для DSP-процессора ADSP-2189M, обладающего быстродействием 75 MIPS, один цикл команды выполняется за 13,3 не, так что фильтр с числом звеньев 100 требует 13,3 нс*100 + 5*13,3 нс = 1330 нс + 66,5 нс = 1396,5 нс = 1,4 мкс.

Проектирование КИХ-фильтров

Благодаря современным средствам САПР, проектирование КИХ-фильтров выполняется относительно просто. На рис. 6.16 представлены некоторые характеристики КИХ-фильтров и наиболее популярные методы их проектирования.

ХАРАКТЕРИСТИКИ КИХ-ФИЛЬТРОВ

• Импульсная характеристика имеет конечную длительность (N циклов)

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