Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 75
Текст из файла (страница 75)
Да, верно: «Она работает!». Только это напоминает мне, как мои лети говорят о домашнем задании: «Готово!». 320 Глава 4. Принципы проектирования комбинационных лоп«чепкин охам Рис. 4 51(а) иллюстрирует этот принцип. Многие разработчики склонны считать объявление обьекта в языке ЧНВЬ «оболочкой» архитектуры, скрывающей детали того, что находиться внутри, но обеспечивающей «зацепки» для других модулей, использующих данный молуль. Эта идея служит основой иерархического подхода к проектированию систем: архитектура верхнего уровня может использовать (или «обрабатывать») другие объекты, оставляя архитектурные детали объектов нижнего уровня скрытыми от объектов более высокого уровня.
Как показано на рис. 4.5!(Ь), архитектура более высокого уровня может использовать объекты более низкого уровня многократно, и несколько архитектур верхнего уровня могут использовать один и тот же объект более низкого уровня. На рисунке архитектуры В, Е и Г являются самостоятельными; они не используют никакие другие объекты.
(а] абшкт (Ь) рис. 4.51. Объекты и архитектуры языка ЧНОЬ: (а) идея «оболочки»; (Ь) иерар. хическое использование ПИШИТЕ ВСЕ, ЧТО ХОТИТЕ1 В действительности, язык ЧНОЬ позволяет определять несколько архитектур, объединенных в одном объекте, и предоставляет средства управления конфигурацией, посредством жпорых можно указывать, какая именно архитектура бу дет использоваться при очередном запуске компилятора или программы синтеза.
Это позволяет опробовать различные архнтекгурные подходы, не выкидывая и не пряча цвугие варианты. Однако в нашем учебнике мы не воспользуемся этой возможностью и не станем ее обсуждать подробнее. В текстовом файле на языке ЧНРЬ объявление объекта (епгг)у гХес)агагкап) и определение архитектуры (агсййесгиге с(фи!у!оп) разделены, как это сделано на рис. 4.52. В табл. 4.2б в качестве примера приведена очень простая программа на языке ЧНРЬ для 2-входового вентиля «запретю>. В больших проектах объекты и архитектуры иногда бывают помещены в отдельные файлы, связь между которыми компилятор обнаруживает по их объявленным именам.
те«акакий файл (иаприиер, кпудетоп гпд) Рис. 4.52. Общий вид файла программы на языке ЧНРЬ Табл. 4.26. Программа на языке ЧНРЬ для вентиля «запрета» епаату 1пЫЫс 1в — а1во Кповп ае 'ВОТ-ВОТ' роте (Х,У! зп ВХТ; — ав 1п 'Х Ьпе пес у' Е; опт ВХТ); — (вее [К11т, 1972)) епд 1пЫЬзе; атсЫСесепте 1пЫЬае атсЬ от 1пЫЫС Хв Ьейьп 2 к= '1' вцеп Х='1' апц У 'О' е1ве 'О' епк( ХпЫЫС атсЬ; Как и в других языках программирования, в языке УНРЬ пробелы и переходы с одной строки на другую в общем случае игнорируются, и для удобства чтения их можно вставлять как угодно.
Комментарии (соттепж) начинаются с двух дефисов (-) и заканчиваются концом строки. В языке УНРЬ определено много специальных строк символов, называемых зарезервированными словами (гееегтек( зеогкЬ) или ключевыми словами (й~пеапй). В приведенном примере имеется несколько ключевых слов: епСХСу, рокС, Хз, Хп, оцС, егк1, атсЬТСессцте, Ьес1п,ыцеп, е1зе и пос. Определяемые пользователем идентификаторы (Иепуукега) начинаются с буквы и содержат буквы, цифры и подчеркивания. (Символ подчеркивания не может следовать за другим символом подчеркивания и не может быть последним символом идентификатора.) В данном примере идентификаторами являются Хораз.ыс, х, у, В1т, е и ХпЫЬХс атсЬ.
"ВХ Т" - зто встроенный идентификатор предоглзеделенно го типа; он не считается зарезервированным словом, так как его можно переопределять. Зарезервированные слова и идентификаторы не чувствительны к регистру. ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 4.7. Язык описания схем ЧНРЬ 321 322 Глава 4. Принципы проектирования комбинационных логических схем В табл. 4.27 представлен сингаксис объявления объекта. Целью объявления объекта, помимо присвоения объекту имени, является определение сигналов внешнего интерфейса или порта« (раггз) в части объявления объекта, которая называется объявлением портов (рот дес!агамоп), кроме ключевых слов епсзсу, зз, ротс и епс), объявление обьекга содержит следующие элементы; спг!гу-пате выбираемое пользователем имя объекта; «18па1-пате« список выбираемых пользователем имен сигналов внешнего интерфейса, состоящий из одного имени нли из большего числа имен, разделенных запятой; одно из четырех зарезервированных слов, определяющих направление передачи сигнала: сигнал на входе объекта; сигнал на выходе объекта; заметьте, что значение такого сигнала нельзя «прочитать» внутри структуры объекта; он доступен только объектам, использующим данный объект; оос Ьоййег сигнал на выходе объекта, такой что его значение можно читать также внутри структуры данного объекта; з пооГ сигнал, который может быть входным или выходным для данного объекта; обычно этот режим используется применительно к входам!выходам ПЛУ с тремя состояниями; встроенный нли определенный пользователем тип сигнала; в следующих разделах мы будем много говорить об этом.
«18па1-Гуре Обратите внимание, что после заключительного з!апайуре нет точки с запятой; изме- нение порядка следования закрывающей скобки н точки с запятой после нее — типич- ная синтаксическая ошибка программиста, начинающего писать на языке (гН0(.. Табл. 4.27. Синтаксис объявления объекта на языке ЧН0'ь еасзкгу спину-кате ъв рога (г!8па1-натек: пгадс луат1-гуре г18па1-патег: тоде «18па1-гуре лйпа1-пате«: тоде я18па1-гуре); елг( епГ!гу-пате; Порты объекта, а также направление передачи и типы сигналов — это все, что вилят другие модули, использующие данный модуль, Внутренняя работа обьекта задается его определением архитектуры (агсйдгесптс де!)пМап), синтаксис которого в общем случае имеет внд, указанный в табл. 4.28.
Иня объекта (епп!упате) в этом определении должно быть таким же, какое раньше было присвоено объекту в объявлении объекта. Имя архит«ктуры (агс!г!гссгпгс-пате) — это выбираемый пользователем идентификатор, обычно так или иначе связанный с именем объекта; при желании имя архитектуры может быть тем же самым, что и имя объекта.
4.2. яамк описания схем ЧНОЬ 323 табл. 4.28. Синтаксис определения архитектуры на языке ЧНСгь ахспзеессаге апчигесги«е-патг оз енгггу-пате за гуре г1ег 1а«агигп ч ,ч1ягга1 ггес!агпггапз гснзгапг «1«г'1а«агггта ~нпсггогг г)егюпгг1иггч ргогег1и«е г)г)гп111оггз сптрпн«п г г1«с1а«аггопз Ьейзп гонги«ттгзгагетепг ганг н«генг-.чгагетепг епгг а«г)гггггггг«е-пат«; Сигналы внешнего интерфейса архитектуры (порты) наследуются от той части объявления соответствующего объекта, где объявляются порты. У архитектуры могут быть также сигналы и другие объявления, являющиеся для нее локальными, подобно тому как это имеет место в других языках высокого уровня.
В отдельном «пакете», используемом несколькими обьекгами, можно сделать объявления, общие для этих объектов, о чем будет сказано позднее. Объявления в табл. 4.28 могут располагаться в произвольном порядке. В свое время мы рассмотрим много различных способов записи объявлений и операторов в определении архитектуры. Начать легче всего с объявления сигнача (зчяпа1 г1ес1а«аг1оп), которое сообщает ту же самую информацию о сигнале, какую содержит объявление порта, за исключением того, что внд сигнала не задается: зЦпа1 з1япа!-патез: «18па1-гуре; В архитектуре может быть объявлено любое число сигналов, начиная с нуля, н они приблизительно соответствуют поименованным соединениям в принципиальной схеме. Их можно считывать и записывать внутри определения архитектуры и, полобно другим локальным элементам, на них можно ссылаться толью в пределах данного определении архитектуры.
Переменные (иа«1аЫез) в языке ЧНРЬ похожи на сигналы, за исключением того, что, как правило, они не имеют никакого физического смысла в схеме. Действительно, обратите внимание, что, согласно табл. 4.28, в определении архитектУры не предусмотрено «объявление переменных». Переменные используются в функциях, процедурах и процессах языка ЧНРЬ. Каждый из этих элементов программы мы рассмотрим позднее.
Вот у них внутри имеются объявления перел«нных 1уа«гаЫе г1«1гтг1опз), и эти объявления в точности подобны объявлениям сигналов, за исключением того, что употребляется ключевое слово ча«1аЬ1е: чаг1агэ1е ганаЫ«-пате«: чапаЫе-Гуре; 4.7.3. Типы и константы Каждому сигналу, переменной и константе в программе на языке ЧНЕгЬ необходимо поставить в соответствие тип (гуре). Типом определяется множество или диа- 324 Глава 4. Принципы проектирования комбинационных логических схем Табл. 4.29. Предопределенные типы языка ЧНРЬ ветегаеу 1ете1 всг1лб с1ае свагасеег 1асейег геа1 Ьза Ь1с тессог Ьоо1еап Типом дп седег определяется диапазон значений целых чисел, который, как минимум, простирается от — 2 ! 47483б47 до+2147483 б47 (от -2м +! до+21 — ! ); в некоторых реализациях языка ЧНРЬ этот диапазон может быть и шире.
Типом Ьсс1еап предусматриваются два значения: Сгие и Еа1эе. Тип сдагастег содержит все символы 8-битового набора 1ЗО, из которых первые 128 являются символами стандарта АЗС11. Встроенные операторы для типов 1псе9ег и Ьоо1еап приведены в табл.4.30. Табл.4.30. Предопределенныеоператорыдлятипов тпгедег иьоо1еап вязыке ЧНРЬ Операторыдла типа 1п седег Опараторы для типа Ьсо1 еап И ИЛИ И-НЕ ИЛИ-НЕ ИСКЛЮЧАЮЩЕЕ ИЛИ ИСКЛЮЧДЮЩЕЕ ИЛИ-НЕ дополнение (инверсия) асс! сложение вычитание умножение деление пасс! пот гвос! деление по модулю хог остаток от деления по модулю абсолютное значение хпог псс возведение в степень Чаше всего в типичных программах на языке ЧНР1.
используются опредаллелгые пол ьзоват елен типы (илег-с1е1) пес1 гурлз), а из ннх самыми употребнтельны ми являются перечислииые типы (епитегагес! гурел), которые определяются пу тем перечисления их значений. Предопределяемые типы Ьос1еап н сЛагасгег — это псречислимые типы. Формат объявления типа в случае перечисл имаго типа указан в первой строке табл.4.31. Здесь та1ие-1!лг представляет собой список (перечисление) всех возможных значений этого типа, разделяемых запятыми. Значе назон значений, которые может принимать данный элемент, н обычно имеется набор операторов (таких как сложение, логическое И и т д), связываемых с данным типом. В языке ЧНРЬ есть всего лишь несколько предопределенных типов (ргеа!су)пес( !урез); они перечислены в табл.
4.29. В дальнейшем в этой книге будут использованы только следующие предопределенные типы: 1пг едег, сла ге сне г и Ьсс1еап. Вы можете подумать, что при цифровом проектировании большую роль должны играть имена "Ь1Л" и "ЬТЬ те стог", но оказывается, что более полезны определяемые пользователем варианты этих типов, как это вскоре будет объяснено. лиями могут быть определяемые пользователем идентификаторы или символы (где под «символом» понимается символ 18О, заключенный в одинарные кавыч- ки).