Re: Тримулятор

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

тримулятор

Post by Shaos »

По дороге из Маями в Нью-Йорк начал писать "тримулятор", который бы эмулировал троичную логику на Java, причем на уровне ключей и компараторов, а не троичных блоков, т.е. предельно близко к железной реализации - из-за этого пришлось ввести в алфавит четвертое состояние U (unplugged). Вот описание модулей на гипотетическом языке описания схем (наверное он будет частью jEmul):

Code: Select all

/*

 Signals (alphabet T):
 N - negative (-1)
 O - ground (0)
 P - positive (+1)
 U - unplugged

 Special marks:
 ! - last value (used in simulation of memory)
 ? - bad value (used as exception mark in simulation)

 Unary blocks:
 MEM - memory cell
 BUF - buffer
 INV - inverter
 BLN - block negative (foreward diode)
 BLP - block positive (backward diode)
 PRP - pull-up resistor to +1
 PRO - pull-down resistor to 0
 PRN - pull-down resistor to -1
 CAO - comparator above O (>0)
 CAN - comparator above N (>-1)
 CBO - comparator below O (<0)
 CBP - comparator below P (<+1)

 Binary blocks:
 NOD - node (2->1)
 SOP - switch O-off P-on
 SPO - switch P-off O-on
 SNP - switch N-off P-on 
 SPN - switch P-off N-on  

 Schemes:
 BUF2 - buffer with 3 outputs
 INV2 - inverter with 3 outputs

*/

alf T:N,O,P,U "Ternary alphabet for hardware implementation"

def MEM T:T "Memory"
 N:N
 O:O
 P:P
 U:!
end

def BUF T:T "Buffer"
 N:N
 O:O
 P:P
 U:?
end

def INV T:T "Inverter"
 N:P
 O:O
 P:N
 U:?
end

def BLP T:T "Block positive"
 N:N
 O:U
 P:U
 U:U
end

def BLN T:T "Block negative"
 N:U
 O:U
 P:P
 U:U
end

def PRP T:T "Pull-up resistor to +1"
 N:N
 O:O
 P:P
 U:P
end

def PRO T:T "Pull-down resistor to 0"
 N:N
 O:O
 P:P
 U:O
end

def PRN T:T "Pull-down resistor to -1"
 N:N
 O:O
 P:P
 U:N
end

def CAO T:T "Comparator above O"
 N:N
 O:N
 P:P
 U:?
end

def CAN T:T "Comparator above N"
 N:N
 O:P
 P:P
 U:?
end

def CBO T:T "Comparator below O"
 N:P
 O:N
 P:N
 U:?
end

def CBP T:T "Comparator below P"
 N:P
 O:P
 P:N
 U:?
end

def NOD TT:T "Node 2->1"
 NN:?
 NO:?
 NP:?
 NU:N
 ON:?
 OO:?
 OP:?
 OU:O
 PN:?
 PO:?
 PP:?
 PU:P
 UN:N
 UO:O
 UP:P
 UU:U
end

def SOP TT:T "Switch O-off P-on"
 NN:?
 NO:U
 NP:N
 NU:?
 ON:?
 OO:U
 OP:O
 OU:?
 PN:?
 PO:U
 PP:P
 PU:?
 UN:?
 UO:U
 UP:U
 UU:?
end

def SPO TT:T "Switch P-off O-on"
 NN:?
 NO:N
 NP:U
 NU:?
 ON:?
 OO:O
 OP:U
 OU:?
 PN:?
 PO:P
 PP:U
 PU:?
 UN:?
 UO:U
 UP:U
 UU:?
end

def SNP TT:T "Switch N-off P-on"
 NN:U
 NO:?
 NP:N
 NU:?
 ON:U
 OO:?
 OP:O
 OU:?
 PN:U
 PO:?
 PP:P
 PU:?
 UN:U
 UO:?
 UP:U
 UU:?
end

def SPN TT:T "Switch P-off N-on"  
 NN:N
 NO:?
 NP:U
 NU:?
 ON:O
 OO:?
 OP:U
 OU:?
 PN:P
 PO:?
 PP:U
 PU:?
 UN:U
 UO:?
 UP:U
 UU:?
end

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: тримулятор

Post by Shaos »

Shaos wrote:По дороге из Маями в Нью-Йорк начал писать "тримулятор", который бы эмулировал троичную логику на Java, причем на уровне ключей и компараторов, а не троичных блоков, т.е. предельно близко к железной реализации - из-за этого пришлось ввести в алфавит четвертое состояние U (unplugged). Вот описание модулей на гипотетическом языке описания схем (наверное он будет частью jEmul)
Можно еще добавить три модуля, выдающие уровни сигналов, соответственно, N O P. В реальной схеме это будет просто подключение к -5В, земле, +5В. Если кому интересно, логика на диодах, подцепляемых к CMOS, называется "Mickey-Mouse Logic" или MML ;)

https://web.archive.org/web/20050510232444/http://musicfromouterspace.com/analogsynth/mmlogic.html
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот модифицированные правила (с новым jEmul-синтаксисом):

Code: Select all

/*

 Signals (alphabet T):
 N - negative (-1)
 O - ground (0)
 P - positive (+1)
 U - unplugged

 Special marks:
 ! - last value (used in simulation of memory)

 Unary blocks:
 MEM - memory cell
 BUF - buffer
 INV - inverter
 BLN - block negative (foreward diode)
 BLP - block positive (backward diode)
 PRP - pull-up resistor to +1
 PRO - pull-down resistor to 0
 PRN - pull-down resistor to -1
 CAO - comparator above O (>0)
 CAN - comparator above N (>-1)
 CBO - comparator below O (<0)
 CBP - comparator below P (<+1)

 Binary blocks:
 NOD - node (2->1)
 SOP - switch O-off P-on
 SPO - switch P-off O-on
 SNP - switch N-off P-on 
 SPN - switch P-off N-on  

 Schemes:
 BUF2 - buffer with 3 outputs
 INV2 - inverter with 3 outputs

*/

alf T={N,O,P,U} "Ternary alphabet for hardware implementation"

def MEM (T:T) "Memory"
 N:N
 O:O
 P:P
 U:!
end

def BUF (T:T) "Buffer"
 N:N
 O:O
 P:P
end

def INV (T:T) "Inverter"
 N:P
 O:O
 P:N
end

def BLP (T:T) "Block positive"
 N:N
 O:U
 P:U
 U:U
end

def BLN (T:T) "Block negative"
 N:U
 O:U
 P:P
 U:U
end

def PRP (T:T) "Pull-up resistor to +1"
 N:N
 O:O
 P:P
 U:P
end

def PRO (T:T) "Pull-down resistor to 0"
 N:N
 O:O
 P:P
 U:O
end

def PRN (T:T) "Pull-down resistor to -1"
 N:N
 O:O
 P:P
 U:N
end

def CAO (T:T) "Comparator above O"
 N:N
 O:N
 P:P
end

def CAN (T:T) "Comparator above N"
 N:N
 O:P
 P:P
end

def CBO (T:T) "Comparator below O"
 N:P
 O:N
 P:N
end

def CBP (T:T) "Comparator below P"
 N:P
 O:P
 P:N
end

def NOD (T,T:T) "Node 2->1"
 N,U:N
 O,U:O
 P,U:P
 U,N:N
 U,O:O
 U,P:P
 U,U:U
end

def SOP (T,T:T) "Switch O-off P-on"
 N,O:U
 N,P:N
 O,O:U
 O,P:O
 P,O:U
 P,P:P
 U,O:U
 U,P:U
end

def SPO (T,T:T) "Switch P-off O-on"
 N,O:N
 N,P:U
 O,O:O
 O,P:U
 P,O:P
 P,P:U
 U,O:U
 U,P:U
end

def SNP (T,T:T) "Switch N-off P-on"
 N,N:U
 N,P:N
 O,N:U
 O,P:O
 P,N:U
 P,P:P
 U,N:U
 U,P:U
end

def SPN (T,T:T) "Switch P-off N-on"  
 N,N:N
 N,P:U
 O,N:O
 O,P:U
 P,N:P
 P,P:U
 U,N:U
 U,P:U
end

sch TEST "Test"
 >T i1 3 3
 >T i2 3 5
 <T o1 10 3
 <T o2 10 5
 +SPN obj 5 5
 @obj.0 i1
 @obj.1 i2
 @o1 obj.0
 @o2 =P
end

Исчез символ '?' - теперь любое неописанное состояние будет неопределенным и специально его задавать ненужно. Внизу виден пример описания схемы TEST, собранной из троичных модулей.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Я снова слегка видоизменил jem-синтаксис:

Code: Select all

/*

 Signals (alphabet T):
 N - negative (-1)
 O - ground (0)
 P - positive (+1)
 U - unplugged

 Special marks:
 ! - last value (used in simulation of memory)

 Unary blocks:
 MEM - memory cell
 BUF - buffer
 INV - inverter
 BLN - block negative (foreward diode)
 BLP - block positive (backward diode)
 PRP - pull-up resistor to +1
 PRO - pull-down resistor to 0
 PRN - pull-down resistor to -1
 CAO - comparator above O (>0)
 CAN - comparator above N (>-1)
 CBO - comparator below O (<0)
 CBP - comparator below P (<+1)

 Binary blocks:
 NOD - node (2->1)
 SOP - switch O-off P-on
 SPO - switch P-off O-on
 SNP - switch N-off P-on 
 SPN - switch P-off N-on  

 Schemes:
 BUF2 - buffer with 3 outputs
 INV2 - inverter with 3 outputs

*/

alf T=N,O,P,U "Ternary alphabet for hardware implementation"

def MEM T:T "Memory"
 N:N
 O:O
 P:P
 U:!
end

def BUF T:T "Buffer"
 N:N
 O:O
 P:P
end

def INV T:T "Inverter"
 N:P
 O:O
 P:N
end

def BLP T:T "Block positive"
 N:N
 O:U
 P:U
 U:U
end

def BLN T:T "Block negative"
 N:U
 O:U
 P:P
 U:U
end

def PRP T:T "Pull-up resistor to +1"
 N:N
 O:O
 P:P
 U:P
end

def PRO T:T "Pull-down resistor to 0"
 N:N
 O:O
 P:P
 U:O
end

def PRN T:T "Pull-down resistor to -1"
 N:N
 O:O
 P:P
 U:N
end

def CAO T:T "Comparator above O"
 N:N
 O:N
 P:P
end

def CAN T:T "Comparator above N"
 N:N
 O:P
 P:P
end

def CBO T:T "Comparator below O"
 N:P
 O:N
 P:N
end

def CBP T:T "Comparator below P"
 N:P
 O:P
 P:N
end

def NOD TT:T "Node 2->1"
 NU:N
 OU:O
 PU:P
 UN:N
 UO:O
 UP:P
 UU:U
end

def SOP TT:T "Switch O-off P-on"
 NO:U
 NP:N
 OO:U
 OP:O
 PO:U
 PP:P
 UO:U
 UP:U
end

def SPO TT:T "Switch P-off O-on"
 NO:N
 NP:U
 OO:O
 OP:U
 PO:P
 PP:U
 UO:U
 UP:U
end

def SNP TT:T "Switch N-off P-on"
 NN:U
 NP:N
 ON:U
 OP:O
 PN:U
 PP:P
 UN:U
 UP:U
end

def SPN TT:T "Switch P-off N-on"  
 NN:N
 NP:U
 ON:O
 OP:U
 PN:P
 PP:U
 UN:U
 UP:U
end

sch TEST "Test"
 >T i1 3 3
 >T i2 3 5
 <T o1 10 3
 <T o2 10 5
 +SPN obj 5 5
 @obj.0 i1
 @obj.1 i2
 @o1 obj.0
 @o2 =P
end

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вернулся к тримулятору - почти дописал Jem-парсер. Описатель Jem-схем слегка упростился:

Code: Select all

sch test "Test"
 >T i1 3,3
 >T i2 3,5
 +SPN obj 5,5 i1 i2
 <T o1 10,3 obj.0
 <T o2 10,5 =P
end
символ > описывает вход
символ < описывает выход
символ + вставляет блок
будет еще символ = означающий вход-выход (I/O)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

По заказу Мак-Бастера пишу щаз на Джаве в свободное время абстракцию эмулятора троичного проца с памятью похожего архитектурой PDP11. С возможностью пошагового и брекпоинтового дебаганья, но без реализации логики работы процессора и парсинга команд, для примера сделаю несколько команд, а потом МБР пусть сам делает. Моя версия предоставлять будет чисто среду для откатки набора команд и вообще для изучения троичной логики.
Буду извещать по ходу работ. Пока сделан базовый класс Tryte со всевозможной логикой работы с Tryte-ами.
Скорей всего буду для визуализации использовать AWT и Swing, так что Шурик потом в апплет если захочет легко передерет.
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: тримулятор

Post by Shaos »

Shaos wrote:По дороге из Маями в Нью-Йорк начал писать "тримулятор", который бы эмулировал троичную логику на Java, причем на уровне ключей и компараторов, а не троичных блоков, т.е. предельно близко к железной реализации - из-за этого пришлось ввести в алфавит четвертое состояние U (unplugged).
Может лучше назвать это состояние Z? Это вроде общепринятое обозначение для отключенного выхода.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Alik
Dead
Posts: 26
Joined: 26 Jan 2006 05:55

Re: тримулятор

Post by Alik »

