Троичная логика

 
1 2 3 4 5 6 7 11

Anika

координатор
★★☆
Balancer, 16.09.2003 22:15:10:
Интересно, какой "бытовой" смысл у этой функции?
 

Сумматор с инверсией выхода.
Когда говорит масло - пушки молчат. А голос пушек - это голос Муз. (c)Ю.Шерман  

Anika

координатор
★★☆
А янки-то, оказывается, троичную логику активно применяют. Концепция, конечно, не очень (1/Z/0), скорость получается отстойная, но кое-где это не слишком важно.

These devices are designed to be used as encoder/decoder pairs in remote control applications.
The MC145026 encodes nine lines of information and serially sends this information upon receipt of a transmit enable (TE) signal. The nine lines may be encoded with trinary data (low, high, or open) or binary data (low or high). The words are transmitted twice per encoding sequence to increase security.
The MC145027 decoder receives the serial stream and interprets five of the trinary digits as an address code. Thus, 243 addresses are possible. If binary data is used at the encoder, 32 addresses are possible. The remaining serial information is interpreted as four bits of binary data. The valid transmission (VT) output goes high on the MC145027 when two conditions are met. First, two addresses must be consecutively received (in one encoding sequence) which both match the local address. Second, the 4 bits of data must match the last valid data received. The active VT indicates that the information at the Data output pins has been updated.
The MC145028 decoder treats all nine trinary digits as an address which allows 19,683 codes. If binary data is encoded, 512 codes are possible. The VT output goes high on the MC145028 when two addresses are consecutively received (in one encoding sequence) which both match the local address.
 

Почувствуйте разницу - 32 или 243, 512 или 19683. :)
Посмотреть подробнее можно ТУТ.

И еще:
TRINARY SWITCH MANUFACTURERS
Midland Ross–Electronic Connector Div.
Greyhill
Augat/Alcoswitch
Aries Electronics
 
Когда говорит масло - пушки молчат. А голос пушек - это голос Муз. (c)Ю.Шерман  
Это сообщение редактировалось 30.04.2004 в 17:26
+
-
edit
 

AidarM

аксакал
★★☆
Предлагаю поразмышлять над 3нарными логическими операциями. :rolleyes: А потом, если анаша не закончится, попытаться перевести такие операции на 'бытовой' уровень. :D
ИМХО, лучше будет наоборот, сначала можно попытаться модельную ситуацию найти. Потом разрулить ее бинарной логикой, а затем построить троичную операцию, к-рая решала бы подобные задачи 'разом', за 1 шаг.

Правда, таблицу истинности рисовать неудобно - кубик получается. ИМХО, придется по слоям.

У меня пока мозги заняты, ситуацию придумать не могу. Запостил мыслю, пока не вылетела из головы. :F
Солипсизм не пройдёт! :fal:  
US [Сергей] #30.04.2004 22:02
+
-
edit
 
Гы. Я в свое время тоже этой темой немного увлекался. Никакого ксора в троичной логике нет и быть не может: ксор - понятие "чисто конкретно" из двоичной логики. Попробую пояснить:
 


Именно! Вообще, как несложно посчитать, для бинарной логики можем иметь 2 константы, 4 функции с одной переменной, 16 функций с двумя переменными и т.д. В троичной - 3 константы, 9 функций одной переменной, 81 функция двух переменных и т.д. Легко видеть, что часто мы просто не можем "свести" функцию одной логики к функции другой - принципиально.
 
US [Сергей] #30.04.2004 22:16
+
-
edit
 
В частности - уже для функций - констант мы, скажем, хотим "свести" набор 2-мерной логики в трехмерную таким образом, чтобы работало соотношение "константа+константа не равная первой = const" Увы, если в бинарной логике такое соотношение на раз, то в тернарной - хрена.
 

Anika

координатор
★★☆
AidarM, 30.04.2004 16:53:18 :
Предлагаю поразмышлять над 3нарными логическими операциями. :rolleyes: А потом, если анаша не закончится, попытаться перевести такие операции на 'бытовой' уровень. :D
 


Ну, что ж... :)
Предлагаю начать с функций одной переменной. Их, как можно догадаться, 27 штук, и они раскладываются на комбинации четырех базисных функций:
NULL - ноль, константа
NOT(X) - инверсия
INC(X)/ DEC(X)- инкремент/декремент, это одна и та же функция
ZERO(X) - проверка на ноль
 

Итак:
Вход
-0+
*************

DEC (NULL) = INC ( INC (NULL))
--0 DEC (ZERO (DEC (X)))
--+ NOT (INC (ZERO (DEC (X))))
-0- DEC (ZERO (X))
-00 NOT (ZERO (INC (X)))
-0+ X = NOT (NOT (X)) = INC (INC (INC (X))) = DEC (DEC (DEC (X)))
-+- NOT (INC (ZERO (X)))
-+0 NOT (DEC (X)) = INC (NOT (X))
-++ INC (ZERO (INC (X)))
0-- DEC (ZERO (INC (X)))
0-0 NOT (ZERO (X))
0-+ NOT (INC (X)) = DEC (NOT (X))
00- NOT (ZERO (DEC (X)))
000 NULL
00+ ZERO (DEC (X))
0+- INC (X) = DEC (DEC (X))
0+0 ZERO(X)
0++ NOT (DEC (ZERO (INC (X))))
±- NOT (INC (ZERO (INC (X))))
±0 DEC (X) = INC (INC (X))
±+ INC (ZERO (X))
+0- NOT (X)
+00 ZERO (INC (X))
+0+ NOT (DEC (ZERO (X)))
++- INC (ZERO (DEC (X)))
++0 NOT (DEC (ZERO (DEC (X))))
+++ INC (NULL) = DEC (DEC (NULL))
 

Вроде бы так. Если где ошибся - поправьте ;)
Базисные функции можно взять и другие. Возможно, тогда удастся обойтись базисом из трех функций. Мне - не удалось.
Когда говорит масло - пушки молчат. А голос пушек - это голос Муз. (c)Ю.Шерман  
Это сообщение редактировалось 01.05.2004 в 02:42
US [Сергей] #30.04.2004 23:10
+
-
edit
 
Легко видеть, что часто мы просто не можем "свести" функцию одной логики к функции другой - принципиально.
 


Я имею в виду - не только логики "высшего" порядка по отношению к низшим, но и "низшего" к высшим. При том, вроде как, не должно быть особенных проблем при сведении бинарной логики с тетрарной. :)
 
US [Сергей] #30.04.2004 23:22
+
-
edit
 
Предлагаю начать с функций одной переменной. Их, как можно догадаться, 27 штук
 


Да, конечно, сорри - разумеется 27, а не девять - черт попутал. :) Т.е, все отображения, начиная с константы 0:

первая отображает:
0 -> 0
1 -> 0
2 -> 0

вторая:
0->1
1->0
2->0

и так далее. То есть, число функций равно числу комбинаций из трех по три - т.е. именно 27.

Но все остальное - в т.ч. принципиальную невозможность адекватного преобразования одной логики в другую - остается. :)
 
+
-
edit
 

GrayCat

координатор

Anika, 30.04.2004 15:16:58 :
А янки-то, оказывается, троичную логику активно применяют. Концепция, конечно, не очень (1/Z/0), скорость получается отстойная, но кое-где это не слишком важно.
 


Любой современный микроконтроллер тоже может считать со своей ножки три состояния ;) но небыстро... :unsure:
Gray ©at [Семейство кошачих]  
RU Alesandro #02.05.2004 22:27
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
GrayCat, 02.05.2004 21:12:56 :
Anika, 30.04.2004 15:16:58 :
А янки-то, оказывается, троичную логику активно применяют. Концепция, конечно, не очень (1/Z/0), скорость получается отстойная, но кое-где это не слишком важно.
 


Любой современный микроконтроллер тоже может считать со своей ножки три состояния ;) но небыстро... :unsure:
 


Это каким же манером микроконтроллер узнает, что у него на входе тристейт?

