Сопоставить стойкие массивы и dsp. Задержка в ОЗУ

Как включить отображение ОЗУ

  1. В HDL Workflow Advisor выберите вкладку MATLAB to HDL Workflow > Code Generation > Optimizations.

  2. Выберите опцию Map persistent array variables to RAMs.

  3. Установите размер 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 dsp.Delay Системный объект преобразуется в блок RAM, когда все из следующих условий верны:

  • Length свойство больше 4.

  • InitialConditions свойство равно 0.

  • Задержка входа данных один из следующих:

    • Действительный скаляр с типом данных без плавающей точки.

    • Комплексный скаляр с вещественными и мнимыми частями, которые являются не с плавающей точкой.

    • Вектор, где каждый элемент является либо действительным скаляром с неявной точкой, либо комплексным скаляром.

  • RAMSize больше или равно RAM Mapping Threshold значению.

    • RAMSize является ли продукт Length * InputWordLength.

    • InputWordLength - количество бит, представляющих тип входных данных.

Если любое из условий ложно, dsp.Delay Системный объект преобразуется в регистры в HDL-коде.

прочь

A dsp.Delay Системный объект преобразуется в регистры в сгенерированном HDL-коде.