nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 14:05



Reply to topic  [ 255 posts ]  Go to page Previous  1 ... 12, 13, 14, 15, 16, 17  Next
4-bit Processor 
Author Message
Senior

Joined: 25 Jan 2015 11:38
Posts: 165
Location: 109.225.59.224
Reply with quote
Post 
Можно считать последнюю версию схемы отправной для разводки плат ?

_________________
Просто Александр.


02 Feb 2015 11:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Александр А. wrote:
Можно считать последнюю версию схемы отправной для разводки плат ?

Пока еще нет... никак не соберусь на последний рывок, чтобы закрыть этот вопрос.
Но все выложенные в открытый доступ варианты - рабочие.
Просто всё не совсем то, чего я в итоге хочу добиться.

_________________
iLavr


02 Feb 2015 11:57
Profile
Senior

Joined: 25 Jan 2015 11:38
Posts: 165
Location: 109.225.59.224
Reply with quote
Post 
Вроде бы разобрался. Интересно, может ли машина командовать чем-то сложнее светодиодов.

Заодно прямо в руки упали симпатичные клавишные переключатели от старой вычислительной техники. Пригодятся.

_________________
Просто Александр.


04 Feb 2015 09:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Александр А. wrote:
Вроде бы разобрался. Интересно, может ли машина командовать чем-то сложнее светодиодов.

Вполне может: лифтом, стиральной машинкой и всем другим, где не надо шибко много математики.
Ибо в оригинальном наборе инструкций только INR и DCR - а значит и сложение/вычитание - в циклах.

Главное, по поводу чего я тут копья ломал, так это нормальные вызовы подпрограмм
и косвенная адресация - этого очень не хватает в простых конструкциях, и что
является очень полезным для таких простых конструкций, на мой взгляд.

_________________
iLavr


04 Feb 2015 09:19
Profile
Senior

Joined: 25 Jan 2015 11:38
Posts: 165
Location: 109.225.59.224
Reply with quote
Post 
Вот и хорошо. Будем думать.

В соседней ветке EDUC-8 превосходит этот проект, но сколько там корпусов логики :-? ! Схемы у буржуев это вообще тихий ужас.

_________________
Просто Александр.


04 Feb 2015 22:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Александр А. wrote:
В соседней ветке EDUC-8 превосходит этот проект, но сколько там корпусов логики :-? !
Схемы у буржуев это вообще тихий ужас.

С учетом того что EDUC-8 урезанный до 8 бит вариант 12-битной PDP-8/S, так что в схеме видны
его атавизмы, всё не так уж проблематично.

Автор EDUC-8 старался опираться на широко доступную элементную базу, поэтому в схеме много
ЛА3, и если опираться на подходящую логику, то схемы там вполне приличные. А с учетом того,
что я не поленился их перерисовать по отечественному ГОСТ-у, то сборка всего проекта достаточно
проста с учетом того, что автор оригинала предусмотрел тестирование поблочно.

_________________
iLavr


05 Feb 2015 07:51
Profile
Senior

Joined: 25 Jan 2015 11:38
Posts: 165
Location: 109.225.59.224
Reply with quote
Post 
Медленно вырисовывается конструкция со сменными платами (одна?) и плата передней панели с переключателями, индикаторами и закладками на будущее. И, похоже, кое-где придётся "нищебродить" чуть дальше :lol: ЛА3 и ЛН1 "нищим" просто так не отдают.

_________________
Просто Александр.


10 Feb 2015 12:32
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post Re:
Lavr wrote:
По электрической схеме у меня, наконец, всё срослось!
И даже косвенная адресация получилась, на мой взгляд, нескольно необычно,
но довольно просто и эффективно.
Я Вам скажу честно, когда я наконец понял, что достиг тех схемных решений,
над которыми ломал тут голову, я вдруг ощутил - что тошнит меня уже от этой штуки. :-?

И я дал себе от неё отдых - позволив себе заняться чем-то другим...

Наткнулся я в своём компьютере на эти все материалы, посмотрел, прочитал и понял, что уже не тошнит, а даже интересно! :wink:
И собственный текст читается как чей-то посторонний, а значит к результатам можно теперь относиться критически...

