Declaração de Procedimento - Exemplo de VHDL
Os procedimentos fazem parte de um grupo de estruturas chamadas subprogramas. Os procedimentos são pequenas seções de código que executam uma operação que é reutilizada em todo o código. Isso serve para limpar o código, bem como permitir a reutilização.
Os procedimentos podem receber entradas e gerar saídas. Eles geralmente podem ser mais complicados do que funções. Não é necessário passar nenhum sinal para um procedimento. No exemplo abaixo existe um procedimento p_INCREMENT_SLV cuja finalidade é incrementar um vetor lógico padrão em 1 e gerar um sinal com o resultado.
Uma observação adicional sobre o uso de instruções de espera:
As instruções de espera PODEM ser usadas em um procedimento, desde que o processo que chama o procedimento não tenha uma lista de sensibilidade. No exemplo abaixo, o procedimento tem uma instrução de espera de 1 ns para demonstrar isso. Isso torna os procedimentos úteis para criar código 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;
VHDL
- Tutorial - Introdução ao VHDL
- Exemplos de conversões de VHDL
- Registros - Exemplo de VHDL
- Assinado vs. Não assinado em VHDL
- Instrução C# switch
- Instrução C# break
- C# continue declaração
- Como criar uma lista de strings em VHDL
- Instrução C++ Switch Case com EXEMPLO
- Procedimentos de escrita:simples e eficientes ao digital