- •(В переводе Усенкова в.Н.)
- •Сравнение цифровых и аналоговых фильтров
- •Базисные понятия цифровой фильтрации
- •Типы цифровых фильтров
- •Исходные данные и компромиссы
- •Проектирование ких фильтров методом окна
- •Проектирование фильтров методом обмена Ремеза
- •Детализация аппаратной части фильтра
- •Учет ошибок округления
- •Компьютерное моделирование
Детализация аппаратной части фильтра
Первый шаг детализации касается преобразования коэффициентов фильтра в 16-разрядный код с фиксированной точкой, или набор кодов чисел с плавающей точкой. В арифметике с фиксированной точкой можно легко перемножать коэффициенты до 2^15.
Далее необходимо обеспечить надлежащее округление до младшего значащего разряда. Нельзя просто отбрасывать составляющую после десятичной точки, поскольку это влияет на точность коэффициентов, в то время как правильное округление приближает результат к теоретически достижимым уровням точности. Округленные коэффициенты заносятся в ПЗУ.
Далее следует решить, будет ли применяться стандартный микропроцессор или специализированная высокоскоростная микросхема перемножителя. Для определения требуемой производительности вычислителя, помножим частоту выборки на число коэффициентов.
В нашем случае частота выборок равна 50 kHz и фильтр с 27 узлами требует (50kHz x 27) = 1,35 миллиона 16-разрябных операций типа умножение-сложение в секунду, или 740 nS для каждой такой операции. Немногие микропроцессоры способны обеспечить такие требования. Например, микропроцессор Motorola 68000 с частотой тактирования 12,5 MHz выполняет 16-разрядное умножение за 5,6 uS. Микросхема перемножитель-накопитель (multiplier/accumulator , MAC) ADSP-1010 способна выполнить требуемую операцию всего лишь за 165 nS, имея при этом малую стоимость и низкое потребление.
ДЛя нормального функционирования устройства, цепи управления выборкой данных из памяти (ПЗУ и ОЗУ) должны соответствовать по быстродействию. Можно применить метод указателей в стеке, как показано на рис.9. Указатель 2 обеспечивает сохранение очередной порции данных в ОЗУ. Для каждой новой выборки система обеспечивает инкремент указателей 1 и 3 следующим образом:
После обработки каждой выборки указатели 2 и 3 инкрементируются. Указатили сбрасываются при достижении конца стека, как показано на рис. 9b.
Далее, решаем как обрабатывать переполнение аккумулятора. После операции умножения-сложения результат может выйти за пределы 32 разрядов. Для обработки переполнения сначала оценим разумную границу числа переполнений. Этого можно добиться суммированием квадратов коэффициентов. Результат сравниваем с возможностями аккумулятора.
Обрабатывать переполнения можно несколькими способами. Микросхема ADSP-1010 предоставляет 3 дополнительных бита в аккумуляторе дополнительно к тем 32, которые достаточны для одиночной операции. Этого достаточно для большинства случаев.
Другой метод – уменьшение разрядности коэффициентов, в пределах 1-5 битов, с некоторой потерей точности. Уменьшаем разрядность путем деления на 2 и повторяем ранее приведенный оценочный расчет. Это действие повторяем до достижения приемлемого результата.
И наконец, для некоторых случаев можно не использовать полный динамический диапазон входного сигнала. Поэтому просто считаем, что аккумулятор сам определит возможности системы по переполнению.
Может случиться так, что в вашем случае даже самая скоростная микросхема MAC не способна справиться с задачей. Тогда можно применить два или более параллельно работающих узлов перемножения-сложения для повышения производительности. На рис. 10 задействованы две микросхемы ADSP-1010, что уменьшает время выполнения операции до 75 nS, в то время как каждая микросхема выпонит задачу за 150 nS.
Рис. 9а
Рис. 9b.
Рис. 10. Удвоение производительности методом параллельной работы вычислителей.
