stringtranslate.com

Registro de desplazamiento

Un registro de desplazamiento es un tipo de circuito digital que utiliza una cascada de flip-flops donde la salida de un flip-flop está conectada a la entrada del siguiente. Comparten una única señal de reloj , que hace que los datos almacenados en el sistema se desplacen de una ubicación a la siguiente. Al conectar el último flip-flop de nuevo al primero, los datos pueden circular dentro de los flip-flops durante períodos prolongados y, en esta configuración, se utilizaron como memoria de ordenador , desplazando a los sistemas de memoria de línea de retardo a finales de los años 1960 y principios de los años 1970.

En la mayoría de los casos, se utilizaban varios registros de desplazamiento paralelos para crear un conjunto de memoria más grande, conocido como " matriz de bits ". Los datos se almacenaban en la matriz y se volvían a leer en paralelo, a menudo como una palabra de computadora , mientras que cada bit se almacenaba en serie en los registros de desplazamiento. Existe una desventaja inherente en el diseño de matrices de bits: colocar más flip-flops en una fila permite que un único desplazador almacene más bits, pero requiere más ciclos de reloj para enviar los datos a través de todos los desplazadores antes de que se puedan volver a leer.

Los registros de desplazamiento pueden tener entradas y salidas tanto en paralelo como en serie . Suelen estar configurados como "entrada en serie, salida en paralelo" (SIPO) o como "entrada en paralelo, salida en serie" (PISO). También hay tipos que tienen entrada en serie y en paralelo y tipos con salida en serie y en paralelo. También hay registros de desplazamiento "bidireccionales", que permiten el desplazamiento en ambas direcciones: L → R o R → L. La entrada en serie y la última salida de un registro de desplazamiento también se pueden conectar para crear un "registro de desplazamiento circular". Un registro PIPO (entrada en paralelo, salida en paralelo) es simplemente un registro de tipo D y no es un registro de desplazamiento, pero es muy rápido: se da una salida dentro de un solo pulso de reloj. Un registro de desplazamiento "universal" proporciona entrada y salida en serie bidireccionales, así como entrada y salida en paralelo.

Serie de entrada y salida (SISO)

Lectura destructiva

Estos son los tipos más simples de registros de desplazamiento. La cadena de datos se presenta en "entrada de datos" y se desplaza a la derecha un nivel cada vez que se eleva el "avance de datos" . En cada avance, el bit del extremo izquierdo (es decir, "entrada de datos") se desplaza a la salida del primer flip-flop . El bit del extremo derecho (es decir, "salida de datos") se desplaza hacia afuera y se pierde.

Los datos se almacenan después de cada flip-flop en la salida "Q", por lo que hay cuatro "ranuras" de almacenamiento disponibles en esta disposición, por lo tanto, es un registro de 4 bits. Para dar una idea del patrón de desplazamiento, imagine que el registro contiene 0000 (por lo que todas las ranuras de almacenamiento están vacías). Como "data in" presenta 1,0,1,1,0,0,0,0 (en ese orden, con un pulso en "data advance" cada vez, esto se llama temporización o estrobización) al registro, este es el resultado. La columna de la derecha corresponde al pin de salida del flip-flop más a la derecha, y así sucesivamente.

Por lo tanto, la salida serial de todo el registro es 00010110. Se puede ver que si se continuara ingresando datos, se obtendría exactamente lo que se ingresó (10110000), pero con un desfase de cuatro ciclos de "avance de datos". Esta disposición es el equivalente en hardware de una cola . Además, en cualquier momento, todo el registro se puede poner a cero al poner en alto los pines de reinicio (R).

Esta disposición realiza una lectura destructiva  : cada dato se pierde una vez que se desplaza fuera del bit más a la derecha.

Entrada en serie y salida en paralelo (SIPO)

Esta configuración permite la conversión del formato serial al paralelo. La entrada de datos es serial, como se describe en la sección SISO anterior. Una vez que se han registrado los datos, se pueden leer en cada salida simultáneamente o se pueden transferir.

En esta configuración, cada flip-flop se activa por flanco . Todos los flip-flops funcionan a la frecuencia de reloj dada. Cada bit de entrada llega a la salida N después de N ciclos de reloj, lo que genera una salida paralela.

En los casos en los que las salidas paralelas no deben cambiar durante el proceso de carga en serie, es conveniente utilizar una salida bloqueada o con búfer . En un registro de desplazamiento bloqueado (como el 74595 ), los datos en serie se cargan primero en un registro de búfer interno y, luego, al recibir una señal de carga, el estado del registro de búfer se copia en un conjunto de registros de salida. En general, la aplicación práctica del registro de desplazamiento de entrada en serie/salida en paralelo es convertir datos del formato en serie en un solo cable al formato paralelo en varios cables.

Entrada paralela y salida serial (PISO)

Esta configuración tiene la entrada de datos en las líneas D1 a D4 en formato paralelo, siendo D1 el bit más significativo. Para escribir los datos en el registro, la línea de control Write/Shift debe mantenerse en BAJO. Para desplazar los datos, la línea de control W/S se pone en ALTO y se sincronizan los registros. La disposición ahora actúa como un registro de desplazamiento PISO, con D1 como la entrada de datos. Sin embargo, siempre que el número de ciclos de reloj no sea mayor que la longitud de la cadena de datos, la salida de datos, Q, serán los datos paralelos leídos en orden.

Registro de desplazamiento PISO de 4 bits

La siguiente animación muestra la secuencia de escritura/desplazamiento, incluido el estado interno del registro de desplazamiento.

