Сравнение реализаций конечной импульсной характеристики с использованием socModelAnalyzer

Этот пример показывает, как анализировать и сравнить различные реализации алгоритма Simulink ® на основе количества арифметических операций. Используйте SoC Blockset socModelAnalyzer функция для генерации отчетов, которые показывают количество операторов для различных реализаций конечной импульсной характеристики с использованием статического и выполнения.

Проект и требования

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

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

Ручной анализ и вычисление количества арифметических операторов могут быть утомительными, подверженными ошибкам и длительными. Ручные вычисления могут быть неточными для алгоритма с конструкцией ветви, цикла или рекурсии и могут быть невозможны, если путь выполнения зависит от входных данных или случайных факторов (для примера, алгоритма сходимости).

Структура модели

The soc_analyze_FIR_tb модель реализует цифровой конечная импульсная характеристика нижних частот двумя способами. Подсистема Symmetric_FIR использует симметрию в коэффициентах, чтобы оптимизировать ресурсы. Подсистема Transposed_FIR использует структуру фильтра, ориентированную на более высокую скорость операции. Модель использует щебет входного сигнала как стимул входа и FIR_ref (Дискретная конечная импульсная характеристика Фильтр) блок как ссылка для проверки численной правильности реализаций.

Откройте soc_analyze_FIR_tb моделируйте в Simulink и исследуйте структуру модели.

open_system('soc_analyze_FIR_tb');

Чтобы спроектировать фильтр конечной импульсной характеристики нижних частот, мы используем filterDesigner (DSP System Toolbox) приложение для генерации коэффициентов для конечная импульсная характеристика 8-го порядка. Конечная импульсная характеристика фильтр имеет частоту отключения 0,25 (нормированный) и неравномерность в полосе пропускания и стоповое ослабление 1 дБ и 60 дБ соответственно. Модель устанавливает эти коэффициенты через модель инициализировать коллбэк.

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

sim('soc_analyze_FIR_tb');

Сравнение реализаций с использованием анализатора модели

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

Симметричный конечная импульсная характеристика:

Чтобы оценить количество операторов для реализации Symmetric конечной импульсной характеристики, используйте 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.

Откройте отчет, щелкнув ссылку Open report viewer на консоли MATLAB. Также можно использовать socAlgorithmAnalyzerReport функция. В докладе приводятся два представления. Первое представление является представлением оператора, которое представляет данные так, что каждая строка соответствует оператору. Чтобы использовать это представление, щелкните Вид оператора (Operator View) на панели инструментов отчета. Второе представление является видом модели, где каждая строка соответствует пути подсистемы Simulink. Чтобы использовать это представление, щелкните Вид модели (Model View) на панели инструментов отчета. Отчеты также сохраняются в report_sym папка как MAT-файл (soc_analyze_FIR_tb.mat) и файл Excel ® (soc_analyze_FIR_tb.xlsx).

По умолчанию отчет открывается с ракурсом оператора. Средство просмотра открывает совокупное представление каждого оператора и типа данных. Например, фильтр Symmetric конечная импульсная характеристика содержит в общей сложности 8 ADD(+) операторы типа данных double и 5 MUL(*) операторы типа данных double выполнено 10 001 раз каждый. (Продолжительность симуляции модели составляет 10 с, а базовая скорость - 10 мс. Это приводит к 10 000 циклов симуляции плюс 1 для инициализации.) Чтобы получить подробный отчет для каждого оператора, разверните этот оператор. В отчете показано количество операторов, используемых в различных блоках. Проследите оператор, нажав на одну из ссылок в последнем столбце отчета, чтобы выделить местоположение оператора в soc_analyze_FIR_tb модель.

Транспонированный конечная импульсная характеристика

Чтобы оценить количество операторов для реализации Транспонированного конечная импульсная характеристика, используйте 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.

Откройте отчет для транспонированного конечная импульсная характеристика, щелкнув ссылку Open report viewer на консоли MATLAB.

Для Транспонированного конечная импульсная характеристика в отчете показано предполагаемое количество 8 сложений типа данных double и 9 умножений на типы данных double (каждый оператор выполнялся 10 001 раз).

Сравнение симметричных и транспонированных реализаций

Сравните симметричные и транспонированные отчеты конечной импульсной характеристики, сгенерированные при помощи socModelAnalyzer функция. Для симметричного конечная импульсная характеристика используется меньше операторов умножения (9), чем для транспонированного конечная импульсная характеристика (5). Они оба используют одинаковое количество операторов (8).

Заключение

Вы использовали socModelAnalyzer функция для оценки и анализа количества арифметических операторов в двух реализациях конечной импульсной характеристики. Отчеты оператора сгенерированы для фильтров Symmetric и конечной импульсной характеристики Transposed. Вы сравнили количество операторов умножения и добавления для двух реализаций.

Можно использовать socModelAnalyzer функция для анализа количества операторов в алгоритме Simulink.