Одноплатный компьютер на Z80. Часть 1

Я увлекаюсь электроникой уже достаточно давно, и в основном мои интересы были связаны с радиоприемными и передающими устройствами. Собирал КВ приемники и передатчики, различные генераторы, частотомеры. Программировал микроконтроллеры Atmel для каких-то утилитарных задач вроде мигалки светодиодами или управления синтезатором частоты. Arduino UNO — так до сих пор рабочая лошадка. Но тем не менее весь интерес в основном крутился вокруг радио.

Два с половиной года назад я заинтересовался программированием, и, решив освоить что-то простое, взялся за Python. Попутно появилось желание расширить свои знания в области работы компьютера с самых его основ. Микроконтроллеры для этой цели не совсем подходили, поскольку их архитектура, представляющая собой процессор, ОЗУ, ПЗУ, устройства ввода-вывода, упакованные в один корпус, не позволяла взглянуть на работу процессора изнутри и досконально разобраться. Нужно было что-то более простое и основополагающее.

В поисках подходящего для себя материала я наткнулся на 4-битный процессор TD-4:

— ссылка на Гитхаб: https://github.com/wuxx/TD4-4BIT-CPU?ysclid=mk6b8drmhv370966218

— исчерпывающее описание на Хабр: https://habr.com/ru/companies/ruvds/articles/742466/?ysclid=mk6vs8rvy8340831492

Процессор TD-4

На дискретной логике, сумматорах, дешифраторах собраны основные узлы процессора (АЛУ, регистры, блок декодирования команд, ввод-вывод), а также собранное на механических DIP переключателях оригинальное ПЗУ. По-моему просто гениально! Я не собирал его в натуре, а сделал модель в Proteus. Все заработало, хоть и не с первого раза. Этот проект вполне подойдет для ознакомления с основными узлами процессора и принципами их совместной работы.

Есть еще несколько аналогичных по конструкции проектов разной степени сложности, ссылки на которые приведу ниже (список не исчерпывающий!). Данные конструкции лично не собирал и не моделировал, знакомился только с описанием:

— 4-битный процессор MP-4 (https://www.instructables.com/Simplest-4-Bit-TTL-CPU/).

— Процессор на дискретной логике «Big mess of wires» (https://www.bigmessowires.com/bmow1/). Судя по писанию монструозная конструкция процессора с большим количеством проводов (откуда, собственно, и такое название), которая, тем не менее, вполне себе работоспособна.

Процессор Big Mess of Wires

— Процессор «Simple as possible» (SAP-1) (https://github.com/KarenOk/SAP-1-Computer?ysclid=mk6wm79jb990278743). Собран в виде модели в симуляторе логических схем Logisim. Есть несколько версий проекта SAP-1, SAP-2, SAP-3, отличающихся архитектурой и набором команд.

Процессор SAP-1

Далее в поисках других интересных конструкций я наткнулся на проект NAND-TO-TETRIS (https://www.nand2tetris.org/). Детище двух профессоров из Израиля — Ноама Нисана (Noam Nisan) и Шимона Шокена (Shimon Schocken). Проект состоит из двух курсов — создание модели процессора (Hardware) и написание программного обеспечения для него (Software).

Процессор NAND-TO-TETRIS

В первом курсе из базовых строительных блоков дискретной логики (элементов AND, OR, NOT) путем моделирования постепенно создаются и связываются друг с другом основные элементы процессора (АЛУ, регистры, ПЗУ, ОЗУ и т. д.). Также в курсе предлагается и объясняется простая система команд процессора, и далее для нее дается задание по написанию ассемблера.

Второй курс посвящен написанию виртуальной машины для процессора — интерпретатора языка высокого уровня в язык низкого уровня (ассемблер), компилятора и упрощенной операционной системы на базе созданного процессора.

Оба курса снабжены очень подробными печатными и видео материалами, все расписано и разжевано. Есть даже книжное издание.

Поскольку весь проект изначально заточен только на программную реализацию, то с микросхемами, платами и паяльником возиться не придется. В ходе освоения курса потребуется освоить язык описания аппаратуры интегральных схем HDL, а для написания ассемблера, и остальных программ со второй части курса — использовать любой другой язык программирования.

Я прошел полностью первый курс, собрал процессор, написал для него ассемблер на Python, начал писать виртуальную машину из второй части курса и где-то тут мой запал угас…. Я понял, что хочу изучать не виртуальные команды для процессора и городить интерпретатор для него, а окунуться в реальное железо. Хотя если довести дело до конца, результат будет весьма впечатляющим. Авторы проекта на своем сайте приводят примеры законченных проектов NAND-TO-TETRIS своих учеников — там и графические приложения, и математические расчеты, и даже игры. В общем для погружения в тему весьма советую!

И вот тут наконец я подобрался к своему первому 8-битному компьютеру на процессорах 70-х — 80-х годов. О нем в следующем посте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *