FPGA

Z PUTwiki
Przejdź do nawigacjiPrzejdź do wyszukiwania

"Co Marek Kropidłowski nosi w spodniach?"

Jak zrobic andrzeja marciniaka(zoltego kaplana) na fpga

[edytuj | edytuj kod]

Sprawdzę, co oznacza „żółty kapłan” w tym kontekście i czy chodzi o grafikę, głos, automat stanów czy coś innego na FPGA. Potem dam Ci najkrótszą sensowną ścieżkę zrobienia tego.

Nie znalazłem wiarygodnego publicznego źródła, które łączyłoby frazę „żółty kapłan” z jakimś znanym projektem FPGA; w publicznych wynikach pojawia się za to m.in. ks. Andrzej Marciniak z Wielkopolski.

Jeśli chodzi Ci o zrobienie go na FPGA jako obrazka/mema na ekranie, to najprostsza droga jest taka:

Najłatwiejsza wersja

[edytuj | edytuj kod]

Zrób go jako sprite albo pełny bitmap frame wyświetlany przez VGA/HDMI.

Pipeline

[edytuj | edytuj kod]
  1. Weź zdjęcie lub rysunek.
  2. Przeskaluj np. do 160×120 albo 320×240.
  3. Zredukuj kolory do RGB444 albo RGB565.
  4. Wygeneruj plik do pamięci FPGA:
    • .mem
    • .hex
    • .coe
  5. Na FPGA zrób:
    • kontroler VGA/HDMI,
    • licznik x/y,
    • ROM z pikselami,
    • logikę pixel_addr = y * WIDTH + x,
    • wyjście koloru na ekran.

Minimalna architektura

[edytuj | edytuj kod]
  • vga_timing
  • image_rom
  • top

Logika

[edytuj | edytuj kod]
  • jeśli x < IMG_W i y < IMG_H, to czytasz piksel z ROM
  • poza obrazkiem dajesz tło, np. czarne albo żółte

Jeśli ma być „żółty”

[edytuj | edytuj kod]

Najprościej:

  • albo przygotować grafikę już w żółtej stylizacji,
  • albo na FPGA zrobić prosty filtr:
    • zwiększyć kanał R,
    • zwiększyć kanał G,
    • zmniejszyć B.

Przykład idei:

Jeśli chcesz wersję „bardziej FPGA”

[edytuj | edytuj kod]

Zamiast pełnej bitmapy możesz zrobić:

  • twarz jako kilka prostokątów i okręgów,
  • oczy/usta jako osobne obiekty,
  • animację mrugania przez prosty automat stanów.

To ma sens, jeśli chcesz:

  • mało pamięci,
  • prostą animację,
  • „memiczną” stylizację.

Jeśli ma gadać

[edytuj | edytuj kod]

Druga wersja to:

  • obraz na VGA
  • audio z ROM/BRAM
  • wyjście przez PWM albo I2S DAC
  • prosta animacja ust na podstawie timera

Wtedy FPGA robi:

  • odtwarzanie próbki audio
  • zmianę sprite’a ust co kilka ms

Co bym wybrał

[edytuj | edytuj kod]

Do szybkiego efektu:

  • bitmapa + VGA.

Do projektu „wow”:

  • bitmapa + filtr żółty + audio + mruganie.

Realny plan na 1 wieczór

[edytuj | edytuj kod]
  1. Przygotuj obraz 160x120.
  2. Zamień go na tablicę pikseli.
  3. Wgraj do ROM.
  4. Podepnij pod prosty kontroler VGA 640×480.
  5. Wyświetl obraz w lewym górnym rogu albo na środku.
  6. Dodaj żółty filtr.

Uwaga praktyczna

[edytuj | edytuj kod]

Jeśli używasz prawdziwego zdjęcia realnej osoby, upewnij się, że masz prawo do użycia grafiki, zwłaszcza jeśli chcesz to publikować.

Jeżeli chcesz, mogę od razu rozpisać Ci gotowy projekt w Verilogu lub VHDL: vga_controller + image_rom + top, pod konkretną płytkę FPGA.