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

Эту прагму можно задать для циклов на верхнем уровне проекта MATLAB.

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

пример

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

Эту прагму можно задать для циклов на верхнем уровне проекта 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

В сгенерированном коде реализуйте 10-итерационный цикл MATLAB как один образец исходного тела цикла, который переизбирается в 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

В сгенерированном коде реализуйте 10-итерационный цикл MATLAB как пять образцы исходного тела цикла, которые переизбираются в 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