d9e5a92d

Управляемая подсистема While Iterator Subsystem


Управляемая подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее не известно. Цикл прекращается, если значение логического сигнала на управляющем входе подсистемы станет равно FALSE. Основные свойства подсистемы задает итерационный блок While Iterator. Блок является аналогом оператора цикла while (do-while) языка программирования C.

Свойства While Iterator Subsystem определяются параметрами блока While Iterator. Его параметры перечислены ниже.

 

 

Параметры:

Maximum number of iterations – Максимальное количество итераций. Если значение параметра равно -1 (минус один), то количество итераций не ограничивается.

While loop type (флажок) – Тип цикла. Выбирается из списка:

while – Цикл while.

do-while – Цикл do-while.

States when starting – Состояние подсистемы системы при следующем запуске. Значение параметра выбирается из списка:

held – Использовать предыдущее состояние (последнее состояние когда система была активна).

reset – Использоватьначальное (исходное) состояние.

Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.

Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double. Входной порт IC позволяет задать начальное значение сигнала прекращающего выполнение цикла while. При использовании цикла do-while подсистема будет выполнена хотя бы один раз (поскольку проверка условия в этом случае производится в конце цикла).

 

На рисунке 9.9.10 показан пример использования While Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Выполнение цикла прекращается, когда величина суммы достигнет значения 100.

С-код, соответствующий алгоритму работы While Iterator Subsystem вприведенном примере выглядит следующим образом:

 

sum= 0; IC = 1; iteration_number = 0; cond = IC; while (cond != 0) { iteration_number = iteration_number + 1; sum = sum + sum_increment; if (sum > 100 OR iterations > max_iterations) cond = 0;

 

 




Содержание раздела