coder.hdl.loopspec

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

Синтаксис

coder.hdl.loopspec('unroll')
coder.hdl.loopspec('unroll',unroll_factor)
coder.hdl.loopspec('stream')
coder.hdl.loopspec('stream',stream_factor)

Описание

пример

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