|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Троичная перепрограммируемая микросхема TERNARO (TRI00)
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
А зачем нам ассоциативные теги?
|
22 Oct 2015 16:36 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Немного перефразируя : " - А зачем червонец ? - Керосинку покупать. "(С) Sело ускоряет XCHG (,он же иногда SWAP) - вместо реальных передач между регистрами у них просто меняются имена-теги. Для этого, разумеется, регистры адресуются не жёстко, а ассоциативно, через эти самые теги. И + ещё много всяких творческих няшек. Например можно иметь виртуальных регистров больше, чем есть реальных - если реальных допустим 27 , а именные поля тегов допустим четырёхтритовые, то работаем как бы с 81 ( и еще двухтритовое поле режима доступа к регистру ) .
|
22 Oct 2015 17:07 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
На самом деле 8 входов только у одного элемента и им можно пожертвовать - у всех остальных элементов без памяти (кроме селекторов которые лучше делать на селекторах) входов 6 и меньше - получается что на троичном ПЗУ с 6 адресными входами и 4 выходами данных можно построить аналоги большинства моих троичных элементов!
|
23 Oct 2015 18:30 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Ну вот - прошёл только месяц, а я уже забыл что такое E3, P3, MSTR и T0-T3
|
21 Nov 2015 19:46 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Бывает!.. Я два дня 4-битник доделываю - вобще как заново делаю: ничего не помню... С другой стороны - хорошо: не довлеют старые решения, которые казались незыблемыми. Ну и радует, что я подробно всё же в ветку 4-bit Processor весь процесс записывал - помогает вспомнить!
_________________ iLavr
|
22 Nov 2015 09:57 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Форум мне тоже помогает вспомнить, но это только если в форуме все детали фиксировать, а на это к сожалению времени не всегда хватает...
|
22 Nov 2015 15:40 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Нашёл свои бумажные записки от 17 октября 2015 года где тема троичного FPGA была несколько более развита Вобщем суть в том, что основным блоком является показанный выше мультиплексор 9к1, который может быть подключен как память (а может как LUT) далее эти блоки расположены в двумерной сетке между ячейками которой проходят соединительные сигналы - восемь горизонтальных и девять вертикальных линий, коммуникации между которыми производятся в узлах сетки девятью троичными селекторами 9к1 (работающими в обе стороны и без возможности превращения в память) - причём к самому центральному каналу ничего не подведено (отсюда и 8 горизонтальных линий), а каждый выход (вход если работаем как демультиплексор) подключен к вертикальной линии. Далее входы и выходы блоков с памятью подключаются как-то к этим горизонтальным и вертикальным каналам, но как я тогда ещё не успел придумать P.S. Троичный 9-входовой LUT будет программироваться 9 троичными значениями, управляться 2 троичными входами и будет иметь один троичный выход. Будучи подключенным в режиме MEM средний-левый мультиплексор будет ВСЕГДА подключен как NOP (буфер), а верхний-левый и нижний-левый должны иметь возможность быть подключенными как мультиплексоры, коммутирующие какие-то входные сигналы, а не константы, например режим ячейки может задаваться ещё одним (10м) программирующим троичным значением: N - обратная связь включена, верхний элемент подключен к дополнительным входам, а нижний - к константам; O - обратная связь отключена, все 3 входных элемента подключены к константам; P - обратная связь включена, верхний элемент подключен к константам, а нижний - к дополнительным входам. Получается у нас в этом режиме будет 2+3=5 троичных входов, но всё также один троичный выход. Входы LUT/MEM-блоков можно цеплять к вертикальным соединительным линиям, а выходы - к горизонтальным...
|
17 Jul 2018 22:21 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Хотя наверное полноценный 9-входовой мультиплексор также будет нужен - значит надо уметь независимо управлять всеми входами - подключая их либо к константам (обозначенным иксом на картинке, как и все остальные программируемые извне точки), либо к соединительным линиям (которые через интерконнекты уходят в вертикальные каналы): А интерконнект в узлах сетки визуально выглядит так (тут подразумевается девять селекторов 9-к-1, причём вход 00 висит в воздухе): P.S. Кстати а почему девять? По идее их может быть сколь угодно много - по количеству вертикальных сигналов в каждом канале...
|
18 Jul 2018 20:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
На самом деле этот троичный FPGA (или лучше сказать TPLD = Ternary Programmable Logic Device?) будет настраиваться двоичным битстримом (который будет заливаться из внешней двоичной памяти с последовательным доступом), соответственно отсюда и надо плясать, например троичную константу вместо одного троичного значения будут задавать 2 бита (xx), у которых будет четвёртое состояние (11), которое можно использовать как признак того, что данный вход не является константой, а подключается к внешним каналам: Видно, что каждый такой логический блок будет иметь 1 выход и 11 входов (9 из которых могут быть константами - причём константы высвобождают соответствующие вертикальные каналы для глобального интерконнекта, соединяющего логические блоки в разных концах матрицы). Получается, что если элемент работает в режиме MEM (x=1), то средний входной мультиплексор в обязательном порядке должен быть запитан тремя константами 10,00,01 (NOP), иначе оно не будет защёлкивать состояние.
|
20 Jul 2018 23:55 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Наверное можно ещё один однобит завести, который разделит управление верхнего и нижнего мультиплексора в режиме MEM. А то может и два - чтобы все три входных мультиплексора могли управляться независимо друг от друга (и не только в режиме MEM):
|
21 Jul 2018 00:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
А чтобы количество программирующих битов было кратным 8 (для целого числа управляющих байтов), можно ещё 3 битика добавить (добив тем самым до 24 битов на логический блок). Интерконнект также можно обинарить, сделав не 9-1 горизонтальных сигналов, а 8-1, управляемых тремя битами, что даст 11*3=33 управляющих бита на каждый логический блок (для круглоты можно убрать один битик, уменьшив число возможных переподключений одного из входов, например управляющего входа последнего мультиплексора). Ну или 16-1, управляемых четырьмя битами, что даст 11*4=44 управляющих бита на каждый логический блок (т.е. это будет 3 байта на сам логический блок и ещё 6 байт на блок интерконнекта, покрывающий этот логический блок):
|
21 Jul 2018 01:02 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Последний, третий вариант, перерисовывал и подрисовывал раз пять наверное Вобщем если у нас в микросхеме TERNARO имеется 9 возможных входов, то делаем 9 горизонтальных каналов по 15 линий, как на рисунке выше - 14 линий будут выходами 7 логических блоков, расположенных по горизонтали и 15-ая линия это соответствуюший вход (а 0, как мы помним, означает неподключение ни одной горизонтали к вертикальному сигналу в данной точке) - получается у нас будет 9 * 7 = 63 троичных логических блока (каждый будет программироваться 3 байтами) и столько же блоков интерконнекта (каждый будет программироваться 6 байтами). Выходит, что длина битстрима для программирования такой троичной логической матрицы будет 567 байт... P.S. Объём троичного ПЗУ, построенного на такой матрице, в пределе может достигать 567 тритов (189 триад) - это если каждый логический блок будет использоваться как 1-тритная ячейка на 9 адресов (но т.к. для ПЗУ ещё нужна будет схема управления и адресации, то фактически тритов чисто на память будет меньше - надо прикинуть сколько). P.P.S. На самом деле задействовать все горизонтальные линии под выходы логических блоков неправильно - некоторые горизонтали должны быть свободны для организации магистралей для соединения разных секций, ну либо AUX сделать таким, чтобы он отключал вспомогательный выход вовсе - тогда например INDEPENDENT будет управлять обеими плечами, а высвободившийся бит можно пустить на управление отключением-подключением промежуточных выходов (я думаю это было бы полезно для отладки и для составления более мелких схем) т.е. AUX будет управляться двумя битами вместо одного (в таком случае даже чтение среднего мультиплексора в первом ряду можно задействовать - 00 будет означать неподключение AUX, 01 будет означать первый входной мультиплексор, 10 будет означать второй и 11 будет означать третий). Формат битстрима - сверху вниз слева направо каждая пара логический блок - блок интерконнекта (на самом деле несколько блоков интерконнекта по числу каналов - см. далее) будет описываться так: 12-я линия добавлена про запас - раз уж есть такая возможность...
|
21 Jul 2018 02:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Хм, по идее ВСЕ вертикальные линии должны иметь возможность заинтерконнектиться со ВСЕМИ горизонтальными - значит число интерконнектов будет зависеть не только от числа логических блоков, но и от числа горизонтальных каналов! При 9 каналах (9 входах) у нас будет ДЕВЯТЬ блоков интерконнекта на КАЖДЫЙ троичный логический блок - значит для полноценного программирования нам понадобится (3+9*6)*63 = 3591 байт!!!
P.S. На самом деле логический блок можно сделать потяжелей - скажем чтобы можно было E12 (XYY) и E21 (XXY) назначать любой из входных мультиплексоров, высвобождая соответствующие вертикальные сигналы, а также скажем добавить возможность включать предопределённые конфигурации как полный сумматор например (точнее его части), регистр срабатывающий по фронту и т.д. ( хотя эти усложнения можно оставить для будущего TERNARO-2 ; )
P.P.S. Первую микросхему можно выпустить попроще - например в виде матрицы 2x2 или 3x3 вместо вышеописанных 7x9 логических блоков - вот например как будет выглядеть 2x2:
|
21 Jul 2018 03:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Важно понимать, что "TERNARY INTERCONNECT" в данном случае сугубо двоичный блок, способный коммуницировать АНАЛОГОВЫЕ сигналы в коммутаторе 12x15 (т.е. внутри будет много CMOS-ключей работающих в обе стороны - я такую штуку строил в своей микросхеме 2015 года и она работала) - вобщем пока всё выглядит очень даже радужно P.S. Для отладки можно предусмотреть возможность снятия состояний всех горизонтальных линий через последовательный интерфейс (точно также по 2 бита на трит) либо адресовать их N-битным адресом (их всего 135 предполагается в полноценном варианте 7x9 из которых 9 будут входами, что уменьшает интересуемое количество до 126, умещаясь в 7 бит адреса) P.P.S. Ещё в полноценном варианте можно предусмотреть отключение половинок-четвертинок если вдруг будет брак производства (точнее наверное это будет выбор 3-4-7 столбцов)
|
21 Jul 2018 04:44 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22607 Location: Silicon Valley
|
Вот так в TERNARO можно будет реализовать троичный полусумматор: Как можно видеть здесь задействовано 2 логических блока (причём которые необязательно расположены рядом друг с другом) и 4 ноги Кругляками отмечены точки интерконнекта (как я и писал выше, там просто CMOS-ключи, работающие в обе стороны)
|
21 Jul 2018 10:37 |
|
|
Who is online |
Users browsing this forum: No registered users and 33 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
|
|