Article image
Fernando Araujo
Fernando Araujo09/07/2024 09:13
Share

<Direto ao Ponto 31> Circuitos Digitais Sequenciais

  • #Informática Básica


Artigos desta série: ( < ) Anterior | Índice | Seguinte ( > )

 

 

Olá, dev!

 

 

Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO. Ele vai tratar dos circuitos digitais sequenciais, usados em computadores e outros equipamentos digitais.

 

Sumário

1.   Introdução

2.   Flip-flops

3.  Registradores

4.  Considerações finais

5.   Referências

 

1 – Introdução

 

A série DIRETO AO PONTO enfoca artigos sobre conhecimentos básicos da programação e é voltada, principalmente, para os iniciantes.

 

Um computador (ou equipamento digital) é construído com:

·     circuitos digitais básicos (portas lógicas OR, AND, NOT, XOR, NAND e NOR);

· circuitos combinacionais (multiplexadores, demultiplexadores, codificadores e decodificadores);

·     circuitos sequenciais (flip-flops, registradores, memórias);

·     componentes analógicos (resistores, capacitores, transistores e outros).

 

Neste artigo vamos tratar apenas dos circuitos digitais sequenciais mais usados nos computadores. Os outros 3 tópicos já foram temas de artigos anteriores desta série.

No artigo sobre circuitos digitais combinacionais, foi mostrado que a saída deste tipo de circuito reflete de imediato os valores aplicados à sua entrada. No caso dos circuitos digitais sequenciais, a entrada pode mudar várias vezes, mas a saída só será alterada no momento da ativação por um sinal de controle, chamado de relógio (ou “clock”, termo técnico original).

 

  

2 – Os Flip-flops

 

Um flip-flop (FF) é o circuito sequencial mais comum. Ele tem a funcionalidade de armazenar um bit (0 ou 1), até que outro comando seja aplicado, mantendo aquele valor por mais tempo ou alterando-o para o bit inverso (1 ou 0, respectivamente).

 

Por armazenarem valores lógicos, considera-se que os circuitos sequenciais têm memória, embora eles sejam construídos com portas lógicas. Elas são ligadas usando realimentação, ou seja, retorno dos valores de saída para a entrada, de forma que valores de saída anteriores influenciam nas novas saídas do circuito.

 

Basicamente, um flip-flop é um circuito alimentado por algumas entradas que geram duas saídas complementares, de valor invertido. Veja a figura a seguir.


image

 

 

A saída Q é chamada de SET enquanto a outra (sempre com valor lógico inverso) é chamada de RESET. Quando Q é igual a 1, dizemos que o flip-flop está no estado “setado” (“SET”) e quando ela é 0 (consequentemente, a outra saída está em 1), dizemos que o flip-flop está no estado “ressetado” (“RESET”) ou limpo (“CLEAR”).

 

 

O flip-flop mais simples é o latch”, que pode ser construído com portas NAND ou NOR. A seguir, é mostrado um esquema de um latch montado com portas NAND. Veja a figura abaixo, com a sua implementação e o símbolo de um latch.

 image


Veja que ele é um circuito combinacional, em que suas saídas mudam imediatamente após a mudança das entradas.

 

Inicialmente, ele está com as duas entradas em 1. Para atribuir 1 à saída Q (estado SET), basta colocar um valor 0 a entrada S. Quando a entrada S voltar para 1, a saída permanecerá em 1. A outra saída sempre apresentará o valor inverso à saída Q, ou seja, 0.

 

Para atribuir 0 à esta saída (Q), consequentemente 1 à outra saída (estado RESET), basta colocar um valor 0 à entrada R; quando a entrada R voltar para 1, a saída Q permanecerá em 0 e a outra saída ficará em 1.

 

Caso as duas entradas sejam colocadas em 0 ao mesmo tempo, os valores armazenados nas saídas dependerão de qual delas retornará para o valor 1 primeiro. Esta entrada não é considerada válida e a sua utilização é desencorajada.

 

Colocar as duas entradas em 1 ao mesmo tempo não provoca alteração nas duas saídas, que permanecem com seus valores atuais.

 

 

Uma aplicação muito comum para um latch é evitar variações rápidas de tensão no acionamento de uma chave mecânica. Normalmente, assim que ela é apertada, são gerados vários contatos posteriores seguidos, com duração de milissegundos, chamados de trepidação de chave, inaceitáveis em muitas aplicações.

 

Ao colocar um latch na saída da chave, no primeiro contato, ele captura o valor da tensão no primeiro contato e armazena o estado APERTADA, não repassando os pulsos da trepidação.

 

Um latch é um flip-flop muito simples, com poucas opções de controle.

 

Outra opção mais comum é usar um flip-flop como um gerador biestável, gerando ondas quadradas na saída, permitindo maior controle do momento em que as saídas serão alteradas.

 

Existem vários tipos de flip-flops, sendo os mais comuns os tipos:

·      S-R (Set-Reset), com 2 entradas (S e R);

·      D (Data), com 1 entrada (D);

·      T (Toggle), com 1 entrada (T);

·      J-K, com 2 entradas (J e K).

 

OBS. No meu tempo de graduação, o D do flip-flop tipo D significava “Delay” (atraso), neste livro mais atual em que me baseei, é “Data” (dado).

 

O diagrama funcional de um flip-flop S-R é mostrado na figura a seguir.


image

 

Um flip-flop com clock funciona da mesma forma que um latch, atribuindo valores lógicos às saídas de acordo com os valores lógicos das entradas, só que o valor das saídas não se altera assim que o valor das entradas muda, mas ele depende da mudança do valor lógico de uma terceira entrada.

 

Esta nova entrada (CLK) é o sinal de relógio (“CLOCK”), que determina o momento em que as saídas são alteradas, exatamente quando o valor desta entrada varia de 0 para 1 (na subida, transição positiva) ou de 1 para 0 (na descida, transição negativa). Um sinal de relógio é uma onda quadrada, com pulsos regulares, com tensões variando do nível lógico 0 para 1 e vice-versa.

 

A saída de um flip-flop S-R é semelhante à do latch mostrado anteriormente, inclusive apresentando o estado inválido para as entradas S=1 e R=1. Uma forma de se resolver este problema é com o flip-flop mestre escravo, que acrescenta um segundo estágio antes do flip-flop S-R, permitindo que esta entrada gere uma saída válida, cuja ação é inverter o valor da saída Q. A figura a seguir mostra a implementação de um flip-flop J-K a partir de um latch.


image

 

A figura abaixo mostra o símbolo de um flip-flop J-K e a tabela com os valores das saídas para valores dados nas suas entradas.

 image


A figura a seguir mostra as formas de onda para as entradas, saídas e a entrada de relógio para um flip-flop J-K, indicando o momento da mudança das saídas para vários valores lógicos das entradas J e K, que mudam de acordo com a tabela da figura anterior.

 

image


 

Neste exemplo, o sinal de relógio ativa as alterações das saídas na subida, ou seja, transição positiva (de 0 para 1), tendo a primeira subida ocorrido no momento indicado pela letra a, na forma de onda.

 

Estes momentos estão indicados pelas letras a, c, e, g, i, e k (marcadas por um retângulo vermelho). Nestes momentos, a saída Q muda para os valores lógicos 0, 1, 1, 1, 0, 1, respectivamente (marcados pelos retângulos amarelos).

 

Um flip-flop ainda pode ter duas entradas de controle, que atribuem de imediato valores à saída Q, sendo uma forma de inicialização:

PRESET – atribui de imediato o valor 1 à saída Q;

CLEAR – atribui de imediato o valor 0 à saída Q;

 

Aplicações dos flip-flops com entrada de relógio

 

Os flip-flops disparados por borda (com entrada de relógio) são muito versáteis e podem ser usados em aplicações como contadores, armazenamento binário de dados e transferência de dados, detecção de sequências, de transições (eventos), por exemplo.

 

 

3 – O Registrador de deslocamento (“Shift Register”)

 

Um flip-flop só permite o armazenamento de um bit, mas os flip-flops podem ser conectados em sequência para realizar o armazenamento de vários bits de uma só vez.

 

Um registrador (ou registrador de deslocamento) é um grupo de flip-flops organizados em sequência, com a saída de um ligada à entrada do seguinte, de modo que os números binários armazenados neles sejam deslocados de um para o seguinte a cada pulso de relógio.

 

Essa operação é semelhante a uma calculadora eletrônica, em que os dígitos mostrados no display são deslocados cada vez que é teclado um novo dígito.

 

