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