nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 10:44



Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
Re: Тримулятор 
Author Message
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
По дороге из Маями в Нью-Йорк начал писать "тримулятор", который бы эмулировал троичную логику на Java, причем на уровне ключей и компараторов, а не троичных блоков, т.е. предельно близко к железной реализации - из-за этого пришлось ввести в алфавит четвертое состояние U (unplugged). Вот описание модулей на гипотетическом языке описания схем (наверное он будет частью jEmul):

Code:
/*

 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


_________________
:dj: https://mastodon.social/@Shaos


03 Jan 2005 07:32
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
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


Attachments:
mm2logic.gif
mm2logic.gif [ 10.34 KiB | Viewed 1241 times ]

_________________
:dj: https://mastodon.social/@Shaos
08 Jan 2005 17:49
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Вот модифицированные правила (с новым jEmul-синтаксисом):

Code:
/*

 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, собранной из троичных модулей.

_________________
:dj: https://mastodon.social/@Shaos


27 Feb 2005 14:50
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Я снова слегка видоизменил jem-синтаксис:

Code:
/*

 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


_________________
:dj: https://mastodon.social/@Shaos


10 Mar 2005 23:38
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Вернулся к тримулятору - почти дописал Jem-парсер. Описатель Jem-схем слегка упростился:

Code:
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)

_________________
:dj: https://mastodon.social/@Shaos


17 Sep 2005 22:50
Profile WWW
God
User avatar

Joined: 29 Dec 2003 01:00
Posts: 1101
Location: Москва
Reply with quote
Post 
По заказу Мак-Бастера пишу щаз на Джаве в свободное время абстракцию эмулятора троичного проца с памятью похожего архитектурой PDP11. С возможностью пошагового и брекпоинтового дебаганья, но без реализации логики работы процессора и парсинга команд, для примера сделаю несколько команд, а потом МБР пусть сам делает. Моя версия предоставлять будет чисто среду для откатки набора команд и вообще для изучения троичной логики.
Буду извещать по ходу работ. Пока сделан базовый класс Tryte со всевозможной логикой работы с Tryte-ами.
Скорей всего буду для визуализации использовать AWT и Swing, так что Шурик потом в апплет если захочет легко передерет.


27 Oct 2005 12:25
Profile ICQ WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
По дороге из Маями в Нью-Йорк начал писать "тримулятор", который бы эмулировал троичную логику на Java, причем на уровне ключей и компараторов, а не троичных блоков, т.е. предельно близко к железной реализации - из-за этого пришлось ввести в алфавит четвертое состояние U (unplugged).


Может лучше назвать это состояние Z? Это вроде общепринятое обозначение для отключенного выхода.

_________________
:dj: https://mastodon.social/@Shaos


03 Feb 2006 19:26
Profile WWW
Dead

Joined: 26 Jan 2006 05:55
Posts: 26
Reply with quote
По поводу "Mickey-Mouse Logic" - это американец похож на школьника, который доказал теорему Пифагора. Одно мне не понятно - зачем делать такой расширитель по входу, если есть стандартные вентили И-НЕ.

Quote:
Может лучше назвать это состояние Z? Это вроде общепринятое обозначение для отключенного выхода.


Конечно же Z, в железе это все ключи разомкнуты.

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

По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич. Участвует ли он в этом форуме?


04 Feb 2006 03:33
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Alik wrote:
По поводу "Mickey-Mouse Logic" - это американец похож на школьника, который доказал теорему Пифагора. Одно мне не понятно - зачем делать такой расширитель по входу, если есть стандартные вентили И-НЕ.


Как ни странно - этот термин есть в американских книжках по CMOS, изданных еще в 70-х ;)

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


Можно сделать быстрый вариант - прохождение сигнала в прямом направлении мгновенно (в пределах одного такта), а в обратных связях с задержкой на один такт. А можно сделать медленный - когда каждый элемент будет привносить задержку в один такт эмуляции.

Alik wrote:
По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич. Участвует ли он в этом форуме?


Да - они написал несколько сообщений в ternary.info и давал там ссылку на свою заметку о троичной системе счисления

_________________
:dj: https://mastodon.social/@Shaos


04 Feb 2006 08:11
Profile WWW
Dead

Joined: 26 Jan 2006 05:55
Posts: 26
Reply with quote
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


04 Feb 2006 13:25
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Alik wrote:
Программа разложения целого числа в троичное представление:
http://www.oleg.314159.ru/index.htm

Эта программа преобразует число в избыточную Стаховскую систему.

_________________
Extreme Entertainment


05 Feb 2006 01:04
Profile
Novelist

Joined: 20 Oct 2005 18:46
Posts: 34
Reply with quote
Alik wrote:
По троичной арифметике обнаружил недавно очень хорошее описание, автор Александр Никитич.

Спасибо.
Alik wrote:
Участвует ли он в этом форуме?

Участвую.


05 Feb 2006 19:45
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Самое последние описание стандартного набора блоков всегда будет доступно тут:

http://nedopc.org/ternary/rules.txt


Last edited by Shaos on 20 Sep 2012 21:07, edited 1 time in total.



19 Feb 2006 20:31
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
В моей голове немного проясняется архитектура Тримулятора (а вместе с ней и детали более глобального jEmul-ятора). Итак, сама по себе программа будет являться Java-апплетом, который будет работать с файлами, лежащими на сервере в каталоге с class-файлами:
- файлы с расширением .jem - описание блоков и схем;
- файлы с расширением .jes - описание скриптов эмуляции;
- файлы с расширением .jep - описание проектов.

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

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

В то же время я планирую создать некие PHP-средства создания и редактирования новых файлов для Тримулятора - тогда зарегистрированные посетители нашего портала смогут сами создавать и отлаживать новые схемы в троичной логике!


26 Feb 2006 22:11
Profile WWW
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Что-то забросил я тему - пора завершать и вывешивать...


27 Aug 2007 18:58
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 10 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

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