Seite 1 von 1

VHDL...

Verfasst: 10.05.2017, 20:21
von RedGuy
Hi !

Bin derzeit unter Anderem mit VHDL für mein FPGA - Board beschäftigt ;) .

Jetzt hat sich folgendes Problem aufgetan:

Code: Alles auswählen

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

ENTITY InstructionDevice1 IS
	PORT(
		DATA_internal : INOUT std_logic_vector(0 to 7);
		);
END InstructionDevice1;

ARCHITECTURE Behav OF InstructionDevice1 IS
type SRAM is array (Natural range <>) of Std_Logic;
VARIABLE SRAM_MEMORY : SRAM (0 to 7);
BEGIN
		SRAM_MEMORY := DATA_internal;

		DATA_internal <= ('0','0','0','0','0','0','0','0');
END Behav;
In diesem Fall wird ja SRAM_MEMORY über DATA_internal die 8 Nullen zugewiesen.

Was ist, wenn man einen zweidimensionalen Array hat und einen Vektor darin adressiert:

Code: Alles auswählen

ARCHITECTURE Behav OF InstructionDevice1 IS
type SRAM is array (Natural range <>,Natural range <>) of Std_Logic;
VARIABLE SRAM_MEMORY : SRAM (0 to 7, 0 to 7);
BEGIN
		SRAM_MEMORY(0) := DATA_internal;

		DATA_internal <= ('0','0','0','0','0','0','0','0');
END Behav;
Werden im zweiten Beispiel dem RAM-Vektor 0 tatsächlich wieder die 8 Nullen zugewiesen ?
Oder muss ich explizit

Code: Alles auswählen

SRAM_MEMORY(0) := ('0','0','0','0','0','0','0','0');
schreiben ?

Gruss
RedGuy

Re: VHDL...

Verfasst: 10.05.2017, 21:21
von DerAlbi
Ein Post ohne exzessive Ausrufezeichen. :shock:

Ich verstehe aber dein Problem nicht:
google: "VHDL 2 dimensional vector"
2. Treffer: http://www.ics.uci.edu/~jmoorkan/vhdlref/arrays.html

Was konkret blieb unbeantwortet, nachdem du google aufgegeben hattest und hier einen Thread aufmachst?
Verstehe ich das richtig, dass es dir einzig und allein darum geht ob du das "(0)" weglassen kannst?
Da tendiere ich zum Nein, denn ein 2D-Array sollte aus logischen Gründen offensichtlich kein 1D-Array zugewiesen werden können.

Re: VHDL...

Verfasst: 10.05.2017, 22:06
von RedGuy
Hallo!

Mein Problem ist manchmal das ggf. nicht sequentielle Kompilieren des VHDL codes.

Wird der Array SRAM_MEMORY nun in erstem Beispiel mit den Nullen beschrieben, oder nicht.

@Albi: die Site hab ich schon gesehen.

Gruss
Red

Re: VHDL...

Verfasst: 11.05.2017, 08:28
von xq
Das Problem ist, dass du deinem std_logic_vector, der im Array liegt, nur einen std_logic-Wert zuweißt.

Code: Alles auswählen

DATA_internal <= (std_logic_vector(to_unsigned(0, DATA_internal[0]'length)), std_logic_vector(to_unsigned(0, DATA_internal[0]'length)),…);


Re: VHDL...

Verfasst: 13.05.2017, 11:08
von RedGuy
Hallo !

Für das Problem habe ich noch keine Anwort/Lösung :( .


Noch ein zweites Problem:

Wie adressiert man einen Array binär (in meinem Fall über einen std_logic_vector) ?


Gruss
RedGuy

Re: VHDL...

Verfasst: 13.05.2017, 11:15
von xq
Ebenfalls: Typwandlung, nur umgekehrt wie oben in meinem Beispiel

Re: VHDL...

Verfasst: 13.05.2017, 11:18
von RedGuy
Hi !

Dank an masterQ32.

Hab auch ne Site gefunden: https://www.xilinx.com/support/answers/45213.html

Gruss
Red