Генераторы цифровых сигналов
Генераторы цифровых сигналов можно задать двумя способами.
Определение формы цифрового сигнала в задании на моделирование по формату (устройства STIM):
Uxxx STIM(
<количество сигналов>
,
<формат>
)
+
<+узел источника питания>
<-узел источника питания>
+
<список узлов>
*
<имя модели вход/выход>
+
[IO_LEVEL
-
<номер макромодели интерфейса вход/выход>
]
+
[ STIMULUS
=
<имя воздействия>
] [TIMESTEP
=
<шаг по времени>
]
+
<команды описания формы сигнала>
*
Переменная <количество сигналов> определяет количество выходов генератора, равное количеству генерируемых разных цифровых сигналов.
Переменная <формат> – это спецификация формата переменной <данные>, в которой представлены логические уровни сигналов генератора. Эта переменная представляет собой последовательность цифр, общее число которых равно значению переменной <количество сигналов>. Каждая цифра принимает значения 1, 3 или 4, что означает двоичную, восьмеричную и шестнадцатеричную систему счисления.
Подключение источника питания задается номерами узлов <+ узел источника питания>, <-узел источника питания>.
Номера подключения выходов генератора к схеме задаются <списком узлов>.
Имя модели вход/выход задается параметром <имя модели вход/ выход>, как для любого цифрового устройства.
STIMULUS – необязательный параметр, обозначающий имя сигнала;
IO_LEVEL – необязательный параметр для выбора одной из четырех макромоделей интерфейса вход/выход (по умолчанию 0);
TIMESTEP – не обязательный параметр для задания периода квантования (или шага). При задании моментов времени номером шага (имеют суффикс "С") он умножается на величину шага. По умолчанию устанавливается TIMESTEP=0. Этот параметр не принимается во внимание, если заданы абсолютные значения моментов времени (имеют суффикс "S").
Параметр <описание формы – сигнала> представляет собой произвольную комбинацию одной или нескольких следующих строк:
<t>
,
<логический уровень>
LABEL
=
<UMH метки>
<t>
GOTO
<имя метки>
<п>
TIMES
<t>
GOTO
<имя метки>
UNTIL GT
<данные>
<t>
GOTO
<имя метки>
UNTIL GE
<данные>
<t>
GOTO
<имя метки>
UNTIL LT
<данные>
<t>
GOTO
<имя метки>
UNTIL LE
<данные>
<t>
INCR BY
<данные>
<t>
DECR BY
<данные>
REPEAT FOREVER
REPEAT
<n>
TIMES
ENDREPEAT
FILE
=
<имя файла>
Каждая цифра переменной <данные> представляет собой логический уровень соответствующего выходного сигнала, который представлен в системе счисления 2т, где т – соответствующая цифра переменной <формат>.
Количество узлов в <списке узлов> должно быть равно значению переменной <количество сигналов>.
Переменная <t> определяет моменты времени, в которые задаются логические уровни сигнала. Если перед значением переменной <t> имеется символ "+", то эта переменная задает приращение относительно предыдущего момента времени; в противном случае она определяет абсолютное значение относительно начала отсчета времени t = 0. Суффикс "S" указывает размерность времени в секундах (допускается суффикс "nS" – наносекунды и т.п.). Суффикс "С" означает измерение времени в количестве циклов, размер которых определяется параметром TIMESTEP (переменная <шаг по времени>).
Переменная <данные> состоит из символов "0", "1", "X", "R", "F" или "Z", интерпретируемых в заданном формате.
Переменная <п> задает количество повторяющихся циклов GOTO; значение п = -1 задает бесконечное повторение цикла.
Переменная <имя метки> используется при организации цикла с помощью оператора перехода GOTO, который передает управление на строку, следующую за оператором LABEL=<имя метки>.
REPEAT FOREVER – начало бесконечно повторяющегося цикла (эквивалентно конструкции REPEAT – 1 TIMES).
REPEAT <n> TIMES – повторение n раз.
ENDREPEAT – конец цикла REPEAT.
FILE – указание имени файла, в котором находится описание одного или нескольких входных сигналов.
Приведем пример:
USIGNAL STIM(
2.11
) $G_DPWR $G_DGND
1
2
IO_STM TIMESTEP
=
1ns
+
0C
00
; В момент времени t
=
0
состояния обоих узлов равны
"0"
+
LABEL
=
M
+
1C
01
; При t
=
1
не состояние узла
1
равно
"0"
, узла
2
-
"1"
+
2C
11
; При t
=
2
не состояние обоих узлов равны
"1"
+
3C
GOTO M
3
TIMES; В момент времени t
=
3
не переход на метку М и выполняется
+
первая инструкция без дополнительной задержки. Цикл повторяется
3
раза