Pull to refresh

Comments 37

В замечательной книге «Bebop to the Boolean Boogie, Third Edition: An Unconventional Guide to Electronics» решение приведено и очень хорошо показано его создание — после чтения забыть его невозможно.
Так это же элементарные законы де Моргана
nA = (!(A & B)) | B
nA = !A | !B | B
!B | B = 1
nA всегда 1, так что пока мимо.

Ответ гораздо интересней.
Ну тогда наоборот =)
nA = (!(A | B)) & B
nB = (!(A | B)) & A
nC = (!C)
nA = (!(A | B)) & B
nA = (!A & !B) & В
nA = !A&B & !B&В
!B&B = 0

nA всегда 0

Продолжаем поиск

А=1, B=0. nA=(!(1|0))&0=0&0=0 nB=(!(1|0))&1=0&1=0. не работает)
Про задачу не знал. Пришлось: 1. Порисовать. 2. Зарегистрироваться на GT. :)
Итак, предположительно что-то вроде:
D = !(A|B|C)
E = !(A&B&C)
Тогда:
nA = (B|C|D)&(B|D)&(C|D)&(D|E)
или
nA = (B&C&E)|(B&E)|(C&E)|(D&E)
Ну и для nB, nC аналогично.
Давайте полный ответ.
Там где очевидные ошибки, я на них указываю, а там где много букв придется проверять в симуляторе, боюсь ошибусь, если за вас буду додумывать…
Ок. Самому бы не запутаться… :)
nB = (A|C|D)&(A|D)&(C|D)&(D|E)
или
nB = (A&C&E)|(A&E)|(C&E)|(D&E)
и для C:
nC = (A|B|D)&(A|D)&(B|D)&(D|E)
или
nC = (A&B&E)|(A&E)|(B&E)|(D&E)
Проверяйте.
— Но тут, по-моему — главное догадка, что два инвертора нужно использовать для инверсии («всего по и») и («всего по или»). А потом уже плясать от комбинаций из 5 входных бит.
Догадка или верна или нет. Частности — это просто время на проверки.
— Что любопытно, число входных сигналов неважно. Вот только с практической точки зрения преобразователь может оказаться неадекватно сложным.

Я могу доказать, что в любом верном решении один из инверторов будет использовать выход другого (возможно, опосредовано). В вашем решении это не так, так что дальше можно не смотреть, оно неверное.

(… Заставили задуматься и внимательно пересмотреть нарисованные схемки...) Таки да, нашлись «ложные срабатывания».
Вспомнил ГПиМРМ и задачки в купе в 8-й главе… Мда. :)
А можно узнать, где описывается то, что «любом верном решении один из инверторов будет использовать выход другого»? Откуда такой частный вывод? Или для этого обязательно придется читать где-то все готовое решение?

Где описывается, не знаю, я это вывел сам. Идея такая: рассмотрим последовательность переходов 000 → 100 → 110 → 111 (три цифры — значения A, B и C). Эта последовательность монотонная (это значит, что в ней 1 никогда не заменяется на 0). Последовательность значений любой функции, использующая только операции И и ИЛИ, также будет монотонной. Если ни один из инверторов не использует значение другого, то последовательность входных значений будет монотонной — или константой, или сколько-то нулей, затем сколько-то единиц. То есть, будет максимум один переход, где 0 заменяется на 1. На выходе, соответственно, максимум 1 переход, где 1 заменяется на 0.


Итоговые значения (nA, nB и nC) являются монотонными функциями от A, B, C и выходов инверторов. Чтобы монотонная функция изменила значение с 1 на 0, нужно, чтобы один из параметров изменил значение с 1 на 0. В данной последовательности на каждом из трёх переходов одно из значений nA, nB и nC меняется с 1 на 0, при этом A, B и C не меняют значение с 1 на 0. Значит, это должны делать выходы инверторов, но их всего 2, и каждый меняет значение выхода с 1 на 0 максимум на одном из переходов. То есть, на одном из трёх переходов ни один из двух инверторов не меняет значение выхода с 1 на 0, и на этом переходе значение результата не может измениться с 1 на 0, то есть хотя бы на одном из этих четырёх наборов входных значений выходные значения будут неправильные.


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

Спасибо за объяснение…
К сожалению, ваш текст я вроде бы прочитать могу, но для меня это перебор — у меня не хватает базы для составления такой цепочки.
Так что я пас, пожалуй… Я не могу объяснить для себя «на пальцах» математического смысла ваших выходов инверторов.
Возможно, придется все же посмотреть готовое решение…
А вот это интересно. Еще и опосредовано. Не поленитесь?
D = !(A|B|C);
E = !(A&B&C);

nA = (B|C|D)&(B|D)&(C|D)&(D|E);
nB = (A|C|D)&(A|D)&(C|D)&(D|E);
nC = (A|B|D)&(A|D)&(B|D)&(D|E);

При A=0,B=0,C=1 получается nA=0,nB=0,nC=0, продолжаем поиск.
Спасибо за проверку. Да, при более тщательном просмотре 4 комбинации из 8 обрабатываются «криво». Сам виноват, «положительная предвзятость». :)

Решил сам.


Решение
D = !((A&B)|(B&C)|(A&C))
E = !((D&(A|B|C))|(A&B&C))
nA = (D&E)|(D&(B|C))|(E&B&C)
nB = (D&E)|(D&(A|C))|(E&A&C)
nC = (D&E)|(D&(A|B))|(E&A&B)
Дабы чуть объяснить решение, отметим, что
DE2 = 112 - A - B - C
А что такую красоту генерирует, если не секрет?..
Что это за программа для моделирования?
UFO just landed and posted this here
Сейчас вечер и голова варит, но если из 2х инверторов можно «сделать три», то можно ли из тех двух что есть в этих трёх сделать опять три и таким образом получить 4, и так увеличивать до бесконечности? Я конечно в этом сильно сомневаюсь, и почти наверняка укускаю что-то очевидное…
Можно. Но каскадность схемы растет по експоненте. Т.е. схема 2->3 это уже 23 элемента (включая 2 инвертора) в каскаде 8 (т.е. критический путь это 8 каскадов). Если использовать эти инверторы, то каскадность вырастет: 6 + 8 + 8 = 22 (4 инвертора). Далее уже 6+22+8(неспользованный) = 36 (5 инверторов). Т.е. тут уже думать что важнее: скорость, сложность, надежность. Чем сложнее схема, тем больше схема и выше вероятность отказа.
Да. Забыл еще про усилители сигнала. А это тоже лампы :)
Не до конца понимаю смысл, потом добавлю как надумаю, пока только вот так можно поменять местами значения.
b:=a-b;
a:=a-b;(a-a+b=b)
b:=b+a;(a-b+b=a)
А я подумал что на входе дешифратор, а дальше шифратор.
Не уверен, нужны ли там инверторы вообще.
Задачка интересная, но заголовок статьи — кликбейт «Это невероятно, даже ведущие специалисты заходят в тупик»
не заходят, вероятно, если очень нужно будет, то даже посредственный электронщик найдет решение

«я то в советские времена… !»
Существует ли несимметричное решение? Никак не могу придумать

XOR содержит один NOT. XOR = "^"


D = A ^ B


!A = D & B
!B = D & A


!C = !C

К сожалению не проходит уже при A=0,B=0,C=0;
D=0;
nA = 0, nB=0, nC = 1
Sign up to leave a comment.

Articles