nedoPC.org

Community for electronics hobbyists, established in 2002
Last visit was: 10 Nov 2024 13:05
It is currently 10 Nov 2024 13:05



 [ 38 posts ]  Go to page 1, 2, 3  Next
Сумматор-вычитатель 
Author Message
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Lavr wrote:
Shaos wrote:
ну просто видимо при сложении C должен быть прямой флаг, а при вычитании - инверсный

P.S. вот тут устами самого интела говорится, что после вычитания флаг инвертируется (стр.46 в PDF или 2-8 на бумаге):
http://www.tramm.li/i8080/Intel%208080-8085%20Assembly%20Language%20Programming%201977%20Intel.pdf
Quote:
This is because the processors complement the carry flag at the end of a subtract operation so that it can be used as a 'borrow' flag in multibyte subtractions

Действительно...
Quote:
Однако если такие операции проводятся микропроцессорами i8080 или i8085, флаг переноса будет СБРОШЕН в конце вычитания. Это происходит потому, что микропроцессоры инвертируют флаг переноса в конце операции вычитания, так чтобы он мог быть использован в дальнейшем в качестве флага «заёма» при многобайтном вычитании.

Опять я споткнулся об эти флаги, программируя 6502... :-?
Оказывается, есть просто разные подходы к интерпретации флага переноса C: от Intel и от MOS Technology
Image
Quote:
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:
    00000001        00000001
  -                +
    00000001        11111111
 С  --------     С  ---------
 0  00000000     1  00000000


23 Oct 2022 22:26
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание,

А как "именно вычитание" выполняется в АЛУ аппаратно?

_________________
iLavr


24 Oct 2022 03:54
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание,

А как "именно вычитание" выполняется в АЛУ аппаратно?

С помощью аппаратного вычитателя. Пример - АЛУ 74181.


24 Oct 2022 08:46
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Bill wrote:
Lavr wrote:
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание,

А как "именно вычитание" выполняется в АЛУ аппаратно?
С помощью аппаратного вычитателя. Пример - АЛУ 74181.

Вот мне и интересно, как лично Вы представляете себе схемотехнику "аппаратного вычитателя"? :roll:
Я лично никак не представляю, как аппаратно выполняется именно вычитание, о чём вы поведали.
Именно поэтому и спрашиваю Вас о конкретной аппаратной реализации этого неизвестного мне узла цифровой техники. :-?

В рамках этого форума мы АЛУ 74181 aka К155ИП3 не раз подробно рассматривали:

Image

Где там в его структуре "аппаратный вычитатель"? Или хотя бы полувычитатель? :roll:

_________________
iLavr


25 Oct 2022 04:46
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Bill wrote:
Lavr wrote:
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание,

А как "именно вычитание" выполняется в АЛУ аппаратно?
С помощью аппаратного вычитателя. Пример - АЛУ 74181.

Вот мне и интересно, как лично Вы представляете себе схемотехнику "аппаратного вычитателя"? :roll:
Я лично никак не представляю, как аппаратно выполняется именно вычитание, о чём вы поведали.
Именно поэтому и спрашиваю Вас о конкретной аппаратной реализации этого неизвестного мне узла цифровой техники. :-?

В рамках этого форума мы АЛУ 74181 aka К155ИП3 не раз подробно рассматривали:

Image

Где там в его структуре "аппаратный вычитатель"? Или хотя бы полувычитатель? :roll:

Если кратко, то вычитатель мало чем отличается от сумматора. Единственное отличие состоит в том, что для формирования переноса (заёма) используется инверсия уменьшаемого. Т.е. для выполнения операции D= A - B формула будет следующей:
Di = AiBi ^ Aibi ^ Bibi
bi+1 = ~AiBi | ~Aibi | Bibi

А вообще, всё это получается из таблицы истинности.
А что касается 74181, если верит таблице её функций, то при комбинации S3S2S1S0 = 0110 выполняется как раз операция вычитания F = A - B.
PS: Ещё одна ссылка по 74181: http://www.6502.org/users/dieter/a2/a2_4.htm


26 Oct 2022 02:14
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Bill wrote:
Lavr wrote:
Bill wrote:
Lavr wrote:
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание,
А как "именно вычитание" выполняется в АЛУ аппаратно?
С помощью аппаратного вычитателя. Пример - АЛУ 74181.
Вот мне и интересно, как лично Вы представляете себе схемотехнику "аппаратного вычитателя"? :roll:
Если кратко, то вычитатель мало чем отличается от сумматора. Единственное отличие состоит в том, что для формирования переноса (заёма) используется инверсия уменьшаемого.

Если вы не разобрались в конкретно приведенной выше схемотехнике АЛУ, то хотя бы прочитайте
внимательно, как АЛУ 74181 выполняет вычитание: https://digteh.ru/proc/ALU/
Attachment:
74181.PNG

То есть, АЛУ 74181 выполняет вычитание суммированием с числом в дополнительном коде.

А вот это ваше высказывание весьма сомнительно, ибо, как видно выше, никакого специального
аппаратного именно вычитания в АЛУ даже на примере 74181 нет.
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание, в других случаях вычитание заменяется сложением с дополнительным кодом вычитаемого. Например, операция 1-1 = 0.
Code:
    00000001        00000001
  -                +
    00000001        11111111
 С  --------     С  ---------
 0  00000000     1  00000000


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


26 Oct 2022 04:47
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Bill wrote:
Lavr wrote:
Bill wrote:
Lavr wrote:
Вот мне и интересно, как лично Вы представляете себе схемотехнику "аппаратного вычитателя"? :roll:
Если кратко, то вычитатель мало чем отличается от сумматора. Единственное отличие состоит в том, что для формирования переноса (заёма) используется инверсия уменьшаемого.

Если вы не разобрались в конкретно приведенной выше схемотехнике АЛУ, то хотя бы прочитайте
внимательно, как АЛУ 74181 выполняет вычитание: https://digteh.ru/proc/ALU/
Attachment:
74181.PNG

То есть, АЛУ 74181 выполняет вычитание суммированием с числом в дополнительном коде.

А вот это ваше высказывание весьма сомнительно, ибо, как видно выше, никакого специального
аппаратного именно вычитания в АЛУ даже на примере 74181 нет.
Bill wrote:
Тут всё зависит от реализации операции вычитания в АЛУ. В одних случаях выполняется именно вычитание, в других случаях вычитание заменяется сложением с дополнительным кодом вычитаемого. Например, операция 1-1 = 0.
Code:
    00000001        00000001
  -                +
    00000001        11111111
 С  --------     С  ---------
 0  00000000     1  00000000

Всё это так, только по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому. Посмотрите по ссылке, которую я привёл в своём предыдущем посте. Там всё хорошо показано.


26 Oct 2022 07:41
Doomed

Joined: 25 Aug 2009 07:02
Posts: 471
Location: Москва
Bill wrote:
Всё это так, только по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому. Посмотрите по ссылке, которую я привёл в своём предыдущем посте. Там всё хорошо показано.

Ну в АЛУ '181 вычитание делается за счет активации инверсного пути прохождения со входов Bn , сложение - активацией пути без инверсии, весь остальной бэкенд без изменений. Трактовки можно пытаться выбирать разные. Например, как сумматор с переключением одного входа между прямой-инверсный, или как все вместе, сумматор-вычитатель. Но если как сумматор-вычитатель, то трактовка переносов неудобная выходит. Их бы тоже инвертировать при вычитании, тогда будут прямые перенос-заем, или, что более универсально, беззнаковое переполнение. Хотя, цифровым пофиг, удобство, неудобство, лишь бы какую-то комбинационную функцию выполняло. В общем, либо сумматор с опцией внутренней инверсии одного из входов, либо сумматор-недовычитатель.


27 Oct 2022 15:40
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Mixa64 wrote:
Bill wrote:
Всё это так, только по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому. Посмотрите по ссылке, которую я привёл в своём предыдущем посте. Там всё хорошо показано.

Ну в АЛУ '181 вычитание делается за счет активации инверсного пути прохождения со входов Bn , сложение - активацией пути без инверсии, весь остальной бэкенд без изменений. Трактовки можно пытаться выбирать разные. Например, как сумматор с переключением одного входа между прямой-инверсный, или как все вместе, сумматор-вычитатель.

"Вычитатель", если в принципе применять это слово, дорогой Bill, ВСЕГДА строится на основе сумматора.
И других вариантов просто нет.
"Вычитателем" аппаратный сумматор становится благодаря принятой и распространённой кодировке
отрицательных чисел, которая обеспечивает нам единственность нуля. Хотя и не всегда так было...

Именно поэтому я столь настойчиво спрашивал вас, как вы представляете "вычитатель" аппаратно.
Получается, что вы и сами в этом не разобрались толком, и людей вводите в заблуждение... :-?

В системе команд PDP-8, к примеру, операции вычитания и вовсе нет, как нет и никакого аппаратного
именно вычитателя в составе её АЛУ.
Что ж, выходит, PDP-8 именно вычитание выполнять не умеет? :roll: Отнюдь... :wink:

Кстати говоря, насчёт "активации инверсного пути прохождения": когда я делал своё собственное АЛУ
с ограничением "сугубо" на NAND
, то именно этот метод и применил...
Но если присмотреться к таблице истинности этого метода, то получается, что это тот же XOR - управляемый
инвертор - но выполненный на рассыпухе. :lol:

_________________
iLavr


30 Oct 2022 03:18
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Кстати, джентльмены, ни у кого случаем нет контактов некоего г-на Микушина А.В. -
автора вот этой учебной страницы в Интернете: https://digteh.ru/digital/counter.php

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

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

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

Хотя даже нелюбимый многими Proteus подсказывает, что это не так. :wink:
Attachment:
CNT_F.PNG


Я бы и сам намекнул бы ему об этом, но, к сожалению, контактов кроме VK автор не оставил,
Attachment:
VK.PNG

а материал, выдаваемый за учебный, будут бездумно списывать все представители поколения ЕГЭ... :-?


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


30 Oct 2022 04:01
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Mixa64 wrote:
Bill wrote:
Всё это так, только по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому. Посмотрите по ссылке, которую я привёл в своём предыдущем посте. Там всё хорошо показано.

Ну в АЛУ '181 вычитание делается за счет активации инверсного пути прохождения со входов Bn , сложение - активацией пути без инверсии, весь остальной бэкенд без изменений. Трактовки можно пытаться выбирать разные. Например, как сумматор с переключением одного входа между прямой-инверсный, или как все вместе, сумматор-вычитатель.

"Вычитатель", если в принципе применять это слово, дорогой Bill, ВСЕГДА строится на основе сумматора.
И других вариантов просто нет.
"Вычитателем" аппаратный сумматор становится благодаря принятой и распространённой кодировке
отрицательных чисел, которая обеспечивает нам единственность нуля. Хотя и не всегда так было...

Именно поэтому я столь настойчиво спрашивал вас, как вы представляете "вычитатель" аппаратно.
Получается, что вы и сами в этом не разобрались толком, и людей вводите в заблуждение... :-?

В системе команд PDP-8, к примеру, операции вычитания и вовсе нет, как нет и никакого аппаратного
именно вычитателя в составе её АЛУ.
Что ж, выходит, PDP-8 именно вычитание выполнять не умеет? :roll: Отнюдь... :wink:

Кстати говоря, насчёт "активации инверсного пути прохождения": когда я делал своё собственное АЛУ
с ограничением "сугубо" на NAND
, то именно этот метод и применил...
Но если присмотреться к таблице истинности этого метода, то получается, что это тот же XOR - управляемый
инвертор - но выполненный на рассыпухе. :lol:

:) Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor


31 Oct 2022 05:01
Doomed

Joined: 25 Aug 2009 07:02
Posts: 471
Location: Москва
Bill wrote:
:) Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor

Во, годная ссылочка :-)
Теперь - вычитатель как он есть, без колдовства над вычитаемым.
Тракт формирования разряда результата, что у сумматора, что у вычитателя, одинаков: X⊕Y⊕C или X⊕Y⊕B
Ну и, как ранее уже было отмечено, различаются они (сумматор и вычитатель) только схемой обработки переноса или заема. Переключением схемы переноса-заема можно превращать сумматор в вычитатель и обратно.


31 Oct 2022 05:57
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Bill wrote:
Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor
Смотрим ссылочку:
Attachment:
DIF2.png

Bill wrote:
...по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому.

Ну и где в АЛУ 74181 такой каскад? :roll:

Image


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


31 Oct 2022 10:02
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Mixa64 wrote:
Bill wrote:
:) Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor
...
Переключением схемы переноса-заема можно превращать сумматор в вычитатель и обратно

Внизу по ссылке: Adder–subtractor
Attachment:
add-sub.png

Что-то Википедисты переключением схемы переноса-заема превращать сумматор в вычитатель и обратно не торопятся! :wink:


You do not have the required permissions to view the files attached to this post.

_________________
iLavr


31 Oct 2022 10:23
Fanat

Joined: 25 Jan 2014 21:54
Posts: 92
Location: 37.113.169.14
Lavr wrote:
Bill wrote:
Ещё одна ссылочка: https://en.wikipedia.org/wiki/Subtractor
Смотрим ссылочку:
Attachment:
DIF2.png

Bill wrote:
...по вашей ссылке вычитатель опять же строится на основе сумматора. В АЛУ 74181 операция вычитания выполняется по-другому.

Ну и где в АЛУ 74181 такой каскад? :roll:

Image

Вы всё-таки ссылочку посмотрите http://www.6502.org/users/dieter/a2/a2_4.htm
Там всё чётко объясняется.
Quote:
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.



31 Oct 2022 20:31
 [ 38 posts ]  Go to page 1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.