nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 02 Jun 2020 18:55



Reply to topic  [ 435 posts ]  Go to page 1, 2, 3, 4, 5 ... 29  Next
Давайте думать над железкой (TRIADOR) 
Author Message
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Сабж. Ограничения: использование только тримуксов. Ну, резисторы можно.
Бюджет сотни три тримуксов. Хочется программируемости, например, перемычками. Какие будут идеи?

UPDATE 2020: плейлист видеороликов о проекте: https://www.youtube.com/playlist?list=PL9MBW6e0V7UIvP2vY_aKwsu93wqYq5jXJ


13 Aug 2017 08:54
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18619
Location: Silicon Valley
Reply with quote
У меня была идея сделать упрощённый программирумый вычислитель (сильно проще, чем 3niti alpha)

_________________
:eugeek: https://twitter.com/Shaos1973


14 Aug 2017 05:32
Profile WWW
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Подробности! Сколько памяти, сколько и каких команд?


14 Aug 2017 12:43
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18619
Location: Silicon Valley
Reply with quote
haqreu wrote:
Подробности! Сколько памяти, сколько и каких команд?

слово 3 трита (триада)
в системе команд как минимум должно быть:
- OPA (универсальная унарная команда)
- OPB (универсальная бинарная команда)
- JMP (безусловная передача управления)
потом можно приделать условия и сложение/вычитание (можно начать с инкремента/декремента)

_________________
:eugeek: https://twitter.com/Shaos1973


14 Aug 2017 18:24
Profile WWW
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Так, а что нужно вообще из железа для этого? Я ненастоящий сварщик, но насколько я понимаю, нам надо:

1. Память (только на чтение, перемычки) исполняемых команд. Сколько её? 27 команд?
2. Указатель текущей инструкции, он же счётчик
3. Несколько регистров, по-минимуму два на чтение, один на чтение-запись.
4. АЛУ - его реализация зависит от выбранного набора команд

Что забыл?


15 Aug 2017 00:48
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18619
Location: Silicon Valley
Reply with quote
Можно пойти по пути микроконтроллеров - команда фиксированной длины (например 5 тритов), включающая в себя все необходимые параметры (2 трита код инструкции и 3 трита параметр)

NN (-4) - расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от знака результата и флага переноса и т.д.)
NO (-3) - передать управление на ttt (в будущем можно переключать сегменты через регистр R13)
NP (-2) - разнообразные skip-ы (см.ниже)
ON (-1) - выполнить универсальную унарную троичную операцию ttt над R1 (результат записать в тот же R1)
OO (0) - копирование регистров (см. далее)
OP (+1) - записать триаду в регистр R1
PN (+2) - записать триаду в регистр R2
PO (+3) - записать триаду в регистр R3
PP (+4) - записать триаду в регистр R4

Копирование регистров (можно начать с 4 регистров):
OONNN - скопировать R1 в R13
OONNO - скопировать R1 в R12
OONNP - скопировать R1 в R11
OONON - скопировать R1 в R10
OONOO - скопировать R1 в R9
OONOP - скопировать R1 в R8
OONPN - скопировать R1 в R7
OONPO - скопировать R1 в R6
OONPP - скопировать R1 в R5
OOONN - скопировать R1 в R4
OOONO - скопировать R1 в R3
OOONP - скопировать R1 в R2
OOOON - декремент R1 и установка флага заёма
OOOOO - нет операции
OOOOP - инкремент R1 и установка флага переноса
OOOPN - скопировать R2 в R1
OOOPO - скопировать R3 в R1
OOOPP - скопировать R4 в R1

OOPNN - скопировать R5 в R1
OOPNO - скопировать R6 в R1
OOPNP - скопировать R7 в R1
OOPON - скопировать R8 в R1
OOPOO - скопировать R9 в R1
OOPOP - скопировать R10 в R1
OOPPN - скопировать R11 в R1
OOPPO - скопировать R12 в R1
OOPPP - скопировать R13 в R1

P.S. 2-тритным инструкциям можно дать двухбуквенные названия, для упрощения программирования на гипотетическом ассемблере:
EX - расширение на будущее (NN)
JP - передать управление (NO)
SK - выполнить skip по разнообразным условиям (NP)
OP - выполнить унарную троичную операцию (ON)
RR - копирование регистров (OO)
R1 - записать триаду в R1 (OP)
R2 - записать триаду в R2 (PN)
R3 - записать триаду в R3 (PO)
R4 - записать триаду в R4 (PP)
параметр можно задавать десятичным числом, т.е. R1 -1 будет означать сохранить -1 в регистр R1, а RR -4 будет означать записать R1 в R4 (для подобных неочевидных команд можно нагородить макросов)

P.P.S. обозвать подобный "микроконтроллер" можно скажем TRIADOR ( изменник или предатель на испанском и португальском языках : )

TRIADOR-0 : 4 регистра без EX-инструкций и с 3-тритной шиной адреса
TRIADOR-1 : 13 регистров без EX-инструкций и с 6-тритной шиной адреса (R13 используется при передаче управления)
TRIADOR-2 : 13 регистров с 6-тритной шиной адреса и некоторым набором EX-инструкций (программируемых переключателями)
TRIADOR-3 : 13 регистров с 6-тритной шиной адреса и полным набором EX-инструкций (программируемых программно) и дополнительной памятью данных с 6-тритным адресом...

