В этом примере показано, как реализовать 32-контактный lowpass конечная импульсная характеристика с использованием блока Discrete FIR Filter HDL Optimized.
Оба фильтрующих блока в модели примера реализуют идентичный частичный - последовательный 32-контактный фильтр. Верхний блок конфигурирует последовательный фильтр путем определения количества циклов, N, между входными выборками. Этот интервал позволяет каждому умножителю совместно использовать N коэффициентов. Второй блок сконфигурирован, чтобы использовать определенное количество умножителей, М. Эти два строений приводят к одной и той же реализации фильтра. Для 32 симметричных коэффициентов существует 16 уникальных коэффициентов. Поэтому фильтр разделяет каждый из 2 умножителей между 8 коэффициентами.
Модель показывает два способа применения входных выборок, в зависимости от скорости остальной части вашего проекта.
Откройте модель. Осмотрите верхние параметры блоков. Структура фильтра установлена в Partly serial systolic
и Задайте коэффициент сериализации как установлено в Minimum number of cycles between valid input samples
. Количество циклов устанавливается (равное 8) с помощью переменной, numCycles. В нижнем блоке Задайте коэффициент сериализации как установлено на Maximum number of multipliers
. Количество умножителей устанавливается (равным 2) с помощью переменной. Переменные определены в PostLoadFcn
функцию обратного вызова.
Из расцветки можно увидеть, что скорость обоих блоков фильтра одинаковая, в то время как скорость сгенерированных входных выборок отличается.
Запустите модель. Наблюдайте входные и выходные сигналы на сгенерированных графиках. Код для генерации графиков находится в PostSimFcn
коллбэк.
На панели инструментов модели откройте Logic Analyzer. Если кнопка не отображается, разверните коллекцию приложения Review Results.
Осмотрите восходящие ребра ready
, validIn
, и validOut
.
Чтобы сгенерировать HDL-код из блока Discrete FIR Filter HDL Optimized, щелкните правой кнопкой мыши блок и выберите Create Subsystem from Selection. Затем щелкните правой кнопкой мыши подсистему и выберите HDL-код > Сгенерировать HDL-код для подсистемы. Оба блока генерируют один и тот же HDL-код.