mikrocontroller.net

Forum: FPGA, VHDL & Co. Rom Baustein initialisieren


Autor: Michael Sauron (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity test is
    Port ( 
        clk        : in   STD_LOGIC;
        table_out    : out   STD_LOGIC_VECTOR (7 downto 0);
        count_out    : out   STD_LOGIC_VECTOR (10 downto 0)
              );
end test;

architecture Behavioral of test is

component gamma_table 
  port(
  dout: out std_logic_vector ( 7 downto 0);
  addr: in std_logic_vector (10 downto 0);
  clk : in  std_logic
    );
end component;

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

begin

process (clk) begin
if rising_edge (clk) then
  count <= count + 1;
end if;
end process;

count_out <= count;

u0 :gamma_table
port map(
  addr   =>  count,
  dout   => table_out,
  clk  =>  clk
      );

end;

Dieses eigentlich recht simple Rom treibt mich seit Tagen in die 
verzweifelung

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein paar Stichworte, evtl. hilft das weiter:
entity ROM_512x32 is
  port (
    CLK  : in  std_logic;
    ADDR : in  std_logic_vector(8 downto 0);
    DATA : out std_logic_vector(31 downto 0)
  );
end ROM_512x32;

architecture wrapper of ROM_512x32 is
  component RAMB16_S36
    generic (
      INIT     : bit_vector := X"000000000";  --  Value of output RAM registers at startup
      SRVAL    : bit_vector := X"000000000";  --  Ouput value upon SSR assertion
      WRITE_MODE : string   := "WRITE_FIRST"; --  WRITE_FIRST, READ_FIRST or NO_CHANGE 
      INIT_00  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
      INIT_01  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
      INIT_02  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
      INIT_03  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
      INIT_04  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
      INIT_05  : bit_vector := X"0000000000000000000000000000000000000000000000000000000000000000"; 
:
:

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und excel kann kein hex
Schreib dir ein kleines Makro, dann geht das... ;-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bezüglich excel: DEZINHEX() ??

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie war das nochmal mit den unisim-libs zur Simulation von 
Xilinx-Komponenten? Im Wrapper der Komponente gamma_table sollte 
irgendwo sowas stehen:
library UNISIM; 
use UNISIM.all;
http://www.xilinx.com/itp/xilinx5/data/docs/sim/si...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.