Арифметика в дополнительном коде
Компьютер создал не человек, а его отвращение к монотонному труду.
А. Алешин
Алгоритм перевода чисел из одной системы счисления в другую наиболее прост в том случае, когда одно из оснований этих систем является степенью другой, как, например, в случае двоичной и восьмеричной систем счисления. В таком случае алгоритм перевода состоит в простой замене чисел одной системы на равные им числа другой системы счисления (в случае положительных чисел). На начальном этапе удобно и полезно воспользоваться таблицей соответствия, приведенной в Приложении.
Пусть требуется перевести восьмеричное число 24738 в двоичное число. Воспользовавшись Таблицей соответствия изПриложения, получим:
24738 = 101001110112,
поскольку 28 = 0102, 48 = 1002, 78 = 1112... Следует помнить, что восьмеричное число кодируется тремя битами, и выписывать триады нужно полностью. Исключением из этого правила может служить только старшая триада, в которой старший бит (СБ) равен нулю.
Сложнее обстоит дело при переводе чисел из восьмеричной системы в шестнадцатеричную. Обычно вначале переводят восьмеричное число в двоичное, а затем уже в шестнадцатеричное по алгоритму, описанному в разделе Перевод чисел из двоичной системы в восьмеричную и шестнадцатеричную. Для рассмотренного выше примера имеем:
24738 = 101001110112 = 0101 0011 10112 = 53B16
Моде́ль (фр. modèle, от лат. modulus — «мера, аналог, образец») — это система, исследование которой служит средством для получения информации о другой системе[1], это упрощённое представление реального устройства и/или протекающих в нём процессов, явлений.
Построение и исследование моделей, то есть моделирование, облегчает изучение имеющихся в реальном устройстве (процессе, …) свойств и закономерностей. Применяют для нужд познания (созерцания,анализа и синтеза).
Моделирование является обязательной частью исследований и разработок, неотъемлемой частью нашей жизни, поскольку сложность любого материального объекта и окружающего его мира бесконечна вследствие неисчерпаемости материи и форм её взаимодействия, — как внутри себя, так и с внешней средой.
Одни и те же устройства, процессы, явления и т. д. (далее — «системы») могут иметь много разных видов моделей. Как следствие, существует много названий моделей, большинство из которых отражает решение некоторой конкретной задачи. Ниже приведена классификация и дана характеристика наиболее общих видов моделей.
Мультиплексор - это устройство, которое осуществляет выборку одного из нескольких входов и подключает его к своему выходу, в зависимости от состояния двоичного кода. Другими словами, мультиплексор - переключатель сигналов, управляемый двоичным кодом и имеющий несколько входов и один выход. К выходу подключается тот вход, чей номер соответствует двоичному коду. Ну и навороченное определение:мультиплексор - это устройство, преобразующее параллельный код в последовательный.
Структуру мультиплексора можно представить различными схемами, но более понятна, на мой взгляд, вот эта:
Рис. 1 - Структура мультиплексора
Самая большая хренотень есть не что иное, как элемент И-ИЛИ. Конкретно здесь элемент 4-х входовый. Ну а квадратики с единичками внутри, если кто не помнит, инверторы. Разберем выводы. Те, что слева, а именно D0-D3, называются информационными входами. На них чего-нибудь подают. Входы посередке, а именно А0-А1, называются адресными входами. Вот сюда именно и подается двоичный код, от которого зависит, какой из входов D0-D3 будет подключен к выходу, на этой схеме обозначенному как Y. Вход С, черт его знает, нафига он здесь. Вроде бы как разрешение работы, а может просто для понта. Ну его в баню. На схеме еще есть входы адреса с инверсией. Так вот они тоже показаны здесь для понта. На этом рисунке показан четырехвходовой, или как еще его называют, 4Х1 мультиплексор. Потому и адресных входов всего 2. Как нам известно, максимальное число переменных определяется как 2n, где n - разряд кода. Здесь мы видим, что переменных четыре штуки, а значит разряд будет равен 2 (22 = 4). Для пояснения принципа работы этой схемы посмотрим на табличку истинности:
A1 |
A0 |
Y |
0 |
0 |
D0 |
0 |
1 |
D1 |
1 |
0 |
D2 |
1 |
1 |
D3 |
Вот так двоичный код выбирает нужный вход. Т. е., если имеем четыре объекта, ну, скажем, они пуляют сигналы, а устройство отображения у нас одно. Берем мультик (мультиплексор) и втуляем его в схему. В зависимости от двоичного кода к устройству отображения подключается сигнал от нужного объекта. Такой вот, дохленький пример.
Микросхемой мультик обозначается вот так:
Рис. 2 - Мультиплексор
Вообще, мультиплексоров всяких дофига. Есть и сдвоенные четырехвходовые, восьмивходовые, 16-ти входовые, счетверенные двухвходовые и пр. Тот, что на рисунке сделан от фонаря.
Демультиплексор. Демультиплексор - устройство, обратное мультиплексору. Т. е., у демультиплексора один вход и куча выходов. Двоичный код определяет, какой выход будет подключен ко входу. Другими словами, демультиплексор - это устройство, которое осуществляет выборку одного из нескольких выходов и подключает его к своему входу или, это переключатель сигналов, управляемый двоичным кодом и имеющий один вход и несколько выходов. Ко входу подключается тот выход, чей номер соответствует состоянию двоичного кода. И навороченное определение: демультиплексор - это устройство, которое преобразует последовательный код в параллельный.
Обычно в качестве демультиплексора используют дешифраторы двоичного кода в позиционный, в которых вводят дополнительный вход стробирования. Из-за схожести структур мультиплексора и демультиплексора в КМОП сериях есть микросхемы, которые одновременно являются мультиплексорром и демультиплексором, смотря с какой стороны подавать сигналы, например, К561КП1, работающая как переключатель 8х1 и переключатель 1х8 (то бишь, как мультиплексор и демультиплексор с восемью входами или выходами). Кроме того, в КМОП микросхемах помимо переключения цифровых сигналов (лог. 0 или 1) существует возможность переключения аналоговых. Другими словами, это переключатель аналоговых сигналов, управляемый цифровым кодом. Такие микросхемы называются коммутаторами. К примеру, с помощью коммутатора можно переключать сигналы, поступающие на вход усилителя (селектор входов). Вот напоследок простенькую схемку селектора входов УМЗЧ мы и рассмотрим. Построим ее, ну скажем, с использованием триггеров и мультиплексора.
Рис. 3 - Селектор входных сигналов
Вот такая нехитрая схемка. Итак, разберем работу и деталюшки. На триггерах микросхемы DD1 собран кольцевой счетчик нажатий кнопки разрядностью 2 (два триггера - 2 разряда). Двухразрядный двоичный кодпоступает на адресные входы D0-D1 микросхемы DD2. Микросхема DD2 представляет собой сдвоенный четырехканальный коммутатор. В соответствии с двоичным кодом к выходам микросхемы А и В подключаются входы А0-А3 и В0-В3 соответственно. Элементы R1, R2, C1 устраняют дребезг контактов кнопки. Дифференцирующая цепь R3C2 устанавливает триггеры в нулевое состояние при включении питания, при этом к выходу подключается первый вход. При нажатии на кнопку триггер DD1.1 переключается в состояние лог. 1 и к выходу подключается второй вход и т. д. Перебор входов идет по кольцу, начиная с первого.
С одной стороны просто, с другой немного неудобно. Черт его знает, сколько раз нажали на кнопку после включения и какой вход подключен к выходу. Хорошо бы поставить индикатор подключенного входа. Вот тут-то и пригодится семисегментный дешифратор. Нажимаем ссылочку, вспоминаем семисегментный дешифратор и смотрим на схемку (там, где циферки бегут). Берем дешифратор и индикатор, обрубаем счетчик и другую галиматью, переносим дешифратор с индикатором на схему коммутатора и первые два входа дешифратора (на схеме обозначен как DD3), т. е. 1 и 2 (выв. 7 и 1) подключаем к прямым выходам триггеров DD1.1 DD1.2 (выв. 1 и 13). Входы дешифратора 4 и 8 (выв. 2 и 6) кидаем на корпус (т. е. подаем лог. 0). Все! Индикатор будет показывать состояние кольцевого счетчика, а именно циферки от 0 до 3. Цифиря 0 соответствует первому входу, 1 - 2-му и т. д.
Mультипле́ксор — устройство, имеющее несколько сигнальных входов, один или более управляющих входов и один выход. Мультиплексор позволяет передавать сигнал с одного из входов на выход; при этом выбор желаемого входа осуществляется подачей соответствующей комбинации управляющих сигналов.
Аналоговые и цифровые[1][2] мультиплексоры значительно различаются по принципу работы. Первые электрически соединяют выбранный вход с выходом (при этом сопротивление между ними невелико — порядка единиц/десятков ом). Вторые же не образуют прямого электрического соединения между выбранным входом и выходом, а лишь «копируют» на выход логический уровень ('0' или '1') с выбранного входа. Аналоговые мультиплексоры иногда называют ключами[3] или коммутаторами.
Устройство, противоположное мультиплексору по своей функции, называется демультиплексором. В случае применения аналоговых мультиплексоров (с применением ключей на полевых транзисторах) не существует различия между мультиплексором и демультиплексором; такие устройства могут называться коммутаторами.
Дешифраторы
Линейный или одноступенчатый дешифратор.Дешифратор - это комбинационное устройство, предназначенное для преобразования параллельного двоичного кода в унитарный, т.е. позиционный код. Обычно, указанный в схеме номер вывода дешифратора соответствует десятичному эквиваленту двоичного кода, подаваемого на вход дешифратора в качестве входных переменных, вернее сказать, что при подаче на вход устройства параллельного двоичного кода на выходе дешифратора появится сигнал на том выходе, номер которого соответствует десятичному эквиваленту двоичного кода. Отсюда следует то, что в любой момент времени выходной сигнал будет иметь место только на одном выходе дешифратора. В зависимости от типа дешифратора, этот сигнал может иметь как уровень логической единицы (при этом на всех остальных выходах уровень логического 0), так и уровень логического 0 (при этом на всех остальных выходах уровень логической 1). В дешифраторах каждой выходной функции соответствует только один минтерм, а количество функций определяется количеством разрядов двоичного числа. Если дешифратор реализует все минтермы входных переменных, то он называется полным дешифратором (в качестве примера неполного дешифратора можно привести дешифратор двоично-десятичных чисел).
Рассмотрим пример синтеза дешифратора (полного) 3 ® 8, следовательно, количество разрядов двоичного числа - 3, количество выходов - 8.
Таблица состояний дешифратора
-
Х3 Х2Х1
Z0 Z1 Z2 Z3 Z4 Z5 Z6 Z7
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
7Как следует из таблицы состояния, каждой функции соответствует только один минтерм, следовательно, не требуется минимизировать эти функции (рис. 2.9).
Из полученных уравнений и схемы дешифратора следует, что для реализации полного дешифратора на m входов (переменных) потребуются n = 2m элементов конъюнкции (количество входов каждого элемента “И” равно m)и m элементов отрицания.
Пирамидальные дешифраторы. Пирамидальные дешифраторы позволяют реализовать схему на базе только двухвходовых элементов логического умножения (конъюнкции). Рассмотрим пример реализации дешифратора 3®8
|
|
|
|
Для построения такого дешифратора потребуется 12 двухвходовых элементов 2И и три инвертора. Пирамидальные дешифраторы при больших количествах входных переменных позволяют несколько упростить конструкцию устройства, т.е. уменьшить количество интегральных микросхем.
Промышленностью стран СНГ, в том числе и России, выпускаются различные модификации дешифраторов в интегральном исполнении. Обозначение дешифраторов на принципиальных схемах показано на рис. 2.10.
|
|
|
|
Двухступенчатые дешифраторы на интегральных микросхемах. Пример дешифратора для пятиразрядного двоичного кода. Каждый дешифратор выполнен с управляющими входами, объединенными конъюнктивно. При выполнении условия конъюнкции на выходе, номер которого соответствует десятичному эквиваленту двоичного кода, появится уровень логического “0”. В противном случае все выходы находятся в состоянии логической единицы (рис.2.11). Как следует из рис. 2.11, пятиразрядный дешифратор, имеющий 32 выхода, выполнен на базе четырех дешифраторов с использованием лишь одного дополнительного инвертора, что достигнуто благодаря наличию входной управляющей логики каждой интегральной микросхемы. Нетрудно заметить, что входная логика дешифраторов КР1533ИД7 позволяет реализовать функцию дешифратора 2®3 без дополнительных элементов, а полного дешифратора 2®4 с использованием одного инвертора.
|
|
|
|
Шифраторы
Шифраторы – устройства, осуществляющие преобразование десятичных чисел в двоичный код. Шифратор содержит m входов, последовательно пронумерованных десятичными числами (0,1,2, ..., m-1) и n выходов. Подача сигнала на один из входов приводит к появлению на выходах n-разрядного двоичного кода, соответствующего номеру возведенного входа (таблица 3.5). Шифраторы широко используются в разнообразных устройствах ввода информации в цифровые системы.
Двоичные шифраторы преобразуют код «1 из N» в двоичный код, т. е. выполняют микрооперацию, обратную микрооперации дешифраторов. При возбуждении одной из входных цепей шифратора на его выходах формируется слово, отображающее номер возбужденной цепи.
Таблица 3.5 – Таблица функционирования шифратора
Возбужденный
вход |
Выход
a3 a2 a1 a0 |
F0
F1 F2 F3 F4 F5 F6 F7 F8 F9 |
0000
0001 0010 0011 0100 0101 0110 0111 1000 1001 |
Полный двоичный шифратор имеет 2n входов и п выходов. Одно из основных применений шифратора – ввод данных с клавиатуры, при котором нажатие клавиши с десятичной цифрой должно приводить к передаче в устройство двоичного кода данной цифры (тетрады двоично-десятичного кода). В этом случае нужен неполный шифратор «10х4» (рисунок 3.11, а), на примере которого рассмотрим принципы построения шифраторов.
Из таблицы 3.5 следует, что
Рисунок 3.11 – Схема ввода данных с клавиатуры (а)
и дешифратор «10х4» (б)
Для реализации шифратора на элементах ТТЛ, часто применяемых в периферийных устройствах, следует выразить полученные соотношения через операцию И–НЕ. Тогда
На основании этих выражений строится шифратор, показанный на рисунке 3.11, б.
Для указания старшей единицы (поиск разряда слова) используют шифраторы приоритета (рисунок 3.12). На вход этого шифратора поступает восьмиразрядное слово (инвертированное), на его выходе в виде трёхразрядного кода вырабатывается номер разряда содержащего старшую единицу.
Рисунок 3.12 – Упрощенная схема шифратора приоритета
Функции Z2, Z1,
и Z0 реализующая
с помощью комбинационной схемы КС,
структура которой определяется
полученными выше зависимостями. Кроме
того, схема имеет дополнительный вход
и
два дополнительных выхода—
и
,
обеспечивающие возможность каскадирования
шифраторов приоритета для анализа
положения старшей единицы в слове,
разрядность которого превышает 8.
Вход осуществляет стробирование шифратора. При единичном значении шифратор блокирован и можно производить смену входного слова без появления на выходе ложных сигналов. В это же время сигналы и также становятся единичными (в данном случае это пассивные сигналы). При нулевом значении разрешается работа шифратора и снимается блокировка с элементов И-НЕ. Сигнал играет роль стробирующего для следующей за данной группой разрядов группы младших разрядов данного слова. Только при условии нулевых значений всех разрядов данного слова и на выходе появится нуль, разрешающий работу младшей группы, что и требуется по логике работы многоразрядного шифратора. Сигнал A=1 оповещает о наличии хотя бы одной единицы в анализируемом слове.
Указатели старшей единицы с выходом в коде «один из N» можно получить путем дешифрации выхода шифратора приоритетов. Если позволяют требования к быстродействию, то эту же задачу можно решить проще — путем последовательного опроса разрядов в схеме на рисунке 3.13, где единичный сигнал опроса, подаваемый на схему со стороны старшего разряда, может распространяться от разряда к разряду (вправо) только до первого разряда, содержащего единицу.
Если в данном разделе нуль, то сигнал опроса пропускается дальше, а на выходе данного разряда остается нулевой сигнал. Если же в данном разряде единица, то на его выходе конъюнктор оказывается блокированным нулевым значением инвертированной переменной и дальнейшее распространение сигнала опроса прекращается. Одновременно на выходе данного разряда возникает единичный сигнал.
Рисунок 3.13 – Схема указателя старшей единицы
с последовательным опросом разрядов
Максимальное время, необходимое для опроса всех разрядов слова, пропорционально числу разрядов слова и равно ntk, где tk – задержка конъюнктора.
Эта же схема может вместе с двоичным шифратором, подключенным к ее выходу, давать номер разряда, содержащего старшую единицу.
Счётчик числа импульсов — устройство, на выходах которого получается двоичный (двоично-десятичный) код, определяемый числом поступивших импульсов. Счётчики могут строиться на двухступенчатых D-триггерах, T-триггерах и JK-триггерах.
Основной параметр счётчика — модуль счёта — максимальное число единичных сигналов, которое может быть сосчитано счётчиком. Счётчики обозначают через СТ (от англ. counter).
Счётчики классифицируют:
по числу устойчивых состояний триггеров
на двоичных триггерах
на троичных триггерах[1]
на n-ичных триггерах
по модулю счёта:
двоично-десятичные (декада);
двоичные;
с произвольным постоянным модулем счёта;
с переменным модулем счёта;
по направлению счёта:
суммирующие;
вычитающие;
реверсивные;
по способу формирования внутренних связей:
с последовательным переносом;
с ускоренным переносом;
с параллельным ускоренным переносом;
со сквозным ускоренным переносом;
с комбинированным переносом;
кольцевые;
по способу переключения триггера:
синхронные;
асинхронные;
Счётчик Джонсона[2]
Триггер (триггерная система) — класс электронных устройств, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по значению выходного напряжения. По характеру действия триггеры относятся к импульсным устройствам — их активные элементы (транзисторы, лампы) работают в ключевом режиме, а смена состояний длится очень короткое время.
Отличительной особенностью триггера как функционального устройства является свойство запоминания двоичной информации. Под памятью триггера подразумевают способность оставаться в одном из двух состояний и после прекращения действия переключающего сигнала. Приняв одно из состояний за «1», а другое за «0», можно считать, что триггер хранит (помнит) один разряд числа, записанного в двоичном коде.
При изготовлении триггеров применяются преимущественно полупроводниковые приборы (обычно биполярные и полевые транзисторы), в прошлом — электромагнитные реле, электронные лампы. В настоящее время логические схемы, в том числе с использованием триггеров, создают в интегрированных средах разработки под различные программируемые логические интегральные схемы (ПЛИС). Используются, в основном, в вычислительной технике для организации компонентов вычислительных систем: регистров, счётчиков, процессоров, ОЗУ.
JK -триггер
22
сентября 2011 года
Chiper
JK-триггеры являются самыми сложными из двоичных триггеров. Но они являются и универсальными. С помощью JK-триггера можно получить все другие типы триггеров. Но универсальность JK-триггеров ограничена. Так как JK-триггеры существуют только двухступенчатые, то, например, D-триггеры на JK-триггерах можно реализовать только непрозрачные.
Логическая схема JK-триггера на логических элементах
Логическая схема JK-триггера на логических элементах
JK-триггер аналогичен RS-триггеру, но отличие от последнего, не имеет запрещенных состояний. Так, вход J JK-триггера соответствует входу S RS-триггера, а вход K — входу R. Но, если в RS-триггере одновременная подача логической единицы на оба входа (R и S) была запрещена, то в JK-триггере при подаче на оба входа единиц, триггер меняет свое состояние на противоположное. При подаче на вход J логической единицы на выходу устанавливается единица, при подаче на вход K логической единицы на выходе получаем логический ноль.
Таблица истинности JK-триггера:
J |
K |
Q(t) |
Q(t+1) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
Условное графическое обозначение (УГО) JK-триггера:
УГО JK-триггеров: а)двухступенчатый JK-триггер со статическим управлением по входу С б) двухступенчатый JK-триггер со статическим управлением по входу С с асинхронными установочными входами S и R
D-триггер на основе JK-триггера:
T-триггер на основе JK-триггера:
Промышленные микросхемы JK-триггеров: SN7472, SN74107, SN74109, SN74112, SN74113
