4-bit Processor

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

Moderator: Lavr

User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Lavr wrote: 30 Dec 2018 08:42Ну и поскольку мне совершенно неизвестно было, поместится этот проект в ПЛИС, или не поместится,
я решил проверять его в ПЛИС по отдельным блокам, чтобы удостовериться в итоге, что полезет в ПЛИС,
а что придётся оставить снаружи.
В общем прицеливался-прицеливался я чужими проектами ЦПУ в свою ПЛИС EPM3256ATC144-10N, имеющую 256 ячеек, но ничего не полезло... :(
Однако опыт - сколько и чего и куда влезает я всё же приобрёл, вместе с уверенностью, что мой процессор в мою ПЛИС влезть должен! :kruto:

И начал я его упихивать в ПЛИС! А он вдруг хорошо полез! :o
Но не все мои схемотехнические изыски на ТТЛ-рассыпухе компилятору ПЛИС по нутру, поэтому приходится схемотехнику внутри ПЛИС менять и я сразу же проверяю изменения в проекте Proteus.

На данный момент упихиваемая в ПЛИС схема примерно вот такая:
4_Bit_CPU2016_6CPLD3.png
Я заменил индикатор на LCD 1602 поскольку индикатор от Nokia 3310 графический и жрёт много памяти, а её и так всего 4096 Байт, если не переключать блоки... :-?
4_Bit_CPU2016_6CPLD31.png
И что меня особенно на подвиги вдохновило - ПЗУ МИКРОКОМАНД ОБЕ ШТУКИ УДАЧНО СВЕРНУЛИСЬ ВНУТРЬ ПЛИС! :o
А я изначально планировал подвесить ПЗУ МИКРОКОМАНД снаружи... но пригляделся - это они на схеме большие - других поменьше в Proteus не нашлось.
Реально же микрокоманды занимают 256 байт, где процентов так 30 - нули! :idea:
ROM0-1.png
И я решил ПЗУ программ тоже обрезать до 256 байт и свернуть внутрь ПЛИС, чтобы сразу то, что получается в проекте тестировать прямо в MAX+PLUS II без дополнительного софта. :wink:

Пока всё получается удачно! :idea:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Вот так выглядело АЛУ в ПЛИС по состоянию сутки назад:
ALU.png
Вот так выглядит тест 5 + 3 = 8 :wink:
ТЕСТ-1.png
Ну и поскольку в мою ПЛИС это всё лезет и лезет пока, я решил и ОЗУ 4 Бит х 16 тоже рискнуть упихать в эту ПЛИС... :rotate:
RAM-16X4.png
Скомпилировалось ОЗУ без замечаний, а вот влезет ли в проект процессора - пока не знаю... :-?

Буду посмотреть... 8)
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Ну и если кто-либо балуется моей моделью 4-bit Processor под Proteus,
то с индикатором 16х2 всё работать по идее должно, если подрисовать
в проект индикатор, как показано на общей схеме выше.

Image

Вот код программы под эту затею:
4_Bit_CPU_LCD1602.zip
Я очень тужился влезть в 512 Байт, в надежде свернуть этот код в ПЛИС.
Тогда снаружи ПЛИС был бы лишь индикатор и 4 кнопки...

Но пока вышло только 686 Байт. :-?

Отсутствие полноценных CALL-RET код весьма раздувает. :neutral:
А вот хоть и убогая, но косвенная адресация к массиву очень помогла! :kruto:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Lavr wrote: 24 Nov 2025 12:31 Ну и если кто-либо балуется моей моделью 4-bit Processor под Proteus,
то с индикатором 16х2 всё работать по идее должно, если ...
Да, действительно, старый вариант с диодным дешифратором и проводным "или" на ОК - работает! :kruto:
4_Bit_CPU2016_2.png
Причем работает очень шустро! Зело быстрее, нежели вариант, расточенный под ПЛИС! :o
Ну... компонентов меньше и схема проще... :ebiggrin:

Кто всё же хочет поиграться, ниже - архив проекта с вложенным исходником и ассемблером:
4_Bit_CPU_LCD1602.zip
Вдруг кто сумеет уложиться в 512 байт... :obye:

P.S. Там по низу листа надпись - это неожиданно обнаруженная ошибка Proteus.
На работу схемы здесь не влияет, но чуть не сломала мне башку в ПЛИС!
:lol:
You do not have the required permissions to view the files attached to this post.
iLavr
imsushka
Doomed
Posts: 356
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: 4-bit Processor

Post by imsushka »

Lavr wrote: 24 Nov 2025 11:46 И я решил ПЗУ программ тоже обрезать до 256 байт и свернуть внутрь ПЛИС, чтобы сразу то, что получается в проекте тестировать прямо в MAX+PLUS II без дополнительного софта. :wink:

Пока всё получается удачно! :idea:
как ты смог поместить 1024 бита памяти (256*8) в плисину у которой всего 256 тригеров ????????

давай показывай стенд.
User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

imsushka wrote: 24 Nov 2025 21:01как ты смог поместить 1024 бита памяти (256*8) в плисину у которой всего 256 тригеров ????????

давай показывай стенд.
Я ожидал этого вопроса и собирался осветить его подробно.

Но как я дальше увидел, всех вполне удовлетворило бесполезное, на мой взгляд, лицезрение стенда и дальнейшая дискуссия вокруг этого. :(

Кому же действительно суть вопроса интересна, я творчески воплотил в ПЛИС очень давнюю идею, обсуждение которой проходило в ветке Hardwared vs Softwared.
И в конкретной реализации этой идеи великолепно помог компилятор пакета MAX+plus II! :kruto:
iLavr
User avatar
Lavr
Supreme God
Posts: 16858
Joined: 21 Oct 2009 08:08
Location: Россия

Re: 4-bit Processor

Post by Lavr »

Lavr wrote: 24 Nov 2025 11:46На данный момент упихиваемая в ПЛИС схема примерно вот такая:

Image
Полностью придерживаясь этой схемы, я и запихиваю всё в проект на ПЛИС...
4-bit-cpu.png
Всё же я конструировал 4-bit Processor именно как синхронную схему, но как выяснилось, полностью синхронный дизайн в ПЛИС предъявляет к схемотехнике более строгие требования:
http://www.nedopc.org/forum/viewtopic.php?p=181424#p181424

И когда я впихнул в проект ОЗУ 4 Бит х 16 заполнение ПЛИС достигло объёма под 90%, полезли глюки, о которых предупреждали разработчики Altera:
http://www.nedopc.org/forum/viewtopic.php?p=181515#p181515

На схеме выше видно, что я откатил назад и оставил из всего ОЗУ только R15 - регистр косвенной адресации, но и общего назначения.
Попробую протестировать весь функционал с одним регистром. Если пройдёт успешно, то удалю из проекта память программ, сделаю её внешней, а ОЗУ 4 Бит х 16 попробую воткнуть заново, т.к. место освободится.

Но для внешней памяти программ понадобится аппаратный загрузчик, над которым я как раз и поработал! :kruto:

Ну и надо внимательно просмотреть схему на предмет добавить ей местами больше синхронности. Такие планы...
You do not have the required permissions to view the files attached to this post.
iLavr