nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 Nov 2017 18:59



Reply to topic  [ 67 posts ]  Go to page 1, 2, 3, 4, 5  Next
Троичные функции 
Author Message
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
А сколько их всего есть полезных?
Для себя пока определит только 7 штук, остальные являются инвертированием этих. Но было бы "красиво" заполнить все 9 ячеек :D
(функция инверсии отсутствует умышленно, я брал только двухоперандные, за названия вообще лучше не спорить 8) )


Attachments:
3F.png
3F.png [ 51.46 KiB | Viewed 189 times ]
29 Oct 2017 12:23
Profile
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
Еще можно придумать вот такую, но не выдумывается её объяснения.
Разве только "двоичное сложение", но как то за уши.


Attachments:
Unc.png
Unc.png [ 6.78 KiB | Viewed 186 times ]
29 Oct 2017 12:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
А сколько их всего есть полезных?

Всего их 27. Часть тривиальна. А вот полезных сколько - затрудняюсь сказать... :wink:

Это как у 4-битного АЛУ К155ИП3 (aka 74181) - всего "их" 32, а вот сколько
из них полезных, мы так и не решили... :lol:

_________________
iLavr


29 Oct 2017 21:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15717
Location: Colorado
Reply with quote
Я в своё время вот такую объяснялку нагородил для одно-аргументных функций в DDT:
Code:
 all ternary functions of one argument:
 NNN = N
 NNO = SHD(x) = E21(x,N,O)
 NNP = E21(x,N,P)
 NON = MUX(x,N,O,N) = E12(x,N,E21(x,O,N))
 NOO = BLP(x) = E12(x,N,O) // analog of reverse diode
 NOP = x // BUF(x) or buffer MUX(x,N,O,P) = E12(x,N,E21(x,O,P))
 NPN = MUX(x,N,P,N) = E12(x,N,E21(x,P,N))
 NPO = MUX(x,N,P,O) = E12(x,N,E21(x,P,O))
 NPP = E12(x,N,P)
 ONN = NHI(x) = E12(x,O,N)
 ONO = MUX(x,O,N,O) = E12(x,O,E21(x,N,O))
 ONP = MUX(x,O,N,P) = E12(x,O,E21(x,N,P))
 OON = E21(x,O,N)
 OOO = O
 OOP = BLN(x) = E21(x,O,P) // analog of forward diode
 OPN = ROU(x) = MUX(x,O,P,N) = E12(x,O,E21(x,P,N))
 OPO = MUX(x,O,P,O) = E12(x,O,E21(x,P,O))
 OPP = SHU(x) = E12(x,O,P)
 PNN = NTI(x) = E12(x,P,N)
 PNO = ROD(x) = MUX(x,P,N,O) = E12(x,P,E21(x,N,O))
 PNP = MUX(x,P,N,P) = E12(x,P,E21(x,N,P))
 PON = INV(x) = MUX(x,P,O,N) = E12(x,P,E21(x,O,N))
 POO = E12(x,P,O)
 POP = MUX(x,P,O,P) = E12(x,P,E21(x,O,P))
 PPN = PTI(x) = E21(x,P,N)
 PPO = PHI(x) = E21(x,P,O)
 PPP = P


А двухаргументных будет аж 19683 :)

А если рассматривать только симметричные, то останется всего 729

_________________
:eugeek: https://twitter.com/Shaos1973


10 Nov 2017 21:57
Profile WWW
Doomed

Joined: 10 Mar 2012 19:21
Posts: 491
Location: РФ
Reply with quote
AlexanderZh wrote:
.. не выдумывается её объяснения ..

Объяснение такой функции как раз несложно : Это "нуль подтверждает знак, в остальных комбинациях ==0 "
Вот сформулировать словесно некоторые другие гораздо сложнее ..


11 Nov 2017 13:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
А вобще вопрос, поднятый топикстартером, оказался довольно непраздным вот в каком аспекте:
А какой минимальный набор функций надо бы обеспечить в троичном АЛУ?
И подумать об этом с точки зрения минимальных аппаратных затрат - тримуксы довольно недешевое удовольствие! :wink:

С точки зрения теории базис троичной логики составляют одна из двухвходовых функций (MIN или MAX)
и правая циклическая инверсия (Rotate Up).

Как в двоичной логике AND (или OR) и NOT.
Кстати, в PDP-8 и был минимальный набор: сумма, AND и NOT.