По поводу "Mickey-Mouse Logic" - это американец похож на школьника, который доказал теорему Пифагора. Одно мне не понятно - зачем делать такой расширитель по входу, если есть стандартные вентили И-НЕ.
Может лучше назвать это состояние Z? Это вроде общепринятое обозначение для отключенного выхода.
Конечно же Z, в железе это все ключи разомкнуты.

Эмулятор штука важная, поэтому у меня вопрос: как определяется задержка в прохождении сигнала через вентиль?

По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич. Участвует ли он в этом форуме?
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: тримулятор

Post by Shaos »

Alik wrote:По поводу "Mickey-Mouse Logic" - это американец похож на школьника, который доказал теорему Пифагора. Одно мне не понятно - зачем делать такой расширитель по входу, если есть стандартные вентили И-НЕ.
Как ни странно - этот термин есть в американских книжках по CMOS, изданных еще в 70-х ;)
Alik wrote: Эмулятор штука важная, поэтому у меня вопрос: как определяется задержка в прохождении сигнала через вентиль?
Можно сделать быстрый вариант - прохождение сигнала в прямом направлении мгновенно (в пределах одного такта), а в обратных связях с задержкой на один такт. А можно сделать медленный - когда каждый элемент будет привносить задержку в один такт эмуляции.
Alik wrote: По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич. Участвует ли он в этом форуме?
Да - он написал несколько сообщений в ternary.info и давал там ссылку на свою заметку о троичной системе счисления
Я тут за главного - если что шлите мыло на me собака shaos точка net
Alik
Dead
Posts: 26
Joined: 26 Jan 2006 05:55

Re: тримулятор

Post by Alik »

Shaos wrote: Можно сделать быстрый вариант - прохождение сигнала в прямом направлении мгновенно (в пределах одного такта), а в обратных связях с задержкой на один такт. А можно сделать медленный - когда каждый элемент будет привносить задержку в один такт эмуляции.
Nado delat' kak v jizni: zaderzhka opredelyetsya tol'ko ventilyami (CMOS: 5-20ns), no v simulyatore luchshe sdelat' option: "Select gates delay time"

Программа разложения целого числа в троичное представление:
http://www.oleg.314159.ru/index.htm

Взаимообратные числа и их применение
http://www.trinitas.ru/rus/doc/0232/009a/02320004.htm

Shaos, vozmojno ty skajesh' - poka nado sdelat' "clear ternary simulation" bez etih navorotov, ladno...

But! Have place the problem of interface between blocks, predlagayu sdelat' ego kak TRIMOSBUS. Avtor originala Ivan Sutherland ego stat'yu ya poprosil otskanirovat', budet gotovo tol'ko v marte, posle my exams.
Ochen' horosho napisano ob etom u Varshavskogo, (lejit u menya na saite) in english
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: тримулятор

Post by Mac Buster »

Alik wrote:Программа разложения целого числа в троичное представление:
http://www.oleg.314159.ru/index.htm
Эта программа преобразует число в избыточную Стаховскую систему.
Extreme Entertainment
Alexandr
Novelist
Posts: 34
Joined: 20 Oct 2005 18:46

Re: тримулятор

Post by Alexandr »

Alik wrote:По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич.
Спасибо.
Alik wrote:Участвует ли он в этом форуме?
Участвую.
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Тримулятор

Post by Shaos »

Самое последние описание стандартного набора блоков всегда будет доступно тут:

http://nedopc.org/ternary/rules.txt
Last edited by Shaos on 20 Sep 2012 21:07, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Тримулятор

Post by Shaos »

В моей голове немного проясняется архитектура Тримулятора (а вместе с ней и детали более глобального jEmul-ятора). Итак, сама по себе программа будет являться Java-апплетом, который будет работать с файлами, лежащими на сервере в каталоге с class-файлами:
- файлы с расширением .jem - описание блоков и схем;
- файлы с расширением .jes - описание скриптов эмуляции;
- файлы с расширением .jep - описание проектов.

Формат файла проекта (элементы списков разделяются запятыми) :

scheme=имя_схемы_проекта
authors=список_авторов
sources=список_файлов_блоков
scripts=список_файлов_скриптов
watches=список_переменных_для_просмотра

В то же время я планирую создать некие PHP-средства создания и редактирования новых файлов для Тримулятора - тогда зарегистрированные посетители нашего портала смогут сами создавать и отлаживать новые схемы в троичной логике!
User avatar
Shaos
Admin
Posts: 24051
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Тримулятор

Post by Shaos »

Что-то забросил я тему - пора завершать и вывешивать...