Сумматор-вычитатель

Печатные платы, программируемая логика, разработка и изготовление аппаратуры

Moderator: Shaos

Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Re: 4-bit Processor

Post by Bill »

Lavr wrote:Кстати, джентльмены, ни у кого случаем нет контактов некоего г-на Микушина А.В. -
автора вот этой учебной страницы в Интернете: https://digteh.ru/digital/counter.php

Я посмотрел поиском - вроде он даже автор весьма неглупых учебных книг...
Но на этой странице он явно вводит всех в заблуждение. :(

Счётчик по фронту:
Image

у него считает явно по спаду...
Image

Хотя даже нелюбимый многими Proteus подсказывает, что это не так. :wink:
CNT_F.PNG
Я бы и сам намекнул бы ему об этом, но, к сожалению, контактов кроме VK автор не оставил,
VK.PNG
а материал, выдаваемый за учебный, будут бездумно списывать все представители поколения ЕГЭ... :-?
Тут всё зависит от конкретной реализации триггера. 7474 выполнен на элементах NAND. Если в той же схеме применить элементы NOR, то триггер будет срабатывать по спаду.
PS: В своё время (тогда готовых триггеров у нас ещё не было) я столкнулся с подобной проблемой. В книге Мансурова и др. была приведена подобная схема на элементах NOR, а в моём распоряжении были микросхемы 155ЛА4. Потратил массу времени прежде чем разобрался как будет работать триггер если заменить NOR на NAND. Это было в 1973 году, я тогда был ещё студентом и с цифровой техникой вплотную познакомился только во время работы над дипломным проектом. :)
PPS: Ещё одна ссылка (datasheet): https://www.ti.com/lit/ds/symlink/sn74h ... mouser.com
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:Тут всё зависит от конкретной реализации триггера. 7474 выполнен на элементах NAND. Если в той же схеме применить элементы NOR, то триггер будет срабатывать по спаду.
Либо вы любите людям голову морочить, либо сами не всё понимаете, поскольку в данный момент пишете полный бред... :(

На схеме изображена конкретная реализация триггера, работающего по фронту.

Image

Об этом свидетельствует стрелка. И ни про какие элементы NAND ничего не говорится! :-?

Если триггер работает по спаду, у него другое обозначение:
Spad1.png
При этом совершенно безразлично на каких элементах триггер сделан внутри.
Bill wrote:Вы всё-таки ссылочку посмотрите http://www.6502.org/users/dieter/a2/a2_4.htm
Там всё чётко объясняется.
Q=A-B: S3..0 = 0110
The red marked ANDs are active.
Basically it's like A+B, with B inverted.
Note: borrow is low_active, like with the 6502.
Я на эту ссылочку посмотрел много раз, и вам покажу:
borrow.PNG
Если вы плохо знаете английский, то там написано:
Практически как A+B, с инвертированным B.
Примечание: заём имеет низкий активный уровень, как и у 6502.
Теперь смотрим на схему вашего "именно вычитателя":

Image

Где у него "A+B, с инвертированным B" ? :roll:
То, что 6502 по своему трактует заём, мы об этом тут и так ранее сказали...

Я привёл вам полную принципиальную схему 74181:

Image

Покажите на ней, где схемотехнически формируются заёмы как на схеме "именно вычитателя"?

Чтобы вы не запутались, я вам подскажу, что "именно вычитатель" называют:
sub.PNG
https://ru.wikipedia.org/wiki/Вычитатель

И по вашей ссылке и в АЛУ 74181 и в микропроцессоре 6502 на входе сумматора инвертируют один из аргументов.
А в схеме "именно вычитателя", как правильно заметил коллега, вычитание происходит:
Mixa64 wrote:...без колдовства над вычитаемым.
You do not have the required permissions to view the files attached to this post.
iLavr
Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Re: 4-bit Processor

Post by Bill »

Lavr wrote:
Bill wrote:Тут всё зависит от конкретной реализации триггера. 7474 выполнен на элементах NAND. Если в той же схеме применить элементы NOR, то триггер будет срабатывать по спаду.
Либо вы любите людям голову морочить, либо сами не всё понимаете, поскольку в данный момент пишете полный бред... :(

На схеме изображена конкретная реализация триггера, работающего по фронту.

Image

Об этом свидетельствует стрелка. И ни про какие элементы NAND ничего не говорится! :-?

Если триггер работает по спаду, у него другое обозначение:
При этом совершенно безразлично на каких элементах триггер сделан внутри.
В смысле обозначения на схеме у автора косяк. Тут я с вами согласен. Но у него есть и другая неточность. Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
Mixa64
Doomed
Posts: 481
Joined: 25 Aug 2009 07:02
Location: Москва

Re: 4-bit Processor

Post by Mixa64 »

Lavr wrote:
Mixa64 wrote:
Bill wrote: :) Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor
...
Переключением схемы переноса-заема можно превращать сумматор в вычитатель и обратно
Внизу по ссылке: Adder–subtractor
add-sub.png
Что-то Википедисты переключением схемы переноса-заема превращать сумматор в вычитатель и обратно не торопятся! :wink:
Да бог с ними, с википедиками, таскают туда-сюда вариации вычитателя на базе сумматора.. Разряды сформировали, на заем с переносом положили.
К этой картинке тоже есть вопросы, треугольнички имелось в виду инверторы, получилось как повторители.
Image
Вот если вместо этих "подразумевается инвертор" поставить по XOR, (управляемые инверторы), то будет переключение между вычитанием и суммированием, с нормальными (по смыслу как у людей) переносом и заемом.
Shumadan
Fanat
Posts: 67
Joined: 10 Mar 2018 12:50

Re: 4-bit Processor

Post by Shumadan »

в продолжение темы. Видел у одного пенсионера такую штучку.
http://www.155la3.ru/k584.htm
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:В смысле обозначения на схеме у автора косяк. Тут я с вами согласен.
Ну вот я и попросил всех вас - коллег по форуму, у кого есть VK, намекнуть автору косяк исправить. :wink:
Ибо, когда пишешь в форму обратной связи:

Image

Она требует авторизации в VK, а у меня такой авторизации нет.
В остальном автор преподносит весьма неплохой учебный материал...
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Mixa64 wrote:Вот если вместо этих "подразумевается инвертор" поставить по XOR, (управляемые инверторы), то будет переключение между вычитанием и суммированием, с нормальными (по смыслу как у людей) переносом и заемом.
Да это ладно... придираться к Вики - себя не уважать... смысл мы поняли. И я вовсе не против этой схемы
т.н. "именно вычитателя". Возможно, с академической или учебной точек зрения она и представляет интерес...

Но весь цимес заключается в том что эта схема полностью идентична той, что практически используется
в обсуждаемых микропроцессорах и известных ИС АЛУ.
sub2.PNG
Распространенная схема II получается из схемы I упрощением, если знать вот эти формулки:

 АКСИОМЫ И ТОЖДЕСТВА БУЛЕВОЙ АЛГЕБРЫ-ЛОГИКИ
Image

И известный факт, что полный сумматор является самодвойственной функцией.

Честно говоря, там и по ссылке https://en.wikipedia.org/wiki/Subtractor написано:
Subtractors are usually implemented within a binary adder for only a small cost when using the standard two's complement notation, by providing an addition/subtraction selector to the carry-in and to invert the second operand.
Бюджетные (small cost) вычитатели обычно реализуются на основе двоичного сумматора при использовании стандартного представления дополнения двоичного числа до двух, с использованием селектора операции сложения/вычитания для входа переноса и инверсии второго операнда.
Бюджетные (или small cost - дешевые) по той простой причине, что для 8-разрядного сумматора-вычитателя
понадобится 16 управляемых инверторов если делать его по схеме "именно вычитателя", и лишь 9 по типичной схеме...

Но весь этот сыр-бор с "именно вычитателями" начался у нас с вот этого заявления:
Bill wrote:
Lavr wrote:Опять я споткнулся об эти флаги, программируя 6502... :-?
Оказывается, есть просто разные подходы к интерпретации флага переноса C: от Intel и от MOS Technology
Image
Some architectures, namely MOS 6502 and all ARM CPUs, use "true carry" subtraction implementation that Carry flag from PSW is not inverted before and after subtraction, so, C = 1 means no borrow and C = 0 means borrow.
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание, в других случаях вычитание заменяется сложением с дополнительным кодом вычитаемого. Например, операция 1-1 = 0.

Code: Select all

    00000001        00000001
  -                +
    00000001        11111111
 С  --------     С  ---------
 0  00000000     1  00000000
Однако на сегодняшний день схемотехника древних микропроцессоров Intel и MOS секрета не представляет,
и по информации из открытых источников очевидно, что вычитание в них организовано с инверсией
вычитаемого, а не т.н. "именно вычитанием"... :wink:
ALU6502.PNG
ALUi8085.PNG
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Джентльмены, поскольку эта беседа с самого начала не затрагивает темы 4-bit Processor,
вы не будете против, если я перенесу её в топик Hardware под заглавием Сумматор-вычитатель ?
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
Интересно, а где конкретно вы имели случай лицезреть такую "тонкость" ?
У меня напряг со временем сейчас, но сегодня, выбрав минутку, полистал я классиков жанра: Хоровиц-Хилл,
Гутников, Алексеенко-Шагурин и т.д.

Все они единодушны в мнении, что T-триггер - это вот что:
T-trig.png
А где вы встречали свой такой затейливый "Реальный T-триггер" ? :roll:
You do not have the required permissions to view the files attached to this post.
iLavr
Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Re: 4-bit Processor

Post by Bill »

Lavr wrote:
Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
Интересно, а где конкретно вы имели случай лицезреть такую "тонкость" ?
У меня напряг со временем сейчас, но сегодня, выбрав минутку, полистал я классиков жанра: Хоровиц-Хилл,
Гутников, Алексеенко-Шагурин и т.д.

Все они единодушны в мнении, что T-триггер - это вот что:
T-trig.png
А где вы встречали свой такой затейливый "Реальный T-триггер" ? :roll:
Вообще-то, насколько мне известно, T-триггеры как самостоятельные изделия промышленностью не выпускаются. Но хотя-бы чисто теоретически таковые имеются наряду с RS-, D- и JK-триггерами.
https://www.electronics-tutorials.ws/se ... -flop.html
С другой стороны микросхемы синхронных счётчиков строятся на основе D-триггеров, которые как раз используются в режиме T-триггера.
https://assets.nexperia.com/documents/d ... HCT163.pdf
PS: Кстати, на основе T-триггера можно выполнить D-триггер, а также JK-триггер. И вообще, все эти триггеры можно рассматривать как элементарные автоматы, и на их основе можно синтезировать произвольный конечный автомат.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
А вот так - не то же ли самое получится? :roll:
T-image013.jpg
You do not have the required permissions to view the files attached to this post.
iLavr
Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Re: 4-bit Processor

Post by Bill »

Lavr wrote:
Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
А вот так - не то же ли самое получится? :roll:
Image
Наверное, можно и так. Разве что дополнительная задержка (небольшая) на входе синхронизации появляется.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:
Lavr wrote:
Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
А вот так - не то же ли самое получится? :roll:
Image
Наверное, можно и так. Разве что дополнительная задержка (небольшая) на входе синхронизации появляется.
А от вентиля XOR значит дополнительная задержка (тоже небольшая) совсем не появляется? :roll:
Мне так думается, что у вентиля XOR эта дополнительная задержка (совсем небольшая) но подлиннее
будет в силу его более сложной внутренней структуры... :wink:
iLavr
Bill
Fanat
Posts: 92
Joined: 25 Jan 2014 21:54
Location: 37.113.169.14

Re: 4-bit Processor

Post by Bill »

Lavr wrote:
Bill wrote:
Lavr wrote:
Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
А вот так - не то же ли самое получится? :roll:
Image
Наверное, можно и так. Разве что дополнительная задержка (небольшая) на входе синхронизации появляется.
А от вентиля XOR значит дополнительная задержка (тоже небольшая) совсем не появляется? :roll:
Мне так думается, что у вентиля XOR эта дополнительная задержка (совсем небольшая) но подлиннее
будет в силу его более сложной внутренней структуры... :wink:
По отношению к активному фронту (спаду) синхроимпульса значение сигнала на входе D будет вполне установившимся, а значит и задержки не будет.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Bill wrote:
Lavr wrote:
Bill wrote:
Lavr wrote:
Bill wrote:Если соединить инверсный выход триггера с D-входом, то триггер действительно будет работать в счётном режиме. Но это не значит, что при этом D-триггер превратиться в T-триггер. Реальный T-триггер должен иметь информационный вход T. При этом логика работы такого триггера будет следующей: при T=0 триггер сохраняет своё текущее состояние вне зависимости от перепадов синхросигнала; при T=1 триггер будет переключаться в противоположное состояние при активном перепаде сигнала синхронизации. Чтобы реализовать T-триггер на основе D-триггера, необходимо вход D соединить с прямым выходом триггера через вентиль XOR. Второй вход вентиля будет служить входом T. Возможно автор не обратил внимания на эту тонкость.
А вот так - не то же ли самое получится? :roll:
Image
Наверное, можно и так. Разве что дополнительная задержка (небольшая) на входе синхронизации появляется.
А от вентиля XOR значит дополнительная задержка (тоже небольшая) совсем не появляется? :roll:
Мне так думается, что у вентиля XOR эта дополнительная задержка (совсем небольшая) но подлиннее
будет в силу его более сложной внутренней структуры... :wink:
По отношению к активному фронту (спаду) синхроимпульса значение сигнала на входе D будет вполне установившимся, а значит и задержки не будет.
В статике это так. Но в динамике всё несколько иначе.
XOR у вас в роли управляемого инвертора и он же создаёт задержку между выходом D-триггера и входом D.
Поэтому в динамике этот триггер по вашему описанию работает на запись состояния входа D постоянно.
Но при включении его по входу Т (второй вход XOR) режим работы будет зависеть от того в каком соотношении по времени находились сигнал Т и тактовый сигнал.
При этом Т-триггер по вашему описанию может начать работать некорректно, если XOR не успел инвертировать сигнал с выхода D-триггера.
А на высокой частоте может и вовсе перестать работать.
Возможно вы не обратили внимания на эту тонкость? :roll:
iLavr