Hallo,
danke für deine Antwort. Der obige Code müsste auch stimmen ... aber
selbst mit deinem funktioniert es nicht. ... irgedwie steh ich aufem
Schlauch und es macht mich verrückt ;-)
Eigentlich habe ich einen Counter der hochzählt und bei jedem geraden
Wert Daten an eine Leitung anlegt und bei jeden ungeraden Wert die Daten
übernimmt. Deswegen der etwas komplizierte Code.
Leider ist selbst in dem einfachsten Code ein Fehler drin, oder er
simuliert nicht richtig ....
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 |
|
4 |
|
5 | entity fasdf is
|
6 | Port ( clk_in : in STD_LOGIC;
|
7 | clk_out : out STD_LOGIC);
|
8 | end fasdf;
|
9 |
|
10 | architecture Behavioral of fasdf is
|
11 | signal clksig : std_logic := '0';
|
12 | begin
|
13 |
|
14 | testprocess : process(clk_in)
|
15 | begin
|
16 | if clk_in'event and clk_in = '1' then
|
17 | clksig <= not clksig;
|
18 | end if;
|
19 | end process testprocess;
|
20 | clk_out <= clksig;
|
21 |
|
22 | end Behavioral;
|
Die TB ist die Standart von Xilinx erzeugte ...
1 | LIBRARY ieee;
|
2 | USE ieee.std_logic_1164.ALL;
|
3 |
|
4 | ENTITY tb IS
|
5 | END tb;
|
6 |
|
7 | ARCHITECTURE behavior OF tb IS
|
8 |
|
9 | -- Component Declaration for the Unit Under Test (UUT)
|
10 |
|
11 | COMPONENT fasdf
|
12 | PORT(
|
13 | clk_in : IN std_logic;
|
14 | clk_out : OUT std_logic
|
15 | );
|
16 | END COMPONENT;
|
17 |
|
18 |
|
19 | --Inputs
|
20 | signal clk_in : std_logic := '0';
|
21 |
|
22 | --Outputs
|
23 | signal clk_out : std_logic;
|
24 |
|
25 | -- Clock period definitions
|
26 | constant clk_in_period : time := 10 ns;
|
27 | constant clk_out_period : time := 10 ns;
|
28 |
|
29 | BEGIN
|
30 |
|
31 | -- Instantiate the Unit Under Test (UUT)
|
32 | uut: fasdf PORT MAP (
|
33 | clk_in => clk_in,
|
34 | clk_out => clk_out
|
35 | );
|
36 |
|
37 | -- Clock process definitions
|
38 | clk_in_process :process
|
39 | begin
|
40 | clk_in <= '0';
|
41 | wait for clk_in_period/2;
|
42 | clk_in <= '1';
|
43 | wait for clk_in_period/2;
|
44 | end process;
|
45 |
|
46 | clk_out_process :process
|
47 | begin
|
48 | clk_out <= '0';
|
49 | wait for clk_out_period/2;
|
50 | clk_out <= '1';
|
51 | wait for clk_out_period/2;
|
52 | end process;
|
53 |
|
54 |
|
55 | -- Stimulus process
|
56 | stim_proc: process
|
57 | begin
|
58 | -- hold reset state for 100 ns.
|
59 | wait for 100 ns;
|
60 |
|
61 | wait for clk_in_period*10;
|
62 |
|
63 | -- insert stimulus here
|
64 |
|
65 | wait;
|
66 | end process;
|
67 |
|
68 | END;
|