|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Проектирование троичных элементов (4) - пробуем CMOS-ключи
Author |
Message |
Ronin
Maniac
Joined: 29 Mar 2005 06:06 Posts: 304 Location: Krasnodar
|
Shaos: ранее этот топик (как я вся троичная тема) жила на портале Ternary.info https://web.archive.org/web/20131008143041/http://ternary.info/modules/newbb/viewtopic.php?topic_id=168&forum=4не нравился мне этот DG403 а мультиплексор 2х1 ведь есть! 1561КП5 aka CD4053. да еще 3 штуки в корпусе (а на один элемент всего 2 нужно) при цене 0.2-0.3$ транзисторы можно менять на компараторы естессно.
|
17 Apr 2005 09:52 |
|
|
Ronin
Maniac
Joined: 29 Mar 2005 06:06 Posts: 304 Location: Krasnodar
|
да и вообще, в универсальных унарных/бинарных ячейках на мультиплексорах (4053 и 4067 соответственно) можно использовать как транзисторные так и компараторные входы (с соотв. изменениями в коммутации мультиплексоров)
|
17 Apr 2005 10:01 |
|
|
Ronin
Maniac
Joined: 29 Mar 2005 06:06 Posts: 304 Location: Krasnodar
|
правда (первая моя схема) на обычных ключах 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 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Взяв за основу тему с компараторами и ключами (начатую ещё в начале 2005 года) пришёл к выводу, что компараторы то и не нужны вовсе, т.к. вот эта схема универсального унарного троичного вычислителя:
вполне может управляться сигналами, полученными непосредственно из троичного сигнала (сначала думал диоды помогут, однако потом понял что нет)...
Last edited by Shaos on 20 Sep 2012 18:36, edited 2 times in total.
|
05 Jul 2010 19:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Потом думал, что DG403 не подойдёт, т.к. у него отдельно цифровое питание имеется, которое во всех даташитах стоит в +5В, даже смотрел в сторону - на что-то типа ADG1313, где цифрового питания нет - только два аналоговых (положительное и отрицательное) и земля.
|
05 Jul 2010 20:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
С другой стороны никто не мешает и у DG403 подавать на GND -5В, а на Vl +5В (т.е. диапазон напряжений для логики тоже будет 10 вольт - как и для коммутируемых сигналов) - вобщем попробую DG403
|
06 Jul 2010 17:54 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Помучал 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 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
| | | | 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 (если местоположение окна будет отличаться у разных производителей). | | | | |
Вот собственно и схема, иллюстрирующая данный подход: Верхняя часть микросхемы подключена как универсальный троичный унарный элемент, а нижняя - тоже самое, но подключено как троичный инвертор.
|
09 Jul 2010 06:57 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
На самом деле EQP и NEN можно получить непосредственно из входного троичного сигнала, однако для этого надо по разному подключать GND и VL (для NEN в верхнюю часть диапазона питающих напряжений, а для EQP - в нижнюю), однако при использовании одной микросхемы DG403 это невозможно - поэтому берём две: По сути мы получили тоже самое, что и в предыдущей схеме - два независимых универсальных унарных модуля (или селектора, которые можно использовать в том числе и как инверторы). Как видно тут нету вообще никаких иных компонентов кроме непосредственно 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 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Первая схема выглядит проще, однако она основано на неподтверждённом документально свойстве "окна", подразумевает ручную настройку (подстройка резистора для деления входного напряжения) и к тому же требует буферизации получающегося выходного сигнала, т.к. притянутые резистором уровни в цепочку не выстроишь. Но тем не менее она проверена на макетке и она работает.
Вторая схема выглядит сложнее (и дороже), но она не противоречит даташиту и не использует недокументированные "окна" в логическом питании. К тому же она не требует буферов и использует один компонент без каких бы то ни было вспомогательных элементов. Однако я успел только частично удостовериться в её работоспособности на макетке (отдельно тестировал левое и правое подключение на одной микросхеме).
| | | | 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 вместо ожидаемых двух):
Напомню, что троичный инвертор из селектора (универсального троичного унарного элемента) получается путём подключения +5В к RN, OВ к RO и -5В к RP.
|
09 Jul 2010 16:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Прикинул на бумаге, что вторая схема подключения 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) и операционников (или транзисторных буферов, если значение можно хранить не долго):
А на троичных триггерах делать память будет слишком дорого...
|
10 Jul 2010 22:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Есть идея назвать этот автоматический подход "DDT" (DG403+DG403=Ternary) logic. Соответственно среду разработки назвать также - DDT... P.S. с 5 июня 2018 года исходники DDT живут тут: https://gitlab.com/ternary/ddt
|
11 Jul 2010 06:33 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Левое подключение микросхемы 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 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
Вот пример использования алгоритма синтеза троичной схемы в таком ключе на примере функций MIN и MAX.
MIN:
Будем рассматривать горизонтальные строки этой таблицы по порядку. Первая строка - выходное значение всегда 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:
Будем рассматривать горизонтальные строки этой таблицы по порядку. Первая строка - входное значение 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 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
|
13 Jul 2010 05:10 |
|
|
Who is online |
Users browsing this forum: No registered users and 7 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
|
|