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;
Seltsam, bei mir kommt Clock und Reset am Eingang an. Bist Du sicher, dass Du auch den TB simulierst ? ;)
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;
Hi Leute, vielen Dank für die Antworten, aber das Problem hat sich mittlerweile erledigt. Trotzdem Danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.