VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks

Anfang   zurück   weiter   Ende
Autor Beitrag
DaMicha
Stammgast


Beiträge: 27

New PostErstellt: 01.11.06, 10:28     Betreff: Re: blinkende led Antwort mit Zitat  

MERISH Kapuzenpullover Pullover Slim...
Moin Mish

    Zitat: Gast
      Zitat: DaMicha
      Ach so, der Reset ist asynchron und Low-Aktiv
    Low-Aktiv meint es geschieht eine Aktion wenn er 0 ist?
    Asynchron? Huh?
Es gibt prinzipiell zwei Wege einen Reset an einem Register zu realisieren: synchron oder asynchron (oder beides) zum Takt.
Synchron bedeutet, dass mit dem Takt der Inhalt des Registers zurück gesetzt wird.
Asynchron bedeutet, dass unabhängig zum Takt der Inhalt des Registers zurückgesetzt wird.
In VHDL sieht das folgendermaßen aus:

synchron:
if (rising_edge(clk)) then
if (reset = '0') then -- low aktiver reset !
cnt := 0;
else
cnt := cnt + 1;
end if;
end if;

asynchron:
if (reset = '0') then
cnt := '0';
elsif (rising_edge(clk)) then
cnt := cnt + 1;
end if;

Der Vorteil des asynchronen Resets ist, dass Du Deine Logik in einen definierten Zustand bekommst, ohne dass der Takt schon anliegt. Sobald also der Takt da ist, kann es definiert losgehen!

und hier nochmal die Mischform, die sich automatisch ergibt, sobald man weitere Logik dem Prozess hinzufügt.

if (reset = '0') then
cnt := '0';
elsif (rising_edge(clk)) then
if (set_to_0 = '1' or irgend_was_anderes = '0') then
cnt := 0;
elsif
cnt := cnt + 1;
end if;
end if;

Bis denn,
DaMicha.


[editiert: 01.11.06, 10:28 von DaMicha]
nach oben
Benutzerprofil anzeigen Private Nachricht an dieses Mitglied senden
Sortierung ändern:  
Anfang   zurück   weiter   Ende
Seite 578 von 886
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj