
Проектируем с нуля калькулятор на FPGA. Часть 6: CPU
← Четвёртая и пятая частиЭто самый длинный пост всей серии, потому что он посвящён главной части этого проекта — всё вращается вокруг CPU.Почему бы просто не взять готовый CPU?Кто-то может заявить: зачем заморачиваться...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: ← Четвёртая и пятая частиЭто самый длинный пост всей серии, потому что он посвящён главной части этого проекта — всё вращается вокруг CPU. Почему бы просто не взять готовый CPU? Кто-то может заявить: зачем заморачиваться проектированием собственного CPU?
Есть куча маленьких хорошо задокументированных процессоров и дешёвых микроконтроллеров, способных исполнять прошивку калькулятора. Zilog Z80 не так сложно реализовать на FPGA, и я в этом уже убедился (проект Z80, находящийся у меня на GitHub). Маленький встраиваемый RISC тоже прекрасно справится с этой работой.
Технические детали
Отвечу честно: это было бы не так интересно, потому что подобное уже много раз делали. Но есть и другие (более удобные для меня) причины. Наш калькулятор построен на BCD (двоично-десятичном коде),в котором каждый десятичный разряд хранится в отдельном 4-битном полубайте (ниббле).
Это правильный выбор для калькулятора, и он определяет всё дальнейшее. Z80 (и другие стандартные CPU) работает на уровне байтов. Для индексации регистра мантиссы из 16 нибблов с ориентированным на байты процессором пришлось бы постоянно жонглировать сдвигами, масками и двумя нибблами на байт.
На каждом шаге режимы адресации вступают в конфликт со схемой данных. Нам же нужен процессор, в котором 4 бита будут естественной единицей данных, где память адресуема по нибблам и где режимы адресации позволяют тривиально обходить мантиссу разряд за разрядом. Всего этого нет ни в одном CPU общего назначения, поэтому мы спроектируем собственный.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





