Найти тему

КИХ-фильтр на ПЛИС

Оглавление

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

Каноническая форма фильтра

Всем привычная форма КИХ фильтра это сдвиговый регистр, где где каждый элемент в его памяти (delay) умножается на свой коэффициент (coef) и все эти произведения складываются на сумматорах. Иногда рисуют один многовходовый сумматор, но при реализации на ПЛИС такой сумматор раскладывается на несколько по причине того, что обыкновенный всем известный сумматор это модуль с двумя входами-слагаемыми.

Каноническая форма КИХ фильтра
Каноническая форма КИХ фильтра

Пишем код

Традиционно сначала описываем основные параметры устройства. Это ширина шины данных WIDTH и количество коэффициентов в импульсной характеристики фильтра SIZE. Входами и выходами фильтра являются тактовый сигнал clk, шина на входе х и шина на выходе y.

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

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

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

Это особенные умножители для чисел с фиксированной точкой и для большего понимания лучше посмотреть ранние материалы по ссылкам в описании.

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

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

КИХ-фильтр, реализованный на ПЛИС
КИХ-фильтр, реализованный на ПЛИС

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

Моделирование этого великолепного устройства и тестирование его работы на реальном железе оставим на потом. На этот раз уже достаточно информации.

Поддержите статью лайком если понравилось и подпишитесь чтобы ничего не пропускать.

Также не обойдите вниманием канал на YouTube. Подписки и лайки будут приятным ответом от аудитории.

Наука
7 млн интересуются