Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 78
Текст из файла (страница 78)
Язык описания схем ЧНОЬ 333 но также и желаемое число разрядов (Я1 ЯК) в результате преобразования. Обратите внимание, что в данной функции объявлена локальная переменная "ге ви1п" типа ЯТ0 00610 УКСТОК с интервалом, в пределах которого изменяется индекс, зависящим от значения Я12Е. По этой причине параметр Я12Е должен быть константой или какой-то другой величиной, которая известна к моменту компиляции функции СОИЧ ЯТР Б061С ЧКСТОЕ. В этой функции реализуется алгоритм последовательного деления„также описанный в параграфе 2 ей табл. 4.30. Функция преобразования типа 1нткскн в тнп это ъоятс чксток на языке ЧН01 Хипсс1оп СОМУ ЯТ0 ЬОО1С ЧИСТОЕ(АЕО: 1ИТЕОЕЕ; ЯХЕЕ: 1ИТЕСЕЕ) гесигп ЯТР ЬОО1С уЕСТОЕ 1в иагааЪ1е геви1Е: ЯТО ЬОО1С ЧИСТОЕ (Я12Е-1 йояпсо О); иагъавъе сешр: Апсейег; Ъей1п сешр : АЕО; Хог 1 1п О Со Я12Е-1 1оор 11 (сешр шод 2) = 1 съев геви1е(1) := ' 1'; е1ее геви1с(1) := 'О'; епд 11; сешр := сешр / 2; епа 1оор; гесигп геви1Е; епд; Процедура (ргаееЫиге) в языке ЧНРЬ похожа на функцию за исключением того, что она не возвращает результат.
Если обращение к функции может играть роль выражения, то вызов процедуры можно использовать в качестве оператора. В языке ЧНР1 допускается задание аргументам процедур типа оис или типа 1поис, что фактически и делает возможным «возвращение» процедурой результата. Мы не будем пользоваться процедурами в нашей книге и поэтому не станем рассматривать их подробнее. 4.7.5. Библиотеки и пакеты ЧНРЬ-библиотека (!(Ьг агу) — это место, где компилятор ЧНРЬ хранит информацию об отдельномвариантепроекта,включая промежуточныефайлы,используемые при анализе, моделировании и синтезе в рамках данной разработки.
Место библиотеки в файловой системе компьютера зависит от реализации. Для очередного ЧН1И -проекта компилятор автоматически создает библиотеку под именем "ног К" и использует ее. У законченного ЧНРЬ-проекта обычно бывает много файлов, каждый из которых содержит различные компоненты проекта, включая объекты и архитектуры. Анализируя отдельные файлы, компилятор помещает результаты в библиотеку "ног К", а также ищет в этой библиотеке необходимые определения, например, другие объекты.
С учетом этого большой проект можно разбить па несколько файлов; компилятор найдет все, что нужно, по внешним указателям. 334 Глава 4. Принципы проектирования комбинационных логических схем Но не вся необходимая информация может находиться в библиотеке "ттог!т".
Например, разработчик может опираться на определения и функциональные модули, общие для некоторого семейства различных проектов. У каждого проекта есть своя собственная библиотека "ттог К" (обычно это подкаталог внутри всего каталога, относящегося к данному проекту), но в нем должны быть ссылки на общую библиотеку, содержащую совместно используемые определения, даже в малых проектах может использоваться библиотека, которая содержит, напри. мер, стандартные определения 1ЕЕЕ. Разработчик может присвоить имя такои библиотеке с помощью предложения 1 ЗЬга з у(1 1Ька ту с!лизе) в начале соот ветствующего файла.
Например, библиотеку !ЕЕЕ можно задать фразой: 11Ьгагу Теее; Предложение "11Ьгагу ттогх;" помещается в начале каждого файла ЧНОЬ- проекта неявно. Присвоение имен библиотекам проекта обеспечивает доступ к любым ранее проанализированным н запомненным объектам и архитектурам, но не к определениям типов и тому подобному.
Эту функцию выполняют «пакеты» и «предложения цве». ЧНОЬ-пакет (расйаье) — это файл, содержащий определения элементов, которые могут быть использованы другими программами. В пакет можно включить элементы такого рода, как сигнал, тип, константа, функция, процедура и обьявления компонентов. Помещенные в пакет сигналы являются «глобальными» и доступны любому ЧНОЬ-обьекту, использующему этот пакет. Типы и константы, упомянутые в пакете, известны в любом файле, использующем этот пакет. Аналогично, нз файлов, использующих данный пакет, можно вызвать перечисленные в нем функции и процедуры, а архитектуры, опирающиеся на этот пакет, могут «обрабатывать» включенные в нею компоненты, описываемые в следующем разделе. Проект может «использовать» тот или иной пакет, если в начало файла, относящегося к данному проекту, помещено предложение иае (иае с!атме).
Например, чтобы воспользоваться всеми определениями пакета„содержащего стандарт 1ЕЕЕ 1 ! 64, нам следует написать: озе 1еее.асс! 1од1с 1164.а11! Здесь "Те ее" — это имя библиотеки, ранее введенное предложением 11Ь ха ту. В этой библиотеке файл с именем "асс! 1ойзс 1164" содержитжелаемыеопределения. Приставка "а 11" велит компилятору использовать все определения этого файла. Вместо "а11" можно написать имя какого то одного элемента, когда необходимо использовать только его определение, например: ове Теее. аСс! 1оттйс 1164.
згс! о1одзс; Зта фраза обеспечит доступ только к определению типа асс! и1одус, приведенному в табл. 4.32, без учета всех других ролственных типов н функций. Однако, записывая подряд несколько предложений яаае", можно добавить использование и других определений. 4.7. язык описания схем ЧН!Зг. 333 Табл. 4.40. Синтаксис определения ЧН0~-пакета расваяе раг!гаде-пате зв гуре гТег!ага йапз з!япа! Нес!ага!!аггз сапа гав! г!ег !а га1 гааз тгт ропе пг г!ег!а гас!опз ~иле!!ап гТгс!ага!!апа ргоседаге г!ес!ага!!ггпз еп1 расйауе-пате; расвабе овцу раг!гадя-пате Тв гуре г7ес!агат!опз гопзгап! г!ег!а гшнтз !ипгг!ап г7г!1 и!г!ггпз ргссейгт г!грп!г!опз епй расФаде-пате; УН1УЕ-СТАНДАРТЫ 1ЕЕЕ Язык ЧНАЯ.
предоставляет замечательную возможность расширять типы данных и множество функций. Это важное свойство, поскольку встроенные типы 31т и ВХ т чкСТОР„в действительности, вовсе не адекватны требованиям моделирования реальных схем, когда обрабатываемые сигналы могут соответствовать третьему состоянию, а также быть неизвестными, безразличными и меняющейся интенсивности. Поэтому вскоре после формализации языка в стандарте 1ЕЕЕ 1076 коммерческие поставщики начали вводить свои собственные встроенные типы данных„чтобы оперировать логическими величинами, отличающимися от 0 и 1.
У разных поставщиков были, конечно, различные определения для этих расширенных типов, из-за чего началось возведение «Вавилонской башни». Чтобы избежать этого, Институтом инженеров по электротехнике и электронике был разработан стандартный логический пакет 1!64 !ягс) 1одзс 1164), девятизначная логическая система которого удовлетворяет ббльшую часть потребностей проектировщиков. За этим пакетом позднее последовал стандарт 1076-3, описываемый в разделе 5.9.6, который содержит несколько пакетов со стандартными типами и операциями для векторов ЯТР РОС1С, интерпретируемых как целые числа со знаком и без знака. Эти пакеты включают яг 5 1од1с аг1Г)з, ясо 1одзс яз.днес) и ягг! 1одзс цпяддпег1 Следование стандартам 1ЕЕЕ гарантирует разработчикам высокую степень переносимости их проектов и возможность их взаимодействия.
Последнее становится все более важным, так как переход на очень большие специализированные ИС делает необходимой кооперацию петелька многих проектировщиков, но также и многих поставщиков, каждый из которых вносит свой вклад в создаваемую по кусочкам «систему в одном кристалле». 336 Глава 4. Принципы проектирования комбинационных логических схем Стандартными пакетами не нсчерпывшотся все возможности. Любой разработчик может написать свой собственный пакет согласно синтаксису, приведенному в табл.
4.40. Все элементы, объявленные между "расхаде" н первым оператором "епсГ', видны из любого файла проекта, использующего этот пакет; ЭЛЕМЕНТЫ, СЛЕдуЮщИЕ За КЛЮЧЕВЫМ СЛОВОМ ераохаОЕ )ЭОС1у", яВЛяЮтСЯ ЛОКаЛЬ- ными. Заметьте, в частности, что первая часть содержит «объявления функций», но не определения. В объявлении функции (~илсйоп Йес!агайол) перечислены только нмя функции, аргументы и тип вплоть до ключевого слова "Тв" в табл.
4.35, но не включая его. Полное определение функции приводится в теле пакета и пользователи функции его не видят. 4.7.6. Элементы структурного проектирования Теперь мы, наконец, готовы взглянуть на внутренности УНР1.-проекта, на «исполняемую» часть архитектуры. Вспомним, что согласно табл. 4.28 тело архитектуры представляет собой ряд параллельных операторов (сопспггепг маг«телы). В языке УНРЬ каждый параллельный оператор исполняется одновременно с другими параллельными операторами в теле данной архитектуры. Такой режим исполнения заметно отличается от последовательного выполнения операторов в программном обеспечении, написанном на одном из обычных языков программирования. Параллельные операторы необходимы для того, чтобы отобразить поведение схемы, у которой соединенные между собой элементы воздействуют друг на друга непрерывно, а не в отдельные моменты времени, следующие один за другим в определенном порядке.