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

Следующая таблица показывает сводные данные поведения отображения ОЗУ для постоянных массивов и частной собственности пользовательского Системного объекта.
| Сопоставление переменных стойкого массива с настройкой ОЗУ | Поведение отображения |
|---|---|
на | Сопоставьте с ОЗУ. Ограничения см. в разделе Ограничения отображения ОЗУ. |
прочь | Сопоставьте с регистрами в сгенерированном HDL-коде. |
Когда вы активируете отображение ОЗУ, постоянный массив или определяемый пользователем Системный объект частной собственности преобразуется в блок ОЗУ, когда все следующие условия верны:
Каждый доступ для чтения или записи предназначен только для одного элемента. Для примера доступ к подматрице и копии массивов не разрешены.
Логика расчета адреса не зависит от чтения. Например, расчет адреса чтения или записи с использованием данных, считанных из массива, не разрешено.
Постоянные переменные или пользовательские частная собственность системного объекта инициализируются в 0, если они имеют циклическую зависимость. Например, если у вас есть две стойкие переменные, A и B, у вас есть циклическая зависимость, если A зависит от B, и B зависит от A.
Если доступ находится в пределах условного оператора, условный оператор использует только простые логические выражения (&&, ||, ~) или реляционные операторы. Например, в следующем коде r1 не сопоставляется с ОЗУ:
if (mod(i,2) > 0)
a = r1(u);
else
r1(i) = u;
end Перепишите сложные условия, такие как условия, которые вызывают функции, путем назначения их временным переменным и использования временных переменных в условном операторе. Например, чтобы сопоставить r1 в оперативную память перепишите предыдущий код следующим образом:
temp = mod(i,2);
if (temp > 0)
a = r1(u);
else
r1(i) = u;
end Значение частной собственности стойкого массива или пользовательского системного объекта зависит от внешних входов.
Например, в следующем коде bigarray не сопоставляется с ОЗУ, потому что не зависит от 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 | Поведение отображения |
|---|---|
на | A
Если любое из условий ложно, |
прочь | A |