Напомню, чем всё закончилось на предыдущем этапе: я пришел к выводу, что при той же сложности схемы, 8-битный
процессор позволяет сделать схему более эффективной и простой.
Решение, которое теперь положено в основу, это некоторая смесь из EDUC-8 и микро-ЭВМ типа MCS-48 (1816ВЕ48).
От EDUC-8 взята 8-битность и (если хотите и от PDP-8) та мысль, что никаких лишних регистров общего назначения
нам не нужно, раз уж у нас есть память. У MOS 6502, кстати, эта мысль также сквозит.
А от микро-ЭВМ типа MCS-48 (1816ВЕ48) взята мысль уложить КОП+АДРЕС в 2 байта, а не в одно слово, как я пытался ранее.

Аппаратно я достиг косвенной адресации даже проще чем в EDUC-8 - работа над ним мне очень помогла...
А проще вышло, поскольку косвенная адресация реализована не истинно, как в EDUC-8 и PDP-8 - т.е.
"взять адрес из ячейки и записать его в программный счетчик", а несколько более простым схемотехнически
способом, после которого я и понял, что достиг чего хотел, но без сильного усложнения схемы.

На данный момент у меня получилась следующая система команд, которая реализуется аппаратно весьма
просто всем тем аппаратным обеспечением, которое уже было здесь ранее отработано практически.

Image

Как видно - с адресом работает группа команд, для которых старший ниббл первого байта - это КОП (код операции),
а младший ниббл + следующий байт - это адрес 12 бит.
Когда старший ниббл достигает значений E и F - он становится префиксом.
Таким образом получаются два набора префиксных команд: с префиксом E - двухбайтовые, и тут я даже растерялся
от обилия возможностей - сиреневым цветом выделены команды, которые пока не определены... :D

Группа команд с префиксом F - однобайтовые, и тут все вроде уложилось по минимуму.

Image

Флаги для анализа: "нуль", "перенос" и "знак". Аппаратно и "четность" результата анализировать можно,
но тут как раз четность и не влезла в набор команд.

NEG = CMA + INR A - вызывает у меня сомнение в необходимости, но пока оставил...

Если кому-либо эта тема спартански-нищебродского аппаратно, но достаточно удобного для работы
с ним проца всё ещё интересна, готов выслушать все советы, пожелания и критические замечания.


PS. При "утряске" в железо система команд претерпела ряд изменений.
От некоторых команд пришлось отказаться для упрощения аппаратной
реализации.


Регистров всего два: А - аккумулятор, В - буфер считанного из памяти байта.
Они примыкают к АЛУ, но В выполняет еще и ряд функции манипуляции
с адресами.
Р - флаг четности числа, то есть, самый младший бит.
От СМР пришлось также отказаться с целью упрощения. В PDP-8 и EDUC-8 это
делают обычным вычитанием.

Цвета битов кода команды обозначают примерную дешифрацию групп и самих команд.

Image

_________________
iLavr


03 Jul 2015 05:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Система команд вновь подверглась "перетряске" по мере вписывания её в железо.
Причины таковы, что на сложную команду порой не хватает тактов цикла и приходится
разбить её на две.
Чтобы было понятно, в чем суть, к АЛУ теперь примыкают два регистра: А (аккумулятор)
и В (буфер считанного байта из памяти).
Поэтому операции типа ADD.SEG_ADDR - сложение А с содержимым ячейки памяти
выполняются как:
Code:
LDA.SEG_ADDR;   непосредственная загрузка MEM -> A
LDB.SEG_ADDR;   непосредственная загрузка MEM -> B
ADD_B


Я также переделал АЛУ согласно вот этим соображениям:
http://www.nedopc.org/forum/viewtopic.php?f=92&t=9386&start=120
и АЛУ сократилось до 11 корпусов!!! :kruto: Это вполне приемлемо для недо-ЦПУ!

Но негативные последствия следующие:
1. нельзя сделать CMP.SEG_ADDR и CPI_BYTE т.к. регистр А при вычитании разрушается.
Г-н Петренко предложил вычитать А из В для этих операций, но это усложняет АЛУ,
которое я так удачно упростил.
Думаю, не будет большим грехом делать CMP и CPI как в PDP-8:
Code:
STA.SEG_ADDR;   непосредственное сохранение A -> MEM
SUI_BYTE
LDA.SEG_ADDR;   непосредственная загрузка MEM -> A


2. Для упрощения АЛУ я исключил лишние манипуляции с флагом переноса С,
и теперь сложение и вычитание - всегда с учетом флага переноса С, как в 6502.
Но в 6502 это никому не мешало, поэтому для аппаратной простоты так и будет.

