Altifigence Academy

29 / 37 · Konzept

Abschlussentwurf: Überlappende 101-Muster erkennen

Zustandsminimierung, gültige Eingaben, registrierte Ausgänge und unabhängige Prüfung verbinden.

Zuerst die Anforderungen festlegen

An steigenden FlankenSteigende Flanke Übergang des Takts von 0 auf 1. Nicht zu verwechseln mit dem gesamten hohen Pegelintervall CLK=1. Mehr erfahren mit valid=1 wird ein bit_in angenommen. Enden die zuletzt angenommenen Bits auf 101, wird hit nach dieser Flanke einen Zyklus lang 1. Überlappung ist erlaubt: 10101 muss Treffer am dritten und fünften Bit liefern. valid=0 hält den Zustand und setzt hit=0; reset initialisiert beides.

Nur notwendige Vergangenheit speichern

S0 bedeutet kein passendes Präfix, S1 ein Ende auf 1, S10 ein Ende auf 10. Nach vollständigem 101 kann die letzte 1 das nächste Muster beginnen; deshalb folgt S1.

ZustandAngenommenes Bit 0Angenommenes Bit 1
S0S0, hit=0S1, hit=0
S1S10, hit=0S1, hit=0
S10S0, hit=0S1, hit=1

Jede Spalte dokumentiert eine steigende FlankeSteigende Flanke Übergang des Takts von 0 auf 1. Nicht zu verwechseln mit dem gesamten hohen Pegelintervall CLK=1. Mehr erfahren. Eingänge gelten unmittelbar davor, Zustände mit „after“ unmittelbar nach der Aktualisierung. Die Spalten zeigen die Reihenfolge der Abtastungen, keine physische LaufzeitLaufzeit Zeit nach einer Eingangsänderung, bis der Ausgang auf dem richtigen Wert stabil ist. Logische Äquivalenz und zeitliche Eigenschaften sind getrennte Aussagen. Mehr erfahren. Nach Reset beginnt S0; valid ist überall 1. Der Treffer am dritten Bit lässt S1 zurück und ermöglicht den Treffer am fünften.

Zwei überlappende Erkennungen in 10101
Wellenformdaten anzeigen
Wellenformdaten: Jedes Zeichen steht für ein Intervall, ein Punkt hält den vorherigen Zustand und p ist ein Taktzyklus.
SignalWellenformBuswerte
accepted bit10101
state after23452S1 → S10 → S1 → S10 → S1
hit after0.101

Einen registrierten Treffer implementieren

SystemVerilog
module pattern_101 (
  input logic clk, rst, valid, bit_in,
  output logic hit
);
  typedef enum logic [1:0] {S0, S1, S10} state_t;
  state_t state;
  always_ff @(posedge clk) begin
    if (rst) begin
      state <= S0;
      hit <= 1'b0;
    end else begin
      hit <= 1'b0;
      if (valid) begin
        case (state)
          S0: state <= bit_in ? S1 : S0;
          S1: state <= bit_in ? S1 : S10;
          S10: begin
            state <= bit_in ? S1 : S0;
            hit <= bit_in;
          end
          default: state <= S0;
        endcase
      end
    end
  end
endmodule

hit speichert die aus Zustand und angenommenem Eingang berechnete Ausgabe in einem RegisterRegister Speichert einen Zustand aus mehreren Bits. Die synchronen Register dieses Kurses übernehmen festgelegte Eingaben an Taktflanken. Mehr erfahren. Anders als ein rein kombinatorischer Mealy-Ausgang reagiert es nicht sofort auf bit_in zwischen Flanken. Dieses allgemeine SystemVerilog-Beispiel ist gesondert auf unterstützte Syntax und Ausführungsnachweise der bereitgestellten Einzeltakt-Engine zu prüfen.

Erfolg unabhängig berechnen

Eine Referenz kann nur angenommene Bits an einen String anhängen und ab Länge drei dessen letzte drei Zeichen mit 101 vergleichen. FSM-CodierungenZustandsautomat Modell, das aus gespeichertem Zustand und Eingabe Folgezustand und Ausgänge bestimmt. Übergänge, Ausgänge und Resetregeln werden gemeinsam definiert. Mehr erfahren müssen dafür nicht kopiert werden.

  • 101 → Treffer 3
  • 10101 → Treffer 3,5
  • 11101 → Treffer 5
  • 1001 → kein Treffer
  • 1,0, dann reset, danach 1 → kein Treffer
  • valid=0 zwischen oder nach 1,0 einfügen → gleiche Ergebnisse nach Annahmenummer

Das folgende Bitfolgenmodell prüft kontinuierlich gültige Eingaben. Es belegt keine Prüfung von Reset, valid-Stopps oder physischem Timing.

Eingaben ändern

Selbst ausprobieren

Welche kürzeste Eingabefolge unterscheidet den Entwurf von der Spezifikation, wenn nach 101 nach S0 zurückgekehrt wird?

Erklärung lesen
  1. Korrekt sind Treffer am dritten und fünften Bit. Mit Rückkehr nach S0 kann die letzte 1 des ersten Treffers nicht als Anfang des nächsten dienen; der fünfte Treffer fehlt.

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