Отображение оперативной памяти с блоком MATLAB function

В этом примере показано, как сопоставить постоянные массивы с ОЗУ с помощью 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 function.

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

Чтобы увидеть реализацию кода MATLAB ® линейного буфера, откройте блок MATLAB Function.

open_system('hdlcoder_ram_mapping_matlab_function/HDL_DUT/Line Buffer')

Сгенерируйте HDL-код

1. Включите генерацию отчета об использовании ресурсов. В отчете отображается количество сумматоров, вычитателей, умножителей, регистров и ОЗУ, которые потребляет проект.

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

2. Сгенерируйте HDL-код для HDL_DUT Подсистема.

makehdl('hdlcoder_ram_mapping_matlab_function/HDL_DUT')

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

Включите отображение ОЗУ и сгенерируйте HDL-код

1. Включите MapPersistentVarsToRAM HDL- параметра на блоке MATLAB Function.

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-битных регистров и одну ОЗУ. Количество выводимых ОЗУ зависит от RAMMappingThreshold который вы задаете. См. Раздел «Параметры отображения ОЗУ»

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

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

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

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 Function. Чтобы увидеть, как MATLAB Datapath архитектура изменяет код MATLAB на представление Simulink dataflow, открывая сгенерированную модель gm_hdlcoder_ram_mapping_matlab_function и перейдите к HDL_DUT Подсистема. Существует Line Buffer Подсистема вместо блока MATLAB Function. Внутри блока Subsystem находится представление dataflow, которое отображает вывод блока оперативной памяти.

Чтобы узнать о шаблонах проектирования, которые позволяют эффективно отображать ОЗУ постоянных массивов в блоках MATLAB Function, смотрите eml_hdl_design_patterns/RAMs библиотека.

Похожие темы