TTL и CMOS логика Цифровая схемотехника на логических микросхемах. Счетчики, сдвиговые регистры, простая логика... |
18.10.2015, 21:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Собрать АЛУ
Сообщение от NewWriter
|
Нужно учитывать инверсный результат значения переноса после вычитания!
|
Общая ошибка на приведенных схемах - неправильное использование переноса.
Во-первых, не надо его инвертировать. Во-вторых, примите во внимание, что он означает. По входу, для каждого отдельного сумматора, он означает единицу младшего разряда. То есть, если на вход переноса подать единицу, то на выходе результат тоже увеличится на единицу.
А вот по выходу - это уже совсем другое. Единица на выходе сумматора весит много, это сумма всех разрядов сумматора плюс единица. То есть, для наших 4-разрядных сумматоров перенос будет соответствовать пятому разряду. А на этих схемах перенос попадает снова на самый младший разряд следующего сумматора, что приводит к абсурдному результату, если в первом сумматоре сумма слагаемых приведет к переполнению.
То есть, фыход каждого сумматора надо рассматривать не как 4-разрядный, а как 5-разрядный, самым старшим разрядом которого является выход переноса.
Ладно, дальше без меня, мне некогда.
П.С. Добавлю все же немного.
1. Приведенное на этих схемах подключение переноса будет правильным для многоразрядных сумматоров, набранных из множества 4-разрядных. Тогда перенос из каждого младшего будет иметь правильный вес, так как на входы более старшего сумматора будут приходить и соответствующие по весу разряды слагаемых.
2. Смену знака слагаемого В надо делать отдельным сумматором, на входы которого поступает инверсное значение В, а на вход переноса единица. И уже с его выхода надо брать готовое значение -В, и подавать на сумматор в данной схеме.
3. Для примера подайте на первый сумматор числа 7 и 11. Должно получиться 18. то есть, на выходе сумматора будет 2, плюс единица на выходе переноса. И теперь эта смесь в приведенной схеме поступает на следующий сумматор, и в сумме даст 3, что абсурдно.
Последний раз редактировалось Alex9797; 18.10.2015 в 21:46.
|
|
|
Сказали "Спасибо" Alex9797
|
|
|
18.10.2015, 21:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Собрать АЛУ
Подсказка-напоминание-совет:
Для операций сложения/вычитания/деления 4-разрядных чисел надо использовать 5-разрядные сумматоры.
Для операций умножения 4-разрядных чисел надо 8-разрядные сумматоры.
|
|
|
Сказали "Спасибо" Alex9797
|
|
|
18.10.2015, 22:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.01.2007
Сообщений: 3,123
Сказал спасибо: 61
Сказали Спасибо 1,153 раз(а) в 624 сообщении(ях)
|
Re: Собрать АЛУ
Сообщение от Andrey_AHAHAC
|
Где ошибка в схеме?(
|
Сообщение от Alex9797
|
Общая ошибка на приведенных схемах - неправильное использование переноса.
|
Совершенно верно, ибо
Сообщение от avp94
|
-выходы переносов соединить со входами переносов
|
бред - так расширяют разрядность. Виноват.
А по сему, как наиболее простое решение: сначала все складываем а затем вычитаем. Вход переносов на ноль. Кроме получения "дополнения до двух" .
Первые два знака выхода переноса - ошибка переполнения. Последний - знак числа 1 - положительное.
Следует иметь ввиду, что при такой расстановке слагаемых возможно переполнение, которое можно избежать, выполнив вычитание не на последнем месте. Но придется ввести логику работы с числами со знаком.
Если это курсовой, то возможно так и придется .
P.S. Поспешишь - людей насмешишь .
P.P.S. Это я про себя.
Последний раз редактировалось avp94; 18.10.2015 в 22:28.
|
|
|
|
18.10.2015, 22:42
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Собрать АЛУ
Ща исправим....
Последний раз редактировалось Andrey_AHAHAC; 18.10.2015 в 22:47.
|
|
|
|
18.10.2015, 22:54
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Собрать АЛУ
Сообщение от Alex9797
|
Для операций сложения/вычитания/деления 4-разрядных чисел надо использовать 5-разрядные сумматоры.
|
В Multisim не видел таких(
Сообщение от avp94
|
Если это курсовой, то возможно так и придется
|
Слава Богу это не курсовая)
|
|
|
|
18.10.2015, 23:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Собрать АЛУ
Сообщение от Andrey_AHAHAC
|
В Multisim не видел таких(
|
Можно нарастить сумматоры до любой разрядности из тех, что есть, путем каскадирования. Но это получится довольно громоздко. Тем более, что в мультисиме будет лишь отладка идеи. Поэтому, как вариант, можно отработать схему на 4-разрядных, уменьшив длину операндов до трех разрядов. А потом уже, для препода, нарисовать окончательную схему для 4-разрядных, по образу и подобию мультисимовской.
|
|
|
|
19.10.2015, 00:46
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Собрать АЛУ
Сделал вот так, проверял вроде все работало.
Но потом ввел:
С = 0
D = 2
В = 6
Ответ вышел = 12
А должен: 0+2-6+0 = -4
Потом еще ввел
С = 8
D = 0
B = 14
Ответ вышел = 2 и доп. код 1
8+0-14+8=2
Разве в схеме все еще есть ошибки?
Или со схемой все нормально и нужно ограничится 3-мя разрядами?
|
|
|
|
19.10.2015, 00:50
|
|
Временная регистрация
Регистрация: 18.10.2015
Сообщений: 60
Сказал спасибо: 63
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
|
Re: Собрать АЛУ
Вот тоже если С = 0 и Д = 0, В = 6
Ответ выдает: 10 ))))
п.с. меня уже бесит(
|
|
|
|
19.10.2015, 00:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Собрать АЛУ
Сообщение от Andrey_AHAHAC
|
Ответ вышел = 12
А должен: 0+2-6+0 = -4
|
Если рассматривать результат, как целое число со знаком, то результат верный - это и есть -4. Инвертируйте его, и прибавьте единицу, и убедитесь.
Сообщение от Andrey_AHAHAC
|
Вот тоже если С = 0 и Д = 0, В = 6
Ответ выдает: 10 ))))
|
здесь то же самое
Сообщение от Andrey_AHAHAC
|
Или со схемой все нормально и нужно ограничится 3-мя разрядами?
|
повторюсь:
Сообщение от Alex9797
|
как вариант, можно отработать схему на 4-разрядных, уменьшив длину операндов до трех разрядов.
|
потому что при возникновении переполнения перенос некуда будет девать, и при следующих операциях с таким урезанным результатом будут ляпы.
|
|
|
Сказали "Спасибо" Alex9797
|
|
|
19.10.2015, 01:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Собрать АЛУ
А по поводу этого варианта схемы, то вроде все правильно, для трехразрядных операндов. То есть, надо помнить, что в данном случае и входные операнды, и результат - это целые числа со знаком. Со всеми вытекающими следствиями
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:51.
|
|