Mudanças entre as edições de "Folha de consulta de VHDL"
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 | + | [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 | + | [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 | + | [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 | + | [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 | + | [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 | + | [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 | + | [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> | </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];