250 likes | 358 Views
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 ;
E N D
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) ENTITYMultiplexIS PORT (A, B, S : IN BIT; Saida : OUT BIT); ENDMultiplex; 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 entidadeMULTIPLEX em VHDL : ARCHITECTUREObjeto_1OFMultiplexIS BEGIN Saida <= (AANDS) OR (BAND NOT(S)); ENDObjeto_1; Método 1 2001S2
MC542 O código VHDL completo do nosso exemplo é mostrado abaixo : ENTITYMultiplexIS PORT (A, B, S : IN BIT; Saida : OUT BIT); ENDMultiplex; ARCHITECTUREObjeto_1OFMultiplexIS BEGIN Saida <= (AANDS) OR (BAND NOT(S)); ENDObjeto_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 ARCHITECTUREObjeto_1OFMultiplexIS BEGIN Process Begin IfS=‘1’ ThenSaida <= A; ElseSaida <=B; End If; End Process; ENDObjeto_1; 2001S2
MC542 • Podemos ainda, mudando o sinal de entrada na entidade, fazer outra variação do mesmo problema : ENTITYMultiplexIS PORT (A, B : IN BIT; Saida : OUT BIT; S: Boolean); ENDMultiplex; 2001S2
MC542 A Nova descrição da Arquitetura será : ARCHITECTUREObjeto_1OFMultiplexIS BEGIN Saida <= AWhenSelseB; ENDObjeto_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; ENTITYMultiplex2IS PORT (A, B : IN BIT_VECTOR (0 to 7); Saida : OUT BIT_VECTOR (0 to 7); S: Boolean); ENDMultiplex2; 2001S2
MC542 • Definindo o comportamento da função de saída : • Podemos utilizar a mesma abordagem apresentada anteriormente ARCHITECTUREObjeto_1OFMultiplexIS BEGIN Saida <= AWhenSelseB; ENDObjeto_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 : ENTITYNOR_4_BitsIS PORT (A, B : IN BIT_VECTOR (0 to 3); Saida : OUT BIT_VECTOR (0 to 1); S: IN BIT_VECTOR (1 to 0)); ENDNOR_4_Bits; 2001S2
MC542 Definindo a funcionalidade da entidade : ARCHITECTUREBehavOFNor_4_BitsIS BEGIN Process begin If S(0)='1' ThenSaida(0) <= not(A(0)orA(1)orA(2)orA(3)); Else IfS(1) = '1' ThenSaida(1) <= not(B(0)orB(1)orB(2)orB(3)); End If; End If; end process; ENDBehav; 2001S2
MC542 O Código completo em VHDL : ENTITYNOR_4_BitsIS PORT (A, B : IN BIT_VECTOR (0 to 3); Saida : OUT BIT_VECTOR (0 to 1); S: IN BIT_VECTOR (1 to 0)); ENDNOR_4_Bits; ARCHITECTUREBehavOFNor_4_BitsIS BEGIN Process begin If S(0)='1' ThenSaida(0) <= not(A(0)orA(1)orA(2)orA(3)); Else IfS(1) = '1' ThenSaida(1) <= not(B(0)orB(1)orB(2)orB(3)); End If; End If; end process; ENDBehav; 2001S2
MC542 Compilando o programa fonte em VHDL : Etapas 2001S2
MC542 Simulando : 2001S2