Latch – O que você precisa saber sobre algo tão simples, mas tão importante

Latch

Prezado leitor, este post tem por objetivo introduzir brevemente o conceito de latch (figura 1). Primeiramente um latch não é somente uma música do Sam Smith (confira aqui), latch também é um elemento primitivo de memória amplamente utilizado em microeletrônica. Ou seja, um latch armazena uma informação. Temos que ter em mente que sistemas digitais, em geral, possuem circuitos sequencias que armazenam bits de informação e, portanto, temos que considerar os dispositivos mais simples como os latches antes de falarmos em flip-flops, mesmo sabendo que raramente um projetista utiliza latch para o desenvolvimento de um projeto (quem programa HDL sabe bem que devemos evitar latch – #ficaadica).

 

Para entendermos melhor para que serve um latch, temos que ter em mente que um circuito sequencial tem as suas saídas (output) dependentes tanto do estado atual ou do estado corrente da entrada (input).

 

latch

Figura 1 – Latch: elemento primitivo de memória

 

Uma vez que este estado é alterado torna-se necessário de alguma forma armazenar essa informação até que futuramente novas combinações nas entradas voltem a ocorrer e mudem este estado. Portanto, para esse armazenamento são utilizadas células de memória, no caso latches ou flip-flops. Dessa forma, iremos discutir mais a fundo sobre latch-SR padrão, latch-SR sensível a nível e o latch do tipo D e, por fim, sobre como é construído um flip-flop [1][2] .

 

 

Realimentação

 

Segundo [1] o método básico para armazenamento de um bit em um circuito digital é a realimentação deste circuito. O exemplo (figura 2) abaixo ilustra todos os passos dessa realimentação. Na figura 2 (a) tanto as entradas quanto a saída da porta lógica OR estão em zero. No transcorrer a entrada S é alimentada – figura 2 (b), que por sua vez é executada a lógica OR e cuja saída muda portanto para nível lógico 1 – figura 2 (c). Na figura 2 (d) é possível observar que a outra entrada do circuito é realimentada pela saída. Por fim na figura 2 (e) a entrada S é novamente colocada em nível lógico zero. Onde está o problema agora?

 

latch

Figura 2 – Armazenamento realimentado [1]

 

O maior problema levantado pelo autor é que uma vez a entrada S muda de estado (figura 2 (e)) para 1 a saída Q permanecerá sempre em 1 – isto ocorre devido à realimentação (ao menos que o circuito seja desligado).

 

 

LATCH-SR BÁSICO

 

Um solução para resolver o problema descrito anteriormente foi o desenvolvimento do latch-SR (figura 3) – uma combinação entre duas portas NOR inter-alimentadas. De forma simples podemos pensar que um latch SR funciona da seguinte forma: a porta S (SET) obriga o latch a ser um, enquanto a porta R (RESET) obriga o latch a ser zero.

 

latchRS

Figura 3 – Latch SR Básico

 

Como nem tudo são flores, um latch SR também possui um porém. Quando ambas as entradas S e R ficam em 1 ao mesmo tempo pode ocorrer um problema de indefinição do estado, ou seja, a saída Q do latch SR vai começar a oscilar (figura 4) quando S e R ambas voltarem a ser zero. Isso para um circuito digital não é aceitável. 

 

instabilidade

Figura 4 – Instabilidade na saída Q -quando S = 0 e Q = 0

 

O que realmente ocorre em um circuito real são atrasos nas linhas que interligam os sistemas, portanto em algum momento, depois de um período de oscilação, umas das portas poderá estar atrasada ou adiantada o suficiente para tornar o circuito estável. Essa indefinição é chamada de condição de corrida (race condition), e torna o latch-SR básico muito instável para projetos digitais.

 

 

LATCH-SR Sensível a Nível

 

Um latch-SR Sensível a Nível é um latch cujas portas de entradas S e R somente são habilitadas quando a terceira porta E (Enable) é habilitada. Em termos gerais, somente colocamos a entrada E em 1 quando realmente tivermos seguros que as entradas S e R estão estáveis. A figura 5 ilustra o latch-SR sensível a nível.

 

latchRSnivel

Figura 5 – Latch-SR Sensível a Nível

 

 

LATCH-SR tipo D 

 

Um latch com uma configuração mais avançada é o latch-SR do tipo D. Este latch evita definitivamente o problema de trepidação mencionado na figura 4. O latch-SR tipo D difere do latch-SR Sensível a Nível por conta da inclusão de uma porta inversora entre as entradas S e R.  Dessa forma, devido ao atraso inerente à porta NOT, estamos garantindo que as entradas S e R não serão 1 ao mesmo tempo, desde de que a porta de enable esteja desabilitada [1].

 

latchD

Figura 6 – Latch do tipo D com entrada de habilitação E (posteriormente a lógica será simplificada, ou seja, tem uma AND a mais)

 

Chegamos ao ponto de virada (turning point) – o latch tipo D é, portanto, o ponto de partida para estruturas mais complexas para armazenamento de um bit, ou seja, com a combinação de dois latches do tipo D podemos projetar um flip-flop do tipo D.

 

 

Latch – Aplicação

 

Uma aplicação interessante para um latch é a supressão de ruídos de contato (chaves mecânicas), estamos falando do conhecido debouncing ou contact bounce (figura 7). 

 

vout

Figura 7 – Trepidação por comutação de chave mecânica

 

Um forma de evitarmos o problema de trepidação é com a inserção de um latch na saída da chave como ilustrado na figura 8.

 

latchTrip

Figura 8 – Latch como solução para debouncing

 

 

Flip-Flop

 

Por fim chegamos à unidade básica de memória – o flip-flop. Um flip-flop do tipo D é um bloco de armazenamento de 1 bit, sensível à borda, ou seja, quando a entrada Clk variar, seja na subida ou na descida do sinal, o sinal da entrada é transmitido para a saída. Um flip-flop do tipo D é composto de dois latches do tipo D ligados em modo mestre/escravo (figura 9).

 

latch flip-flop

Figura 9 – Flip-flop tipo D combinação de dois latches D

 

Caro leitor, o assunto é amplo e importante. O presente post cobre muito superficialmente o assunto, mas levanta tópicos importantes. Quem pretende se enveredar no campo da microeletrônica necessita entender o assunto de forma mais aprofundada, em especial flip-flops. Outro aspecto interessante de lembrar são as diversas aplicações para que esses blocos de armazenamento de dados podem servir. 

 

 

Referências

 

[1] Sistemas Digitais – Projeto, Otimização e HDLs – Frank Vahid

[2] CMOS VLSI Design: A Circuits and Systems Perpesctive (4th ed.) – Neil West, David Harris

 

Saiba Mais

Metaestabilidade em sistemas digitais

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

[wpseo_breadcrumb]
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries

Menu
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services