В этом примере показано, как сопоставить постоянные массивы с ОЗУ с помощью 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')
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
свойство отключено, и генератор кода не выводит и не потребляет ресурсы ОЗУ.
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
который вы задаете. См. Раздел «Параметры отображения ОЗУ»
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
библиотека.