Skocz do zawartości
Elvis

FPGA (własne programy #5): Obraz na monitorze VGA

Pomocna odpowiedź

Warto przy okazji zwrócić uwagę, że ten projekt pokazuje zalety FPGA w porównaniu z mikrokontrolerami. Przykładowy sterownik zrealizujemy za pomocą niewielkiej części zasobów naszego i tak niewielkiego układu. Wygenerowanie obrazu za pomocą mikrokontrolera, o ile w ogóle możliwe zajmowałoby ogromną ilość jego zasobów.

Cześć Elvis,

nawet nie wiesz jak się cieszę, że ktoś to w końcu napisał 🙂

Wszyscy moi znajomi uważają, że mikro-kontrolery są najlepsze do wszystkiego, a układy programowalne są dla maniaków i nie mają żadnych realnych zastosowań.

Dzięki za bardzo ciekawy artykuł, jutro postaram się poćwiczyć kod który napisałeś 😅 , może będę miał jakieś uwagi (jak już wspomniałem muszę trochę poczytać o temacie). Udało mi się zsyntetyzować PicoBlaze (z UARTem) tak, że mikro-kontroler do twojego projektu VGA będzie gotowy (walczę tylko z generacją zawartości ROM dla programu PicoBlaze bo dostarczony z projektem assembler "KCPSM3.EXE" to program DOS i nie mogę go uruchomić pod Windows 10), a linki do "pBlazeIDE" prowadzą w próżnię.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Cześć Elvis,

dzisiaj miałem czas, żeby pobawić się twoim kodem. To dziwne, ale u mnie białą ramkę prawidłowo rysuje przy takich warunkach w entity display:

   entity display is port(
       clk : in std_logic;
       x : in integer range 0 to 1023;
       y : in integer range 0 to 1023;
       color : out std_logic_vector(7 downto 0));
   end display;

   architecture Behavioral of display is
   begin

   process (clk) is
   begin
       if rising_edge(clk) then
           if (x < 640) and (y < 480) then
               if (x = 3) or (x = 639) or (y = 0) or (y = 478) then    -- biala ramka
                   color <= x"ff";           
               else
                   if (y < 160) then -- czerwony pasek na gorze
                       color <= x"e0";
                   elsif (y < 320) then -- zielony w srodku
                       color <= x"1c";
                   else -- niebieski na dole
                       color <= x"03";
                   end if;
               end if;
           else
               color <= x"00";
           end if;
       end if;
   end process;

   end Behavioral;

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

VGA to jak to ujmują zwłaszcza na Politechnice Warszawskiej "wymierający standard" (bo taka prawda) - niemniej jak jużto potraficie to zróbcie HDMI (jako ciekawostkę dodam, że jednym z jego elementów składowych jest właśnie sterownik VGA, a więc już połowa roboty wykonana - teraz tylko podłączyć do VGA kodery TMDS i do tych koderów rejestry przesuwne i macie HDMI - jak widać zatem jest to w rzeczywistości "udoskonalone" VGA, albo też "obudowane" czy też "rozszerzone" VGA - dzięki temu nie trzeba nie wiadomo jakich modyfikacji wprowadzać - ot starczy rozszerzyć to co istnieje. Podejście do zastosowania zarówno w FPGA jak w ogóle w samej elektronice (jak ma się VGA na scalaku jakimś to można na FPGA tylko dorobić kodery z rejestrami, spiąć to i mamy już przystosowany np: stary sprzed 20 lat generator obrazów kontrolnych czy starą kartę graficzną, też sprzed 20 lat do współczesnych odbiorników - i tyle 🙂 - prawda że zajebiście proste? 🙂))

Udostępnij ten post


Link to post
Share on other sites
VGA to jak to ujmują zwłaszcza na Politechnice Warszawskiej "wymierający standard" (bo taka prawda) - niemniej jak jużto potraficie to zróbcie HDMI (jako ciekawostkę dodam, że jednym z jego elementów składowych jest właśnie sterownik VGA, a więc już połowa roboty wykonana - teraz tylko podłączyć do VGA kodery TMDS i do tych koderów rejestry przesuwne i macie HDMI - jak widać zatem jest to w rzeczywistości "udoskonalone" VGA, albo też "obudowane" czy też "rozszerzone" VGA - dzięki temu nie trzeba nie wiadomo jakich modyfikacji wprowadzać - ot starczy rozszerzyć to co istnieje. Podejście do zastosowania zarówno w FPGA jak w ogóle w samej elektronice (jak ma się VGA na scalaku jakimś to można na FPGA tylko dorobić kodery z rejestrami, spiąć to i mamy już przystosowany np: stary sprzed 20 lat generator obrazów kontrolnych czy starą kartę graficzną, też sprzed 20 lat do współczesnych odbiorników - i tyle 🙂 - prawda że zajebiście proste? 🙂))

Cześć,

dzięki za podpowiedź, jak będzie chwila czasu to popróbuję 😉

Na razie to w pracy mam większe obciążenie.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Drobiazg - ja tylko mówię to jako ciekawostka jaka kryje się za tą całą magią HDMI (która szybko pryska jak się odkryje, że to w istocie VGA, tylko ulepszone!) - a także dobre to wskazanie, że stary sprzęt wcale nie taki stary i lekko można go przystosować do współczesnych realiów 🙂

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Cześć,

Udało mi się dziś powtórzyć wasz sukces i mój Elbert też wygenerował 3 pasy z białą ramką na 23" LCD-ku firmy LG.

W pierwszym podejściu też bez białej linii ramki na liniach 0. Kombinowałem z czasami, przeliczałem, a na końcu wyszło, że wystarczy wcisnąć przycisk automatycznej korekty pozycji/skali monitora i ramka jest jak trzeba za wszystkich stron... :-). Da się ją wycentrować niezależnie czy czasu impulsów synchronizacji są nieco przesunięte w lewo lub w prawo. Pewnie więc u Elvisa też wystarczyło poprawić pozycję/skalowanie monitora.

Pozdrawiam!

Edytowano przez Szałszanin
  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Witam. Do kodu Elwisa (swoją drogą bardzo pouczającego) dodałem w ramach ćwiczenia funkcjonalność przesuwania granic kolorów, przy pomocy przycisków SW1..SW4. Trochę ciekawiej. 😉 Pozdrawiam Elwisa za ciekawy post.

VGA.zip

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...