Pracuję na obwodzie cyfrowym, używając dyskretnych komponentów do sterowania wyświetlaczem VGA 640x480 w trybie tekstowym 80x30.
W przypadku wyświetlacza 640x480 zegar pikseli wynosi 25,175 MHz, a jego okres wynosi około 40ns. Nie rozumiem, jak często powinienem zapewniać nowy piksel na wyświetlaczu.
Podstawowa architektura mojego obwodu jest następująca:
Licznik binarny dla poziomych pikseli zlicza od 25,175 MHz do 800 (640 widocznych pikseli + 160 dla ganku frontowego, synchronizacji, ganku tylnego). Przy 800 przyrostowy licznik linii pionowej (i resetowany przy 525 liniach)
Używając pozycji poziomej i pionowej, uzyskaj współrzędną x, y bieżącego znaku.
Używając współrzędnej x, y znaku, indeksuj do pamięci wideo, aby pobrać znak ASCII.
Użyj znaku ASCII, aby zindeksować pamięć ROM w celu uzyskania wzorca bitowego dla znaku
Użyj równoległego do szeregowego rejestru przesuwnego, aby przekonwertować 8-znakową linię znaku na poszczególne bity przy częstotliwości zegara pikseli
Jeśli podążasz za łańcuchem, to idzie: Licznik -> RAM -> ROM -> Rejestr równoległy do szeregowego przesunięcia
Używając najszybszych komponentów, jakie mogę znaleźć, opóźnienia propagacji i czas dostępu sumują się do około 15ns + 20ns + 70ns + 15ns = 120ns, znacznie dłużej niż okres 40ns dla 25MHz.
Przy jeszcze wyższych rozdzielczościach i częstotliwościach odświeżania możesz mieć zegary pikselowe znacznie powyżej 100 MHz, co będzie okresem 10ns.
Jak to możliwe, aby zapewnić nowe piksele na wyświetlaczu co 10ns, kiedy czas dostępu do pamięci RAM / ROM jest już znacznie powyżej, nawet biorąc pod uwagę wszystkie inne sygnały w twoim systemie?