Dentro de los circuitos integrados más utilizados en proyectos de electrónica digital, encontramos este versátil registro de desplazamiento de 8 bits, también conocido como conversor serie-paralelo.
Físicamente, se trata de un circuito integrado de 14 pines, en formato DIL, cuya cápsula puede ser de diferentes materiales. La última letra de su nombre (la “N”) indica el material y la forma del empaquetado: plástico (N), montaje superficial (D) y algunos encapsulados cerámicos (W, FK y J). A lo largo del artículo nos referiremos al 74LS164N, pero lo explicado también será válido para sus “primos”, construidos con tecnologías parecidas, como el 74HC164, 74HS164, etc. Las diferencias entre unos y otros tienen que ver básicamente con la velocidad máxima de clock y la cantidad de puertas que se pueden conectar a sus salidas. En todo caso, la hoja de datos del fabricante del circuito integrado en cuestión nos resolverá cualquier duda que se nos plantee.
Qué es un registro de desplazamiento
En el caso del integrado que nos ocupa, las salidas son ocho. El término “registro” puede utilizarse en una gran variedad de aplicaciones muy específicas, pero en todos los casos se refiere a un grupo de flip-flops que operan juntos para formar una unidad capaz de almacenar un dato.
No debe confundirse con un contador, que, aunque está construido con los mismos ladrillos básicos, se encarga de generar datos nuevos a partir de los ingresados. En este contexto, un contador puede verse como una clase especializada de registro, capaz de contar eventos y además generar un dato de salida, mientras que el registro de desplazamiento se limita a almacenar un dato en su interior y hacerlo accesible en una forma diferente a la original, pero sin transformarlo.
Cómo funciona internamente
Tal como se puede ver en la figura, internamente el registro de desplazamiento 74LS164N consiste básicamente en 8 flip-flops en cadena, donde los bits ingresan al primero de ellos en cada pulso de clock y se propagan hacia la derecha.
Si comenzamos con todos los flip-flops en cero, por ejemplo habiendo llevado el pin reset a cero durante unos nanosegundos, luego de 8 ciclos de clock tendremos disponibles en las salidas QA a QH los 8 bits que se ingresaron en forma serial. Por esta razón se puede utilizar un registro de desplazamiento como conversor serie-paralelo. En el noveno pulso de clock se ingresará un nuevo dato al registro, y el que estaba presente en el último flip-flop (salida QH) se perderá.
A menudo se necesita construir un registro de desplazamiento de más de 8 bits de profundidad. En estos casos se puede conectar la salida QH de un 74LS164N a las entradas A y B del segundo, de manera que este noveno bit que se hubiera perdido al “caerse” del primer 74LS164N se aproveche como dato de entrada en el siguiente. De esta manera, encadenando varios de estos integrados podemos construir un registro de desplazamiento del largo que deseemos. Por supuesto, en estos casos las entradas de clock de todos los 74LS164N implicados deben estar unidas, para que funcionen sincronizadamente.
Los datos se introducen en el shift register con cada flanco de subida del pulso de clock, esto es, cuando el pulso de reloj pasa de “0” a “1”. Por último, debemos tener en cuenta que el primer bit ingresado es el que primero saldrá por el otro extremo del registro, por lo que se dice que es una cola de bits del tipo LIFO (Last In, Last Output, o “ultimo en entrar, ultimo en salir”).
Pin-out del 74LS164N
En esta misma página podemos ver el pin-out de los dos formatos de cápsulas disponibles. Los pines que aparecen con el nombre “NC” no se encuentran conectados internamente.
- En el primer esquema, correspondiente a los encapsulados tipo DIL y que será el que más frecuentemente utilicemos en nuestros proyectos, los pines 1 y 2, llamados “A” y “B”, son las entradas de datos al registro de desplazamiento. Internamente están conectados a los terminales de entrada de una compuerta NAND, por lo que (recomendamos consultar el artículo sobre compuertas digitales de NeoTeo) el dato ingresado será efectivamente un “1” cuando ambas entradas estén en “0”. Cualquier otra combinación de valores en la entrada dará como resultado el ingreso de un “0”.
- El terminal 8, con el nombre CLK, es el que recibe los pulsos de clock, que son los que “marcarán el paso”, ingresando al registro los bits presentes en su entrada con cada flanco positivo de los pulsos de clock.
- El pin 9 cumple las funciones de reset, poniendo todas las salidas del integrado en “0” cada vez que se lo pone a masa. Para que el integrado funcione normalmente, este pin debe estar conectado a +V. En aquellos casos en que por algún motivo no se pueda controlar el pin de reset, se pueden ingresar ocho “0” consecutivos mediante A y B, teniendo el mismo efecto final sobre las salidas. Este sistema es más lento (ocho ciclos de clock), pero permite ahorrar una línea de control.
- Los pines 3, 4, 5, 6, 10, 11, 12 y 13 son las salidas, denominadas QA, QB, QC, QD, QE, QF, QG y QH. En estos pines irán apareciendo los valores presentes en la entrada.
Aplicación práctica: displays de 7 segmentos
Un caso en el que tener a mano un 74LS164N simplifica bastante las cosas es en el manejo de displays LED de 7 segmentos mediante microcontroladores. En un sistema de control “clásico”, sin registros de desplazamiento, se utilizan varios pines del PIC para encender individualmente cada segmento del display, y si son más de uno los displays a controlar, se requiere una línea adicional por display para controlar su apagado. El software del microcontrolador debe atender permanentemente el display, generalmente mediante interrupciones, para escribir en cada dígito el valor correcto.
En el caso de un display LED de 7 segmentos de dos dígitos son necesarias ocho líneas para controlar los 7 segmentos y el punto decimal, más dos líneas para el control de encendido/apagado de cada dígito (en el multiplexado). Esto hace un total de 10 pines del PIC para controlar un display de solo dos dígitos.
El uso del 74LS164N permite el mismo control con solo 3 líneas: una de datos conectada a las entradas A y B, una de reloj conectada a la entrada CLK, y la tercera (que se puede omitir tranquilamente) de RESET para limpiar el display. La economía de recursos es evidente.
A esta ventaja hay que sumarle que, una vez mostrado un valor en el display, el microcontrolador se desentiende del mismo (no se necesita el refresco constante de los dígitos como en el caso del multiplexado) hasta que haya que mostrar datos nuevos, ya que las salidas del 74LS164N conservan sus valores hasta que indiquemos lo contrario.
El esquema que se ve al final del artículo ilustra este conexionado, sin línea de RESET, ya que el tiempo implicado en escribir 16 ceros en el registro de desplazamiento es insignificante (unos 32 nanosegundos a 4MHz) y nos permite ahorrarnos un pin del PIC.
Para ampliar la información: Más información Más información.