Система схемотехнического моделирования и проектирования Design Center

       

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


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

1. Определение формы цифрового сигнала в задании на моделирование по формату  (устройства STIM)

Uxxx   STIM(<количество сигналов>,<формат>)

+ <+узел источника питания> <–узел источника питания>

+ <список узлов>*

+ <имя модели вход/выход>

+ [IO_LEVEL=<номер макромодели интерфейса вход/выход>]

+ [STIMULUS=<имя воздействия>]

+ [TIMESTEP=<шаг по времени>]

+ <команды описания формы сигнала>*

Переменная <количество сигналов> определяет количество выходов генератора, равное количеству генерируемых разных цифровых сигналов.

Переменная <формат> – это спецификация формата переменной <данные>, в котором представлены логические уровни сигналов генератора. Эта переменная представляет собой последовательность цифр, общее число которых равно значению переменной <количество сигналов>. Каждая цифра принимает значения 1, 3 или 4, что означает двоичную, восьмеричную и шестнадцатеричную систему счисления.

Подключение источника питания задается номерами узлов <+узел источника питания>, <–узел источника питания>.



Замечание. В PSpice 4 нельзя было создать несколько источников питания, поэтому номера узлов их подключения не указывались при описании генераторов цифровых сигналов и других цифровых  устройств. Начиная с версии Design Center 5.0 появилась такая возможность, в связи с этим был изменен формат описания цифровых компонентов – добавлены номера узлов подключения источников питания <+узел источника питания> <–узел источника питания>. Для  преобразования библиотек моделей цифровых компонентов PSpice 4 в новый формат предназначена специальная программа digconv.exe.

Номера подключения выходов генератора к схеме задаются <списком узлов>.

Имя модели вход/выход задается параметром <имя модели вход/выход>, как для любого цифрового устройства.


STIMULUS – необязательный параметр, обозначающий имя сигнала;

IO_LEVEL – необязательный параметр для выбора одной из четырех макромоделей интерфейса вход/выход (по умолчанию 0);

TIMESTEP – необязательный параметр для задания периода квантования (или шага). При задании моментов времени номером шага (имеют суффикс “С”) он умножается на величину шага. По умолчанию устанавливается TIMESTEP=0. Этот параметр не принимается во внимание, если заданы абсолютные значения моментов времени (имеют суффикс “S”).

Параметр <описание формы сигнала> представляет собой произвольную комбинацию одной или нескольких следующих строк:

<t>,<логический уровень>

LABEL=<имя метки>

<t> GOTO <имя метки> <n> 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=<имя файла>

Каждая цифра переменной <данные> представляет собой логический уровень соответствующего выходного сигнала, который представлен в системе счисления 2m, где m – соответствующая цифра переменной <формат>.

Количество узлов в <списке узлов> должно быть равно значению переменной <количество сигналов>.

Переменная <t> определяет моменты времени, в которые задаются логические уровни сигнала. Если перед значением переменной <t> имеется символ “+”, то эта переменная задает приращение относительно предыдущего момента времени; в противном случае она определяет абсолютное значение относительно начала отсчета времени t=0. Суффикс “S” указывает размерность времени в секундах (допускается суффикс “nS” – наносекунды и т. п.). Суффикс “С” означает измерение времени в количестве циклов, размер которых определяется параметром TIMESTEP (переменная <шаг по времени>).



Переменная <данные> состоит из символов “0”, “1”, “X”, “R”, “F” или “Z”, интерпретируемых в заданном формате.

Переменная <n> задает количество повторяющихся циклов GOTO; значение n=–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"

+ 3С   GOTO M 3 TIMES; В момент времени t=3 нс переход на

+              ; метку M  и выполняется первая инструкция без

+               ; дополнительной  задержки. Цикл повторяется 3 раза

2. Считывание  временной диаграммы цифрового сигнала из  файла (устройства FSTIM).  Устройства FSTIM задаются по формату:

Uxxx   FSTIM(<количество выходов>)

+ <+узел источника питания> <–узел источника питания>

+ <список узлов>*

+ <имя модели вход/выход>

+ FILE=<имя файла сигналов>

+ [IO_LEVEL=<номер макромодели интерфейса вход/выход>]

+ [STIMULUS=<имя воздействия>]

Параметр <количество выходов> определяет количество узлов, к которым подключаются сигналы. Остальные параметры имеют тот же смысл, что в п. 1. Обратим внимание, что задание с помощью параметра FILE имени файла, в котором описаны сигналы, обязательно.

Файл цифрового сигнала может быть получен путем редактирования файла результатов моделирования или составлен вручную с помощью любого текстового редактора.



Файл цифрового сигнала имеет две секции:

1) заголовок (header), содержащий список имен сигналов;

2) список значений сигнала (transitions), содержащий на одной или более строках моменты времени изменений сигналов и колонки их значений.

Приведем сначала пример файла цифровых сигналов:

* Заголовок:    содержит имена сигналов

CLOCK, RESET, IN1, IN2; имена 4-х сигналов

*Начало описания сигналов; отделяется от заголовка пустой строкой

0 0000 ; двоичные коды сигналов

10ns         1100

20ns         0101

30ns         1110

40ns         0111

Заголовок имеет следующий формат:

[TIMESCALE=<значение>]

<имя сигнала 1>...<имя сигнала n>...

OCT(<3-й бит сигнала>...<1-й бит сигнала>)...

HEX(<4-й бит сигнала>...<1-й бит сигнала>)...

Имена сигналов могут разделяться запятыми или пробелами. Они располагаются на одной или нескольких строках, но строки продолжения не имеют в начале знака “+”. Максимальное количество сигналов 255, на одной строке могут размещаться не более 300 символов. Имена сигналов перечисляются в том же порядке, в котором их значения приводятся во временных диаграммах.

Если перед именем сигнала не указывается название системы счисления, он считается двоичным. Имена сигналов, записанных в восьмеричном коде, предваряются кодом OCT и группируются по 3 сигнала (имена групп сигналов заключаются в круглые скобки). Шестнадцатеричные сигналы имеют код HEX и группируются по 4 сигнала.

Приведем еще один пример файла сигналов:

Clock Reset In1 In2

HEX(Addr7 Addr6 Addr5 Addr4)   HEX(Addr3 Addr2 Addr1 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. Каждое значение сигнала соответствует одиночному бинарному сигналу или группе сигналов, имена которых помещены в группы с указателями системы счисления OCT или HEX. Общее количество значащих цифр в значениях сигналов должно быть равно общему количеству бинарных сигналов и групп сигналов, помеченных символами OCT и HEX. Разряды данных сигнала могут принимать следующие значения:

Двоичные

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

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

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

0, 1

0...7

0...F

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

X

X

X

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

Z

Z

Z

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

R

R

R

Задний фронт

F

F

-

Заметим, что задний фронт не может в шестнадцатеричной системе обозначаться как F, потому что этот символ занят под численное значение.

Приведем примеры генераторов цифровых сигналов типа FSTIM.

1. Пусть имеется файл dig1.stm, в котором описана временная диаграмма сигнала IN1. Тогда в задание на моделирование можно включить следующее описание генератора:

U1  FSTIM(1)  $G_DPWR  $G_DGND

+  IN1  IO_STM  FILE=DIG1.STM

2.  Пусть имеется файл 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 и K  соответствуют одноименные сигналы из файла сигналов, поэтому их имена нет необходимости включать в опцию SIGNAMES. Сигнал  CLEAR в данном примере не используется (но на него можно сослаться в другом генераторе FSTIM).


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