Forum: FPGA, VHDL & Co. VGA-Design (Virtex5/ISE14.5): daten von fpga ins sram auslagern


von Lowtzow .. (lowtzow)


Lesenswert?

Guten Tag,

ich beschäftige mich derzeit mit einem VGA-Design. Ich habe hierfür im 
FPGA ein Array mit 116x155 Pixel für RGB angelegt und kann somit kleine 
RGB Bilder auf einem Monitor ausgeben. (Die Array-Daten erzeuge ich 
derzeit mit Mathematica)
1
type FeldTyp1 is array (116 downto 1, 155 downto 1) of bit_vector (11 downto 0); 
2
signal FeldB : FeldTyp1 := ((b"010001111001",b"001101101000", ......

das ganze Design funktioniert auch problemlos nur das Synthetisieren und 
P&R dauert gute zwei Stunden. Im nächsten Schritt möchte ich deshalb 
meine Bilddaten in einem externen SRAM ablegen. Ich suche daher den 
geeignetsten Weg um das SRAM mit den Bilddaten zu initialisieren ohne 
ein Array im FPGA anlegen zu müssen und somit das Synthetisieren und P&R 
auf ein Bruchteil zu verkürzen.

Würde mich über Ideen/Vorschläge freuen

mfg
alex

von Marius W. (mw1987)


Lesenswert?

Du könntest in deinen FPGA einen Init-Block machen, der aus einem 
internen BRAM als ROM ein "Image" der SRAM-Daten ins SRAM kopiert.

Gruß
Marius

von Uwe (Gast)


Lesenswert?

VOn wo kommen denn die Daten die du visualisieren willst ?

von Lowtzow .. (lowtzow)


Lesenswert?

Die Bilddaten kommen derzeit aus Mathematica, habe hierfür ein File 
geschrieben, bei dem das Endprodukt (Array in VHDL) in ein txt abgelegt 
wird. Den Inhalt des txt-files -> copy/paste -> VHDL-File.

von Uwe (Gast)


Lesenswert?

OK, dann wär es wohl nicht schlecht die Daten im ROM abzulegen und in 
dein FPGA einen Speichercontroller zu implementieren der dir die Daten 
ab einer Bestimmten adresse aus den ROM ins Video RAM schreibt die dann 
von dem Videocontroller auf dem Bildschirm ausgegeben werden.

von Uwe (Gast)


Lesenswert?

Hab aber mal ne Frage, bitte nicht falsch verstehen.
Wie kommt es das man mit so nen teuren Virtex 5 rumspielt, aber keine 
Idee hat soetwas einfaches zu implementieren. Wirklich ist nich böse 
gemeint.
Also hast du soviel Geld fürs Hobby ausgegeben oder ist das Educational 
?

von bko (Gast)


Lesenswert?

Ein Block-RAM als ROM nutzt die Xilinx-Synthese wenn die Ausgangsdaten
nochmal über ein getaktetes Register gehen, hier als Beispiel
rauskopiert aus dem Xilinx-"XST User Guide for Virtex-4, Virtex-5"
"Chapter 3: XST HDL Coding Techniques - ROM With Registered Output VHDL 
Coding Example"; ohne das Register wirds, so denke ich, in "tausende"
LUT-RAMs abgebildet.
1
architecture syn of rams_21b is
2
  type rom_type is array (63 downto 0) of std_logic_vector (19 downto 0);
3
  signal ROM : rom_type:= (X"0200A", X"00300", X"08101", ..... X"0400D");
4
  signal rdata : std_logic_vector(19 downto 0);
5
6
  begin
7
  rdata <= ROM(conv_integer(addr));
8
   process (clk)
9
    begin
10
    if (clkevent and clk = 1) then  -- mit dem Konstrukt sollte
11
      if (en = 1) then               -- xst ein Block-RAM hernehmen.
12
      data <= rdata;                   -- und auch etwas schneller routen
13
      end if;
14
    end if;
15
   end process;
16
end syn;

von Christian R. (supachris)


Lesenswert?

Ich bin mir ziemlich sicher, dass die Zeit zum Erstellen des Designs 
damit nicht (wesentlich) kleiner wird. Die dicken FPGAs brauchen nun mal 
so lange. Selbst ein nichtmal halbvolles Spartan 6-100 Design braucht 
etwa eine halbe Stunde auf einem aktuellen Rechner incl. neu erstellen 
von ein paar FIFOs als IP Core. Wenn da viel Logik im Chip ist und viel 
zu routen bei knackigem Timing dann dauerts halt. Da kann man nur durch 
mehr CPU Power nachhelfen.

von Lowtzow .. (lowtzow)


Lesenswert?

danke für die Vorschläge, werde sie durcharbeiten.

ja Education, das Board habe ich zur Verfügung gestellt bekommen und 
darf mich über die Ferien ein bisschen spielen/einarbeiten. Habe bis 
jetzt nur kleinere Designs in VHDL entwickelt (counter,shift register). 
Ist sozusagen mein erstes größeres Design.

Mein Ziel ist es, VGA einlesen zwischenzuspeichern (sram) und dann 
wieder über VGA ausgeben. Mein derzeitiger Status ist somit nur ein 
Zwischenschritt ;-)
deshalb möchte ich als nächsten Schritt mit einem exteren SRAM arbeiten 
und dann werde ich mich darum kümmern VGA-Signale einzulesen.

mfg
alex

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.