В помощнике по рабочим процессам HDL выберите MATLAB to HDL Workflow > Code Generation (Создание кода) > Optimizations (Оптимизации).
Выберите параметр Сопоставить переменные постоянного массива с RAM.
Установите пороговое значение отображения ОЗУ для размера (в битах) наименьшего постоянного массива, определяемого пользователем свойства System object™ private или dsp.Delay , что вы хотите сопоставить с оперативной памятью.

В следующей таблице представлена сводка поведения сопоставления ОЗУ для постоянных массивов и частных свойств определяемого пользователем объекта System.
| Сопоставление переменных постоянного массива с параметрами RAM | Поведение отображения |
|---|---|
на | Сопоставить с оперативной памятью. Ограничения см. в разделе Ограничения сопоставления ОЗУ. |
прочь | Сопоставить с регистрами в сгенерированном коде HDL. |
При включении сопоставления ОЗУ постоянный массив или пользовательское свойство private объекта System сопоставляется с блочной ОЗУ при выполнении всех следующих условий:
Каждый доступ для чтения или записи предназначен только для одного элемента. Например, не допускается доступ к подматрице и копирование массива.
Логика вычисления адреса не зависит от чтения. Например, вычисление адреса чтения или записи с использованием данных, считанных из массива, не допускается.
Постоянные переменные или пользовательские свойства private объекта System инициализируются как 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 Значение частного свойства постоянного массива или определяемого пользователем объекта System зависит от внешних входных данных.
Например, в следующем коде: 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 в противном случае.
Если какое-либо из вышеперечисленных условий имеет значение false, то постоянный массив или определяемое пользователем свойство private объекта System сопоставляется с регистром в коде HDL.
dsp.Delay Системные объектыСводка поведения сопоставления для dsp.Delay Системный объект находится в следующей таблице.
| Сопоставить переменные постоянного массива с параметрами RAMs | Поведение отображения |
|---|---|
на | A
Если какое-либо из условий имеет значение false, |
прочь | A |