Contador de anel - Ring counter

Um contador de anéis é um tipo de contador composto de flip-flops conectados em um shift register , com a saída do último flip-flop alimentada para a entrada do primeiro, formando uma estrutura "circular" ou "anel".

Existem dois tipos de contadores de anel:

  • Um contador de anel direto , também conhecido como contador one-hot , conecta a saída do último registrador de deslocamento à primeira entrada do registrador de deslocamento e circula um único bit um (ou zero) ao redor do anel.
  • Um contra anel trançado , também chamado switch-cauda contra anel , caminhando contra anel , Johnson contador , ou Möbius balcão , conecta o complemento da saída do último registo de deslocamento para a entrada do primeiro registo e circula um fluxo de uns seguido por zeros ao redor do anel.

Sequências de contador de anel de quatro bits

Contador de anel reto Contador johnson
Estado Q0 T1 Q2 3º T Estado Q0 T1 Q2 3º T
0 1 0 0 0   0 0 0 0 0
1 0 1 0 0   1 1 0 0 0
2 0 0 1 0   2 1 1 0 0
3 0 0 0 1   3 1 1 1 0
0 1 0 0 0   4 1 1 1 1
1 0 1 0 0   5 0 1 1 1
2 0 0 1 0   6 0 0 1 1
3 0 0 0 1   7 0 0 0 1
0 1 0 0 0   0 0 0 0 0

Propriedades

Os contadores de anel são frequentemente usados ​​no projeto de hardware (por exemplo, projeto ASIC e FPGA ) para criar máquinas de estado finito . Um contador binário exigiria um circuito somador que é substancialmente mais complexo do que um contador de anel e tem maior atraso de propagação conforme o número de bits aumenta, enquanto o atraso de propagação de um contador de anel será quase constante, independentemente do número de bits no código .

As formas retas e torcidas têm propriedades diferentes e vantagens e desvantagens relativas.

Uma desvantagem geral dos contadores de anel é que eles são códigos de densidade mais baixa do que as codificações binárias normais de números de estado. Um contador binário pode representar 2 ^ N estados, onde N é o número de bits no código, enquanto um contador de anel direto pode representar apenas N estados e um contador Johnson pode representar apenas 2N estados. Esta pode ser uma consideração importante em implementações de hardware onde os registros são mais caros do que a lógica combinacional.

Os contadores Johnson às vezes são preferidos, porque oferecem o dobro de estados de contagem do mesmo número de registradores de deslocamento e porque são capazes de se auto-inicializar a partir do estado de zeros, sem exigir que o primeiro bit de contagem seja injetado externamente no início -acima. O contador Johnson gera um código no qual os estados adjacentes diferem em apenas um bit (ou seja, têm uma distância de Hamming de 1), como em um código Gray , que pode ser útil se o padrão de bits for amostrado de forma assíncrona.

Quando uma representação totalmente decodificada ou uma representação do estado do contador é necessária, como em alguns controladores de sequência, o contador de anel reto é o preferido. A propriedade one-hot significa que o conjunto de códigos é separado por uma distância de Hamming mínima de 2, portanto, qualquer erro de bit único é detectável (como qualquer padrão de erro diferente de ligar um bit e desligar um bit).

Às vezes, registradores de deslocamento bidirecionais são usados ​​(usando multiplexadores para obter a entrada para cada flip-flop de seu vizinho esquerdo ou direito), de forma que contadores bidirecionais ou up-down possam ser feitos.

Diagramas lógicos

O contador de anel reto tem a estrutura lógica mostrada aqui:

Contador de anel de 4 bits usando quatro flip-flops tipo D.  Relógio síncrono e linha de reset mostrados.

Em vez da linha de reinicialização configurando o padrão inicial de um-quente , o anel reto às vezes é feito com auto-inicialização pelo uso de uma porta de feedback distribuída em todas as saídas, exceto a última, de modo que um 1 é apresentado na entrada quando não há 1 em qualquer estágio, exceto o último.

Um contador Johnson, em homenagem a Robert Royce Johnson , é um anel com uma inversão; aqui está um contador Johnson de 4 bits:

Contador Johnson de 4 bits usando quatro flip-flops tipo D.  Relógio síncrono e linha de reset mostrados.

Observe a pequena bolha indicando a inversão do sinal Q do último registrador de deslocamento antes de realimentar a primeira entrada D, tornando este um contador Johnson.

História

Antes dos dias da computação digital, contadores digitais eram usados ​​para medir as taxas de eventos aleatórios, como decaimentos radioativos para partículas alfa e beta. Contadores de "pré-escalonamento" rápido reduziram a taxa de eventos aleatórios para taxas mais gerenciáveis ​​e regulares. Os contadores de anel de cinco estados foram usados ​​junto com os escalonadores dividir por dois para fazer escaladores de década (potência de dez) antes de 1940, como os desenvolvidos por CE Wynn-Williams .

