Trabalho Prático n o 6 Componentes Sequenciais SSI Básculas, Flip-Flops e Debouncing 1 Introdução Este trabalho tem como objectivo: introduzir os rudimentos de circuitos sequenciais em projectos digitais, mostrando nomeadamente como estes se baseiam em lógica combinacional com realimentação; demonstrar a utilidade prática dos circuitos baseados em lógica sequencial, mesmo quando circuitos simples. 2 Porque a Vida Não É Instantânea Diagramas Temporais Como foi dito no decurso da apresentação do trabalho anterior, os circuitos sequenciais reagem, teoricamente, a instantes de mudança em sinais de sincronismo. Porém mais que quiséssemos, os acontecimentos físicos que permeiam a vida real não se conseguem dar instantaneamente: tudo no mundo necessita de uma quantidade de tempo finito para acontecer. Por outras palavras, mais formalmente, os sinais presentes no mundo são matematicamente contínuos, em oposição aos sinais matematicamente discretos que gostaríamos por vezes que existissem. Evitaria tantos acidentes, por exemplo, que o tempo de reacção do ser humano e dos travões de um automóvel fosse zero... 1
CLK INPUT XPTO OUTPUT XPTY CLK a) INPUT XPTO OUTPUT XPTY t setup t hold t ffpd b) Figura 1: a) Diagrama temporal ideal versus b) Diagrama temporal realista. Por essa razão, introduzimos agora aquilo a que se dá o nome de diagrama temporal digital, ou, abreviando, diagrama temporal, que mostra a evolução paralela de vários sinais ao longo do tempo. A figura 1 mostra exemplos de análise de um caso a nível ideal/teórico, onde geralmente um projectista se abstrai das limitações desprezáveis de um sistema, versus a nível real (quase pessimista, mesmo!), onde se tomam em conta os vários tempos de reacção dos dispositivos digitais envolvidos. Os tempos de reacção especificados concretamente nesta figura são sem dúvida os mais importantes a ter em conta em circuitos sequenciais: o tempo que um componente sequencial necessita para se preparar para reagir aos valores nas suas entradas (denominado setup time ) e o tempo que esse componente necessita para estabilizar a sua reacção (denominado hold time ) durante esses períodos as entradas têm de se manter constantes, sob pena de o componente reagir de forma imprevisível; o tempo de estabilização efectiva das saídas, depois de confirmada a reacção às entradas (denominada t ffpd ) durante este tempo não se pode amostrar as saídas do componente, devido ao facto de ser incerto se o valor que se encontra nessas saídas é efectivamente o resultado final da reacção. 2
Figura 2: Biestável num dos seus dois estados estáveis, sem influências externas. Além destes, existem ainda os tempos de reacção dos circuitos combinacionais, que se juntam a esta panóplia de considerações temporais a ter em conta... Por isso, muitas vezes as frequências de relógio que se escolhem para um circuito são dependentes das capacidades de reacção dos seus componentes, sendo o seu valor máximo limitado pelo tecto imposto pelo tempo resultante da soma de todos os tempos de reacção dos componentes envolvidos numa acção do circuito. Portanto, a partir de agora, cuidado com o sincronismo! 3 Componentes sequenciais básicos Em seguida, apresentar-se-ão as entranhas dos componentes sequenciais mais básicos (ao ponto de se poder considerá-los discretos). Ver-se-á que não são mais que portas lógicas (componentes combinacionais, portanto), cujas saídas são realimentadas para as entradas. 3.1 O biestável O circuito sequencial mais simples consiste num para de inversores com uma linha de realimentação, como apresentado na figura 2. Não tem entradas e tem duas saídas, Q e /Q (ou Q). Em termos digitais ideais, devido à regra de 3 o excluído da lógica de Boole, temos que qualquer destas saídas só poderá ter um de dois valores: 0 ou 1. Por esta razão, este circuito tem dois estados estáveis possíveis e denomina-se de biestável. 3
Problemas I 1. Expliquem convenientemente o que se passa no circuito da figura 2 na página anterior, começando por assumir o facto de que, por razões puramente estatísticas (50% de hipóteses, idealmente), quando se ligou a alimentação dos inversores, Q passou para o nível lógico 1. Cuidado com o vosso português! 2. O que aconteceria se inicialmente Q tivesse sido 0? 3. (Na aula!:) Simulem agora o circuito que se segue: Figura 3: Biestável no seu estado Q = 1. O que estará a acontecer? (a) Mudem a posição do comutador. O que toma precedência na definição do estado do biestável? O comutador ou Q? (b) Apaguem agora o fio que liga ao comutador. O que aconteceu? Qual é a explicação? (c) Quanto CIs de lógica combinacional, e de que tipo, são necessários para construir este circuito? (Pode e deve falar em termos de fracções de CIs; por exemplo, será útil referir-se a 1 CI e meio.) 4. Qual deverá ser o valor presente nos comutadores do circuito da figura 4 na página 6 para que ele funcione como um biestável? Dica: lembrem-se da vossa álgebra de Boole! 3.2 O comportamento metastável Infelizmente, como já foi dito, o mundo não é ideal: em vez de variações discretas (não contínuas) entre 0 e 1, temos variações contínuas entre 0 V e 5 V, no caso TTL. 4
A pergunta que surge é óbvia: o que acontece, por exemplo, se o biestável acordar com 2,5 V em Q? Efectivamente, o que acontece é que o biestável entra num 3 o estado, que há pouco, no mundo ideal, era o 3 o excluído: o estado metastável. Neste estado, tanto Q como Q ficam naquele meio-termo entre os valores lógicos 0 e 1, isto até que, depois de passado um determinado hiato temporal, o mínimo de ruído, sempre presente, desequilibra a balança, fazendo que o circuito entre num dos dois estados estáveis. Mas desengane-se quem pense que este comportamento é exclusivo da altura em que se liga a alimentação do circuito; o comportamento do circuito ao longo do tempo pode ser comparado à posição de uma bola num monte com um vale de cada lado. Se se imaginar o topo do monte como o estado metastável e os 2 vales como os estados estáveis, a bola, para ser empurrada de um lado para o outro do monte, isto é, do 0 para o 1 ou do 1 para o 0, terá de ser empurrada durante tempo e com a força suficiente para ultrapassar o topo. Se for tempo ou força a menos, volta ao estado anterior; se for tempo ou força mais ou menos, corre-se o perigo de entrar no estado metastável... Daí, por exemplo, a razão de ser da maior parte das questões temporais discutidas anteriormente... 3.3 As básculas Uma báscula 1 é o nome dado a um componente sequencial que observa sempre as suas entradas e que pode mudar as suas saídas sem qualquer sentido de sincronismo (se bem que podem incluir controlo tipo enable ). O exemplo mais simples deste tipo de circuitos é a báscula S-R, observável na figura 4 na página seguinte. A sua tabela funcional 2 é a seguinte: S R Q n+1 /Q n+1 0 0 Q n /Q n 0 1 0 1 1 0 1 0 1 1 0 0 Tabela 1: A tabela funcional da báscula S-R. 1 Latch em inglês. 2 Parecida com a tabela de verdade, mas não é bem o mesmo: aqui interessa também o estado presente e o estado seguinte... Mas é fácil de entender; para bom entendedor, meia explicação basta. 5
Figura 4: Uma báscula S-R. Em cima, o seu circuito inserido como sub-circuito de um circuito de teste simples; em baixo, o seu símbolo. Este último não está formalmente correcto (no fundo está a afirmar-se duas vezes que Q é activado a zero, ou seja, tem-se aqui uma involução...), mas é a versão mais usada na prática pelos fabricantes... Problemas II 1. (Na aula!:) Simulem agora o circuito da figura 4. (a) Expliquem convenientemente o que se passa no circuito da figura, usando a tabela funcional do componente. Cuidado com o vosso português! (b) Porque é que este componente se chama Set-Reset Latch? (c) Será completamente correcto etiquetar as saídas de Q e Q? Porquê? 2. (Na aula!:) Simulem o circuito da figura 5 na página seguinte. (a) Expliquem convenientemente o que se passa no circuito da figura e construam a tabela funcional do componente. Cuidado com o vosso português! (b) Quanto CIs de lógica combinacional, e de que tipo, são necessários para construir este circuito? 6
Figura 5: Báscula S-R com enable. 3.3.1 Báscula D As básculas S-R são úteis em aplicações de controlo, onde se pensa normalmente em termos de sinalizar ( SET ) a resposta a alguma condição, e retirar essa sinalização ( RESET ) quando a condição muda; controlam-se, pois, as entradas S e R de uma forma relativamente independente. Porém, a maior parte das vezes a utilidade das básculas está no seu uso como unidades de memória de um bit isto é, temos informação de um determinado número de bits que se quer armazenada algures. Nestes casos, as básculas D, cujo circuito e símbolo lógico estão representados na figura 6 na próxima página, são muito úteis para armazenar cada bit. Veja-se que esta báscula não é mais que uma adaptação da báscula S-R com enable, como se torna óbvio pela figura... Como última curiosidade, diga-se que a este tipo de componentes, que seguem sempre o que se passa nas entradas no valor de saída, se dá o nome, por essa razão, de circuitos sequenciais transparentes. Problemas III 1. (Na aula!:) Simulem e expliquem convenientemente o que se passa no circuito da figura e construam a tabela funcional do componente. Cuidado com o vosso português! 7
Figura 6: Báscula D. 2. Já será correcto, neste caso, usar as denominações Q e Q para as saídas? Porquê? Qual é então a vantagem deste tipo de báscula face à S-R? 3.4 Os Flip-Flops Devido aos problemas de comportamentos metastáveis presentes nas básculas, foi criado um outro tipo de componente sequencial elementar, o flip-flop, que só olha para as entradas e modifica as saídas a partir delas na altura em que é registado na entrada de sincronismo (mais comummente denominada de entrada de relógio) um determinado evento. O flip-flop mais comum e simples é o chamado flip-flop D accionado por vertente. A configuração mais simples de circuito para construção deste flip-flop, o flipflop D master-slave está representado na figura 7 na página seguinte na sua versão sensível à vertente ascendente do relógio. Note-se, porém, que esta configuração, apesar de perfeitamente funcional, não é a usada comercialmente devido a existirem configurações que oferecem tempos de resposta mais rápidos do que esta; no entanto, devido à sua simplicidade, será esta que estudaremos aqui. Problemas IV 1. (Na aula!:) Construam o circuito da figura 7 na próxima página, mas substi- 8
Figura 7: Flip-flop D master-slave accionado por vertente ascendente. tuindo as básculas D com o seu circuito correspondente que simularam anteriormente. (a) Expliquem convenientemente o que se passa nesse circuito e construam a tabela funcional do componente. Mostrem que a saída apenas muda com valores registados na vertente ascendente do relógio e cuidado com o vosso português! (b) Modifiquem o circuito de forma a ele reagir com a vertente descendente do relógio e simulem-no. 2. Vejam o circuito da figura 8 na página seguinte. Quais as diferenças para o vosso circuito? Qual a função das novas entradas propostas? 3.4.1 Flip-flops J-K Apesar dos flip-flops master-slave tipo D serem perfeitamente funcionais, já os master-slave S-R sofrem de problemas de não se poder mudar o valor das entradas antes da vertente a que respondem sob pena do resultado das saídas se tornar imprevisível... Por essa razão, foram criados os flip-flops J-K accionados por vertente, cujo circuito e cujo símbolo são apresentados na figura 9 na página 11 na versão sensível à vertente ascendente. 9
Figura 8: Flip-flop D master-slave accionado por vertente ascendente modificado. Problemas V 1. (Na aula!:) Construam o circuito da figura 9 na página seguinte. (a) Expliquem convenientemente o que se passa nesse circuito e construam a tabela funcional do componente. Cuidado com o vosso português! (b) Modifiquem o circuito de forma a ele reagir com a vertente descendente do relógio e simulem-no. 2. Existe um último flip-flop, chamado flip-flop T (de Toggle ), que tem uma única entrada que complementa o seu estado com todas as variações de relógio (claro que é na mesma sensível apenas a uma das vertentes). Logo a entrada de relógio é T, não existindo mais entradas. (a) Construam a tabela funcional do componente e desenhem o que imaginam ser o seu símbolo (vertente descendente!). (b) (Na aula!:) Existem duas maneiras de construir este flip-flop, usando um flip-flop D ou um flip-flop J-K. Como serão? Simulem uma dessas soluções. 10
Figura 9: Flip-flop JK accionado por vertente ascendente. CONTADOR BINÁRIO (0 a 9) CONVERSOR BCD-7 SEGMENTOS a 4 7 f g b TRIGGER BCD SEVSEG e c d Figura 10: Diagrama lógico projectado para a pista de automóveis (mais uma vez!). 4 Especificação dos Requisitos O licenciado em comunicações e multimédia reparou que o seu circuito, representado mais uma vez em versão de Diagrama de Blocos na figura 10, não funcionava bem devido a contacto que usava na pista. Por razões óbvias, sempre que o contacto, no fundo um comutador lógico, era accionado pelo carro que passava por ele, batia várias vezes até estabilizar, provocando vertentes incomodativas que accionavam de forma errada o contador de voltas. Portanto, ele decidiu construir um circuito de debouncing, usando um circuito com um biestável como na figura 3 na página 4. Ele tinha aprendido nas suas aulas de Tecnologia de Computadores que um circuito desses mantinha o valor lógico das suas saídas estável, funcionando efectivamente 11
como um filtro que impede variações pequenas devido aos batimentos dos contactos de comutadores e interruptores lógicos. 5 Implementação do sistema Desenhem o diagrama lógico da vossa solução para o circuito. Vai ser-vos disponibilizado um 74 49 (conversor BCD-7 segmentos), um contador 74 161 e CIs de lógica discreta para o executarem. Não se esqueçam de seguir as minhas recomendações e boa sorte no vosso trabalho! Referências Bibliográficas [1] Wakerly, J. F. Digital Design Principles and Practices, 2nd ed. Prentice Hall, 1994. [2] Marta, E. S. Sebenta Prática de Sistemas Digitais I. Cadeira dada no DEEC, 2002. [3] Padilla, A. J. G. Sistemas Digitais. McGraw-Hill, 1993. [4] Horowitz, P., and Hill, W. The Art Of Electronics, 2nd ed. Cambridge University Press, 1989. 12