Anfänger: Frage zu Signaländerung

Gast #7034144
Lesenswert?

Hi,
 habe eine Frage zur Signaländerung.
Habe gerade aber noch ein Problem mit meiner einfachen Testbench.
Die Simulation startet nicht, seitdem ich einen Reset eingeführt habe..

Will dabei schauen, wann meine Testsignale inkrementiert werden.
Weil sobald die CLK High Wird wird das Signal verändert.

Kann das noch nicht unterscheiden zwischen Takt und Deltazyklus.

Im Anhang ist das das ganze ohne Reset simuliert. Aber da ist noch zu 
viel Spielraum für die Interpretation.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3

4
use IEEE.NUMERIC_STD.ALL;
5

6

7

8
entity signaltest is
9
--  Port ( );
10
end signaltest;
11

12
architecture Behavioral of signaltest is
13
    signal test : unsigned (47 downto 0)  :=X"000000000000" ;
14
    signal numbertest : integer := 0;
15
    signal clk1 : std_logic := '0';
16
    signal reset_tb : std_logic := '1';
17
---
18
begin
19

20
reset_p :process 
21
begin
22
    reset_tb <= '1';
23

24
    wait for 10 ns;
25
    reset_tb <= '0';
26
    wait; -- forever...
27

28
end process reset_p;
29

30
clk1_gen : process 
31
begin
32
   if(reset_tb = '0') then
33
        clk1 <= '0';
34
        wait for 10 ns;
35
        clk1 <= '1';
36
        wait for 10 ns;
37
    else
38
    end if;
39
end process clk1_gen; 
40

41
test_p : process (clk1,test,numbertest)
42
begin
43
if rising_edge(clk1) then
44
    test <= test +1 ;
45
    numbertest <= numbertest +1 ;
46
end if;
47
    
48
end process test_p;
49

50
end Behavioral;
Angehängte Dateien:
Gast #7034173
Lesenswert?

Außerdem denke ich:
Prozess wird sequentiell abgearbeitet und dann werden auch schon die 
Signale aktualisiert.
Das geschieht einfach ganz schnell sobald die clk Flanke high wird in 
diesem Fall.
Deswegen sieht man eine direkte Änderung , wenn die clk-Flanke high wird 
oder?
Moderator (Firma: Titel) Persönliche Seite #7034176
Lesenswert?

Strohzirkus schrieb:
> Prozess wird sequentiell abgearbeitet und dann werden auch schon die
> Signale aktualisiert.
Die Signale werden am Ende des Prozesses oder beim nächsten wait 
aktuelisiert.

Strohzirkus schrieb:
> test_p : process (clk1,test,numbertest)
Da gehört nur clk1 rein. Denn nur die Änderung von clk1 macht eine 
Neuberechnung des Prozesses nötig.

> Weil sobald die CLK High Wird wird das Signal verändert.
Ja klar. Passt doch. In der Verhaltenssimulation gibt es keine 
Verzögerungen.

> Die Simulation startet nicht, seitdem ich einen Reset eingeführt habe..
Weil dein clk1_gen Prozess sich im Fall reset_tb = '1' zu Tode rechnet. 
Denn da ist in diesem Fall kein "wait" drin, der Prozess wird ewig und 
dreieihalb Tage durchlaufen und die Simulationszeit nicht erhöht.

Mein Tipp: lass den Reset für den Takt einfach weg. In der Praxis gibt 
es das sowieso nicht, da läuft der Takt immer durch, der Reset schaltet 
den nicht ab.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren