Dodatkowe informacje

Generowanie sygnału VGA

Płytka XS40 wyposażona jest w bardzo prosty przetwornik c/a służący do sterowania sygnałami RGB monitora:

Wyprowadzenia sygnałów

Dla każdego sygnału można określić 4 poziomy napięć analogowych od 0 (brak koloru) do 0.7V (maksymalne nasycenie koloru) za pomocą 2 bitów, więc na ekranie można uzyskać pixele o 26=64 kolorach. Dodatkowo należy wygenerować sygnały synchronizacji poziomej i pionowej w standardzie VGA:

Przebiegi sygnałów

Odczyt z pamięci RAM

W celu odczytania danych z pamięci RAM należy uaktywnić układ (/CE=0), uaktywnić wyjście danych (/OE=0) i przełączyć w tryb odczytu (/WE=1). Należy pamiętać, że dla zastosowanej pamięci RAM firmy Winbond W24257AK-15 dane (D7-D0) pojawiają się na jej wyjściu po ok. 15ns od momentu podania adresu (A14-A0).

Struktura pliku BMP

Plik bitmapy umieszczony w pamięci RAM posiada nagłówek, który należy ominąć (nie sprawdzamy go - zakładamy, że bitmapa ma założone parametry). Po nagłówku znajdują się dane określające kolor poszczególnych pixeli. Pojedynczy bajt (8 bitów) zawiera dane o 2 pixelach, 4 starsze bity określają dane o kolorze pixela z lewej strony, 4 młodsze – z prawej. Kolor określany jest jako adres 4-bitowy adres w palecie kolorów (umieszczonej w nagłówku pliku BMP). Zakładamy, że jest to standardowa tablica kolorów Windows:

pixel (hex)

wysterowanie wyjść płytki XS40

kolor

 

red1,red0

green1,green0

blue1,blue0

0 00 00 00 czarny
1 01 00 00    
2 00 01 00  
3 01 01 00    
4 00 00 01  
5 01 00 01  
6 00 01 01  
7 10 10 10  
8 01 01 01  
9 11 00 00 czerwony
A 00 11 00 zielony
B 11 11 00   
C 00 00 11 niebieski
D 11 00 11  
E 00 11 11  
F 11 11 11 biały

Kolejność rozmieszczenia pixeli w pliku BMP: od lewej do prawej, od dołu do góry (pierwszy pixel w pliku pochodzi z lewego dolnego rogu obrazu). Dla ułatwienia zadania (obraz generowany na monitorze VGA zaczyna się od lewego górnego rogu) w pierwszym podejściu, można wyświetlić obraz odwrócony "do góry nogami". Każda linia uzupełniana jest zerami, tak aby cała linia była opisana wielokrotnością 32 bitów – w naszym przypadku nie ma to znaczenia, bo każda linia zawiera 256 pixeli, tj. dokładnie trzydzieści dwie 32-bitowe grupy.

Struktura pliku BMP

Przesyłanie bitmapy do płytki

W celu wysłania bitmapy do płytki należy ją zapisać w formacie Intel hex. Do tego celu służy program format83.com:

copy bitmap.bmp bitmap.bin
format83.com bitmap.bin > bitmap.hex

Następnie należy przesłać bitmapę w formacie hex wraz z plikiem programującym układ FPGA programem xsload:

xsload bitmap.hex vga.bit

Na końcu należy ustawić sygnał RESET: programem GXSPORT należy ustawić bit D0 na wartość 0.