Hallo, guten Tag.
Wie wird bitte in Verilog ein synchrones Ram-Modul angelegt?
Ich habe das DE1.
Wenn ich das in Verilog schreibe:
reg [7:0] memory_ram_d [40000:0];
kommt keine Fehlermeldung mit einem irgend welchen Überlauf.
Es wird aber auch kein Ram-Modul angelegt.
Wenn ich das in VHDL schreibe:
Type rom_vec is ARRAY (0 to 8192) OF unsigned(7 downto 0);
signal speicher_vec : rom_vec;
wird ein synchrones Ram-Modul angelegt.
Wenn ich das in VHDL schreibe:
Type rom_vec is ARRAY (0 to 40000) OF unsigned(7 downto 0);
signal speicher_vec : rom_vec;
kommt eine Fehlermeldund von Quartus 13 , das es diese Datenmenge nicht
schafft.
Wie wird bitte in Verilog ein synchrones Ram-Modul angelegt und warum
kommt bei 40000 kein Überlauf?
Danke.
Gruss
Kann raus...
Frage ist geklärt, kann jetzt ein Ram anlegen und es wird auch als
Baugruppe angezeigt im RTLviever nach dem compilieren mit Verilog.
Gruss
peter schrieb:> Kann raus...> Frage ist geklärt, kann jetzt ein Ram anlegen und es wird auch als> Baugruppe angezeigt im RTLviever nach dem compilieren mit Verilog.>> Gruss
Und vielleicht noch erzählen wie, dann freut sich der nächste der das
sucht...
peter schrieb:> Wenn ich das in VHDL schreibe:> Type rom_vec is ARRAY (0 to 40000) OF unsigned(7 downto 0);> signal speicher_vec : rom_vec;> kommt eine Fehlermeldund von Quartus 13 , das es diese Datenmenge nicht> schafft.
Der Cyclone2 auf dem DE1 hat 52 M4K RAM-Blöcke mit je 4kbit, also
insgesamt 240kbit. Du willst im VHDL Code 8*40001 Bits, also 320kb.
Fazit: dein FPGA kann dir das, was du willst, nicht geben. Das wird dann
auch mit Verilog nicht gehen.
Weil du aber im Verilog Code nur 2**13*8 Bits, also 8192*8 Bits = 65kb
willst, geht das natürlich...
Denn eines ist klar: wenn es mit Verilog geht, dann geht es auch mit
VHDL. Es ist ja die selbe Hardware!
Ja, danke für die Info.
Wenn ich das in Verilog schreibe:
---------------------------------
reg [7:0] memory_ram_d [40000:0];
---------------------------------
kommt keine Fehlermeldung mit irgend welchen Überlauf.
Es wird aber auch kein Ram-Modul angelegt.
Wird der Überlauf vom Compiler nicht erkannt?
Wo werden da die Bytes angelegt, ist hier das herhalten identisch mit
einem optischen RAM welches angelegt wird beim anderen Verfahren?
Der Nachteil von diesem RAM :
ist, das er nur durch eine Drahtsteuerung zugänglich/funktionsfähig ist,
gegenüber dem optischn RAM in VHDL, welches als Software(Befehl)
gesteuert wird.
Danke.
Gruss
Habe jetzt eine Lösung gefunden um ein RAM anzulegen und mit Daten
füllen, die mit geladen werden, das RAM wird auch angezeigt im
RTL-Viewer und auch die Memorysanzahl werden angezeigt:
Geladen werden Daten als Intel-Hex :
(* ram_init_file = "test-bin.hex" *) reg [7:0] mem [254:0];
ein mem braucht nicht extra angelegt werden, ist mit im Befehl.
oder als Binäre-Reihen:
initial begin
$readmemb("test-bin.txt", mem);
end
da muss vorher aber ein mem angelegt werden :
reg [7:0] mem [0:255] ;
hier das Format:
11111111
10000001
11111111
10000001
11111111
11110101
11001110
10010100
Gruss