Mudanças entre as edições de "Folha de consulta de VHDL"
Ir para navegação
Ir para pesquisar
Linha 13: | Linha 13: | ||
==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: | + | *Atribuição de valor sobre '''SIGNAL''': |
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
[rótulo:] <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:] <variable_name> := <expression>; | [rótulo:] <variable_name> := <expression>; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | *afirmação '''NULL''' que não faz nada | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | [rótulo:] NULL; | ||
+ | </syntaxhighlight> | ||
:*Instrução '''IF''' | :*Instrução '''IF''' | ||
Linha 43: | Linha 47: | ||
*Instrução '''CASE''' | *Instrução '''CASE''' | ||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
− | [rótulo | + | [rótulo :] CASE expressão IS |
WHEN valor => -- valor único | WHEN valor => -- valor único | ||
afirmação_sequencial; | afirmação_sequencial; | ||
Linha 60: | Linha 64: | ||
afirmação_sequencial; | afirmação_sequencial; | ||
... | ... | ||
− | END CASE; | + | END CASE [rótulo]; |
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 94: | Linha 98: | ||
[rótulo :] [FOR identificador IN faixa] LOOP | [rótulo :] [FOR identificador IN faixa] LOOP | ||
afirmação_sequencial; | afirmação_sequencial; | ||
− | EXIT [ | + | -- EXIT incondicional. |
+ | EXIT [rótulo_loop]; | ||
+ | -- EXIT condicional. | ||
+ | EXIT [rótulo_loop] WHEN condição; -- Se a "condição" é verdadeira, termina o "LOOP" | ||
afirmação_sequencial; | afirmação_sequencial; | ||
... | ... | ||
Linha 104: | Linha 111: | ||
[rótulo :] [FOR identificador IN faixa] LOOP | [rótulo :] [FOR identificador IN faixa] LOOP | ||
afirmação_sequencial; | afirmação_sequencial; | ||
− | NEXT [ | + | -- NEXT incondicional. |
− | + | NEXT [rótulo_loop]; -- Não executa as linhas até a linha "END LOOP", e incrementa o "identificador". | |
+ | -- NEXT condicional. | ||
+ | NEXT [rótulo_loop] 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; | afirmação_sequencial; | ||
... | ... | ||
END LOOP [rótulo]; | END LOOP [rótulo]; | ||
</syntaxhighlight> | </syntaxhighlight> |
Edição das 21h55min 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>;
- afirmação NULL que não faz nada
[rótulo:] NULL;
- 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 :] 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 [rótulo];
- 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 incondicional.
EXIT [rótulo_loop];
-- EXIT condicional.
EXIT [rótulo_loop] 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 incondicional.
NEXT [rótulo_loop]; -- Não executa as linhas até a linha "END LOOP", e incrementa o "identificador".
-- NEXT condicional.
NEXT [rótulo_loop] 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];