DaMicha
Stammgast
Beiträge: 27
|
Erstellt: 01.11.06, 10:28 Betreff: Re: blinkende led |
|
|
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]
|
|