Algorithms
Entertaining tasks
Mathematics
Abnormal programming
Programming microcontrollers
Comments 64
+2
Круто!

Не сочтите за троллинг, но есть ли какие-нибудь реально целесообразные применения у итогового девайса на подобной схеме?
+8
Когда я был маленьким, нам на курсах тоже пытались рассказать про троичную систему с перспективой построения компьютеров на такой логике. Половина одногрупников была восторжена «потенциалом мощности» таких решений(этож сразу на 50% мощнее чем двоичная логика!).
Прошло 20 лет, готовятся всё те же курсы, для таких же студентов.
Так что перспектива такая — лет через 20, какой-нибудь из восторженых текущей лекцией студентов снова будет готовить точно такую-же лекцию для следующей партии студентов.
Других применений я не предполагаю, ну ещё может несколько человек в порывах научного голода попробует какую-нибудь мигалку светодиодов собрать.
+2
Сетунь — машина с троичной логикой на двоичной элементной базе. Товарищ Брусенцов взял два бита и комбинацию 11 запретил. После получения этого знания я долго чесал репу в поисках «увеличения эффективности». Да, такая вещь как дополнительный код исчезла, но в остальном профит сомнителен.
-1
Например, для грубой эмуляции работы квантового компьютера. Если в классическом исполнении кубиты принимают конечные значения (0|1) с определенной вероятностью, то здесь конечные состояния можно принять за (-1|1) с вероятностью 100% и с суперпозицией в (0)
+1
Всё же квантовая суперпозиция — это когда сразу во всех значениях, а после измерения — только в одном единственном. В данной ситуации это обыкновенная троичная логика, тут значение будет всегда одно, как до так и после измерения.
0
Мне кажется, в аппарате явно недостаточно светодиодов, показывающих состояние полусумматоров. По крайней мере, если вы его собрали для показа студентам на лекциях, а не исключительно for fun.
0
Я не показываю конечную железку, у меня её нет. Но вообще для понимания состояний есть моделирование, это быстрее и эффективнее, нежели провода перетыкать на макетах.
0
Но вообще для понимания состояний есть моделирование, это быстрее и эффективнее

Тут больше психологический эффект. Студентам просто интереснее, когда им показываешь живой работающий макет, а не софтинку на лабораторном компьютере.
0
Потому и делаю железку. Но железка нужна для проверки результатов моделирования, а не наоборот.
+1

если студенты разобрались с двоичными мультиплексорами, то зачем им еще забивать голову (некоторые просто зубрят не понимая) троичными? какой бонус? повторение — мать учения? какие практические применения у троичной логики? да даже если оно есть, не лучше ли потратить это время на изучение более универсальных FPGA, OpenCL, что уж точно не будет лишним в их будущем?


а если они не разобрались с двоичными, то нахера усложнять троичными?


На любые вопросы из разряда «зачем?!» я отвечаю заранее: «Because I can».

ощущение, что вы для себя "for fun" создали троичные хреньки, а теперь нескольким потокам (не на один ведь год) будете втюхивать с гордостью свою работу студентам. хорошо, когда твоя работа не пропала даром? но нужно ли "забивать" этим студентов? cui bono?

+11
Так автор же в университете преподаёт, а не в ПТУ. Если кто-то не может разобраться с университетским курсом, то может они не там учится, и ему стоит пойти в учебное заведение рангом пониже?
+1

в моем комменте дело было не в "кому преподавать?", а "что преподавать?"


я ведь не знаю всех нюансов:


  • можно троичные мультиплексоры подать за одну пару, а можно растянуть на полсеметра. во втором случае резонный вопрос: может заменить на что-то более полезное для будущих спецов?
  • и если автор говорит, что "оно студентам НАДО", у меня вообще нет вопросов
+27
Зарекался я не отвечать на вопрос «зачем», но один раз всё же сделаю. Разобью по пунктам:

1. В университете (даже на специальности информатика) преподают не только OpenCL, но и литературу, философию и физическую культуру. Поэтому утверждение «лучше бы» неуместно без контекста, который вы не знаете.

2. В университете уместно преподавать не только будущее технологий, но также и прошлое, развивая кругозор и создавая полную картину окружающей среды. Да, я планирую сделать расширение памяти для ATMEL AVR на ферритовых кольцах и опять-таки показать его студентам.

3. Большинство моих студентов никогда в жизни не задавалось вопросом, есть ли жизнь за пределами двоичной системы. Просто даже не подозревают, что можно делать иначе.

4. Вы сильно недооцениваете «for fun». Приносить развлечение и элемент игры в курс лекций я просто обязан, иначе никто меня реально слушать не будет.
+6
Спасибо Вам что вы есть, что есть такие преподаватели которые стремятся​ донести интересно.
+2
Не обращайте внимания на этих людей.
Нам в техникуме преподавали полностью всю железную часть с проектированием.
Слышали о двоичных системах, троичных, 17ричных, 13 ричных (в институте максимум двоичная, 8 и 16 были)
Память на ферритовых кольцах — вообще отдельная тема. Мало кто из ныне живущих специалистов слышал о ней, а видели еще меньше. (мне 30 лет)

Так что много от преподавателя зависит, а не от места обучения.
+2
Пожалуйста, не принимайте моё использование слова «университет» как снобизм. Я вовсе не собирался принижать другие учебные заведения. Я говорил об обучении в целом, а университет указал просто как то место, где конкретно я работаю.
0
Большинство моих студентов никогда в жизни не задавалось вопросом, есть ли жизнь за пределами двоичной системы. Просто даже не подозревают, что можно делать иначе.

Мои ровесники на работе не имеют даже минимальных знаний и представления о троичной с.с. У нас в универе рассказывали о ней, но практики не было. В принципе, если учебное время позволяет, то почему бы и нет.
0
Я в одно время хотел собрать на SMD транзисторах простейшую двоичную логику — типо 4 битный проц, 512 байт оперативки, ПЗУ. По сути аналог микроконтроллера на дискретных элементах. Для реализации на нем программы которая будет запрашивать с современной микросхемы RTC дату и время и выводить на 7-ми сегментные индикаторы. Причем монтаж планировался ультра плотный — все компоненты близко друг другу, платы тонкие, между плат расстояние плотное с изолирующим слоем, минимум разъемов или очень мелкие.
Сил, терпения и быть может мозгов не хватило. Пока отложил до лучших времен.
-2
  1. Большинство моих студентов никогда в жизни не задавалось вопросом, есть ли жизнь за пределами двоичной системы. Просто даже не подозревают, что можно делать иначе.

А доводится ли до конца этот методический пример по обучению самостоятельному мышлению? — т. е. даются ли студентам самостоятельные задания или рефераты на тему "провести расследования и выяснить — почему троичная система пока не вышла за рамки лабораторий" (тут правильный ответ нужно будет искать вообще вне этой системы — кто сумел выйти из рамок — тот и умеет мыслить самостоятельно).

-1
Почти не знаком со всеми этими системами. Но недавно подумал именно как Вы — почему двоичность, почему — правда и ложь? Ведь всем же известно, что истина — где-то посередине — а для этого всё-таки подходит троичная система. Успехов в исследовании!
0
...(некоторые просто зубрят не понимая)...

Когда в инсте на Каширке учился, была байка, что «такие инженеры стране не нужны» :)
0

Как упражнение для ума — сойдет, но в получившейся "железной" схеме явно избыточное число элементов. Все мультиплексоры, принимающие на вход константы, наверняка можно было бы сделать проще.

+1
Вы предлагаете удешевление ценой усложнения понимания схемы. Иметь один-единственный блок, с которым можно работать, имеет своё преимущество. Каждый пусть ищет свой личный компромисс. Не забывайте, что я делаю не серийную, а демонстрационную железку.
0

А на 4х мультиплексорах можно собрать универсальную схему, реализующая любую функцию двух аргументов. Но на трёх смотрится красивее. :)

-4
по моему скромному мнению, компьютер будущего — на тритах
-1
Отличная идея!!! Давайте соберём команду, подключим аксакалов из МГУ (Хосе Рамиля Альвареса и Маслова Сергея Петровича) и сделаем новую вычислительную вселенную!!! :)
0
Первый раз вижу систему счисления с отрицательными базовыми значениями.
сколько знаю, в основе числа от 0 до (base-1). // двоичная, восьмиричная, десятичная, шестнадцатиричная и прочие.

Очень необычно и очень смущает.
+4
Это очень удобно, т.к. органично представляет отрицательные числа. Нет мутных вещей типа отрицательных нулей и все счётчики-сумматоры могут сразу считать в обе стороны.
+1
Не надо тёплое с мягким путать.
1) Отрицательные нули — это мутная вещь арифметики с плавающей точкой. Как в троичной логике реализовать числа, у которых будет одинаковое число знаков после запятой вне зависимости от порядка? Придётся городить абсолютно такой же костыль, как в IEEE 754.
2) Вообще-то в двоичной арифметике всё и так считается в обе стороны, просто это арифметика по модулю 2^[количество_бит_на_число]. Вся фигня с дополнительным кодом — иллюзия для белковых субъектов, которым понадобилось вывести на печать вычет.
0
Как в троичной логике реализовать числа, у которых будет одинаковое число знаков после запятой вне зависимости от порядка?

А в чём Вы видите трудность? Отрицательных нулей не появится, так же, как и не потребуется дополнительный код (вообще).
0

При чем тут дополнительный код? В нем-то как раз отрицательных нулей не бывает.

-1
Вообще-то в двоичной арифметике всё и так считается в обе стороны, просто это арифметика по модулю 2^[количество_бит_на_число]. Вся фигня с дополнительным кодом — иллюзия для белковых субъектов, которым понадобилось вывести на печать вычет.

На самом деле нет: если предположить 8-битную арифметику, то
  • для беззнаковых чисел: 128 × 2 = 256 = 1'0
  • для знаковых чисел: 128 × 2 = -256 = 255'0
+1

Что такое 1'0 и 255'0, а также почему у вас 128 × 2 = -256?


Вообще-то, в 8-битной арифметике 128 × 2 = 0 независимо от знаковости умножения.

-1
Во всех известных мне (двоичных) процессорах, произведение вдвое шире множителей.
0
Ну так и обсуждались изначально (двоичные/троичные) реализации арифметических операций, а не сама по себе арифметика в вакууме.
0

А, вы наверное про операции mul и imul, которые перемножают два числа и возвращают число удвоенной разрядности.


Так вот — в большинстве ЯП нет способа получить старшую часть результата этой операции без хитрых обходных путей (вызовов внешних функций или интринсиков). А для младшего разряда утверждение о том, что это всего лишь операция в кольце вычетов выполняется (в обоих случаях получен корректный 0).


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

0
Я выбрал сбалансированную троичную систему, в которой один трит может представлять одно из трёх значений -1, 0 или 1. Весьма подробно о ней можно почитать тут.


Кроме «нативности» отрицательных чисел, есть ещё и «нативность» неопределённого значения.
UFO landed and left these words here
+1
Огромное спасибо за статью. Когда-то в институте у меня была возможность заняться как раз устройствами на троичной логике. А я, дурак, забил(((
Если я не ошибаюсь, то даже есть пример реализации операционной системы для троичного компьютера.
0
Подскажите, а что из себя представляет блок питания в вашей железной реализации? Любопытно больше деталей узнать о том, как вы получаете -5, 0 и +5.
0
Пока что у меня тупой делитель на резисторах, видите крокодилы с блока питания? Я туда 10 вольт подаю. А потом делитель, который даст среднюю точку.

Когда будет надо больший ток иметь, то поставлю два китайских зарядника на 5В.
+2
По поводу «Сетуни» — она не была троичной в истином смысле этого слова, там трит реализовывался на двух битах, поэтому по энергетике она выигрывала не так, как должна была, то есть почти не выигрывала.
Поскольку хорошего троичного элемента так и не сделали, проект умер естественной смертью.
И по поводу троичной системы вообще — личо мне кажется, что главная проблема тут в третьем значении, в предложеной автором реализации, например, будет крайне сложно отличить настоящий ноль от короткого замыкания плюс и минут единицы.
0
Как я читал, в Сетуни, таки использовалась память на ферритовых кольца, насчет энергетики не знаю, но где-то слышал, что она выигрывала надежностью и как не парадоксально, надежность её и погубила, заводам просто было не выгодно производить Сетунь. Относительно ламп, ферритовые кольца все-же более надежный элемент. Ваши последние строчки вызывают у меня недоумение, а как обычный вентиль его заметит? Тут уже вопрос к хорошей конструкции. Есть зоны значений, есть фарбайден зоны, в компьютере таки логический ноль, это не отсутствие напряжение, а вполне определенный (низкий) уровень напряжения. Если вам интересно Xаррис и Харрис можете почитать. (тут я про двоичную конечно, как верно заметил potan в троичной делают по другому)
+3
надежность её и погубила, заводам просто было не выгодно производить Сетунь

Да в СССР хозрасчета в те годы не было, у заводов с этим было проще, исходили из заявок и госплана. Скорее, заказчики осторожничали с машинами непривычной конструкции.
+2
Память на ферритах применялась и вполне себе для двоичной логики ( например в «Электроника-100И» ) — 2 уровня намагничивания, а отсутствие намагничивания просто не использовалось. Да и перекинуть колечко из одного состояния в другое очень просто — достаточно дать ток с запасом и кривая намагниченности сработает за Вас, а вот остановится ровно посередине весьма и весьма нетривиальная задача.
А насчет уровня — речь не о вентиле, который любой уровень воспримет как ноль или единицу, а про человека с тестером или с индикатором — вот там то мы можем увидеть разницу в напряжении при закоротке в двоичной логике, а в троичной в данной реализации это весьма затрудненно.
+4
Представление троичного сигнала уровнями напряжения — очевидное, но не совсем правильное решение. Оно будет проигрывать двоичной логике.
Основная проблема — большая разница напряжений между крайними значениями.
Более эффективно передавать троичное значение по трем проводам (на двух низкое, на одном высокое напряжение). Это соотносится с передачей двоичного значения по дифференциальной паре, которое достаточно широко используется. При этом сохраняется помехозащищенность двоичного кодирования, сокращается количество аппаратуры и глубина схем (за счет троичной системы) и сокращается энергопотребление, так как на каждом такте надо перезарядить меньшее количество линий.
Еще такое кодирование хорошо для реализации асинхронной логики (неготовое значение кодируется низким уровнем на всех линиях).
Плюс — можно использовать стандартные элементы.
0
Брусенцов Н П в последней реализации логического элемента использовал двухполярный источник питания. 0 соответствовал 0. + соответствовал 1, а минус соответствовал -1. И схема была чем-то типа сбалансированного моста.
0
Спасибо большое за статью, и в особенности, за кучу поясняющих картинок. Вы не зря выбрали путь преподавателя, читать такую статью очень приятно. Более того, всё понятно, даже если не вчитываться в текст, а только пробежаться по графическому материалу.
0
Статья хорошая, спасибо.
Иллюстрации схем и понятные технические решения очень хороши. Успехов в популяризации и обучение свежих светлых голов!

Пробежал по комментам, поискал на всякий случай ссылку и не нашёл, так что добавлю — загляните на trinary.ru, лет наверное пять назад для себя открыл. До сих пор помню, уникальная инфа и люди.
«Троичные» часы вообще вещь, которая должна быть у любого сурового программера :)
И по схемотехнике ребята помнится там тоже решали вопросы, может быть полезно.
0
Ну я потому и взял слово «троичные» в кавычки, т.к. сам не понял, почему же они троичные. Но необычные и любопытные это точно.
Only those users with full accounts are able to leave comments. , please.