|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Проектирование троичных элементов (4) - пробуем CMOS-ключи
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
А я и не знал, что у DG403 есть советские аналоги И что, всё работает точно также?
|
19 Dec 2010 10:44 |
|
|
poisk
Writer
Joined: 02 Jan 2009 05:23 Posts: 21 Location: Киров, РФ
|
А как же) Есть даже в планарном исполнении. Причём в 2008 году всё ещё производили..
Может быть просто повезло, но навряд ли.
|
19 Dec 2010 11:51 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Почитал описалово - у этого "аналога" нету питания VL, т.е. фокус со свдигом порога вниз не пройдёт...
P.S. Ещё странно что в ихних "этикетках" не написано какие ключи нормально замкнутые, а какие нормально разомкнутые - как по такой "документации" изделия строить непонятно.
|
19 Dec 2010 12:50 |
|
|
poisk
Writer
Joined: 02 Jan 2009 05:23 Posts: 21 Location: Киров, РФ
|
VL действительно нет, но работоспособность схемы от этого не изменилась
В наших "этикетках" мало чего полезного пишут, лучше справочники смотреть.
|
19 Dec 2010 14:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
И это странно. Попробуем разобраться: пин 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-х). И кроме того в наше время производитель должен по каждому камню в онлайне держать даташит, который является самодостаточным документом, полностью описывающим соответствующий камень...
|
19 Dec 2010 18:33 |
|
|
poisk
Writer
Joined: 02 Jan 2009 05:23 Posts: 21 Location: Киров, РФ
|
Тут моя ошибка: землю довести забыл. С ней работает так же. Ясно, значит "аналог" годится.
"Этикетки" очень похожи на Specsheet. Где-то писали на форумах, что при запросе полной документации, не стеснялись просить денежку(это не про КР590КН4).
|
19 Dec 2010 22:44 |
|
|
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
Очень интересная тема. Попробую на днях воспроизвести на макетной плате и посмотреть как будет работать.
|
20 Dec 2010 02:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Возможно дешёвые CMOS-ключи серии 74HCT (быстрый CMOS с TTL входами) ведут себя аналогичным образом - как минимум те, где землю можно двигать.
|
20 Dec 2010 06:50 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Поизучал вопрос - к сожалению этот фокус с 74HCT4051/2/3 не пройдёт, т.к. во-первых у них двигается не земля, а минимально возможное аналоговое напряжение, а между землёй и максимальным напряжением должно быть не более 5.5 вольт. 74HC4051/2/3 тоже не пойдут, т.к. уровень срабатывания приближен к положительному напряжению (которое хоть и может быть 10 вольт, если брать ключи производства PHILIPS/NXP), т.е. мультиплексор вида XYY не получить.
|
23 Dec 2010 21:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Вот ручная визуализация полного суматора в Logisim: | | | | Code: /* 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; }
| | | | |
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
|
07 Jan 2011 07:40 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
А вот полусумматор (или что тоже самое - схема инкремента/декремента одного трита):
| | | | Code: /* 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; }
| | | | |
Вот так можно из них вручную построить 3-тритную схему инкремента-декремента:
P.S. DDT сгенерировал более быструю схему 3-тритного инкремента-декремента где использованы 16 микросхем DG403
|
07 Jan 2011 07:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Надумал я тут объединить MUX и MEM в единый элемент, который может уже по праву называться "универсальный троичный логический элемент", т.к. для построения ЛЮБЫХ троичных автоматов НИЧЕГО больше и не потребуется
Суть в том, что между выходом мультиплексора и землёй ставиться конденсатор, например 0.1 мкФ - при условии, что дальше стоит другой CMOS-ключ мы имеем несколько тысяч мегаом входного сопротивления, что даст нам около часа времени сохранения напряжения на конденсаторе, если его вход будет подвешан в воздухе (например когда одна из трёх ног мультиплексора никуда не подключена и именно она выбрана - конденсатор будет хранить предыдущее значение).
В случае же эмулятора Logisim отключённое состояние можно сымитировать состоянием 11, ранее не использованным.
P.S. Попоробовал собрать в симуляторе гибрид MUX+MEM - тяжеловато получается - может тормозить и глючить...
|
10 Jan 2011 20:17 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
Компоненты для сборки:
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В)
Мультиплексор на самом деле мультиплексирует аналоговые сигналы, причём в обе стороны - т.е. его также можно использовать и как демультиплексор
Ещё в декабре протестировал вышеприведённую плату на питающие напряжения -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):
Официальный даташит тут
P.S. Начал торговать плату через BatchPCB по $13 (из них мне пойдёт меньше доллара) - пока никто не покупает
на форумах буржуйских хоббистов попробовал изложить - ноль реакции...
|
21 Jul 2011 19:33 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
| | | | Shaos wrote: А вот полусумматор (или что тоже самое - схема инкремента/декремента одного трита): | | | | Code: /* 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; }
| | | | |
| | | | |
А вот тоже самое на "тримуксах":
|
21 Jul 2011 22:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22567 Location: Silicon Valley
|
есть реакция! сказали что плата кул, но надо больше примеров использования и хороший объясняющий материал про троичность нужен...
|
23 Jul 2011 20:13 |
|
|
Who is online |
Users browsing this forum: No registered users and 27 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
|
|