Главная  Радио и связь 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [ 49 ] 50 51 52 53 54 55 56 57 58 59 60

Приведем пример описания логики функционирования арифметико-логического устройства 74181. Временные задержки будут заданы ниже с помощью примитивов PINDLY и CONSTRAINT:

U74181 L0GiCEXP(14, 8) DPWR DGND AOBAR

+A1BAR A2BAR A3BAR BOBAR B1BAR B2BAR

+ B3BAR SO SI S2 S3 M CN LFOBAR

+ LFI BAR LF3BAR LAEQUALB LBAR LOBAR LCN44

+ DO GATE IO STD

+ LOGIC:

*Промежуточные переменные

131 = { ~((B3BAR & S3 & A3BAR) (A3BAR & S2 & ~B3BAR))}

132 = { ~((~B3BAR & SI) I (SO & B3BAR) A3BAR)}

121 = { ~((B2BAR & S3 & A2BAR) (A2BAR & S2 & ~B2BAR))}

122 = { ~((~B2BAR & SI) I (SO & B2BAR) A2BAR) }

111 = { ~((B1 BAR & S3 & Al BAR) (Al BAR & S2 & ~B1 BAR))}

112 = { ~((~B1 BAR & SI) I (SO & Bl BAR) Al BAR)}

101 = { -((BOBAR & S3 & AOBAR) (AOBAR & S2 & -BOBAR))}

102 = { -((-BOBAR & SI) I (SO & BOBAR) AOBAR) } + MBAR= {-M} + P = {I31 &I21 &I11 &I01 }

* Выходные переменные

+ LF3BAR = { + -((121 & + MBAR) + LF2BAR = { + 1(111 & I + LF1BAR = { + LFOBAR = { + LOBAR = { & 102))}

+ LCN+4 = { -+ LPBAR = { -+ LAEQUALB

(131 & -132) л

11 & 101 & Cn & MBAR) I (121 & 111 & 102 &

1 ( 121 & 112 & MBAR) I (122 & MBAR))} (121 & -122) л -((111 & I 01 & Cn & MBAR)

02 & MBAR) I ( 112 & MBAR) I)} (I11 & -112) л ~((Cn & 101 & MBAR) I (102 & MBAR))} 101 & -102) л -(MBAR & Cn)}

~( 132 I (131 & 122) I (131 & 121 & 112) I (131 & 122 & I11

-LGBAR(P&Cn)} P}

= { LF3BAR & LF2BAR & LF1 BAR & LFOBAR }

6.5.2. Задание задержек распространения

Примитив PINDLY позволяет назначить задержки распространения сигналов сложным устройствам. Один единственный примитив

PINDLY позволяет моделировать временные соотношения и выходные характеристики целой интегральной схемы, имеющей в своем составе, в частности, тристабильные вентили. Кроме того, в описание примитива PINDLY допускается включить спецификации контроля длительностей импульсов SETUP, HOLD, WIDTH, FREQ и GENERAL, которые используются в примитиве CONSTRAINT (см. ниже). Примитив PINDLY задается по формату:

Uxxx PINDLY (<количество путей>,<количество входов раз-решения>

+ <количество дополнит. узлов>)

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

+ <входной узел 1> ... <входной узел п>

+ [<узел разрешения 1> .. . <узел разрешения п>]

+ [<внутренний узел 1> ... <внутренний узел п>]

+ <выхдной узел 1> ... <ба,хьдной узел п>

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

+ [ IO LEVEL=<ypoeeHb модели интерфейса>]

+ [ MNTYMXDLY=<выбop значения задержки>]

+ [ BOOLEAN: <булевское назначение>*]

+ PINDLY: <назначение задержек>*

