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

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

Moderator: haqreu

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

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

Post by Shaos »

Mac Buster wrote:
А вот эти остатки (по 25%) не получится использовать для других целей?
Получится - их можно объединять с другими операциями
Ну в крайнем случае можно как буфер задействовать
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Shaos wrote:
Shaos wrote: Прикинул на бумаге, что вторая схема подключения DG403 позволяет таким образом покрыть любые троичные функции с любым количеством аргументов, причём это дело можно автоматизировать - вплоть до автоматической разводки платы по таблицам истинности реализуемых функций!

Для того чтобы представлять для чего сколько нужно корпусов при таком подходе, привожу конкретные числа:
- NOT требует 2 микросхемы (точнее 50% от 2 микросхем - см. нижнюю часть второй схемы),
- MIN или MAX требуют по 2 микросхемы (точнее 75% от них),
- полусумматор требует 6 микросхем (точнее 83% от них),
- полный сумматор - ориентировочно 12 микросхем,
- троично-двоичный преобразователь 2t4b - ориентировочно 8 микросхем,
- троично-двоичный преобразователь 3t5b - ориентировочно 21 микросхема (что говорит о том, что троично-двоичные преобразователи экономичнее делать на основе двоичных ROM или PAL).
- схема определения знака трёхразрядного троичного числа - 2 микросхемы
- схема сдвига влево (RLA) и вправо (RRA) - 4 микросхемы (75% от них)
- унарный трёхразрядный универсальный троичный элемент (OPA) - 4 микросхемы (75% от них)
- бинарный трёхразрядный универсальный троичный элемент (OPB) - 12 микросхем
Перестановкой входов нашёл несколько более оптимальных решений:
- троично-двоичный преобразователь 1t2b - 2 микросхемы (75%)
- троично-двоичный преобразователь 2t4b - 8 микросхем (подтверждено)
- троично-двоичный преобразователь 3t5b - 18 микросхем
- троично-двоичный преобразователь 4t7b - 39 микросхем
- троично-двоичный преобразователь 5t8b - 83 микросхемы
- троично-двоичный преобразователь 6t10b - 162 микросхемы
Всё равно видно, что для преобразования троичного адреса в двоичный надо использовать двоичные же микросхемы (ROM или PAL)

P.S. С обратным преобразованием не лучше:
- двоично-троичный преобразователь 2b1t - 1 микросхема
- двоично-троичный преобразователь 4b2t - 11 микросхем
- двоично-троичный преобразователь 5b3t - 32 микросхемы
- двоично-троичный преобразователь 7b4t - 80 микросхем
- двоично-троичный преобразователь 8b5t - 154 микросхемы
- двоично-троичный преобразователь 10b6t - лучший известный вариант состоит из 309 микросхем

P.P.S. Умножители:
- 1x1=2 - 2 микросхемы
- 2x2=4 - 30 микросхем
- 3x3=6 - 188 микросхем
- 4x4=8 - 1088 микросхем
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Новая версия доступна вот тут: viewtopic.php?t=169
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Я тут прикинул вариант построения троичной постоянной памяти на троичных переключателях (MUX) - по сути эту память можно использовать как комбинационную схему, т.е. посчитав количество микросхем DG403, необходимых для построения памяти с N входами (адреса) и M выходами (данные) можно принять это число за верхнюю границу, от которой можно считать оптимальность того или иного решения (точнее чем ближе количество микросхем к этой границе, тем более хаотичные данные заложены в эту память/схему).

Вобщем формула такова: D(i)=3*D(i-1)+1 причём D(1)=1. Это для одного выхода:
D(1)=1 (ПЗУ на 3 трита)
D(2)=4 (ПЗУ на 9 тритов)
D(3)=13 (ПЗУ на 27 тритов)
D(4)=40 (ПЗУ на 81 трит)
D(5)=121 (ПЗУ на 243 трита)
D(6)=364 (ПЗУ на 729 тритов)
D(7)=1093 (ПЗУ на 2187 тритов)
D(8)=3280 (ПЗУ на 6561 трит)
D(9)=9841 (ПЗУ на 19683 трита)
D(10)=29524 (ПЗУ на 59049 тритов)

Для M выходов и N входов формула будет выглядеть так: M*D(N)
Last edited by Shaos on 11 Sep 2013 23:08, edited 1 time in total.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Посчитаем процентное соотношение известного оптимального решения к универсальному (через ПЗУ на ключах):

2 входа и 1 выход (4*1=4):
MIN - 1.5/4=38%
MAX - 1.5/4=38%
двоично-троичный преобразователь 2b1t - 1/4=25%

2 входа и 2 выхода (4*2=8):
полусумматор - 5/8=63%
умножитель 1x1=2 - 2/8=25%

2 входа и 4 выхода (4*4=16):
троично-двоичный преобразователь 2t4b - 8/16=50%

3 входа и 1 выход (13*1=13):
схема определения знака трёхразрядного троичного числа - 2/13=15%

3 входа и 2 выхода (13*2=26):
полный сумматор - 12/26=46%

3 входа и 5 выходов (13*5=65):
троично-двоичный преобразователь 3t5b - 18/65=28%

4 входа и 2 выхода (40*2=80):
двоично-троичный преобразователь 4b2t - 11/80=14%

4 входа и 4 выхода (40*4=160):
умножитель 2x2=4 - 30/160=19%

4 входа и 7 выходов (40*7=280):
троично-двоичный преобразователь 4t7b - 39/280=14%

5 входов и 3 выхода (121*3=363):
двоично-троичный преобразователь 5b3t - 32/363=9%

5 входов и 4 выхода (121*4=484):
схема сдвига влево (RLA) и вправо (RRA) - 3/484=0.6%

5 входов и 8 выходов (121*8=968):
троично-двоичный преобразователь 5t8b - 83/968=9%

6 входов и 3 выхода (364*3=1092):
унарный трёхразрядный универсальный троичный элемент (OPA) - 3/1092=0.3%

6 входов и 6 выходов (364*6=2184):
умножитель 3x3=6 - 188/2184=9%

6 входов и 10 выходов (364*10=3640):
троично-двоичный преобразователь 6t10b - 162/3640=4%

7 входов и 4 выхода (1093*4=4372):
двоично-троичный преобразователь 7b4t - 80/4372=2%

8 входов и 5 выходов (3280*5=1640):
двоично-троичный преобразователь 8b5t - 154/1640=9%

8 входов и 8 выходов (3280*8=26240):
умножитель 4x4=8 - 1088/26240=4%

10 входов и 6 выходов (29524*6=177144):
двоично-троичный преобразователь 10b6t - 309/177144=0.2%

15 входов и 3 выхода (много):
бинарный трёхразрядный универсальный троичный элемент (OPB) - 12/много=0% ;)
Last edited by Shaos on 11 Sep 2013 23:09, edited 2 times in total.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Преобразователь из одного троичного сигнала в два двоичных состоит из одного элемента E12 и одного E21 (как и MUX). Преобразователь из двух двоичных сигналов в один троичный состоит из двух элементов E21 и одного E12. Это означает, что если нам нужно сделать комбинационную схему с N входами и M выходами, и DDT даёт нам решение, в котором больше чем N+1.5*M микросхем DG403 (причём N и M должны быть чётными), то проще делать реализацию такой схемы на двоичном ROM или PAL, преобразовав сигналы на входе и выходе.

P.S. На самом деле если мы возьмём вариант когда N=11, а не N=10 (для ПЗУ это не важно - даже логичнее когда -1=11), то преобразователь двух двоичных в один троичный сигнал можно сделать всего лишь на двух E21, т.е. формула будет N+M (причём M уже может быть нечётным).

P.P.S. Вообще-то, в этой формуле также надо учитывать и стоимость ROM или PAL (или MCU), однако цена одной DG403 по сути сравнима с ценой дешёвых MCU, PAL или ROM. Ну скажем пусть будет N+M+2...
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

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

P.P.S. Из бинарных функций по видимому надо выделять MIN и MAX.
Это потому что MIN и MAX также отлично строятся из диодов и резистора - только что проверил на макетке
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Shaos wrote:
Shaos wrote:
Shaos wrote: Прикинул на бумаге, что вторая схема подключения DG403 позволяет таким образом покрыть любые троичные функции с любым количеством аргументов, причём это дело можно автоматизировать - вплоть до автоматической разводки платы по таблицам истинности реализуемых функций!

Для того чтобы представлять для чего сколько нужно корпусов при таком подходе, привожу конкретные числа:
- NOT требует 2 микросхемы (точнее 50% от 2 микросхем - см. нижнюю часть второй схемы),
- MIN или MAX требуют по 2 микросхемы (точнее 75% от них),
- полусумматор требует 6 микросхем (точнее 83% от них),
- полный сумматор - ориентировочно 12 микросхем,
- троично-двоичный преобразователь 2t4b - ориентировочно 8 микросхем,
- троично-двоичный преобразователь 3t5b - ориентировочно 21 микросхема (что говорит о том, что троично-двоичные преобразователи экономичнее делать на основе двоичных ROM или PAL).
- схема определения знака трёхразрядного троичного числа - 2 микросхемы
- схема сдвига влево (RLA) и вправо (RRA) - 4 микросхемы (75% от них)
- унарный трёхразрядный универсальный троичный элемент (OPA) - 4 микросхемы (75% от них)
- бинарный трёхразрядный универсальный троичный элемент (OPB) - 12 микросхем
Перестановкой входов нашёл несколько более оптимальных решений:
- троично-двоичный преобразователь 1t2b - 2 микросхемы (75%)
- троично-двоичный преобразователь 2t4b - 8 микросхем (подтверждено)
- троично-двоичный преобразователь 3t5b - 18 микросхем
- троично-двоичный преобразователь 4t7b - 39 микросхем
- троично-двоичный преобразователь 5t8b - 83 микросхемы
- троично-двоичный преобразователь 6t10b - 162 микросхемы
Всё равно видно, что для преобразования троичного адреса в двоичный надо использовать двоичные же микросхемы (ROM или PAL)

P.S. С обратным преобразованием не лучше:
- двоично-троичный преобразователь 2b1t - 1 микросхема
- двоично-троичный преобразователь 4b2t - 11 микросхем
- двоично-троичный преобразователь 5b3t - 32 микросхемы
- двоично-троичный преобразователь 7b4t - 80 микросхем
- двоично-троичный преобразователь 8b5t - 154 микросхемы
- двоично-троичный преобразователь 10b6t - лучший известный вариант состоит из 309 микросхем

P.P.S. Умножители:
- 1x1=2 - 2 микросхемы
- 2x2=4 - 30 микросхем
- 3x3=6 - 188 микросхем
- 4x4=8 - 1088 микросхем
Схема инкремента-декремента (имеем N тритов на входе плюс один трит управления и N+1 тритов на выходе):
N=1 - 6 микросхем (83%)
N=2 - 10 микросхем
N=3 - 16 микросхем
N=4 - 22 микросхемы
N=5 - 28 микросхем
N=6 - 34 микросхемы
N=7 - 40 микросхем
N=8 - 46 микросхем
N=9 - 52 микросхемы, однако вручную можно получить более оптимальную схему:
Ручной вариант схемы инкремента для 9-тритового слова, составленный из трёх 3-тритовых схем инкремента-декремента, соединённых последовательно, состоит из 3*16=48 микросхем. Напомню, что на этой схеме можно построить счётчик программного адреса для 3niti alpha.

P.S. Схемы сравнения двух N-разрядных троичных чисел:
N=1 - 2 микросхемы
N=2 - 6 микросхем (83%)
N=3 - 8 микросхем
N=4 - 12 микросхем (92%)
N=5 - пока DDTp нашёл 44 микросхемы, но думаю что оптимальное решение - 14

P.P.S. Схемы сложения двух N-разрядных троичных чисел с переносом:
N=1 - 12 микросхем (задержка не более 3)
N=2 - 28 микросхем (задержка не более 5)
N=3 - 50 микросхем (98% - задержка не более 7)
N=4 - 76 микросхем (99% - задержка не более 9)
N=5 - 106 микросхем (задержка не более 11)
В последнем случае если делать последовательную схему из 5 одноразрядных сумматоров, то получится 60 микросхем с задержкой 15.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Конструкцию троичного железа на CMOS-ключах можно сильно удешевить, применив 4016 ключи (4 ключа в одном корпусе с независимым управлением - 22 цента за DIP и 7 центов за SOIC), однако тут боком вылезает то, что ВСЕ сигналы управления становятся двоичными (с уровнями -V и +V). Причём один троичный вход с помощью дополнительной полуаналоговой логики (CMOS-"конструктор" 4007 или отдельные CMOS-транзисторы) будет преобразовываться в 3 (а лучше 5) сигналов - PNN, NPN, NNP (а также PPN и NPP), которые будут щёлкать дешёвыми ключами 4016. Подобная "трёхпроводная (пятипроводная) троичность" выглядит сильно некошерно...

P.S. Если будет спрос, то в DDT это также можно поддержать без проблем
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Shaos wrote:
Image

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

Code: Select all

При подключении 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: Select all

-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.
Сегодня собрал схему полностью! При этом взял дешёвые соики, что купил недавно по смешной цене - всего 56 центов за штучку (толи отбраковка, толи выпаянка). При этом собрал "стандартный" компонент TRI41 (два троичных мультиплексора с общим управлением):

Code: Select all

 1)  S - троичный вход управления
 2) N1 - подключаемый контакт первого селектора, если S=N
 3) O1 - подключаемый контакт первого селектора, если S=O
 4) P1 - подключаемый контакт первого селектора, если S=P
 5) C1 - подсоединяется к N1,O1,P1 в зависимости от значения S
 6) N2 - подключаемый контакт второго селектора, если S=N
 7) O2 - подключаемый контакт второго селектора, если S=O
 8) P2 - подключаемый контакт второго селектора, если S=P
 9) C2 - подсоединяется к N2,O2,P2 в зависимости от значения S
10)-5В - отрицательное питание
11) 0В - земля
12)+5В - положительное питание
На плате кроме двух DG403 присутствуют 4 дип-конденсатора 0.22 мФ (их почти не видно), ну и 12-ногий разъём:
Image

Не знаю с чем это связано, но у этих DG403 нету "окна" неподключения - т.е. переключатели при плавном изменении управляющего напряжению перещёлкиваются мгновенно. Более того - в районе плюсового перещёлкивания наблюдался эффект одновременного горения разнонаправленных светодиодов - это значит что ток стал переменный - переключатели постоянно перещёлкивались туда-сюда - эффект неприятный, но не страшный. В результате имеем при подаче на вход S:

Code: Select all

Test -V = -4.4V, +V = +4.4V:

-4.4V -> C1=N1 C2=N2
-2.9V -> C1=N1->O1 C2=N2->O2
 0.0V -> C1=O1 C2=O2
+1.8V -> C1=O1->P1 C2=O2->P2
+4.4V -> C1=P1 C2=P2

Ternary Multiplexer:
---------------------------------------------
NNNNNNNOOOOOOOOOOOOOOO|OOOOOOOOOPPPPPPPPPPPPP
---------------------------------------------

Ternary Inverter (N1=+V O1=GND P1=-V):
---------------------------------------------
                      ^
=======\              |
       |              |
       |              |
       |              |
       |              |
-------\==============|=========\------------>
                      |         |
                      |         |
                      |         |
                      |         |
                      |         \============
---------------------------------------------
P.S. Большую фотку девайса можно посмотреть по короткой ссылке: http://nedopc.org?0010
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

По ходу DG403DY что я заюзал - фирмы Intersil. Даташит обещает сопротивление ключа 45 Ом максимум при комнатной температуре (типовое значение - 20 Ом). Разница в сопротивлении каналов - не более 5 Ом. Время срабатывания ключа - 100 нс (максимум 150), а время отпускания - 60 нс (максимум 100), что даёт предельную скорость щёлканья - до 4 МГц. Максимальный ток текущий через логические входы +-1 мкА. Максимальный ток текущий через ключ - 30 мА (или в 30000 раз больше), а в пике - аж до 100 мА. Ёмкость канала - 39 пФ. Ширина полосы пропускания ключей явно не указана, однако в даташите есть график соотношения потерь к частоте, где частота уходит за 10 МГц (график почти равномерный при низких сопротивлениях нагрузки - 50 и 75 Ом).
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

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

Image

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

Image

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

P.P.S. См. http://www.trimux.com ;)
User avatar
poisk
Writer
Posts: 21
Joined: 02 Jan 2009 05:23
Location: Киров, РФ

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

Post by poisk »

Собрал на отечественных аналогах КР590КН4 - всё работает и от 5В, хотя справочник говорит о питании +-9В.
Сначала подал -12В вместо +5В: микросхемы стали тёплыми, на выходе было -7В. Через минуту заметил и включил как надо: никто не сгорел.
Плату развёл в SL5, микросхемы купил по 30рублей.
User avatar
Shaos
Admin
Posts: 23992
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

poisk wrote: Собрал на отечественных аналогах КР590КН4 - всё работает и от 5В, хотя справочник говорит о питании +-9В.
Сначала подал -12В вместо +5В: микросхемы стали тёплыми, на выходе было -7В. Через минуту заметил и включил как надо: никто не сгорел.
Плату развёл в SL5, микросхемы купил по 30рублей.
А КР590КН4 это аналоги чего? И на схему можно посмотреть?
User avatar
poisk
Writer
Posts: 21
Joined: 02 Jan 2009 05:23
Location: Киров, РФ

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

Post by poisk »

Shaos wrote:
poisk wrote: Собрал на отечественных аналогах КР590КН4 - всё работает и от 5В, хотя справочник говорит о питании +-9В.
Сначала подал -12В вместо +5В: микросхемы стали тёплыми, на выходе было -7В. Через минуту заметил и включил как надо: никто не сгорел.
Плату развёл в SL5, микросхемы купил по 30рублей.
А КР590КН4 это аналоги чего? И на схему можно посмотреть?
Аналог DG403, как и DG190, DG191, DG390, HI5043, HI5151, HI5151. Схема здешняя, плату развёл на один инвертор относительно 0 и универсальный троичный элемент. Размер 26х26мм, но расположение выводов не по принятому стандарту: не получилась бы такая маленькая.
You do not have the required permissions to view the files attached to this post.