exponenta event banner

Отображение ОЗУ с функциональным блоком MATLAB

В этом примере показано, как сопоставить постоянные массивы с ОЗУ с помощью MapPersistentVarsToRAM параметр уровня блока. Размер ОЗУ должен быть больше или равен RAMMappingThreshold. Отчет о ресурсах показывает разницу в улучшениях области в результате сопоставления ОЗУ.

Модель буфера линий

Открытие модели hdlcoder_ram_mapping_matlab_function.

open_system('hdlcoder_ram_mapping_matlab_function')
set_param('hdlcoder_ram_mapping_matlab_function', 'SimulationCommand', 'Update')

Подсистема DUT в модели управляет Line Buffer Функциональный блок MATLAB.

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

Для просмотра реализации кода MATLAB ® буфера строк откройте функциональный блок MATLAB.

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT/Line Buffer')

Создание кода HDL

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

hdlset_param('hdlcoder_ram_mapping_matlab_function', 'resourcereport', 'on')

2. Создание кода HDL для HDL_DUT Подсистема.

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

HDL Coder™ отображает отчет о создании кода. В отчете выберите раздел Отчет о ресурсах высокого уровня. 81 регистры и 648 1-битные регистры. По умолчанию MapPersistentVarsToRAM свойство отключено, и генератор кода не выводит и не использует ресурсы ОЗУ.

Включение отображения ОЗУ и создание кода HDL

1. Включить MapPersistentVarsToRAM Параметр HDL в функциональном блоке MATLAB.

ml_subsys = 'hdlcoder_ram_mapping_matlab_function/HDL_DUT/Line Buffer';
hdlset_param(ml_subsys, 'MapPersistentVarsToRAM', 'on')

2. Создание кода HDL для HDL_DUT Подсистема.

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

В окне Отчет о создании кода выберите раздел Отчет о высокоуровневых ресурсах. Конструкция потребляет один регистр, восемь 1-разрядных регистров и один ОЗУ. Количество выводимых RAM зависит от RAMMappingThreshold , который вы указываете. См. раздел Параметры сопоставления ОЗУ.

Отображение оперативной памяти с архитектурой MATLAB Datapath

MATLAB Datapath архитектура рассматривает функциональный блок MATLAB как обычную подсистему. Архитектура преобразует код MATLAB, написанный пользователем, в представление потока данных в Simulink ®. Затем кодер HDL может более широко использовать оптимизации в функциональном блоке MATLAB с другими блоками Simulink в модели.

1. Включить MATLAB Datapath Архитектура HDL и затем установка MapPersistentVarsToRAM в функциональном блоке MATLAB.

hdlset_param(ml_subsys, 'Architecture', 'MATLAB Datapath')
hdlset_param(ml_subsys, 'MapPersistentVarsToRAM', 'on')

2. Создание кода HDL для HDL_DUT Подсистема.

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

Отчет о высокоуровневых ресурсах указывает, что конструкция потребляет то же количество ресурсов, что и конструкция, использующая архитектуру по умолчанию блока функции MATLAB. Посмотреть, как MATLAB Datapath архитектура изменяет код MATLAB на представление потока данных Simulink, открывает созданную модель gm_hdlcoder_ram_mapping_matlab_function и перейдите к HDL_DUT Подсистема. Существует Line Buffer Подсистема вместо функционального блока MATLAB. Внутри блока «Подсистема» находится представление потока данных, отображающее блок ОЗУ.

Сведения о шаблонах проектирования, обеспечивающих эффективное отображение RAM постоянных массивов в функциональных блоках MATLAB, см. в разделе eml_hdl_design_patterns/RAMs библиотека.

Связанные темы