Ну и последнее: поскольку команды уже априори двухбайтные (однобайтной будет только
одна группа с префиксом), то неожиданно пришла в голову вот такая упрощающая мысль:
8 однобайтных команд SKIP Х можно заменить одной двухбайтной SKIP_BYTE ,
(где BYTE - флаги).

В результате всё уложилось как на картинке ниже, но вновь остались незадействованные коды
операций. Возможно, следует их использовать в механизме прерываний - над ним я пока не думал.

Хотелось бы услышать комментарии и, возможно, полезные предложения по системе команд.

Image

По вопросу схемы: полной схемы у меня сейчас и у самого нет. Работаю с тремя кусками:
АЛУ, узел микрокоманд, узел адресации. Они похожи на те решения, которые в топике
есть, но "вписывая" в железо команды, схемы приходится "подпиливать" на ходу. :D

Вот моё пожелание добавить INR A, DCR A, не изменяя B - это еще один вентиль в схему АЛУ
и еще одна линия, которой надо управлять посредством микрокоманд.


P.S. Но пока что вся схема предварительно укладывается в количество корпусов, меньшее 90.
Это, собственно, и вызывает мой энтузиазм: сделать лучше, чем EDUC-8/PDP-8 на меньшем
количестве корпусов.


P.P.S. При существующем железе можно добавить ROL и ROR регистра В.
А также IN и OUT - с регистром В, что мне кажется полезным для загрузки/выгрузки побайтной,
если в А - счетчик, не изменяющий состояние В.

_________________
iLavr


01 Aug 2015 04:48
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Мне вот почему-то подумалось, что пока может быть NOP'ы и оставить? Так вот с ходу сложно представить, чего было бы удобно.


02 Aug 2015 18:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Да я тоже уже склоняюсь к мысли, что может быть NOP'ы и оставить... :(
У 6502 тоже "пустых команд" было с избытком, причем они были даже не NOP'ы! :D
Но просто немного обидно - для 48 команд пришлось вести 2 префикса, и вдруг - NOP'ы и оставить... :-?

Я понимаю, что человеку "постороннему" трудно предложить что-то полезное неожиданно,
но просто я уже столько раз уложил команды в железо, что просто сразу представляю, во
что обходится реализация той или иной команды.

Поэтому "посторонний" взгляд на систему команд мне и нужен - типа как если кто-то смотрит,
как на готовое изделие и видит - не хватает "вот такой полезной команды".

Я вот до последнего момента не предполагал, что 8 однобайтных команд SKIP Х можно заменить
одной двухбайтной SKIP_BYTE, (где BYTE - флаги).
A пришел к такой мысли в личной беседе с г-ном Петренко, хотя он мне советовал SKIP
по любому из 8 битов аккумулятора, типа TEST BIT.

Так что "посторонний отвлеченный взгляд" для меня очень полезен!

_________________
iLavr


11 Aug 2015 16:15
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Может чтение-запись портов ввода-вывода добавить? И позиционировать это как микроконтроллер :)

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


13 Oct 2015 13:46
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Может чтение-запись портов ввода-вывода добавить? И позиционировать это как микроконтроллер :)

Sorry, не сразу заметил...
Так есть уже чтение-запись портов ввода-вывода системе команд:
INP_BYTE
OUT_BYTE

где BYTE - номер порта 0...256, команды работают с аккумулятором.

_________________
iLavr


05 Nov 2015 15:02
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Может чтение-запись портов ввода-вывода добавить? И позиционировать это как микроконтроллер :)

Sorry, не сразу заметил...
Так есть уже чтение-запись портов ввода-вывода системе команд:
INP_BYTE
OUT_BYTE

где BYTE - номер порта 0...256, команды работают с аккумулятором.

и точно :obye:

P.S. может команды изменения направления отдельных сигналов ввода-вывода сделать как в микроконтроллерах?

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


05 Nov 2015 16:42
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Вся неприятность, что вводимые команды должны как бы "вписаться в группу".
А группа - коп_byte .
В противном случае усложняется дешифрация, а этого не хотелось бы... :esad:

P.S. То есть получается такая неприятная вешь - если команда не влезла в свою группу,
от нее либо приходится отказаться, либо выкинуть из группы другую команду.
Это потому как неполностью микрокодовая реализация, частично хардверная.
Чтобы была полностью микрокодовая реализация - надо третье ПЗУ микрокоманд вводить,
а это более неприятно, чем лишний дешифратор.

_________________
iLavr


05 Nov 2015 17:55
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 255 posts ]  Go to page Previous  1 ... 12, 13, 14, 15, 16, 17  Next

Who is online

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