Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> VHDL

Exemplo de Procedure VHDL: Incrementando um Standard Logic Vector

O que é uma Procedure VHDL?

Procedimentos pertencem à família de subprogramas no VHDL. Eles encapsulam lógica reutilizável, reduzindo duplicação de código e melhorando manutenibilidade. Definindo um procedimento uma vez, você pode invocá-lo de múltiplos processos ou arquiteturas, garantindo comportamento consistente.

Exemplo: Incrementando um std_logic_vector

O exemplo a seguir demonstra um procedimento que recebe um std_logic_vector de 8 bits, adiciona um a ele e retorna o resultado. O procedimento também inclui um wait de 1 ns para ilustrar controle de timing dentro de um 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: Increments a std_logic_vector by 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 is OK here.
 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 que Incluir um Statement Wait?

Statements wait são legais dentro de um procedimento desde que o processo chamador não tenha lista de sensibilidade. Esse recurso é especialmente útil em testbenches, onde você pode precisar introduzir atrasos determinísticos sem poluir o processo principal.

Principais Conclusões

VHDL

  1. Introdução ao VHDL: Construindo sua Primeira Porta AND
  2. Guia Completo de Conversões de Tipos VHDL com Numeric_Std e Std_Logic_Arith
  3. Aproveitando Records VHDL para Interfaces FIFO Limpas e Reutilizáveis
  4. Dominando Tipos Signed vs Unsigned em VHDL: Insights Práticos
  5. Dominando a Instrução Switch em C#: Sintaxe, Exemplos e Boas Práticas
  6. Instrução Break em C#: Como e Quando Usar
  7. Dominando a Instrução Continue em C#: Como Pular Iterações de Loop Eficazmente
  8. Criando Listas de Strings em VHDL: Boas Práticas e Exemplo
  9. Dominando Switch-Case em C++: Sintaxe, Uso e Exemplos Práticos
  10. Escrita de Procedimentos Digitais: Simples, Eficiente e Confiável