Registro de deslocamento - Shift register

Um registrador de deslocamento é um tipo de circuito digital que usa uma cascata de flip-flops onde a saída de um flip-flop é conectada à entrada do próximo. Eles compartilham um único sinal de clock , o que faz com que os dados armazenados no sistema mudem de um local para o outro. Ao conectar o último flip-flop de volta ao primeiro, os dados podem circular dentro dos shifters por longos períodos e, dessa forma, eles foram usados ​​como uma forma de memória de computador . Nessa função, eles são muito semelhantes aos sistemas de memória de linha de atraso anteriores e foram amplamente usados ​​no final dos anos 1960 e início dos anos 1970 para substituir essa forma de memória.

Na maioria dos casos, vários registradores de deslocamento paralelos seriam usados ​​para construir um pool de memória maior conhecido como " matriz de bits ". Os dados eram armazenados no array e lidos em paralelo, geralmente como uma palavra de computador , enquanto cada bit era armazenado em série nos registradores de deslocamento. Há uma compensação inerente ao design de matrizes de bits; colocar mais flip-flops em uma linha permite que um único shifter armazene mais bits, mas requer mais ciclos de clock para enviar os dados por todos os shifters antes que os dados possam ser lidos novamente.

Os registradores de deslocamento podem ter entradas e saídas paralelas e seriais . Geralmente, eles são configurados como "entrada serial, saída paralela" (SIPO) ou como "entrada paralela, saída serial" (PISO). Existem também tipos que têm entrada serial e paralela e tipos com saída serial e paralela. Existem também registradores de deslocamento "bidirecionais" que permitem o deslocamento em ambas as direções: L → R ou R → L. A entrada serial e a última saída de um registrador de deslocamento também podem ser conectadas para criar um "registrador de deslocamento circular". Um registro PIPO (entrada paralela, saída paralela) é muito rápido - uma saída é fornecida em um único pulso de clock.

Serial-in serial-out (SISO)

Leitura destrutiva

Exemplo de uso de um registrador de deslocamento de 4 bits. A entrada de dados é 10110000.
Tempo
Produto 1
Produto 2
Produto 3
Produto 4
0 0 0 0 0
1 1 0 0 0
2 0 1 0 0
3 1 0 1 0
4 1 1 0 1
5 0 1 1 0
6 0 0 1 1
7 0 0 0 1
8 0 0 0 0

Esses são os tipos mais simples de registradores de deslocamento. A string de dados é apresentada em "Data In" e é deslocada para a direita um estágio cada vez que "Data Advance" é elevado . A cada avanço, o bit da extrema esquerda (ou seja, "Data In") é deslocado para a saída do primeiro flip-flop . O bit na extrema direita (ou seja, "Data Out") é deslocado e perdido.

Os dados são armazenados após cada flip-flop na saída "Q", portanto, há quatro "slots" de armazenamento disponíveis neste arranjo, portanto, é um Registrador de 4 bits. Para dar uma ideia do padrão de deslocamento, imagine que o registrador contém 0000 (portanto, todos os slots de armazenamento estão vazios). Como "Data In" apresenta 1,0,1,1,0,0,0,0 (nessa ordem, com um pulso em "Data Advance" a cada vez - isso é chamado de clocking ou strobing) para o registrador, isso é o resultado. A coluna da direita corresponde ao pino de saída do flip-flop mais à direita e assim por diante.

Portanto, a saída serial de todo o registrador é 00010110. Pode-se ver que se os dados continuassem a ser inseridos, eles obteriam exatamente o que foi inserido (10110000), mas compensado por quatro ciclos de "Avanço de dados". Esse arranjo é o equivalente em hardware de uma fila . Além disso, a qualquer momento, todo o registrador pode ser zerado aumentando os pinos de reset (R).

Esse arranjo executa uma leitura destrutiva - cada dado é perdido uma vez que foi deslocado para fora do bit mais à direita.

Serial-in paralelo-out (SIPO)

SIPO Shift Register.svg de 4 bits

Esta configuração permite a conversão do formato serial para paralelo. A entrada de dados é serial, conforme descrito na seção SISO acima. Uma vez que os dados foram sincronizados, eles podem ser lidos em cada saída simultaneamente ou podem ser deslocados.

Nesta configuração, cada flip-flop é acionado por borda . Todos os flip-flops operam na determinada frequência de clock. Cada bit de entrada desce até a enésima saída após N ciclos de clock, levando à saída paralela.

Nos casos em que as saídas paralelas não devem ser alteradas durante o processo de carregamento serial, é desejável usar uma saída travada ou em buffer . Em um registrador de deslocamento travado (como o 74595 ), os dados seriais são carregados primeiro em um registrador de buffer interno e, em seguida, após o recebimento de um sinal de carga, o estado do registrador de buffer é copiado para um conjunto de registradores de saída. Em geral, a aplicação prática do registro de deslocamento serial-in / paralelo-out é converter dados do formato serial em um único fio para formato paralelo em vários fios.

Saída serial de entrada paralela (PISO)

Esta configuração possui a entrada de dados nas linhas D1 a D4 em formato paralelo, sendo D1 o bit mais significativo. Para gravar os dados no registrador, a linha de controle Write / Shift deve ser mantida LOW. Para deslocar os dados, a linha de controle W / S é colocada em HIGH e os registros são cronometrados. O arranjo agora atua como um registro de deslocamento PISO, com D1 como a entrada de dados. No entanto, desde que o número de ciclos de clock não seja maior que o comprimento da string de dados, a Saída de Dados, Q, será os dados paralelos lidos em ordem.

Registro de deslocamento PISO de 4 bits

A animação abaixo mostra a sequência de gravação / deslocamento, incluindo o estado interno do registrador de deslocamento.

Registro de deslocamento PISO de 4 bits Seq.gif

Usos

Toshiba TC4015BP - Dual 4-Stage Static Shift Register (com entrada serial / saída paralela)

Um dos usos mais comuns de um registrador de deslocamento é converter entre interfaces seriais e paralelas. Isso é útil porque muitos circuitos funcionam em grupos de bits em paralelo, mas as interfaces seriais são mais simples de construir. Os registradores de deslocamento podem ser usados ​​como circuitos de atraso simples. Vários registradores de deslocamento bidirecional também podem ser conectados em paralelo para uma implementação de hardware de uma pilha .

Os registros SIPO são comumente anexados à saída dos microprocessadores quando são necessários mais pinos de entrada / saída de uso geral do que os disponíveis. Isso permite que vários dispositivos binários sejam controlados usando apenas dois ou três pinos, mas mais lentamente do que pela saída paralela. Os dispositivos em questão são conectados às saídas paralelas do registrador de deslocamento, e o estado desejado para todos esses dispositivos pode ser enviado para fora do microprocessador usando uma única conexão serial. Da mesma forma, as configurações PISO são comumente usadas para adicionar mais entradas binárias a um microprocessador do que as disponíveis - cada entrada binária (como um botão ou um circuito mais complicado) é anexada a uma entrada paralela do registrador de deslocamento, então os dados são enviados de volta via serial para o microprocessador usando várias linhas a menos do que o originalmente requerido.

Os registradores de deslocamento também podem ser usados ​​como extensores de pulso. Comparado com multivibradores monoestáveis, o tempo não depende dos valores dos componentes, no entanto, requer relógio externo e a precisão do tempo é limitada por uma granularidade deste relógio. Exemplo: Ronja Twister , onde cinco registradores de deslocamento 74164 criam o núcleo da lógica de temporização desta forma ( esquemático ).

Nos primeiros computadores, registradores de deslocamento eram usados ​​para lidar com o processamento de dados: dois números a serem adicionados eram armazenados em dois registradores de deslocamento e cronometrados em uma unidade aritmética e lógica (ALU) com o resultado sendo realimentado para a entrada de um dos turnos registradores (o acumulador) que era um bit mais longo, já que a adição binária só pode resultar em uma resposta do mesmo tamanho ou um bit mais longa.

Muitas linguagens de computador incluem instruções para "deslocar para a direita" e "deslocar para a esquerda" os dados em um registro, efetivamente dividindo por dois ou multiplicando por dois para cada lugar deslocado.

Registradores de deslocamento de entrada serial muito grandes (milhares de bits de tamanho) foram usados ​​de maneira semelhante à memória de linha de atraso anterior em alguns dispositivos construídos no início dos anos 1970. Essas memórias às vezes eram chamadas de "memória circulante". Por exemplo, o terminal Datapoint 3300 armazenava sua exibição de 25 linhas de 72 colunas de caracteres maiúsculos usando cinquenta e quatro registradores de deslocamento de 200 bits, dispostos em seis trilhas de nove pacotes cada, fornecendo armazenamento para 1.800 caracteres de seis bits. O design do registro de deslocamento significava que a rolagem da tela do terminal poderia ser realizada simplesmente pausando a saída da tela para pular uma linha de caracteres.

História

Um dos primeiros exemplos conhecidos de registrador de deslocamento foi no Mark 2 Colossus , uma máquina de decifrar códigos construída em 1944. Era um dispositivo de seis estágios construído com tubos de vácuo e tiratrons . Um registrador de deslocamento também foi usado na máquina IAS , construída por John von Neumann e outros no Institute for Advanced Study no final dos anos 1940.

Veja também

Referências