nedoPC.org

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



Reply to topic  [ 195 posts ]  Go to page 1, 2, 3, 4, 5 ... 13  Next
Проектирование троичных элементов (4) - пробуем CMOS-ключи 
Author Message
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
Shaos: ранее этот топик (как я вся троичная тема) жила на портале Ternary.info https://web.archive.org/web/20131008143041/http://ternary.info/modules/newbb/viewtopic.php?topic_id=168&forum=4

Shaos wrote:
Третья схема - мой способ получения универсального троичного унарного вентиля из электронного переключателя DG403:

Image

Сигналы управления EQP и NEN берутся от соответствующих вспомогательных выходов буфера-повторителя, а входные значения RN,RO,RP являются значениями функции соответственно при "N","O","P" на входе.


не нравился мне этот DG403 :)

а мультиплексор 2х1 ведь есть! 1561КП5 aka CD4053. да еще 3 штуки в корпусе (а на один элемент всего 2 нужно) при цене 0.2-0.3$
Image
транзисторы можно менять на компараторы естессно.


17 Apr 2005 09:52
Profile ICQ
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
Post 
да и вообще, в универсальных унарных/бинарных ячейках на мультиплексорах (4053 и 4067 соответственно) можно использовать как транзисторные так и компараторные входы (с соотв. изменениями в коммутации мультиплексоров)


17 Apr 2005 10:01
Profile ICQ
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
Post 
Ronin wrote:
не нравился мне этот DG403 :)
а мультиплексор 2х1 ведь есть! 1561КП5 aka CD4053. да еще 3 штуки в корпусе (а на один элемент всего 2 нужно) при цене 0.2-0.3$


правда (первая моя схема) на обычных ключах 4066 экономней получается, хотя есть минусы -
1) RO притянут к выходу через резистор (что ухудшает динамические и нагрузочные характеристики, но в указанном нами диапазоне они остаются приемлимыми)
2) в связи с жесткой логикой управления ключей (в отличие от мультиплексоров) входы надо делать компараторами (РТС не подойдет).

Поэтому можно получить два типа унив. ун. элемента
- сильноточные - в связке по 3, на 4053 - 6 тран-ов + 2 корпуса 4053 (РТС вход с относительно большим входным током, 4053 с большим выходным током без резисторов)
- слаботочные - в связке по 2(4), на 4066 - 1(2) корпуса lm339 + 1(2) корпуса 4066 (компараторный вход с относительно малым входным током, 4066 с малым током от сигнала RO - через резистор)


18 Apr 2005 00:09
Profile ICQ
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Взяв за основу тему с компараторами и ключами (начатую ещё в начале 2005 года) пришёл к выводу, что компараторы то и не нужны вовсе, т.к. вот эта схема универсального унарного троичного вычислителя:

Image

вполне может управляться сигналами, полученными непосредственно из троичного сигнала (сначала думал диоды помогут, однако потом понял что нет)...


Last edited by Shaos on 20 Sep 2012 18:36, edited 2 times in total.



05 Jul 2010 19:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Потом думал, что DG403 не подойдёт, т.к. у него отдельно цифровое питание имеется, которое во всех даташитах стоит в +5В, даже смотрел в сторону - на что-то типа ADG1313, где цифрового питания нет - только два аналоговых (положительное и отрицательное) и земля.


05 Jul 2010 20:25
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
С другой стороны никто не мешает и у DG403 подавать на GND -5В, а на Vl +5В (т.е. диапазон напряжений для логики тоже будет 10 вольт - как и для коммутируемых сигналов) - вобщем попробую DG403


06 Jul 2010 17:54
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Помучал DG403 на макетке - у этого чипа (во всяком случае у данного производителя) выявились очень интересные "троичные" свойства! Напомню что DG403 имеет две идентичных части, в каждой из которых есть два цифровых ключа - один нормально замкнут, а другой нормально разомкнут (что позволяет делать из них один переключатель). Питание V- и V+ идёт непосредственно на ключи, а питиание GND и Vl идёт исключительно на логику управления ключом. Так вот подцепив GND к V- (-4.4 В), а Vl к V+ (+4.4 В) - что есть 8.8 В от V- до V+ - и постепенно увеличивая напряжение на входе управления ключом от нуля и выше (точнее от V-), выяснилось следующее - нормально замкнутый ключ размыкается при напряжении управления около 1.4 В от GND, но нормально разомкнутый ключ замыкается только если напряжение управления достигает 3.6 В от GND (или -0.8 в пересчёте на двуполярное питание)! Т.е. между этими величинами существует окно, внутри которого ОБА ключа разомкнуты! Причём размер окна зависит от разброса напряжения управляющего логической частью - при 6 вольтах (-3.0 В ... +3.0 В) окно простирается примерно от 1.3 В до 2.5 В (т.е. верхняя граница лежит на -0.5 В в пересчёте на двуполярное питание), а при 4.4 вольтах (-2.2 В ... +2.2 В) окно расположено примерно от 1.2 В до 2.0 В (что есть верхняя граница -0.2 В в пересчёте на двуполярное питание). Как видно напрямую это использовать неудаётся, т.к. окно расположено ниже нулевой области, но мы можем сдвинуть напряжение управление вверх применив резисторный делитель напряжения на два! В этом случае окно перемещается в случае 8.8 В в область 2.8...7.2 (что в пересчёте на двуполярное питание будет составлять -1.6...+2.8). Резисторный делитель можно подкорректировать под конкретный чип, чтобы середина окна приходилась точно на ноль (середину диапазона питающих напряжений). В таком случае из одной микросхемы DG403 можно собрать два инвертора или два универсальных унарных троичных элемента, применив 6 резисторов (по 2 резистора на делитель и 1 резистор на подтягивание отключенного состояния - на каждую половинку). Т.е. никаких компараторов и даже диодов НЕНУЖНО! Также делитель можно заменить на подстроечный резистор, чтобы была возможность подстраивать режим работы конкретного чипа DG403 (если местоположение окна будет отличаться у разных производителей).


Last edited by Shaos on 19 Feb 2015 11:53, edited 2 times in total.



08 Jul 2010 05:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Помучал DG403 на макетке - у этого чипа (во всяком случае у данного производителя) выявились очень интересные "троичные" свойства! Напомню что DG403 имеет две идентичных, в каждой из которых есть два цифровых ключа - один нормально замкнут, а другой нормально разомкнут (что позволяет делать из них один переключатель). Питание V- и V+ идёт непосредственно на ключи, а питиание GND и Vl идёт исключительно на логику управления ключом. Так вот подцепив GND к V- (-4.4 В), а Vl к V+ (+4.4 В) - что есть 8.8 В от V- до V+ - и постепенно увеличивая напряжение на входе управления ключом от нуля и выше (точнее от V-), выяснилось следующее - нормально замкнутый ключ размыкается при напряжении управления около 1.4 В от GND, но нормально разомкнутый ключ замыкается только если напряжение управления достигает 3.6 В от GND (или -0.8 в пересчёте на двуполярное питание)! Т.е. между этими величинами существует окно, внутри которого ОБА ключа разомкнуты! Причём размер окна зависит от разброса напряжения управляющего логической частью - при 6 вольтах (-3.0 В ... +3.0 В) окно простирается примерно от 1.3 В до 2.5 В (т.е. верхняя граница лежит на -0.5 В в пересчёте на двуполярное питание), а при 4.4 вольтах (-2.2 В ... +2.2 В) окно расположено примерно от 1.2 В до 2.0 В (что есть верхняя граница -0.2 В в пересчёте на двуполярное питание). Как видно напрямую это использовать неудаётся, т.к. окно расположено ниже нулевой области, но мы можем сдвинуть напряжение управление вверх применив резисторный делитель напряжения на два! В этом случае окно перемещается в случае 8.8 В в область 2.8...7.2 (что в пересчёте на двуполярное питание будет составлять -1.6...+2.8). Резисторный делитель можно подкорректировать под конкретный чип, чтобы середина окна приходилась точно на ноль (середину диапазона питающих напряжений). В таком случае из одной микросхемы DG403 можно собрать два инвертора или два универсальных унарных троичных элемента, применив 6 резисторов (по 2 резистора на делитель и 1 резистор на подтягивание отключенного состояния - на каждую половинку). Т.е. никаких компараторов и даже диодов НЕНУЖНО! Также делитель можно заменить на подстроечный резистор, чтобы была возможность подстраивать режим работы конкретного чипа DG403 (если местоположение окна будет отличаться у разных производителей).


Вот собственно и схема, иллюстрирующая данный подход:

Image

Верхняя часть микросхемы подключена как универсальный троичный унарный элемент, а нижняя - тоже самое, но подключено как троичный инвертор.


09 Jul 2010 06:57
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Взяв за основу тему с компараторами и ключами (начатую ещё в начале 2005 года) пришёл к выводу, что компараторы то и не нужны вовсе, т.к. вот эта схема универсального унарного троичного вычислителя:

Image

вполне может управляться сигналами, полученными непосредственно из троичного сигнала (сначала думал диоды помогут, однако потом понял что нет)...


На самом деле EQP и NEN можно получить непосредственно из входного троичного сигнала, однако для этого надо по разному подключать GND и VL (для NEN в верхнюю часть диапазона питающих напряжений, а для EQP - в нижнюю), однако при использовании одной микросхемы DG403 это невозможно - поэтому берём две:

Image

По сути мы получили тоже самое, что и в предыдущей схеме - два независимых универсальных унарных модуля (или селектора, которые можно использовать в том числе и как инверторы). Как видно тут нету вообще никаких иных компонентов кроме непосредственно DG403, правда теперь их нужно две вместо одной (правая микросхема реализует EQP, а левая - NEN).

P.S. Интересно, что при перемещении питания логики в нижнюю часть "окно" (когда оба ключа отключены) отсутствует - но тем не менее правило "Break-before-Make" должно работать, т.к. оно освещено в даташите (правда там написано про задержку в 5-12 нс между отключением одного и включением другого ключа, а не про разные уровни срабатывания ключей, как было экспериментально установлено).

P.P.S. Вебархив хранит копию этой схемы как минимум с января 2011 года: https://web.archive.org/web/20110107232818/http://shaos.net/blog/
Современный линк на архив блога: http://shaos.net/blog/2010/07/ternary-hardware-cmos-switches.html


09 Jul 2010 07:00
Profile WWW
Admin
User avatar

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

Вторая схема выглядит сложнее (и дороже), но она не противоречит даташиту и не использует недокументированные "окна" в логическом питании. К тому же она не требует буферов и использует один компонент без каких бы то ни было вспомогательных элементов. Однако я успел только частично удостовериться в её работоспособности на макетке (отдельно тестировал левое и правое подключение на одной микросхеме).

Code:
При подключении GND к 0В, а Vl к +4.4В вход управления переключает входы следующим образом:
-4.4В -> нормально замкнутый ключ замкнут, нормально разомкнутый - разомкнут;
 0.0В -> нормально замкнутый ключ замкнут, нормально разомкнутый - разомкнут;
+1.4В -> нормально замкнутый ключ разомкнут, однако нормально разомкнутый всё ещё разомкнут ("окно" началось);
+2.0В -> нормально замкнутый ключ разомкнут, нормально разомкнутый ключ - замкнут ("окно" закончилось);
+4.4В -> нормально замкнутый ключ разомкнут, нормально разомкнутый ключ - замкнут.

При подключении GND к -4.4В, а Vl к 0В вход управления переключает входы следующим образом:
-4.4В -> нормально замкнутый ключ замкнут, нормально разомкнутый - разомкнут;
-3.0В -> нормально замкнутый ключ разомкнут, нормально разомкнутый - замкнут (ключи одновременно перещёлкнулись);
 0.0В -> нормально замкнутый ключ разомкнут, нормально разомкнутый - замкнут;
+4.4В -> нормально замкнутый ключ разомкнут, нормально разомкнутый - замкнут;


Как видно во втором случае (на схеме он слева) никакого "окна" не наблюдается. В результате общая таблица состояний показанного на схеме троичного селектора будет следующей (с одним неиспользуемым окном Z вместо ожидаемых двух):

Code:
-4.4 В -> OUT = RN
-3.0 В -> OUT = RN->RO
-2.0 В -> OUT = RO
-1.5 В -> OUT = RO
 0.0 В -> OUT = RO
+1.5 В -> OUT = RO->Z
+2.0 В -> OUT = Z->RP
+3.0 В -> OUT = RP
+4.4 В -> OUT = RP


Напомню, что троичный инвертор из селектора (универсального троичного унарного элемента) получается путём подключения +5В к RN, OВ к RO и -5В к RP.


09 Jul 2010 16:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Прикинул на бумаге, что вторая схема подключения DG403 позволяет таким образом покрыть любые троичные функции с любым количеством аргументов, причём это дело можно автоматизировать - вплоть до автоматической разводки платы по таблицам истинности реализуемых функций!

Для того чтобы представлять для чего сколько нужно корпусов при таком подходе, привожу конкретные числа:
- NOT требует 2 микросхемы (точнее 50% от 2 микросхем - см. нижнюю часть второй схемы),
- MIN или MAX требуют по 2 микросхемы (точнее 75% от них),
- полусумматор требует 6 микросхем (точнее 83% от них),
- полный сумматор - ориентировочно 12 микросхем,
- троично-двоичный преобразователь 2t4b - ориентировочно 8 микросхем,
- троично-двоичный преобразователь 3t5b - ориентировочно 21 микросхема (что говорит о том, что троично-двоичные преобразователи экономичнее делать на основе двоичных ROM или PAL).

Для сравнения - сдвоенный троичный полусумматор, построенный на компараторах и ключах, составлялся из 7 корпусов микросхем, 4 резисторных сборок и 12 диодов. А только на двойных DG403 это заняло бы примерно 11 микросхем (плюс по два конденсатора по питанию на каждую). Тяжеловато получается, хотя и сравнимо, но зато троично плюс унификация и автоматизация :)

Но для построения полноценных троичных автоматов требуется ещё и память, которую проще всего сделать на конденсаторах с помощью дешёвых CMOS-ключей 4016 (или чуть более дорогих DG411) и операционников (или транзисторных буферов, если значение можно хранить не долго):

Image

А на троичных триггерах делать память будет слишком дорого...


10 Jul 2010 22:08
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Есть идея назвать этот автоматический подход "DDT" (DG403+DG403=Ternary) logic. Соответственно среду разработки назвать также - DDT...

P.S. с 5 июня 2018 года исходники DDT живут тут: https://gitlab.com/ternary/ddt


11 Jul 2010 06:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Есть идея назвать этот автоматический подход "DDT" (DG403+DG403=Ternary) logic. Соответственно среду разработки назвать также - DDT...


Image

Левое подключение микросхемы DG403 назовём E12 (в случае инвертора это NEN), а правое - E21 (в случае инвертора это EQP). Соответственно имея две микросхемы DG403, подключенные подобным образом, мы получаем пару базовых элементов E12 и пару базовых элемента E21. Название обусловлено видом таблицы соответствия - XYY для E12 и XXY для E21 (где X и Y могут принимать отличные друг от друга значения N,O или P). Вот как выражаются все унарные троичные функции через базовые E12 и E21:

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 // 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 = NOT(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


где MUX - универсальный троичный элемент, составленный из одной E12 и одной E21 (как видно на верхней части картинки MUX(c,n,o,p) = E12(c,n,E21(c,o,p)) ), NOT - троичное отрицание (строится из одного MUX), ROU - функция "Round-Up" (строится из одного MUX), ROD - функция "Round-Down" (строится из одного MUX). Функции NOT, ROU и ROD выделены отдельно, т.к. встречаются достаточно часто и могут быть визуально распознаны.

P.S. 12 июля выделил пару новых функций BLP (Block Positive) и BLN (Block Negative), т.к. их реализация может быть совсем простой - один диод и один резистор.

P.P.S. Из бинарных функций по видимому надо выделять MIN и MAX.


11 Jul 2010 08:06
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Вот пример использования алгоритма синтеза троичной схемы в таком ключе на примере функций MIN и MAX.

MIN:

Code:
 |N O P
--------
N|N N N
O|N O O
P|N O P


Будем рассматривать горизонтальные строки этой таблицы по порядку. Первая строка - выходное значение всегда N. Вторая строка - E12(x,N,O). Третья строка - входное значение x без изменений. Все эти три функции подключаем через селектор MUX чтобы получить результирующую функцию:

MIN(x,y) = MUX(y,N,E12(x,N,O),x) = E12(y,N,E21(x,E12(x,N,O),x))

MAX:

Code:
 |N O P
--------
N|N O P
O|O O P
P|P P P


Будем рассматривать горизонтальные строки этой таблицы по порядку. Первая строка - входное значение x без изменений. Вторая строка - E21(x,O,P). Третья строка - всегда P. Все эти три функции подключаем через селектор MUX чтобы получить результирующую функцию:

MAX(x,y) = MUX(y,x,E21(x,O,P),P) = E12(y,x,E21(x,E21(x,O,P),P))

Как можно заметить и MAX, и MIN покрывается двумя микросхемами DG403 (точнее полторы микросхемы, т.е. на трёх микросхемах можно сделать MAX и MIN).

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


11 Jul 2010 08:30
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Shaos wrote:
Shaos wrote:
Есть идея назвать этот автоматический подход "DDT" (DG403+DG403+Ternary) logic. Соответственно среду разработки назвать также - DDT...


Image

Левое подключение микросхемы DG403 назовём E12 (в случае инвертора это NEN), а правое - E21 (в случае инвертора это EQP). Соответственно имея две микросхемы DG403, подключенные подобным образом, мы получаем пару базовых элементов E12 и пару базовых элемента E21. Название обусловлено видом таблицы соответствия - XYY для E12 и XXY для E21 (где X и Y могут принимать отличные друг от друга значения N,O или P).


Выложил то что уже есть из кода: http://nedopc.cvs.sourceforge.net/viewv ... c/src/ddt/


13 Jul 2010 05:10
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 195 posts ]  Go to page 1, 2, 3, 4, 5 ... 13  Next

Who is online

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