Давайте думать над железкой (TRIADOR)

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

Moderator: haqreu

User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой (TRIADOR)

Post by Lavr »

Shaos wrote:В таком случае можно будет столь любимый Лавром тройной джамп имитировать ;)

TERNARY_SKIP
JP negative_pointer
JP zero_pointer
JP positive_pointer
Да не то, чтобы он мной столь любимый... Но ведь надо проверить в программах - так ли уж он
хорош, как нам рассказывали:"симметричные весы против двух взвешиваний".

Если его не будет, мы этого не узнаем, и никто не узнает... И все на нас скажут:"Фу... :osad: "
И, может быть, будут правЫ...
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

haqreu wrote:
Shaos wrote:надеюсь обойтись ячейками памяти с запоминанием по уровню
Я так и не придумал, как это сделать. Точнее, получалось очень громоздко, основные загвоздки именно при всяких джампах и т.п. В итоге плюнул, сделал по фронту.
Да - я вижу сложности с одной инструкцией на такт и ячейками по уровню. Например похоже для передачи управления на адрес придётся подсовывать декремент этого адреса для защёлкивания в левых ячейках программного счётчика, чтобы потом оно прошло через полусумматоры и сработало как надо (хотя это могла бы быть "фича" процессора, когда для передачи управления на адрес N надо делать JP N-1 ; ) либо надо как-то хитро отменять инкремент при передаче управления. Также есть проблема с инкрементом и декрементом R1 - похоже надо иметь заранее подсчитанные R1+1 и R1-1 (в двух разных теневых регистрах), чтобы в нужный момент защёлкнуть либо одно, либо другое в ячейках памяти регистра R1 (и во флаге C)...

P.S. С универсальной унарной операцией OP ttt тоже есть проблемы если делать как задумано - т.е. брать R1, применять к нему OP ttt и класть обратно в R1 - так не выйдет (в пределах одного такта), возможно стоит изменить спецификацию, скажем OP ttt будет всё также применяться к R1, но результат сохранять в R2?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Shaos wrote:На борту двоичный ROM (пока 10-битный, но я хочу сделать преобразовалку из 8 битов в 5 тритов и заменить ПЗУ на обычное 2Кбайтное).
Адрес формируется из бинарного представления 6 тритов (т.е. 12 битов - так что ПЗУ будет с неисползуемыми дырами).
При сбросе программный счётчик указывает на адрес нулевой адрес OOOOOO (и там должен быть NOP, т.к. схема иногда его успевает проскочить)...
Сделал преобразовалку из 8 битов в 5 тритов в виде ПЗУ 8->10 (подробнее тут):
snapshot208.png
Теперь можно и за ассемблер браться ;)

P.S. Тут видно, что в схеме стоит 2К ПЗУ, в котором сохранена только программа из положительных троичных адресов, начиная с нулевого т.е. всего 365 слов - 2K нужно чтобы обращаться к памяти по "binary coded ternary" адресу, например:
OOOOOO -> 00 00 00 00 00 00 (адрес 0)
OOOOOP -> 00 00 00 00 00 01 (адрес 1)
OOOOPN -> 00 00 00 00 01 10 (адрес 6)
OOOOPO -> 00 00 00 00 01 00 (адрес 4)
OOOOPP -> 00 00 00 00 01 01 (адрес 5)
OOOPNN -> 00 00 00 01 10 10 (адрес 26)
и т.д. вплоть до
PPPPPP -> 01 01 01 01 01 01 (адрес 1365) из которых мы берём только 11 бит (без старшего нуля), чтобы адресовать 2К ПЗУ

P.P.S. Если в будущем захочется залезть в отрицательную область троичной памяти, то можно вторую 2К ПЗУ прицепить...

P.P.P.S. На самом деле часть отрицательной области троичной памяти таки попадает в эти 2K (не попадает только треть троичного адресного пространства):
Nxxxxx - не попадает (от -364 до -122)
Oxxxxx - попадает (от -121 до +121)
Pxxxxx - попадает (от +122 до +364)
т.е. у нас в 2K ПЗУ будет не 365 пятитритных слов, как я написал чуть выше, а целых 486 (или 23.7% от всего объёма 2К)! :mrgreen:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

В описании на картинке я перепутал направление копирования регистров в команде RR - исправился:

Image

Вот думаю, а не убрать ли из описания эти N,O,P дабы никого не путать? Например вместо NNttt в столбике код писать -108+ttt (т.е. для читателя троичные коды будут как бы десятичными) - или это плохая идея?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой (TRIADOR)

Post by haqreu »

Не надо убирать N,O,P. Тот, кто не разобрался с ними, вряд ли будет разбираться с архитектурой процессора.

Ты там в картинке возведение в степень замени на умножение (вместо t2^9 лучше сделать t2*9)
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой (TRIADOR)

Post by haqreu »

Кстати, я, конечно, понимаю, что счётчик у нас скрытый регистр. Сейчас при каждом джампе надо руками писать в R13 номер банка памяти. Нам точно не нужно копирование из счётчика в R13? Руками всегда справимся?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Вроде победил копирование регистров (на примере первых 4-х) включая инкремент-декремент R1 (ради этого, как и писал выше, пришлось завести 2 теневых регистра, в которых всегда хранится R1+1 и R1-1):
Triador2017-11-25.jpg
Кстати многие части схемы сугубо двоичные (как например сигналы выбора регистра для записи, сигналы дешифрованных опкодов и т.д.) так что моя реализация будет гибридной ;)

Архив с файлом для Logisim прилагается (если при запуске оно начинает глючить, то надо выйти из Логисима и зайти обратно, загрузив всё заново):

http://nedopc.org/ternary/ternary_circ.zip
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

haqreu wrote:Не надо убирать N,O,P. Тот, кто не разобрался с ними, вряд ли будет разбираться с архитектурой процессора.

Ты там в картинке возведение в степень замени на умножение (вместо t2^9 лучше сделать t2*9)
Да - точно, умножение там надо :oops:
Исправил
haqreu wrote:Кстати, я, конечно, понимаю, что счётчик у нас скрытый регистр. Сейчас при каждом джампе надо руками писать в R13 номер банка памяти. Нам точно не нужно копирование из счётчика в R13? Руками всегда справимся?
Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )
А вообще если ты уже прыгнул в сегмент по R13, то значение там же ведь и останется - прыгай дальше сколько тебе влезет в пределах сегмента не трогая R13 ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
haqreu
Maniac
Posts: 318
Joined: 10 Mar 2017 05:30

Re: Давайте думать над железкой (TRIADOR)

Post by haqreu »

Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )
Не согласен. При старте триадора регистры не были инициализированы. Поэтому надо писать всегда, даже при самом первом джампе, находясь в первом сегменте памяти.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

haqreu wrote:
Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )
Не согласен. При старте триадора регистры не были инициализированы. Поэтому надо писать всегда, даже при самом первом джампе, находясь в первом сегменте памяти.
В моей логисимовской модели все регистры обнуляются при сбросе (троичные MEM-ы так подключены, что один из ихних входов является сбрасывающим) - соответственно в R13 по сбросу будет OOO и программный указатель указывает на OOOOOO и JP ttt будет работать прямо сразу как надо (начинать с нуля это оч.удобно, в особенности если вместо троичной памяти использовать двоичную, где нулевой адрес отображается на начало памяти)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой (TRIADOR)

Post by Lavr »

Shaos wrote:многие части схемы сугубо двоичные (как например сигналы выбора регистра для записи,
сигналы дешифрованных опкодов и т.д.) так что моя реализация будет гибридной ;)
Нормальной она будет, а никакой не гибридной. Не повторяй чужих глупостей!
Двоичная логика является органичным подмножеством троичной логики.
В этом нет ничего неестественного.
Более того все (или почти все, кроме весьма специфичных) элементы троичной
логики при отбрасывании ситуации "не определено" должны корректно перейти
в аналогичные элементы двоичной логики.
Об этом прямо написано во всех теоретических основах троичности и нефиг
этого "стесняться".

Я так проверял все свои NAND, OR, XOR и т.д. сделанные на полевых транзисторах.
Если такой "даунгрейд" проходит неверно, то троичная схема скорее всего некорректна.

Если троичный дешифратор, скажем 2-в-9, дешифрует уровнями "FALSE" - он что -
перестает быть троичным?
Если троичный буфер пропускает по уровню "TRUE" - он что - тоже перестает быть
троичным?
Сигналы управления мы выбираем тех уровней, что нам схемотехически удобны.
И не надо тут путать "божий дар с яичницей"! :lol:
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Да я не стесняюсь :)
Я просто заранее предупреждаю ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Давайте думать над железкой (TRIADOR)

Post by Lavr »

Да просто один товарищ тут, не почитав, и не подумав, вбросил какие-то беспочвенные сомнения:
viewtopic.php?p=140619#p140619
viewtopic.php?p=140048#p140048

И, как говорится, "ложечки-то нашлись, но и осадочек остался"... :-?

Я, к примеру, специально разрабатывал троичые логиеские элементы под питание +/-6 В,
чтобы в размах 12 В без проблем применять с ними обычную CMOS-логику, если надо.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Добавил все 13 регистров :o
Triador2017-11-26.jpg
Последний архив с моделью для Logisim всегда лежит тут:

http://nedopc.org/ternary/ternary_circ.zip
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Давайте думать над железкой (TRIADOR)

Post by Shaos »

Вот думаю может выходы регистров в какой-то индикатор вывести?
Например в матрицу 6x5 красно-зелёных светодиодов:

Code: Select all

 R3h  R3m  R3l  R4h  R4m  R4l
 R5h  R5m  R5l  R6h  R6m  R6l
 R7h  R7m  R7l  R8h  R8m  R8l
 R9h  R9m  R9l  R10h R10m R10l
 R11h R11m R11l R12h R12m R12l
Регистры R1,R2 и R13 исключены из индикации т.к. они чаще всего будут использоваться в процессе работы программы...

P.S. Хотя если добавить R1 и R2, то матрица уже станет 6x6, что несколько повеселее ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net