Создание текстового файла с функциональным описанием  микросхемы

Функциональное описание микросхемы помещается в текстовый файл с расширением *.PML с помощью любого текстового редактора (NORTON EDITOR, NOTEPAD WORDPAD и др.). Оно записывается с помощью специального языка PML, в котором используются следующие понятия.

Идентификатор — обозначение имен узлов и шин, состоящее не более чем из восьми алфавитно-цифровых символов.

Константа — числовая или текстовая переменная. Числовые константы записываются в десятичной, шестнадцатеричной (префикс 0Х), восьмеричной (префикс 0) или двоичной (префикс 0В) системе счисления. Текстовыми константами обозначается нагрузочная способность микросхемы (ее выходное сопротивление), они заключаются в кавычки и принимают значения «S», «D», «R», «Z».

Оператор — символ, имеющий специфическое значение в языке PML. Приведем список операторов в порядке их старшинства (старшинство убывает слева направо и сверху вниз, табл. 4.3).

Выражения – комбинации идентификаторов, констант и операторов, например А1&В1.

Ключевые слова – текстовые переменные, имеющие в языке PML определенный смысл, например, ELSE, FOR, IF, INPUT, OUTPUT, RETURN.

Таблица 4.3

Список операторов языка PML

Символ

Название

(, )

Левая и правая скобки

~

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

+

Арифметическая сумма (для включения узлов цепей в состав шины)

<<, >>

Сдвиг содержания шины влево и вправо на целое число разрядов

&

Логическое И

Ù

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

<, <=, >, >=, ==, !=

Сравнения (меньше, меньше или равно, больше, больше или равно, равно, не равно)

¦

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

&&

Условное И

¦  ¦

Условное ИЛИ

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

IF(A1! = B1) OUT =«0»;

означает, что выходному узлу OUT присваивается значение логического нуля, если значения идентификаторов А1 и В1 не равны друг другу.

В языке PML формат свободный, большие и малые буквы не различаются между собой.

Файл функционального описания цифровой микросхемы состоит из заголовка и списка предложений. Заголовок файла (module header) содержит идентификатор описания со списком параметров, а также список входных, выходных и двунаправленных уз­лов, список внутренних узлов и шин с указанием их PCL-атрибутов. Список предложений (statement list) устанавливает логические состояния узлов цепи. Каждое предложение состоит из утверждений (statements), ключевых слов (keywords) и выражений (expressions). В любом месте может быть помещен комментарий, выделяемый символами /* и */. Список предложений заключается в фигурные скобки {}. Приведем в качестве примера описание четырехразрядного сумматора К555ИМ6 (см. рис. 4.3), занесенное в файл K555IM6.PML следующего вида:

K555IM6( )

/* четырехразрядный двоичный сумматор */

INPUT     РО, А1, В1, А2, В2, A3, ВЗ, А4, В4;

OUTPUT S1 (16, 16, «D», «D»), S2 (18, 18, «D», «D»),

                S3 (20, 20, «D», «D»), S4 (22, 22, «D», «D»),

                P4(24, 24, «D», «D»);

LOCAL   P1, P2, P3;

{                S1=P0 ^ A1 ^ B1;

                  Р1 = (А1& B1) ¦ (Al&P0) ¦  (Bl&P0);

                  S2 = P1 ^ A2 ^ В2;

                  P2 = (A2&B2) ¦ (A2&P1) ¦ (B2&P1);

                  S3 = P2 ^ A3 ^ B3;

                  РЗ = (АЗ&ВЗ) ¦ (A3&P2) ¦ (B3&P2);

                  S4 = P3^A4 ^ В4;

                  P4 = (A4&B4) ¦ (A4&P3) ¦ (B4&P3);}

Перейдем теперь к систематическому описанию основных конструкций языка PML.

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

<идентификатор описания> (<параметр 1>, <параметр 2>,…)

INPUT      <имя узла 1>, <имя узла 2>,…;

OUTPUT  <имя узла 1> (<PCL-атрибуты>),…;

INOUT     <имя узла 1> (<PCL-атрибуты>),…;

