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.