mikrocontroller.net

Forum: FPGA, VHDL & Co. Problem mit Testbench


Autor: shockwaverider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe folgendes Problem mit einer Testbench:

Ich erzeuge in dieser Testbench in einem Prozess einen 50 MHz Takt, der 
dann einfach in meine Top_Level Entity reingeht. Genauso erzeuge ich zu 
Anfang der Simulation ein Reset-Signal, das auch in die Top Level Entity 
geht. Wenn ich nun aber die Simulation mit ModelSim starte, so kommen 
weder das Clock-Signal, noch das Reset-Signal aus der Testbench im Top 
Level Modul an.
Stattdessen sind die Signale zu Anfang undefiniert und bleiben es auch 
während der gesamten Simulation, wobei man in der Simulation aber sehen 
kann, dass die erzeugenden Signale in der Testbench richtig 
funktionieren, sie werden einfach nicht an die T-L Entity 
weitergeleitet, und ich weiß einfach nicht woran das liegen könnte. 
Vielleicht hat ja einer von euch zufällig eine Idee? Besten Dank.

Hier der Code der T-L Entity:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity lauflicht_top is
  port (
          signal clk50in    : in  std_logic;
    signal test_reset_n  : in  std_logic;
    signal test_ausg_f  : out  std_logic;
    signal test_ausg_s  : out  std_logic
  );
end lauflicht_top;

architecture Behavioral of lauflicht_top is

  component clock_generator
    port (
      CLOCK50_I  : in  std_logic;
      RESET_N    : in  std_logic;
      CLOCK_F    : out  std_logic;
      CLOCK_S    : out  std_logic
    );
  end component;

begin

  clock_gen : clock_generator
    port map (
      CLOCK50_I  =>  clk50in,
      RESET_N   =>  test_reset_n,
      CLOCK_F   =>  test_ausg_f,
      CLOCK_S   =>  test_ausg_s
    );

end Behavioral;

Hier der Code der entspr. Testbench:

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

entity clock_generator_tb_vhd is
end clock_generator_tb_vhd;

architecture behavior of clock_generator_tb_vhd is

component lauflicht_top
port (
  signal clk50in    : in  std_logic;
  signal test_reset_n  : in  std_logic;
  signal test_ausg_f  : out  std_logic;
  signal test_ausg_s  : out  std_logic
);
end component;

  --Inputs
  signal clock50_i_tb   :  std_logic;
  signal reset_n_tb  :  std_logic;

  --Outputs
  signal clock_f_tb   :  std_logic;
  signal clock_s_tb   :  std_logic;

begin

  UUT : lauflicht_top
  port map (
    clk50in    =>  clock50_i_tb,
    test_reset_n  =>  reset_n_tb,
    test_ausg_f  =>  clock_f_tb,
    test_ausg_s  =>  clock_s_tb
  );

  TAKT : process  -- simuliert 50 MHz Takt
  begin
    clock50_i_tb <= '0';
    wait for 10 ns;
    clock50_i_tb <= '1';
    wait for 10 ns;
  end process;

  TB : process
  begin
    -- Wait 100 ns for global reset to finish
    reset_n_tb <= '0';
    wait for 100 ns;
    reset_n_tb <= '1';
    wait for 100 ns;
    wait; -- will wait forever
  end process;

end;

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seltsam, bei mir kommt Clock und Reset am Eingang an. Bist Du sicher, 
dass Du auch den TB simulierst ? ;)

Autor: miha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TAKT : process  -- simuliert 50 MHz Takt
  begin
    clock50_i_tb <= '0';
    wait for 10 ns;
    clock50_i_tb <= '1';
    wait for 10 ns;
  end process;

du brauchst kein TAKT process zu schreiben. eínfach so:

clock50_i_tb <= not clock50_i_tb after 10ns;

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann muss die clk aber noch initialisiert werden, weil not U = auch U 
:-)

Autor: shockwaverider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

vielen Dank für die Antworten, aber das Problem
hat sich mittlerweile erledigt.

Trotzdem Danke!

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.