Cześć wszystkim!
Chciałem się podzielić moim projektem, nad którym pracuję od jakiegoś czasu —
autorskim systemem cyfrowym na FPGA Spartan-6 XC6SLX9.
Zacząłem od prostego kontrolera VGA, ale z czasem rozrosło się to do całkiem
sporej platformy zbliżonej do retro komputera.
Co potrafi:
- VGA 640x480@60Hz, bufor ramki w SRAM (8 bpp, RGB332)
- tryb tekstowy 80x60 znaków z kursorem
- 8 sprite'ów 16x16 z przezroczystością i odbiciem X/Y
- klawiatura PS/2 z dekoderem scan code → ASCII
- UART (5 prędkości: 9600–115200)
- karta SD w trybie SPI (odczyt/zapis sektorów, CID/CSD/OCR)
- 8 źródeł przerwań, indywidualnie maskowalnych
- interfejs CPU↔FPGA przez magistralę równoległą
Całość napisana w Verilog HDL, syntezowana w Xilinx ISE 14.7.
Docelowo projekt miał pracować pod procesorem R6502 — czyli klasykiem
z epoki retro komputerów. Niestety, na tym etapie nie udało mi się jeszcze
uruchomić R6502, więc do czasu ostatecznego zakończenia prac steruję FPGA
za pomocą ATmega2560, która pełni rolę tymczasowego CPU. Interfejs
magistrali jest zaprojektowany tak, żeby można go było łatwo przepiąć
na docelowy procesor.
Po stronie CPU użyłem ATmega2560, która przez magistralę równoległą steruje
FPGA, a na niej demo pokazuje m.in. grę Pac-Man na sprite'ach.
Uwaga — żeby uniknąć nieporozumień: dołączone demo NIE jest napisane
na platformie Arduino. To czysty C/AVR dla mikrokontrolera ATmega2560,
kompilowany w Microchip Studio z avr-gcc. Płytka Arduino Mega 2560 jest
u mnie używana wyłącznie jako kontroler — czyli sprzęt, który wystawia
sygnały na magistralę i steruje FPGA. Programowanie odbywa się przez JTAG,
a nie przez bootloader Arduino.
Opis projektu jest na tyle szeroki, że postanowiłem umieścić go na osobnej
stronie — wraz z dokumentacją, mapą rejestrów, komendami, przykładami
i zdjęciami. Link znajdziecie w mojej sygnaturce.
Kod jest jeszcze rozwijany — podobnie jak sama strona. Część rzeczy jest
już gotowa i działa, część jest w planach. Będę wdzięczny za uwagi
i sugestie.
Chętnie odpowiem na pytania — zarówno o Verilog, jak i o samą magistralę,
konkretne moduły czy plany związane z R6502. Może ktoś z Was też bawi się
FPGA albo retro komputerami i chciałby wymienić doświadczenia?
Pozdrawiam!