Verzögerung mit Reset

Gast #5925833
Lesenswert?

Hallo miteinander,

ich habe diesen Counter gefunden und mich gefragt, ob ich dort auch 
einen RESET einfügen kann, sodass ich den Counter mit einem anderen 
Prozess aktivieren bzw. deaktivieren kann, um eine Verzögerung zu 
bekommen.
1
   process begin  
2
      wait until rising_edge(clk); -- warten bis zum nächsten Takt 
3
      if (c<24999999) then         -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz 
4
          c <= c+1;                -- wenn kleiner: weiterzählen 
5
      else                         -- wenn Zählerende erreicht: 
6
          c <= 0;                  -- Zähler zurücksetzen 
7
          x <= not x;              -- und Signal x togglen 
8
      end if; 
9
   end process;
Der Code kommt von Lothar:
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html

Beste Grüße
Tim
Moderator (Firma: Titel) Persönliche Seite #5925848
Lesenswert?

Tim schrieb:
> ob ich dort auch einen RESET einfügen kann
Weil in einem Prozess immer die letzte Zuweisung an eine signal 
"gewinnt", würde das im einfachsten Fall so aussehen:
1
   process begin  
2
      wait until rising_edge(clk); -- warten bis zum nächsten Takt 
3
      if c<24999999 then           -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz 
4
          c <= c+1;                -- wenn kleiner: weiterzählen 
5
      else                         -- wenn Zählerende erreicht: 
6
          c <= 0;                  -- Zähler zurücksetzen 
7
          x <= not x;              -- und Signal x togglen 
8
      end if; 
9
      if RESET = '1' then          -- Zählerreset behandeln
10
         c <= 0;
11
         x <= '0';
12
      end if;
13
   end process;

Oder so:
1
   process begin  
2
      wait until rising_edge(clk);  -- warten bis zum nächsten Takt 
3
      if RESET = '1' then           -- Reset aktiv? 
4
         c <= 0;                    -- ja -> zurücksetzen
5
         x <= '0';
6
      else                          -- nein -> zählen
7
         if c<24999999 then         -- 0…24999999 = 25000000 Takte = 1/2 Sekunde bei 50MHz 
8
            c <= c+1;               -- wenn kleiner: weiterzählen 
9
         else                       -- wenn Zählerende erreicht: 
10
            c <= 0;                 -- Zähler zurücksetzen 
11
            x <= not x;             -- und Signal x togglen 
12
         end if; 
13
      end if;
14
   end process;

> mit einem anderen Prozess aktivieren bzw. deaktivieren kann,
> um eine Verzögerung zu bekommen.
Warum machst du diesen Zähler nicht gleich in dem "anderen" Prozess?

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