Можно рассмотреть даже два случая: когда входной и выходной регистры - разные логически (AVR) и когда одинаковые (51-й, PIC до 18-й серии).
AVR может включить встроенную подтяжку. Но всё равно - как он тристейт от единицы отличит?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
+
-
edit
 

GrayCat

координатор

Alesandro, 02.05.2004 20:27:27 :
Это каким же манером микроконтроллер узнает, что у него на входе тристейт?
 


Ну-у, это ж классика жанра!

Ножка конфигурируется на вывод. Подается "1". Тут же конфигурируется на ввод, и читается. Если там "0" — значит, ножка жестко притянута к "земле". Иначе — снова конфигурируется на вывод, подается "0", конфигурируется на ввод, читается. Если там "1" — значит, ножка жестко притянута к питанию. Иначе — после всего этого издевательства, получается, что ножка "хранит" выведенное на нее состояние за счет емкости, а это может быть только тогда, когда она "висит в воздухе". Ну, или если к ней подключены другие CMOS-входы или выходы в Z-состоянии.

Удобно использовать такой подход, например, при задании конфигурации устройства перемычками. Скажем, с помощью двух ножек процессора можно задать до 9 сочетаний, вместо 4 при "двоичной" системе.
Gray ©at [Семейство кошачих]  
RU Alesandro #03.05.2004 01:58
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
Дык я о том, что а если на ногу подан уровень? От соседнего микроконтроллера, скажем, ноль, а тут эта зараза выставила единицу, порты нафиг погорят... Ну не погорят уже, конечно, а вот что именно считается - это уже вопрос - чей порт "сильнее".
А что ёмкости сохраняюит значение - это всем набившая оскомину "пиковская" опрерация чтение-модификация-запись, из-за неё-то, да ещё и из-за дурацкой банковской организации регистров и памяти, я и ушёл на АВР, где и пребываю по сю пору. :-)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU Alesandro #03.05.2004 02:18
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
То есть метод действует только при применении перемычек? При подтягивании резисторами, точнее.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
+
-
edit
 

GrayCat

координатор

Alesandro>Дык я о том, что а если на ногу подан уровень? От соседнего микроконтроллера, скажем, ноль, а тут эта зараза выставила единицу, порты нафиг погорят...

Во-первых, поставить резистор последовательно с используемой таким образом ножкой — первое, что прийдет в голову еще на этапе рисования схемы ;)

Alesandro>Ну не погорят уже, конечно, а вот что именно считается - это уже вопрос - чей порт "сильнее"

А при чем тут "сильнее"? Читается ножка уже будучи сконфигурированной на ввод . Если есть мощный источник сигнала, перезаряжающий емкость ножки, он ее и перезарядит к этому времени.

Alesandro>...всем набившая оскомину "пиковская" опрерация чтение-модификация-запись,...

Вот, например, в микроволновке яйца варить нельзя, но никто ж не отказывается из-за этого от микроволновок вообще :D:F

Alesandro>...да ещё и из-за дурацкой банковской организации регистров и памяти,...

Вот это уже [почти] поправили в семействе PIC18

Alesandro>я и ушёл на АВР, где и пребываю по сю пору

Да и я б пребывал, но ТЗ мне ставит начальство ;)

PS: А не пойти б нам в Радиоэлектронный?
Gray ©at [Семейство кошачих]  
Это сообщение редактировалось 03.05.2004 в 02:27
RU Alesandro #03.05.2004 02:42
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
Не спится, GrayCat? ;-)

>GrayCat>А не пойти б нам в Радиоэлектронный?
В смысле перенести тему? Это к автору...
Или провести "религиозную" войну, открыв топик "PIC vs AVR"? :-D Не знаю, мне субъективней АВРка больше нравится. Хотя начинал с ПИКа. Вот уж чего не пожелаю - с него начинать! Мнемоники тарабарские, неинтуитивные, система команд тоже... Хм... :-)

А так я метод в общем понял... ненадёжный он какой-то. :-) Цифра - она ж и удобна тем, что жёсткие уровни без приколов. А остальное - от лукавого. Например, если инвертору на питание уровни подавать, то ещё и тристейт получится! Только смысл...
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
Это сообщение редактировалось 03.05.2004 в 02:49
+
-
edit
 

