Ich arbeite an einer digitalen Schaltung mit diskreten Komponenten, um ein 640x480-VGA-Display in einem 80x30-Textmodus anzusteuern.
Bei einem 640 x 480-Display beträgt der Pixeltakt 25,175 MHz, was einer Periode von etwa 40 ns entspricht. Ich verstehe nicht, wie ich so oft ein neues Pixel für das Display bereitstellen soll.
Die grundlegende Architektur für meine Schaltung ist wie folgt:
Der Binärzähler für horizontale Pixel zählt bei 25,175 MHz bis 800 (640 sichtbare Pixel + 160 für Veranda, Synchronisation, Veranda). Bei 800 den vertikalen Zeilenzähler erhöhen (und bei 525 Zeilen zurücksetzen)
Leiten Sie unter Verwendung der horizontalen und vertikalen Position die x, y-Koordinate des aktuellen Zeichens ab.
Indizieren Sie mithilfe der x-, y-Koordinate des Zeichens in den Videospeicher, um das ASCII-Zeichen abzurufen.
Verwenden Sie das ASCII-Zeichen, um im Zeichen-ROM zu indizieren und ein Bitmuster für das Zeichen zu erhalten
Verwenden Sie das Parallel-Seriell-Schieberegister, um eine 8-Pixel-Zeichenzeile in einzelne Bits mit Pixeltaktfrequenz umzuwandeln
Wenn Sie der Kette folgen, lautet sie: Zähler -> RAM -> ROM -> Parallel zum seriellen Schieberegister
Unter Verwendung der schnellsten Komponenten, die ich finden kann, summieren sich die Ausbreitungsverzögerungen und die Zugriffszeit auf ungefähr 15 ns + 20 ns + 70 ns + 15 ns = 120 ns, viel mehr als die 40 ns-Periode für 25 MHz.
Bei noch höheren Auflösungen und Bildwiederholraten können Sie Pixeltakte weit über 100 MHz haben, was einer Periode von 10 ns entspricht.
Wie ist es möglich, alle 10 ns neue Pixel für das Display bereitzustellen, wenn nur die Zugriffszeit für RAM / ROM bereits deutlich darüber liegt, ohne auch nur alle anderen Signale in Ihrem System zu berücksichtigen?