Cursos / Automação Industrial / Sistemas Digitais / Aula

arrow_back Aula 05 - VHDL – Parte II

Instruções

Atribuição de Sinais de Seleção

A sintaxe pode ser descrita por:

Parecido com a atribuição de um sinal condicional. A saída S receberá expressão1 se sinal/variável for igual a condição1; S receberá expressão2 se sinal/variável for igual a condição2; para qualquer outro valor de sinal/variável, S receberá expressão3.

Vamos analisar o exemplo da Figura 4 que também está descrevendo um circuito MUX4:

Exemplo de código com atribuição de sinais de seleção

A entidade da Figura 4 está descrita da mesma maneira do exemplo anterior (Figura 3). A arquitetura terá uma estrutura diferente, na qual utilizaremos a sintaxe de sinais de seleção. Com (with) o SEL selecionado, a saída (f) recebe os dados de “a” quando (when) SEL = “11”, de “b” quando SEL = “10”, de “c” quando SEL = “01” e de “d” quando SEL = “00”. Caso contrário, a saída recebe ‘0‘ (função do catch all, ou seja, recebe ‘0’ para qualquer outra condição que não foi descrita).

Atribuição de Processos

Vimos que a execução de um código em VHDL é concorrente, mas podemos ter partes do código que são executadas de forma sequencial. Para isso, teremos que declarar dentro da arquitetura que aquela parte do código deve ser entendida como instruções sequenciais. Assim, temos que abrir o que chamamos de processo, e dentro de um processo teremos instruções sequenciais como laços (loops) de condição.

O código VHDL de um processo teria a seguinte construção:

Cada processo deve possuir um nome diferente. Seu nome estará em nome_processo. O processo também possuirá uma lista sensível de variáveis. Qualquer mudança de valor das variáveis declaradas nesta lista acarretará a execução do processo. Desta forma, é aconselhado que todas as variáveis de entrada utilizadas no processo devam estar declaradas.

Vamos analisar o exemplo da Figura 5 descrita logo abaixo.

Exemplo de código utilizando processo

O circuito da Figura 5 possui 3 entradas A, B e C e duas saídas X, Y. Nele é criado um processo chamado Processo1 cuja lista sensível de variáveis é A,B,C. O processo executa a operação NOR e AND de forma sequencial, ou seja, primeiro o NOR é executado e posteriormente o AND. Por fim, o processo é finalizado.

Importante!

Um código pode ter mais de um processo. A execução entre processos ocorre de forma paralela, enquanto que a execução dos comandos dentro de um processo ocorre de forma sequencial.

Dica!

Nunca esqueça de colocar nomes diferentes a processos. Também nunca esqueça de finalizar o processo escrevendo seu nome. Isto facilitará sua leitura e interpretação do código quando estiver estudando.

Versão 5.3 - Todos os Direitos reservados