mehrdimensionales array initialisieren

Gast #2326678
Lesenswert?

hey ho ;)
ich bin grad dabei ein 32 bit ram zu bauen, das allerdings aus vier 
8-bit ram blöcken besteht. funktioniert soweit auch super, nur kann ich 
es nicht mit der unten stehenden funktion initialisieren.
ein "komplettes" 32-bit ram zu initialisieren ist kein problem..
aber hier krieg ich immer die warnung: line 59: Default value is ignored 
for signal <MEM_FILE>

weiß einer von euch vielleicht woran das liegen könnte?

greetz
stephan

1
type RAM_8  is array(0 to MEM_SIZE - 1) of STD_LOGIC_VECTOR(7 downto 0);
2
type RAM_32 is array(3 downto 0) of RAM_8;
3
type RAM_IMAGE_TYPE is array (0 to MEM_SIZE - 1) of STD_LOGIC_VECTOR(31 downto 0);
4
  signal RAM_IMAGE : RAM_IMAGE_TYPE :=
5
  (
6
    000000 => x"0A001106",
7
    others => x"AE013FF7" 
8
  );
9

10
  function load_mem(IMAGE : RAM_IMAGE_TYPE) return RAM_32 is
11
    variable TEMP_MEM : RAM_32;
12
  begin
13
    for j in 0 to 3 loop
14
      for i in 0 to MEM_SIZE - 1 loop
15
        TEMP_MEM(j)(i) := IMAGE(i)(j*8+7 downto j*8);
16
      end loop;
17
    end loop;
18
    return TEMP_MEM;
19
  end load_mem;
20

21
  signal MEM_FILE : RAM_32 := load_mem(RAM_IMAGE);
Gast #2330725
Lesenswert?

@Duke

über die konstante wird ja ein signal initialisiert... die xilinx ise 
synthese macht dann daraus ein block ram (bzw vier stück) die einen 
preset haben (kann man ja auch beim instantiieren von block ram 
primitiven mit angeben).

funktioniert bisher ganz gut... aber vielleicht kommt ja noch das böse 
erwachen ;)

lg
stephan
Gast #2332860
Lesenswert?

stephan schrieb:
> über die konstante wird ja ein signal initialisiert...
OK. Das war mir entgangen.

> die einen
> preset haben
Da dürfte es nur ein distributed RAM werden.

> (kann man ja auch beim instantiieren von block ram
> primitiven mit angeben)
Das sind generics. An einem BRAM gibt es kein Reset/Preset. Höchstens 
für die Register am Ausgang (wenn man welche hat).

Duke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren