Эмулятор Специалист-М на FPGA

Давно хотелось написать полноценный эмулятор компьютера Специалист-М, созданного еще на заре IT-бума. Этот компьютер описывался серией статей в журнале Моделист-Конструктор в конце 80-тых. Построенный на основе процессора КР580ВМ80, с объемом памяти 64Кб, графическим режимом экрана 384*256 8 цветных точек, выделялся удачным решением видеовывода и виделся мощным решением.

Главным, и пожалуй единственным, мотивом цифровой археологии является желание посмотреть - как это было? Ну а триггером послужила недавняя публикация RTL дизайна процессора, который скальпировали и воссоздали по транзистору! Что избавляло от необходимости писать процессор.

Мне оставалось написать собственно сам компьютер. Я не стал повторять схемотенические авторские решения. Вместо оригинальной видеоразвертки с разрешением 384 на 256, которую мне не на чем было даже отобразить я просто сформировал из блочной памяти 64 Кб массив двухпортовой памяти. Первый порт отдал процессору для чтения и записи, а второй - отдал видеогенератору, который масштабирует поле 384 на 256 до 1536 на 1024 и центрирует его на пространстве 1920 на 1080. Процессор и его цепи тактируются от 100 МГц генератора. Видео тракт тактируется на частоте 148.5 МГц

Я не стал повторять и микросхему КР580ВВ55А, а вместо этого написал общий для всей периферийной схемотехники модуль. В него вошла работа с клавиатурой и порт для записи цвета в теневое ОЗУ. Да, параллельно адресному пространству ОЗУ где располагается видео память функционирует теневое ОЗУ для хранения 3 битов цвета для каждого отображаемого байта.

Последней трудностью стало то, что плата Digilent Atlys не очень расположена для подключения оригинальной матричной клавиатуры. Да и саму клавиатуру паять мне видится безумием. К тому же, есть еще одна, неочевидная, задача - заливка программного обеспечения в ОЗУ, которая предполагалась через... магнитофон. Я решил закрыть их разом - передавать события клавиатуры и заливаемые в ОЗУ программы через USB порт. То есть FPGA подключается к обычному компьютеру через USB. На компьютере запускается программа для захвата событий клавиатуры компьютера и отправки их в FPGA. Она же - читает прошивки ОЗУ и отправляет их в FPGA.

Дизайн дополнился решением fpgalink, новым клоком в 48 МГц и FIFO буфером для передачи команд между 48 МГц и 100 МГц частотными регионами.

В итоге эмулятор работает, возможно в 40 раз быстрее оригинального компьютера (я ограничил такт процессора до порядка 5 МГц). Жаль только запускать на нём практически нечего. Эпоха давно ушла. После Intel 8080 появится Intel 8088 который войдет в IBM PC/XT и уже на нём индустрия будет работать десятилетия.

PS: Репозиторий исходного кода


2019-06-08