В заглавии
этого форума есть следующие слова: (
прошлое, настоящее, будущее)...
Будущее, как мы тут многие (
хотя и не все) считаем, должно принять во внимание
троичную логику.
Поэтому небольшой
проект 4-тритного компьютера, основанного на троичной логике, я и решил представить
именно здесь, поскольку основные схемотехнические решения позаимствованы мной из моего же собственного
проекта
4-bit Processor.
Для воплощения третьего неопределённого состояния логики я решил использовать тот факт, что наложение
логической единицы на
логический ноль Proteus воспринимает как
логический конфликт, но амплитуду
в точке логического конфликта трактует как среднее состояние между логическим нулём и логической
единицей, что, собственно и соответствует состоянию "неопределено", "неизвестно" троичной логики.
С точки зрения "математики" библиотек
*.dll Proteus-a это состояние ничуть не хуже и не лучше всех
остальных состояний, которые
Proteus способен учесть, анализируя логические схемы:
Единственное, что несколько омрачает эту идею, схемотехника устройства при использовании состояния
логического конфликта в качестве логического "неопределено" или "неизвестно" должна быть в значительной
мере корректной, чтобы избегать реальных логических конфликтов, которые будут теперь трактоваться
как конкретный логический уровень.
Итак, я решил делать процессор
4-тритным, поскольку
схемотехника 4-разрядного процессора была мной
хорошо проработана, а во-вторых, это позволяет более или менее корректно сравнить 4-битный процессор
с его 4-тритным эквивалентом.
И вот что у меня на этой стезе получилось:
Схема в большом разрешении Поскольку двоичная логика является подмножеством троичной логики, но элементы троичной логики обходятся
в данный момент весьма дорого, я решил, что троичные логические элементы должны быть лишь там где это
сугубо необходимо, чтобы проект осуществлял троичные операции.
В этой связи управление в значительной мере выполнено на двоичной логике, ПЗУ микрокоманд - двоичное,
ОЗУ и системное ПЗУ - двоичные. Троичные значения сохраняются и извлекаются в
формате BCT.
Адрес декодируется через
дешифратор 3 - в - 2.
Программный счётчик РС 8-тритный, что даёт нам
6561 независиый адрес для хранения троичных кодов.
В двоичном 4-битном компьютере РС был 12-разрядный, что давало всего 4096 ячеек памяти.Троичность позволила зело упростить схемотехнику узла без потери количественной характеристики.
Карта памяти и программная модель 4-тритного компьютера с 8-тритной шиной адреса выглядят следующим
образом:
Регистр А - аккумулятор.
Регистр В - обычно второй аргумент, но и temp-регистр для многих операций.
Регистр F - флаги, троичных флагов два:
C - carry (перенос)
S - sign (знак).
Два троичных флага сохраняются как 6 двоичных, при этом появляется
Z и
NZ... etc.
4-разрядная шина данных в троичном процессоре позволяет передать
81 независимый код.
АЛУ при работе со знаковыми аргументами работает в диапазоне
-40 ... 0 ... +40.
Возможна
81 оригинальная команда данного процессора.
С командами я поступил в этот раз несколько иначе: я добавлял их понемногу в набор и пробовал
программировать. Если выразительных средств не хватало, добавлял еще команд.
В итоге на данный момент минимальный набор команд следующий:
Система команд 4-тритного ЦПУ Я в этом наборе программировал довольно успешно, и без особых неудобств.
Бросается в глаза, что опять в наборе нет
CALL и
RET - это сделано сейчас специально.
Аппаратные средства заложены на
CALL,
RET и
INT (а он с ними связан).
Но уж больно мне захотелось попробовать одну древнюю идею
Сеймура Крея. В системе команд
его компьютера не было
CALL и
RET, но было указание, что если они вам очень нужны -
реализуйте их программно!
Я попробовал - и получилось!
Я пока не выкладываю никаких библиотек и проектов, поскольку версия проекта -
Alfa, а
альфа-
тестирование обычно проводится силами штатных разработчиков. ©
Так что в заключение - видео, как всё это реально работает:
Ternary computer video Я уже посмотрел это видео с разных компьютеров и отметил, что
Ютуб зачастую снижает качество
картинки, что для схемотехники весьма неприятно. Оригинальный материал можно
взять здесь.
Я не накладывал на изображение музыки, чтобы не нарушать ничьих авторских прав...
Но сейчас посмотрел в папку, откуда я выкладываю картинки:
C:\Tri_CPU_SyScmd1.gif
C:\Tri_CPU_SyScmd2.gif
C:\Tri_CPU_SyScmd3.gif
C:\Tri_MemoryMap3.gif
C:\Triplo_Max_-_Shadow Вот
Tri_plo_Max_-_Shadow - вполне можно послушать фоном для этого ролика...