Prévia do material em texto
Profa.. LUIZA MARIA ROMEIRO CODÁ Profa. Luiza Maria Romeiro Codá D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 3 Utilizando o software QUARTUSII, escolha o dispositivo HCPLD Cyclone IV-E EP4CE30F23C7, projete, e teste o funcionamento de um circuito somador/subtrator de 4 bits, ligado a um decodificador BCD para 7 segmentos, como mostra a Figura 1. D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 4 Funcionamento do circuito: Um sinal (chave) P deve selecionar SOMA ou SUBTRAÇÃO: P=’0’ soma e P=’1’ subtração Utilizar um componente somador completo de 4 bits; Para a inverter os bits do subtraendo, deve ser utilizado circuitos ou exclusivo como inversor controlado. O sinal da subtração se negativa deve ser mostrado no segmento g do display da esquerda do módulo mercúrio IV; O sinal de estouro da soma (over_som) deve ser mostrado no LED RGB D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 5 Se A >B A= 8 e B= 2 A - B = 8 -2 = +6 então A (1000)b A (1000)b + B (0010)b inverte B (1101)b ----------------- Resultado da soma de A com B invertido 1 (0101)b Como o carry é 1, o número é positivo, deve-se somar 1 ao resultado dessa soma para obter o resultado certo da subtração : 1 (0101)b + 1 = 1 (0110)b Se A < B A =2 e B= 8 A - B = 2 – 8 = -6 então A (0010)b A (0010)b + B (1000)b inverte B (0111)b ----------------- Resultado da soma de A com B invertido 0 (1001)b Como o carry é 0, número é negativo, deve-se inverter o resultado dessa soma para obter o resultado certo da subtração : 0 (1001)b invertendo obtém-se 0 (0110)b D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 6 Circuito da somador: Utilizar o componente lpm_add_sub 7 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o • Somas cujo resultado sejam menores ou igual a 15 são apresentados corretamente nas saídas S[3] S[2] S[1] S[0] e apresenta Cf =‘0’ • Somas cujo resultado sejam maiores que 15 não são representados corretamente pelas saídas e apresentam Cout =‘1’, mostrando que ocorreu estouro(overflow) Circuito da Subtração: 8 Para implementar um circuito que executa a subtração de números de 4 bits, pode ser utilizado um circuito somador de 4 bits (CI 7483) incluindo alguns circuitos; Dois circuitos devem ser implementados : • circuito que repete o mecanismo de subtração caso A> B, resultado = número positivo • circuito que repete o mecanismo de subtração caso A< B resultado = número negativo 1 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 9 P B Q 0 0 0 0 1 1 1 0 1 1 1 0 Se P=‘’1’ inverte B Circuito da Subtração: segue passos slide 9 para A>B ou A<B o 1ºe 2º passo são iguais D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 1ºpasso: inverte B Utiliza-se inversor controlado com portas XOR soma subtração Circuito da Subtração: para A>B ou A<B o 1ºe 2º passo são iguais 10 Com P=‘1’ as saídas Q são as entrada B invertidasD e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Inversor controlado pelo sinal P: 11 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o • Quando P=0 (soma) as entradas B[3..0] passam para as saídas INB[3..0] sem se alterarem; • Quando P=1 (subtração)as entradas B[3..0] são invertidas P B INVB 0 0 0 0 1 1 1 0 1 1 1 0 Subtração Inverte B Utilizar o componente XOR: soma Circuito da Subtração: para A>B ou A<B o 1ºe 2º passo são iguais 12 2º Passo: somar a entrada A com as entradas B invertidas: Usar somador completo (lpm_add_sub) para somar a com b invertida D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Circuito da Subtração (P=‘1’): 13 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 3º Passo: verificação do valor de Cout Cout se Cout = ‘1’ A>B subtração positiva se Cout = ‘0’ ’ A< B subtração negativa Circuito da Subtração: Qdo cf = ‘0’ A<B 14 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o O resultado correto INVERTER a saída somador completo lpm_add_sub) Portanto, incluir mais um circuito inversor controlado, mas só inverter qdo P=‘1’ e Cout = ‘0’( subtração com resultado negativo) 3º Passo: verificação do valor de Cout Circuito da Subtração: Qdo cout = ‘0’ A<B 15 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o O resultado correto INVERTER a saída somador completo lpm_add_sub) Portanto, incluir mais um circuito inversor controlado(INV2), mas só inverter qdo P=‘1’ e Cout = ‘0’( subtração com resultado negativo) P Cout INV2 0 0 0 0 1 0 1 0 1 1 1 0 subtração soma 𝐼𝑁𝑉2 = 𝑃 𝑎𝑛𝑑 𝐶𝑜𝑢𝑡 3º Passo: verificação do valor de Cout Circuito da Subtração: Qdo cf = ‘0’ A<B 16 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Portanto, incluir mais um circuito inversor controlado(INV2), mas só inverter qdo P=‘1’ e Cout = ‘0’( subtração com resultado negativo) 3º Passo: verificação do valor de Cout Circuito da Subtração: Qdo cout = ‘1’ A>B 17 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o O resultado correto é a saída do somador + 1 Portanto, incluir um outro somador para somar 1 quando: carry (Cout)=1 e P =1(subtração) 3º Passo: verificação do valor de Cout Circuito da Subtração: Qdo cout = ‘1’ A>B 18 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o O resultado correto a saída do somador + 1 Portanto, se P=‘1’ (subtração) e Cout = ‘1’ Somar em Cin de um segundo somador com’1’ P Cout Cin 0 0 0 0 1 0 1 0 0 1 1 1 Cin = P and Coutsubtração soma 3º Passo: verificação do valor de Cout Circuito da Subtração: Qdo cout = ‘1’ A>B 19 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o O resultado correto a saída do somador + 1 Portanto, se P=‘1’ (subtração) e Cout = ‘1’ incluir mais um somador completo (componente lpm_add_sub) com as entradas dataB todas em ‘0’, as entradas dataA serão as saídas do INV2, e a entradas Cin ligar o sinal de P and Cout 3º Passo: verificação do valor de Cout 20 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 21 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Sinal negativo da subtração mostrar em LED que acende com nível alto: Qdo P= ’1’ e C = ‘0’ subtração negativa acender LED Excluir qdo a saída for (0000)b P Cout S[3] S[2] S[1] S[0] sinal 0 X X X X X 0 1 1 X X X X 0 1 0 0 0 0 0 0 1 0 X X X X 1 22 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Sinal negativo da subtração mostrar no segmentp g do display esquerdo do módulo mercúrio IV (acende com nível alto): Qdo P= ’1’ e Cout = ‘0’ subtração negativa acender o segmento, mas excluir qdo a saída for (0000)b 23 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o Qdo P= ’0’ (soma) e C = ‘1’, ou seja, ocorrer estouro no valor da soma, mostrar em LED RGB que acende com nível alto P Cout ov_som 0 0 0 0 1 1 1 0 0 1 1 0 subtração soma ov_som= P 𝑎𝑛𝑑 𝐶𝑜𝑢𝑡 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o24 25 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 26 Pinagem Nome do sinal Pino do FPGA Segmento do dsiplay Módulo mercurio D[0] V2 a Segmentos do Display 0 D[1] V1 b D[2] U2 c D[3] U1 d D[4] Y2 e D[5] Y1 f D[6] W2 g P V21 SW[0] sinal N6 Segmento g do display1 over_som E7 LED_B A[0] E16 Chaves da Placa expansora Grupo A A[1] H22 A[2] F16 A[3] F19 B[0] J21 Chaves da Placa expansora Grupo B B[1] K21 B[2] H20 B[3] H18 D e p a rt a m e n to d e E n g e n h a ri a E lé tr ic a e d e C o m p u ta ç ã o 27 Foto do módulo mercúrio com o posicionameto dos sinais