В этом примере при результате условного выражения, равном "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") */
Приведенные ниже примеры моделей логических элементов и узлов ЭВМ не привязаны к каким либо интегральным микросхемам. При подборе примеров преследовалась только цель показа возможностей системы 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";}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.