Art der Signalzuordnung

Was bedeuten "Kombinationszuteilung" und "Eintragszuteilung" an Signalen? Was sind insbesondere die Unterschiede zwischen diesen beiden Arten von Aufgaben?

Antworten (2)

Im Wesentlichen läuft der Unterschied darauf hinaus, ob das Signal an einer Taktflanke zugewiesen wird oder nicht.

Kombinatorischer Code wie A <= B + 1 würde A "sofort" B + 1 zuweisen, wohingegen

    process(clk)
    begin
        if(rising_edge(clk)) then
            A <= B + 1;
        end if;
    end process;

würde dazu führen, dass A nur bei einer steigenden Taktflanke B+1 zugewiesen wird. Mit Code wie diesem können andere Blöcke den Wert von A verwenden, wobei garantiert wird, dass sein Wert nach einer Taktflanke stabil und unveränderlich ist.

Register oder Clock-Gating im Allgemeinen, nehme ich an, sind wirklich das, was Designs mit jeder Komplikation möglich macht. Sie erstellen eine Pipeline von Operationen, indem Sie ein Register an der Grenze zwischen Operationen platzieren. Zum Beispiel müssen die Eingangsoperanden einer ALU stabil sein – in einem Register – damit die ALU richtig ausgeführt werden kann, und das Ergebnis der ALU-Ausführung sollte in einem Register sein, damit der Block, der es verwendet, die Änderung nicht „sieht“. Werte innerhalb der ALU, während die Berechnungen stattfinden, aber nur das stabile letzte Ergebnis.

Frage: Wird ein transparenter Riegel als kombinatorisch oder registriert betrachtet?
Ja und nein - der Eingang zu einem transparenten Latch wird direkt zum Ausgang weitergeleitet, nicht an einer Taktflanke. Aber das Hinzufügen eines Freigabesignals könnte bewirken, dass das Latch an einer Taktflanke gesteuert wird, dh undurchsichtig wird.

Zuweisungen in VHDL werden weder als registriert noch als kombinatorisch spezifiziert. In VHDL wird der tatsächliche Zuweisungstyp (der Typ der generierten RTL-Logik) lediglich abgeleitet.

Register in VHDL werden explizit durch Zuweisen eines Signals an einer Taktflanke erstellt, obwohl nur weil ein Prozess eine Uhr hat, bedeutet dies nicht, dass alle Signale in diesem Block an jeder Flanke zugewiesen werden.

Auch Register können ohne Takt abgeleitet werden, wenn ein Pfad durch einen Prozess kein Signal zuweist, dann geht VHDL davon aus, dass Sie dieses Signal zwischen aufeinanderfolgenden Durchgängen zwischenspeichern wollten. Dies wird als abgeleitetes Latch bezeichnet (und sollte vermieden werden).

VHDL weiß nichts über die Technologie, die Sie verwenden werden. Es weiß nicht, ob Ihre Synthese-Engine T, D, JK, SR oder eine andere Art von Latch erzeugen kann. Aus diesem Grund schlägt es nur einen Riegel vor, es liegt an der Synthese-Engine, zu entscheiden, welcher Riegel die Rechnung erfüllt oder ob es einfach unmöglich ist. In ähnlicher Weise könnte der Installateur sagen, dass ein bestimmter von der Synthese-Engine angeforderter Latch nicht verfügbar ist oder nicht genug davon vorhanden sind.