FPGA
"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]- Weź zdjęcie lub rysunek.
- Przeskaluj np. do 160×120 albo 320×240.
- Zredukuj kolory do RGB444 albo RGB565.
- Wygeneruj plik do pamięci FPGA:
.mem.hex.coe
- 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_timingimage_romtop
Logika
[edytuj | edytuj kod]- jeśli
x < IMG_Wiy < 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.
- zwiększyć kanał
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]- Przygotuj obraz
160x120. - Zamień go na tablicę pikseli.
- Wgraj do ROM.
- Podepnij pod prosty kontroler VGA 640×480.
- Wyświetl obraz w lewym górnym rogu albo na środku.
- 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.