Что такое высокий логический уровень
Основные понятия цифровой схемотехники
Прежде чем мы начнем создавать цифровые устройства, определимся, что они собой представляют и рассмотрим основные понятия. Итак, цифровая схемотехника отличается от аналоговой тем, что работает она только с двумя уровнями сигнала – высоким и низким, которые соответственно называют «логическая единица» и «логический ноль». Поэтому первые (и основные) два понятия будут следующими:
Никаких других уровней цифровая схемотехника не допускает, только «есть напряжение»/»нет напряжения». С виду мало, но тому же ПК, за которым вы сейчас сидите, как видите, хватает.
В зависимости от того, на какой элементной базе собраны цифровые микросхемы, они могут различаться, как говорят, по типу логики. Существует несколько типов, но самое широкое распространение получили транзисторно-транзисторная логика (ТТЛ) или просто ТТЛ-микросхемы и комплементарный металлооксидный полупроводник (КМОП) или КМОП-микросхемы.
Первый тип микросхем собран на биполярных транзисторах, второй на полевых и каждый из них имеет свои достоинства и недостатки. ТТЛ микросхема, к примеру, может работать на более высоких, чем КМОП микросхема частотах и более помехоустойчива, но вторая потребляет с десятки и даже сотни раз меньше энергии и не так критична к стабильности величины питающего напряжения.
Стандартным напряжением для ТТЛ микросхем принято считать 5 В, при этом логическая единица близка к значению +5 В, ноль – напряжение относительно «–» источника питания отсутствует. Диапазон напряжений питания КМОП микросхем достаточно широк – от 3 В до 12 и даже выше, но принцип сохраняется: логическая единица – напряжение, близкое к источнику питания, логический ноль – напряжение отсутствует.
Слева – логический элемент ТТЛ микросхемы, справа – КМОП
Несмотря на такое отличие ТТЛ от КМОП (а есть еще ТТЛШ, ЭСЛ, ДТЛ и пр.) микросхем, логика их работы ничем не отличается, а это значит, что схемотехника цифровых устройств на ТТЛ и КМОП будет очень схожа. Настолько схожа, что во многих случаях ее можно будет назвать одинаковой, в чем мы в самое ближайшее время и убедимся.
Уровни напряжения логических схем «0» и «1» и согласование транзисторно-транзисторной логики ТТЛ и КМОП логики с помощью обратной связи, резисторов, транзистора
Вследствие наличия паразитных падений напряжения в схемах на транзисторах, наводок, длины линии передачи сигнала и т.д.. Поэтому для логических схем интерпретируют сигналы как логическую единицу или логический нуль, даже в тех случаях, когда напряжение сигналов лежит в диапазоне между полным напряжением питания и нулём, то есть номинально не соответствует ни тому ни другом показателю.
Номинальное напряжение питания для логических радиоэлементов (микросхем) и номинальное значение логического 0 и логической 1
Спецификации входных и выходных сигналов схем КМОП логических элементов совершенно отличны от уровней напряжения, используемых для ТТЛ-элементов. Для КМОП-элементов, работающих при напряжении питания 5 вольт, приемлемые напряжения входного сигнала лежат в диапазоне от 0 до 1,5 вольт для низкого логического уровня, и от 3,5 до 5 вольт для высокого логического уровня. «Приемлемые» напряжения выходного сигнала (уровни напряжения, гарантируемые производителем элемента при указанном варианте нагрузки) лежат в диапазоне от 0 до 0,05 вольт для низкого логического уровня, и от 4,95 до 5 вольт для высокого логического уровня.
Представленные значения дают понять, что запас помехоустойчивости КМОП логических элементов гораздо больше аналогичного показателя ТТЛ-элементов: 1,45 вольт как для логического нуля, так и для логической единицы, против максимального запаса в 0,7 В в случае ТТЛ. Другими словами, КМОП-схемы могут выдержать более чем вдвое высокий наложенный шум на входе без ошибок интерпретации сигнала как логического нуля или единицы.
Запас помехоустойчивости КМОП логических схем становится ещё больше при более высоких рабочих напряжениях. В отличие от элементов ТТЛ, напряжение питания которых не превышает 5 вольт, напряжение питания КМОП-схем может достигать 15 (а в некоторых случаях и 18) вольт. Ниже показаны приемлемые уровни логических нуля и единицы, для выхода и входа КМОП-ИС, работающих при напряжении питания 10 и 15 вольт соответственно:
Помехоустойчивость при единичных (разовых) скачках напряжения, появления помехи (наводки)
В пределах «неопределённого» диапазона для любого входа логического элемента, будет иметься точка разделения актуального сигнала низкого уровня от диапазона действительного входного сигнала высокого уровня. То есть, где-то между наименьшим напряжением сигнала высокого логического уровня и наибольшим напряжением сигнала низкого логического уровня гарантированного производителем, существует порог напряжения, при котором логическая схема будет менять интерпретацию сигнала с высокого на низкий и наоборот. В случае большей части логических схем, это напряжение соответствует одной определённой точке:
При наличии шумового напряжения переменного тока, наложенного на входной сигнал постоянного тока единственная точка, в которой схема переменит интерпретацию логического уровня будет обуславливать ошибочный сигнал на выходе.
Подобная проблема характерна также для аналоговых ОУ-компараторов напряжения. В случае одиночной пороговой точки смены логического уровня наличие значительного шума может привести к неверной интерпретации логического уровня на выходе.
Эту проблему можно решить путём введения в цепь усилителя положительной обратной связи. В случае операционного усилителя необходимо соединить выход с неинвертирующим входом через резистор. Схемы подобного типа называются триггерами Шмитта. Триггеры Шмитта идентифицируют логический уровень сигнала согласно двум пороговым уровням: при нарастающем напряжении (VT+), и при падающем напряжении (VT-):
На схемах триггеры Шмитта изображаются с символом «гистерезиса». Гистерезис, вызванный положительной обратной связью в схеме логического элемента, придаёт схеме дополнительную помехоустойчивость. Триггеры Шмитта часто используются в схемах с высокой вероятностью шума на входе, а также в тех случаях когда ошибочно интерпретированный сигнал на выходе приведёт к некорректной работе системы в целом.
Различные требования по уровням напряжения ТТЛ- и КМОП-элементов создают определённые проблемы при использовании в одной схеме элементов двух типов. Хотя работа КМОП логических элементов может осуществляться при том же напряжении питания 5,00 В, которое необходимо для элементов ТТЛ, выходные уровни напряжения ТТЛ логики несовместимы с входными требованиями по напряжению для КМОП-схем.
Возьмём к примеру ТТЛ-элемент НЕ-И, сигнал с выхода которого подаётся на вход КМОП-инвертора. Питание обоих элементов составляет 5,00 В (Vcc). Если с выхода элемента ТТЛ приходит сигнал логического нуля (т.е. между 0 и 0,5 В), то он будет верно интерпретирован на входе КМОП-схемы как сигнал низкого логического уровня (т.е. сигнал между 0 и 1,5 В):
Однако, если с выхода элемента ТТЛ приходит сигнал логической единицы (т.е. между 5 и 2,7 В), то он может быть неверно интерпретирован на входе КМОП-схемы как сигнал высокого логического уровня (т.е. ожидается сигнал между 5 и 3,5 В):
Такое несоответствие может привести к тому, что «правильный» сигнал высокого уровня на выходе ТТЛ- элемента (правильный с точки зрения стандартов ТТЛ) будет лежат в «неопределённом» диапазоне входа КМОП-схемы, и быть неверно воспринят как сигнал логического нуля принимающим элементом. Простым решением этой проблемы может стать повышение сигнала логической единицы элемента ТТЛ с помощью нагрузочного повышающего резистора:
Однако потребуется гораздо более серьёзная переделка схемы, если питание КМОП-схемы выше 5 вольт:
Проблемы не возникнет в случае логического нуля, однако всё обстоит совершенно иначе в случае сигнала высокого логического уровня с выхода элемента ТТЛ. Диапазон выходного напряжения 2,7-5 В с выхода элемента ТТЛ совершенно не соответствует приемлемому диапазону 7-10 В КМОП логической схемы. Если мы используем ТТЛ-схемы с открытым коллектором, то нагрузочный резистор, включённый в шину питания Vdd 10 вольт, поднимет сигнал высокого логического уровня до полного напряжения питания КМОП логической схемы. Поскольку в схеме с открытым коллектором в наличии только втекающий ток, напряжение логической единицы полностью определяется тем напряжением питания, к которому подключён повышающий резистор, что помогает решить проблему несоответствия уровней напряжения.
Благодаря прекрасным характеристикам выходного напряжения КМОП схем, проблем при подключения ТТЛ элемента к выходу КМОП схемы обычно не возникает. Единственной серьёзной проблемой может стать токовая нагрузка, поскольку КМОП-схема должна обеспечивать втекающий ток на каждый вход элемента ТТЛ в случае логического нуля.
Если КМОП-схема питается от источника напряжения выше 5 вольт (Vcc), то возникнет проблема. Напряжение логической единицы КМОП-схемы выше 5 вольт не будет находиться в диапазоне допустимых входные параметров элемента ТТЛ. Решением этой проблемы может стать инвертор с «открытым коллектором» на дискретном NPN-транзисторе, используемом для соединения двух логических схем:
Повышающий резистор Rpullup используется опционально, поскольку входы элементов ТТЛ принимают высокий логический уровень, когда находятся в плавающем состоянии, что и произойдёт, когда выход КМОП-схемы будет низким, а транзистор будет находиться в состоянии отсечки. Конечно, важным последствием такого решения является логическая инверсия, создаваемая транзистором: когда на выходе КМОП-схемы будет сигнал логического нуля, элемент ТТЛ будет «видеть» логическую единицу и наоборот. Однако, если принимать эту инверсию во внимание, то корректная работа схемы не будет нарушена.
Основные логические понятия. Логические уровни.
Входной сигнал по своей природе может быть чисто дискретным, например импульсы в детекторе частиц или «биты» информации, поступающие от ключа, клавиатуры или ЭВМ. В подобных случаях естественно и удобно использовать цифровую электронику, т. е. схемы, которые имеют дело с информацией, представленной в виде «единиц» или «нулей».
Для того чтобы непрерывную (аналоговую) информацию можно было обрабатывать на ЭВМ или хранить в виде чисел, ее необходимо преобразовать в цифровую форму и наоборот (с помощью цифро-аналоговых ЦАП и аналого-цифровых АЦП-преобразователей). Характерным примером служит ситуация, в которой микропроцессор или ЭВМ воспринимает сигналы от экспериментальной или промышленной установки, на основе полученных данных управляет параметрами эксперимента и хранит полученные результаты для последующего использования в процессе эксперимента.
Другим интересным примером, который демонстрирует возможности цифровых методов, является передача аналоговых сигналов без искажений, связанных с воздействием помех. Например, звуковые и видеосигналы, передаваемые по кабелю или с помощью радиоволн, воспринимают «шум», который потом нельзя отделить от полезного сигнала. Если же передаваемый сигнал преобразовать в ряд чисел, определяющих его амплитуду в последовательные моменты времени. Затем эти числа передавать в виде цифровых сигналов. В таком случае аналоговый сигнал, восстановленный на приемной стороне (с помощью ЦАП), не будет содержать ошибок, Конечно, если уровень шума в канале связи не настолько высок, чтобы помешать правильному распознаванию «единиц» и «нулей».
Этот метод, известный под названием импульснокодовой модуляции (ИКМ), особенно эффективен в том случае, когда сигнал должен проходить через ряд ретрансляторов. Например, при межконтинентальной телефонной связи. Восстановление цифрового сигнала в каждом пункте ретрансляции гарантирует помехоустойчивую передачу. Космические зонды с помощью ИКМ передают на землю данные и изображения. Цифровая звукозапись в вашем доме размещается на цифровых носителях информации, которые хранят стереомузыкальные произведения в виде 16 разрядов каждые 23 мкс, порядка 6 млрд бит информации на все.
Возможности цифровой аппаратуры настолько велики, что задачи, предназначенные, казалось бы, исключительно для аналоговых методов, гораздо лучше зачастую решаются цифровым путем. Например, в аналоговом измерителе температуры можно установить микропроцессор и память, в результате этого повысится точность измерений за счет компенсации нелинейности прибора. Подобные применения микропроцессоров стали обычным делом.
Высокий и низкий уровни
Под цифровой электроникой подразумевается, как правило, только два состояния, например транзистор может быть либо закрыт, либо насыщен. В качестве параметра обычно выбирают не ток, а напряжение, уровень которого может быть ВЫСОКИМ или НИЗКИМ.
Эти два состояния могут представлять различные «биты» (binary digits-двоичные разряды) информации, например, следующим образом:
один бит числа — ключ замкнут или разомкнут, присутствует или отсутствует сигнал, уровень аналогового сигнала выше или ниже заданного предела, некоторое событие произошло или не произошло, требуется или не требуется выполнять некоторые действия и т.п.
Состояния ВЫСОКОГО и НИЗКОГО уровней определяют некоторым заданным образом «истинные» и «ложные» значения в булевой алгебре. Если в какой-либо точке схемы истинное значение определяет ВЫСОКИЙ уровень, то говорят, что эта сигнальная линия использует «положительную логику» и наоборот. Пример «отрицательной логики» показан на рисунке 1.
Когда состояние КЛЮЧ ЗАМКНУТ истинно, выход имеет НИЗКИЙ уровень. Выходной сигнал, таким образом, соответствует «отрицательной логике» (более правильным было бы название «нулевая логика», поскольку отрицательное напряжение в схеме отсутствует) и может быть обозначен, как показано на рисунке 1.
Черта над символом означает операцию НЕ, т. е. данная линия имеет ВЫСОКИЙ уровень, когда ключ не замкнут. Наличие или отсутствие черты отрицания над обозначением говорит о том, какой уровень (ВЫСОКИЙ или НИЗКИЙ) будет иметь данный провод, когда заданное условие (КЛЮЧ ЗАМКНУТ) истинно.
Цифровая схема «знает», что за сигнал она представляет по тому, откуда поступает этот сигнал, так же как в аналоговой схеме выход какого-либо операционного усилителя «представляет» определенную величину. Цифровые схемы, однако, обладают дополнительной гибкостью. Иногда одни и те же сигнальные линии используются для передачи различных видов информации и для посылки ее в разных направлениях в различные моменты времени. Для того чтобы выполнить это «мультиплексирование», необходимо посылать дополнительную информацию (адресные биты или биты состояния).
Понятия 1 и 0 используются в булевой алгебре для обозначения утверждений ИСТИНА и ЛОЖЬ соответственно. В том же значении они иногда используются и в электронике, но, к сожалению, здесь они применяются также и в другом смысле, а именно:
1 означает высокий уровень (символ В), а 0 — НИЗКИЙ уровень (символ Н).
Диапазон напряжений высокого и низкого уровней.
Значения напряжений, соответствующих ВЫСОКИМ и НИЗКИМ уровням, могут колебаться в некотором диапазоне. Например, для высокоскоростной КМОП логики входные напряжения от уровня земли до 1,5 В представляются как НИЗКИЙ уровень, а напряжения в пределах 1,5 В от напряжения питания 4-5 В — как ВЫСОКИЙ уровень. Типичные напряжения НИЗКОГО и ВЫСОКОГО состояний составляют десятую долю В выше 0 и ниже 5 В соответственно (остаточное напряжение одного МОП-транзистора).
Такие широкие диапазоны выбраны для того, чтобы изготовитель микросхем имел в своем распоряжении определенный допуск, в пределах которого параметры схемы могли бы колебаться за счет изменения температуры, нагрузки, напряжения питания, а также под воздействием шумов.
Схема, получив сигнал, определяет, каков его уровень (ВЫСОКИЙ или НИЗКИЙ), и действует соответствующим образом. Если помеха не превращает 1 в 0 или наоборот, то все прекрасно и любые помехи отсеиваются на каждой ступени, поскольку на выходе схемы восстанавливаются «чистые» значения 1 или 0. Цифровая электроника в этом смысле не подвержена влиянию помех и является идеальной.
Термин помехоустойчивость используется здесь для обозначения максимального уровня помехи, которая, будучи добавлена к логическому сигналу при самых неблагоприятных условиях, не будет еще приводить к ошибочной работе схемы. Например, для элементов ТТЛ помехоустойчивость составляет 0,4 В, так как любой сигнал ниже 0,8 В интерпретируется ими как НИЗКИЙ уровень, а любой сигнал выше 2,0 В-как ВЫСОКИЙ, в то время как уровни выходных сигналов составляют в самом неблагоприятном случае 4-0,4 и 4-2,4 В соответственно. В действительности помехоустойчивость этих схем значительно выше приведенной величины, поскольку типичные значения ВЫСОКОГО и НИЗКОГО напряжений составляют 4-0,2 и 3,4 В, а входной порог принятия решения равен
Однако необходимо помнить, что хорошая схема рассчитана на самый неблагоприятный случай. Не следует также забывать о том, что различные семейства логических элементов обладают различной помехоустойчивостью. Элементы КМОП имеют по сравнению с ТТЛ более высокую помехоустойчивость, а быстродействующие элементы ЭСЛ (эми́ттерно-свя́занной ло́гики) — более низкую. Конечно, восприимчивость к шуму цифровых систем зависит также от амплитуды шума, которая в свою очередь зависит от таких факторов, как параметры выходной ступени индуктивности проводников земли, существования длинных линий «шин», скорости нарастания на выходе во время логического перехода (когда из-за емкостной нагрузки возникают переходные токи, вызывающие выбросы напряжения линии земли).
Диаграмма на рисунке 2 показывает диапазоны напряжений, которые соответствуют двум логическим состояниям (ВЫСОКИЙ и НИЗКИЙ) для самых популярных семейств цифровой логики. Для каждого логического семейства необходимо определить допустимые значения как входных, так и выходных напряжений, соответствующих состояниям ВЫСОКИЙ и НИЗКИЙ.
Закрашенная площадь выше линии показывает допустимый диапазон выходных напряжений, при котором гарантируются логические состояния НИЗКИЙ и ВЫСОКИЙ без ошибок. Две стрелки сверху
, указывают типовые выходные значения (НИЗКИЙ и ВЫСОКИЙ), встречающиеся на практике.
Закрашенная площадь ниже линии показывает диапазон входных напряжений, гарантирующий представление как НИЗКИЙ или ВЫСОКИЙ. Стрелка внизу
указывает типовое напряжение логического переключения, т. е. линию, разделяющую уровни НИЗКИЙ и ВЫСОКИЙ. Во всех случаях логическое состояние ВЫСОКИЙ более положительно, чем логическое НИЗКИЙ.
Значения «минимальный», «типовой» и «максимальный» в электронных спецификациях требуют нескольких слов для пояснения. Наиболее часто, изготовитель гарантирует, что компоненты будут попадать в диапазон минимум-максимум с наибольшей вероятностью к «типовому». Для используемых типовых спецификаций при проектировании схем это означает, что схемы должны работать надежно внутри диапазона, заданного минимумом и максимумом. В частности, хорошо спроектированная схема должна функционировать при всех возможных комбинациях минимальных и максимальных значений (даже на самый плохой случай).
Числовые коды
В большинстве случаев рассмотренные выше условия, которые могут быть представлены цифровыми уровнями, просты и наглядны. Более сложный и интересный вопрос заключается в том, как с помощью цифровых уровней представить часть числа.
Десятичное (с основанием 10) число представляет собой строчку из цифр. При этом подразумевается, что они должны быть умножены на последовательные степени числа 10 для образования индивидуальных произведений, а затем вместе сложены.
Например,
Для записи числа требуется десять символов (от 0 до 9), а степень числа 10, на которую должна быть умножена цифра, определяется ее положением по отношению к десятичной запятой.
Если мы хотим представить число с помощью только двух символов (0 и 1), то такая система счисления будет называться двоичной или системой с основанием 2. В этом случае каждая 1 или 0 будет умножаться на последовательные степени числа 2.
Например,
11012 = 1 х 2 3 + 1 х 2 2 + 0 х 2 1 + 1 х 2° = 1310
Отдельные «единицы» и «нули» в записи, представляющей двоичное число, называются «битами» (от слов binary digits-двоичный разряд). Индекс (записываемый всегда по основанию 10) указывает, какая используется система счисления. Он часто бывает нужным для того, чтобы избежать путаницы, так как все символы выглядят одинаково.
Только что описанный метод преобразует число из двоичной формы в десятичную. Для того чтобы произвести обратное преобразование, десятичное число нужно последовательно делить на 2, каждый раз записывая остаток.
Для преобразования числа в двоичное нужно произвести следующие операции:
13/2 = 6, остаток 1;
6/2 = 3, остаток 0;
3/2 = 1, остаток 1;
1/2 = 0, остаток 1;
это дает
Заметим, что ответ образуется, начиная с младшего значащего разряда (МЗР).
Шестнадцатеричное представление чисел.
Для описания систем только с двумя состояниями естественно применять двоичные числа. Однако это не единственный способ. Поскольку двоичные числа имеют большую длину, для их записи используется шестнадцатеричное (с основанием 16) представление. Для записи двоичного числа в шестнадцатеричном коде его разбивают на группы по 4 бит, каждая из которых может принимать значения от 0 до 15. Поскольку для обозначения каждой шестнадцатеричной позиции мы хотим использовать один символ, величины 10-15 будем обозначать буквами латинского алфавита от А до F:
7071О = 10110000112 = (10 110000112) = 2С316.
Шестнадцатеричное представление лучшим образом соответствует байтовой (1 байт = 8 бит) структуре ЭВМ, которая чаще всего реализуется в виде 16- или 32-разрядных машинных «слов». При этом каждое слово состоит из 2 или 4 байтов. Буквенно-цифровые знаки (буквы, цифры или символы) представляются в виде одного байта. Таким образом, каждый байт в шестнадцатеричной системе состоит из двух шестнадцатеричных цифр, 16-разрядное машинное слово из 4-х шестнадцатеричных цифр и т. д.
Например, в широко используемом коде ASCII:
— малое «а» в ASCII-представлении — 01100001 (61 в шестнадцатеричном коде, который записывается как 61н),
— «b» есть 62н и т. д.
Как другой пример, размещение памяти в компьютере с памятью 64Кb (65536 байт) может определяться 2-байтным адресом, поскольку наинизший адрес есть 0000н, наивысший-FFFFн. Вторая половина памяти начинается с 8000н, а четвертая четверть памяти — с С000н.
Можно случайно встретить «восьмеричную» запись (основание 8), к сожалению, в ранних ЭВМ были приняты 12- и 32-разрядные слова, которые использовали 6-разрядное представление буквенно-цифровых знаков. Поскольку 6-разрядные знаки было логично представлять в восьмеричном коде, внедрилась эта система счисления.
Двоично-десятичный код
Другим методом представления чисел является двоичное кодирование каждой десятичной цифры, записываемой в виде группы из 4 двоичных разрядов. Например,
Заметим, что двоично-десятичное представление числа не эквивалентно двоичному, которое в данном случае будет иметь вид:
Можно считать, что разряды двоично-десятичного кода, начиная с правого, выражают числа 1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800 и т.д. Очевидно, что двоично-десятичное кодирование с точки зрения использования двоичных разрядов не экономично, поскольку каждая группа из 4 бит способна представлять числа от 0 до 15, но используется для записи числа, не превышающего 9.
Двоично-десятичное кодирование очень удобно в тех случаях, когда требуется воспроизвести число в десятичной форме, так как в этом случае каждый двоично-десятичный символ нужно лишь преобразовать в соответствующее десятичное число, а затем вывести его на индикацию.
Для выполнения этой функции существуют специальные интегральные микросхемы. В одном небольшом корпусе с простой топологией они содержат дешифратор двоично-десятичного кода, формирователи сигналов, буферный регистр и индикатор. На вход такой схемы нужно лишь подать логические уровни двоично-десятичного символа, после этого на ней высвечивается соответствующая цифра.
По этой причине двоично-десятичное кодирование используется обычно при вводе и выводе цифровой информации. К сожалению, преобразование между двоично-десятичным и чисто двоичным кодом сложно, так как каждая десятичная цифра зависит от состояния почти всех двоичных разрядов и наоборот. Тем не менее двоичная арифметика настолько эффективна, что в большинстве ЭВМ вся входная информация преобразуется в двоичную форму, а обратное преобразование производится лишь при ее выводе.
Числа со знаком
Прямой (знаковеличинный) код.
Рано или поздно возникнет необходимость представлять отрицательные числа в двоичном коде. В первую очередь это потребуется в устройствах, которые выполняют вычислительные операции. Самое простое-отвести один разряд (скажем, старший) под знак числа, а остальные использовать для представления его величины. Этот способ называется знаковеличинным или прямым кодом и соответствует обычной записи числа со знаком (таблица 1).
Смещенный код.
Смещенный код является вторым методом представления числа со знаком. Чтобы получить смещенный код какого-либо числа, нужно к этому числу, представленному в прямом коде, прибавить половину наибольшего возможного числа (таблица 1). Последовательность всех чисел благодаря этой операции, начиная с наибольшего отрицательного числа и кончая наибольшим положительным числом, представляет простую двоичную прогрессию и может быть сформирована с помощью двоичных счетчиков. Информацию о знаке здесь также несет старший разряд, но нуль становится однозначным. Смещенный код используется в АЦП и ЦАП (преобразователях), однако он еще неудобен для выполнения вычислений.
Дополнительный код.
При выполнении операций над целыми числами чаще используется представление чисел в форме дополнения до двух, или, иначе, в дополнительном коде. В такой системе положительные числа записываются просто как двоичные без знака, а отрицательные выражаются таким числом, которое, будучи добавлено к положительному числу той же величины, даст в результате нуль. Чтобы получить отрицательное число, нужно для каждого бита положительного числа сформировать дополнение до 1, или обратный код (т. е. вместо каждого 0 записать 1 и наоборот), и затем к полученному результату прибавить 1 (это даст дополнительный код).
Из таблицы 1 видно, что числа в дополнительном коде отличаются от чисел в смещенном коде инверсным значением старшего значащего разряда (СЗР). Точно так же, как и при других формах представления, СЗР несет информацию о знаке. Здесь имеется только один нуль, который удобно представляется нулевыми состояниями всех разрядов (при очистке счетчика или регистра в них заносится нулевое значение).
Арифметика в дополнительном коде.
Арифметические операции в дополнительном коде выполняются довольно просто. Чтобы получить сумму двух чисел, достаточно сложить соответствующие разряды (с учетом переноса), например
5 + (-2): 0101 (+5)
0011(+3)
Чтобы вычесть В из А, нужно взять дополнительный код числа В и прибавить его к числу А (т. е. прибавить отрицательное число):
2 — 5:0010(+2)
1011 (-5)
1101(-3)
(+5 = 0101: обратный код-1010, дополнительный код-1011)
Умножение в дополнительном коде выполняется также непосредственно.
Дополнительный код благодаря естественности вычислений в нем повсеместно используется в ЭВМ для выполнения арифметических операций над целыми числами. Следует отметить, что числа с «плавающей запятой» обычно используются в знаковеличинной форме, называемой знак-порядок-мантисса.
Код Грея
Код, рассматриваемый ниже, используется в механических шифраторах угла поворота вала, а также в других устройствах. Он носит название кода Грея и обладает тем свойством, что при переходе от любого его состояния к следующему изменяется лишь один разряд (бит), что позволяет предотвратить ошибки, поскольку в данном случае при переходе между двумя закодированными значениями все разряды никак не могут измениться одновременно.
Если бы использовался чисто двоичный код, то при переходе, например, от 7 к 8 на входе можно было бы получить число 15. Для формирования состояний кода Грея существует простое правило:
начинать нужно с нулевого состояния, а затем для получения каждого следующего нужно выбрать самый младший разряд, изменение которого приводит к образованию нового состояния, и взять его инверсное значение.
Коды Грея могут содержать любое число разрядов. Они применяются при «параллельном кодировании» — методе быстродействующего аналого-цифрового преобразования.
Смотрите также:
Работа с цифровыми интегральными микросхемами отечественного производства
Как известно, все микросхемы подразделяют на две группы — аналоговые и цифровые. Аналоговые микросхемы предназначены для работы с непрерывными во времени сигналами. К их числу можно отнести усилители радио-, звуковой и промежуточной частот, операционные усилители, стабилизаторы напряжения и тока, таймеры, аналого-цифровые и цифро-аналоговые преобразователи, генераторы и др. Для аналоговых микросхем характерно то, что входная и выходная электрические величины могут иметь любые значения в заданном диапазоне. В цифровых же микросхемах входные и выходные сигналы могут иметь один из двух уровней напряжения: высокий или низкий. В первом случае говорят, что мы имеем дело с высоким логическим уровнем, или логической 1, а во втором — с низким логическим уровнем, или логическим 0.