Forum: FPGA, VHDL & Co. 3-bit Zähler in VHDL


von Sensor K. (Firma: Student) (sensor82)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich bin ganz frisch im Bereich VHDL..
Ich habe folgende code für eine 3bit-Zähler geschrieben aber mein
testbench funktioniert immer nicht,also die Simulation gibt mir
folgendes und der Ausgang ist immer undefiniert. Können Sie mich bitte
weiter helfen????

couter-code:

-- counter.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity counter is
port(reset,clk:in std_logic;
   O:out std_logic_vector(2 downto 0));
end counter;

architecture arch_counter of counter is
    signal temp : std_logic_vector(2 downto 0);
 begin
process(clk)
    begin
    if reset='1' then
        temp<= (others => '0');
            else
        if(clk'event and clk='1') then
                 temp<=temp + '1';

            end if;
   end if;
end process;
O<=temp;
end arch_counter;



TESTEBENCH-CODE:


-- counter_testbench.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity testbench is
end testbench;

architecture behavior of testbench is
--Signal declarations
signal clk,reset : std_logic := '0';
signal counter : std_logic_vector(2 downto 0):=(others => '0');
-- Clock period definitions
constant clk_period : time := 10 ns;

begin

UUT : entity work.counter port map (clk,reset,counter);

-- Clock process definitions
clk_process :process
begin
        clk <= '0';
        wait for clk_period/2;
        clk <= '1';
        wait for clk_period/2;
end process;

-- Stimulus process
stim_proc: process
begin
wait for clk_period*4;
reset <='1';
wait for clk_period*4;
reset <='0';
end process;

end;
Danke.

Beitrag melden | Bearbeiten | Thread verschieben | Thread sperren | 
Thread löschen |

von Jan M. (mueschel)


Lesenswert?

Hier sind die beiden Übeltäter:

> port(reset,clk:in std_logic;
> UUT : entity work.counter port map (clk,reset,counter);

Vergiss diese Kurzschreibweise lieber schnell wieder, bei jeder Entity 
mit mehr als einer handvoll Eingängen wird es endgültig unübersichtlich.

Außerdem ein Kommentar hierzu:
> process(clk)
>     begin
>     if reset='1' then

Wenn du einen asynchronen Reset beschreibst, muss reset auch mit in die 
Sensitivitätsliste.

von Sensor K. (Firma: Student) (sensor82)


Lesenswert?

Danke Jan M,
jetzt funktioniert es.

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
Noch kein Account? Hier anmelden.