Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> VHDL

Exemple de procédure VHDL : incrémenter un std_logic_vector

Qu'est-ce qu'une procédure VHDL ?

Les procédures appartiennent à la famille des sous-programmes en VHDL. Elles encapsulent une logique réutilisable, réduisant la duplication de code et améliorant la maintenabilité. En définissant une procédure une fois, vous pouvez l'invoquer depuis plusieurs processus ou architectures, assurant un comportement cohérent.

Exemple : incrémenter un std_logic_vector

L'exemple suivant démontre une procédure qui prend un std_logic_vector 8 bits, y ajoute 1, et retourne le résultat. La procédure inclut aussi un wait de 1 ns pour illustrer le contrôle de timing dans un 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";

 -- But : Incrémente un std_logic_vector de 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 est OK ici.
 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;

Pourquoi inclure un wait statement ?

Les instructions wait sont légales dans une procédure à condition que le processus appelant n'ait pas de liste de sensibilité. Cette fonctionnalité est particulièrement utile dans les testbenchs, où vous pouvez avoir besoin d'introduire des délais déterministes sans encombrer le processus principal.

Points clés à retenir

VHDL

  1. Introduction à VHDL : construire votre première porte ET
  2. Guide complet des conversions de types VHDL avec Numeric_Std et Std_Logic_Arith
  3. Exploiter les records VHDL pour des interfaces FIFO propres et réutilisables
  4. Maîtriser l'instruction Switch C# : Syntaxe, exemples et bonnes pratiques
  5. Instruction Break C# : Comment et quand l'utiliser
  6. Maîtriser l'instruction Continue C# : Comment ignorer efficacement les itérations de boucle
  7. Créer des listes de chaînes en VHDL : Bonnes pratiques et exemple
  8. Maîtriser le switch-case en C++ : Syntaxe, utilisation et exemples pratiques
  9. Rédaction de procédures numériques : Simple, Efficace et Fiable