Gast
|
Erstellt: 24.06.08, 10:23 Betreff: Re: Parallele Signalzuweisung |
|
|
Das Verhalten ist so wie von Dir beschrieben in VHDL beabsichtigt.
Durch die Verwendung des zweiten FFs für Y verzögerst Du das Signal um einen Takt. Wenn die beiden Ausgänge sich zeitgleich ändern sollen, dann ist das 2. FF obsolete und X = Y.
Zum Delta-Delay: Bei parallelen (asynchronen) Signalzuweisungen gilt das so wie beschrieben Beispiel (parallele Signalzueisungen) Sig1 <= A + B; Sig2 <= A + Sig1; Sig3 <= C + Sig2:
Wenn sich A oder B ändert, dann ändert sich Sig1 (die Änderung wird ein Delta-Delay später wirksam). Diese Änderung bedingt dann wiederum eine Änderung an Sig2, diese dann eine an Sig3, d.h. am Ende hat Sig3 den Wert von A+A+B+C - nach 3 Deltazyklen (sind trotzdem 0 ns)
Allerdings ist in Deiner Schaltung ja ein Clock definiert, der wiederum ein definiertes Timing hat. Also nach der ersten Taktflanke ändern sich alle parallelen Signale, bis das System stabil ist, und wartet dann auf den nächsten Zeitevent (hier auf den Takt, das kann aber auch eine Anweisung sein, die um eine bestimmte Zeit (10 ns oder was auch immer) verzögert wurde.
BTW, wenn obiges Beispiel (Sig1-3) in einem getakteten Prozess stehen würde, dann würde Sig2 den alten Wert von Sig 1 verwenden und Sig3 den alten von Sig2, und die neuen Werte erst einen bzw. 2 Takte später berücksichtigt werden.
|
|