Многоканальный конечная импульсная характеристика для ПЛИС

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

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

Модель многоканальной конечной импульсной характеристики

modelname = 'dspmultichannelhdl';
open_system(modelname);

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

Выберите полностью параллельную архитектуру для блока «Дискретный конечная импульсная характеристика» и включите совместное использование ресурсов по нескольким каналам.

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 Block Properties, доступ к которому можно получить, щелкнув правой кнопкой мыши блок и выбрав HDL-код > Свойства HDL-блока.

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

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

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

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

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

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

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

makehdltb(systemname);

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

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

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