Этот пример показывает, как сопоставить персистентные массивы с RAM с помощью параметра блочного уровня MapPersistentVarsToRAM
. Размер RAM должен быть больше, чем или равным RAMMappingThreshold
. Отчет ресурса показывает различие в улучшениях области, следующих из Отображения RAM.
В редакторе Simulink® создайте модель и откройте Браузер Библиотеки Simulink.
Добавьте блок Inport, блок MATLAB function и блок Outport к вашей модели, и назовите их как показано в фигуре.
Дважды кликните
блок MATLAB function Line Buffer
. В Редакторе MATLAB® скопируйте этот код MATLAB для функции line_buffer
.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Line buffer: Uses a presistent array to store the image %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y = line_buffer(u) persistent u_d ctr; if isempty(u_d) u_d = uint8(zeros(1,80)); % You can map this to RAM ctr = uint8(1); end y = u_d(ctr); u_d(ctr) = u; if ctr == uint8(80) ctr = uint8(1); else ctr = ctr + 1; end end
Чтобы использовать эту модель в качестве вашего проекта под тестом (DUT) для генерации HDL-кода, выберите все блоки и строки, и создайте подсистему. Сохраните свою модель как RAM_Mapping_Using_MATLAB_Function
. По умолчанию отображение RAM отключено, когда MapPersistentVarsToRAM установлен в off.
В Simulation> Model Configuration Parameters> панель HDL Code Generation, включите Generate resource utilization report и нажмите Apply.
Нажмите Generate, чтобы сгенерировать HDL-код.
В Отчете Генерации кода выберите High-level Resource Report.
Проект использует 81 регистр, 648 1-битных Регистров и никакую RAM.
Чтобы включить отображение RAM, щелкните правой кнопкой по блоку Line Buffer
, выберите HDL Code> HDL Block Properties и установите MapPersistentVarsToRAM на on. Нажмите OK.
В Simulation> Model Configuration Parameters> панель HDL Code Generation, нажмите Generate, чтобы сгенерировать HDL-код.
В Отчете Генерации кода выберите High-level Resource Report.
Проект теперь использует один регистр, восемь 1-битных регистров и один RAM.
Чтобы узнать о шаблонах разработки, которые включают эффективное отображение RAM персистентных массивов в блоках MATLAB function, смотрите библиотеку eml_hdl_design_patterns/RAMs
.