4-bit minimal

4-битные микроконтроллеры и микропроцессоры (прошлое, настоящее, будущее)

Moderator: Lavr

b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

4-bit minimal

Post by b2m »

Я тут подумал, насколько простым может быть 4-х битный процессор?
Как минимум будет:
- ПЗУ микрокоманд
- регистр адреса ПЗУ микрокоманд (регистр состояния)
- регистр(ы) адреса ОЗУ/ПЗУ
- ОЗУ
- ПЗУ
Получилось вот что:
Image

Как думаете, можно написать для этого микрокод, чтобы получился работающий процессор?

Как тут любят говорить: дискасс.

P.S. обновил картинку
Last edited by b2m on 10 Sep 2012 06:25, edited 1 time in total.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Немного пояснений.

Запись в область регистров (адрес ОЗУ 1111хххх) возможна лишь после предварительной установки адреса ОЗУ, а чтение - за один такт, путём установки adrsel.

Аккамулятора как такового нет, его роль, когда он нужен, будут играть младшие 4 бита регистра состояния. Если нужен перенос - используем ещё один бит.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

(Пожал плечами...) Попробуй...
Моя практика говорит, что то, что выглядит минимальным на блок-схеме,
в схемотехнике далеко не минимально вырисовывается... :-?
Блок-схемы обманчивы.

На данный момент я считаю схемотехнически минимальным, но пригодным
для реального практического применения
- Galactic Electronics 4 bit CPU.

Есть схемы проще - но это скорее уж макеты процессоров...

Вот я и планировал, что я самый простой, но работающий чуть-чуть усложню... :wink:
Оказалось - всё не столь просто. :-?
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Я немного не понял, что вот эта за цепь? (выделена контуром)

Image

Схемотехнически - что-то типа следующего?

Image

Но почему там 16 линий?

И что-то программный счетчик я нигде не вижу на блок-схеме... :(
iLavr
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:Я немного не понял, что вот эта за цепь? (выделена контуром)
Это адрес следующего состояния, адрес микрокода.
Lavr wrote:Но почему там 16 линий?
Не обязательно 16, если уложимся в меньшее количество состояний, то будет меньше.
Lavr wrote:И что-то программный счетчик я нигде не вижу на блок-схеме... :(
Все регистры в ОЗУ. В том числе и программный счетчик.

Я попробовал эмулировать такую систему. Вобщем - очень сложно писать микрокод. Слишком раздутый получается.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:
Lavr wrote:Я немного не понял, что вот эта за цепь? (выделена контуром)
Это адрес следующего состояния, адрес микрокода.
Lavr wrote:Но почему там 16 линий?
Не обязательно 16, если уложимся в меньшее количество состояний, то будет меньше.
Lavr wrote:И что-то программный счетчик я нигде не вижу на блок-схеме... :(
Все регистры в ОЗУ. В том числе и программный счетчик.
А какая это архитектура тогда?

Если ты затащил цепь адреса следующего состояния, значит у тебя переменная
длина команд?
Вобще в любительских конструкциях мне такое решение встречалось крайне редко...
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Это получается что-то типа сродни моему микрокодовому ядру в базовом "безалушном" варианте...
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

На данный момент у меня эмулируется 16-битное ПЗУ микрокоманд, т.е. на адрес следующего состояния отводится всего 8 бит. Сама микрокоманда выглядит так:

Code: Select all

nnnnnnnn h s ww dddd

nnnnnnnn - адрес следующего состояния (дополнится справа 4-мя битами из ОЗУ)
h - признак запрещения загрузки из ОЗУ, т.е. младшие 4 бита регистра состояния не меняются
s - выбор адреса adrsel
ww - разрешение записи одного из 4-х устройств
  00 - никуда
  01 - ОЗУ
  10 - we_a_lo
  11 - we_a_hi
dddd - выходные данные
Програмный счётчик и загрузка кода команды получились достаточно легко, а вот дальше... Выяснилось, что неудобно работать только с ОЗУ, нужны какие-то регистры для промежуточных данных. Простейшая команда загрузки в произвольный регистр (область ОЗУ F0-FF) поставила меня пока в тупик: нужен как минимум ещё один регистр адреса, т.к. имеющийся - постоянно используется для загрузки кода команды и операндов.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:Выяснилось, что неудобно работать только с ОЗУ, нужны какие-то регистры для промежуточных данных. Простейшая команда загрузки в произвольный регистр (область ОЗУ F0-FF) поставила меня пока в тупик: нужен как минимум ещё один регистр адреса, т.к. имеющийся - постоянно используется для загрузки кода команды и операндов.
Вот я тебе и сказал с самого начала - то, что элегантно в виде блок-схемы,
может быть весьма трудоёмким в схемотехнике.
На каждую линию или перекрестье магистралей, то регистр нужен, то
двунаправленный тристабильный шинный формирователь...

Но ты не ответил на 2 вопроса:
1. длина команд переменная?
2. какая предполагается архитектура?
iLavr
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:Но ты не ответил на 2 вопроса:
1. длина команд переменная?
2. какая предполагается архитектура?
1. нет, всё 4-х битное, и код команды, и операнды
2. сначала думал разделить код и данные, а потом подумал, что лучше оставить как у старины фон неймана.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:1. нет, всё 4-х битное, и код команды, и операнды.
Я про другое - все команды выполняются за одинаковое число циклов,
или - за 1... 2... 3... цикла?
b2m wrote:На данный момент у меня эмулируется 16-битное ПЗУ микрокоманд, т.е. на адрес следующего состояния отводится всего 8 бит.
В моём 4-bit-CPU 16-бит ПЗУ микрокоманд управляют ВСЕМ ЦПУ, и то линий не хватает... :-?
А тут 8 бит - на адрес следующего состояния... :o

Я почему и спрашиваю про длину команды в циклах - если все команды
выполняются за 1 цикл (выборка+исполенение) этот механизм фактически
не нужен.

И про архитектуру я не зря спросил: RISC-архитектура подразумевает
(по крайней мере в теории), что большинство операций выполняется на регистрах.
С памятью общение идёт через регистр-память. И это действительно упрощает как
схемотехнику, так и программирование микрокоманд, поскольку они становятся
равны по тактам и сводятся к смыслу: операнд - на шину, с шины - в регистр.
iLavr
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:или - за 1... 2... 3... цикла?
Размечтался. С такой нищебродской архитектурой в 20 бы уложиться. Одно лишь увеличение счётчика команд 4-6 тактов.
Lavr wrote:И про архитектуру я не зря спросил
Я не знаю, как называется архитектура, в которой программных регистров нет вообще, даже счётчика команд :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:Я не знаю, как называется архитектура, в которой программных регистров нет вообще, даже счётчика команд :)
Такой умный и не знаешь? :o Не верю!... (с) :roll: (щютка)

Есть регистровая архитектура, есть стековая, а есть архитектура типа память-память.
Выбери себе подходящую... :wink:
iLavr
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

Lavr wrote:Выбери себе подходящую
Дык не подходит ни одна :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:Дык не подходит ни одна :)
Ладно, отрывать автора от дела - глупо... как сделаешь, придумаем ему архитектуру... :D
iLavr