PUCRS - Faculdade de Informatica
Circuitos Digitais, semestre 2004/1.
Prof. Eduardo Augusto Bezerra
Trabalho Final - Adivinhar um numero sorteado.

O trabalho consiste na implementacao de um circuito para realizar o sorteio de um numero, e para informar se o numero fornecido pelo usuario e' o mesmo sorteado. Para gerar o numero devera' ser utilizado um circuito LFSR (Linear Feedback Shift Register). Devem ser utilizadas chaves para o fornecimento de uma semente para o LFSR, e chaves para a entrada do usuario, ambos valores de 4 bits. O valor sorteado (gerado pelo LFSR), e o valor fornecido devem ser apresentados em dois displays de 7-segmentos disponiveis na plataforma de desenvolvimento. Projetar tambem um comparador que acendera' um LED caso os dois valores sejam iguais. O circuito devera' ser projetado de acordo com o diagrama de blocos apresentado a seguir. O diagrama de blocos apresenta uma visao em alto nivel do circuito a ser projetado. E' preciso incluir no projeto modulos tais como os conversores binario para 7-segmentos, entre outros.

     

    Funcionamento do circuito

     

    Como pode ser observado na figura anterior, o funcionamento do circuito e' bastante simples e direto:

    1. Uma semente de 4 bits e' fornecida para o gerador de sequencias pseudo-aleatorias (LFSR) por intermedio da chave superior.
    2. O jogador informa um valor de 4 bits na chave inferior, sendo apresentado no display inferior (0 a F).
    3. Diversos valores sao gerados e apresentados no display superior, na velocidade do clock da placa. Isso impede o usuario de identificar os valores sendo gerados.
    4. Ao ser pressionado o botao de parada, o valor gerado pelo LFSR naquele instante e' apresentado no display.
    5. Caso os dois valores sejam iguais, o circuito comparador acende o LED sinalizando o acerto.
    6. Para iniciar uma nova rodada, pressionar o botao de parada novamente e repetir os passos anteriores a partir do 2. Nao e' necessario fornecer uma nova semente.

     

    Dicas e sugestoes

     

    Algumas dicas para auxiliar no projeto e implementacao do circuito:

    • Utilizar a abordagem "dividir para conquistar", quebrando o projeto em modulos menores. Nao implementar o circuito inteiro de uma vez. Por exemplo, implementar o modulo comparador e testa-lo fornecendo duas entradas e verificando se o LED acende para entradas iguais. Implementar o LFSR e verificar se as sequencias geradas sao as esperadas. Implementar o decodificador binario para 7-segmentos e testa-lo na placa. Apos todos os modulos estarem funcionando, junta-los para formar o circuito completo.
    • Realizar diversas vezes o tutorial apresentado nas aulas dos dias 31/05 e 07/06 de forma a melhor entender todos os passos para a prototipacao rapida de circuitos digitais utilizando a ferramenta Quartus II e a plataforma de desenvolvimento da Altera. 
    • Ler a documentacao sobre LFSR: "What's an LFSR" da Texas Instruments.
    • Exemplo de um LFSR:

     

    Entrega e avaliacao

     

    O trabalho e' individual e a apresentacao sera' realizada de acordo com a ordem da lista de chamada. Os alunos deverao preparar um relatorio contendo a descricao de tudo o que foi implementado, com detalhes sobre o projeto do circuito, incluindo uma maquina de estados listando todos os valores gerados pelo LFSR. O relatorio devera' conter, tambem, um diagrama de blocos e o esquematico preparado no Quartus II. O relatorio devera' ser entregue no momento da apresentacao. Todos os arquivos de projeto, bem o relatorio, devem ser enviados por email para eduardob@inf.pucrs.br ate' 30 minutos antes do inicio da aula do dia da apresentacao (dia 21/06/2004 ate' as 7:30). Data da apresentação: 21/06/2004. (entregas encerradas - siga esse link para as solucoes/relatorios dos alunos).