И в троичном АЛУ с точки зрения схемотехники удобно бы выбрать 9 функции, ну либо 27 - хотя
это уже многовато с аппаратной точки зрения. :wink:

_________________
iLavr


15 Nov 2017 07:41
Profile
Doomed

Joined: 10 Mar 2012 19:21
Posts: 491
Location: РФ
Reply with quote
Предположим, что нам зачем то надо вычислять так называемую "fuzzy_logik"~"нечёткую_ логику" с какой-нибудь точностью.
Самое простое представление будет "нет"==(-1) , "вероятность50%"==0 , "да(100%)"==(+1) и это займёт ровно один трит.
Больше градаций будет при изпользовании трёх тритов , ещё больше - девяти ну и т.д. ,в зависимости от доступности ресурсов.
Поелику ресурсов мало, можно для начала ограничиться тремя тритами ( диапазон целых чисел от (-13)10 до (+13)10 или можно подразумевать, что там дробные, это уже трактовка ).
Для нечётких вычислений нужны операции
: сложения(2оп.)
, перемножения(верояностей)(2оп.)
, инверсии(1оп.)
, установки в |(-1)(-1)(-1)| ,в |0 0 0 | ,в |(+1)(+1)(+1)| (1оп.)
,сравнения( а вот возможно ли сделать результат "100%совпадают"/"схожи_на_xxx%"/"несхожи(0%)" ??? ) (2оп.) .
Для всякой другой математики пригодится также :
вычитание(2оп.) с заёмом(однотритовй флажок"C")
, перемножение(чисел) ( с уст. флажка "C" и "OVR" ) (2оп.)
, деление(чисел) ( с уст. флажка "C" и "OVR" ) (2оп.)
, может быть сдвиги( они дадут x*3 и x/3 )через однотритовй флажок"Zero/Neg" (1оп.)
, может быть операции с "троично-кодированными_десятичными" ( TCD по аналогии с BCD )
, неплохо инекремент и декремент ,что впрочем заменимо на нечто вроде ADI(+1) ADI(-1)

... Мож что нужное упустил .. можно добавить потом .

.|..|
\/ \/ _
AlexanderZh wrote:
..
___ ___ ___ ___ ___ ___ ___ ___ ___
petrenko wrote:
Для нечётких вычислений нужны операции
: сложения(2оп.)

___ ___ ___ ___ ___ ___ ___ ___ ___
Можно поподробней, почему именно две* ? И далее по тексту тоже встречается...

___ ___ ___ ___ ___ ___ ___ ___ ___


*_Не "две" ,а "два" .. Видимо надо было пояснить, что в скобочках отмечено количество операндов функции/операции .
То есть рассматриваем некоторые одно-операндные и двух-операндные функции.


Last edited by petrenko on 16 Nov 2017 01:13, edited 1 time in total.



15 Nov 2017 14:15
Profile
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
Lavr wrote:
А какой минимальный набор функций надо бы обеспечить в троичном АЛУ?

Собственно, чтобы оценить это для себя, я тему и затеял.
Lavr wrote:
удобно бы выбрать 9 функции, ну либо 27

Мне кажется, даже 9 немного избыточно. Двухоперандные MIN, MAX, сложение (с переносом/заёмом), и однооперандная функция инверсии (также, возможны, инкремент и декремент). Итого выходит 6 штук.
petrenko wrote:
Для нечётких вычислений нужны операции
: сложения(2оп.)

Можно поподробней, почему именно две? И далее по тексту тоже встречается...
petrenko wrote:
может быть сдвиги( они дадут x*3 и x/3 )через однотритовй флажок"Zero/Neg" (1оп.)

Да, про сдвиги я забыл, но не понятно почему "1оп." и почему через флажок знака? Знак же входит в само число.
petrenko wrote:
вычитание(2оп.)

По причине содержания знака в самом числе, зачем отдельная операция вычитания, можно просто инвертировать число перед сложением?

P.S. Я рассматриваю простейший троичный недопроцессор с точки зрения, можно ли на нем будет собрать калькулятор. Вроде МК-54/61. Даже без тригонометрии в первой итерации.


15 Nov 2017 15:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
Lavr wrote:
удобно бы выбрать 9 функции...

