Hallo Im Rahmen eines Uni Projektes muss ich mit einem Spartan 3 FPGA eien Analoguhr auf einem VGA Bildschirm 640x480 anzeigen lassen . Mein Problem ist , ich weiss nicht wie ich mein Speicherabbild konstuiere. Ich hab ein SRAM 32 Bit Wortbreite und 18 Bit Adresse zu verfuegung .
Ich hatte die Idee dass ich 8 Pixel (3 Bit pro pixel) pro 32 Bit speichere . Damit bleiben 2 Bit in jedem Byte ungenutzt.was kein Problem ist da mein Speicher Gross genug ist .
das Problem ist bei der Berechung von den einzelnen Adressen fuer die einzelnen Pixel , ich bin auf diese Gleichung gekommen :
Adresse im Speicher = ((y-position)*80)+((x-pos)/8)
das Problem in dieser Gleichung ist dass sie eine Multiplikation und eine Division enthaelt und damit viel Rechenzeit braucht und das fuer jedes einzelne Pixel .
Ideen wie man das macht ? vielen Dannk im vorraus
Re: 640x480 VGA Monitor Bitmaske in Sram
...schon ein paar Tage her, Deine Frage und mit etwas Nachdenken bist Du sicher schon weitergekommen - oder?
Da Du ja genug Speicher hast, würde man es so einrichten, dass jedes Pixel eine eigene Adresse bekommt, die man durch 2-er Potenzen darstellen kann. Packt man also immer ein Pixel (à 3 Bit) in ein Nibble (4 Bit), so passen 8 Pixel in ein 32-Bit Speicherwort. Davon hast Du 640/8 in einer Zeile - macht 80 Worte. Hier rundest Du auf und "spendierst" 128 Worte für jede Zeile.
Zur Adressierung verwendest Du dann die untersten 3 Bit um ggf. den Muxer zu steuern, der ein bestimmtes Pixel innerhalb eines Wortes auswählt, die nächsten 7 Adressbits sind dann Dein 8er-Pixel-Zähler für die Zeilenlänge (mit genügend Reserven falls Du damit auch gleich DE, Sync und Porches erzeugen willst), und die nächsten 9 Bits ergeben Deinen Zeilenzähler.
So funzt die Ansteuerung ganz ohne verquere Adress-Arithmetik.
Zitat:
Adresse im Speicher = ((y-position)*80)+((x-pos)/8)
...Du bist Hochsprachen-Programmierer, der jetzt den Einstieg auf VHDL wagt - nicht wahr? ;-)