Микрокодовое ядро на ПЗУ (nedoPC-27)

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Микрокодовое ядро на ПЗУ (nedoPC-27)

Post by Shaos »

Раздумывая над двоичным ядром троичного компьютера у меня родился план по созданию универсальной платы для реализации не очень сложных процессоров (включая 8080 и 6502) с использованием микрокода. Получающейся устройство предполагается назвать nedoMicro-64 (64, т.к. оно может иметь на борту до 64K 64-битных микрокоманд).

Сердцем устройства является ПЗУ до 512K. Каждая микрокоманда вычерпывается из ПЗУ за 8 шагов, загружаясь в 8 8-битных регистров (всего 64 бита). Это значит, что применив скажем 80 нс память мы получим скорость работы максимум 1.5 МГц. С учётом того, что одна команда "эмулируемого" процессора занимает несколько микрокоманд - внешняя скорость процессора будет ещё ниже в разы. Но думаю, что для начала это терпимо.

Кроме того плата будет содержать 4 24-битных регистра (каждый из которых представляется тремя 8-битными), а также один 8-битный регистр, через который будут осуществляться все 1-байтовые пересылки изнутри и снаружи. Прямая адресация внешней памяти при этом будет составлять 2^24=16MB.

P.S. Из 64 бит микрокоманды первые 24 будут отданы под внутренние нужды (адрес следующей команды и внутренние биты управления), а оставшиеся 40 - будут отданы "пользователю". Если память будет меньше - скажем 2К (256 микрослов), то один 8-битный регистр внутренних нужд будет также освобождён для пользователя (т.е. пользователь получит уже 48 бит на одну микрокоманду).

P.P.S. Промежуточные варианты, когда этот регистр частично используется для внутренней адресации, а частично - пользователем, также возможны.
Last edited by Shaos on 02 Oct 2012 20:15, edited 4 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Сердцем устройства является ПЗУ до 512K. Каждая микрокоманда вычерпывается из ПЗУ за 8 шагов, загружаясь в 8 8-битных регистров (всего 64 бита). Это значит, что применив скажем 80 нс память мы получим скорость работы максимум 1.5 МГц. С учётом того, что одна команда "эмулируемого" процессора занимает несколько микрокоманд - внешняя скорость процессора будет ещё ниже в разы. Но думаю, что для начала это терпимо.
С другой стороны вместо одной ПЗУ 512К, счётчика и 8 регистров можно поставить восемь ПЗУ 64К, которые будут работать в параллель. В этом случае скорость будет в 8 раз больше - 12 МГц при 80 нс и 5 МГц при 200 нс памяти, однако программирование кучи ПЗУх будет гораздо неудобнее программирования одной большой...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
fifan
Devil
Posts: 913
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Post by fifan »

Второй вариант намного лучше.
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

fifan wrote:Второй вариант намного лучше.
Зато первый программировать проще :)
Можно первый вариант использовать для разработки, а второй - для реального использования
Ещё один вариант - иметь одно ПЗУ, но по включению его содержимое заливается в 8 работающих параллельно ОЗУ - схема при этом правда будет тяжелее...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:Сердцем устройства является ПЗУ до 512K. Каждая микрокоманда вычерпывается из ПЗУ за 8 шагов, загружаясь в 8 8-битных регистров (всего 64 бита). Это значит, что применив скажем 80 нс память мы получим скорость работы максимум 1.5 МГц. С учётом того, что одна команда "эмулируемого" процессора занимает несколько микрокоманд - внешняя скорость процессора будет ещё ниже в разы. Но думаю, что для начала это терпимо.
С другой стороны вместо одной ПЗУ 512К, счётчика и 8 регистров можно поставить восемь ПЗУ 64К, которые будут работать в параллель. В этом случае скорость будет в 8 раз больше - 12 МГц при 80 нс и 5 МГц при 200 нс памяти, однако программирование кучи ПЗУх будет гораздо неудобнее программирования одной большой...
На самом деле 8 регистров всё равно будут нужны...

P.S. Из видимых плюсов параллельного исполнения видится возможность наращивать девайс фактически безгранично - просто добавляем ещё одно параллельное ПЗУ (с регистром) каждый раз, когда нам нужно расширить микрокоманду дополнительными 8-ю байтами
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
fifan
Devil
Posts: 913
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Post by fifan »

Shaos, хотя бы приблизительную схему проекта не нарисуешь?
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

fifan wrote:Shaos, хотя бы приблизительную схему проекта не нарисуешь?
Надо из тетрадки в игл перенести :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
fifan
Devil
Posts: 913
Joined: 06 Oct 2006 03:17
Location: г.Лянтор,Сургутского р-на,ХМАО

Post by fifan »

У меня до фига УФ пзушек и логики. Можно на них что-нибудь собрать?
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

fifan wrote:У меня до фига УФ пзушек и логики. Можно на них что-нибудь собрать?
У меня тоже - думаю сделать посадочные места для ПЗУ-х универсальными - любые стандартные от 2К до 64К чтобы втыкались
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16712
Joined: 21 Oct 2009 08:08
Location: Россия

2_Shaos

Post by Lavr »

Shaos wrote:Надо из тетрадки в игл перенести
Сунул бы тетрадку в сканер.... :wink: , а то пока еще ты всё перерисуешь...
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: 2_Shaos

Post by Shaos »

Lavr wrote:
Shaos wrote:Надо из тетрадки в игл перенести
Сунул бы тетрадку в сканер.... :wink: , а то пока еще ты всё перерисуешь...
Да там непонятно будет постороннему наблюдателю - половина соединений у меня в голове находится. Надо скорее детальную схему перенести в компьютер, а то скоро она и мне непонятна будет :roll:

P.S. Решил тут я, что это микрокодовое ядро вполне может стать самостоятельным вычислителем с шириной микрокодового слова в 32 бита (16 бит адрес следующей команды, 8 бит управления и 8 бит выходных данных, которые замкнуты на вход 8-битового регистра T0), причём с возможностью неограниченного расширения. А это значит, что его уже можно назвать nedoPC, а номер ему можно дать 27, т.к. оно будет построено на ПЗУ с ультрафиолетовым стиранием 27c... - т.е. "официальное" имя сего поделия - nedoPC-27.

P.P.S. Пока определился с базовым набором микросхем:
4 x 27C512 - ПЗУ;
5 x 74LS574 - 8-битные регистры;
3 x 74LS174 - 6-битные регистры со сбросом;
6 x 74LS670 - ОЗУ на 4 x 4-битных слова;
10 x 74LS157 - 4-битовый мультиплексор 2:1;
1 x 74LS139 - сдвоенный дешифратор 2:4;
1 x 74LS74 - два D-триггера с входами сброса и установки;
и немного мелкой логики (в основном 74LS00) - т.е. уже более 30 корпусов.

P.P.P.S. Схема наращивается путём присоединения одного ПЗУ 27C512 и одного регистра 74LS574 для каждых дополнительных 8 битов микрокодового слова.
Last edited by Shaos on 15 Sep 2010 05:27, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 910
Joined: 26 May 2003 06:57

Post by b2m »

А какое будет ALU? Какие операции будут предусмотрены? И на какой базе?
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:А какое будет ALU? Какие операции будут предусмотрены? И на какой базе?
ALU юзер будет цеплять сам :)

А в базовой "безалушной" конфигурации девайс будет представлять из себя некую железную реализацию машины Тьюринга (правда без возможности собственного перепрограммирования), на которой можно делать некоторые вычисления, путём хитрого программирования ПЗУх :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 910
Joined: 26 May 2003 06:57

Post by b2m »

Как это без ALU? Для условных команд необходимо как минимум вычитание, иначе что анализировать-то? А для вычислений нужны как минимум сложение и вычитание, побитная логика и сдвиг тоже не будут лишними.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Shaos
Admin
Posts: 24099
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:Как это без ALU? Для условных команд необходимо как минимум вычитание, иначе что анализировать-то? А для вычислений нужны как минимум сложение и вычитание, побитная логика и сдвиг тоже не будут лишними.
А кто сказал, что условные команды безусловно нужны? ;)

Естественно, что для "эмуляции" 8080 или 6502 нам понадобятся некоторые схемотехнические расширения, однако для каких-то простых вещей базовой конфигурации должно хватить - я наверное в ближайшем будущем напишу эмулятор этого дела и попробую попрограммировать в базовой конфигурации...
Я тут за главного - если что шлите мыло на me собака shaos точка net