Мне кажется, даже 9 немного избыточно. Двухоперандные MIN, MAX, сложение (с переносом/заёмом), и однооперандная функция инверсии (также, возможны, инкремент и декремент). Итого выходит 6 штук.
Дешифратор есть уже 2-в-9 позиций - при дороговизне троичной схемотехники стыдно будет его недогрузить. :lol:

Но я соглашаюсь, что пока хорошо иметь сумму (с переносом/заёмом), MIN, MAX,
вместо инверсии я предпочитаю XOR - он и XOR и управляемый инвертор.
Rotate Up и Rotate Down - специфичные троичные инверсии нужны.
Инкремент и декремент можно сделать функцией регистра-аккумулятора, а не АЛУ, как, впрочем, и сдвиги.

_________________
iLavr


15 Nov 2017 16:17
Profile
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
Lavr wrote:
Rotate Up и Rotate Down - специфичные троичные инверсии нужны.

Так это не инкремент и декремент разве? Я, честно, немного запутался уже без табличек то...


15 Nov 2017 16:35
Profile
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
Lavr wrote:
вместо инверсии я предпочитаю XOR - он и XOR и управляемый инвертор.

Это не та, что эквивалент инвертированной функции EQU в моих табличках?


15 Nov 2017 16:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
Lavr wrote:
вместо инверсии я предпочитаю XOR - он и XOR и управляемый инвертор.
Это не та, что эквивалент инвертированной функции EQU в моих табличках?

Не знаю, как её зовут в Ваших табличках - но я её смоделировал именно с заданной целью:
Троичный XOR -/- управляемый инвертор.

_________________
iLavr


15 Nov 2017 17:06
Profile
Senior

Joined: 21 Mar 2017 15:50
Posts: 112
Location: Spb
Reply with quote
Да, перепутал. Это инвертированное умножение двух тритов (MUL)
Image

Троичный инвертор (классический):
Code:
A|B
-|+
0|0
+|-

А осциллограммы я очень плохо читаю, практики нет.

P.S. Без разницы в каком виде она будет в ALU, можно получить инверсией второе состояние.
P.P.S. Я не стал её инвертировать, только потому, что название напрашивалось :kruto:


15 Nov 2017 17:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 11:08
Posts: 7777
Location: Россия
Reply with quote
AlexanderZh wrote:
А осциллограммы я очень плохо читаю, практики нет.
Никогда не поздно восполнить этот пробел, тем более, что осциллограф - "глаза" электронщика... :wink:

И на мой взгляд, всё просто очевидно, поскольку и схема приведена рядом.
Attachment:
3XOR_OSC1.gif
3XOR_OSC1.gif [ 9.34 KiB | Viewed 73 times ]

На вход А вентиля XOR подаются импульсы размахом от -1 до +1 - красная осциллограмма.
На вход В вентиля XOR я кнопками подаю -1 ... 0 ... +1 .
Синяя оциллограмма - выход вентиля XOR .

Видно, что пока В = -1, синяя и красная синфазны.
При В = 0 и синий луч едет посредине - по уровню "0".
Как только В = 1 синяя и красная становятся противофазны, значит вентиль XOR сынвертировал сигнал.

_________________
iLavr


15 Nov 2017 17:53
Profile
Doomed

Joined: 10 Mar 2012 19:21
Posts: 491
Location: РФ
Reply with quote
Да, XOR это универсальнее, в варианте XRI получится инверсия, правильный подход. :kruto:

Регистров надо стараться избежать, сделать по минимуму, без которых никак : PC , IDX , SP
, а несколько наборов р.о.н. - в локальном быстром о.з.у. в режиме считывание->модификация->запись .

Сдвиг можно мультиплексорами после выхода а.л.у. ( по аналогии с двоичной и.м.с. 531ир21( которая хоть и "ир" ,но не регистр) ) ,так быстрее.
Инкремент и декремент лучше всё-таки в а.л.у. ,чутка усложнив, добавлением второго входного переноса/заёма

Кстати, счёт в PC можно делать не инкрементом, а ,по аналогии LFSR (,как в м.к. семейства TMS1000 ), но надо изобрести "троичный LFSR" :eugeek: ( или другой вариант ,столь же "простой" - изобрести по быстренькому троичный "код_типа_как_бы_грея" :mrgreen: )


16 Nov 2017 01:41
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 67 posts ]  Go to page 1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: Google [Bot] and 1 guest


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.