P.P.P.S. 18 ноября 2017 переименовал LD в RR, убрал упоминание флага знака (он ненужен), а также добавил в заголовок топика название этой архитектуры - надеюсь топикстартер не против ;)

P.P.P.P.S. 24 ноября 2017 нарисовал картинку для наглядности:

Image

Также опкод NPxxx стал skip-ами - SK (порядок команд изменён для отрицательной части в мае 2020):
Code:
      SK -13: skip if R4 <= 0
      SK -12: skip if R4 != 0
      SK -11: skip if R4 >= 0
      SK -10: skip if R3 <= 0
      SK  -9: skip if R3 != 0
      SK  -8: skip if R3 >= 0
      SK  -7: skip if R2 <= 0
      SK  -6: skip if R2 != 0
      SK  -5: skip if R2 >= 0
      SK  -4: skip if R1 <= 0
      SK  -3: skip if R1 != 0
      SK  -2: skip if R1 >= 0
      SK  -1: skip if  C == N
      SK   0: skip if  C == O
      SK   1: skip if  C == P
      SK   2: skip if R1 <  0
      SK   3: skip if R1 == 0
      SK   4: skip if R1 >  0
      SK   5: skip if R2 <  0
      SK   6: skip if R2 == 0
      SK   7: skip if R2 >  0
      SK   8: skip if R3 <  0
      SK   9: skip if R3 == 0
      SK  10: skip if R3 >  0
      SK  11: skip if R4 <  0
      SK  12: skip if R4 == 0
      SK  13: skip if R4 >  0

Вроде схемотехника вышеизложенного не должна быть сильно сложной и позволит сразу же задействовать условное ветвление например для циклов (decrement R1, skip if zero, jump)
Суть в том, что следующая инструкция подменяется на NOP (OOOOO) если условие выполняется

P.P.P.P.P.S. 17 декабря 2017 приаттачил текстовый файл на английском языке описывающий TRIADOR от haqreu (и в мае 2020 переаттачил с мелкими исправлениями)


Attachments:
triador-description.txt [2.95 KiB]
Downloaded 10 times
triador-instructions.txt [4.84 KiB]
Downloaded 9 times

_________________
:eugeek: https://twitter.com/Shaos1973
15 Aug 2017 02:48
Profile WWW
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Итого, для начала ты предлагаешь 5 регистров (один служебный, со флагом знака). Если память адресуется всего одним словом, то вся программа имеет максимум 27 пятитритных инструкций, так?

Правильно ли я понимаю, что условных джампов не предусматривается? Насколько нас это ограничивает?

И как будет организован ввод и вывод в таком компьютере? Хочется уметь опросить ввод и выдать вывод. Положим, с выводом всё просто, один из регистров (а то и все) просто показываем светодиодами. А что со вводом?

Надо попробовать запрограммировать хоть что-нибудь на таком ассемблере (ещё до железной реализации). Есть идеи что именно?


15 Aug 2017 03:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
haqreu wrote:
Положим, с выводом всё просто, один из регистров (а то и все) просто показываем светодиодами. А что со вводом?

Ну я так понимаю управление троичной логикой тумблерами здесь звучало - проще не придумаешь УВ.

haqreu wrote:
Надо попробовать запрограммировать хоть что-нибудь на таком ассемблере (ещё до железной реализации). Есть идеи что именно?

Я всегда считаю, что на свежеиспеченном недо-компьютере самая актуальная задача -
суметь ввести что-то с УВ и вывести это "что-то" на индикацию. :wink:

_________________
iLavr


15 Aug 2017 04:13
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Вопрос был не о форме тумблеров, а как эти тумблеры в память занести, является ли один из четырех регистров ридонли для процессора.


15 Aug 2017 04:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
haqreu wrote:
Вопрос был не о форме тумблеров,...

А я про "форму" тумблеров ничего и не говорил... :-?

_________________
iLavr


15 Aug 2017 04:37
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
Ххе, ну хорошо, ты говорил про форму устройства ввода :-)


15 Aug 2017 04:40
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Ну да: тумблеры - источник внешнего троичного сигнала, который заносится в троичный регистр.
Этот регистр для процессора только на чтение, ну а как иначе-то?

_________________
iLavr


15 Aug 2017 04:51
Profile
Maniac

Joined: 10 Mar 2017 06:30
Posts: 322
Reply with quote
А я не знаю, как ещё, потому и спрашиваю. Вот этот самый регистр только на чтение - он один из четырёх доступных, таким образом, только три регистра на запись?

Или же сделать устройство ввода видимым через ридонли память, ту самую, где располагаются инструкции? Таким образом остаются все четыре регистра свободными. Правда, чёткой реализации я пока не представляю :oops:


15 Aug 2017 05:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
По-моему, для начала надо сделать как проще - я это и предложил.
Один регистр чисто на ввод - нужен так или иначе.

Есть вариант - прицепить ввод прямо на внутреннюю шину без регистра.
Но мне кажется - это менее корректно в данном сучае...

_________________
iLavr


15 Aug 2017 05:11
Profile
Online
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18619
Location: Silicon Valley
Reply with quote
На копирование у нас 13 регистров - так что один из них может быть вводом-выводом (R5 например)

_________________
:eugeek: https://twitter.com/Shaos1973


15 Aug 2017 11:19
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 435 posts ]  Go to page 1, 2, 3, 4, 5 ... 29  Next

Who is online

Users browsing this forum: poststatist and 1 guest


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.