domingo, 25 de agosto de 2013

Circuito Lógico para Senha de Cofre

     Em pedido do leitor Carlos Guilherme Assunção, farei um post explicando um exercício específico. O exercício consiste em criar um sistema de senha de cofre utilizando Flip-Flops tipo D, onde haverá uma senha já armazenada e uma senha a ser colocada. Devido a simplicidade, eu optei por fazer a senha com 2 bits, o que consiste em 4 combinações de senhas possíveis, mas a estrutura que vou explicar pode ser expandida para quantos bits forem necessários.

     A primeira estrutura que imagino possui apenas 2 FF (Flip-Flops) tipo D, que serve para armazenar temporariamente a senha digitada. Eu usaria uma DIP-Switch para colocar a senha e uma tecla push-button que funcionaria como o enter da senha. A senha seria digitada em binário via DIP-Switch, pois fazer um teclado decimal necessitaria de decodificadores decimal-binário, e optei por usar DIP-Switch se não seria necessário criar uma retenção para as teclas.


     Vamos explicar essa estrutura. Cada um dos dois FF tipo D servem para armazenar a senha digitada. Cada bit da senha é escolhido através dos flags 'senha digitada', que ficam na entrada D de cada FF. O nível lógico desses flags podem ser implementados na prática por um circuito com DIP-Switch. Porém o clock dos FF está ligado no flag 'Enter', que deve ser implementado com uma chave sem retenção, ou seja, ele deve ser só um pulso positivo, pois o que nos interessa é a borda de subida do sinal.

     Quando o botão 'Enter' é pressionado, ocorre uma borda de subida do sinal do clock dos FF e, então, eles leem o nível de tensão da entrada D e a colocam na saída. Dessa forma cada bit de saída dos FF são comparados via porta XNOR com o respectivo bit da senha correta, previamente armazenada no sistema. A saída da porta XNOR só será um se as duas entradas possuírem mesmo valor lógico, ou seja, se o bit da senha digitado seja igual ao respectivo bit da senha armazenada. No fim o resultado de cada comparação é colocado na entrada de uma porta AND, cuja saída só será '1' se todas as entradas forem '1', ou seja, se todos os bits da senha digitada forem iguais aos bits da senha certa já armazenada.

     Neste caso, e somente neste caso, a saída será 1 e o cofre abrirá.

     Para aumentar a quantidade de bits dessa estrutura basta adicionar FF tipo D e portas XNOR na saída e, no fim, colocar todas as saídas das portas XNOR e uma porta AND com entradas suficientes. Essa é a estrutura básica que pode ser aprimorada para resolver alguns problemas práticos.

     Um dos problemas é que a saída fica em '1' após ser digitada a senha correta até que uma senha errada seja digitada. Isso pode ser corrigido com algum sistema de temporização que, após um tempo, acione o reset assíncrono dos FF.

     E, por enquanto era isso. Talvez se esse assunto necessitar de mais aprofundamento, farei outro post sobre isso. Espero que tenha sido útil. Abraço e até a próxima.

5 comentários:

  1. Muito útil mesmo, muito obrigado, estava meio perdido para fazer o trabalho, muito bom o blog.

    Vlw pela ajuda.
    Abraço

    ResponderExcluir
  2. Mais um bom artigo, mas eu gostaria aqui de te perguntar sobre uma coisa: Você entende de programação para microprocessadores(em C mesmo), mais especificamente para o MSP430?

    ResponderExcluir
    Respostas
    1. Eu entendo um pouco sobre programação de microcontroladores PIC da família 18f e 16f. Mas com esse microcontrolador especificamente, eu nunca trabalhei com ele.

      Excluir
  3. Não entendi muito, como posso acrescentar uma senha de 4 bits por exemplo? Está bem explicado mas meu discernimento não é muito bom! Preciso fazer uma central de alarme com senha para eletrônica digital utilizando CIs TTLs, FF e portas lógicas, e a senha pode ser trocada como em seu exemplo. Poderia ajudar-me mais um pouco com a parte da senha de 4 bits?

    ResponderExcluir
    Respostas
    1. Para fazer uma senha de 4 bits o seguinte procedimento deveria ser adotado:
      * Desconecte o botão de Enter e a porta AND U4 do circuito;
      * Replique o circuito que sobrou, ou seja, adicione mais dois FF tipo D, botões, etc...
      * Reconecte a chave de enter no CLK dos 4 FF tipo D;
      * Substitua U4 por uma porta AND de 4 entradas;

      Mas, se você quer fazer um circuito funcional, não recomendo o uso de portas lógicas. Provavelmente você conseguirá fazer algo com melhor custo benefício se utilizar algum microcontrolador.
      Enquanto os microcontroladores PIC estão bem difundidos, você consegue encontrar alguma coisa de ARM da ST de baixo custo também.

      Espero ter ajudado.

      Excluir