LOCAL     <имя узла 1> (<PCL-атрибуты>),…,

                  <имя шины> [n] (<PCL-атрибуты>,…;

После имени идентификатора описания микросхемы в круглых скобках перечисляются идентификаторы параметров, численные значения которых приводятся в том же порядке в атрибуте MDL, заносимом в графическое изображение микросхемы (см. выше). Далее следуют списки входных (INPUT), выходных (OUTPUT) и двунаправленных (INOUT) узлов, а также внутренних узлов и шин (LOCAL). После имени шины в квадратных скобках указывается количество цепей n, входящих в ее состав (не более 31). Выходные, двунаправленные и внутренние узлы и шины имеют атрибуты PCL, которые по умолчанию принимают вид PCL = (1, 1, «D», «D»).

Выражения. Они подразделяются на безусловные описания узлов (node expressions), описания шин (bus expressions) и условные описания (conditional expressions).

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

1) <описание узла> <оператор> <описание узла>

2) ~ <описание узла>

3) <узел>.

При описании шин допускается рекурсия. Поэтому в качестве выражения <описание узла> может быть либо выражение <узел>, либо описание другого узла. Выражение <узел> может быть идентификатором (именем) узла, спецификацией шины (состоит из идентификатора шины и ее размера n в квадратных скобках) или логическим уровнем «0», «1», «X» (логический уровень заключается в апострофы). При описании узлов используются операторы & (И), ^ (исключающее ИЛИ) и ¦ (ИЛИ). Приведем примеры описания узлов: А1, ~А1, A1¦A2, (А1&А2) ¦ (В1~В2).

Описания шин. Логические состояния шин описываются по одному из следующих пяти форматов:

1) <описание шины> <оператор> <описание шины>

Здесь допускаются операторы + &, ¦ и ^ ;

2) <описание шины> <оператор> <целая константа>

Здесь допускаются операторы сдвига содержания шины <<, >> на количество разрядов, равное параметру <целая константа>;

3) ~ <описание шины>;

4) <шина>;

5) [<список узлов>].

При описании шин допускается рекурсия. Поэтому в качестве выражения <описание шины> может быть либо выражение <шина>, либо описание другой шины. Выражение <шина> может быть идентификатором шины или константой (в шестнадцатеричном, десятичном, восьмеричном или двоичном коде), описывающей состояние шины (константа заключается здесь в апострофы). Идентификатор шины должен быть описан в заголовке файла в списке LOCAL. Описание шин в списках INPUT, OUTPUT и INOUT не допускается. В качестве выражения <шина> может также использоваться список узлов, разделенных запятыми и заключенных в квадратные скобки. Максимальное количество узлов в списке равно 31. На первом месте в списке узлов помещается старший разряд, на последнем – младший разряд шины. Приведем примеры описания шин: BUS1&BUS2, В1+В2, BUS<OBO1, «037», [А1, А2, A3, А4].

Условные описания. Они предназначены для описания логического состояния узлов и шин в предложениях условия и выбора. С их помощью состояниям узлов и шин присваиваются значения «0», «1» и «X» в зависимости от выполнения тех или иных условий. Условные описания имеют следующие форматы:

1) <условное описание> <оператор> <условное описание>

Здесь используются операторы && (И) и ¦ ¦ (ИЛИ);

2) <описание узла> <оператор> <описание узла>

Здесь используются операторы == (равно) и  != (не равно);

3) <описание шины> <оператор> <описание шины>

Здесь используются операторы == (равно), != (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно);

4) <узел> <оператор> <переход 0®1 или 1®0>

Здесь используются операторы == (равно), != (не равно);

5) <описание узла>.

В условных описаниях допускается рекурсия. В качестве выражения <условное описание> может быть выражение <узел>, <описание узла>, <описание шины> или последовательность таких описаний, соединенных операторами. Здесь вводятся новые по­нятия <переход 0®1>, <переход 1®0>. Переход из состояния «0» в состояние «1» обозначается как /, а переход из состояния «1» в состояние «0» – как . Например, событие, состоящее в повышении потенциала узла AS, обозначается как AS==/.

