Altifigence Academy

2 / 37 · Konzept

Signale und Ports: Vertrag über Breite, Richtung und Zeit

Schnittstellen lesen und Prüfkriterien für kombinatorische und Zustandsausgänge trennen.

Die Portliste als Schaltungsvertrag lesen

input logic [7:0] data bezeichnet acht gleichzeitig übertragene Bits, nicht acht nacheinander eintreffende Werte. Der Datentyp logic allein erzeugt keinen Speicher. Ob eine kombinatorische Zuweisung oder ein flankengesteuerter sequenzieller Block das Signal treibt, bestimmt die Hardwarefunktion.

Prüfen Sie neben Breite und Richtung: Wann ist das Signal gültig? Wer treibt es? Welchen Wert hat es nach Reset? Ohne diese Angaben können einzeln korrekte Module zusammen ein fehlerhaftes System bilden.

Derselbe MUX hat zwei Arten von Ausgängen

Die Übungen betrachten das Auswahlergebnis y und den gespeicherten Wert sampled_y gemeinsam.

y(t)=s(t)‾a(t)+s(t)b(t)y(t)=\overline{s(t)}a(t)+s(t)b(t)
qk+1=y(tk−)q_{k+1}=y(t_k^-)

Die erste Gleichung ist kombinatorisch. Die zweite beschreibt ein ideales synchrones Modell, das den unmittelbar vor der Flanke stabilen Wert y speichert. Wer beide Ausgänge immer mit den aktuellen Eingängen vergleicht, beurteilt ein korrektes RegisterRegister Speichert einen Zustand aus mehreren Bits. Die synchronen Register dieses Kurses übernehmen festgelegte Eingaben an Taktflanken. Mehr erfahren als fehlerhaft.

SystemVerilog
assign y = sel ? b : a;
always_ff @(posedge clk) sampled_y <= y;

Im Simulator gibt es auch innerhalb eines Zeitpunkts eine Ereignisreihenfolge. Reale Bauelemente haben SetupSetup Mindestzeit vor der Abtastflanke, in der Eingangsdaten stabil sein müssen. Bei Verletzung ist das gespeicherte Ergebnis nicht garantiert. Mehr erfahren, Hold und Clock-to-Q-Verzögerung. Die Gleichungen heben diese Unterschiede nicht auf, sondern legen die Beobachtungszeitpunkte für funktionale Prüfungen fest.

Die Pfeile zeigen Datenabhängigkeiten. Änderungen an a, b oder sel ändern zuerst y; sampled_y übernimmt einen neuen Wert erst an der steigenden FlankeSteigende Flanke Übergang des Takts von 0 auf 1. Nicht zu verwechseln mit dem gesamten hohen Pegelintervall CLK=1. Mehr erfahren.

Grenze zwischen kombinatorischem und gespeichertem Ausgang
  1. a · b · sel: Gleichzeitig anliegende Eingänge
  2. MUX → y: Mit aktuellen Auswahlleitungen berechnen
  3. DFF → sampled_y: y an der steigenden Flanke speichern

Fragen für die Prüfung

  • Ist sel ein definierter 0/1-Eingang oder ein asynchrones externes Signal?
  • Erfolgt der Vergleich von verändertem y mit sampled_y erst nach der nächsten gültigen Flanke?
  • Wird sampled_y durch ResetReset Steuerung zur Rückkehr in einen festgelegten Anfangszustand. Synchron/asynchron und Priorität gegenüber anderen Steuerungen müssen definiert werden. Mehr erfahren initialisiert oder durch eine Werkzeugeinstellung?

Der explizite Anfangswert dieser Übung dient einem reproduzierbaren 0/1-Modell. Er garantiert keinen entsprechenden Einschaltzustand eines realen Chips.

Selbst ausprobieren

Zwischen Taktflanken wechselt a von 0 auf 1, während sel=0 bleibt. Wann ändern sich y und sampled_y?

Erklärung lesen

y ändert sich nach Auswertung beziehungsweise Laufzeit des kombinatorischen Pfads. sampled_y wird an der nächsten steigenden Flanke aktualisiert, die diesen Wert übernimmt. Eingangsänderungen nahe der Flanke sind reale Setup/Hold-Fragen; dieses einfache Modell beweist keine Sicherheit.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.