exponenta event banner

Многоканальный фильтр FIR для FPGA

В этом примере показано, как реализовать дискретный фильтр FIR с несколькими входными потоками данных для аппаратных средств.

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

Многоканальный КИХ-фильтр модели

modelname = 'dspmultichannelhdl';
open_system(modelname);

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

Выберите полностью параллельную архитектуру для блока дискретного фильтра FIR и включите совместное использование ресурсов в нескольких каналах.

systemname = [modelname '/Multichannel FIR Filter'];
blockname = [systemname '/Discrete FIR Filter'];
set_param(blockname,'FilterStructure','Direct form symmetric');
hdlset_param(blockname,'Architecture','Fully Parallel');
hdlset_param(blockname,'ChannelSharing','On');

Эти параметры можно также задать в меню Свойства блока HDL (HDL Block Properties), доступ к которому можно получить, щелкнув блок правой кнопкой мыши и выбрав Код HDL (HDL Code) > Свойства блока HDL (HDL Block Properties).

Результаты моделирования

Запустите пример модели и откройте область для сравнения двух потоков данных.

sim(modelname);
open_system([modelname '/Scope']);

Создание кода HDL и испытательного стенда

Для создания кода HDL для этой модели необходимо иметь лицензию HDL Coder™. Эта команда используется для генерации кода HDL для подсистемы многоканального фильтра FIR. Включить отчет об использовании ресурсов.

makehdl(systemname,'resource','on');

Эта команда используется для создания тестового стенда, который сравнивает результаты моделирования ЛПВП с результатами модели Simulink.

makehdltb(systemname);

Сравнить использование ресурсов

Чтобы сравнить использование ресурсов с общим доступом и без него, можно отключить общий доступ к ресурсам по каналам и повторно создать код HDL, а затем сравнить отчеты об использовании ресурсов.

hdlset_param(blockname,'ChannelSharing','Off');
makehdl(systemname,'resource','on');