Rom Baustein initialisieren

Gast #1409710
Lesenswert?

Hallo, ich will eine 2 kb grosse Tabelle in ein Rom packen. Dazu 
verwende ich den Coregen für einen Single Port Block Ram und lade dort 
ein coe File, die Konfiguration habe ich angehängt)

Jedoch bekomme ich beim lesen aus dem Rom (simulation) immer nur 
Undefiniert (X)

Selbst wenn ich das Rom nur mit nullen initialisieren lasse, bekomm ich 
nur X zurück.

Hier mal ein Testprogramm um das Problem zu verdeutlichen
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5

6
entity test is
7
    Port ( 
8
        clk        : in   STD_LOGIC;
9
        table_out    : out   STD_LOGIC_VECTOR (7 downto 0);
10
        count_out    : out   STD_LOGIC_VECTOR (10 downto 0)
11
              );
12
end test;
13

14
architecture Behavioral of test is
15

16
component gamma_table 
17
  port(
18
  dout: out std_logic_vector ( 7 downto 0);
19
  addr: in std_logic_vector (10 downto 0);
20
  clk : in  std_logic
21
    );
22
end component;
23

24
signal count : std_logic_vector (10 downto 0):=(others =>'0');
25

26
begin
27

28
process (clk) begin
29
if rising_edge (clk) then
30
  count <= count + 1;
31
end if;
32
end process;
33

34
count_out <= count;
35

36
u0 :gamma_table
37
port map(
38
  addr   =>  count,
39
  dout   => table_out,
40
  clk  =>  clk
41
      );
42

43
end;

Dieses eigentlich recht simple Rom treibt mich seit Tagen in die 
verzweifelung
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1409999
Lesenswert?

Hier ein paar Stichworte, evtl. hilft das weiter:
1
entity ROM_512x32 is
2
  port (
3
    CLK  : in  std_logic;
4
    ADDR : in  std_logic_vector(8 downto 0);
5
    DATA : out std_logic_vector(31 downto 0)
6
  );
7
end ROM_512x32;
8

9
architecture wrapper of ROM_512x32 is
10
  component RAMB16_S36
11
    generic (
12
      INIT     : bit_vector := X"000000000";  --  Value of output RAM registers at startup
13
      SRVAL    : bit_vector := X"000000000";  --  Ouput value upon SSR assertion
14
      WRITE_MODE : string   := "WRITE_FIRST"; --  WRITE_FIRST, READ_FIRST or NO_CHANGE 
15
      INIT_00  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
16
      INIT_01  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
17
      INIT_02  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
18
      INIT_03  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
19
      INIT_04  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
20
      INIT_05  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
21
:
22
:
Gast #1410071
Lesenswert?

eventuell eine Alternative zum Coregen:
im XST-User Guide unter "RAMs and ROMs HDL Coding Techniques"
wird im Kapitel "Initializing RAM Coding Examples"
beschrieben wie man die Xilinx-RAM-Resourcen vorbelegt.

Den Coregen benutze ich nicht mehr für ROMs, ich hab mir einfach das 
VHDL/Verilog-Beispiel  "Initializing Block RAM (External Data File)"
aus dem Manual kopiert. Da wird der ROM-Inhalt (genauer die RAM
initialisierung) aus einem externen File gelesen (geht ab ISE 9.2
auch bei der XST-Synthese).
Gast #1410116
Lesenswert?

Ich habe das auch mal versucht, allerdings müssen dann die werte als hex 
oder bin zahlen vorliegen.
in coe dateien gehen auch dezimalzahlen, aus dem grund verwende ich das.

Ich habe die Tabelle mit Excel erstellt, und excel kann kein hex
Gast #1411137
Lesenswert?

> bezüglich excel: DEZINHEX() ??
Hab leider nur open office , da geht das nicht

Das geht doch alles (leider) an der Ursprünglichen Fragestellung vorbei. 
So langsam glaube ich, das der Coregen in der Initialisierungsfunktion 
fehlerhaft ist.
#1411170
Lesenswert?

Michael Sauron schrieb:
>> bezüglich excel: DEZINHEX() ??
> Hab leider nur open office , da geht das nicht
>
> Das geht doch alles (leider) an der Ursprünglichen Fragestellung vorbei.
> So langsam glaube ich, das der Coregen in der Initialisierungsfunktion
> fehlerhaft ist.

Hast du denn die aktuelle Version mit allen Service Packs?

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