Лабораторная работа _6

Лабораторная работа № 6

Исследование преобразователей кодов на сумматорах

Цель работы: изучить принцип построения различных схем на сумматорах и научиться их проектировать. Освоить методику моделирования комбинационных схем, преобразователей кодов с помощью прикладных программ.

6.1 Теоретическое введение
Лабораторная работа состоит из двух частей: первая часть выполняется на компьютере в пакете Multisim, вторая в пакете Max+ Plus2.
При подготовке к работе необходимо: проработать теоретический материал и конспект лекций; проанализировать суть индивидуального задания (таблица 1) и в соответствии с ним произвести экспериментальные исследования комбинационных схем, предварительно ознакомившись с описанием предложенных пакетов.
Сумматоры предназначены для выполнения операций сложения и вычитания как двоичных, так и десятичных чисел, а также используются при построении цифровых устройств, предназначенных для выполнения более сложных арифметических операций и в различных электронных устройствах обработки информации.
В данной лабораторной работе изучается методика синтеза, анализа и экспериментального исследования схем на полусумматорах и сумматорах. Лабораторная работа направлена на приобретение навыков функционального синтеза устройств на примерах построения взаимных преобразователей кодов, пороговых схем (ПС) и мажоритарных элементов (МЭ).
Взаимные преобразования кодов двоичных чисел (прямого, обратного, дополнительного и т.п.) применяют при выполнении арифметических операций с двоичными числами, например вычитания. В лабораторной работе рассматриваются вопросы их построения, как функционально законченных комбинационных схем (КС).
ПС и МЭ широко используют при построении систем автоматики.
Построение ПС и МЭ на логических элементах (ЛЭ) сопряжено с получением сложных переключательных функций, включающих десятки - тысячи логических операций. Существенное упрощение достигается при функциональном синтезе указанных КС на сумматорах. В лабораторной работе рассматривается методика такого синтеза.
В результате проведения лабораторной работы студент должен:
- усвоить основы методики синтеза КС на сумматорах;
- уметь синтезировать на сумматорах следующие КС: ПС и МЭ; взаимные преобразователи кодов;
- иметь представление о возможностях и целесообразности применения сумматоров при синтезе сложных КС определенного класса.

Таблица 6.1 Задание к лабораторной работе
№ варианта
Пороговая схема
Мажоритарный элемент
Преобразо-ватель
Рекомендованные к использованию микросхемы


3/12
13
*3
FULL_ADD(74183)/ HALF_ADD(-)/-
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·LF_ADD(-)/-(74185)


6/9
9
*3
FULL_ADD(74183)/ HALF_ADD(-)/-(-)


8/9
7
*4
FULL_ADD(74183)/ HALF_ADD(-)/-(-)


1/12
5
*5
FULL_ADD(74183)/ HALF_ADD(-)/-(-)


2/12
13
*6
FULL_ADD(74183)/ HALF_ADD(-)/-(-)


Примечания:
1) В таблице применены следующие обозначения:
*1 - преобразователь двоично-десятичного кода в двоичный код,
*2 - преобразователь двоичного кода в двоично-десятичный код,
*3 - преобразователь прямого кода в дополнительный код,
*4 - преобразователь дополнительного кода в прямой код,
*5 - преобразователь двоичного кода в код Грея.
*6 - преобразователь кода Грея в двоичный код.
2) Микросхемы, указанные без скобок следует применять в пакете Multisim, в скобках – Max+ Plus2. Если схема собирается в Max+Plus2, то при необходимости в качестве полусумматора можно воспользоваться микросхемой 74183 при этом не задействовав один из входов для каждого из «встроенных» полных сумматоров.