Список предложений. Предложения подразделяются на предложения присваивания (assignment statements), предложения условия (conditional statements) и предложения выбора (select statements) .

Предложения присваивания. С их помощью узлам и шинам присваиваются логические состояния (в виде констант или переменных), а также указываются их PCL-атрибуты. Они вводятся по одному из следующих форматов:

1) <имя узла>=<описание узла> (<PCL-атрибуты>);

2) <имя шины> [n] = <описание узла> (<PCL-атрибуты>);

3) <имя шины> = <описание шины> (<PCL-атрибуты>).

По формату 1 устанавливается логическое состояние отдельного узла, по формату 2 – узла, входящего в состав шины (здесь n – порядковый номер узла в шине), по формату 3 – всех узлов шины. PCL-атрибуты могут присваиваться узлам цепи с помо­щью операторов присваивания или через список параметров в заголовке файла. Приведем примеры предложений присваивания:

Q1 = ~E1 (8, 8, «D», «D»); /*El – имя узла */

АВ = «023»; /*АВ – имя шины */

АВ = В1 + «0В110»; /*АВ и В1 – имена шин */

Предложения условия. Они определяют условия, при, удовлетворении которых выполняется отдельное предложение или список предложений. Они вводятся по следующим форматам:

1) IF (<описание условия>) <список предложений>;

2) IF (<описание условия>) <список предложений> ELSE, <список предложений>;

3) IF (<описание условия>) <список предложений> ELSE <список предложений> OTHERWISE <список предложений>.

Ключевое слово IF указывает, что при выполнении условия, указанного в круглых скобках, выполняется приведенный далее <список предложений>, который имеет следующий формат:

<предложение>;

{<предложение 1>; <предложение 2>; …;}

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

Выражение <описание условия> может принимать значения «0», «1» или «X». Если в формате 1 это выражение принимает значение «1», то выполняется <список предложений>; если же оно принимает значение «0» или «X», то это предложение игнорируется и управление передается следующему предложению PML-файла. Если в формате 2 это предложение принимает значение «1», то выполняется следующий <список предложений>; при значении «0» выполняется <список предложений>, указанный после ключевого слова ELSE; при значении «X» управление сразу же передается следующему предложению PML-файла. При использовании формата 3 справедливы те же правила, за исключением того, что при значении «X» выполняется предложение, указанное после ключевого слова OTHERWISE. Приведем пример:

IF (А1&А2= = В1&В2) C1=«l»; ELSE C1 = «0»; OTHERWISE С1=«Х»;

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

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

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

FOR <условное описание 2> SET <описание узла> (<PCL-атрибуты>)

………………………………………………………………………………

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

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

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

FOR <условное описание 2> SET <описание узла> (<PCL-атрибуты >)

……………………………………………………………………………….

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

OTHERWISE SET <описание узла> (<PCL-атрибуты>);

3) <имя шины> = SELECT

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

FOR <условное описание 2> SET <описание шины> (<PCL-атрибуты>)

………………………………………………………………………………..

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

4) <имя шины> = SELECT

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

FOR <условное описание 2> SET <описание шины> (<PCL-атрибуты>)

………………………………………………………………………………..

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

OTHERWISE SET <описание шины> (<PCL-атрибуты>).

Узлам и шинам, чьи имена указаны слева от знака « = », логические состояния присваиваются в зависимости от выполнения условий, перечисленных после ключевого слова SELECT (выбор). Сначала анализируется <условное описание 1>, записанное после ключевого слова FOR: если оно равно «1», то узлу (или шине) присваивается логическое состояние, описанное в соответствующем <описании узла (шины)> вместе с PCL-атрибутами (если они имеются) и управление передается следующему предложению PML-файла; если же <условное описание 1> не равно «1», то анализируется <условное описание 2> и т. д. Если ни одно из n условных описаний не равно «1», то узлу (или шине) назначается логическое состояние, описанное после ключевого слова OTHERWISE (если оно имеется). Приведем пример:

AS = SELECT FOR A1 SET «1» FOR A2 SET «0» OTHERWISE SET A3;