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

Verilog Block Statements meistern: Sequenzielle & Parallele Ausführung

Statement-Gruppen, syntaktisch äquivalent zu einzelnen Statements: Block Statements. Zwei Arten: Sequential und Parallel.

Sequentiell (Sequential)

Umgeben von begin/end. Ausführung in Reihenfolge, nacheinander. Delay-Werte relativ zur Ausführungszeit des vorherigen Statements. Nach letztem Statement → Control Flow weiter.

module design0;
    bit [31:0] data;
    initial begin
        #10 data = 8'hfe;  // Zeit 10
        $display("[Time=%0t] data=0x%0h", $time, data);
        #20 data = 8'h11;  // Zeit 30 (10+20 relativ zum vorherigen)
        $display("[Time=%0t] data=0x%0h", $time, data);
    end
endmodule

Simulationslog: Time=10 → 0xfe, Time=30 → 0x11.

Parallel (Parallel)

Statements laufen concurrent. Delay-Control für Time-Ordering. Umgeben von fork/join.

initial begin
    #10 data = 8'hfe;
    fork
        #20 data = 8'h11;  // Start bei Zeit 10+20=30
        #10 data = 8'h00;  // Start bei Zeit 10+10=20 → executes FIRST
    join
end

Fork-Join Launch bei Zeit 10. Statement mit #10 (→ Zeit 20) führt zuerst aus, dann #20 (→ Zeit 30).

Verschachtelung: begin-end in fork-join

initial begin
    #10 data = 8'hfe;
    fork
        #10 data = 8'h11;           // Zeit 20
        begin                       // Sequential Block IN Parallel Block
            #20 data = 8'h00;       // Zeit 30 (relativ zu Fork-Launch bei 10? Nein: relativ zu Block-Start bei 10+20=30)
            #30 data = 8'haa;       // Zeit 60 (30+30)
        end
    join
end

Ausführung: 8'h11 bei 20, 8'h00 bei 30, 8'haa bei 60.

Blöcke benennen

Sowohl begin als auch fork können benannt werden: begin : name_seq, fork : name_fork. Referenzierbar in disable Statement.

begin : name_seq [statements] end
fork : name_fork [statements] join

Verilog

  1. Insight-Generierung durch automatisierte Datenvorbereitung beschleunigen
  2. Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
  3. Verilog Concatenation meistern: Praktischer Leitfaden
  4. Verilog Essentials: Kurzer Überblick
  5. Verilog Assignments verstehen: Typen, Syntax und Best Practices
  6. Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
  7. Verilog Control Flow meistern: IF-ELSE, Case, Loops und mehr
  8. Verilog Functions meistern für effizientes RTL-Design
  9. Verilog Scheduling Semantics verstehen: Timing, Events und Ausführungsreihenfolge
  10. S&OP, Daten und Planungsysteme für zukünftigen Erfolg modernisieren