Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog Sequence Detector: Zuverlässiges FSM für Mustererkennung bauen

Klassisches FSM-Beispiel: Sequence Detector erkennt festes Muster in einem Strom binärer Bits am Input.

Design: 1011 Detector

module det_1011 (input clk, rstn, in, output out);
    parameter IDLE=0, S1=1, S10=2, S101=3, S1011=4;
    reg [2:0] cur_state, next_state;
    assign out = (cur_state == S1011) ? 1 : 0;
    always @ (posedge clk) begin
        if (!rstn) cur_state <= IDLE;
        else cur_state <= next_state;
    end
    always @ (cur_state or in) begin
        case (cur_state)
            IDLE:  if (in) next_state=S1; else next_state=IDLE;
            S1:    if (in) next_state=IDLE; else next_state=S10;
            S10:   if (in) next_state=S101; else next_state=IDLE;
            S101:  if (in) next_state=S1011; else next_state=IDLE;
            S1011: next_state=IDLE;
        endcase
    end
endmodule

Testbench

Gezieltes Pattern: 1-0-1-1 (detected), dann 0-0-1-1-0-1-1 (detected again). Plus Random-Stimulus.

Simulationslog zeigt Detection bei T=190 und T=330.

Bug im Design

Können Sie ihn finden?

Hinweis: Im State S1011 geht es immer zu IDLE, aber bei Overlapping-Sequenzen (z. B. 1011011 – das zweite 1011 beginnt mit dem letzten 1 des ersten) verpasst der Detektor die Überlappung. Korrekt wäre: In S1011 bei in=1 → S1, bei in=0 → IDLE (oder passender Next-State für Overlap).

Verilog

  1. Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
  2. Verilog Concatenation meistern: Praktischer Leitfaden
  3. Verilog Sequence Detector: Zuverlässiges FSM für Mustererkennung bauen
  4. Verilog Pattern Detector: Erweiterte Sequenzerkennung für FPGA
  5. Verilog Assignments verstehen: Typen, Syntax und Best Practices
  6. Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
  7. Verilog Functions meistern für effizientes RTL-Design
  8. Verilog Tasks verstehen: Functions vs. Tasks, Syntax und Verwendung
  9. Verilog Clock Generator: Design & Implementierungsleitfaden
  10. Verilog Math Functions meistern für effizientes Hardware-Design