В этом примере показано, как реализовать 32-отводной фильтр нижних частот FIR с использованием блока оптимизации HDL дискретного фильтра FIR.
Оба блока фильтров в примерной модели реализуют идентичный частичный последовательный 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. Если кнопка не отображается, разверните галерею приложений Обзор результатов.

Осмотрите приподнятые края ready, validIn, и validOut.

Чтобы сгенерировать код HDL из блока Discrete FIR Filter HDL Optimized, щелкните блок правой кнопкой мыши и выберите Create Subsystem from Selection. Затем щелкните правой кнопкой мыши подсистему и выберите HDL Code > Generate HDL Code for Subsystem. Оба блока генерируют одинаковый код HDL.