Os primeiros contadores de anel usavam apenas um elemento ativo (tubo de vácuo, válvula ou transistor) por estágio, contando com feedback global em vez de flip-flops biestáveis ​​locais, para suprimir estados diferentes dos estados one-hot, por exemplo, no pedido de patente de 1941 de Robert E. Mumma, da National Cash Registor Company . Wilcox P. Overbeck inventou uma versão usando vários ânodos em um único tubo de vácuo. Em reconhecimento ao seu trabalho, os contadores de anel são às vezes chamados de "anéis de Overbeck" (e depois de 2006, às vezes como "contadores de Overbeck", já que a Wikipedia usou esse termo de 2006 a 2018).

O ENIAC usava aritmética decimal baseada em contadores de anel de um estado de 10 estados. Os trabalhos de Mumma no NCR e Overbeck no MIT estavam entre os trabalhos da arte anterior examinados pelo escritório de patentes em invalidar as patentes de J. Presper Eckert e John Mauchly para a tecnologia ENIAC.

Na década de 1950, contadores de anéis com flip-flop de dois tubos ou triodos duplos por estágio estavam aparecendo.

Robert Royce Johnson desenvolveu vários contadores baseados em registradores de deslocamento com o objetivo de criar diferentes números de estados com a lógica de feedback mais simples possível e solicitou uma patente em 1953. O contador Johnson é o mais simples deles.

Formulários

As primeiras aplicações dos contadores de anel eram como pré-escalonadores de frequência (por exemplo, para contador Geiger e tais instrumentos), como contadores para contar ocorrências de padrão em criptanálise (por exemplo, na máquina de quebra de código de Heath Robinson e no computador Colossus ), e como elementos de contagem de acumulador para aritmética decimal em computadores e calculadoras, usando representações bi-quinárias (como no Colossus) ou dez-estados one-hot (como no ENIAC ).

Os contadores de anéis retos geram códigos one-hot totalmente decodificados que costumam ser usados ​​para permitir uma ação específica em cada estado de um ciclo de controle cíclico. Os códigos one-hot também podem ser decodificados de um contador Johnson, usando uma porta para cada estado.

Além de ser uma forma alternativa eficiente de gerar códigos one-hot e pré-escalonadores de frequência, um contador Johnson também é uma maneira simples de codificar um ciclo de um número par de estados que podem ser amostrados de forma assíncrona sem glitching, uma vez que apenas um bit muda em uma vez, como em um código Gray . Os primeiros ratos de computador usavam codificações Johnson ou Gray de 2 bits up-down (bidirecional) para indicar o movimento em cada uma das duas dimensões, embora em ratos esses códigos não fossem geralmente gerados por anéis de flip-flops (mas em vez por eletromecânicos ou codificadores óticos de quadratura ). Um código Johnson de 2 bits e um código Gray de 2 bits são idênticos, enquanto para 3 ou mais bits os códigos Gray e Johnson são diferentes. No caso de 5 bits, o código é o mesmo que o código Libaw-Craig  [ de ] para dígitos decimais.

Um contador de anel ambulante, também chamado de contador Johnson, e alguns resistores podem produzir uma aproximação sem falhas de uma onda senoidal. Quando combinado com um prescaler ajustável , este é talvez o oscilador controlado numericamente mais simples . Dois desses contadores de anel ambulantes são talvez a maneira mais simples de gerar o chaveamento de mudança de frequência de fase contínua usado na sinalização multifrequencial de tom dual e nos primeiros tons do modem .

Decimal
 
0
1
2
3
4
5
6
7
8
9
1 bit
1
0
1
0
1
0
1
0
1
0
1
2 bits
2 1
0 0
0 1
1 1
1 0
0 0
0 1
1 1
1 0
0 0
0 1
3 bits
3 2 1
0 0 0
0 0 1
0 1 1
1 1 1
1 1 0
1 0 0
0 0 0
0 0 1
0 1 1
1 1 1
Johnson de 4 bits
4 3 2 1
0 0 0 0
0 0 0 1
0 0 1 1
0 1 1 1
1 1 1 1
1 1 1 0
1 1 0 0
1 0 0 0
0 0 0 0
0 0 0 1
Libaw – Craig
5 4 3 2 1
0 0 0 0 0
0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
1 1 1 1 1
1 1 1 1 0
1 1 1 0 0
1 1 0 0 0
1 0 0 0 0
1-2-1
5 4 3 2 1
1 0 0 0 1
0 0 0 0 1
0 0 0 1 1
0 0 0 1 0
0 0 1 1 0
0 0 1 0 0
0 1 1 0 0
0 1 0 0 0
1 1 0 0 0
1 0 0 0 0
1 de 10
10 9 8 7 6 5 4 3 2 1
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0

Veja também

Notas

Referências