UFRRJ – Universidade Federal Rural do Rio de Janeiro Instituto Multidisciplinar de Nova Iguaçu

Trabalho de Avaliação para a AA de Circuitos Digitais

Disciplina: AA786 - Laboratório de Circuitos Digitais Professor: Marcel William Rocha da Silva Semestre: 2012/2 Componentes: Fábio Lopes Correá : 201178510-1 José Sérgio Mattos De Castro : 201178517-9 Tiago Da Silva Pimentel : 201178528-4 Nº do grupo: 7

Projeto de Circuitos Digitais
1 - Descrição do Projeto O projeto consiste em um jogo simples envolvendo habilidade matemática e raciocínio rápido. O circuito deve apresentar para o usuário(jogador) dois números decimais nos displays 1 e 2. O jogador também deve conhecer a priori a operação aritmética que está implementada na ULA. O jogador deve então tentar acertar o resultado da computação fornecendo como entrada o número decimal que é o resultado da conta. Se o jogador acertar o resultado, o LED ganhou se acende. Se o jogador errar o resultado, o LED perdeu se acende. Caso a computação dos números da entrada não seja viável, o LED overflow se acende. Uma imagem do circuito se encontra no Anexo B. 2 - Variantes do projeto (Grupo 7) Tipo do contador: Síncrono Passo do contador: Passo 2(dois) Ordem de contagem: Decrescente Tipo de operação na ULA: Soma 3 - Resolução do projeto: 3.1 - Descrições dos principais componentes, bem como sua utilização 3.1.1 - Gerador de números Pseudo-aleatório (GPA) Foram utilizados 4 Flip-flop's do tipo JK, formando um contador síncrono, gerando os seguintes números: 0, 5, E, 7, C, 1, 2 e 3. Segue abaixo a tabela de transição e a imagem do circuito Gerador de números Pseudo-aleatório: Saída FF4 FF3 FF2 FF1 JK4 JK3 JK2 JK1 Transição 0 0 0 0 0 0 1 0 1 0 – 5 5 0 1 0 1 1 0 1 1 5 – E E(14) 1 1 1 0 1 0 0 1 E – 7 7 0 1 1 1 1 0 1 1 7 – C C(12) 1 1 0 0 1 1 0 1 C – 1 1 0 0 0 1 0 0 1 1 1 – 2 2 0 0 1 0 0 0 0 1 2 – 3 3 0 0 1 1 0 0 1 1 3 - 0

3.1.2 - Contador Síncrono Decrescente de Passo 2(dois) (CSD) Utilizamos 3 Flip-flop's do tipo JK e um aterramento no Bit menos significativo. Gerando a seguinte seqüência: E, C, A, 8, 6, 4, 2, 0, E, ….; os latchs JK, por terem como saídas apenas 3 Bit's só conseguem gerar a seqüência de 7-0, entretanto, devido ao aterramento presente, seu resulto consiste num contador de 4 Bit's. Segue abaixo a tabela de transição e a imagem do circuito contador: Saída E(14) C(12) A(10) 8 6 4 2 0 FF3 1 1 1 1 0 0 0 0 FF2 1 1 0 0 1 1 0 0 FF1 1 0 1 0 1 0 1 0 Ground 0 0 0 0 0 0 0 0 JK4 0 0 0 1 0 0 0 1 JK3 0 1 0 1 0 1 0 1 JK2 1 1 1 1 1 1 1 1 Ground 0 0 0 0 0 0 0 0 Transição E – C C – A A – 8 8 – 6 6 – 4 4 – 2 2 – 0 0 - E

3.1.3 – Decodificador 4 Bit's para display de 8 segmentos(Macro gerada) (DEC) Este codificador teve de ser implementado, devido ao fato de que ao ser necessário exibir números acima de 9 – A, B, C, D, E, F. Utilizando várias portas lógicas, foi gerado uma macro(compressão de um circuito lógico em uma espécie de caixa com terminais) para melhor organização do esquema. Segue abaixo a tabela utilizada para a simplificação do circuito, o esquema da macro do circuito se encontra no anexo A. Saída 0 1 2 3 4 5 6 7 8 9 A(10) B(11) C(12) D(13) E(14) F(15) A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 b 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 c 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 d 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 e 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 f 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 g 0 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 . 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1

3.1.4 – ULA Foi usado componente nativo do Circuit Maker, usado para realizar a operação de soma implementada no projeto. Tem como entrada o Bit pseudo-aleatório e o bit do contador Síncrono, e como saída, o resultado da soma. A ULA gera como resultado máximo, o valor 15(1111), caso ocorra na operação um valor acima desse, emite o sinal no COUT, que acende o Bit de overflow. 3.1.5 – Comparador de Bit's Neste componente é feito a comparação dos dados de entrada – bit's passados pela ULA e bit's passados pelo usuário. Também recebe o sinal que representa o bit de overflow vindo da ULA. Como saída, temos 3 possibilidades: • • • Bit de acerto: Ocorre quando o usuário acerta a saída da ULA Bit de overflow: Ocorre quando o resultado da operação na ULA dá overflow, ou ainda, quando o próprio usuário informa que a operação dará overflow Bit de erro: Ocorre quando o usuário erra o resultado da ULA, esse sinal só ocorre quando não ocorre o 'acerto' nem o 'overflow' Segue abaixo o esquema interno da macro do Comparador de Bit's:

3.1.6 – Contador de Controle (CC) Necessário para o controle dos “pulsos” necessário para: Geração do valor Pseudo-aleatório; Geração do segundo valor da soma; Tempo de resposta do usuário; Exibição do resultado final. O contador vai de 07, passando por um seletor onde a cada passo do contador é enviado um pulso a um determinado componente. A seguir uma tabela descrevendo o que ocorre a cada passo do contador e a imagens do Contador de controle. Passo 0 1 2-4 5 6 7 Descrição Libera um pulso(Clock) para o Gerador Pseudo-aleatório Libera um pulso(Clock) para o Cont. Síncrono Decrescente de Passo Sinal Verde, tempo de resposta do usuário Sinal Amarelo, tempo de resposta se esgotando Sinal Vermelho, tempo de resposta esgotado Libera o resultado final (acerto, erro ou overflow)

3.2 – Funcionamento do Circuito 3.2.1 – Gerando os valores para serem calculados No passo 0(zero) do CC é emitido um pulso para o GPA, gerando a primeira sequência de bit's(número A) e enviando-os para o DEC, que exibirá no Display o valor para o usuário, e para a ULA. No passo 1 do CC é emitido um pulso para o CSD, decrescendo o valor atual do contador em dois valores(número B), em seguida é feito o mesmo processo que ocorreu no número A. 3.2.2 – Resposta e intervenção do Usuário Após a exibição dos dois números auto-gerados, o CC passa para os passos de 2 à 6 é o tempo que o usuário dar a resposta. Caso o ele perceba que o resultado dará um overflow, ele mesmo poderá resetar o CC com um componente do tipo push Button , reiniciando o processo. Caso contrário, o usuário terá pra calcular mentalmente o resultado da soma e informar a resposta pelo teclado hexadecimal. O usuário pode dar a resposta até o que sinal vermelho acenda.

3.2.3 – Resultado final Passado o tempo de resposta do usuário, ocorre o passo 7, onde é exibido o resultado do jogo. O Usuário ganha quando informar a resposta correta. Anexo A: (Macro do Decodificador de 8 segmentos)

Anexo B: Imagem completa do Circuito