Los registros de desplazamiento se utilizan frecuentemente en las unidades aritmético lógicas por su capacidad de multiplicar y dividir por dos. Dado un número binario uno uno cero uno multiplicar por dos consiste en desplazar esta información una posición hacia la izquierda y a continuación añadir un cero en el bit menos significativo. Si lo que deseamos es dividir, hacer la división entera por dos, lo que hemos de hacer es desplazar esta información una posición, en este caso hacia la derecha y añadir un cero en la posición más significativa. Los registros de desplazamiento se utilizan también en transmisión de señales. Vamos a ver un ejemplo. Supongamos que aquí tenemos n bits de información, que queremos transmitir desde un cierto punto origen hasta un cierto punto de destino, y que para ello contamos con un canal de transmisión que es capaz de transmitir un bit a cada pulso de reloj. Lo que se hace es colocar un registro de desplazamiento en el origen de entrada paralelo y salida serie lo que se llama un conversor paralelo serie, de manera que jugando con la señal L barra S podemos configurar el registro de desplazamiento en forma de carga paralela síncrona, y en ese caso los n bits de información se vuelcan al registro de desplazamiento. Y una vez tenemos este esta información dentro del registro, ponemos al registro en forma de desplazamiento, en forma S, y a cada pulso de reloj la información va desplazándose un bit, en este caso hacia abajo, y el bit que ocupa la posición más inferior se transmite a través del canal. En el destino hacemos algo muy similar. Colocamos un registro de desplazamiento. En este caso de entrada serie y salida paralela, lo que se llama un conversor serie paralelo. De forma que a cada ciclo de la señal del reloj, el bit que le está llegando por el canal de transmisión, entra en el registro de desplazamiento y el resto de bits se van desplazando hacia abajo. Al cabo de n ciclos de reloj la información la tenemos en paralelo en este registro lista para ser utilizada en destino. Otro uso muy frecuente de los registro en desplazamiento es como reconocedores de frecuencias. Imaginemos que tenemos una secuencia, digamos, infinita. Es decir, tan larga como queramos, y que queremos dentro de esta secuencia detectar, construir un circuito que nos dé una salida, uno, cada vez que se detecta la sub secuencia uno cero cero uno. Esta sub secuencia tiene longitud cuatro, consta de cuatro bits. Pues lo que podemos hacer es simplemente construir un registro de desplazamiento de cuatro bits. Y fijaros, esta secuencia ira entrando en serie y moviéndose cada vez una posición a la derecha, y llegará un momento que la sub secuencia que nosotros buscamos, estará ocupando precisamente estos cuatro flip flops del, del registro de desplazamiento. Bueno, pues aquí lo que hemos hecho es añadir una puerta AND, tal que genera una salida igual a uno solo cuando los estados de los cuatro flip flops son uno cero cero uno. Fijaros aquí, la primera entrada a la puerta AND es la salida Q de este, del flip flop del más de la derecha. Quiere decir que cuando este flip flop este a uno aquí tendré un uno. La segunda entrada a la puerta AND es la salida Q barra de este flip flop. De manera que cuando este flip flop esté a cero aquí tendré un uno. Aquí por la misma razón cuando tenga un cero la salida será uno, la salida Q barra será uno, y por lo tanto a esta puerta AND llegará un uno, y aquí he conectado la salida Q a la puerta AND. Es decir, esta puerta AND la salida toma el valor uno sí solo sí aquí tengo un uno, aquí tengo un cero, aquí tengo un cero, y aquí tengo un uno. Es decir, sí solo sí he detectado esta sub secuencia dentro de la secuencia más grande. Y con esto se pueden hacer cosas más complejas, ¿no? Imaginar que ahora lo que queremos es detectar la secuencia seis dos cero uno. Donde los números seis dos cero uno se han codificado con tres bits. Aquí tenéis al seis, uno uno cero. El dos, cero uno cero. El cero, cero cero cero. Y el uno, cero cero uno. Pues en el fondo pensar que esta secuencia se está moviendo en este sentido, hacia la derecha, es lo mismo que pensar, y de hecho es lo que ocurre en realidad, que esta secuencia de tres bits de está moviendo a la derecha, esta secuencia de tres bits se está moviendo a la derecha, y esta también, y, de forma síncrona, todas a la vez. Pues lo que voy a hacer es construir un registro de desplazamiento para cada una de estas, para cada uno de estos bits. Para el bit, los bits más significativos de la secuencia seis dos cero uno y para los siguientes, y para los bits menos significativos. De manera que en un primer ciclo de reloj yo tendré este uno que me entra aquí, este uno que le entra al primer flip flop, este cero que me entra aquí. En el siguiente pulso de reloj este uno habrá pasado aquí y me habrá, me habrá entrado el siguiente cero. Este uno me habrá pasado aquí y me habrá entrado el siguiente uno, y este cero me habrá pasado aquí me habrá entrado el siguiente cero. Si esto lo repetimos cuatro veces me permitís borrar ahora esta información, está claro que tras cuatro pulsos de reloj, yo tendré aquí un cero cero cero uno. Aquí tendré un cero cero uno uno, y aquí tendré un uno cero cero cero. Esta puerta AND me dará un valor uno sí solo sí la sub secuencia que ha entrado a este primer registro de desplazamiento hacia el cero cero cero uno. Este, esta segunda puerta AND me genera un uno sí solo sí la sub secuencia que ha entrado a este segundo registro de desplazamiento al cero cero uno uno y, por la misma razón, aquí tengo un uno sí solo sí me ha entrado un uno cero cero cero. Que es exactamente lo que quiero. Es decir, solo cuando entra la secuencia seis dos uno cero, aquí tendré un uno, aquí tendré un uno, aquí tendré un, un uno, y por lo tanto a la salida de esta puerta AND tendré también un uno. El reconocimiento de secuencias es algo muy sencillo de implementar con registros de desplazamiento. Bueno, pues con esto hemos llegado al final de la lección. Hemos visto lo que son los registros. Básicamente son dispositivos capaces de almacenar n bits de información, y son, bueno, unos dispositivos fundamentales en los computadores. Hemos visto también un tipo particular de registros, los registros de desplazamiento. Sus distintos tipos de desplazamiento a derecha, izquierda, cíclico, carga paralela etcétera, etcétera y algunos de sus usos más frecuentes.