GrayCat

координатор

Alesandro>Не спится, GrayCat?

Сутки программиста — 32 часа ;):D

Alesandro>В смысле перенести тему? Это к автору... Или провести "религиозную" войну, открыв топик "PIC vs AVR"?

Добро пожаловать!!! Здесь:
AVR vs. PIC B) :F

Alesandro>Мнемоники тарабарские, неинтуитивные, система команд тоже...

Пиши на Ц! ;) Хотя, меня тоже очень бесили условные переходы в стиле "если ..., то пропустить " :angry:

Alesandro>А так я метод в общем понял... ненадёжный он какой-то.

Нормальный метод... Как я сразу написал — "небыстрый", и основное его применение — считывание конфигурации при старте. Никто ж не предлагает скоростные троичные устройства на таком принципе строить! :D
Gray ©at [Семейство кошачих]  
Это сообщение редактировалось 03.05.2004 в 04:11
+
-
edit
 

Balancer

администратор
★★★★★
Alesandro, 03.05.2004 01:58:05 :
Дык я о том, что а если на ногу подан уровень? От соседнего микроконтроллера, скажем, ноль, а тут эта зараза выставила единицу, порты нафиг погорят...
 


Ничего не погорит, по стандартам идущим ещё от ТТЛ, объединение выходов работает как монтажное "И". Т.е. если хоть на одном выходе есть ноль, он "перетягивает" остальные единицы. Полагаю, что в ненешних ИС используется та же идеология (хотя бы ради обратной совместимости).
 
+
-
edit
 

Balancer

администратор
★★★★★
GrayCat, 03.05.2004 04:04:15 :
Хотя, меня тоже очень бесили условные переходы в стиле "если ..., то пропустить " :angry:
 


Сразу видно, что на программируемых калькуляторах не программил :)

Кстати, на ARM с этим очень красиво. Каждая команда может быть выполнена или не выполнена индивидуально по состоянию флагов :)

Перебросить, что ли, топик в радиоэлектронный форум? :)
 
RU Alesandro #03.05.2004 14:44
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
Balancer, 03.05.2004 12:52:37 :
Ничего не погорит, по стандартам идущим ещё от ТТЛ, объединение выходов работает как монтажное "И".
 


Да там просто из-за схемотехники ток нуля сильнее. А в КМОП - пофигу, там симметричная схема. А вообще-то порты вылетали при встречном включении - были случаи на старых микросхемах. А по монтажному И объединяют открытый коллектор, но чтобы обычный ТТЛ(ТТЛШ), о таком первый раз слышу! 8-0

А перекинуть... Надо! :)


>2GrayCat

Ненадёжность в том, что метод основан не парезарядке ёмкостей, а это дело такое, плавающее, да ещё резисторы по шине - уже RC-цепь. И всё это плавает от температуры, от собственного хотения и т.д. :(
А в топик "AVR vs PIC" сейчас загляну. ;-)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
+
-
edit
 

Balancer

администратор
★★★★★
Alesandro, 03.05.2004 14:44:48 :
А по монтажному И объединяют открытый коллектор, но чтобы обычный ТТЛ(ТТЛШ), о таком первый раз слышу! 8-0
 


Про такое монтажное "И" писали много в тогдашней литературе и у меня в схемах прекрасно всё работало :)

Если очень грубо, то "0" - это коммутация прямо на землю, а "1" - это на Vcc через резистор, при чём даже для самых мощных серий это поряка килоома.

Впрочем, я всё равно предпочитал диодно-резисторную логику :)

>А перекинуть... Надо! :)

Угу, сейчас.
 
+
-
edit
 

-exec-

опытный

мне немного странно зачем применять бинарные операторы в троичной логике...

вот как дело обстоит в двоичной логике (могут быть опечатки, главное идея)
code text
  1. __| 0 | 0 | 1 | 1 | A; первый аргумент
  2. № | 0 | 1 | 0 | 1 | B; первый аргумент
  3. --+---+---+---+---+----------------------------------
  4. 0 | 0 | 0 | 0 | 0 | тождественная ложь
  5. 1 | 0 | 0 | 0 | 1 | (A•B)mod 2, AND, &, И, конъюнкция
  6. 2 | 0 | 0 | 1 | 0 | A>B, (анти-импликация)
  7. 3 | 0 | 0 | 1 | 1 | A
  8. 4 | 0 | 1 | 0 | 0 | (обратная анти-импликация)
  9. 5 | 0 | 1 | 0 | 1 | B
  10. 6 | 0 | 1 | 1 | 0 | (A+B)mod 2, XOR, NEQV, исключительное или; (анти-эквивалентность)
  11. 7 | 0 | 1 | 1 | 1 | OR; U; или; дизъюнкция
  12. 8 | 1 | 0 | 0 | 0 | (анти-конъюнкция)
  13. 9 | 1 | 0 | 0 | 1 | эквивалентность
  14. 10| 1 | 0 | 1 | 0 | отрицание B
  15. 11| 1 | 0 | 1 | 1 | (обратная импликация)
  16. 12| 1 | 1 | 0 | 0 | отрицание A
  17. 13| 1 | 1 | 0 | 1 | A<=B; импликация
  18. 14| 1 | 1 | 1 | 0 | штрих шеффера; (анти-конъюнкция)
  19. 15| 1 | 1 | 1 | 1 | тождественная истина
  20. --+---+---+---+---+----------------------------------
  21. номера функций    | названия функций

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

правомерность попытки натянуть нарицательное имя двоичной функции на троичную мне не очень ясна.
 
Это сообщение редактировалось 03.05.2004 в 18:59

Rada

опытный

2 Balancer: http://www.aymara.org/ternary/ternary.pdf. Про троичную логику.
С себя можно начать когда все остальное будет в порядке.  

Anika

координатор
★★☆
Alesandro, 03.05.2004 13:44:48 :
Да там просто из-за схемотехники ток нуля сильнее. А в КМОП - пофигу, там симметричная схема.
 

Вообще-то у классических КМОП (74HC) ноль мощнее единицы раза в два. У AVR-ов - процентов на 20. Не знаю уж почему - возможно, из-за разной подвижности носителей.

Alesandro, 03.05.2004 13:44:48 :
А вообще-то порты вылетали при встречном включении - были случаи на старых микросхемах. А по монтажному И объединяют открытый коллектор, но чтобы обычный ТТЛ(ТТЛШ), о таком первый раз слышу! 8-0
 

Монтажное "И" без ОК - это нарушение всех правил, но Балансер прав - обычно работает. Хотя у дюже мощных старых серий типа 130 или 530 - всякое возможно.
Когда говорит масло - пушки молчат. А голос пушек - это голос Муз. (c)Ю.Шерман  
RU Alesandro #03.05.2004 22:22
+
-
edit
 

Alesandro
Серокой

координатор
★★★★
Anika, 03.05.2004 20:27:26 :
Вообще-то у классических КМОП (74HC) ноль мощнее единицы раза в два. У AVR-ов - процентов на 20. Не знаю уж почему - возможно, из-за разной подвижности носителей.
 


Это от схемотехники должно зависеть, у логики в зависимости от входных сигналов могут подсоединяться несколько транзисторов параллельно к нулю у И-НЕ или единице у ИЛИ-НЕ . Но у порта вроде должен быть один. Может, схемотехника учтётом тристейта и т.д.?
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
+
-
edit
 

Balancer

администратор
★★★★★
-exec-, 03.05.2004 18:53:10 :
мне немного странно зачем применять бинарные операторы в троичной логике...
 


Затем, что бинарную логику всё равно придётся использовать даже на тринарном железе :) И лучше будет, если она будет не эмулироваться, а работать как есть. Т.е. принимаем два из трёх значений за "0" и "1" и все операции для этих величин соответствуют аналогичным бинарным.
 
1 2 3 4 5 6 7 11

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru