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 15: Linha 15:
 
*Atribuição de valor sobre SIGNAL:
 
*Atribuição de valor sobre SIGNAL:
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional]: <signal_name> <= <expression>;
+
[rótulo:] <signal_name> <= <expression>;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
*Atribuição de valor sobre VARIABLE:
 
*Atribuição de valor sobre VARIABLE:
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional]: <variable_name> := <expression>;
+
[rótulo:] <variable_name> := <expression>;
 +
</syntaxhighlight>
 +
 
 +
 
 +
:*Instrução '''IF'''
 +
<syntaxhighlight lang=vhdl>
 +
[rótulo:] IF condição THEN
 +
            afirmação_sequencial;
 +
            afirmação_sequencial;
 +
            ...
 +
        ELSIF condição THEN
 +
            afirmação_sequencial;
 +
            afirmação_sequencial;
 +
            ...
 +
        ELSE
 +
            afirmação_sequencial;
 +
            afirmação_sequencial;
 +
            ...
 +
        END IF [rótulo];
 +
</syntaxhighlight>
 +
 
 +
*Instrução '''CASE''' 
 +
<syntaxhighlight lang=vhdl>
 +
[rótulo opcional:] CASE expressão IS
 +
                  WHEN valor =>                            -- valor único
 +
                    afirmação_sequencial;                           
 +
                    afirmação_sequencial;                           
 +
                    ...
 +
                  WHEN valor1 | valor2 | ... | valorN  =>  -- lista de valores
 +
                    afirmação_sequencial;                           
 +
                    afirmação_sequencial;                           
 +
                    ...
 +
                  WHEN valor1 TO valor2 =>                  -- faixa de valores
 +
                    afirmação_sequencial;                           
 +
                    afirmação_sequencial;
 +
                    ...
 +
                  WHEN OTHERS  =>
 +
                    afirmação_sequencial;                           
 +
                    afirmação_sequencial;
 +
                    ...
 +
          END CASE;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
*Instrução '''LOOP''' incondicional:
 
*Instrução '''LOOP''' incondicional:
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional:] LOOP
+
[rótulo:] LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
Linha 34: Linha 74:
 
*Instrução '''FOR-LOOP''':
 
*Instrução '''FOR-LOOP''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional:] FOR identificador IN faixa LOOP
+
[rótulo :] FOR identificador IN faixa LOOP
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
 
             afirmação_sequencial;
Linha 43: Linha 83:
 
*Instrução '''WHILE-LOOP''':
 
*Instrução '''WHILE-LOOP''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional:] WHILE condição LOOP            -- Executa as "afirmações enquanto a "condição" for verdadeira
+
[rótulo :] 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 52: Linha 92:
 
*Instrução LOOP com '''EXIT''':
 
*Instrução LOOP com '''EXIT''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional:] [FOR identificador IN faixa] LOOP
+
[rótulo :] [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 62: Linha 102:
 
*Instrução LOOP com '''NEXT''':
 
*Instrução LOOP com '''NEXT''':
 
<syntaxhighlight lang=vhdl>
 
<syntaxhighlight lang=vhdl>
[rótulo opcional:] [FOR identificador IN faixa] LOOP
+
[rótulo :] [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 69: Linha 109:
 
             ...
 
             ...
 
           END LOOP [rótulo];
 
           END LOOP [rótulo];
</syntaxhighlight>
 
 
*Instrução '''CASE''' 
 
<syntaxhighlight lang=vhdl>
 
[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;
 
 
</syntaxhighlight>
 
</syntaxhighlight>

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

Instruções concorrentes

[rótulo:] PROCESS [(lista_de_sensibilidade)] [IS]
             [parte_declarativa]
         BEGIN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         END PROCESS [rótulo];

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:] <signal_name> <= <expression>;
  • Atribuição de valor sobre VARIABLE:
[rótulo:] <variable_name> := <expression>;


  • Instrução IF
[rótulo:] IF condição THEN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         ELSIF condição THEN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         ELSE
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         END IF [rótulo];
  • Instrução CASE
 [rótulo opcional:] CASE expressão IS
                  WHEN valor =>                             -- valor único
                    afirmação_sequencial;                            
                    afirmação_sequencial;                            
                    ...
                  WHEN valor1 | valor2 | ... | valorN  =>   -- lista de valores
                    afirmação_sequencial;                            
                    afirmação_sequencial;                            
                    ...
                  WHEN valor1 TO valor2 =>                  -- faixa de valores
                    afirmação_sequencial;                            
                    afirmação_sequencial; 
                    ...
                  WHEN OTHERS  => 
                    afirmação_sequencial;                            
                    afirmação_sequencial; 
                    ...
          END CASE;
  • Instrução LOOP incondicional:
[rótulo:] LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução FOR-LOOP:
[rótulo :] FOR identificador IN faixa LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Instrução WHILE-LOOP:
[rótulo :] 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 :] [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 :] [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];