Обновить

Комментарии 25

А я в майнкрафте свой 4-ёх битный процессор так и не достроил…
Я там только АЛУ начинал строить. Забросил на моменте, когда понял, что будет куча «копипаста» вручную по одному блоку. Хотя, проблему копипаста можно решить через моды админки.
WorldEdit-ом копипаст легко реализуется
Офигенно круто! и настолько же не понятно… )
Чего я и боялся. :)
Хотелось и уместиться в объем статьи, и при этом сделать что-то более-менее законченное.

Хм, как всегда хорошая мысля, приходит опосля. Надо было начать статью с рассказа о конечных автоматах и раскрутить их идею до уровня процессора.
какие книги бы вы могли порекомендовать для новичка в этой области (vhdl и дизайн железа). На английском — ok.
Бибило П.Н. — Основы языка VHDL (поможет разобраться с синтаксисом.)
Лично мне понравился Pong P. Chu:
1)RTL Hardware Design Using VHDL
2)FPGA Prototyping by VHDL Examples
Целью статьи было показать, что процессор можно написать самому

Совершенно не знаком с разработкой чипов, потому есть нубский вопрос: а что должно получиться в результате написания процессора? Его топография, которую сдают «китайцам» и они штампуют процессоры?

P.S. Помнится сильно мечтал в детстве о процессоре с двумя аппаратными стеками как раз для реализации Forth-машины — очень тогда Forth-понравился.
В результате трансляции проекта получается файл, который можно залить в ПЛИС(раз, два).

Взгляд на проект с высоты птичьего полета:
один
два

Можно протестировать уже на вполне реальном железе, а потом отдать на перевод в кремний (и впоследствии «китаю» на производство).
VHDL-код (если он удовлетворяет критерию «синтезируемости») в конечном итоге может быть преобразован в принципиальную схему, где будут триггеры и логические элементы, а из этой схемы можно уже сделать топологию кристалла, то есть расположить на кристалле элементарные ячейки и нарисовать разводку между ними.
Пара полезных ссылок из закладок (только там примеры на Altera HDL):

* Проектирование конфигурируемых процессоров на базе ПЛИС
www.kit-e.ru/articles/plis/2006_2_78.php
* Микропроцессор своими руками.
www.kit-e.ru/articles/cpu/2002_06_80.php
Тащемта, автор статей по первой ссылке является непосредственным научным руководителем автора данной статьи. =)
Сколько MIPS и на какой частоте заработает на вашей FPGA?
Ответил чуть ниже.
Заметил у вас синхронный сброс, хорошо что вы знакомы с xilinx recommendation.

Чтобы развить идея остаётся добавить прерывания, перейти на популярную шину (к примеру Wishbone), добавить контроллер динамической памяти и дельной периферии. А там уже и не далеко портировать ОС реального времени.

Ступеней конвейера тоже можно доделать.
А что, если выборку делать по фронту, а исполнение по спаду? Тогда будет один такт на команду вместо двух.
Говорят, еще иногда юзают смещенные по фазе тактовые сигналы (одной и той же частоты), чтобы получить подтакты, но в реальности с таким я не сталкивался.
А смысл? Проще повысить частоту вдвое — по сути тоже самое, а прозрачность дизайна увеличивается. Это если говорить об имплементации на FPGA
Ну, чем выше частота, тем ярче проявляются неприятные ВЧ эффекты, вроде как… К тому же если и так умножитель уже использован внутренний, то придетется искать соответствующие кварцы (в два раза более высокой частоты) — думаю, все таки может быть оправдано.
С точки зрения схемы что выборки делать в 2 раза чаще, что частоту повышать в два раза: все это приводит к одному — уменьшению вдвое временных ограничений. За этим следить надо. По идее, конечно, это САПР должна все разводить, но практика показывает что не всегда это делается хорошо.
А сколько логических элементов занимает процессор в результате? Насколько он компактный?
Дописал загрузчик, теперь я уверен, что он из процессора точно ничего не выкидывает при трансляции проекта:
Финальный отчет

Заодно отвечу на комментарий:
Сколько MIPS и на какой частоте заработает на вашей FPGA?

Проваленная временная константа — это из-за высокой заданой частоты на входе. При заданой частоте в 50МГц (стандартная для стартер кита для Spartan3E) он[транслятор ISE :)] не особо старается упаковывать проект и максимально возможную частоту работы не показывает.
Максимальная частота работы получилась 79.5Мгц для кристала Spartan3E xc3s500. Самая длинная линия на умножителе. Следом за ней идут линии на сумматоре и компараторе.
Простор для оптимизации есть — сейчас процессор такт выборки команды просто простаивает, в этот такт можно вынести какие-либо предварительные вычисления.

MIPS будет в 2 раза ниже частоты, на которой работает процессор.
Кстати, в онлайне есть классическая книга по построению стековых процессоров:Philip J. Koopman — Stack Computers: the new wave.

1989й год, но содержит всё, чтобы помочь человеку, обдумывающему архитектуру своего стекового процессора.
А перевода нет?
Вряд ли, больно специфическая книга, если только во времена СССР успели перевести.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации