Сегодня трудно удивить одноплатными компьютерами — рынок полон готовых решений от Raspberry Pi до Arduino. Но что, если одноплатная система станет ещё компактнее, а её архитектура — оригинальной? В этой статье я расскажу об инженерных особенностях Mir’s project — проекте, направленном на создание одноплатных ЭВМ. Пока это инженерный прототип и концепция, но я вижу его потенциал — от встраиваемых систем до обучающих платформ.
Зачем?
Мне хочется создать устройство компактнее и гибче существующих одноплатных ЭВМ, но с собственной архитектурой.
Описание
Целевые габариты платы: 20 x 30 мм
9 шт. для подключения периферии
9 шт. неопредленного назначения (GPIO пины)
Разъем для microSD
Микроархитектура
На диаграмме ниже представлена упрощенная блок-диаграмма микроархитектуры чипа. В отличие от традиционных синхронных систем, архитектура данного чипа в отдельных модулях минимизирует зависимость от тактового генератора. Это позволяет снизить задержки между блоками, сократить количество стадий конвейера и потенциально ускорить выполнение инструкций, поступающих из блока fetch unit.
Архитектура предусматривает наличие MMU (Memory Management Unit), который координирует обращение к памяти между блоком выборки инстуркций, регистровым файлом и видео ядром. Это позволяет реализовать ассоциированное адресное пространство и избежать "гонок" за данными.
Если MMU выбирает между запросами от fetch unit и register file, приоритет отдается последнему и fetch unit "откладывается". Это обусловлено тем, что доступ к данным из register file критичен для завершения текущей инструкции, тогда как выборка следующей инструкции может быть безопасно отложена — это предотвращает ситуацию, при которой следующая инструкция начнёт выполняться до результата предыдущей.

Адресное пространство
На диаграме ниже представлено разделение адресного пространства RAM на пространство видео ядра и на «основное».
Данное разделение обусловлено размером кадра — 20 кБайт (в моей архитектуре 1 байт = 8 бит).

Instruction set
На изображении ниже представлен instruction set, который поддерживает декодер процессора.
Всего реализовано 14 инструкций.
Получение остальных логических операций реализуемо программно через комбинацию «И», «ИЛИ» и «НЕ».

HDL
Сейчас проект на этапе описания чипа с помощью HDL Verilog. Упор идет на ослабление зависимости аппаратных блоков от тактового сигнала.
Описаны модули: alu, clockGenerator, fetchUnit, instructionSplitter, mmu, orchestrator, ram, registerFile, shifter, videoCore.
Чип конвертер
В рамках проекта прорабатывается концепция внешнего видеоконвертера — отдельного модуля, обеспечивающего интерфейс между ЭВМ и устройством отображения. Конвертер принимает видеоданные, передаваемые по последовательному каналу (например, SPI), выполняет преобразование потока в формат, совместимый с параллельным интерфейсом дисплея или иным протоколом.
Подобная архитектура позволяет разгрузить основную ЭВМ, минимизировать количество используемых GPIO-пинов и сохранить минимальные размеры платы. Кроме того, вынос видеовыхода в отдельный чип открывает возможность гибкой адаптации под разные типы экранов без изменения логики самой ЭВМ.

Продукт
Для наглядности представлены рендеры 3D-модели предполагаемой аппаратной реализации.



Заключение
Сейчас Mir’s project находится на этапе активной разработки. В ближайших планах — завершить этап описания аппаратуры на HDL, перейти к следующему — построение логических схем.
В следующих публикациях я планирую дополнить информацию о проекте, рассказать о продвижении. Буду рад услышать ваши мысли, вопросы и советы — пишите в комментариях.
Спасибо за внимание!
Комментарии (7)
ncix
19.05.2025 08:19А какие практические применения этой платформе вы видите? В каких задачах она покажет свои преимущества?
ncix
19.05.2025 08:19И второй вопрос - как вы видите жизненный цикл этой разработки? Как перейдете к серии, где будете производить? Есть ли понимание конечной цены устройства?
eugenk
Вопрос по схемотехнике. Очевидно на плате будет хотя бы два чипа. FPGA, на которой реализован процессор, и какая-то память (SRAM, SDRAM и т.п.). Память (современная во всяком случае) имеет шину данных с тремя состояниями. Очевидно она должна подключаться к FPGA. При операции чтения ноги FPGA переходят в высокоимпедансное состояние и принимают информацию из памяти. При операции записи на них выводится информация, записываемая в память.
Проблема в том, что при ошибочном программировании FPGA, может оказаться так, что память выбрана для чтения, а ноги FPGA не перешли в высокоимпедансное состояние. Если при этом логические уровни на одной линии со стороны FPGA и памяти разные, между ними потечет ток, через практически нулевое сопротивление линии. Что приведет к повреждению одного или обоих чипов. Вешать на каждую линию токоограничивающие резисторы не вариант, ибо сильно замедляет быстродействие интерфейса. Спрашивается, как Вы предполагаете решать эту проблему ??? Вариант "не надо так ошибаться" не устроит. Ибо при программировании (и на верилоге в том числе !) ошибки неизбежны. И очень не хотелось бы иметь угрозу ошибок, приводящих к выходу из строя аппаратуры.
nckma
Не знаю, какой чип использует автор, но я бы для такого проекта брал китайскую FPGA Gowin. Типа такого, как в плате Tang-Nano или Марсоход3GW2.
В чипе уже есть встроенная память PSRAM 8 мегабайт.
Да и HDMI вполне работает на таком чипе при невысоких разрешениях типа 1280x720.
И процессор picoRV (RISC-V) тут еже работает.
eugenk
Ну она маленькая совсем, 8640 LUT, да ещё 4-входовых. А у мужика похоже планы довольно обширные. Впрочем могу и ошибаться, описание сейчас не слишком подробное.
olartamonov
То есть вопроса, где на этой плате умещается — и умещается ли — подсистема питания, кварц, всякая иная мелкая обвязка, у вас не возникает? :) У меня вот даже к размещению второго чипа (что это? ОЗУ? eMMC? по пропорциям похоже на второй) вплотную к краю платы вопросы уже есть.
Это пока не проект, это от балды нарисованная картинка.
eugenk
Ну почему, если двусторонний монтаж, то может быть. Хотя платка согласен, маловата