Отображение RAM с блоком MATLAB function

В этом примере показано, как сопоставить персистентные массивы с 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')

Сгенерируйте 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™ отображает Отчет Генерации кода. В отчете выберите раздел High-Level Resource Report.The, проект использует 81 регистры и 648 1-битные регистры. По умолчанию, MapPersistentVarsToRAM свойство отключено, и генератор кода не выводит или использует ресурсы RAM.

Включите отображение RAM и сгенерируйте 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')

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

Отображение RAM с архитектурой MATLAB Datapath

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 библиотека.

Похожие темы