VHDL Procedure Beispiel: Inkrementieren eines Standard Logic Vectors
Was ist eine VHDL Procedure?
Procedures gehören zur Subprogram-Familie in VHDL. Sie kapseln wiederverwendbare Logik, reduzieren Code-Duplikation und verbessern Wartbarkeit. Durch einmalige Definition einer Procedure können Sie sie aus mehreren Prozessen oder Architekturen aufrufen und so konsistentes Verhalten sicherstellen.
Beispiel: Inkrementieren eines std_logic_vector
Das folgende Beispiel demonstriert eine Procedure, die einen 8-Bit std_logic_vector entgegennimmt, eins addiert und das Ergebnis zurückgibt. Die Procedure beinhaltet auch einen 1-ns-Wait zur Illustration von Timing-Kontrolle in einem Testbench.
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity example_procedure_simple is end example_procedure_simple; architecture behave of ex_procedure_simple is signal r_TEST : std_logic_vector(7 downto 0) := X"42"; -- Purpose: Inkrementiert einen std_logic_vector um 1 procedure p_INCREMENT_SLV ( signal r_IN : in std_logic_vector(7 downto 0); signal r_OUT : out std_logic_vector(7 downto 0) ) is begin r_OUT <= std_logic_vector(unsigned(r_IN) + 1); wait for 1 ns; -- Wait ist hier OK. end p_INCREMENT_SLV; begin process is begin wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait for 10 ns; p_INCREMENT_SLV(r_TEST, r_TEST); wait; end process; end behave;
Warum ein Wait Statement?
Wait Statements sind innerhalb einer Procedure legal, sofern der aufrufende Prozess keine Sensitivity List hat. Dieses Feature ist besonders nützlich in Testbenches, wo Sie deterministische Delays einführen möchten, ohne den Hauptprozess zu verunreinigen.
Kernaussagen
- Procedures können sowohl IN als auch OUT Signale haben.
- Sie eignen sich ideal für häufige Operationen wie Arithmetik auf std_logic_vector.
- Wait innerhalb einer Procedure hält Testbench-Logik sauber.
VHDL
- Einführung in VHDL: Ihr erstes AND-Gate bauen
- Umfassender Guide zu VHDL Typkonvertierungen mit Numeric_Std & Std_Logic_Arith
- VHDL Records für saubere, wiederverwendbare FIFO-Interfaces nutzen
- Signed vs. Unsigned in VHDL meistern: Praktische Einblicke
- C# Switch Statement meistern: Syntax, Beispiele & Best Practices
- C# Break Statement: Wie und wann man es einsetzt
- C# Continue Statement meistern: Schleifeniterationen effektiv überspringen
- String-Listen in VHDL erstellen: Best Practices & Beispiel
- C++ switch‑case meistern: Syntax, Einsatz und Praxisbeispiele
- Digitales Verfassen von Verfahren: Einfach, effizient und zuverlässig