nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 16 Dec 2017 14:39



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

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


13 Aug 2017 08:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15910
Location: Colorado
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: 224
Reply with quote
Подробности! Сколько памяти, сколько и каких команд?


14 Aug 2017 12:43
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15910
Location: Colorado
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: 224
Reply with quote
Так, а что нужно вообще из железа для этого? Я ненастоящий сварщик, но насколько я понимаю, нам надо:

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

Что забыл?


15 Aug 2017 00:48
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15910
Location: Colorado
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
OOPON - скопировать R1 в R7
OOPOO - скопировать R1 в R6
OOPOP - скопировать 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 (изменник или предатель на испанском и португальском языках : )
TRIADOR1 - 4 регистра без EX-инструкций и 3-тритной шиной адреса
TRIADOR2 - 13 регистров с EX-инструкцией пропуска следующей команды в зависимости от значения флага знака и 6-тритной шиной адреса (R13 используется при передаче управления)
TRIADOR3 - 13 регистров с 6-тритной шиной адреса и полным набором EX-инструкций

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

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

Image

Также опкод NPxxx стал skip-ами - SK:
Code:
NPNNN - skip_if_not_negative_r4
NPNNO - skip_if_not_zero_r4
NPNNP - skip_if_not_positive_r4
NPNON - skip_if_not_negative_r3
NPNOO - skip_if_not_zero_r3
NPNOP - skip_if_not_positive_r3
NPNPN - skip_if_not_negative_r2
NPNPO - skip_if_not_zero_r2
NPNPP - skip_if_not_positive_r2
NPONN - skip_if_not_negative_r1
NPONO - skip_if_not_zero_r1
NPONP - skip_if_not_positive_r1
NPOON - skip_if_borrow
NPOOO - skip_if_no_overflow
NPOOP - skip_if_carry
NPOPN - skip_if_negative_r1
NPOPO - skip_if_zero_r1
NPOPP - skip_if_positive_r1
NPPNN - skip_if_negative_r2
NPPNO - skip_if_zero_r2
NPPNP - skip_if_positive_r2
NPPON - skip_if_negative_r3
NPPOO - skip_if_zero_r3
NPPOP - skip_if_positive_r3
NPPPN - skip_if_negative_r4
NPPPO - skip_if_zero_r4
NPPPP - skip_if_positive_r4

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

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


15 Aug 2017 02:48
Profile WWW
Maniac

Joined: 10 Mar 2017 06:30
Posts: 224
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: 224
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: 224
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: 224
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
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15910
Location: Colorado
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   [ 339 posts ]  Go to page 1, 2, 3, 4, 5 ... 23  Next

Who is online

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