Релизация CPU на плис. Ядро SomeAVR

В этой записи я попытаюсь рассказать о реализации части процессорного ядра, использующего подмножество команд, используемых микроконтроллерами с архитектурой AVR. Проект далёк от завершения, но помигать светодиодом уже можно 😉 Например так:

Здесь правые 8 светодиодов показывают значение регистра R20, а левые 8 — значение IP(PC). Немного описания далее.
Были найдены готовые реализации AVR на FPGA: pAVR, AVR Core, Navré AVR clone. Но они явно очень сложные для начинающих и некоторые из них написаны не на Verilog, а мне пока хотелось бы более подробно познакомится с ним. Больше всего данный проект похож на reducedAVR. Только тут не приходится так извращаться с последовательной памятью, а можно сразу использовать встроенный блок m4k как ROM память.

Реализованы минимально необходимые инструкции: некоторые арифметические и условного перехода. Например вот код, который выполняется на камне в видео:

Код ядра SomeAVR можно взять на гитхабе. Извиняюсь, что залил туда весь проект целиком с мусором, но пока не разобрался в структуре проектов квартуса, чтобы понять что точно не нужно.

При загрузке конфигурации FPGA все регистры устанавливаются в значение по умолчанию, это можно увидеть на следующем видео

К сожалению пока всё, надеюсь будет продолжение 🙂

Facebooktwittergoogle_plusredditlinkedin
  • seg

    Hello, you are really doing a good job

    I saw your jc-models codes on google codes. I want to how the circuit symbol can be simulated in ISIS to verify correct operation. I have tried using the virtual terminal for the TXD and RXD pins but i dont know what I am doing wrong.

    Please help!!