Existen distintos multitudes de registros de desplazamiento. Dependiendo del sentido del movimiento, los registros pueden ser registros de desplazamiento a la derecha, registros de desplazamiento a la izquierda. En un registro de desplazamiento a la derecha la información se mueve en este sentido, si en el flip flop que no queda conectado a ningún otro vecino, es decir en este caso el flip flop de más a la izquierda entramos un cero, un registro de desplazamiento a la derecha actúa como un divisor por dos. Un registro de desplazamiento a la izquierda en el cual la información se mueve pues a la izquierda y de una manera analoga en el bit, en el flip flop que no queda conectado a ningún otro, en el flip flop de más de la derecha en este caso colocamos un cero, esto actúa como un multiplicador por dos. Se pueden definir también, existen también registros de desplazamiento cíclicos a la derecha y a la izquierda los cuales la información se mueve pues por ejemplo a la derecha y además la información del último flip flop se realimenta al primero, sea en el sentido este o sea en el sentido contrario e incluso registros de desplazamiento bidireccionales que en función de una señal se mueven hacia la derecha o hacia la izquierda. Aquí tenéis precisamente dibujado un registro de desplazamiento bidireccional de cinco bits. Estos modulos que veis aquí son multiplexores controlados por esta señal de control L/R que define en cada momento si la información se mueve hacia la derecha o hacia la izquierda. Por ejemplo cuando L/R vale uno, las conexiones que tenemos es desde la entrada llegamos al primer flip flop, la salida del primer flip flop entra en el segundo, la salida del segundo entra en el tercero, etcétera, es decir cuando llegue un flanco de reloj la información que hay en este flip flop pasará a este, la información que hay en este flip flop pasará a este y así sucesivamente, es decir estaremos moviéndonos, estaremos moviendo la información hacia la derecha. En cambio si la señal L/R toma el valor cero, las conexiones que tendremos son esas, este primer flip flop verá por su entrada la salida de su vecino de la derecha. Este flip flop verá entonces su entrada, la salida otra vez de su vecino de la derecha, es decir cuando llegue un flanco de reloj la información que había en este flip flop pasará a este, la información que había en este flip flop pasará a este, es decir nos estaremos moviendo hacia la izquierda. Esta sería la señal de control L/R, L/R significando L movimiento hacia la izquierda, R movimiento hacia la derecha. En función de un tipo de entrada y salida los circuitos de desplazamiento pueden ser de entrada serie, de entrada paralelo, de salida serie o de salida paralelo. Un registro de desplazamiento con entrada serie es un registro que tiene una única entrada que habitualmente recibe el nombre de serial in o entrada serie, sus señales de sincronización y de reset y el circuito de este tipo a cada pulso de reloj va entrando información por serial in y el resto de la información que hay en el registro de desplazamiento se va moviendo hacia la derecha. Esto sería hemos llamado un registro de desplazamiento con entrada serie. Un registro de desplazamiento con entrada paralelo permite que los n bits entren desde el exterior directamente en un único pulso de reloj. Ene ste caso además de las señales de ck y de reset vamos a necesitar alguna especie de señal de carga que you especificaremos un poco mejor más adelante. Para que la información del exterior del registro de desplazamiento vamos a necesitar un pulso de reloj pero también una señal especial. Esto sería un registro de entrada paralelo. También podemos definir registros de desplazamiento con salidas serie, salidas serie quiere decir que hay una única salida que se corresponde con la salida del flip flop de más a la derecha y como siempre las señales de ck y reset de manera que a cada pulso de la señal de reloj la información se va desplazando una posición a la derecha y por lo tanto aquí vamos viendo sucesivamente la información del flip flop de más a la derecha, del flip flop colocado al lado del de más a la derecha, etcétera, etcétera, esto sería un registro de desplazamiento con salida serie. Un registro de desplazamiento con salida paralelo es aquel que en un único ciclo de reloj nos permite ver todas las salidas, todos los estados de los flip flops que configuran el registro de desplazamiento. Y además de esto, esto sería la salida en paralelo. Podemos imaginarnos cualquier tipo de combinación de los dos tipos de entrada o los dos tipos de salida. Aquí tenemos un registro de desplazamiento con entrada serie paralelo y salida serie, vamos a ver cómo funciona. Primero decimos que este símbolo equivale a un multiplexor y nosotros lo dibujábamos así, de manera que a la entrada de estos flip flops hay multiplexores controlados por la señal L barra S. Vamos a ver qué pasa si la señal L barra S toma el valor cero. Si toma el valor cero, fijaros que la entrada de este flip flop, la entrada de este flip flop siempre coincide con la entrada externa i n menos uno independientemente del valor de L/S. Pero para todos los demás flip flops, la entrada del flip flop está conectada a las entradas externas. ¿Vale? Y esto estaría conectado a la entrada in0. De manera que si L/S es igual a cero y ahora llega un pulso, un flanco por la señal de reloj, la información los ceros y unos que nosotros tenemos en las entradas entran, pasan a formar parte del registro de desplazamiento, los ceros y los unos que tenemos en las entradas externas se convierten cuando llega el flanco de reloj en los estados de los flip flops. Con esto hemos hecho lo que se llama una carga paralelo, en un único flanco han entrado todos los bits de la entrada al registro, es decir resumiendo si L/S es igual a cero y llega un flanco por la señal de reloj, lo que tenemos es una carga del registro de desplazamiento, una carga paralela. Vamos a ver qué pasa si ahora por la señal L/S mandamos un uno. En este caso la entrada de este flip flop verá la salida de su vecino de la izquierda, la entrada de este flip flop verá la salida de su vecino también de la izquierda y así sucesivamente. De manera que además como hemos dicho antes, el primer flip flop siempre verá por su entrada la entrada externa in n menos uno. ¿Qué pasará cada vez que llegue un flanco de salida por la señal de reloj? Pues que la información que hay en este flip flop se cargará en este porque la entrada de este flip flop es la salida del anterior, la información que hay en este flip flop se cargará en este y el valor que tengamos en i menos uno se cargará siempre en el primer flip flop, es decir estaremos moviendo la información una posición a la derecha. Y no solo eso sino que estaremos entrando en serie todos los valores que vayan apareciendo por i n menos uno, es decir cuando L barra S es igual a uno y llega un flanco de subida tenemos dos axiomas, hay un desplazamiento hacia la derecha y hay una entrada serie. ¿De acuerdo? La salida en este caso solo tenemos una señal de salida, la señal sería el out que corresponde con la salida del flip flop colocado más a la derecha, por lo tanto esto sería un registro de desplazamiento con salida serie. Si desde el exterior pudiésemos ver los estados de todos los flip flops, es decir si tuviésemos estas salidas que estoy dibujando ahora, el registro de desplazamiento tendría una salida paralelo. Una salida paralelo quiere decir, paralelo, quiere decir que en un único flanco de reloj yo puedo ver desde el exterior los estados de todos los flip flops del registro de desplazamiento. Bien, en general los chips comerciales suelen llevar ambas salidas incorporadas, siempre tienen la salida serie y la salida paralela ambas a la vez, y se distinguen por lo tanto por si su entrada es serie o por si su entrada es paralelo. La carga paralelo de un registro puede ser a la vez una carga síncrona o una carga asíncrona. La carga síncrona es la que hemos visto en el ejemplo anterior, hemos dicho que había una señal L barra S que cuando tomaba el valor cero y llegaba un flanco por la señal de sincronización, por la señal ck, en ese momento la información del exterior entraba al registro de desplazamiento. Existen otros registros de desplazamiento con carga asíncrona en los cuales aquí hay una señal la cual llamamos PL de parallel load, tal que cuando la señal PL toma el valor uno el valor que tenemos en las entradas entra en el registro de desplazamiento independientemente de que por la señal de reloj esté llegando un flanco o no esté llegando ningún flanco. Es la misma idea que las entradas asíncronas de los biestables que vimos anteriormente, Bien, además de estas señales de carga paralela síncrona o asíncrona, los chips comerciales suelen llevar la you conocida señal output enable y una señal CE de clock enable tal que cuando esta señal está desactiva se impide que la señal externa de reloj llegue a las entradas de reloj de los elementos de memoria, de los flip flops del registro de desplazamiento y por lo tanto si en los registros de desplazamiento no reciben ninguna señal de sincronización lo único que puede hacer el registro es mantener su estado. Por el contrario cuando la señal CE está activa, se permite que la señal externa ck llegue a las entradas de sincronización, a las entradas del reloj de todos los elementos de memoria del registro de desplazamiento.