В этом примере показано, как анализировать и сравнивать различные реализации алгоритма Simulink ® на основе количества арифметических операций. Использовать блок SoCsocModelAnalyzer создание отчетов, отображающих количество операторов для различных реализаций фильтра FIR с использованием статического и исполняемого выполнения.
Эта задача конструирования оценивает две реализации фильтра FIR и сравнивает затраты на реализацию. В этом примере в качестве способа измерения затрат на внедрение используется количество операторов.
Для удовлетворения системных требований, таких как скорость, задержка и аппаратные ресурсы, рассмотрите и сравните несколько реализаций алгоритма. Количество арифметических операторов, используемых в реализации, может помочь определить использование и распределение ресурсов.
Ручной анализ и расчет количества арифметических операторов может быть утомительным, подверженным ошибкам и длительным. Вычисления вручную могут быть неточными для алгоритма, включающего структуру ветви, цикла или рекурсии, и могут быть невозможны для вычисления, если путь выполнения зависит от входных данных или случайных факторов (например, алгоритм сходимости).
soc_analyze_FIR_tb модель реализует низкочастотный цифровой фильтр FIR двумя способами. Подсистема Symmetric_FIR использует симметрию в коэффициентах для оптимизации ресурсов. Подсистема Transposed_FIR использует фильтрующую структуру, ориентированную на более высокую скорость работы. Модель использует входной сигнал частотной частоты в качестве входного стимула и блок FIR_ref (дискретный КИХ-фильтр) в качестве эталона для проверки числовой правильности реализаций.
Откройте окно soc_analyze_FIR_tb модель в Simulink и изучить структуру модели.
open_system('soc_analyze_FIR_tb');

Для проектирования фильтра ПИХ нижних частот мы используем filterDesigner (DSP System Toolbox) приложение для генерации коэффициентов для фильтра FIR 8-го порядка. КИХ-фильтр имеет частоту отсечки 0,25 (нормализованную) и пульсацию полосы пропускания и затухание полосы останова 1 дБ и 60 дБ соответственно. Модель устанавливает эти коэффициенты с помощью обратного вызова инициализации модели.
Моделирование модели для проверки функциональности обеих реализаций по ссылочному блоку FIR. Ответы реализаций фильтра соответствуют ссылке.
sim('soc_analyze_FIR_tb');


Используйте socModelAnalyzer создание отчетов о количестве арифметических операторов в каждой реализации и сравнение реализаций. Отчеты создаются с использованием выполнения модели во время выполнения.
Симметричный фильтр FIR:
Чтобы оценить количество операторов для реализации симметричного фильтра FIR, используйте socModelAnalyzer функция. Укажите имя подсистемы для IncludeBlockPath аргумент пары имя-значение функции. Задайте папку вывода для указания места создания отчетов. Введите эту команду в командной строке MATLAB.
socModelAnalyzer('soc_analyze_FIR_tb.slx','Folder','report_sym','IncludeBlockPath',... 'soc_analyze_FIR_tb/Symmetric_FIR');
Generating operators analysis report for /tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/soc_analyze_FIR_tb.slx ...
Saving report files in /tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/report_sym.
Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('/tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/report_sym/soc_analyze_FIR_tb.mat')">Open report viewer</a>
Done.

Откройте отчет, щелкнув ссылку Открыть средство просмотра отчетов на консоли MATLAB. Кроме того, можно использовать функция. Отчет содержит два представления. Первое представление представляет собой представление оператора, которое представляет данные таким образом, что каждая строка соответствует оператору. Для использования этого представления щелкните «Представление оператора» на панели инструментов отчета. Второй вид - это вид модели, где каждая строка соответствует пути подсистемы Simulink. Чтобы использовать этот вид, щелкните Вид модели (Model View) на панели инструментов отчета. Отчеты также сохраняются в socAlgorithmAnalyzerReportreport_sym папка как MAT-файл (soc_analyze_FIR_tb.matи файл Excel ® (soc_analyze_FIR_tb.xlsx).
По умолчанию отчет открывается с представлением оператора. Средство просмотра открывает статистическое представление каждого оператора и типа данных. Например, симметричный фильтр FIR содержит в общей сложности 8 ADD(+) операторы типа данных double и 5 MUL(*) операторы типа данных double выполнено 10 001 раз каждый. (Продолжительность моделирования модели составляет 10 с, а базовая скорость составляет 10 мс. Это дает 10 000 циклов моделирования плюс 1 для инициализации.) Чтобы получить подробный отчет для каждого оператора, разверните этот оператор. Отчет показывает количество операторов, используемых в различных блоках. Выполните трассировку оператора, щелкнув по одной из ссылок в последнем столбце отчета, чтобы выделить местоположение оператора в soc_analyze_FIR_tb модель.

Транспонированный фильтр FIR
Чтобы оценить количество операторов для реализации фильтра Transposed FIR, используйте socModelAnalyzer функция. Определить 'soc_analyze_FIR_tb/Transposed_FIR' для 'IncludeBlockPath' аргумент пары имя-значение функции. Установите папку вывода для созданных отчетов в значение report_trans. Введите эту команду в командной строке MATLAB.
socModelAnalyzer('soc_analyze_FIR_tb.slx','Folder','report_trans','IncludeBlockPath',... 'soc_analyze_FIR_tb/Transposed_FIR');
Generating operators analysis report for /tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/soc_analyze_FIR_tb.slx ...
Saving report files in /tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/report_trans.
Operator estimate: <a href="matlab: socAlgorithmAnalyzerReport('/tmp/BR2021ad_1584584_202060/publish_examples0/tpe5d849aa/ex82446029/report_trans/soc_analyze_FIR_tb.mat')">Open report viewer</a>
Done.

Откройте отчет для фильтра Transposed FIR, щелкнув ссылку Открыть средство просмотра отчетов на консоли MATLAB.

Для фильтра Transposed FIR отчет показывает предполагаемое количество 8 добавлений типа данных double и 9 умножений типа данных double (каждый оператор выполнил 10 001 раз).
Сравнение симметричных и транспонированных реализаций
Сравните симметричные и транспонированные отчеты фильтра FIR, созданные с помощью socModelAnalyzer функция. Симметричный КИХ-фильтр использует меньше операторов умножения (9), чем транспонированный КИХ-фильтр (5). Они оба используют одинаковое количество операторов добавления (8).
Вы использовали socModelAnalyzer функция для оценки и анализа количества арифметических операторов в двух реализациях фильтра FIR. Создавались отчеты операторов как для симметричных, так и для транспонированных КИХ-фильтров. Сравнивалось количество операторов умножения и сложения для двух реализаций.
Вы можете использовать socModelAnalyzer функция для анализа количества операторов в алгоритме Simulink.