Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб Пособ_Гончаровский.doc
Скачиваний:
1316
Добавлен:
29.03.2015
Размер:
3.65 Mб
Скачать

1.10.2.5. Многозначная логика и стандарт ieee 1164

Во многих случаях может быть целесообразным или необходимым использовать для моделирования цифровых устройств логику с числом значений больше двух. Например, в системе могут бать электрические сигналы различной «силы», и может потребоваться вычислить «силу» и логический уровень в результате соединения двух или более таких источников сигналов. Использование дискретного множества «сил» позволяет избежать необходимости решать уравнения Кирхгофа и получить результат с требуемой точностью.

Сигнал с одной силой (две логических величины). Это простейший случай с двумя логическими значениями ‘0’ и ‘1’ и одной силой для каждого значения означает, что если соединить сигналы один со значением ‘0’, а другой со значением ‘1’, то ничего не будет известно об уровне результирующего сигнала. Сигнал одой силы достаточен для систем, в которых нет таких соединений.

Сигнал с двумя силами (три или четыре логических величины). Во многих схемах некоторый проводник может быть не соединен с землей, источником питания или с другим узлом схемы. Например, могут содержать схемы с открытым коллектором (истоком), или для выхода с тремя состояниями (‘0’, ‘1’ и ’Z’) при одном из вариантов управления оба транзистора закрыты (не проводят, т.е. Z состояние). В результате выход будет отключен от полюсов источника. Очевидно, что сила сигнала у отключенных таким образом выходов меньше в состоянии ’Z’ по сравнению с ‘0’ и ‘1’. Если сигнал со значением ’Z’ соединен с другим сигналом, то этот другой сигнал будет доминировать. Функцию, выполняющую вычисление результирующей величины при таких соединениях, называют функцией разрешения.

Во многих случаях трехзначное множество значений {’0’,’1’,’Z’} дополняется значением ’X’, представляющем неизвестную величину такой же силы как ‘0’ и ‘1’. Функция разрешения для этого случая получается весьма простой и может быть наглядно представлена с помощью схемы частичного порядка, как на рис. 54. Определим операцию sup над двумя сигналами, которая возвращает верхнее значение двух сигналов. Верхнее значение c двух сигналов a и b является наислабейшей величиной, для которой сохраняется c ≥ a и c ≥ b. Например, sup (’Z’, ’0’)=’0’, sup(’Z’,’1’)=’1’.

Рис. 54. Граф частичного порядка для значений из множества {’0’,’1’,’Z’, ’X’}

Сигнал с тремя силами (семь логических величины). Во многих случаях двух сил сигналов недостаточно, например, когда верхний МОП транзистор комплиментарного каскада является транзистором с обеднением. Эффект от этого транзистора подобен резистору низкой проводимости на пути к источнику питания (протекает маленький ток). Этот транзистор вместе с нижним транзистором управляют величиной выходного сигнала схемы, которая может быть вычислена с помощью функции разрешения. Нижний транзистор обеспечивает выход значениями ’0’ или’Z’. Транзистор с обеднением обеспечивает значение сигнала слабее, чем для ’0’ и ’1’, а его уровень соответствует ’1’. Это значение транзистора с обеднением обозначают, как ’H’ – слабая логическая ’1’. Подобным образом определяется слабый логический ’0’ - ’L’, результат взаимодействия слабых сигналов – слабая логическая неопределенность, обозначаемая как ’W’. В результате получаем три силы и семь значений величины сигнала {’0’, ’1’, ’L’, ’H’, ’W’, ’X’, ’Z’}. Граф частичного порядка представлен на рис. 55.

Рис. 55. Граф частичного порядка для значений из множества

{’0’, ’1’, ’L’, ’H’, ’W’, ’X’, ’Z’}.

В VHDL предопределена только двузначная логика (тип dit). Поэтому был разработан стандарт IEEE 1164, содержащий девять значений {’0’, ’1’, ’L’, ’H’, ’X’, ’W’, ’Z’, ’U’, ’-’}, где ’U’ обозначает неинициализированное значение, используемое при моделировании сигналов без точной инициализации. Символ ’-’ обозначает «беззаботный вход» или вход не имеет значения для описания булевых функций. В качестве примера рассмотрим условный параллельный оператор присвоения сигнала select подобный операторам switch и case языков программирования.

П

f <= select a & b & c -- & обозначает объединение

’1’ when "10-" --соответствует первому терму

’1’ when "-11" -- соответствует второму терму

’X’ when "000";

усть необходимо представить булеву функциюf (a,b,c) = ab+bc, неопределенную для случая a=b=c=’0’. Наиболее удобный способ представлен ниже:

Это должно легко моделироваться. К сожалению, получим не то, что хотели. Всякий раз, когда средства разработки VHDL оценивают подобный оператор, они проверяют выражение в пункте select (в примере a & b & c) на значения из пунктов when, в частности "10-". Т.к. значение ’-’ никогда не присваиваются сигналам эта проверка никогда не даст истины. Приведенное нереализуемое удобство плата за гибкость введения девятизначного множества значений, но все-таки стало можно моделировать схемы с обедненными МОП транзисторами.