"Ormen" på en FPGA (2 / 6 steg)
Steg 2: VGA-utgång
En 640 x 480 VGA skärm fungerar så här: en pixel är aktiverad längst upp till vänster (y = 0, x = 0). Bildskärmen aktiverar en pixel i taget, går rätt överst på displayen tills den når (y = 0, x = 640). När den når kanten av skärmen (x = 640), skärmen börjar aktivera pixlar på (y = 1, x = 0) och gör samma sak. Det håller med detta tills det når (y = 480, x = 640), där det kommer att börja processen igen. I grund och botten aktiverar den pixlarna en i taget (seriellt) på ett korrekt sätt från vänster till höger, gå nedåt. Mer information här [3].
Också, om du vill visa en annan färg än svart, måste du ange 8 bit värdena för rött, grönt och blått för bildskärmen att Visa.
.
För att kunna spela spelet, måste vi använda en VGA-kompatibel bildskärm för att tillåta oss att visning av spelet. Det finns flera saker som behövs för att göra VGA generator modul fungerar:
1. vi sätter våra högsta höjd och längd för att matcha bildskärmens upplösning vi ville ha för programmet (640 x 480).
2. vi använde positiva kanten av VGA klockan samtidigt som du använder om uttalanden och icke-blockerande uppdrag att skapa ett x samordna räknas som en y koordinaten räkna. Dessa xCount och yCount kan användas för att rita saker på displayen, samt spåra orm och apple. De spår där på skärmen som du är.
3. vi har sagt att om vår x-koordinaten och y-koordinaten stämmer inte överens med vår maximala längden eller maximal höjd, då vi skulle öka deras koordinater med en
4. använda positiva kanten av våra VGA klocka igen, vi använder en icke-blockerande uppdrag för att definiera våra visningsområde som x koordinater multiplicerat med våra y-koordinater. Dessa värden är sant om antingen en av dessa koordinater är mindre än vår skärmens upplösning (640 x 480).
5. avslutande modulen VGA generator använder vi tre tilldela uttalanden, två som "VGA_vSync och VGA_hSync", tilldelades som inversen av vertikal sync och horisontell synk. Vår sista tilldela uttalande ingår med visningsområdet definierar vi i våra tidigare uppdrag och använda "blank_n" att definiera våra visningsområdet.
6. Observera också, VGA kan inte köra på en 50MHz klocksignal som styrelsen tillhandahåller snarare, det fungerar med en 25MHz klocka. Vi använder en separat modul (bilden) att minska 50MHz klocka till 25MHz.
.
En bra sida att läsa mer om VGA detaljerna är Wikipedias sida för VGA [4], och en användbar resurs för vissa Verilog detaljerna rörande VGA är denna sida [5].