Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 70
Текст из файла (страница 70)
Комментарии (соттвпгв) начинаются с двойной кавычки и заканчиваются другой двойной кавычкой или символом конца строки в зависимости оттого, что встречается первым. Объявление выводов (рт йесЛага6оп) называет компилятору имена, присваиваемые внешним выводам устройства. Если имени сигнала предшествует префикс НОТ (!), то сигнал на выводе будет инверсией по отношению к сигналу с данным именем.
Объявление выводов может включать в себя номера выводов, а может и не включать; если номера не заданы, то компилятор назначает их в зависимости от возможностей программируемого устройства. Ключевое слово авгуре предшествует списку, состоящему из одного или большего числа свойств, разделенных запятыми.
Эта запись указывает компилятору тип выходного сигнала. Ключевое слово "ооп" означает комбинационный выход. Если ключевое слово ззгуре отсутствует, то компилятор, как правило, полагает, что сигнал является входным, если только он не появляется в каком-нибудь из равенств слева; в последнем случае компилятор пытается вывести свойства выходною сигнала из контекста. В интересах вашей собственной безопасности лучше всего помещать вслед за ключевым словом 1ятуре описание всех выходных сигналов! Другие объявления (агйвг г(ес!агаг(опв) позволяют разработчику определять константы и выражения, чтобы сделать программу более удобочитаемой и упростить само логическое проектирование.
Оператор е лцаг золя указывает, что далее следуют логические равенства, пэторымн определяются выходные сигналы в виде функций от входных сигналов. Равенства (еаиайапв) записываются аналогично операторам присваивания в обычном языке программирования. Каждое равенство заканчивается точкой с запятой. В языке АВЕЬ лля логических операций используются следующие символы: вс И(АМО), Ф ИЛИ (ОН), ! НЕ (НОТ; применяется в качестве префикса), 3 ИСКЛЮЧАЮЩЕЕИЛИ(ХОЯ), Гв ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ(ХМОН).
Как и в обычных языках программирования, операция И (8г) в логических выражениях имеет приоритет по отношению к операции ИЛИ (й). При наличии директивы ВАГ,ТКЛИЛЗ компилятор распознает альтернативный набоР символов для указанных логических операций: в, +, !,;+ и;*; соответственно. В этой книге повсюду используются символы, принятые в язык~ АВЕЬ по умолчанию. 4.6. Язык описания схем АВЕЬ 601 ° Необязательный оператор ген г иеесоге указывает нато, что далее следуют векторы проверок.
° Векторы проверок (гезг ивсгогв) ставят в соответствие комбинациям входных сигналов ожидаемые значения выходных сигналов; они используются при моделировании и при тестировании, как объясняется в разделе 4.6.7. ° Компилятор распознает несколько специальных констант, в том числе символ . х для обозначения одиночного бита с «безразличным» значением. ° Оператором епа'отмечается конец модуля. Лля задания значений сигналов на выходах комбинационных схем используется оператор нетактирусиага присваивания = (ипс1асlгеЫ авв1Ептепг арвгагаг).
Левая часть равенства обычно содержит имя сигнала, Правая часть равенства является логическим выражением, которое не обязательно должно быть вида «сумма произведений». Имени сигнала в левой части равенства может предшествовать необязательный оператор! (НЕ); это эквивалентно инвертированию логического выражения, стоящего справа. Задача компилятора состоит в том, чтобы создать такой рисунок соединений, при котором сигнал, названный в левой части равенства, будет результатом реализации логического выражения, указанного в правой части равенства.
4.6.2. Работа компилятора языка АВЕЬ, Программа, приведенная в табл. 4.! 1, реализует функцию АЬАВМ, описанную в разделе 4.3.1. Сигналу, называвшемуся ранее ЕНАВЬЕ, в программе соответствует идентификатор ЕЫАВЬЕА, поскольку ЕНАВЬЕ является зарезервированным словом языка АВЕ1.. Обратите внимание, что не все равенства размещены вслед за оператором ес1пагз эпе. промежуточное равенство Ппгвгтегаагв едиагюп) для идентификатора ЯЕСЕВЕ появляется раньше.
Это равенство просто играет роль определения, которое связывает выражение с идентификатором ЯЕСБЕЕ. Компилятор языка АВЕЬ подставляет это выражение на место идентификатора ЯЕСБЕЕ всякий раз, когда ЯЕССВЕ встречается после его определения. На рис. 4.19 была приведена схема охранной сигнализации, непосредственно реализующая выражения ЯЕСОВЕ и АЬАВМ посредством многоуровневой логики. Компилятор языка АВЕЬ так не поступает и не использует выражения для соединений вентилей. Наоборот, ои «разгрызает» выражения, стремясь получить минимальный двухуровневый вариант вида «сумма произведений», пригодный для реализации в ПЛУ.
Таким образом, в результате компиляции программа, приведенная в табл. 4.11, должна выдать схему, эквивалентную схеме И-ИЛИ, изображенной парис.4.20, которая и оказывается минимальной. Ком пилятор действительно это делает. В табл. 4.12 приведен файл си нтезированных равенств, созданный компилятором языка АВЕЬ. Заметьте, что компилятор составляет равенства только для единственного выходного сигнала АЬАЕН. Сигнал ЯЕСВЕЕ нигде не появляется.
Компилятор находит минимальные выражения вида «сумма произведений» как для самой функции А1 Апн, так и для ее дополнения ! А1лпм. Как упоминалось ранее, во многих ПЛУ имеется возможность выбирать инвертированные или не 302 Глава 4. Принципы проектирования комбинационных лотте(вских охев» инвертированные значения выходных сигналов схем И-ИЛИ. «Равенство обратной полярности» в табл. 4. ! 2 представляет собой реализацию выражения для ! АЬАРИ вида «сумма произведений»; если бы было выбрано инверсное значение выходного сигнала, то использовалось бы это равенство.
В данном примере в равенстве обратной полярности на один терм-произведение меньше, чем в равенстве нормальной полярности для сигнала АЬАБМ, так что компилятор выберет зто равенство, если программируемое устройство допускает выбор инвертированного нли неинвертированного выходного сигнала. Пользе ватель может также заставить компилятор использовать нормальную или обрат ную полярность сигнала, включив в список свойств сигнала Авгуре ключевое слово "Ьпй1ег" или "Апчегг" соответственно.
(В некоторых компиляторах языка АВЕК для той же цели можно использовать ключевые слова "роз" и "пе9", но прн зтом нужно принять во внимание то„о чем будет сказано в разделе 4.6.6.) Табл. 4.12. Файл синтезированных равенств, созданный компилятором языка ДВЕЬдля программы, приведенной в табл. 4.1! АВЕЬ 6.30 Оев13п а1агвс)(с сгеасе(! Тпе Мок 24 1993 Т111е: А1агв Сггсп11 Ехашр1е ТАС1е: ).
Уа)(ег1у, Изсго Вувееав ЕпЕ1пеег1пЕ Р-Тесак Рап-1п Рап-опс Туре Мвае (аеег1Ьпсев) 4/3 б 1 Рйп А!.АКМ Вевс Р-Тека Тоеа1: 3 Тоеа1 Рйпв( 7 Тоеа1 Ио((ев: С АчегаЕе Р-Тяга/Оверсис: 3 Е()пас1опв: АЬАКН = (ЕМАВЬЕА й !ЕХТТ1ИС й !000К Я ЕИАВЬЕА й !ЕХ1Т1ИС й )ИТИООЫ $ ЕМАВЬЕА й !ЕХ1Т1ИС й !САКАСЕ Е РАИ1С); Ке гегве-Ро1аг1гу Е()паг1опв: !АЬАКМ = (!РАМТС й 91ИРОИ й ВООК й САВАСЕ В !РАИТС й ЕХТТ1МС $ !РАИТС й !ЕМАВЬЕА)! 4.3. Язык описания схем ЯВИ 303 4.6.3.
Операторы ЧЧНЕй и блоки равенств Кроме равенств, в языке АВВЕ имеется другой способ задания комбинационных логических функций — оператор икеи (ггнеи та!«тел!), также размещаемый в части программы, содержащей равенства. В табл. 4. ! 3 показана общая структураа оператора!ЧНЕН; она подобна структуре оператора 1Е в обычных языках программирования. Предложение ЕЛЕЕ является необязательным.
Здесь 1ояГсЕхргввв?оп — выражение, принимающее значение «!гце» (!) или «Га)зе» (О) В зависимости от значения Г.аяГсЕхргев«Гоп «исполняется» либо Тги«Едиайоп, либо рааеЕдиайап. Однако в данном случае необходимо уточнить, что именно мы понимаем под словом «исполняется», и об этом говорится ниже. табл. 4.
13. Структура оператора инки в языке ЯВЕЕ ИНЕИ Г.аяй Ехрггм!ап ТНЕИ Тгиейдиапоа; ЕЕБЕ Ра!хейди«иоп; В простейшем случае Тги«Едиайоп и необязательное Раа«Едиайоп представляют собой операторы присваивания, как это имеет место в первых двух операторах ИНЕЕ в табл.
4 ! 4 (в отношении Х1 и Х2). В этом случае выполняется логическая операция И, операндами которой являются Еа!Г!сЕхргевв!оп и правая часть Тги«Едиайап, а также логическая операция И, операндами которой являются дополнение к Еоя!сЕхргевв!ап и правая часть па(х«Едиапап. Таким образом, равенства для Х1Я н Х 2Р„в которых нет операторов !4КЕИ, дают те же самые результаты, что и соответствующие операторы АКЕН.