Forum: FPGA, VHDL & Co. Anfänger: Frage zu Signaländerung


von Strohzirkus (Gast)


Angehängte Dateien:

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;

von Strohzirkus (Gast)


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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

: Bearbeitet durch Moderator
von Strohzirkus (Gast)


Lesenswert?

danke danke danke :D

von J. S. (engineer) Benutzerseite


Lesenswert?

Wirf mal die Abhängigkeit des Taktes vom Reset raus, oder formuliere es 
komplett. Der Else-Zweig ist leer.

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.