Иллюстрированный самоучитель по OrCAD

Генераторы цифровых сигналов


Генераторы цифровых сигналов можно задать двумя способами.

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. Значения сигналов


























Сигналы






Двоичные






Восьмеричные






Шестнадцатеричные








Логические /цифровые



0, 1



0...7



0...F







Неопределенные



X



X



X









































Сигналы






Двоичные






Восьмеричные






Шестнадцатеричные








Высокого импеданса



Z



Z



Z







Передний фронт



R



R



-







Задний фронт



F



F



-















Заметим, что задний фронт не может в шестнадцатеричной системе обозначаться как 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).

<


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