MC542
Introdução a circuitos
lógicos
utilizando VHDL
2001S2
MC542
Escrevendo um código VHDL simples
Multiplexador 2x1
2001S2
MC542
Primeiro passo :
• Declarar os sinais de entradas e saídas através de uma
Entidade (Entity)
ENTITY Multiplex IS
PORT
(A, B, S
: IN BIT;
Saida
: OUT
END Multiplex;
BIT);
2001S2
MC542
• Sinais de entradas e saídas para a entidade
são chamadas portas.
• Podem ser de entrada (IN) ou saída (OUT)
• No nosso exemplo temos 4 portas :
• 3 de entrada (IN)
• 1 de saída (OUT);
2001S2
MC542
Segundo passo :
• Definir a funcionalidade do circuito através de uma arquitetura
(ARCHITECTURE);
• A linguagem VHDL suporta os seguintes operadores lógicos :
• AND
• OR
• NOT
• NAND
• NOR
• XOR
• XNOR
2001S2
MC542
Definindo o comportamento da entidade MULTIPLEX em VHDL :
ARCHITECTURE Objeto_1 OF Multiplex IS
BEGIN
Saida <= (A AND S) OR (B AND NOT(S));
END Objeto_1;
Método 1
2001S2
MC542
O código VHDL completo do nosso exemplo é mostrado abaixo :
ENTITY Multiplex IS
PORT
(A, B, S : IN BIT;
Saida : OUT BIT);
END Multiplex;
ARCHITECTURE Objeto_1 OF Multiplex IS
BEGIN
Saida <= (A AND S) OR (B AND NOT(S));
END Objeto_1;
2001S2
MC542
Simulação :
Mudança do SEL
2001S2
MC542
Outras maneiras de se implementar o mesmo problema :
• A entidade continua com o mesmo número de portas
• É necessário mudar apenas o escopo ARCHITECTURE
ARCHITECTURE Objeto_1 OF Multiplex IS
BEGIN
Process
Begin
If S=‘1’ Then Saida <= A;
Else Saida <=B;
End If;
End Process;
END Objeto_1;
2001S2
MC542
Podemos ainda, mudando o sinal de entrada na entidade, fazer
outra variação do mesmo problema :
ENTITY Multiplex IS
PORT
(A, B
: IN BIT;
Saida
: OUT BIT;
S
: Boolean);
END Multiplex;
2001S2
MC542
A Nova descrição da Arquitetura será :
ARCHITECTURE Objeto_1 OF Multiplex IS
BEGIN
Saida <= A When S else B;
END Objeto_1;
2001S2
MC542
Um outro
exemplo :
Um multiplexador de 2
entradas de 8 bits
2001S2
MC542
Definindo a entidade :
• 2 Entradas de 8 Bits
• 1 Entrada para seleção
• 1 Saída de 8 Bits;
ENTITY Multiplex2 IS
PORT
(A, B
: IN BIT_VECTOR (0 to 7);
Saida
: OUT BIT_VECTOR (0 to 7);
S
: Boolean);
END Multiplex2;
2001S2
MC542
Definindo o comportamento da função de saída :
• Podemos utilizar a mesma abordagem apresentada anteriormente
ARCHITECTURE Objeto_1 OF Multiplex IS
BEGIN
Saida <= A When S else B;
END Objeto_1;
2001S2
MC542
Simulando o comportamento do Multiplex2 :
2001S2
MC542
Visualizando os sinais intermediários :
2001S2
MC542
Entendendo o
MAX+PlusII
Altera
2001S2
MC542
Criando um circuito lógico em VHDL, utilizando o Max+PlusII
• Implementando a pastilha 7425 (2 Portas NOR de 4 BITS)
• Devemos ter em mente (Para a criação da entidade):
• 2 Entradas de 4 BITS (Ou uma de 1 Byte)
• 2 Sinais de seleção 4 LSB ou 4 MSB
• 2 Saídas de um BIT
2001S2
MC542
Passo a passo :
Criando um novo arquivo
2001S2
MC542
Desta forma estaremos aptos a escrever
o código em VHDL.
2001S2
MC542
Definindo a entidade :
ENTITY NOR_4_Bits IS
PORT
(A, B
: IN BIT_VECTOR (0 to 3);
Saida
: OUT BIT_VECTOR (0 to 1);
S
: IN BIT_VECTOR (1 to 0));
END NOR_4_Bits;
2001S2
MC542
Definindo a funcionalidade da entidade :
ARCHITECTURE Behav OF Nor_4_Bits IS
BEGIN
Process
begin
If S(0)='1' Then Saida(0) <= not(A(0) or A(1) or A(2) or A(3));
Else If S(1) = '1' Then Saida(1) <= not(B(0) or B(1) or B(2) or B(3));
End If;
End If;
end process;
END Behav;
2001S2
MC542
O Código completo em VHDL :
ENTITY NOR_4_Bits IS
PORT
(A, B
Saida
S
END NOR_4_Bits;
: IN BIT_VECTOR (0 to 3);
: OUT BIT_VECTOR (0 to 1);
: IN BIT_VECTOR (1 to 0));
ARCHITECTURE Behav OF Nor_4_Bits IS
BEGIN
Process
begin
If S(0)='1' Then Saida(0) <= not(A(0) or A(1) or A(2) or A(3));
Else If S(1) = '1' Then Saida(1) <= not(B(0) or B(1) or B(2) or B(3));
End If;
End If;
end process;
END Behav;
2001S2
MC542
Compilando o programa fonte em VHDL :
Etapas
2001S2
MC542
Simulando :
2001S2
Download

vhdl-1