Проектирование троичных элементов (4) - пробуем CMOS-ключи

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

Moderator: haqreu

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

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

poisk wrote: Аналог DG403, как и DG190, DG191, DG390, HI5043, HI5151, HI5151. Схема здешняя, плату развёл на один инвертор относительно 0 и универсальный троичный элемент. Размер 26х26мм, но расположение выводов не по принятому стандарту: не получилась бы такая маленькая.
А я и не знал, что у DG403 есть советские аналоги :)

Image

И что, всё работает точно также?
User avatar
poisk
Writer
Posts: 21
Joined: 02 Jan 2009 05:23
Location: Киров, РФ

Re: Проектирование троичных элементов - используем CMOS...

Post by poisk »

А как же) Есть даже в планарном исполнении. Причём в 2008 году всё ещё производили..
Может быть просто повезло, но навряд ли.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Почитал описалово - у этого "аналога" нету питания VL, т.е. фокус со свдигом порога вниз не пройдёт...

P.S. Ещё странно что в ихних "этикетках" не написано какие ключи нормально замкнутые, а какие нормально разомкнутые - как по такой "документации" изделия строить непонятно.
User avatar
poisk
Writer
Posts: 21
Joined: 02 Jan 2009 05:23
Location: Киров, РФ

Re: Проектирование троичных элементов - используем CMOS...

Post by poisk »

VL действительно нет, но работоспособность схемы от этого не изменилась :-?
В наших "этикетках" мало чего полезного пишут, лучше справочники смотреть.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

poisk wrote: VL действительно нет, но работоспособность схемы от этого не изменилась :-?
И это странно. Попробуем разобраться:

Image

пин 1 - S1 (первый IN)
пин 2 - C1 (первый OUT)
пин 3 - P1 (RP)
пин 4 - V-NEG (-5В) - подключено кроме всего прочего к земле левой микросхемы (нога 13)
пин 5 - N1 (RN)
пин 6 - GND (земля) - тут странность, т.к. у левой микросхемы оно подключено к неиспользуемой ноге 12 (VL), а нога 13 (GND) правой микросхемы висит в воздухе?
пин 7 - V-POS (+5В) - тут оно также подключено к неиспользуемой ноге 12 (VL) правой микросхемы
пин 8 - O1 (RO)
пин 9 - С2 (второй OUT)
пин 10 - S2 (второй IN)

"Этикетка" намекает, что логический вход считается низким если оно ниже 0.8В (относительно земли) и высоким если оно выше 4В. Значит подключив землю левой микросхемы к -5В, мы заставляем её срабатывать при напряжении на входе выше -1В и отключаться при ниже -4.2В. У правой же висящая в воздухе земля возможно сама усредняется между напряжениями питания, т.е. предположим что оно 0В, тогда правая микросхема будет срабатывать при 4В и отключаться при 0.8В. Выходит что действительно оно будет работать как надо, т.к. у этой микрухи входы ТТЛ, а у реальной DG403 уровни ТТЛ обещаются только при 5-вольтовом питании, а во всех остальных случаях - CMOS (что значит срабатывание практически при напряжении логического питания).
В наших "этикетках" мало чего полезного пишут, лучше справочники смотреть.
Ну например в моих справочниках ничего нету про серию КР590 (справочники начала 90-х). И кроме того в наше время производитель должен по каждому камню в онлайне держать даташит, который является самодостаточным документом, полностью описывающим соответствующий камень...
User avatar
poisk
Writer
Posts: 21
Joined: 02 Jan 2009 05:23
Location: Киров, РФ

Re: Проектирование троичных элементов - используем CMOS...

Post by poisk »

Shaos wrote: пин 6 - GND (земля) - тут странность, т.к. у левой микросхемы оно подключено к неиспользуемой ноге 12 (VL), а нога 13 (GND) правой микросхемы висит в воздухе?
Тут моя ошибка: землю довести забыл. С ней работает так же.
Shaos wrote: "Этикетка" намекает, что логический вход считается низким если оно ниже 0.8В (относительно земли) и высоким если оно выше 4В. Значит подключив землю левой микросхемы к -5В, мы заставляем её срабатывать при напряжении на входе выше -1В и отключаться при ниже -4.2В. У правой же висящая в воздухе земля возможно сама усредняется между напряжениями питания, т.е. предположим что оно 0В, тогда правая микросхема будет срабатывать при 4В и отключаться при 0.8В. Выходит что действительно оно будет работать как надо, т.к. у этой микрухи входы ТТЛ, а у реальной DG403 уровни ТТЛ обещаются только при 5-вольтовом питании, а во всех остальных случаях - CMOS (что значит срабатывание практически при напряжении логического питания).
Ясно, значит "аналог" годится.
Shaos wrote: И кроме того в наше время производитель должен по каждому камню в онлайне держать даташит, который является самодостаточным документом, полностью описывающим соответствующий камень...
"Этикетки" очень похожи на Specsheet. Где-то писали на форумах, что при запросе полной документации, не стеснялись просить денежку(это не про КР590КН4).
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Re: Проектирование троичных элементов - используем CMOS...

Post by Mac Buster »

Очень интересная тема. Попробую на днях воспроизвести на макетной плате и посмотреть как будет работать.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

poisk wrote: Ясно, значит "аналог" годится.
Возможно дешёвые CMOS-ключи серии 74HCT (быстрый CMOS с TTL входами) ведут себя аналогичным образом - как минимум те, где землю можно двигать.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Shaos wrote:
Возможно дешёвые CMOS-ключи серии 74HCT (быстрый CMOS с TTL входами) ведут себя аналогичным образом - как минимум те, где землю можно двигать.
Поизучал вопрос - к сожалению этот фокус с 74HCT4051/2/3 не пройдёт, т.к. во-первых у них двигается не земля, а минимально возможное аналоговое напряжение, а между землёй и максимальным напряжением должно быть не более 5.5 вольт. 74HC4051/2/3 тоже не пойдут, т.к. уровень срабатывания приближен к положительному напряжению (которое хоть и может быть 10 вольт, если брать ключи производства PHILIPS/NXP), т.е. мультиплексор вида XYY не получить.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Вот ручная визуализация полного суматора в Logisim:

Code: Select all

/* Generated by DDTc v0.5
   Solution is 12 x DG403
   See www.ternary.info */

#include "ddt.h"

int ddt_sum(int f, DDT i1, DDT i2, DDT i3, DDT* o1, DDT* o2)
{
 DDT r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14;
 int f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14;
 f1 = ddt_mux(f,i1,O,P,N,&r1);
 if(f1 < 0) return f1;
 f2 = ddt_mux(f,i1,P,N,O,&r2);
 if(f2 < 0) return f2;
 f3 = ddt_mux(f,i2,r1,r2,i1,&r3);
 if(f3 < 0) return f3;
 f4 = ddt_mux(f,i2,r2,i1,r1,&r4);
 if(f4 < 0) return f4;
 f5 = ddt_mux(f,i2,i1,r1,r2,&r5);
 if(f5 < 0) return f5;
 f6 = ddt_mux(f,i3,r3,r4,r5,&r6);
 if(f6 < 0) return f6;
 f7 = ddt_e21(f,i1,N,O,&r7);
 if(f7 < 0) return f7;
 f8 = ddt_e12(f,i1,N,O,&r8);
 if(f8 < 0) return f8;
 f9 = ddt_e21(f,i1,O,P,&r9);
 if(f9 < 0) return f9;
 f10 = ddt_e12(f,i1,O,P,&r10);
 if(f10 < 0) return f10;
 f11 = ddt_mux(f,i2,r7,r8,O,&r11);
 if(f11 < 0) return f11;
 f12 = ddt_mux(f,i2,r8,O,r9,&r12);
 if(f12 < 0) return f12;
 f13 = ddt_mux(f,i2,O,r9,r10,&r13);
 if(f13 < 0) return f13;
 f14 = ddt_mux(f,i3,r11,r12,r13,&r14);
 if(f14 < 0) return f14;
 if(o1) *o1 = r6;
 if(o2) *o2 = r14;
 return f1+f2+f3+f4+f5+f6+f7+f8+f9+f10+f11+f12+f13+f14;
}
Image

P.S. Интересно, что этот сненерённый полный сумматор по сути повторяет троичный полный сумматор из вот этой статьи 1996 года:
A.SRIVASTAVA and K.VENKATAPATHY "Design and Implementation of a Low Power Ternary Full Adder"
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.615.9736&rep=rep1&type=pdf
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

А вот полусумматор (или что тоже самое - схема инкремента/декремента одного трита):

Code: Select all

/* Generated by DDTc v0.5
   Solution is 6 x DG403
   See www.ternary.info */

#include "ddt.h"

int ddt_inde1_(int f, DDT i1, DDT i2, DDT* o1, DDT* o2)
{
 DDT r1,r2,r3,r4,r5,r6;
 int f1,f2,f3,f4,f5,f6;
 f1 = ddt_mux(f,i1,P,N,O,&r1);
 if(f1 < 0) return f1;
 f2 = ddt_mux(f,i1,O,P,N,&r2);
 if(f2 < 0) return f2;
 f3 = ddt_mux(f,i2,r1,i1,r2,&r3);
 if(f3 < 0) return f3;
 f4 = ddt_e12(f,i1,N,O,&r4);
 if(f4 < 0) return f4;
 f5 = ddt_e21(f,i1,O,P,&r5);
 if(f5 < 0) return f5;
 f6 = ddt_mux(f,i2,r4,O,r5,&r6);
 if(f6 < 0) return f6;
 if(o1) *o1 = r3;
 if(o2) *o2 = r6;
 return f1+f2+f3+f4+f5+f6;
}
Image

Вот так можно из них вручную построить 3-тритную схему инкремента-декремента:

Image

P.S. DDT сгенерировал более быструю схему 3-тритного инкремента-декремента где использованы 16 микросхем DG403
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Надумал я тут объединить MUX и MEM в единый элемент, который может уже по праву называться "универсальный троичный логический элемент", т.к. для построения ЛЮБЫХ троичных автоматов НИЧЕГО больше и не потребуется :)

Суть в том, что между выходом мультиплексора и землёй ставиться конденсатор, например 0.1 мкФ - при условии, что дальше стоит другой CMOS-ключ мы имеем несколько тысяч мегаом входного сопротивления, что даст нам около часа времени сохранения напряжения на конденсаторе, если его вход будет подвешан в воздухе (например когда одна из трёх ног мультиплексора никуда не подключена и именно она выбрана - конденсатор будет хранить предыдущее значение).

В случае же эмулятора Logisim отключённое состояние можно сымитировать состоянием 11, ранее не использованным.

P.S. Попоробовал собрать в симуляторе гибрид MUX+MEM - тяжеловато получается - может тормозить и глючить...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Shaos wrote: Развёл сдвоенный универсальный троичный элемент TRIMUX:

Image

Ширина короткой стороны треугольника (которых две) - 2.2 дюйма (или 56 мм), а длинной - соответственно 3.1 дюйм (или 79 мм).

Image

P.S. Планирую начать торговать долларов за 13 (меньше к сожалению будет себе в убыток)

P.P.S. См. http://www.trimux.com ;)
Компоненты для сборки:
IC1,IC2: DG403 (DIP16),
C1-C4: 0.1uF (tantalum),
JP1,JP2: right-angle 5-pin headers,
JP3: right-angle 3-pin header

Коннектор JP1 (большой слева):
1) S1 - выбирает путь следования сигнала в первом мультиплексоре
2) N1 - подсоединяется к C1 если S1=N ("negative" или -5V)
3) O1 - подсоединяется к C1 если S1=O ("zero" или 0V)
4) P1 - подсоединяется к C1 если S1=P ("positive" или +5V)
5) C1 - переключаемый сигнал первого мультиплексора

Коннектор JP2 (большой по середине):
1) S2 - выбирает путь следования сигнала во втором мультиплексоре
2) N2 - подсоединяется к C2 если S2=N ("negative" или -5В)
3) O2 - подсоединяется к C2 если S2=O ("zero" или 0В)
4) P2 - подсоединяется к C2 если S2=P ("positive" или +5В)
5) C2 - переключаемый сигнал второго мультиплексора

Коннектор JP3 (маленький справа):
1) V-NEG - отрицательное питание (обычно -5В)
2) GND - заземление
3) V-POS - положительное питание (обычно +5В)

Мультиплексор на самом деле мультиплексирует аналоговые сигналы, причём в обе стороны - т.е. его также можно использовать и как демультиплексор

Image

Ещё в декабре протестировал вышеприведённую плату на питающие напряжения -5В и +5В - пороги срабатывания получилсь -3.4В и +1.9В. А в январе придумал как на печатной плате TRIMUX собрать упрощённые троичные мультиплексоры E12 и E21 (для реализации функций XYY и XXY соответственно) - при этом на плату устанавливается только одна микросхема DG403 - либо слева (для E12), либо справа (для E21), плюс несколько перемычек. Контакты O1 и O2 в этом случае остаются незадействованы - работают только N1/N2 и P1/P2, причём для E12 порог при котором входы будут переключаться это -3.4В, а для E21 это +1.9В.

По лого нашёл, что производитель этих DG403 - "Siliconix Inc" (в настоящий момент этим брэндом владеет Vishay):

Image

Официальный даташит тут

P.S. Начал торговать плату через BatchPCB по $13 (из них мне пойдёт меньше доллара) - пока никто не покупает :(
на форумах буржуйских хоббистов попробовал изложить - ноль реакции...
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Shaos wrote: А вот полусумматор (или что тоже самое - схема инкремента/декремента одного трита):

Code: Select all

/* Generated by DDTc v0.5
   Solution is 6 x DG403
   See www.ternary.info */

#include "ddt.h"

int ddt_inde1_(int f, DDT i1, DDT i2, DDT* o1, DDT* o2)
{
 DDT r1,r2,r3,r4,r5,r6;
 int f1,f2,f3,f4,f5,f6;
 f1 = ddt_mux(f,i1,P,N,O,&r1);
 if(f1 < 0) return f1;
 f2 = ddt_mux(f,i1,O,P,N,&r2);
 if(f2 < 0) return f2;
 f3 = ddt_mux(f,i2,r1,i1,r2,&r3);
 if(f3 < 0) return f3;
 f4 = ddt_e12(f,i1,N,O,&r4);
 if(f4 < 0) return f4;
 f5 = ddt_e21(f,i1,O,P,&r5);
 if(f5 < 0) return f5;
 f6 = ddt_mux(f,i2,r4,O,r5,&r6);
 if(f6 < 0) return f6;
 if(o1) *o1 = r3;
 if(o2) *o2 = r6;
 return f1+f2+f3+f4+f5+f6;
}
Image
А вот тоже самое на "тримуксах":

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

Re: Проектирование троичных элементов - используем CMOS...

Post by Shaos »

Shaos wrote: начал торговать плату через BatchPCB по $13 (из них мне пойдёт меньше доллара) - пока никто не покупает :(
на форумах буржуйских хоббистов попробовал изложить - ноль реакции...
есть реакция! сказали что плата кул, но надо больше примеров использования и хороший объясняющий материал про троичность нужен...