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.unroll прагма, эта прагма более приоритетна по сравнению с coder.hdl.loopspec. coder.hdl.loopspec не оказывает влияния.

пример

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

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

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

Примечание

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

пример

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

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

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

Примечание

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

Примеры

свернуть все

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

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