Mudanças entre as edições de "Folha de consulta de VHDL"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 3: Linha 3:
 
==Instruções sequencias==
 
==Instruções sequencias==
 
Essas instruções devem ser utilizadas dentro de um '''PROCESS''', ou '''FUNCTION''', ou '''PROCEDURE'''.  Elas não podem ser usadas diretamente na '''ARCHITECTURE'''
 
Essas instruções devem ser utilizadas dentro de um '''PROCESS''', ou '''FUNCTION''', ou '''PROCEDURE'''.  Elas não podem ser usadas diretamente na '''ARCHITECTURE'''
 +
*Atribuição de valor sobre SIGNAL:
 +
<syntaxhighlight lang=vhdl>
 +
[rótulo opcional]: <signal_name> <= <expression>;
 +
</syntaxhighlight>
 +
 +
*Atribuição de valor sobre VARIABLE:
 +
<syntaxhighlight lang=vhdl>
 +
[rótulo opcional]: <variable_name> := <expression>;
 +
</syntaxhighlight>
 +
 
*Instrução '''LOOP''' incondicional:
 
*Instrução '''LOOP''' incondicional:
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo:] LOOP
+
[rótulo opcional:] LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
Linha 14: Linha 24:
 
*Instrução '''FOR-LOOP''':
 
*Instrução '''FOR-LOOP''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo:] FOR identificador IN faixa LOOP
+
[rótulo opcional:] FOR identificador IN faixa LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
Linha 23: Linha 33:
 
*Instrução '''WHILE-LOOP''':
 
*Instrução '''WHILE-LOOP''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo:] WHILE condição LOOP            -- Executa as "afirmações enquanto a "condição" for verdadeira
+
[rótulo opcional:] WHILE condição LOOP            -- Executa as "afirmações enquanto a "condição" for verdadeira
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
Linha 32: Linha 42:
 
*Instrução LOOP com '''EXIT''':
 
*Instrução LOOP com '''EXIT''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo:] [FOR identificador IN faixa] LOOP
+
[rótulo opcional:] [FOR identificador IN faixa] LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             EXIT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, termina o "LOOP"
 
             EXIT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, termina o "LOOP"
Linha 42: Linha 52:
 
*Instrução LOOP com '''NEXT''':
 
*Instrução LOOP com '''NEXT''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo:] [FOR identificador IN faixa] LOOP
+
[rótulo opcional:] [FOR identificador IN faixa] LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             NEXT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, não executa as linhas até a linha "END LOOP"
 
             NEXT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, não executa as linhas até a linha "END LOOP"
Linha 53: Linha 63:
 
*Instrução '''CASE'''   
 
*Instrução '''CASE'''   
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
  [rótulo:] CASE expressão IS
+
  [rótulo opcional:] CASE expressão IS
 
                   WHEN valor                            -- valor único
 
                   WHEN valor                            -- valor único
 
                     => atribuições;                             
 
                     => atribuições;                             

Edição das 21h39min de 1 de abril de 2024

Instruções concorrentes

Instruções sequencias

Essas instruções devem ser utilizadas dentro de um PROCESS, ou FUNCTION, ou PROCEDURE. Elas não podem ser usadas diretamente na ARCHITECTURE

  • Atribuição de valor sobre SIGNAL:
[rótulo opcional]: <signal_name> <= <expression>;
  • Atribuição de valor sobre VARIABLE:
[rótulo opcional]: <variable_name> := <expression>;
  • Instrução LOOP incondicional:
[rótulo opcional:] LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução FOR-LOOP:
[rótulo opcional:] FOR identificador IN faixa LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução WHILE-LOOP:
[rótulo opcional:] WHILE condição LOOP            -- Executa as "afirmações enquanto a "condição" for verdadeira
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução LOOP com EXIT:
[rótulo opcional:] [FOR identificador IN faixa] LOOP
             afirmação_sequencial;
             EXIT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, termina o "LOOP"
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução LOOP com NEXT:
[rótulo opcional:] [FOR identificador IN faixa] LOOP
             afirmação_sequencial;
             NEXT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, não executa as linhas até a linha "END LOOP"
                                               -- e incrementa o "identificador".
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução CASE
 [rótulo opcional:] CASE expressão IS
                  WHEN valor                            -- valor único
                    => atribuições;                            
                  ...
                  WHEN valor1 | valor2 | ... | valorN   -- lista de valores
                    => atribuições;  
                  ...
                  WHEN valor1 TO valor2                 -- faixa de valores
                    => atribuições;              
                  ...
          END CASE;