+ [TRISTATE:

+ ENABLE LO HI <узел разрешения> <назначение задер-жек>*\

+ [ SETUP HOLD: спецификация времен установки/удержания>] + [ WIDTH: <спецификация ширины импульса>] + [ РВЕО:<спецификация частоты повторения>] + [ GENERAL: <о6ш,ая спецификация>] Здесь приняты следующие обозначения:

<количество путей> - количество путей распространения сигналов от входных к выходным узлам; при этом количество входов путей должно быть равно количеству выходов. С каждым путем вход - выход ассоциируется задержка, вычисляемая по определенным правилам;

<количество входов разрешения> - спецификация триста-бильных узлов, имеющихся в примитиве (может быть равным нулю). Тристабильные узлы используются в секциях TRISTATE;

<количество внутренних узлов> - внутренние узлы используются в выражениях, определяющих задержки, но они не входят в пути вход - выход (может быть равным нулю).

Проиллюстрируем взаимосвязь различных узлов на примере следующего примитива (рис. 6.13)



REF1

REF2 REF3

0UT1 0UT2

оитз

0UT4

Ul PINDLY(4, О, 3) $G DPWR $G DGND

+ IN1 IN2 IN3 IN4 REF1 REF2 REF3 0UT1 0UT2 0UT3 0UT4

+ lO.MODEL DO GATE . + PINDLY: + . . . .

Ha рис. 6.13 имеются четыре буфера, включенные между узлами IN1-0UT1..... IN4-OUT4, и три дополнительных узла REF1,

REF2, REF3, состояния которых влияют на значения задержек, определяемых с помощью трех правил. Причем узлы REF1 и REF2 влияют на расчет задержек по Правилу 2, а узел REF3 - по Правилу 1 и Правилу 3. Из рис. 6.13 следует также, что задержки сигналов 0UT2 и оитз вычисляются по одному и тому же правилу. Перейдем к описанию составления правил определения задержек.

Секция BOOLEAN, С помощью <булевс/<ого назначения> определяются промежуточные переменные, которые могут быть использованы в копределении задержки». Секция BOOLEAN может быть включена на любой строке в описании примитива PINDLY. Выражение <булевс/<ое назначение> имеет вид

<6улевская переменная> = {<булевское выражение>}

Имя <6улевская переменная> составляется по тем же правилам, что имя узла.

Выражение <булевское выражение> принимает значение TRUE (логическая "1") или FALSE (логический "О"). Подобно всем остальным выражением оно должно быть заключено в фигурные скобки {}. В табл. 6.19 перечислим булевские операторы в порядке убывания их старшинства.

Таблица 6.19

Булевские операторы

Оператор

Название

Логическое отрицание

Равно

Не равно

&

Логическое И

Логическое исключающее ИЛИ

Логическое ИЛИ

В качестве операндов булевских выражений могут участвовать:

- предварительно определенные <булевские переменные>;

- сЬункции допол:итепьных узлов (см. ниже);

- функции изменений (см. ниже);

- <6улевские константы> TRUE и FALSE.

Дополнительно операторы "==" и "!=" могут быть применены к логическим значениям <входные узлы> и <логические константы>. Это позволяет проанализировать логические состояния узлов, например, выражение "CLEAR==1" принимает значение TRUE, если узел CLEAR имеет значение логической "1", и FALSE - в противоположном случае.

Управляющие функции используются для определения изменений состояний квнутренних узлов> или <выходных узлов>. Все управляющие функции принимают логические значения и поэтому могут входить в состав <6улевских выражение». Приведем список этих функций и их аргументов:

CHANGED {<узел>,<интервал времени>)

CHANGED LH {<узел>,<интервал времени>)

CHANGED HL {<узел>,<интервал времени>)

Функция CHANGED принимает значение TRUE, если указанный <узел> изменял свое состояние из "О" в "1" на указанном <интервале времени>, предшествующем текущему моменту времени, в противном случае - FALSE.

Аналогично, функция CHANGED LH принимает значение TRUE, если указанный <узел> изменял свое состояние на указанном <ин-тервале времени>, предшествующем текущему моменту времени, в противном случае - FALSE. Отметим, что CHANGED LH контролирует только самое последнее изменение.

Наконец, функция CHANGED HL принимает аналогичные значения, контролируя переходы из "1" в "О".

Если <интервал времени> задать равным нулю, то рассматриваемые функции примут значение TRUE, если в данный мо-



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

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

TRN pn

Здесь р - значение предыдущего состояния, an - нового состояния.

Лотческие значения состояний обозначаются символами: L (низкий уровень), Н (высокий уровень), Z (большое выходное сопротивление) и $ (любой уровень). Так, например, функция TRN H$ контролирует переход из состояния лотческая "1" в любое другое состояние.

Замечание. Функции TRN pZ и TRN Zn принимают значение TRUE, только если они используются в секции TRISTATE, описываемой ниже. Хотя выходные узлы устройств с открытым коллектором переходят в состояние высокого импеданса Z (вместо Н), в справочниках обычно приводятся значения задержек TPLH и TPHL. Поэтому в математических моделях устройств с открытым коллектором необходимо использовать функции TRN LH и TRNHL, а в тристабильных устройствах - TRN LZ, TRN HZ, TRN ZL и TRN ZH.

Секция PINDLY. Ключевое слово PINDLY отмечает начало секции, содержащей одно или несколько <назначений задержек>, которые имеют формат

<выходной узел>* ={ <выражение длязадержек>}

Каждый <еыходной узел>, перечисленный в спецификации примитива, должен иметь одно выражение для определения задержек. Причем несколько выходных узлов могут иметь общее <выражение для задерже/о (на рис. 6.13 <выражение для задержек> обозначено как "Правило"), тогда в левой части назначения задержек помещается список их имен, разделяемых пробелами или запятыми.

<Выражение для задержек> заключается в фигурные скобки и может располагаться на нескольких строках. Это выражение имеет три значения задержек: минимальное, типичное и максимальное. В простейшем случае <выражение для задержек> представляет собой <значение задержек> вида

DELAY(<m/n>, <typ>, <тах>),

где <min>, <typ>, <тах> - константы с плавающей запятой или выражения (в том числе и параметры), в секундах.

Для спецификации неизвестной величины используется -1. Например, DELAY(20ns, -1,35ns) задает минимальную задержку 20 не, устанавливаемую программой по умолчанию типичную задержку и максимальную задержку 35 не.

В более сложных <выражениях для задержек> используются функции CASE вида

CASE (

<булевс/<ое выражение>, <выражение для задержек>, ;Правило 1

<булевское еыражение>, <выражение для задержею», ;Правило 2

<выражение для задержек> ;3адержки по умопчанию

Аргументами функции CASE являются пары <булевское выра-жение>, <выражение для задержек>, замыкаемые финальным <выражением для задержек>, определяющим значение задержки по умолчанию. При вычислении функции CASE вычисляются <6у-левские выражения> в порядке их следования до тех пор, пока не будет получен результат TRUE. После этого задержкам присваиваются значения из соответствующего выражения. Если ни одно из выражений не имеет значения TRUE, задержкам присваиваются значения из последнего выражения.

Приведем пример:

+ BOLEAN:

+ CLOCK = { CHANGED LH( CLK, О ) } + PINDLY:

+ QA QB QC QD = { + CASE (

+ CLOCK & TRN LH, DELAY(-1, 13ns, 24ns),

+ CLOCK & TRN HL, DELAY(-1, 18ns, 27ns),

+ CHANGED HL(CLBAR,0), DELAY(-1,20ns,28ns),

+ DELAY(-1, 20ns, 28ns) ; По умолчанию

В этом примере рассматривается четырехразрядный счетчик. Вводится булевская переменная CLOCK, которая принимает значение TRUE, когда дополнительный узел CLK изменяет свое состояние из "О" в "1" в текущий момент времени. Четыре выхода

11-1361



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [ 49 ] 50 51 52 53 54 55 56 57 58 59 60


0.0075