Программируемый КИХ-фильтр для FPGA

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

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

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

Программируемый КИХ-фильтр модели

Рассмотрите два КИХ-фильтра, один с ответом lowpass и другим с highpass ответом. Коэффициенты заданы при помощи Model Properties> Коллбэки> функция InitFcn.

Программируемый КИХ через блок Registers загружает коэффициенты lowpass от Поведенческой модели Хоста и обрабатывает входные выборки щебета сначала. Затем блок загружает highpass коэффициенты и обрабатывает те же выборки щебета снова.

Блок coeffs_registers загружает коэффициенты во внутренние регистры когда write_enable сигнал высок. Теневые регистры обновляются от содействующих регистров когда write_done сигнал высок. Теневые регистры включают одновременную загрузку и обработку данных сущностью фильтра. Блоки загружают второй набор коэффициентов в то же время, что и, обрабатывая последние несколько входных выборок.

Эта модель сконфигурирована, чтобы использовать полностью параллельную архитектуру для блока Discrete FIR Filter. Можно также выбрать последовательные архитектуры из меню HDL Block Properties.

Simulink® Simulation Results

Чтобы сравнить Проект под тестом (DUT) со ссылочным фильтром, откройте Осциллограф и запустите модель в качестве примера.

Используя Logic Analyzer

Можно также просмотреть сигналы в Logic Analyzer. Logic Analyzer позволяет вам просмотреть несколько сигналов в одном окне. Это также дает возможность определять переходы в сигналах.

Запустите Logic Analyzer от панели инструментов модели.

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

Отображением Logic Analyzer можно также управлять на базисе на делитель или на волну. Чтобы изменить отдельную волну или делитель, выберите волну или делитель и затем нажмите на вкладку "Wave". Полезный режим визуализации в Logic Analyzer является Аналоговым форматом.

Для получения дополнительной информации о Logic Analyzer обратитесь к документации Logic Analyzer.

Сгенерируйте HDL-код и испытательный стенд

У вас должна быть лицензия HDL Coder™, чтобы сгенерировать HDL-код для этой модели в качестве примера. Используйте эту команду, чтобы сгенерировать HDL-код.

systemname = [modelname '/Programmable FIR via Registers'];
makehdl(systemname);

Используйте эту команду, чтобы сгенерировать испытательный стенд, который сравнивает результаты симуляции HDL против поведения симуляции Simulink. makehdltb (systemname);

Результаты симуляции ModelSim™

Следующий рисунок показывает симулятор HDL ModelSim после выполнения сгенерированных .do скриптов файла для испытательного стенда. Сравните результат ModelSim с результатом Simulink, как построено прежде.