В HDL Workflow Advisor выберите вкладку MATLAB to HDL Workflow> Code Generation> Optimizations.
Выберите опцию Map persistent array variables to RAMs.
Установите RAM mapping threshold на размер (в битах) самого маленького персистентного массива, пользовательская Система object™ частная собственность или dsp.Delay то, что вы хотите сопоставить с RAM.

Следующая таблица показывает сводные данные поведения отображения RAM для персистентных массивов и частных свойств пользовательского Системного объекта.
| Сопоставьте персистентные переменные типа массив с установкой RAM | Отображение поведения |
|---|---|
on | Сопоставьте с RAM. Для ограничений смотрите, что RAM Сопоставляет Ограничения. |
off | Сопоставьте с регистрами в сгенерированном HDL-коде. |
Когда вы включаете отображение RAM, персистентный массив или пользовательская частная собственность Системного объекта сопоставляют с блоком RAM, когда все следующие условия верны:
Каждый доступ для чтения или доступ для записи для одного элемента только. Например, доступ к субматрице и копии массивов не позволены.
Логика расчета адреса не зависима чтением. Например, расчет чтения или адреса записи с помощью данных, считанных из массива, не позволен.
Персистентные переменные или пользовательские частные свойства Системного объекта инициализируются к 0, если у них есть циклическая зависимость. Например, если у вас есть две персистентных переменные, A и B, у вас есть циклическая зависимость, если A зависит от B, и B зависит от A.
Если доступ в условном операторе, условный оператор использует только простые логические выражения (&&, ||, ~) или операторы отношения. Например, в следующем коде, r1 не сопоставляет с RAM:
if (mod(i,2) > 0)
a = r1(u);
else
r1(i) = u;
end Перепишите комплексные условия, такие как условия, которые вызывают функции путем присвоения их временным переменным и использования временных переменных в условном операторе. Например, чтобы сопоставить r1 к RAM перепишите предыдущий код можно следующим образом:
temp = mod(i,2);
if (temp > 0)
a = r1(u);
else
r1(i) = u;
end Персистентный массив или пользовательское значение частной собственности Системного объекта зависят от внешних входных параметров.
Например, в следующем коде, bigarray не сопоставляет с RAM, потому что он не зависит от u:
function z = foo(u)
persistent cnt bigarray
if isempty(cnt)
cnt = fi(0,1,16,10,hdlfimath);
bigarray = uint8(zeros(1024,1));
end
z = u + cnt;
idx = uint8(cnt);
temp = bigarray(idx+1);
cnt(:) = cnt + fi(1,1,16,0,hdlfimath) + temp;
bigarray(idx+1) = idx; RAMSize больше или равен RAMMappingThreshold значение. RAMSize продукт NumElements * WordLength * Complexity.
NumElements число элементов в массиве.
WordLength количество битов, которые представляют тип данных массива.
Complexity 2 для массивов с комплексным базовым типом; 1 в противном случае.
Если какое-либо из вышеупомянутых условий является ложным, персистентный массив или пользовательская частная собственность Системного объекта сопоставляют с регистром в HDL-коде.
dsp.Delay System ObjectsСводные данные поведения отображения для dsp.Delay Системный объект находится в следующей таблице.
| Сопоставьте персистентные переменные типа массив с опцией RAM | Отображение поведения |
|---|---|
on |
Если какое-либо из условий является ложным, |
off |
|