4.3.7.
Генераторы цифровых сигналов
Генераторы
цифровых сигналов можно задать двумя способами.
1. Определение
формы цифрового сигнала в задании на моделирование
по формату
(устройства
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
FILЕ=<имя
файла>
Каждая цифра
переменной
<данные>
представляет собой логический уровень соответствующего
выходного сигнала, который представлен в системе счисления
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 - повторение
п
раз.
ENDREPEAT
- - конец цикла REPEAT.
FILE - указание
имени файла, в котором находится описание одного или нескольких входных сигналов.
Приведем пример:
USIGNAL
STIM(2,11) $G_DPWR $G_DGND 1 2 IO_STM TIMESTEP=1ns
+ ОС 00 ;
В момент времени t=0 состояния обоих узлов равны «О»
+ LABEL=M
+ 1C 01 ;
При t=1 не состояние узла 1 равно «0», узла 2 - «1»
+ 2С 11 ;
При t=2 не состояние обоих узлов равны «1»
+ ЗС GOTO
M 3 TIMES; В момент времени t=3 не переход на метку М и выполняется
+ первая инструкция
без дополнительной задержки. Цикл повторяется 3 раза
2. Считывание
временной диаграммы цифрового сигнала из файла (устройства FSTIM).
Устройства
FSTIM задаются по формату:
Uxxx
FSTIM(<
количество
выходов>) <+узел источника питания>
+ <-узел
источника питания> <список узлов>*
+ <имя
модели вход/выход> FIL
Е=<имя
файла сигналов>
+
[IO_LEVEL=<ножер
макромодели интерфейса вход/выход>]
+
[SIGNАМЕS=<имя
воздействия>]
Параметр
<количество
выходов>
определяет количество узлов, к которым подключаются сигналы.
Остальные параметры имеют тот же смысл, что в п. 1. Обратим внимание, что задание
с помощью параметра FILE имени файла, в котором описаны сигналы, обязательно.
Файл цифрового
сигнала может быть получен путем редактирования файла результатов моделирования
или составлен вручную с помощью любого текстового редактора.
Файл цифрового
сигнала имеет две секции:
-
заголовок (header),
содержащий список имен сигналов;
-
список значений сигнала
(transitions), содержащий на одной или более строках моменты времени изменений
сигналов и колонки их значений.
Приведем сначала
пример файла цифровых сигналов:
-
Заголовок: содержит
имена сигналов CLOCK, RESET, IN1, IN2 ; имена 4-х сигналов
*Начало описания
сигналов; отделяется от заголовка пустой строкой
0 0000 ; двоичные
коды сигналов
10ns 1100
20ns 0101
30ns 1110
40ns 0111
Заголовок
имеет следующий формат:
Переменная
<имя метки>
используется при организации цикла с помощью оператора
перехода GOTO, который передает управление на строку, следующую за оператором
LAEEL=<uмя метки>.
REPEAT FOREVER
- начало бесконечно повторяющегося цикла (эквивалентно конструкции REPEAT -1
TIMES).
REPEAT
<n>
TIMES - повторение
п
раз.
ENDREPEAT
- конец цикла REPEAT.
FILE - указание
имени файла, в котором находится описание одного или нескольких входных сигналов.
Приведем пример:
USIGNAL STIM(2,11)
$G_DPWR $G_DGND 1 2 IO_STM TIMESTEP=1ns
+ ОС 00 ;
В момент времени t=0 состояния обоих узлов равны «О»
+ LABEL=M
+ 1C 01 ;
При t=1 не состояние узла 1 равно «О», узла 2 - «1»
+
2С
11 ; При t=2 не состояние обоих узлов равны «1»
+ ЗС GOTO
M 3 TIMES; В момент времени t=3 не переход на метку М и выполняется
+ первая инструкция
без дополнительной задержки. Цикл повторяется 3 раза
2. Считывание
временной диаграммы цифрового сигнала из файла (устройства FSTIM).
Устройства
FSTIM задаются по формату:
Uxxx
FSTIM(<
количество
выходов>) <+узел источника питания>
+ <-узел
источника питания> <список узлов>*
+ <имя
модели вход/выход> FILЕ=<имя файла сигналов>
+
[IO_LEVEL=<
номер
макромодели интерфейса вход/выход>]
+ [
SIGN
AMES
=<имя воздействия>]
Параметр
<количество
выходов>
определяет количество узлов, к которым подключаются сигналы.
Остальные параметры имеют тот же смысл, что в п. 1. Обратим внимание, что задание
с помощью параметра FILE имени файла, в котором описаны сигналы, обязательно.
Файл цифрового
сигнала может быть получен путем редактирования файла результатов моделирования
или составлен вручную с помощью любого текстового редактора.
Файл цифрового
сигнала имеет две секции:
-
заголовок (header),
содержащий список имен сигналов;
-
список значений сигнала
(transitions), содержащий на одной или более строках моменты времени изменений
сигналов и колонки их значений.
Приведем сначала
пример файла цифровых сигналов:
-
Заголовок: .содержит
имена сигналов
CLOCK, RESET, IN1, IN2 ; имена 4-х сигналов
*Начало описания
сигналов; отделяется от заголовка пустой строкой
0 0000 ; двоичные
коды сигналов
10ns 1100
20ns 0101
30ns 1110
40ns 0111
Заголовок
имеет следующий формат:
[ТIМЕSСАLЕ=<значение>]
<имя сигнала 1>...<имя сигнала п>... ОСТ(<3-й бит сигнала>...<1-й
бит сигнала>)... НЕХ(<4-й бит сигнала>...<1-й бит сигнала>}...
Имена сигналов
могут разделяться запятыми или пробелами. Они располагаются на одной или нескольких
строках, но строки продолжения не имеют в начале знака «+». Максимальное
количество сигналов 255, на одной строке могут размещаться не более 300 символов.
Имена сигналов перечисляются в том же порядке, в котором их значения приводятся
во временных диаграммах.
Если перед
именем сигнала не указывается название системы счисления, он считается двоичным.
Имена сигналов, записанных в восьмеричном коде, предваряются кодом ОСТ и группируются
по 3 сигнала (имена групп сигналов заключаются в круглые скобки). Имена шестнадцатеричных
сигналов имеют код HEX и группируются по 4 сигнала.
Приведем еще
один пример файла сигналов:
Clock Reset
In1 In2
HEX(Addr7
Addr6 Addr5 Addr4) HEX(Addr3 Addr2 Addrl Addr0)
ReadWrite
0 0000 00
0 ; для наглядности между группами можно включать пробелы
10п 1100 4Е
0
20п 0101 4Е
1
ЗОп 1110 4Е
1
40п 0111 FF
0
Здесь сначала
приведены имена четырех двоичных сигналов, затем две группы сигналов, задаваемых
в шестнадцатеричном виде, и затем еще один бинарный сигнал. В последующем списке
значений сигналов даны 7 колонок, соответствующих приведенным в заголовке сигналам.
Список
значений
имеет формат:
<время>
<значение сигнала>*
Список значений
отделяется от заголовка пустой строкой. Моменты времени и список значений сигналов
должны быть разделены по крайней мере одним пробелом. Для моментов времени изменений
сигналов указываются их абсолютные значения (в секундах), например 25ns, 1.2E-9,
5.8 или приращение относительно предыдущего момента времени. Признак приращения
- знак «+» перед значением момента времени, например +5ns. Каждое
значение сигнала соответствует одиночному бинарному сигналу или группе сигналов,
имена которых помещены в группы с указателями системы счисления ОСТ или HEX.
Общее количество значащих цифр в значениях сигналов должно быть равно общему
количеству бинарных сигналов и групп сигналов, помеченных символами ОСТ и HEX.
Разряды данных сигнала могут принимать значения, приведенные в табл. 4.29.
Таблица
4.29. Значения сигналов
Заметим, что
задний фронт не может в шестнадцатеричной системе обозначаться как F, потому
что этот символ занят под численное значение. Приведем примеры генераторов цифровых
сигналов типа FSTIM.
1.
Пусть
имеется файл digl .stm, в котором описана временная диаграмма сигнала IN1. Тогда
в задание на моделирование можно включить следующее описание генератора:
U1
FSTIM(1) $G_DPWR $G_DGND IN1 IO_STM FILE=DIG1.STM
2.
Пусть
имеется файл flipflop.stm следующего содержания:
J
К PRESET CLEAR CLOCK 0 0 0 010
10ns
0 0 111
В задание
на моделирование включим описание генератора сигнала
U2
FSTIM(4) $G_DPWR $G_DGND CLK PRE J К IO_STM + FILE=flipflop.stm SIGNAMES = CLOCK
PRESET
В этом примере
первым двум узлам CLK и PRE соответствуют сигналы CLOCK и PRESET из файла сигналов,
это соответствие устанавливается с помощью опции SIGNAMES. Последним узлам J
и К соответствуют одноименные сигналы из файла сигналов, поэтому их имена нет
необходимости включать в опцию SIGNAMES. Сигнал CLEAR в данном примере не используется
(но на него можно сослаться в другом генераторе FSTIM).