Как я уместила научный калькулятор в треть дешёвой FPGA
Когда я только начинала этот проект, мне казалось, что создать калькулятор с нуля — задача для суперкомпьютера. Но вот передо мной отчёт о синтезе, и цифры говорят сами за себя: 1593 логические ячейки из 4608. Всего 35% чипа!
Что внутри
Разбирая проект по слоям, я дотошно оптимизировала каждый компонент:
• Сердце системы — CPU — заняло 1173 ячейки и 400 регистров
• Драйвер дисплея скромно уместился в 154 ячейки
• Сканер клавиатуры — всего 97
• Даже интерфейс для термопринтера потребовал лишь 64 ячейки
Самое удивительное — память. 12 блоков ушло на ROM микрокода (полная программа калькулятора!), 2 блока — на скриптовый движок, ещё по одному — на константы и таблицы умножения. И всего один блок на оперативную память.
Эврика!
Помню, как на первых этапах боялась, что ничего не влезет. Казалось, что для научных вычислений нужны гигабайты и терафлопсы. А оказалось — 49 тысяч бит на микрокод и 8 тысяч на скрипты.
Когда увидела итоговые цифры, не поверила глазам. Перепроверила трижды. Полноценный калькулятор с плавающей точкой, тригонометрией, логарифмами — и всё это в скромной FPGA за копейки.
Что дальше
Теперь, когда основной функционал работает, можно заняться доводкой. Хочу поэкспериментировать с энергопотреблением — возможно, удастся сделать ещё экономичнее. И конечно, пора подумать о корпусе — такой проект заслуживает не просто макетки, а чего-то основательного.
Если честно, я до сих пор не могу поверить, что всё получилось. Казалось бы, калькулятор — простая штука. Но когда делаешь его с нуля, понимаешь, какая это сложная и красивая система.