mikrocontroller.net

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


Autor: Sensor Kit (Firma: Student) (sensor82)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 |

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sensor Kit (Firma: Student) (sensor82)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Jan M,
jetzt funktioniert es.

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.