Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> VHDL

Ejemplo de procedimiento VHDL: Incrementando un vector Standard Logic

¿Qué es un procedimiento VHDL?

Los procedimientos pertenecen a la familia de subprogramas en VHDL. Encapsulan lógica reutilizable, reduciendo duplicación de código y mejorando mantenibilidad. Al definir un procedimiento una vez, puede invocarlo desde múltiples procesos o arquitecturas, asegurando comportamiento consistente.

Ejemplo: Incrementando un std_logic_vector

El siguiente ejemplo demuestra un procedimiento que toma un std_logic_vector de 8 bits, le suma uno y devuelve el resultado. El procedimiento también incluye una espera de 1 ns para ilustrar control de temporización dentro de 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";

 -- Propósito: Incrementa un std_logic_vector en 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 es OK aquí.
 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;

¿Por qué incluir una sentencia Wait?

Las sentencias wait son legales dentro de un procedimiento siempre que el proceso llamante no tenga lista de sensibilidad. Esta característica es especialmente útil en testbenches, donde puede necesitar introducir retrasos deterministas sin ensuciar el proceso principal.

Conclusiones clave

VHDL

  1. Redacción de procedimientos digitales: Simple, eficiente y fiable
  2. Dominando la sentencia switch en C#: Sintaxis, ejemplos y mejores prácticas
  3. Sentencia break en C#: Cómo y cuándo usarla
  4. Dominando la sentencia continue en C#: Cómo saltar iteraciones de bucles eficazmente
  5. Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
  6. Introducción a VHDL: Construyendo tu primera compuerta AND
  7. Guía completa de conversiones de tipos VHDL con Numeric_Std y Std_Logic_Arith
  8. Aprovechando records VHDL para interfaces FIFO limpias y reutilizables
  9. Dominando tipos Signed vs Unsigned en VHDL: Perspectivas prácticas
  10. Variables VHDL explicadas: Ejemplos prácticos y reglas para diseño fiable
  11. Creación de listas de cadenas en VHDL: Buenas prácticas y ejemplo