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