Verzögerung mit Reset

Gast #5925833
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
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.