Этот пример демонстрирует, как сгенерировать HDL-код для дискретного КИХ-фильтра с несколькими потоками входных данных.
Во многих приложениях DSP несколько потоков данных отфильтрованы тем же фильтром. Прямое решение состоит в том, чтобы реализовать отдельный фильтр для каждого канала. Если возможно, более эффективная областью структура может быть применена путем совместного использования одной реализации фильтра среди нескольких каналов. Получившееся оборудование требует более быстрых часов относительно частоты дискретизации для одного фильтра канала.
Введите следующие команды, чтобы открыть модель в качестве примера:
modelname = 'hdlcoder_dspmultichannel';
open_system(modelname);
Рассмотрите двухканальный КИХ-фильтр. Вектор входных данных включает два потока синусоидального сигнала с различными частотами. Потоки входных данных обрабатываются фильтром lowpass, коэффициенты которого заданы Функцией обратного вызова Model Properties InitFcn.
Введите следующие команды, чтобы задать полностью параллельную реализацию архитектуры к блоку Discrete FIR Filter:
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.
Введите следующую команду, чтобы запустить модель в качестве примера:
sim(modelname);
Введите следующую команду, чтобы открыть осциллограф:
open_system([modelname '/Scope']);
Сравните эти два потока выходных данных.
Введите следующую команду, чтобы закрыть осциллограф:
close_system([modelname '/Scope']);
Получите уникальное временное имя каталога для сгенерированных файлов: workingdir = tempname;
Можно ввести следующую команду, чтобы подтвердить установки параметров блока Multichannel FIR Filter:
checkhdl (systemname, 'TargetDirectory', workingdir);
Можно ввести следующие команды, чтобы сгенерировать HDL-код и испытательный стенд: makehdl (systemname, 'TargetDirectory', workingdir); makehdltb (systemname, 'TargetDirectory', workingdir);
Можно ввести следующую команду, чтобы показать отчет ресурса с каналом, совместно использующим:
makehdl (systemname, 'TargetDirectory', workingdir, 'ресурс', 'on');
Можно ввести следующую команду, чтобы показать отчет ресурса без канала, совместно использующего:
hdlset_param (имя блока, 'ChannelSharing', 'Off'); makehdl (systemname, 'TargetDirectory', workingdir, 'ресурс', 'on');
Вы видите различное использование ресурса путем сравнения двух отчетов:
Это заканчивает Сгенерировать HDL-код для Многоканального КИХ-примера Фильтра.