Моделирование дискретных устройств в системе PCAD. Асинхронное троичное моделирование дискретных устройств, позволяющее проверять правильность функционирования устройств, страница 12

В этом примере при результате условного выражения, равном "1", узлу OUT присваивается значение "1" и управление передается на выполнение программы моделирования следующего примитива без выполнения предложения OUT ="X". в) Предложения выбора

Предложения выбора позволяют выбирать значения состояний узлов и шин в зависимости от выполнения или не выполнения тех или иных условий.

Предложения выбора имеют следующие формы:

1)  <имя узла или имя шины> = SELECT

FOR (<условное выражение 1>) SET <выражение> (PCL–атрибут)

....

FOR (<условное выражение n>) SET <выражение> (PCL–атрибут);

2)  <имя узла или имя шины> = SELECT

FOR (<условное выражение 1>) SET <выражение> (PCL–атрибут)

...

FOR (<условное выражение n>) SET <выражение> (PCL–атрибут)

OTHERWISE SET <выражение> (PCL–атрибут); где <выражение> должно соответствовать типу переменной левой части предложения (должно быть выражением для узла или для шины). PCL–атрибуты не обязательны.

При выполнении этих предложений узлам и шинам, чьи имена указаны слева от знака =, логические состояния присваиваются в зависимости от выполнения условий, перечисленных после ключевого слова SELECT.

Сначала анализируется <условное выражение 1>: если оно равно "1", то узлу (шине) присваивается логическое состояние, записанное в выражении после ключевого слова SET в той же строке предложения, и управление передается следующему предложению PML–файла; если же <условное выражение 1> не равно "1", то анализируется <условное выражение 2> и т.д. Если ни одно из N условных выражений не равно "1", то узлу или шине присваивается логическое состояние, описанное после ключевого слова OTHERWISE (если оно имеется), и управление передается следующему предложению PML–файла. Если ключевое слово OTHERWISE отсутствует, то узел или шина сохраняют свое состояние.

Например:

EXAMPLE4 (PAR1,PAR2)

INPUT A1,A2,A3;

OUTPUT AS;

{AS = SELECT

FOR A1 SET "1" (PAR1,PAR1,"D","D")

FOR A2 SET "0" (PAR2,PAR2,"D","D")

OTHERWISE SET A3 (PAR1,PAR2,"D","D");}

/* Условие A1 – означает (A1 == "1") */

1.2.9. Примеры моделей примитивов

Приведенные ниже примеры моделей логических элементов и узлов ЭВМ не привязаны к каким либо интегральным микросхемам. При подборе примеров преследовалась только цель показа возможностей системы PCAD в области создания таких моделей.

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

Вот примеры таких моделей:

2И–НЕ

2ine()

input a, b;

output y;

{y=~(a&b);}

Рис. 1.6

М2–2

M2–2()

input a,b;

output y;

{y=a^b;}

Рис. 1.7

В следующем примере с целью демонстрации возможностей PCAD используется неявно заданная шина [s1,s0]. Однако более компактную запись условных выражений вида [s1,s0]=="0b00" можно получить с применением имен узлов: ~s1&~s0.

Мультиплексор

/* Мультиплексор 4/1:

i1 – i4 – входы, y – выход,

s0, s1 – выбор,

eo – разрешение:

eo=1 y=z,

eo=0 y=i(i)*/

kp ()

input eo,s0,s1,i1,i2,i3,i4;

output y(10,12,”d”,”d”);

{if(eo) {y=”1”(10,10,”z”,”z”);

else {y=select

for([s1,s0]==”0b00”) set i1

for([s1,s0]==”0b01”) set i2

for([s1,s0]==”0b10”) set i3

for([s1,s0]==”0b11”) set i4

otherwise set ”x”;}

otherwise y=”x”;}

Рис. 1.8

Математические модели примитивов с памятью сложнее:

JK–триггер

/* Обозначения входов и выходов общепринятые.*/

jk()

input s,j,c,k,r;

output q(5,5,"d","d"), q'(5,5,"d","d");

local x(5,5,"d","d"),y(5,5,"d","d"),z(5,5,"d","d");

{x=j; y=k; z=c;

if(s=="x"||r=="x"||c=="x"){q="x"; q'="x";}