Генераторы цифровых сигналов
Приведем сначала пример файла цифровых сигналов:
- Заголовок:.содержит имена сигналов CLOCK, RESET, IN1, IN2; имена 4-х сигналов
*Начало описания сигналов; отделяется от заголовка пустой строкой:
0
0000
; двоичные коды сигналов
10ns
1100
20ns
0101
30ns
1110
40ns
0111
Заголовок имеет следующий формат:
[TIMESCALE
=
<значение>
]
<имя сигнала 1>
...
<имя сигнала п>
...
OCT(
<3-й бит сигнала>
...
<1-й бит сигнала>
)...
HEX(
<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
; для наглядности между группами можно включать пробелы
10n
1100
4E
0
20n
0101
4E
1
30n
1110
4E
1
40n
0111
FF
0
Здесь сначала приведены имена четырех двоичных сигналов, затем две группы сигналов, задаваемых в шестнадцатеричном виде, и затем еще один бинарный сигнал. В последующем списке значений сигналов даны 7 колонок, соответствующих приведенным в заголовке сигналам.
Список значений имеет формат:
<время>
<значение сигнала>
*
Список значений отделяется от заголовка пустой строкой. Моменты времени и список значений сигналов должны быть разделены по крайней мере одним пробелом. Для моментов времени изменений сигналов указываются их абсолютные значения (в секундах), например 25ns, 1.2E-9, 5.8 или приращение относительно предыдущего момента времени. Признак приращения – знак "+" перед значением момента времени, например +5ns. Каждое значение сигнала соответствует одиночному бинарному сигналу или группе сигналов, имена которых помещены в группы с указателями системы счисления ОСТ или HEX. Общее количество значащих цифр в значениях сигналов должно быть равно общему количеству бинарных сигналов и групп сигналов, помеченных символами ОСТ и HEX. Разряды данных сигнала могут принимать значения, приведенные в табл. 4.29.
Таблица 4.29. Значения сигналов.
Сигналы | Двоичные | Восьмеричные | Шестнадцатеричные |
---|---|---|---|
Логические /цифровые | 0, 1 | 0…7 | 0…F |
Неопределенные | X | X | X |
Высокого импеданса | Z | Z | Z |
Передний фронт | R | R | |
Задний фронт | F | F |
Заметим, что задний фронт не может в шестнадцатеричной системе обозначаться как F, потому что этот символ занят под численное значение. Приведем примеры генераторов цифровых сигналов типа FSTIM.
Пусть имеется файл digl.stm, в котором описана временная диаграмма сигнала IN1. Тогда в задание на моделирование можно включить следующее описание генератора:
U1 FSTIM(1) $G_DPWR $G_DGND IN1 IO_STM FILE
=
DIG1.STM
Пусть имеется файл flipflop.stm следующего содержания:
J K PRESET CLEAR CLOCK
0
0
0
010
10ns
0
0
111
В задание на моделирование включим описание генератора сигнала:
U2 FSTIM(
4
) $G_DPWR $G_DGND CLK PRE J K IO_STM
+
FILE
=
flipflop.stm SIGNAMES
=
CLOCK PRESET
В этом примере первым двум узлам CLK и PRE соответствуют сигналы CLOCK и PRESET из файла сигналов, это соответствие устанавливается с помощью опции SIGNAMES. Последним узлам J и К соответствуют одноименные сигналы из файла сигналов, поэтому их имена нет необходимости включать в опцию SIGNAMES. Сигнал CLEAR в данном примере не используется (но на него можно сослаться в другом генераторе FSTIM).