exponenta event banner

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

Как включить сопоставление ОЗУ

  1. В помощнике по рабочим процессам HDL выберите MATLAB to HDL Workflow > Code Generation (Создание кода) > Optimizations (Оптимизации).

  2. Выберите параметр Сопоставить переменные постоянного массива с RAM.

  3. Установите пороговое значение отображения ОЗУ для размера (в битах) наименьшего постоянного массива, определяемого пользователем свойства System object™ private или dsp.Delay , что вы хотите сопоставить с оперативной памятью.

Требования к сопоставлению RAM для постоянных массивов и свойств системных объектов

В следующей таблице представлена сводка поведения сопоставления ОЗУ для постоянных массивов и частных свойств определяемого пользователем объекта 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.

Требования к отображению RAM для dsp.Delay Системные объекты

Сводка поведения сопоставления для dsp.Delay Системный объект находится в следующей таблице.

Сопоставить переменные постоянного массива с параметрами RAMsПоведение отображения

на

A dsp.Delay Системный объект сопоставляется с блочной оперативной памятью при выполнении всех следующих условий:

  • Length значение свойства больше 4.

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

  • Тип входных данных задержки:

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

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

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

  • RAMSize больше или равно значению порога отображения ОЗУ.

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

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

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

прочь

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