Altifigence Academy

29 / 37 · Concetto

Progetto integrato: rilevatore di 101 sovrapposti

Applicare minimizzazione dello stato, validità, uscita registrata e verifica indipendente.

Fissare prima i requisiti

Ai fronti di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci con valid=1 si accetta un bit_in. Se gli ultimi bit accettati terminano con 101, hit vale 1 per un ciclo dopo quel fronte. Sono ammessi pattern sovrapposti: 10101 deve dare hit al terzo e quinto bit. valid=0 mantiene lo stato e azzera hit; reset inizializza entrambi.

Memorizzare solo il passato necessario

S0 significa nessun prefisso corrispondente, S1 terminazione in 1, S10 terminazione in 10. Completato 101, l'ultimo 1 può iniziare il pattern seguente: si torna quindi a S1.

StatoBit accettato 0Bit accettato 1
S0S0, hit=0S1, hit=0
S1S10, hit=0S1, hit=0
S10S0, hit=0S1, hit=1

Ogni colonna registra un fronte di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci. Gli ingressi sono quelli immediatamente precedenti; gli stati con „after“ quelli subito dopo l’aggiornamento. Le colonne indicano l’ordine dei campioni, non il ritardo fisico di propagazioneRitardo di propagazione Tempo dalla variazione d’ingresso all’assestamento corretto dell’uscita. Equivalenza logica e proprietà temporali sono distinte. Approfondisci. Dopo reset si parte da S0 e valid è sempre 1. La rilevazione al terzo bit lascia S1, permettendo quella al quinto.

Due rilevamenti sovrapposti in 10101
Mostra i dati della forma d’onda
Dati della forma d’onda: ogni carattere è un intervallo; il punto mantiene lo stato precedente; p è un ciclo di clock.
SegnaleForma d’ondaValori del bus
accepted bit10101
state after23452S1 → S10 → S1 → S10 → S1
hit after0.101

Implementare un'uscita di rilevazione registrata

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 memorizza in un registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci il risultato calcolato da stato e ingresso accettato. Diversamente da un'uscita Mealy puramente combinatoria, non reagisce subito a bit_in fra i fronti. L'esempio SystemVerilog generale richiede un controllo separato della sintassi supportata e delle evidenze d'esecuzione dell'engine a clock singolo fornito.

Calcolare il successo indipendentemente

Il riferimento può concatenare solo i bit accettati in una stringa e, da lunghezza tre, confrontare gli ultimi tre caratteri con 101. Non serve copiare la codifica FSMMacchina a stati Modello che determina stato successivo e uscite da stato memorizzato e ingressi. Transizioni, uscite e reset si definiscono insieme. Approfondisci.

  • 101 → hit alla posizione 3
  • 10101 → hit alle posizioni 3,5
  • 11101 → hit alla posizione 5
  • 1001 → nessuna rilevazione
  • 1,0, poi reset, poi 1 → nessuna rilevazione
  • Inserire valid=0 fra o dopo 1,0 → stessi risultati per numero d'accettazione

Il modello seguente verifica ingressi continuamente validi. Non prova reset, stop valid o timing fisico.

Modifica gli ingressi

Prova tu

Qual è la sequenza minima che differisce dalla specifica tornando a S0 dopo 101?

Leggi la spiegazione
  1. I hit corretti sono al terzo e quinto bit. Tornando a S0, l’ultimo 1 della prima rilevazione non può iniziare la successiva e si perde il hit al quinto.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.