Zaprogramujmy sobie FPGA

Prowadzący: Krzysztof Haładyn

Zadania kwalifikacyjne są tutaj.

Masz już dosyć zwykłego programowania? Robisz coś, co wymaga dużego zrównoleglenia operacji, a Threadrippery z 128 wątkami to dla ciebie wciąż za mało? Potrzebujesz szybkiego interfejsu sprzętowego? Lubisz debugować hazardy? A może po prostu byłeś na moich zeszłorocznych warsztatach i zastanawiasz się, czy w takim Intelu czy AMD to oni sobie procesory z bramek logicznych wyklikują?


Przedstawiamy Veriloga - język opisu sprzętu, który pozwala we względnie prosty sposób projektować skomplikowane układy bramek logicznych. W wielu zastosowaniach pozwala to osiągnąć dużo większą wydajność, niż byłoby to możliwe na tradycyjnym procesorze. Dlaczego? Bo procesor jest tak naprawdę gigantycznym układem logicznym - po co więc nasze sygnały mają przebijać się przez miliony bramek symulujących działanie układu, skoro możemy taki układ po prostu zbudować? A w szczególności - jest to sposób, w który projektuje się same procesory!

Taki układ możemy następnie np. wgrać do FPGA. Są to specjalne układy scalone zaprojektowane w taki sposób, aby użytkownik (czyli my) mógł po uruchomieniu zaprogramować strukturę znajdujących się w nim bramek logicznych. Jeśli kiedykolwiek chciałeś zaprojektować własny układ scalony, a nie masz kilkuset tysięcy dolarów żeby go wyprodukować - to jest opcja dla ciebie :D

Podczas warszatów zaczniemy od prostych układów logicznych, następnie zrobimy jakiś prosty interfejs sprzętowy, a docelowo - zrobimy prosty procesor.

Wymagania

  1. Znać podstawy programowania w dowolnym języku
  2. Znać podstawowe bramki logiczne i umieć zbudować podstawowy układ - patrz zadania kwalifikacyjne
  3. W późniejszej części zajęć może przydać się znajomość podstawowej idei assemblera - patrz zadania kwalifikacyjne
  4. Mieć zainstalowane Xilinx ISE - bestia jest wielka więc koniecznie trzeba to zrobić przed rozpoczęciem zajęć. Instrukcje w zadaniach kwalifikacyjnych.
  5. Jeśli ktoś ma swoje FPGA - warto wziąć. Jeśli nie - będziemy się dzielić tym co mamy, bo wrzucenie tego na fizyczny układ jest dopiero ostatnim krokiem w procesie projektowania i sporo rzeczy będziemy pewnie robić w symulatorze.