В этом примере показано, как сопоставить персистентные массивы с RAM при помощи MapPersistentVarsToRAM
параметр блочного уровня. Размер RAM должен быть больше или быть равен RAMMappingThreshold
. Отчет ресурса показывает различие в улучшениях области, следующих из отображения RAM.
Откройте модель 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. Включите генерацию отчета использования ресурса. Отчет отображает количество сумматоров, вычитающих устройств, множителей, регистров и RAM, которые использует проект.
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.The, проект использует 81
регистры и 648
1-битные регистры. По умолчанию, MapPersistentVarsToRAM
свойство отключено, и генератор кода не выводит или использует ресурсы RAM.
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')
В Отчете Генерации кода выберите раздел High-Level Resource Report. Проект использует один регистр, восемь 1-битных регистров и один RAM. Количество выведенных RAM зависит от RAMMappingThreshold
то, что вы задаете. Смотрите, что RAM сопоставляет порог (биты).
MATLAB Datapath
архитектура обрабатывает блок MATLAB function как регулярная Подсистема. Архитектура преобразует код MATLAB, который вы записали в представление потока данных в 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, откройте сгенерированную модель gm_hdlcoder_ram_mapping_matlab_function
и перейдите к HDL_DUT
Подсистема. Существует Line Buffer
Подсистема вместо блока MATLAB function. В блоке Subsystem представление потока данных, которое отображает выведенный блок RAM.
Чтобы узнать о шаблонах разработки, которые включают эффективное отображение RAM персистентных массивов в блоках MATLAB function, смотрите eml_hdl_design_patterns/RAMs
библиотека.