6.2 Пример построения пороговых схем в пакете Multisim
Пороговой схемой L из M (L/M) называют комбинационную схему, имеющую m входов и один выход y и реализующую y=1 только в тех случаях, когда не менее L входных сигналов равны единице.
Для обнаружения по критерию L/M потребуется M!/[L!(M-L)!]+1 логических элемента в базисе И-НЕ. Рассмотрим способ определения числа единиц на m позициях. Если это число единиц не менее L, применяется решение об обнаружении (y=1). Применение сумматоров для определения числа единиц позволяет существенно упростить расчетную часть и предельно снизить элементные затраты. Так как все входные переменные имеют одинаковый вес (единицу), то для их сложения с целью последующего сравнения пороговым числом L потребуются одноразрядные сумматоры.
Алгоритм построения ПС будет заключаться в следующем:
строится сумматор для сложения M единиц;
строится КС, позволяющая выявить (дешифрировать) требуемое число L на выходе построенного сумматора (если оно выявляется, то на выходе схемы должна быть единица).
Приведем пример синтеза пороговой схемы (6/9). На рис. 6.1 показана эта схема, реализованная на 6 одноразрядных сумматорах и одном ЛЭ ИЛИ. Если на вход сумматора подается переменная, имеющая вес 2m , то выход суммы имеет также вес 2m , а перенос – вес 2m+1. На все три входа сумматора можно подавать только переменные, имеющие одинаковые веса. С помощью сумматоров SM1-SM5 производится обычное сложение двоичных чисел. Выходными сигналами этой части являются сигналы yj, j=0,1,2,3. Так как L=6 – четное число, то переменная y0, имеющая вес 1, не может оказать влияние на превышение суммой переменных xM (m=1,2,3,4,5,6,7,8,9) порога L, т.е. эту переменную можно исключить из дальнейшего рассмотрения. Таким образом, остались три переменные: y1 - переменная, имеющая вес 4, и переменные y2 и y3 имеющие вес 2.
Очевидно, что порог L=6 будет превышен только в 2-х случаях:
1) если y1=1 и y2=1,
y1 и y3=1.
Поэтому для окончательного построения пороговой схемы надо реализовать функцию f(v)=y1y2 ( y1y3. Для реализации этой функции можно использовать сумматор SM6. Так как P1=A1B1 ( A1P0 ( B1P0 и S=A1 ( B1 ( P0, то, положив A1=y1, B1= y2 ( y3 и P0=0, получим, что f(v)=P1. Аналогичным образом можно реализовать любую пороговую схему при сколь угодно большом числе входных сигналов n.

Рис. 6.1 Пороговая схема 6/9


Рис. 6.2 Пороговая схема 6/9 с временными диаграммами

При построении ПС с условием 5/9 на одноразрядных сумматорах необходимо построить сумматор для сложения 9 единиц (рис. 6.3). На выходе схемы сложения необходимо построить КС, срабатывающую при условии L >= 5. Для этого необходимо просуммировать старший разряд с выхода сумматора, вес которого равен 4, с остальными выходами, объединенными по схеме ИЛИ. Если каждый из этих двух сигналов будет равен единице, то, сложив их на выходе переноса, получим требуемое значение, т.е. на выходе схемы будет высокий уровень, при L >= 5 и низкий уровень, при L < 5.
Схема сумматора должна иметь столько выходов, чтобы можно было закодировать число М. В рассматриваемом примере М = 9, значит, сумматор должен иметь 4 выхода. Для выполнения этого условия необходимо взять 5 одноразрядных сумматоров, где выход переполнения схемы сумматора является старшим разрядом дешифрируемого числа L, т.е. имеет вес = 4. Далее нам необходимо построить КС чтобы выявить число L = 5.


Рис. 6.3 Пороговая схема на одноразрядных полных сумматорах (5/9)


Рис. 6.4 Заданная последовательность сигналов для схемы 5/9 (см. рис. 6.3)
13 EMBED PBrush 1415
Рис. 6.5 Временные диаграммы для схемы 5/9 (см. рис. 6.3)


Рис. 6.6 Пороговая схема 5/9 в пакете MAX+Plus II


Рис. 6.7 Временные диаграммы для схемы 5/9

Рис. 6.8 Матрица временных задержек

Программа:
TITLE "porogovay_shema_5_9";
SUBDESIGN porogovay_shema_5_9
(
a, b, c, d, e, f, g, h, k: INPUT;
y : OUTPUT;
)
VARIABLE z : NODE;
BEGIN
z = a + b + c + d + e + f + g + h + k;
IF z>=5 THEN
y = VCC;
ELSE
y = GND;
END IF;
END;

6.3 Пример построения мажоритарного элемента в пакете Multisim
Мажоритарными элементами (МЭ) называются ПС, имеющие нечетное число М логически равноправных входов Хр и выполняющие функцию
13 EMBED Equation.2 1415
где v = (Xn,...., X1), Xp = 0 и 1, p = 1, 2, ..., M,
L = (M + 1) / 2 - пороговый уровень (арифметическая сумма входных сигналов).
Трехвходовой МЭ выполняет функцию f = X3X2 V X3X1 V X2X1. Действительно, f = 1 только при равенстве двух или трех сигналов из Хр, р = 1, 2, 3. Если Х2Х1 = 0, то f = (X2 V X1)X3, а при X3 = 1 функция f = X2 V X1.
Алгоритм построения МЭ такой же, как и для ПС.
Например, построим МЭ с M = 13. За основу примем одноразрядный двоичный сумматор и построим схему МЭ, следуя правилам арифметического сложения значений входных переменных X13,...X1. Весь ход рассуждений аналогичен предыдущему примеру, однако есть и некоторая особенность (рис. 6.6). В частности, по условию L = 7, следовательно, КС должна быть построена для дешифрирования именно этого числа. Но возможно найти решение и без специальной КС, если в конечный результат добавить искусственно «1». Тогда при L = 7 единица будет на выходе переноса старшего разряда выходного сумматора. Этот разряд и будет выходом всей схемы МЭ в целом. Таким же способом можно синтезировать любой мажоритарный элемент.


Рис. 6.9 Мажоритарный элемент с М = 13


Рис. 6.10 Временные диаграммы для мажоритарного элемента
(см. рис. 6.6)


Рис. 6.11 Мажоритарный элемент с М = 13 в пакете MAX+Plus II

Рис. 6.12 Временные диаграммы для мажоритарного элемента


Рис 6.13 Матрица временных задержек

Программа:
SUBDESIGN mazoritarny_element
(M[0..12] : INPUT;
Y : OUTPUT;)
VARIABLE A, L;
BEGIN
A = M0+M1+M2+M3+M4+M5+M6+M7+M8+M9+M10+M11+M12;
IF A>= L;
THEN Y = VCC;
ELSE Y = GND;
ENDIF;
END;
В интегральном исполнении выпускаются мажоритарные элементы (Majority Logic Gate), имеющие 3 (533ЛПЗ и 561ЛП13) и 5 (МС14530В) входов. Функция, выполняемая 3-входовым. МЭ, совпадает с функцией переноса одноразрядного сумматора: f=X1X2VX1X3VX2X3, где Xp входные сигналы функционирование 5-входового МЭ МС14530B описывается выражением:
F=(I1I2I3VI1I2I4VI1I2I5VI1I3I4VI1I3I5VI1I4I5VI2I3I4VI2I3I5VI2I4I5VI3I4I5)(P, (6.1)
где P (Polarity) сигнал инвертирования функции выхода МЭ.
Из соотношения (1) при подстановке определенных значений некоторых сигналов следует, что 5-входовой МЭ может использоваться для выполнения различных переключательных функций:
I5=1, I4=0 => F=(I1I2 V I2I3 V I2I3) ( Р – 3-входовой МЭ, с возможностью инвертирования функции выхода F,
I5=I4=0 => F=I1I2I3(Р – 3-входовой ЛЭ И/И-НЕ,
I5=I4=1 => F=(I1 V I2 V I3)(P – 3-входовой ЛЭ ИЛИ/ИЛИ-НЕ,
I5=I4 => F=(IlI2IЗ V I1I4 V I2I4 V I3I4)(Р – 4-входовая пороговая схема с порогом L = 3 и неравными весами входов (вход I4 имеет вес вдвое больший, чем остальные входы) с возможностью инвертирования функции выхода.

6.4 Построение преобразователей

6.4.1 Прямой, обратный и дополнительный коды
Для выполнения в ЭВМ арифметических операций необходимо использовать специальное кодирование отрицательных чисел. Для представления знака числа требуется введение дополнительного знакового разряда. Знак минус принято кодировать символом «1», а знак плюс – символом «0».
Прямой код. Прямой код целого n-разрядного двоичного числа 13 EMBED Equation.3 1415 задается соотношением:
13 EMBED Equation.3 1415
где 13 EMBED Equation.3 1415 – модуль числа 13 EMBED Equation.3 1415, а прямой код 13 EMBED Equation.3 1415 (для наглядности знаковый разряд отделяется точкой). Числу 0 может быть приписан любой знак. Таким образом, прямой код числа 13 EMBED Equation.3 1415 произвольного знака получается добавлением к модулю числа 13 EMBED Equation.3 1415 знакового разряда 13 EMBED Equation.3 1415, значение которого и определяет знак числа.
То есть, имеем: знаковый разряд располагается слева от числа и отделяется от последнего точкой, например: +5 = 0.101;-5=1.101.
Прямой код упрощает умножение чисел, так как в этом случае для вычисления произведения необходимо перемножить модули чисел 13 EMBED Equation.3 1415 и 13 EMBED Equation.3 1415 и вычислить знак произведения 13 EMBED Equation.3 1415, который определяется только значениями знаков чисел 13 EMBED Equation.3 1415 и 13 EMBED Equation.3 1415. Знак произведения 13 EMBED Equation.3 1415, где 13 EMBED Equation.3 1415.

Обратный код. Обратный код целого n-разрядного двоичного числа 13 EMBED Equation.3 1415 определяется соотношением:
13 EMBED Equation.3 1415
где 13 EMBED Equation.3 1415 – модуль числа 13 EMBED Equation.3 1415, 13 EMBED Equation.3 1415
Число 0 в обратном коде имеет два представления: 0.000 – положительный и 1.111 – отрицательный нули. В (n+1)-разрядных (с учетом знакового разряда) прямом и обратном кодах могут быть представлены числа 13 EMBED Equation.3 1415
То есть, имеем: обратный код двоичного отрицательного числа получается из прямого кода равного ему положительного числа инвертированием значений всех его разрядов. Например, обратный код числа -510=1.1012 есть 1.010.

Дополнительный код. Пусть требуется найти разность двух целых положительных n-разрядных чисел:
13 EMBED Equation.3 1415 и 13 EMBED Equation.3 1415,
где 13 EMBED Equation.3 1415, 13 EMBED Equation.3 1415.
Так как разность 13 EMBED Equation.3 1415, то вычитание эквивалентно сложению с отрицательным числом 13 EMBED Equation.3 1415. В двоичной системе счисления:
13 EMBED Equation.3 1415
Максимальное значение X получается при 13 EMBED Equation.3 1415 для всех 13 EMBED Equation.3 1415:
13 EMBED Equation.3 1415 (6.2)
Таким образом, 13 EMBED Equation.3 1415 и 13 EMBED Equation.3 1415. Разность
13 EMBED Equation.3 1415 (6.3)
где 13 EMBED Equation.3 1415. Так как значения 13 EMBED Equation.3 1415, то 13 EMBED Equation.3 1415. Положительное число 13 EMBED Equation.3 1415 называется дополнением Y до 2n. Из соотношения (6.3) следует, что 13 EMBED Equation.3 1415, т. е. вычитание сводится к сложению, но результат надо скорректировать на 2n (вычесть из разности число 2n). Из выражения (6.2) следует, что
13 EMBED Equation.3 1415
поэтому
13 EMBED Equation.3 1415
так как 13 EMBED Equation.3 1415. Поскольку 13 EMBED Equation.3 1415, то
13 EMBED Equation.3 1415
где 13 EMBED Equation.3 1415
Разность (6.3) можно представить в виде:
13 EMBED Equation.3 1415(6.4)
где 13 EMBED Equation.3 1415, 13 EMBED Equation.3 1415
Величина 13 EMBED Equation.3 1415 называется дополнительным кодом положительного числа X (совпадает с прямым кодом), а величина 13 EMBED Equation.3 1415 – дополнительным кодом отрицательного числа -Y. Здесь значение n-го разряда определяет знак числа (0 – число положительное, 1 – число отрицательное). Из (6.4) следует, что знаковый разряд имеет вес -2n.
Если число Y может иметь любой знак, то дополнительный код
13 EMBED Equation.3 1415 (6.5)
где 13 EMBED Equation.3 1415, 13 EMBED Equation.3 1415.
Из определения (6.5) следуют правила получения дополнительного кода отрицательных чисел (правила преобразования прямого кода в дополнительный). Для этого необходимо: записать модуль 13 EMBED Equation.3 1415 отрицательного числа 13 EMBED Equation.3 1415 в двоичной системе счисления; взять инверсию от каждого разряда числа, т.е. вычислить число 13 EMBED Equation.3 1415; сложить полученное число 13 EMBED Equation.3 1415 с единицей, т.е. вычислить число 13 EMBED Equation.3 1415; записать 1 в n-й разряд.

6.4.2 Преобразователь прямого кода в дополнительный код
При построении взаимных преобразователей кодов следует исходить из определений для этих кодов и правил взаимного преобразования (перевода).
Правила взаимного преобразования кодов вытекают из определений кодов и правил двоичной арифметики. В частности, х ( 0 = х, х ( 1 = х.
Общие правила взаимного преобразования кодов n-разрядных двоичных чисел можно выразить следующими соотношениями:
а) если необходимо [Х]п/ [Х]0, то [X]0=(Xn+1, xпn(xn+1, xпn-1(xn+1 ,, xп1(xn+1);
б) если необходимо [Х]0/ [Х]п, то [X]п=(Xn+1, x0n(xn+1, x0n-1(xn+1 ,, x01(xn+1);
в) если необходимо [Х]п/ [Х]д, то [X]д=[(Xn+1, xпn(xn+1 ,, xп1(xn+1) ( xn+1];
г) если необходимо [Х]д/ [Х]п, то [X]п=[(Xn+1, xдn(xn+1 ,, xд1(xn+1) ( xn+1];
д) если необходимо [Х]0/ [Х]д, то [X]д = [Х]0 ( xn+1 ,
где [X]п – прямой код числа,
[X]о – обратный код числа,
[X]д – дополнительный код числа.
При использовании сумматора в качестве преобразователя кода необходимо иметь (n+1)-разрядный сумматор, причем на неиспользованные входы подают нуль, т.к. х(0=х, а для формирования сигнала переноса (знакового разряда) используют (n+1)-й вход сумматора.
Например, построим преобразователь трехразрядных чисел прямого кода в дополнительный, т.е. осуществим [Х]п/[Х]д
При построении преобразователя будем руководствоваться алгоритмами в) и г). Из их анализа следует, что при преобразовании кодов необходимо вначале произвести поразрядно суммирование по модулю два входной информации (х3, x2, x1) и знакового разряда x4, а затем к полученному результату прибавить значение x4. Первую операцию выполним с помощью n сумматоров по модулю 2 (схем "Исключающее ИЛИ"), а вторую - с помощью четырехразрядного сумматора. При этом результат суммирования по модулю 2 подадим поразрядно на один из входов сумматора, а на вторые (неиспользованные) входы подадим нуль. Знаковую информацию подадим на входы 4-го разряда сумматора и на вход переноса. Результат получим на выходах сумм, причем вход 4-го разряда будет знаковым.
Если на вход схемы преобразователя четырехразрядного прямого кода в дополнительный код (см. рис. 6.15) подать дополнительный код, то на выходе получим прямой код.

Подведём итог:
Правило кодирования: если число A>0, то [A]доп=[A]пр, если число А<0, то в знаковый разряд кода записывается 1, числовые разряды исходного числа инвертируются, и к младшему числовому разряду добавляется 1.
Например, число А = 1.111 в дополнительном коде
13 EMBED Equation.3 1415
Схему такого преобразования можно собрать на сумматорах (рис.6.15).
В модифицированном дополнительном коде в отличие от дополнительного кода для представления знака числа отводится два разряда. Например, отрицательное число B, модуль которого равен 00.01110, в модифицированном дополнительном коде: [B]Mдоп = 11.10010.
13 EMBED PBrush 1415
Рис. 6.14 Подключение преобразователя
13 EMBED PBrush 1415
Рис. 6.15 Схема для преобразования прямого кода в дополнительный (для 4-х разрядных чисел)

13 EMBED PBrush 1415
Рис. 6.16 Временные диаграммы для преобразователя прямого кода
в дополнительный

Рис. 6.17 Преобразователь прямого кода в дополнительный в пакете MAX+Plus II


Рис. 6.18 Временные диаграммы для преобразователя прямого кода в дополнительный


Рис. 6.19 Матрица временных задержек
Программа:
SUBDESIGN preobraz_praymogo_v_dopol
( X[3..0] : INPUT;
Y[3..0] : OUTPUT;
Q[3..0], t[3..0] : NODE;
)
BEGIN
IF x[3] == 0 THEN
Y[3..0] = x[3..0];
ELSE
t[3] = x[3];
t[2..0] = !x[2..0];
Q[3..0] = t[3..0] + B"00000001";
y[3..0] = Q[3..0];
ENDIF;
END;
Обратите внимание, на временных диаграммах показаны не все возможные входные сигналы. Вам так же не рекомендуется перебирать их все (32 шт.). На временных диаграммах видно, что:
Прямой код
Обратный код

0.0000
0.0000

0.1111
0.1111

0.0111
0.0111

0.0011
0.0011

0.0001
0.0001

1.1111
1.0001

1.0111
1.1001

1.0011
1.1101

Такие комбинации были выбраны потому, что их очень легко проверить.

6.4.3 Преобразователь дополнительного кода в прямой код
Если на вход схемы преобразователя четырехразрядного прямого кода в дополнительный код (см. рис. 6.15) подать дополнительный код, то на выходе получим прямой код.

6.4.4 Преобразователь прямого кода в обратный код
Правило кодирования чисел:
13 EMBED PBrush 1415
Например, число А=0.10000 в обратном коде [A]обр=1.01111
В десятичной системе счисления обратный код образуется путём преобразования каждой цифры числа в дополнение до 9. В таблице 2 приведены для десятичных цифр прямые коды и соответствующие им обратные коды.
Таблица 6.2
Десятичная цифра
Прямой код
Обратный код


Х(8)
Х(4)
Х(2)
Х1
У(8)
У(4)
У(2)
У(1)

0
0
0
0
0
1
0
0
1

1
0
0
0
1
1
0
0
0

2
0
0
1
0
0
1
1
1

3
0
0
1
1
0
1
1
0

4
0
1
0
0
0
1
0
1

5
0
1
0
1
0
1
0
0

6
0
1
1
0
0
0
1
1

7
0
1
1
1
0
0
1
0

8
1
0
0
0
0
0
0
1

9
1
0
0
1
0
0
0
0

Из сопоставления приведённых в таблице значений не трудно заключить, что:
13 EMBED Equation.3 1415
Получаем схему, формирующую обратный код.
13 EMBED PBrush 1415
Рис. 6.20 Четырех разрядный преобразователь прямого кода в обратный код. Временные диаграммы
13 EMBED PBrush 1415
Рис. 6.21 Внутренняя структура элемента «Convert» (преобразователь прямого кода в обратный)


Рис. 6.22 Преобразователь прямого кода в обратный код в пакете MAX+Plus II


Рис. 6.23 Временные диаграммы преобразователя прямого кода в обратный

Рис. 6.24 Матрица временных задержек

6.4.5 Преобразователь обратного кода в прямой
Если на вход схемы преобразователя четырехразрядного прямого кода в обратный код (см. рис. 6.20) подать дополнительный код, то на выходе получим прямой код.

6.4.6 Построение преобразователя двоичного кода в двоично-десятичный
Десятичные сумматоры применяются в тех случаях, когда числа X и Y представлены в десятичной системе счисления двоично-десятичным кодом 8-4-2-1 и требуется представлять сумму S в этом же коде. Числа X и Y записываются в виде:
Х’=хn,...х1х0 Y’=yn,... у1,у0
Код 8 - 4 - 2 - 1 неудобен для выполнения арифметических операций, в частности из-за сложности обнаружения переноса в следующую тетроду при Хр + Yр > 10. При вычитании десятичных чисел X' и Y’ дело обстоит еще сложнее – требуется вводить преобразователь кода 8 - 4 - 2 - 1 отрицательных чисел в дополнение до 9 (или до 10).
Десятичные сумматоры для сложения и вычитания чисел Х и Y можно построить на двоичных сумматорах, если использовать код с избытком 3. Код 8 - 4 - 2 - 1 для числа Хр + 3 называется кодом с избытком 3 числа Хр и обозначается через {Ар}. Для сложения 4-разрядных двоичных кодов {Хр} и {Yр} можно использовать 4-разрядные двоичные сумматоры.
Рассмотрим особенности сложения положительных чисел Ар и Yр в коде с избытком 3. Если Хр + Yр > 10, то {Хр} + {Yр} = Хр + 3 + Yр + 3 > 16, и на выходе двоичного сумматора возникает перенос Сp+1= 1 в следующий десятичный разряд, а остаток суммы будет равен {Хр} + {Ур} - 16, в то время как он должен быть равен
{Xp+Yp-10}=Xp+Yp-10+3={Xp}+{Yp}-16+3.
Поэтому к остатку суммы {Xp}+{Yp}-16 следует прибавлять число 3.
Если Хр + Yр < 10, то {Xp}+{Yp}<16 и на выходе двоичного сумматора перенос отсутствует (Cp+1 = 0), а сумма {Хр} + {Yр} = {Хр + Yр} + 3. Поэтому из суммы {Хр} + {Yр} следует вычесть число 3, чтобы получить величину {Хр + Yр}, которая является кодом с избытком 3 суммы Хр+Yр. Вычитание какого-либо числа эквивалентно сложению его с дополнением до 2n, поэтому вместо вычитания числа 3 можно прибавить число 24 – 3 = 13 = 1101.
Таким образом, если перенос возникает, то к остатку суммы следует прибавить число 3, а если он отсутствует, то к сумме следует прибавить число 13. Итак, одноразрядный десятичный сумматор для десятичных разрядов, представленных в коде с избытком 3, описывается соотношениями:
13 EMBED Equation.3 1415
13 EMBED Equation.3 1415 (6.6)
где Cp+1 перенос в следующий десятичный разряд; {Sp} – значение р-го десятичного разряда суммы чисел X и Y; Ср = 0 или 1 – перенос из предыдущего десятичного разряда. Сложение с числами 3 и 13 называется коррекцией суммы. Из соотношения (6.6) видно, что вычисление суммы {Sp} можно выполнить с помощью двух последовательно включенных 4-разрядных двоичных сумматоров: первый сумматор вычисляет вспомогательную сумму
13 EMBED Equation.3 1415и перенос Сp+1, а второй сумматор – сумму 13 EMBED Equation.3 1415
так как Cp+1 Cp+1 Cp+1 1 = 13 при Ср+1 = 0 и Ср+1Cp+1Cp+1 1 = 3 при Cp+1 = 1. Такое устройство называется сумматором кодов с избытком 3.
Рассмотрим теперь вычитание n-разрядных десятичных чисел X и Y с использованием кода с избытком 3.
Так как S’=X-Y=X-10n+(10n-Y)= X-10n+W , где W=10n-Y,
То вычитание из X числа Y эквивалентно сложению X с дополнением Y до 10n с коррекцией результата на 10n.
При Х ( 5 надо производить сложение числа Х (x4, x4, x4 , x4) с числом 3. Таким образом, данный преобразователь выполняет функцию Y = X, если 0 ( Х ( 4 и Y = X + 3, если 5( Х(9.

Таблица 6.3 Таблица истинности преобразователя
двоичного кода в двоично-десятичный

Х4
Х3
Х2
X1
Y4
Y3
Y2
Y1

0
0
0
0
0
0
0
0

0
0
0
1
0
0
0
1

0
0
1
0
0
0
1
0

0
0
1
1
0
0
1
1

0
1
0
0
0
1
0
0

0
1
0
1
1
0
1
1

0
1
1
0
1
1
0
0

0
1
1
1
1
1
0
1

1
0
0
0
1
1
1
0

1
0
0
1
1
1
1
1


Построим преобразователь двоично-десятичного кода в двоичный на ЛЭ.
Для получения логических выражений представим переменные Y1, Y2, Y3, Y4 в форме таблиц Вейча:


Тогда для Y4 можно записать: 13 EMBED Equation.3 1415, или иначе:
13 EMBED Equation.3 1415.
Аналогично, для остальных Y:


13 EMBED Equation.3 1415
13 EMBED Equation.3 1415


13 EMBED Equation.3 1415
13 EMBED Equation.3 1415

13 EMBED Equation.3 1415
13 EMBED Equation.3 1415
Теперь при помощи полученных логических выражений на элементах И-НЕ построим преобразователь двоичного кода в двоично-десятичный код (рис. 6.25).

13 EMBED PBrush 1415
Рис. 6.25 Схема преобразователя двоичного кода в двоично-десятичный код

13 EMBED PBrush 1415
Рис. 6.26 Блок преобразователя двоичного кода в
двоично-десятичный код
13 EMBED PBrush 1415
Рис. 6.27 Заданная последовательность входных сигналов
для схемы (рис. 6.20)

13 EMBED PBrush 1415
Рис. 6.28 Временные диаграммы для преобразователя двоичного кода в двоично-десятичный код


Рис. 6.29 Преобразователь двоичного кода в двоично-десятичный код в пакете MAX+Plus II


Рис. 6.30 Временные диаграммы


Рис. 6.31 Матрица временных задержек

Программа:
SUBDESIGN preobraz_dvoichnogo_v_dvoichno_desayt
(
X[3..0] : INPUT;
Y[3..0] : OUTPUT;
)
BEGIN
IF X[3..0] <= B"0100"
THEN Y[3..0] = X[3..0];
ELSE Y[0] = X[0];
TABLE
X[3..1] => Y[3..1];
B"010" => B"101";
B"011" => B"110";
B"100" => B"111";
END TABLE;
ENDIF;
END;
Примечание. В пакете Max+ Plus2 имеются микросхемы, реализующие преобразование из двоичного кода в двоично-десятичный и обратно (74184/74185).

6.4.7 Построение преобразователя двоично-десятичного кода в двоичный код
Двоичные числа, содержащие 4 или менее разрядов, преобразуются непосредственно, как 1 тетрада. Двоичные числа, имеющие длину более 4-х разрядов, можно преобразовать в двоично-десятичную форму с помощью сдвигающих регистров. Для этого двоичное число надо сдвигать справа налево старшими разрядами вперёд, записывая («вдвигая») его в регистр последовательно, разряд за разрядом, начиная с младшего разряда регистра. Сдвиги надо повторять до тех пор, пока младший разряд двоичного числа не запишется в младший разряд регистра, который можно рассматривать как двоично-десятичную разрядную сетку. Когда единица пересекает границу между двоично-десятичными разрядами, то возникает ошибка, так как при сдвиге значение этой единицы увеличивается с 8 до 16, тогда как для двоично-десятичного числа оно должно возрасти с 8 до 10. Следовательно, для коррекции тетрады необходимо добавлять цифру 6, так как двоично-десятичное число уменьшается на 6.

Таблица 6.4 Таблица истинности преобразователя
двоично-десятичного кода в двоичный
i
X4
Хз
X2
Xl
Y4
Y3
Y2
Y1

0
0
0
0
0
0
0
0
0

1
0
0
0
1
0
0
0
1

2
0
0
1
0
0
0
1
0

3
0
0
1
1
0
0
1
1

4
0
1
0
0
0
1
0
0

5
1
0
1
1
0
1
0
1

6
1
1
0
0
0
1
1
0

7
1
1
0
1
0
1
1
1

8
1
1
1
0
1
0
0
0

9
1
1
1
1
1
0
0
1

Таблица 6.5 Данные по коррекции сдвига двоично-десятичных чисел
ДЧ
9
6
5
3
MP

Вес
103
8421
102
8421
101
8421
100
8421


ДЦЧ
1001
0110
0101
0011


с
0100
1011
0010
1001
1

к
0000
0011
0000
0011


ДДЧ
0100
1000
0010
0110
1

ДЧ
4
8
2
6



В таблице 6.5 приведены: ДЧ - десятичное число, ДЦЧ - двоично-десятичное число, С - сдвиг, К - коррекция, МР - младший разряд.
Если в старший разряд тетрады, имеющей множитель 10j, поступает единица, то она приобретает вес 8*10j. До сдвига эта единица имела вес 10i+1, поэтому для получения при сдвиге деления на два ей следует приписать вес 2-1*10j+1. Из этого следует, что необходимо произвести коррекцию на число 8*10j - 2-1*10j+1, т.е. вычесть число 3*10j. Если в старший разряд какой-либо тетрады поступает нуль, то коррекцию производить не нужно. Из таблицы видно, что после сдвига числа 9653 и соответствующей коррекции действительно получается число 4826, отличающееся от 9653*2-1 на единицу, которая является младшим разрядом младшей тетрады двоично-десятичного кода и младшим разрядом двоичного кода.
Если вы строите преобразователя двоично-десятичного кода в двоичный код на элементах И-НЕ, то рассуждения как и для предыдущего преобразователя. Получим схему:
13 EMBED PBrush 1415
Рис. 6.32 Схема преобразователя двоично-десятичного кода в двоичный код
13 EMBED PBrush 1415
Рис. 6.33 Блок преобразователя двоично-десятичного кода в двоичный код

13 EMBED PBrush 1415
Рис. 6.34 Заданная последовательность входных сигналов
для схемы (рис. 6.18)

13 EMBED PBrush 1415
Рис. 6.35 Временные диаграммы для преобразователя двоично-десятичного кода в двоичный код

Рис. 6.36 Преобразователь двоично-десятичного кода в двоичный код

Рис. 6.36 Временные диаграммы

Рис. 6.37 Матрица временных задержек
Программа:
SUBDESIGN preobraz_dvoichno_desayt_v_dvoich
( X[3..0] : INPUT;
Y[3..0] : OUTPUT; )
BEGIN
IF X[3..0] <= B"0100"
THEN Y[3..0] = X[3..0];
ELSE
Y[0]=X[0];
TABLE
X[3..1] => Y[3..1]
B"101" => B"010";
B"110" => B"011";
B"111" => B"100";
END TABLE;
ENDIF;
END;
6.4.8 Построение преобразователя двоичного кода в код Грея
Преобразование А(х) = ((n ,..., (р ,..., (1) , где ( = xp ( xp , если р = 1, 2, ..., n-1, и (р = xn , если р = n, определяет алгоритм построения кода Грея.
Код Грея используют в преобразованиях аналоговых физических сигналов в цифровые сигналы с погрешностью, не превышающей значение младшего разряда двоичного числа X.
Важно: код Грея относится к таким, в которых при переходе от любой кодовой комбинации к следующей изменяется только один разраяд. Код Грея можно получить по соотношению 13 EMBED Equation.3 1415, где 13 EMBED Equation.3 1415 - значение разряда кода грея, 13 EMBED Equation.3 1415 - значение разряда двоичного кода, преобразуемого в код грея. Ряд левее старшего для двоичного кода считается нулевым.
Пример: Записать число 13 EMBED Equation.3 1415 в коде Грея. Перепишем это число в двоичном коде: 1010, тогда преобразование будет выглядеть следующим образом:
1
0
1
0
Х

*
1
0
1
0

1
1
1
1
Х

(*-всегда ноль). Сложив столбцы в таблице по модулю 2 и отбросив последний (где есть «Х»), получили число 13 EMBED Equation.3 1415 или двоичное 1010 в коде Грея. Оно имет значение 1111. Это можно увидеть и на временных диаграммах (рис. 6.38)


Рис. 6.38 Работа преобразователя двоичного кода в код Грея
13 EMBED PBrush 1415
Рис. 6.39 Структура преобразователя двоичного кода в код Грея (блок Bin_to_Gray)


Рис. 6.40 Преобразователь двоичного кода в код Грея в пакете
MAX+Plus II


Рис. 6.41 Временные диаграммы


Рис. 6.42 Матрица временных задержек

Программа:
CONSTANT t=3
SUBDESIGN preobraz_dvoich_v_kod_greay
( X[3..0] : INPUT;
Y[3..0] : OUTPUT;
)
VARIABLE q[3..0] : NODE;
BEGIN
FOR i IN 0 TO t GENERATE
X[i+1] = q[i];
END GENERATE;
q[3] = GND;
Y[3..0] = X[3..0] $ q [3..0];
END;

Преобразование кода Грея в двоичный код описывается выражением xp = (p ( xp+1, если р = 1, 2, ..., n-1, и x = (n , если р = n. Схема преобразователя А(х) для четырехразрядных двоичных чисел Х = (x4, х3, x2, x1) показано на рис. 6.43.
Пример: Получить из числа 1011, записанного в коде Грея, его двоичное значение.
1
0
1
1

1
1
0
1


Тут нужно пояснить. Бинарное число в старшем разряде всегда будет иметь то значение, которое было в старшем разряде кода Грея. Остальные значения получаются после сложения по модулю 2 соответствующих разрядов (если записаны как в таблице, тогда по диагонали).


Рис. 6.43 Работа преобразователя кода Грея в двоичный код (*)

13 EMBED PBrush 1415
Рис. 6.44 Внутренняя структура элемента Gray_to_Bin
(преобразователя кода Грея в двоичный код)

(*) Примечание. Для получения кода Грея, из которого нужно получить двоичный код, можно воспользоваться рассмотренным в предыдущем примере преобразователем двоичного кода в код Грея (модуль Bin_to_Gray).

Рис. 6.44 Преобразователь кода Грея в двоичный код в
пакете MAX+Plus II


Рис. 6.45 Временные диаграммы


Рис. 6.46 Матрица временных задержек
Программа:
CONSTANT t=3;
SUBDESIGN
( X[3..0] : INPUT;
Y[3..0] : OUTPUT;
)
BEGIN
Y[3] = X[3];
FOR i IN 0 TO t GENERATE
y[t-1] = X[t-1] $ Y[t+1-i];
END GENERATE;
END;
6.5 Моделирование исследуемых схем на ЭВМ с применением пакета Multisim
В данной лабораторной работе комбинационные схемы на сумматорах исследуются моделированием их на ЭВМ с помощью пакета прикладных программ Electronics Workbench версии 6.2 (Multisim), а также в пакете Max+ Plus2.
При выполнении лабораторной работы используются полусумматоры, сумматоры и разрядные сумматоры.
Блок создаётся нажатием клавиш «CTRL» + «B».

Таблица 6.6 Таблица истинности полусумматора
A
B
P
S

0
0
0
0

0
1
0
1

1
0
0
1

1
1
0
1


Таблица 6.7 Таблица истинности одноразрядного сумматора
A
B
P0
S
P

0
0
0
0
0

0
0
1
1
0

0
1
0
1
0

0
1
1
0
1

1
0
0
1
0

1
0
1
0
1

1
1
0
0
1

1
1
1
1
1


Таблицу истинности для микросхем можно получить сначала выделив её, а затем нажав клавишу F1.
Вам необходимо собрать схему согласно Вашему варианту. Провести моделирование. Получите таблицы истинности для схемы. Сумматоры берутся из библиотек, описанных в первой работе.

6.6 Порядок проведения работы в пакете MAX+plus II
В качестве примера приведем построение пороговой схемы 5/9. На входе будет единица, если на 5-ти или более входов будет единица.
Сумматоры в пакете MAX+plus II сдвоенные, т.е. два полных сумматора объединены в одной схеме. Это позволяет упростить построение.
Схема имеет номер 74183 (FULL ADDER) и находится в библиотеке mf.
В соответствии с порядком создания пороговой схемы, приведенном выше, получаем:


Рис. 6.61 Пороговая схема 5/9

Задаем входные сигналы. Для этого подаем последовательно единицу сначала на один вход, затем на два и т.д.:


Рис. 6.62 Входные сигналы

Запускаем компилятор, затем симулятор. Проводим анализ временных задержек между входами и выходом:


Рис. 6.63 Матрица задержек

Нажав в окне симулятора кнопку Open SCF, получаем результат работы схемы:


Рис. 6.64 Временные диаграммы

Из графика видно, схема срабатывает тогда, когда больше, чем на четырех входах сигнал высокого уровня (единица), что и требуется по заданию.

6.7 Контрольные вопросы
Чем отличается полусумматор от сумматора? Как построить сумматор для n-разрядных чисел?
По каким признакам классифицируют сумматоры?
Что называется пороговой схемой и для решения каких задач она применяется?
Что называется мажоритарным элементом и для решения каких задач он применяется?
Как формируется код Грея и для решений каких задач он используется?
Что такое умножители двоичных чисел?
Для чего применяются умножители?
Какие умножители называются матричными?
Какие виды умножителей Вы еще знаете?
В чем отличие матричного умножителя от быстрого умножителя?
В чем отличие матричного умножителя от последовательного умножителя?
В чем отличие последовательного умножителя от быстрого умножителя?
Что такое частичные произведения?
Какой метод вычисления произведения называется модифицированным алгоритмом Бута?
Почему все вычисления проще выполнять при представлении чисел в двоичном коде?
Какой метод умножения называется последовательным?







Root Entry

Приложенные файлы

  • doc 221502
    Размер файла: 9 MB Загрузок: 0

Добавить комментарий