coder.hdl.loopspec

Разверните или потоковые циклы в сгенерированном HDL-коде

Описание

пример

coder.hdl.loopspec('unroll') полностью разворачивает цикл в сгенерированном HDL-коде. Вместо инструкции циклов сгенерированный код содержит несколько экземпляров тела цикла с одним экземпляром тела цикла на итерацию цикла.

coder.hdl.loopspec прагма не влияет на поведение симуляции MATLAB®.

Примечание

Если вы задаете coder.unroll прагма, эта прагма более приоритетна по сравнению с coder.hdl.loopspec. coder.hdl.loopspec не оказывает влияния.

пример

coder.hdl.loopspec('unroll',unroll_factor) разворачивает цикл заданным разворачивающим фактором, unroll_factor, в сгенерированном HDL-коде.

Сгенерированный HDL-код является инструкцией циклов, которая содержит unroll_factor экземпляры исходного тела цикла. Количество итераций цикла в сгенерированном коде (original_loop_iterations / unroll_factor). Если (original_loop_iterations / unroll_factor) имеет остаток, остающиеся итерации полностью развернуты как экземпляры тела цикла вне цикла.

Эта прагма не влияет на поведение симуляции MATLAB.

пример

coder.hdl.loopspec('stream') генерирует один экземпляр тела цикла в HDL-коде. Вместо того, чтобы использовать инструкцию циклов, сгенерированный код реализует локальную сверхдискретизацию и добавленную логику, чтобы совпадать с функциональностью исходного цикла.

Можно задать эту прагму циклы for в верхнем уровне проекта MATLAB.

Эта прагма не влияет на поведение симуляции MATLAB.

пример

coder.hdl.loopspec('stream',stream_factor) разворачивает цикл с unroll_factor установите на original_loop_iterations / stream_factor округленный в меньшую сторону до самого близкого целого числа, и также сверхдискретизировал цикл. Если (original_loop_iterations / stream_factor) имеет остаток, экземпляры тела цикла остатка вне цикла не сверхдискретизированы, и запуск на исходном уровне.

Можно задать эту прагму циклы for в верхнем уровне проекта MATLAB.

Эта прагма не влияет на поведение симуляции MATLAB.

Примеры

свернуть все

Разверните цикл в сгенерированном коде.

function y = hdltest
    pv = uint8(1);
    y = uint8(zeros(1,10));
  
    coder.hdl.loopspec('unroll');
    % Optional comment between pragma and loop statement
    for i = 1:10
        y(i) = pv + i;
    end
end

Сгенерируйте инструкцию циклов в HDL-коде, который имеет две итерации и содержит пять экземпляров исходного тела цикла.

function y = hdltest
    pv = uint8(1);
    y = uint8(zeros(1,10));
  
    coder.hdl.loopspec('unroll', 5);
    % Optional comment between pragma and loop statement
    for i = 1:10
        y(i) = pv + i;
    end
end

В сгенерированном коде реализуйте цикл MATLAB с 10 итерациями как один экземпляр исходного тела цикла, которое сверхдискретизировано фактором 10.

function y = hdltest
    pv = uint8(1);
    y = uint8(zeros(1,10));
  
    coder.hdl.loopspec('stream');
    % Optional comment between pragma and loop statement
    for i = 1:10
        y(i) = pv + i;
    end
end

В сгенерированном коде реализуйте цикл MATLAB с 10 итерациями как пять экземпляров исходного тела цикла, которые сверхдискретизированы фактором 2.

function y = hdltest
    pv = uint8(1);
    y = uint8(zeros(1,10));
  
    coder.hdl.loopspec('stream', 2);
    % Optional comment between pragma and loop statement
    for i = 1:10
        y(i) = pv + i;
    end
end

Входные параметры

свернуть все

Фактор потоковой передачи цикла в виде положительного целого числа.

Установка stream_factor к количеству исходных итераций цикла эквивалентно полностью потоковой передаче цикла или использованию coder.hdl.loopspec('stream').

Пример 4

Количество экземпляров тела цикла в виде положительного целого числа.

Установка unroll_factor к количеству исходных итераций цикла эквивалентно полностью разворачиванию цикла или использованию coder.hdl.loopspec('unroll').

Пример: 10

Смотрите также

Представленный в R2015a