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

VHDL Port Map Instanziierung meistern: Praktischer Leitfaden

In VHDL ist ein Modul eine in sich geschlossene Einheit, die über ihr Entity mit der Außenwelt kommuniziert. Die Port Map Klausel einer Instanziierung verbindet die formalen Ports des Entities mit Signalen im umgebenden Design.

Module, Entities und Testbenches

FPGA/ASIC-Designlogik liegt in Modulen mit klar definierten Ein-/Ausgängen. Ein modul ohne Ports ist ein Testbench – Simulationswrapper, der Stimuli an das Device Under Test (DUT) liefert, aber nie auf einem Chip erscheint.

Frühere Tutorials schrieben alles in eine Datei – praktisch für Experimente, ungeeignet für Produktion. Trennung von DUT und Testbench verbessert Lesbarkeit, Wiederverwendbarkeit, Simulationshierarchie.

Gängige Namenskonventionen

Design-Datei: MyModule.vhd, Testbench: MyModuleTb.vhd. DUT-Architektur oft rtl (Register-Transfer Level), Testbench-Architektur sim. Konvention signalisiert sofort Synthese- vs. Simulationszweck.

VHDL Port Map Instanziierung meistern: Praktischer Leitfaden

VHDL Syntax für Port Map Instanziierung

Modul-Interface mit entity definieren:

entity <name> is
  port(
    <signal_name> : in|out|inout <type>;
    ...
  );
end entity;

Instanziierung in anderer Datei mit expliziter Port Map:

<label> : entity <lib>.<entity>(<arch>)
  port map(
    <entity_signal> => <local_signal>,
    ...
  );

<label> erscheint in Simulator-Hierarchie, <lib> default work, jeder formale Port muss an lokales Signal gebunden sein.

Praxisbeispiel: 4-zu-1 MUX

Komplette Testbench und DUT für 4:1 Multiplexer mit unsigned 8-Bit Signalen.

Testbench Code

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

entity T15_PortMapTb is
end entity;

architecture sim of T15_PortMapTb is
  signal Sig1 : unsigned(7 downto 0) := x"AA";
  signal Sig2 : unsigned(7 downto 0) := x"BB";
  signal Sig3 : unsigned(7 downto 0) := x"CC";
  signal Sig4 : unsigned(7 downto 0) := x"DD";
  signal Sel : unsigned(1 downto 0) := (others => '0');
  signal Output : unsigned(7 downto 0);
begin
  i_Mux1 : entity work.T15_Mux(rtl)
    port map(
      Sel => Sel, Sig1 => Sig1, Sig2 => Sig2, Sig3 => Sig3, Sig4 => Sig4, Output => Output
    );
  process is
  begin
    wait for 10 ns; Sel <= Sel + 1;
    wait for 10 ns; Sel <= Sel + 1;
    wait for 10 ns; Sel <= Sel + 1;
    wait for 10 ns; Sel <= Sel + 1;
    wait for 10 ns; Sel <= "UU";
    wait;
  end process;
end architecture;

Modul Code

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

entity T15_Mux is
  port(
    Sig1 : in unsigned(7 downto 0);
    Sig2 : in unsigned(7 downto 0);
    Sig3 : in unsigned(7 downto 0);
    Sig4 : in unsigned(7 downto 0);
    Sel : in unsigned(1 downto 0);
    Output : out unsigned(7 downto 0)
  );
end entity;

architecture rtl of T15_Mux is
begin
  process(Sel, Sig1, Sig2, Sig3, Sig4) is
  begin
    case Sel is
      when "00" => Output <= Sig1;
      when "01" => Output <= Sig2;
      when "10" => Output <= Sig3;
      when "11" => Output <= Sig4;
      when others => Output <= (others => 'X');
    end case;
  end process;
end architecture;

Wellenform-Analyse

ModelSim Simulation liefert erwartetes MUX-Verhalten. Snapshot bestätigt korrektes Umschalten zwischen vier Eingängen bei Sel-Änderung.

VHDL Port Map Instanziierung meistern: Praktischer Leitfaden

Kernpunkte

Nächstes Tutorial für tiefere VHDL-Design-Patterns.

VHDL

  1. Wie Molybdän die moderne Industrie formt: Nutzung, Vorteile und Versorgungsdynamik
  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. Zufallszahlen in VHDL generieren: Von Uniform zu OSVVM
  7. In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
  8. Impure Functions in VHDL nutzen: FSM-Lesbarkeit und Wartbarkeit steigern
  9. VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design
  10. Schleiftechniken für Werkzeugschleifmaschinen meistern: Praktischer Leitfaden