Сопоставьте Персистентные Массивы и dsp. Задержитесь к RAM

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

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

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

  3. Установите RAM mapping threshold на размер (в битах) самого маленького персистентного массива, пользовательская Система object™ частная собственность или dsp.Delay, который вы хотите сопоставить с RAM.

Требования Отображения RAM для Персистентных Массивов и Свойств Системного объекта

Следующая таблица показывает сводные данные поведения отображения RAM для персистентных массивов и частных свойств пользовательского Системного объекта.

Сопоставьте персистентные переменные типа массив с установкой RAMОтображение поведения

на

Сопоставьте с RAM. Для ограничений смотрите, что RAM Сопоставляет Ограничения.

'off'

Сопоставьте с регистрами в сгенерированном HDL-коде.

Ограничения отображения RAM

Когда вы включаете отображение 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-коде.

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

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

Сопоставьте персистентные переменные типа массив с опцией RAMОтображение поведения

на

Системный объект dsp.Delay сопоставляет с блоком RAM, когда все следующие условия верны:

  • Свойство Length больше, чем 4.

  • Свойство InitialConditions 0.

  • Задержитесь тип входных данных является одним из следующего:

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

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

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

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

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

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

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

'off'

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