Usos

Registro de desplazamiento SIPO dual Toshiba TC4015BP

Conversión en serie y en paralelo

Uno de los usos más comunes de un registro de desplazamiento es convertir entre interfaces seriales y paralelas.

Demora

Los registros de desplazamiento de entrada en serie y salida en serie se pueden utilizar como circuitos de retardo simples. [1]

Pila

También se pueden conectar varios registros de desplazamiento bidireccionales en paralelo para una implementación de hardware de una pila .

Más pines de E/S

Los registros de desplazamiento se conectan comúnmente a microcontroladores cuando se requieren más pines de entrada/salida de propósito general que los disponibles, a veces a través de una interfaz periférica en serie en configuración en cadena , lo que permite acceder a cualquier cantidad de dispositivos binarios utilizando solo dos a cuatro pines, aunque más lentamente que la E/S paralela.

Para obtener más salidas, se utilizan registros de desplazamiento SIPO. Las salidas paralelas del registro de desplazamiento y el estado deseado para todos esos dispositivos se pueden enviar desde el microcontrolador mediante una única conexión en serie.

Para más entradas, se utilizan registros de desplazamiento PISO. Cada entrada binaria (como un botón o un circuito más complejo) se conecta a una entrada paralela del registro de desplazamiento y luego los datos se envían de vuelta en serie al microcontrolador.

Extensores de pulso

Los registros de desplazamiento también se pueden utilizar como extensores de pulsos. En comparación con los multivibradores monoestables , la sincronización no depende de los valores de los componentes, sino que requiere un reloj externo, y la precisión de la sincronización está limitada por la granularidad de este reloj. Un ejemplo de un extensor de pulsos de este tipo es el Ronja Twister , en el que cinco registros de desplazamiento 74164 crean el núcleo de la lógica de sincronización de esta manera (esquema).

Proceso de datos

En las primeras computadoras, se utilizaban registros de desplazamiento para manejar el procesamiento de datos: dos números a sumar se almacenaban en dos registros de desplazamiento y se enviaban a una unidad aritmética y lógica (ALU) y el resultado se devolvía a la entrada de uno de los registros de desplazamiento (el acumulador), que era un bit más largo, ya que la suma binaria solo puede dar como resultado una respuesta que tenga el mismo tamaño o sea un bit más larga.

Operaciones de desplazamiento de bits

Muchos lenguajes de programación incluyen operaciones bit a bit para "desplazar a la derecha" y "desplazar a la izquierda" los datos en un registro, dividiéndolos efectivamente por dos o multiplicándolos por dos por cada lugar desplazado.

Memoria de registro de desplazamiento

Los registros de desplazamiento de entrada y salida en serie de gran tamaño (de miles de bits de tamaño) se utilizaban de manera similar a la memoria de línea de retardo anterior en algunos dispositivos construidos a principios de la década de 1970. Los registros de desplazamiento no necesitan muchos pines ni lógica de decodificación de direcciones, por lo que eran mucho más baratos que la memoria de acceso aleatorio de ese entonces. [2] A este tipo de memoria de registro de desplazamiento a veces se la denominaba memoria circulante .

Por ejemplo, el Datapoint 3300 almacenaba la pantalla de su terminal de 25 filas de 72 columnas de caracteres en mayúsculas de 6 bits utilizando 54 registros de desplazamiento de 200 bits (dispuestos en 6 pistas de 9 paquetes), lo que proporcionaba almacenamiento para 1800 caracteres. El diseño del registro de desplazamiento significaba que el desplazamiento de la pantalla del terminal se podía lograr simplemente pausando la salida de la pantalla para saltar una línea de caracteres. [3] Se utilizó un diseño similar para el terminal de Apple I. [4]

Historia

Uno de los primeros ejemplos conocidos de un registro de desplazamiento fue el Mark 2 Colossus , una máquina de descifrado de códigos construida en 1944. Era un dispositivo de seis etapas construido con tubos de vacío y tiratrones . [5] También se utilizó un registro de desplazamiento en la máquina IAS , construida por John von Neumann y otros en el Instituto de Estudios Avanzados a fines de la década de 1940. Los registros de desplazamiento se abrieron camino en los circuitos integrados en la década de 1960, como lo evidencian las primeras patentes de Frank Wanlass [6] y Kent Smith [7] que trabajaban en General Instrument .

Véase también

Referencias

  1. ^ US4530107A, Williams, Marshall, "Circuito de retardo de registro de desplazamiento", publicado el 16 de julio de 1985 
  2. ^ Shirriff, Ken (2014). "Dentro del Intel 1405: fotos de una memoria de registro de desplazamiento de 1970". Blog de Ken Shirriff . Archivado desde el original el 28 de julio de 2023. Consultado el 6 de agosto de 2023 .
  3. ^ "Manual de mantenimiento de DataPoint 3300" (PDF) . bitsavers.org . Datapoint Corporation. Diciembre de 1976.
  4. ^ Shirriff, Ken. "Dentro de la memoria del registro de desplazamiento del Apple-1". Blog de Ken Shirriff . Archivado desde el original el 2023-06-06 . Consultado el 2023-08-04 .
  5. ^ Flowers, Thomas H. (1983), "El diseño de Colossus", Anales de la historia de la informática , 5 (3): 246, doi :10.1109/MAHC.1983.10079, S2CID  39816473
  6. ^ "Sistema de registro de desplazamiento".
  7. ^ "Sistema de registro de desplazamiento electrónico".