A figura abaixo mostra esta estrutura, usando flip-flops do tipo D.

 image


A saída de um flip-flop é conectada diretamente à entrada do seguinte, de forma que ao sinal do relógio (“clock”), as saídas de todos os flip-flops são carregadas com o valor de suas entradas.

 

Estas estruturas são conhecidas como Registradores de Deslocamento (ou “shift registers”). Eles são chamados assim porque os valores armazenados individualmente nos flip-flops podem ser repassados adiante para os próximos estágios, o que desloca o valor armazenado para um lado. Veja a figura abaixo:

 

 image



 

A estrutura acima só permite deslocar o conteúdo para um lado (no caso, para a direita), mas um registrador pode permitir o deslocamento para os dois lados. A estrutura abaixo mostra como ligar flip-flops em sequência, adicionando portas lógicas para que ele faça deslocamentos para os dois lados.

 

A representação de um registrador não precisa mostrar os flip-flops individuais, mas apenas casas correspondentes ao número de bits dele, da forma mostrada abaixo, para um registrador de 8 bits:

 

image


 

Na figura, o registrador de 8 bits armazena o valor binário 01001111, que representa o valor decimal de 79, já o registrador de 16 bits armazena o valor binário 0010011100001111, que representa o valor decimal 9999. O bit mais à esquerda é o bit mais significativo do número binário (MSB – “Most Significant Bit”), enquanto o bit mais à direita representa o bit menos significativo (LSB – “Least Significant Bit”).

 

 

Além do armazenamento, as aplicações mais comuns para registradores são conversão paralelo para serial, serial/paralelo, mostrado na figura a seguir.

 

Existem circuitos integrados comerciais com registradores de 4 bits e de 8 bits, mas registradores com mais bits (16, 32, 64 bits) podem ser criados por meio do agrupamento sequencial de registradores menores (de 8 bits). A figura abaixo mostra 2 registradores de 8 bits interligados, resultando em um de 16 bits, com o mesmo conteúdo do registrador de 16 bits da figura anterior.

 

image


 

Agora, imagine um conjunto de vários registradores de 8 bits (ou de 16 bits), que podem ser identificados univocamente por meio de um endereço numérico único, conforme a figura a seguir:

image


 

 

Na posição 2 (binário 0010), o registrador armazena o valor binário 00000110 (decimal 6), na posição 15 (binário 1111), outro registrador armazena o valor binário 00100001 (decimal 33). Nas outras posições, é armazenado o número 00000000 (decimal 0).

 

 

Isso lhe lembra alguma coisa? Exatamente! É a estrutura da memória de um computador.

 

Mas isso é assunto para o próximo artigo.

 

 

4 – Considerações finais

Este é mais um artigo da série DIRETO AO PONTO, que eu estou escrevendo para a DIO.

 

Desta vez, foram apresentados circuitos digitais sequenciais, que são os flip-flops, os registradores e as memórias.

 

Os flip-flops são construídos com portas lógicas combinacionais e realimentação das saídas. Esta estrutura permite armazenar um bit na saída de acordo com uma combinação das suas entradas. As duas saídas fornecem valores lógicos invertidos.

 

Eles também possuem uma entrada adicional, onde é aplicado um sinal de relógio (clock), que determina os momentos em que as saídas são armazenadas, podendo ser controlado, de forma síncrona, pela transição deste sinal (subida ou descida). 

 

Flip-flops podem ser agrupados em sequência para armazenar e manipular vários bits de uma só vez.

 

As aplicações dos flip-flops e dos registradores são muitas, desde a solução da trepidação de chaves mecânicas até a conversão da transferência de dados de serial para paralela e vice-versa.

 

Além disso, os registradores de deslocamento são a base das memórias de computador. Finalmente, eles são importantes componentes da estrutura interna dos microprocessadores.

 

Pela sua importância para o hardware e para o software dos computadores, as memórias serão tratadas me detalhes em outro artigo.

  

 

5 – Referências

 

[1] Ronald J. TOCCI, Neal S. WIDMER, et al., Sistemas Digitais – Princípios e aplicações – 12ª Edição, Pearson, 2019.

 

 

Artigos desta série: ( < ) Anterior | Índice | Seguinte ( > )

 

Share
Comments (0)