![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation AOE L BOE L COE L DOE L MOE L SO. S1 S2.
Al B1 B2 CI C2 DI D2 A2 Рис. 5.61. Входы и выходы 2-разрядного шинного приемопередатчика на четыре направления, реализованного в ПЛУ *5.6.4. Описание выходов с тремя состояниями наязыкеVHDL В самом языке VHDL отсутствуют встроенные типы и операторы для выходов с тремя состояниями. Однако в нем имеются примитивы, которые можно использовать для создания соответствующих сигналов и систем, имеющих третье состояние; эти примитивы используются в пакете IEEE 1164. Прежде всего, объявлением типа STD LOGIC в пакете ШЕЕ 1164 Z определяется как одно из девяти возможных значений сигнала; это значение используется для указания высокоомного состояния. Вы можете присвоить это значение любому сигналу типа STD LOGIC и определения стандартных логических функщш допускают возможность входных сигналов со значением Z (в общем случае сигнал Z на входе вызовет сигнал U на выходе). Как на языке VHDL описать шины с тремя состояниями, если в нашем распоряжении имеются сигналы с тремя состояниями? У шины с тремя состояниями в общем случае бывает два или большее число источников, хотя рассматриваемые нами алгоритмы работают точно так же, когда имеется всего лишь один источник. В языке VHDL нет явной языковой конструкции для объединения выходов с тремя состояниями в шину. Вместо этого компилятор автоматически объединяет вместе сигналы, которые создаются двумя или большим числом разных процессов, то есть сигналы, имена которых находятся в левой части оператора присваивания в двух или в большем числе процессов. Однако, как объяснено ниже, эти сигналы должны иметь соответствующий тип. В пакете IEEE 1164 тип STDLOGIC фактически определен как подтип {subtype) типа STD ULOGIC. В языке VHDL тип STD ULOGIC, называемый неразрешенным типом {unresolved type), используется для любого сигнала, который может быть образован в двух или в большем числе процессов. (Здесь термин разрешение употребляется в том же значении, какое он имеет в вьфажениях разрешение конфликта , разрешающая способность .-Прим. иерее.) Определение неразрешенного типа включает в себя функцию разрешения {resolution function), которая вызывается каждый раз, когда происходит присвоение значения сигналу этого типа. Как следует из названия функции, она решает, каким должно быть результирующее значение сигнала на линии, к которой подключены выходы нескольких источников. Это позволяет смоделировать условия формирования сигналов, подобные тем, какие имеют место в реальных устройствах. В табл. 5.31 и 5.32 приведены определения типов STD ULOGIC и STD LOGIC и функция разрешения resolved из пакета ШЕЕ 1164. Когда в я процессах возникает п различных возможных значений сигнала, они поступают во входной вектор S и функция resolved определяет конечное значение типа STD LOGIC по двумерному массиву resolution table. Если, например, сигнал формируется че-тьфьмя источниками, то VHDL-компилятор автоматически создает 4-элементный вектор, содержащий значения сигналов на выходах источников, и передает этот вектор функции resolved всякий раз, когда изменяется любое из этих значений. Результат возвращается моделирующей программе. Табл. 5.31. Объявления типов STD ULOGicnSTD LOGIC в пакете IEEE 1164 PACKAGE std logic 1164 IS - logic state system (unresolved) TYPE std ulogic IS (
- unconstrained array of std ulogic Г№Е std ulogic vector IS ARRAY ( NATURAL RANGE <> ) OF std ulogic; - resolution function FUNCTION resolved ( s : std ulogic vector ) RETURN std ulogic; - Mifif industry stamdard logic t3rpe *** SUBTYPE std logic IS resolved std ulogic; Благодаря строгому упорядочению сигналов по силе в массиве resolution table (U > Х > О , 1 > > L, Н > -) порядок, в котором значения сигналов появляются в векторе s, не влияет на результат, выдаваемый функцией resolved. Коль скоро в результате частичного выполнения про- PACKAGE BODY std logic 1164 IS - local t3rpe TYPE stdlogic.table IS ARRAY(std ulogic, std.ulogic) OF std ulogic; - resolution function CONSTANT resolution table : stdlogic table ;= (
FUNCTION resolved ( s : std ulogic vector ) RETURN std.ulogic IS VARIABLE result : std.ulogic := Z; - weakest state default BEGIN ~ the test for a single driver is essential otherwise the - loop would return X for a single driver of - and that - would conflict with the value of a single driver unresolved - signal. IF (sLENGTH = 1) THEN RETURN s(sLOW); ELSE FOR i IN sRANGE LOOP result := resolution table(result, s(i)); END LOOP; END IF; RETURN result; END resolved; Итак, нужно ли все это знать для образования в VHDL-программе выходов с тремя состояниями? Ну, обычно нет Но это может помочь, если результаты вашего моделирования не согласуются с реальностью. Все, что обычно требуется для создания выходов с тремя состояниями в VHDL-программе, это обьявить соответствующие сигналы величинами типа STDLOGIC, и пусть моделирующая программа осуществляет разрешение по мере необходимости. цедуры разрешения уже получено какое-то определенное значение сигнала, в дальнейшем уже не может возникнуть более слабое значение; конфликты О /1 и L / Н всегда разрешаются в пользу более сильных неопределенных значений X и Ж соответственно. Табл. 5.32. Тело пакета IEEE 1164 в части, касающейся типов stdulogic и std logic ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |