nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 29 Mar 2024 07:51



Reply to topic  [ 410 posts ]  Go to page Previous  1 ... 9, 10, 11, 12, 13, 14, 15 ... 28  Next
Давайте думать над железкой (TRIADOR) 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
В таком случае можно будет столь любимый Лавром тройной джамп имитировать ;)

TERNARY_SKIP
JP negative_pointer
JP zero_pointer
JP positive_pointer

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

Если его не будет, мы этого не узнаем, и никто не узнает... И все на нас скажут:"Фу... :osad: "
И, может быть, будут правЫ...

_________________
iLavr


25 Nov 2017 13:47
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
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?...

_________________
:dj: https://mastodon.social/@Shaos


25 Nov 2017 16:12
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
Shaos wrote:
На борту двоичный ROM (пока 10-битный, но я хочу сделать преобразовалку из 8 битов в 5 тритов и заменить ПЗУ на обычное 2Кбайтное).
Адрес формируется из бинарного представления 6 тритов (т.е. 12 битов - так что ПЗУ будет с неисползуемыми дырами).
При сбросе программный счётчик указывает на адрес нулевой адрес OOOOOO (и там должен быть NOP, т.к. схема иногда его успевает проскочить)...

Сделал преобразовалку из 8 битов в 5 тритов в виде ПЗУ 8->10 (подробнее тут):

Attachment:
snapshot208.png
snapshot208.png [ 70.27 KiB | Viewed 5260 times ]


Теперь можно и за ассемблер браться ;)

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:

_________________
:dj: https://mastodon.social/@Shaos


25 Nov 2017 17:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
В описании на картинке я перепутал направление копирования регистров в команде RR - исправился:

Image

Вот думаю, а не убрать ли из описания эти N,O,P дабы никого не путать? Например вместо NNttt в столбике код писать -108+ttt (т.е. для читателя троичные коды будут как бы десятичными) - или это плохая идея?...

_________________
:dj: https://mastodon.social/@Shaos


25 Nov 2017 23:19
Profile WWW
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
Не надо убирать N,O,P. Тот, кто не разобрался с ними, вряд ли будет разбираться с архитектурой процессора.

Ты там в картинке возведение в степень замени на умножение (вместо t2^9 лучше сделать t2*9)


26 Nov 2017 00:45
Profile
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
Кстати, я, конечно, понимаю, что счётчик у нас скрытый регистр. Сейчас при каждом джампе надо руками писать в R13 номер банка памяти. Нам точно не нужно копирование из счётчика в R13? Руками всегда справимся?


26 Nov 2017 00:48
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
Вроде победил копирование регистров (на примере первых 4-х) включая инкремент-декремент R1 (ради этого, как и писал выше, пришлось завести 2 теневых регистра, в которых всегда хранится R1+1 и R1-1):

Attachment:
Triador2017-11-25.jpg
Triador2017-11-25.jpg [ 217.92 KiB | Viewed 5803 times ]


Кстати многие части схемы сугубо двоичные (как например сигналы выбора регистра для записи, сигналы дешифрованных опкодов и т.д.) так что моя реализация будет гибридной ;)

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

http://nedopc.org/ternary/ternary_circ.zip

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 01:28
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
haqreu wrote:
Не надо убирать N,O,P. Тот, кто не разобрался с ними, вряд ли будет разбираться с архитектурой процессора.

Ты там в картинке возведение в степень замени на умножение (вместо t2^9 лучше сделать t2*9)

Да - точно, умножение там надо :oops:
Исправил

haqreu wrote:
Кстати, я, конечно, понимаю, что счётчик у нас скрытый регистр. Сейчас при каждом джампе надо руками писать в R13 номер банка памяти. Нам точно не нужно копирование из счётчика в R13? Руками всегда справимся?

Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )
А вообще если ты уже прыгнул в сегмент по R13, то значение там же ведь и останется - прыгай дальше сколько тебе влезет в пределах сегмента не трогая R13 ;)

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 01:30
Profile WWW
Maniac

Joined: 10 Mar 2017 05:30
Posts: 318
Reply with quote
Quote:
Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )


Не согласен. При старте триадора регистры не были инициализированы. Поэтому надо писать всегда, даже при самом первом джампе, находясь в первом сегменте памяти.


26 Nov 2017 01:43
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
haqreu wrote:
Quote:
Ну если вышел из своего сегмента путём естественного перехода через границу, то да - надо писать руками (это не баг, это фича ; )

Не согласен. При старте триадора регистры не были инициализированы. Поэтому надо писать всегда, даже при самом первом джампе, находясь в первом сегменте памяти.

В моей логисимовской модели все регистры обнуляются при сбросе (троичные MEM-ы так подключены, что один из ихних входов является сбрасывающим) - соответственно в R13 по сбросу будет OOO и программный указатель указывает на OOOOOO и JP ttt будет работать прямо сразу как надо (начинать с нуля это оч.удобно, в особенности если вместо троичной памяти использовать двоичную, где нулевой адрес отображается на начало памяти)

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 01:47
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
многие части схемы сугубо двоичные (как например сигналы выбора регистра для записи,
сигналы дешифрованных опкодов и т.д.) так что моя реализация будет гибридной ;)

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

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

Если троичный дешифратор, скажем 2-в-9, дешифрует уровнями "FALSE" - он что -
перестает быть троичным?
Если троичный буфер пропускает по уровню "TRUE" - он что - тоже перестает быть
троичным?
Сигналы управления мы выбираем тех уровней, что нам схемотехически удобны.
И не надо тут путать "божий дар с яичницей"! :lol:

_________________
iLavr


26 Nov 2017 04:24
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
Да я не стесняюсь :)
Я просто заранее предупреждаю ;)

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 05:42
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Да просто один товарищ тут, не почитав, и не подумав, вбросил какие-то беспочвенные сомнения:
http://www.nedopc.org/forum/viewtopic.php?p=140619#p140619
http://www.nedopc.org/forum/viewtopic.php?p=140048#p140048

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

Я, к примеру, специально разрабатывал троичые логиеские элементы под питание +/-6 В,
чтобы в размах 12 В без проблем применять с ними обычную CMOS-логику, если надо.

_________________
iLavr


26 Nov 2017 06:18
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
Добавил все 13 регистров :o

Attachment:
Triador2017-11-26.jpg
Triador2017-11-26.jpg [ 338.72 KiB | Viewed 5787 times ]


Последний архив с моделью для Logisim всегда лежит тут:

http://nedopc.org/ternary/ternary_circ.zip

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 11:05
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22422
Location: Silicon Valley
Reply with quote
Вот думаю может выходы регистров в какой-то индикатор вывести?
Например в матрицу 6x5 красно-зелёных светодиодов:
Code:
 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, что несколько повеселее ;)

_________________
:dj: https://mastodon.social/@Shaos


26 Nov 2017 11:45
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 410 posts ]  Go to page Previous  1 ... 9, 10, 11, 12, 13, 14, 15 ... 28  Next

Who is online

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