Comenzamos con esta lección, una serie de tres temas dedicados a los bloques secuenciales de uno más frecuente, los registros, los contadores y las memorias. El registro es el módulo secuencial más simple y más utilizado. Un registro de n bits es simplemente un conjunto de n biestables controlados todos ellos por las mismas señales de sincronización y de reset o set si las hay. Aquí vemos un registro de n bits con n flip flops que comparten la señal de sincronización que en este caso hemos llamado load y la señal de reset. Las entradas de cada uno de los flip flops están conectadas a estas entradas externas in0 in1 hasta in n menos uno, de manera que cuando por la señal load llega un flanco, es decir cuando la señal load pasa de cero a uno, los valores que tenemos en las entradas se convierten en unos estados de los flip flops, dicho de otra manera cuando load pasa de cero a uno los valores que tenemos en las entradas entran en el registro. Aquí veis una representación más simplificada del registro de n bits con sus entradas, sus salidas y las señales de control, de load y de reset. Y esta, aquí tenéis una representación incluso más condensada donde las entradas y las salidas se han sustituido a nivel simbólico por buses de n bits. Los circuitos comerciales suelen incluir una tercera señal de control, la señal OE o output enable para facilitar la conexión a los registros buses. Recordar que a un bus normalmente acceden multitud de dispositivos y que para poder controlar en cada momento qué dispositivo lanza du información sobre el bus, las salidas de estos pasan previamente por un sistema de buffers tri state. Pues bien, los chips de registros suelen llevar incorporados dichos buffers dentro del mismo chip controlados además por esta señal output enable, de manera que cuando OE es igual a cero el chip deja pasar la información al bus pero cuando OE es igual a uno las salidas del buffer tri state quedan en alta impedancia y es como si este registro no estuviese conectado al bus. De esta manera el registro puede conectarse al bus sin necesidad de poner estos buffers tri state que mencionábamos antes. Un subconjunto particularmente útil de los registros son los llamados registros de desplazamiento. Los registros de desplazamiento o shift register son registros que permiten desplazar su contenido una posición hacia la derecha o una posición a la izquierda en cada flanco de la señal de sincronización. Aunque parezca una tontería sus aplicaciones son múltiples y muy importantes. Basta con pensar por ejemplo que multiplicar o dividir un número binario por dos consiste en desplazar dicho número una posición a la izquierda o una posición a la derecha respectivamente. Aquí tenéis un registro de desplazamiento de n bits. Fijaros que la entrada de cada flip flop coincide con la salida del flip flop conectado inmediatamente a la izquierda, salvo el primer flip flop, el de más a la izquierda cuya entrada viene conectada a una entrada interna in. De manera que imaginemos que en un momento dado, la información que tenemos es esta, es decir este primer flip flop está en el estado cero, este está en el estado uno, etcétera y supongamos que ahora por la señal de sincronización llega un flanco. Este flip flop estará viendo la entrada in, supongamos que esta entrada es uno por lo tanto en el momento que llega el flanco el flip flop cambiará de estado de cero a uno. En el momento que llegue este flanco, este segundo flip flop está viendo la entrada del flip flop anterior, está viendo el cero y por lo tanto cambiará su estado de uno a cero. Este flip flop por la misma razón está viendo este uno, por lo tanto cambiará de cero a uno, etcétera. Fijaros que esta información ha pasado al siguiente flip flop, este al siguiente flip flop, etcétera y la entrada ha pasado al primer flip flop, la información que teníamos en todo el registro se ha desplazado globalmente una posición hacia la derecha. Aquí tenéis la representación esquemática de un registro de desplazamiento con sus señales de sincronización y de reset con su entrada externa que habitualmente recibe el nombre de serial in, entrada serie y con sus salidas. Y aquí tenéis una representación más condenadas donde las salidas se han sustituido a nivel simbólico por un bus de n bits.