Мы уже столкнулись с блоками дискретного времени. Блок является дискретным, если он активизирован событиями и таким образом генерирует кусочно-постоянный сигнал. Активизирующие события не обязательно должны быть периодичными. Схема может быть сформирована и исключительно на дискретных блоках.
Рассмотрим пример.
Здесь 1/z (дискретная задержка) – регистр сдвига. Каждый раз, получая сигнал активации, он отображает свое внутреннее состояние на выходе и изменяет свое внутреннее состояние в соответствии с входным сигналом. Вышеприведенная схема является счетчиком. По каждому сигналу часов состояние увеличивается на единицу. В этом случае естественно, что Scope отображает сигнал в виде точек, а не линии. Это может быть сделано посредством изменения параметров Scope.
Результат счета для периода часов активации две секунды показан на рисунке.
Отметим, что блоки этой схемы активизируются только во время события за исключением блока константы, который активизирован постоянно. Блок не активируется сигналом активизации, но наследует время активизации от входных сигналов.
В общем случае, блок без входных портов активации – или активен всегда или наследует время активации от входных сигналов. В этом последнем случае, время активизации является объединением времени активизации входных сигналов.
Блоки с изменяющимся во времени выходным сигналом (например, generator sinusoid), даже если у них есть входы, не наследуют время активации; они просто активны всегда.
Создадим новую схему.
Блок Scope может наследовать время активации. Входной порт активизации этого блока поэтому может быть удален установкой соответствующего блочного параметра. Результат счета в этом случае идентичен предшествующему.
Создадим новую схему. Для того, чтобы увидеть механизм наследования в действии, в схему введены два независимых источника событий. Период обоих часов равен 2 с, но начальное время вторых часов установлено 0.3 с (первых – 0 с). Таким образом, в схеме имеются два независимых генератора событий.
В этом случае, нет риска возникновения неопределенности, поскольку два независимых события никогда не происходят в одно и то же время. Это обусловлено таким выбором параметров часов. При другом выборе может возникнуть неопределенность. Поэтому этот тип схем применять не следует. Аналогичный результат может быть получен иначе, как это показано ниже.
Запустим модель. Отметим, что время активации Scope является совмещением времени активации двух регистров. Scope активизируется в моменты 2n и 2n+0.3 секунд, n = 0,1,2...
Рассмотрим еще несколько простых схем. Как было сказано выше, если каждый блок активизируется собственным генератором событий, например, так как это показано на следующей схеме, то блоки не синхронны, даже если оба генератора событий настроены одинаково.
Результат моделирования для этой блок-схемы в Scicos не предсказуем. Эта же схема при использовании SampleCLK выглядит так:
В этом случае, компилятор Scicos начинает выполнять необходимые преобразования на блоках SampleCLK так, чтобы найти самые медленные часы, которые с учетом поддискретизации могут заменить активизацию этих блоков.
В схеме, показанной на рисунке, вычисления тривиальны, поскольку оба блока имеют идентичные периоды. Эквивалентная схема будет такая:
В Scicos блок 1/z, подобно любому другому блоку, может работать без входного порта активизации, наследуя ее со своего основного входа. Например, так:
Следующая блок-схема является обобщением этого принципа:
Непрерывная часть не наследует никакой активации, поскольку она и так всегда активна. Кроме того, следует отметить, что D/A блок здесь не нужен так как выход дискретной части и без этого хранит выходную величину до следующей активации. Здесь такой блок использован, чтобы ясно указать точку активации.