VHDL Clock Frage
Was ist der Unterschied zwischen diesen Aussagen in VHDL:
- if (clk'event und clk = '1') dann
- wenn aufsteigende Kante (clk) dann
Sind sie gleichwertig? Produzieren Sie das gleiche Verhalten (Ausgänge)? Warum sollte einer gegen den anderen verwendet werden?
Ist auch eine gegen die andere synthetisierbar? Was ist besser für die Synthese korrekte Codierung?
Antworten
Nein, sie sind nicht genau gleichwertig. Die erste Variante
if (clk'event and clk='1') then
funktioniert nur richtig, wenn der vorherige Zustand der Uhr tatsächlich '0' war. Dies funktioniert in den meisten Fällen einwandfrei, erfasst jedoch keine ungewöhnlichen Fälle, z. B. wenn der vorherige Status "U", "W", "X" oder "Z" war.
Die zweite Variante verwendet rising_edge()1 , die speziell prüft, ob der vorherige Zustand '0' oder 'L' war und der neue Zustand '1' oder 'H' ist.
1 Sie können die tatsächliche Definition unter Stapelüberlauf sehen