Retornar para: Colunas - Fórum PCs
31/10/2005
< Computadores XIII: Multiplexadores, decodificadores e flip-flops >
Na coluna anterior desta série vimos como é possível efetuar operações aritméticas usando circuitos digitais simples examinando o funcionamento de um circuito somador. Nesta veremos mais três circuitos elementares de grande importância para o funcionamento de nossos computadores: multiplexadores, decodificadores e circuitos tipo "latch" ou flip-flop. Antes, porém, vamos examinar um conceito importante para a compreensão destes circuitos: portas lógicas de múltiplas entradas.
Na coluna sobre Portas Lógicas, a décima desta série, vimos o funcionamento das diversas portas lógicas elementares e suas "tabelas verdade". Todas apresentavam duas entradas (com exceção da porta NOT, que por sua própria natureza admite apenas uma). Mas haverá a possibilidade de se introduzir mais variáveis na entrada de uma única porta? E, havendo, o que ocorrerá com a saída?
Pensemos um pouco. Qual o conceito básico de uma porta "E", ou AND? Imagine esse conceito aplicado a uma situação comum: por exigência do falecido, a leitura do testamento de uma pessoa que deixou dois herdeiros, João e Maria, só poderá ser feita pelo testamenteiro na presença de ambos. Então, para que a leitura seja feita, é preciso que João E (AND) Maria estejam presentes. Ou seja, considerando-se que o resultado é a leitura do testamento e as variáveis são a presença de João e de Maria, o resultado somente será VERDADEIRO se ambas as variáveis forem VERDADEIRAS (consulte, na coluna Portas Lógicas, a tabela verdade da operação lógica AND).
Agora imagine que esta mesma pessoa tivesse quatro herdeiros, João, Maria, Pedro e Ana e tivesse exigido que a leitura do testamento somente fosse feita se todos estivessem presentes. Neste caso teríamos uma operação lógica AND com quatro entradas (ou quatro variáveis), a presença de cada um dos herdeiros. E o resultado de João AND Maria AND Pedro AND Ana somente é VERDADEIRO se todas as variáveis o forem. Se um único herdeiro não estiver presente a leitura não será feita. Então, em uma porta AND com "n" entradas, a saída somente será VERDADEIRA se TODAS as entradas o forem. Se pelo menos uma delas apresentar o valor FALSO, a saída será FALSA.
Algo análogo ocorre com a porta lógica "OU", ou "OR". Imagine que a exigência do falecido fosse que o testamento poderia ser lido caso um dos herdeiros esteja presente. Se forem dois, basta que um deles, João OU (OR) Maria esteja presente. Portanto, para que o resultado seja VERDADEIRO basta que uma das variáveis, a presença de João OU a presença de Maria o seja. É fácil concluir que o mesmo vale para o caso de mais de dois herdeiros: o resultado da operação João OR Maria OR Pedro OR Ana é VERDADEIRO se pelo menos uma variável apresentar o valor VERDADEIRO (ou seja, o testamento pode ser lido se um ou mais dos quatro herdeiros estiver presente). E somente será falso se todas as variáveis de entrada apresentarem o valor FALSO.
Resumindo: a saída de uma porta AND de várias entradas somente será VERDADEIRA se todas as entradas forem VERDADEIRAS. Basta que uma delas seja FALSA para que a saída seja FALSA.
Já a saída de uma porta OR de várias entradas somente será FALSA se todas as entradas forem FALSAS. Basta que uma delas seja VERDADEIRA para que a saída seja VERDADEIRA.
As portas NOT e XOR, por definição, somente admitem uma e duas entradas, respectivamente. Restam então as portas AND, OR, NAND e NOR, as únicas que admitem entradas múltiplas. Faça um exercício de lógica: baseado no fato de que as portas NAND e NOR nada mais são que portas AND e OR com a saída ligada a uma porta NOT, como serão suas saídas no caso de múltiplas entradas?
Você acertou se concluiu que:
A saída de uma porta NAND de várias entradas somente será FALSA se todas as entradas forem VERDADEIRAS, bastando que uma entrada seja FALSA para que a saída seja VERDADEIRA; e que saída de uma porta NOR de várias entradas somente será VERDADEIRA se todas as entradas forem FALSAS, bastando que uma entrada seja VERDADEIRA para que a saída seja FALSA.
Figura 1: Esquemas de portas com múltiplas entradas
Isto posto, vamos ao que interessa.
Comecemos pelo circuito multiplexador. O nome parece complicado, mas sua função é muito simples: circuitos multiplexadores tem várias entradas, um controle e uma única saída, permitindo que o usuário mostre na saída o valor de qualquer das variáveis de entrada dependendo do valor que introduzir no controle.
Parece complicado? Pois um exemplo tornará as coisas mais simples. Imagine que você seja o responsável pela segurança de um prédio com oito andares. Para melhor observar quem circula pelos corredores, instalou em cada andar uma câmara de vídeo. Mas, em vez de instalar oito monitores em sua sala, resolveu trabalhar com um único monitor, que mostrará na tela a imagem de uma câmara de cada vez, dependendo de sua escolha.
Para isso você instalou um circuito multiplexador com oito entradas (cada uma captando o sinal de uma câmara), uma saída (que será encaminhada ao único monitor) e um controle no qual você pode entrar com valores que variam de zero a sete, capaz de selecionar portanto qualquer uma das oito câmaras (não esqueça que o térreo é o pavimento "zero").
Digamos que você quer ver o que se passa no térreo: basta entrar com "zero" no dispositivo de controle que o circuito multiplexador enviará para o monitor o sinal da câmara de número "0", exibindo a imagem do corredor do andar térreo. Se desejar verificar o que se passa no sexto andar, entre com "6" no controle e o sinal da câmara instalada no sexto andar será encaminhado ao monitor. E assim por diante.
Circuitos multiplexadores são empregados nos circuitos digitais sempre que se deseja usar o mesmo condutor elétrico (ou o mesmo barramento) para transportar, de cada vez, um dentre diversos sinais possíveis.
Veja, na Figura 2, o diagrama lógico de um circuito multiplexador.
Figura 2: Diagrama lógico de um circuito multiplexador de 8 entradas
A esquerda estão as entradas, E0 a E7. Acima, os três terminais do dispositivo de controle, que podem receber valores (em binário, naturalmente) variando de zero (000, na base dois) a sete (111 na base dois). Os valores de cada terminal de controle C0, C1 e C2, assim como seus complementos (resultados da saída de cada um deles submetido a uma porta NOT) e os valores das entradas são encaminhados a um conjunto de oito portas AND cujas saídas se juntam na entrada de uma porta OR de acordo com o diagrama lógico da Figura 2.
Pense: a saída de uma porta AND somente é VERDADEIRA se todas as entradas o forem. Então, se qualquer entrada proveniente de um dos terminais de controle for FALSA, a saída da porta AND correspondente será obrigatoriamente falsa. Devido à combinação das conexões dos terminais de controle e seus complementos com as portas AND, somente uma delas (a que corresponder ao número que se entrou no controle) receberá três entradas VERDADEIRAS provenientes do controle. Exemplificando: se entrarmos, por exemplo, com o número 5 (101 em binário) no controle, somente a porta AND ligada à entrada E5 receberá três entradas VERDADEIRAS oriundas do controle. Essa será a única porta AND cuja saída poderá variar (pois as saídas das demais serão sempre FALSAS por receberem pelo menos um sinal FALSO). Se, no exemplo, a entrada E5 tiver um valor VERDADEIRO, a saída da porta AND correspondente também será VERDADEIRA, posto que as outras três (do controle) serão igualmente VERDADEIRAS. Por outro lado, se a entrada E5 contiver um sinal FALSO, a saída da porta AND correspondente também será FALSA, pois a combinação das três entradas VERDADEIRAS do controle com o valor FALSO de E5 resultará em FALSO. Portanto, a saída da porta AND ligada a E5 refletirá o estado de E5: VERDADEIRO se E5 for VERDADEIRO, FALSO se E5 for FALSO. Como os resultados de todas as portas AND são combinados através de uma porta OR e como todas as demais portas AND terão a saída FALSA (devido a pelo menos uma entrada FALSA proveniente do controle), quando se entra com o valor "5" no controle, a saída do circuito multiplexador refletirá o estado da entrada E5: VERDADEIRO se E5 for VERDADEIRO, FALSO se E5 for FALSO. Uma situação análoga ocorrerá com qualquer outro valor que se entre no controle.
ANIMAÇÃO 3: Clique nos botões de "0" a "7" para acompanhar a animação.
O funcionamento do circuito é mais fácil de ser compreendido examinando-se a Animação 3. Nela, clique nos botões de "0" a "7" para entrar com o número correspondente no controle (verifique como os estados dos terminais C2, C1 e C0 refletem esse número) e acompanhe o que ocorre com as diversas conexões. Veja que na porta AND correspondente ao número que foi introduzido no controle a saída está indicada em azul e seu estado será igual ao do terminal de entrada correspondente. Isso significa que se o sinal na entrada En for VERDADEIRO, a saída da porta AND correspondente, em azul, também será VERDADEIRA. E se o sinal de entrada em En for FALSO, a saída da porta AND correspondente, em azul, também será FALSA. Por exemplo: clique no botão "5", repare que a saída da porta que recebe o sinal E5 se torna azul e leia atentamente o parágrafo anterior enquanto acompanha o funcionamento do circuito na animação.
Agora vejamos como funciona um circuito decodificador. Que, embora mais importante, é bastante mais simples que o multiplexador. Um circuito decodificador tem diversas saídas e um controle que pode receber um número correspondente a cada saída. Basta entrar com um número no controle para energizar (aplicar uma tensão) a saída correspondente.
Primeiro examinemos o circuito, depois veremos seu funcionamento e utilidade. Veja, na Figura 4 o diagrama lógico de um circuito decodificador de oito saídas.
Figura 4: Decodificador de oito saídas
Um decodificador não tem entradas, tem apenas o controle e a saída. O controle situa-se na parte superior do diagrama, os três terminais C2, C1 e C0 que podem receber oito números, de zero a sete, cada um deles correspondendo a uma saída.
Seu funcionamento é de uma simplicidade franciscana: entre com um número qualquer no controle e veja a saída correspondente ser energizada. Por exemplo: se em cada saída você tiver conectado uma lâmpada, basta entrar no controle com o número 5 para acender a lâmpada 5. É simples assim.
Seu funcionamento se baseia no fato de que a saída de uma porta AND somente é verdadeira (ou seja, somente haverá tensão nela) se TODAS as entradas forem verdadeiras (ou seja, se todas estiverem alimentadas com tensão). No caso do decodificador de oito saídas, cada porta AND recebe três entradas do circuito de controle. A saída somente será energizada (ou seja, exibirá o valor VERDADEIRO) se as três entradas também o forem. Acompanhe o funcionamento do circuito entrando com um valor de zero a sete no controle clicando nos botões correspondentes e veja como apenas uma porta AND, justamente aquela correspondente ao número em que você clicou (e que foi aplicado ao controle) terá as três entradas energizadas.
ANIMAÇÃO 5: Clique nos botões de "0" a "7" para acompanhar a animação.
Circuitos decodificadores são essenciais para a informática. No interior da unidade de controle de todo microprocessador há um circuito decodificador, responsável justamente pela decodificação das instruções em linguagem de máquina. Como se sabe, uma instrução em linguagem de máquina nada mais é que um número. Cada número corresponde a uma instrução que será executada energizando-se um determinado circuito lógico contido no interior do microprocessador. Pois bem: quem energiza esse circuito é justamente o decodificador, que recebe a instrução (um número) e "liga" a saída que energizará o circuito correspondente àquela instrução.
Todos os circuitos examinados até agora são circuitos do tipo "combinatório", ou seja, o valor da saída depende da combinação dos valores das entradas em um determinado momento. Alterando-se o valor das entradas (ou os números aplicados ao controle) altera-se o valor da saída.
Agora vamos ver um circuito de natureza diferente, um circuito "seqüencial". O valor da saída dos circuitos seqüenciais não depende dos valores da(s) entrada(s), mas de uma operação anteriormente nelas executada. Um exame do circuito tipo "latch" (também conhecido por "flip-flop") adiante apresentado esclarecerá melhor a questão. Veja, na Figura 6, o diagrama lógico de um circuito deste tipo.
Figura 6: Diagrama lógico de um circuito tipo "latch" (ou "flip-flop")
O circuito é composto de duas portas NOR interligadas. Ele tem dois terminais de entrada, "Set" (ou "liga") e "Reset" (ou desliga), cada um deles aplicado a uma das portas. A saída pode ou não estar energizada (ou seja, ser ou não VERDADEIRA). Se aplicarmos uma tensão no terminal "Set", a saída passará a estar energizada. Mas o importante é que ela permanecerá assim mesmo depois que cessar a tensão aplicada ao terminal "Set". Ou seja: depois de ligada, a saída permanecerá ligada independentemente do estado de qualquer das entradas. Para desligar a saída é necessário aplicar uma tensão ao terminal "Reset". E, também neste caso, depois de desligada ela assim permanecerá mesmo depois que a tensão não mais for aplicada ao terminal "Reset" e somente será ligada quando se aplicar uma tensão, mesmo de curta duração, ao terminal "Set".
Resumindo: aplicando-se um pulso de tensão (uma tensão de curta duração) ao terminal "Set" a saída é ligada e permanece ligada até que se aplique um pulso de tensão ao terminal "Reset", quando se desligará e assim permanecerá até que se aplique um novo pulso ao terminal "Set". Veja o funcionamento do circuito na Animação 7, na qual eu acrescentei a tabela verdade da porta lógica NOR para facilitar a compreensão.
ANIMAÇÃO 7: Clique nos botões "Set" e "Reset" para acompanhar a animação.
Repare: no estágio inicial a saída está desligada. Experimente: clique no terminal "Reset" e note que um pulso de tensão é aplicado a uma das entradas da porta NOR da parte inferior da animação, tensão esta que cessa após algum tempo. Mas o estado da saída não se alterou, permanecendo desligada. Isso ocorreu porque ela já estava desligada e o terminal "Reset" serve para desligá-la, portanto não fez efeito algum. Agora, clique no terminal "Set". Você verá que um pulso de tensão é aplicado a uma das entradas da porta NOR da parte superior da animação e que isso fará com que sua saída imediatamente assuma o valor FALSO, o que se refletirá na saída do circuito, que passará a ser VERDADEIRA e, pela realimentação da porta superior, se manterá neste estado mesmo após haver cessado a aplicação da tensão no terminal "Set". Agora sim, com a saída ligada, um clique no terminal "Reset" fará efeito e a desligará.
Não se limite a clicar nos botões Set e Reset para ver o estado da saída se alterar. Procure entender o porquê dessa alteração acompanhando os valores das tensões e comparando-os com a tabela verdade. Sobretudo, procure entender porque o valor da saída não se altera quando cessa a aplicação da tensão sobre qualquer dos dois terminais de entrada. É mais simples do que parece.
Agora, que você já entendeu o funcionamento do circuito "latch" ou "flip-flop", pode avaliar melhor a diferença entre circuitos combinatórios e seqüenciais. Repare no circuito seqüencial "latch": seu estado normal corresponde a ambas as entradas desenergizadas (elas somente são energizadas durante curtos períodos, para ligar ou desligar a saída). No entanto o valor da saída pode ser tanto VERDADEIRO como FALSO. Ou seja: o valor da saída não depende dos valores das entradas em um dado momento, mas sim de uma ação anterior (no caso, a aplicação do pulso de tensão) sobre uma delas.
Neste ponto você já deve ter percebido a utilidade deste tipo de circuito. Sua saída pode assumir um dentre dois valores (ligada ou desligada) e permanecer assim até que uma ação específica (tensão em uma das entradas) venha alterá-la. Ou seja: trata-se do dispositivo ideal para ser usado como célula de memória. Um circuito desses armazena um bit (saída ligada, valor "um", saída desligada, valor "zero"). Oito deles em paralelo armazenam um byte e podem constituir uma posição de memória de um computador.
Agora já conhecemos todos os circuitos elementares que precisamos. Na próxima coluna desta série iremos combiná-los em uma aplicação que, aposto, irá surpreendê-lo.
Aguarde.