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

Concurrent Statements in VHDL meistern: Praktischer Leitfaden

Ein Concurrent Statement in VHDL ist eine Signalzuweisung direkt in der Architektur, außerhalb jedes process Blocks. Auch als Concurrent Assignment oder Concurrent Process bezeichnet.

Ein Concurrent Statement erzeugt implizit einen Prozess, der sensitiv auf alle Signale der rechten Seite der Zuweisung ist. Es ist syntaktischer Zucker für einen Prozess mit vollständiger Sensitivity List.

Diese Kurzschreibweise ist ideal für einfache kombinatorische Logik, die ein einzelnes Signal treibt. Statt vollem process mit Sensitivity List wird direkt im Architekturkörper zugewiesen.

Teil der Basic VHDL Tutorials Serie.

Richtig eingesetzt bleibt Code-Intent kristallklar – kein Prozess-Overhead für jedes einzelne Bit.

Übung

Video: Concurrent Statement erstellen.

Finaler Code dieses Tutorials:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity T13_ConcurrentProcsTb is
end entity;

architecture sim of T13_ConcurrentProcsTb is
  signal Uns : unsigned(5 downto 0) := (others => '0');
  signal Mul1 : unsigned(7 downto 0);
  signal Mul2 : unsigned(7 downto 0);
  signal Mul3 : unsigned(7 downto 0);
begin
  process is
  begin
    Uns <= Uns + 1;
    wait for 10 ns;
  end process;

  -- Prozess: Uns * 4
  process is
  begin
    Mul1 <= Uns & "00";
    wait on Uns;
  end process;

  -- Äquivalenter Prozess mit Sensitivity List
  process(Uns) is
  begin
    Mul2 <= Uns & "00";
  end process;

  -- Concurrent Statement
  Mul3 <= Uns & "00";
end architecture;

ModelSim Wellenform nach Run, Zoom auf Timeline:

Concurrent Statements in VHDL meistern: Praktischer Leitfaden

Mul1, Mul2, Mul3 verhalten sich exakt gleich – Concurrent Statement und die beiden Prozesse sind voll äquivalent.

Alle Signale rechts vom <= werden implizit zur Sensitivity List. Linkes Signal aktualisiert sich bei jeder Änderung der rechten Signale.

Beispiel: Multiplikation von Uns mit 4 durch Links-Bit-Shift (Null-Anhängen). Alle Signals unsigned → Compiler behandelt als Zahlen. Zwei Null-Bits anhängen = Multiplikation mit 4.

Concurrent Statements in VHDL meistern: Praktischer Leitfaden

Merksätze

Nächstes Tutorial »

VHDL

  1. VHDL Procedure Beispiel: Inkrementieren eines Standard Logic Vectors
  2. String-Listen in VHDL erstellen: Best Practices & Beispiel
  3. Tcl-gesteuerter Testbench für ein VHDL Code-Lock-Modul erstellen
  4. VHDL-Testbench-Simulation sauber beenden
  5. PWM-Controller in VHDL implementieren: Design, Simulation & FPGA-Demo
  6. Ein robuster VHDL-Ringpuffer-FIFO im Block-RAM entwerfen
  7. Selbstprüfenden VHDL-Testbench erstellen – Praxisleitfaden
  8. Dynamische verkettete Liste in VHDL mit Protected Types und Access-Pointern
  9. In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
  10. VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design