Sistemas Digitales

Los sistemas digitales son conjuntos de circuitos electrónicos diseñados para procesar, almacenar y transmitir información en forma de señales binarias, es decir, utilizando solo los valores 0 y 1. Estos sistemas están presentes en computadoras, dispositivos de comunicación, controladores industriales y una amplia variedad de aplicaciones electrónicas.

Dentro de los sistemas digitales, existen varios componentes fundamentales que permiten su funcionamiento:

  • Multiplexores (MUX): Son circuitos combinacionales que seleccionan una de varias señales de entrada y la dirigen a una única salida. Su funcionamiento se basa en señales de control, lo que permite transmitir datos de múltiples fuentes a través de un solo canal, optimizando recursos y reduciendo el número de conexiones.
  • Demultiplexores (DEMUX): Operan de manera inversa a los multiplexores. Reciben una señal de entrada y la distribuyen en varias salidas según la señal de control, facilitando la distribución de datos en sistemas de comunicación y procesamiento.
  • Registros: Son conjuntos de flip-flops utilizados para almacenar datos de forma temporal. Se usan en microprocesadores y sistemas digitales para retener información mientras se procesa. Pueden ser registros de desplazamiento, que permiten mover los datos en serie de un bit a otro.
  • Contadores: Son circuitos secuenciales que cuentan pulsos de reloj y almacenan el resultado en forma binaria. Se utilizan en aplicaciones como relojes digitales, generación de señales y sistemas de control. Pueden ser ascendentes, descendentes o programables, dependiendo de su configuración.
  • Codificadores y Decodificadores: Los codificadores convierten múltiples señales de entrada en un código binario reducido, mientras que los decodificadores hacen la función inversa, transformando una señal binaria en una de varias salidas. Son esenciales en sistemas de comunicación y almacenamiento de datos.

Estos componentes trabajan en conjunto en los sistemas digitales modernos, permitiendo la realización de tareas como el almacenamiento de información, la transmisión eficiente de datos y el control de dispositivos electrónicos. Su combinación forma la base de la computación y la automatización en diversas industrias.

Multiplexores (MUX)

Los circuitos integrados multiplexores, comúnmente conocidos como MUX, son componentes esenciales en la electrónica digital. Su función principal es seleccionar una de varias señales de entrada y dirigirla a una única salida. Esto los hace extremadamente útiles en aplicaciones donde se necesita manejar múltiples señales con recursos limitados, como en sistemas de comunicación, procesamiento de datos y control de dispositivos.

  • Entradas: Son las señales que el multiplexor puede seleccionar. Por ejemplo, un multiplexor de 4 a 1 tiene 4 entradas.
  • Salida: Es la señal que se selecciona y se dirige a la salida.
  • Líneas de control: Determinan cuál de las entradas se conecta a la salida. El número de líneas de control depende de la cantidad de entradas. Por ejemplo, un multiplexor de 4 a 1 requiere 2 líneas de control (ya que \( 2^2 = 4 \))

Los multiplexores tienen diversas aplicaciones en distintos campos de la electrónica y las telecomunicaciones. En los sistemas de comunicación, se utilizan para combinar múltiples señales en un solo canal de transmisión, lo que optimiza el uso del ancho de banda y mejora la eficiencia de la transmisión de datos. En el procesamiento de datos, son fundamentales en microprocesadores y FPGAs, ya que permiten seleccionar entre diferentes fuentes de información según sea necesario para la ejecución de operaciones lógicas y aritméticas.

En cuanto al control de dispositivos, los sistemas embebidos emplean multiplexores para gestionar múltiples dispositivos utilizando un número reducido de pines, lo que simplifica el diseño de hardware y reduce costos. También desempeñan un papel clave en la conversión de señales dentro de los sistemas de adquisición de datos, donde permiten leer múltiples sensores con un solo convertidor analógico-digital (ADC), optimizando el procesamiento de la información. Finalmente, en los sistemas de transmisión de datos, los multiplexores ayudan a reducir la cantidad de cables necesarios para enviar múltiples señales, lo que disminuye la complejidad del cableado y facilita la instalación y mantenimiento de los sistemas electrónicos.

Estructura interna

Los multiplexores están compuestos por:

  • Compuertas lógicas: Utilizan compuertas AND, OR y NOT para implementar la lógica de selección.
  • Líneas de selección: Conectadas a las compuertas lógicas para determinar cuál entrada se dirige a la salida.
  • Buffer de salida: Asegura que la señal de salida tenga la intensidad adecuada para ser utilizada en otros circuitos.

Por ejemplo, un multiplexor de 2 a 1 tiene:

  • 2 entradas (\(I_0\) e \(I_1\)).
  • 1 línea de control (\(S\)).
  • 1 salida (\(Y\)).

La lógica del multiplexor se puede expresar como:

\(Y = I_0 \cdot \overline{S} + I_1 \cdot S\)

Pines

Los multiplexores vienen en diferentes configuraciones, pero los pines más comunes son:

  • Entradas de datos (\(I_0, I_1, I_2, \ldots\)): Son las señales que el multiplexor puede seleccionar. El número de entradas depende del tipo de multiplexor (por ejemplo, 2, 4, 8, 16, etc.).
  • Líneas de selección (\(S_0, S_1, \ldots\)): Determinan cuál entrada se conecta a la salida. El número de líneas de selección depende del número de entradas. Por ejemplo:
  • - 2 entradas: 1 línea de selección.

    - 4 entradas: 2 líneas de selección.

    - 8 entradas: 3 líneas de selección.

  • Salida (\(Y\)): Es la señal seleccionada que se dirige a la salida.
  • Habilitación (\(EN\)): Algunos multiplexores tienen un pin de habilitación que activa o desactiva el dispositivo. Cuando está desactivado, la salida puede estar en un estado de alta impedancia (flotante).
  • Alimentación (\(V_{CC}\) y \(GND\)): Proporcionan voltaje y tierra para el funcionamiento del circuito.
Funcionamiento

El funcionamiento de un multiplexor se basa en las líneas de selección. Por ejemplo, en un multiplexor de 4 a 1:

  • Si las líneas de selección son \(S_1 = 0\) y \(S_0 = 0\), la entrada \(I_0\) se conecta a la salida \(Y\).
  • Si \(S_1 = 0\) y \(S_0 = 1\), la entrada \(I_1\) se conecta a la salida \(Y\).
  • Si \(S_1 = 1\) y \(S_0 = 0\), la entrada \(I_2\) se conecta a la salida \(Y\).
  • Si \(S_1 = 1\) y \(S_0 = 1\), la entrada \(I_3\) se conecta a la salida \(Y\).

Registros

Los registros son componentes fundamentales en la electrónica digital y los sistemas de computación. Son circuitos secuenciales que permiten almacenar y manipular datos binarios de manera temporal. Los registros son esenciales en aplicaciones como el almacenamiento de datos, el procesamiento de instrucciones en CPUs, la transferencia de información entre dispositivos y mucho más.

Un registro es un circuito secuencial compuesto por un conjunto de biestables (flip-flops) conectados entre sí. Cada biestable almacena un bit de información (0 o 1), y un registro de n bits está compuesto por n biestables. Los registros pueden realizar operaciones como:

  • Almacenamiento: Guardar datos temporalmente.
  • Desplazamiento: Mover los bits hacia la izquierda o la derecha.
  • Carga paralela: Cargar múltiples bits de datos al mismo tiempo.

Los registros tienen diversas aplicaciones en el procesamiento y almacenamiento de datos dentro de los sistemas digitales. En las CPUs, cumplen un papel fundamental en el almacenamiento temporal de datos e instrucciones mientras se ejecutan los programas, permitiendo una rápida manipulación de la información. También se utilizan en la conversión de datos, especialmente mediante registros de desplazamiento, que permiten transformar datos de serie a paralelo y viceversa, como ocurre en los sistemas de comunicación UART.

En los sistemas de visualización, los registros de desplazamiento son esenciales para el control de displays, ya que facilitan la gestión de matrices de LEDs o displays de 7 segmentos con un número reducido de pines. Además, en los sistemas de transferencia de datos, los registros funcionan como buffers para almacenar información temporalmente, asegurando que los datos se transmitan de manera eficiente y sin pérdidas. Finalmente, en las ALUs (Unidades Aritméticas Lógicas), los registros desempeñan un papel clave al almacenar los operandos y los resultados de las operaciones matemáticas, contribuyendo al correcto funcionamiento de los procesos aritméticos y lógicos dentro de los procesadores.

Estructura interna

Un registro está compuesto por:

  • Biestables (Flip-Flops): Cada biestable almacena un bit de información. Los biestables más comunes son los de tipo D, que tienen una entrada de datos (\(D\)) y una salida (\(Q\)).
  • Conexiones de reloj (Clock): Todos los biestables en un registro están sincronizados por una señal de reloj (\(CLK\)). Cuando el reloj cambia de estado (por ejemplo, en el flanco de subida), los datos en las entradas se almacenan en los biestables.
  • Entradas y salidas: Dependiendo del tipo de registro, puede tener entradas y salidas en serie o en paralelo.
  • Lógica de control: Algunos registros incluyen lógica adicional para realizar operaciones como desplazamiento, carga paralela o reset.
Tipos de Registros
  • Registro de almacenamiento (Buffer): Almacena datos temporalmente y los mantiene hasta que se carguen nuevos datos.
  • Ejemplo: Registro de 8 bits (74HC374).

  • Registro de desplazamiento (Shift Register): Desplaza los bits hacia la izquierda o la derecha en cada ciclo de reloj.
    1. Serie a paralelo: Convierte una entrada en serie en una salida en paralelo.
    2. Paralelo a serie: Convierte una entrada en paralelo en una salida en serie.

    Ejemplo: 74HC164 (serie a paralelo), 74HC165 (paralelo a serie).

  • Registro de carga paralela: Permite cargar múltiples bits de datos al mismo tiempo.
  • Ejemplo: 74HC195.

  • Registro universal: Combina las funcionalidades de almacenamiento, desplazamiento y carga paralela.
  • Ejemplo: 74HC194.

Pines

Los pines de un registro dependen de su tipo, pero los más comunes son:

  • Entradas de datos (\(D_0, D_1, \ldots, D_n\)): Para registros de carga paralela, estas entradas permiten cargar datos en los biestables.
  • Salidas de datos (\(Q_0, Q_1, \ldots, Q_n\)): Representan los bits almacenados en el registro.
  • Entrada de reloj (\(CLK\)): Sincroniza las operaciones del registro. Los datos se almacenan o desplazan en el flanco de subida o bajada del reloj.
  • Entrada de desplazamiento (\(DS\)): En registros de desplazamiento, esta entrada define el bit que se introduce en el registro en cada ciclo de reloj.
  • Entrada de reset (\(RST\) o \(CLR\)): Reinicia el registro, estableciendo todas las salidas a 0.
  • Entrada de habilitación (\(EN\)): Activa o desactiva el registro.
  • Alimentación (\(V_{CC}\) y \(GND\)): Proporcionan voltaje y tierra para el funcionamiento del circuito.
Funcionamiento

El funcionamiento de un registro depende de su tipo. Por ejemplo, en un registro de desplazamiento serie a paralelo:

  1. Los datos se introducen bit a bit en la entrada de desplazamiento (\(DS\)).
  2. En cada ciclo de reloj, los bits se desplazan hacia la derecha o izquierda.
  3. Después de \(n\) ciclos de reloj, los \(n\) bits de datos están disponibles en las salidas paralelas (\(Q_0\) a \(Q_n\)).

En un registro de carga paralela:

  1. Los datos se cargan en las entradas paralelas (\(D_0\) a \(D_n\)).
  2. En el flanco de reloj, los datos se almacenan en los biestables y están disponibles en las salidas (\(Q_0\) a \(Q_n\)).

Contadores

Un contador es un circuito secuencial que cuenta pulsos de una señal de reloj (CLK) y almacena el resultado en forma de un número binario. Según su diseño, puede contar hacia arriba (incrementar), hacia abajo (decrementar) o en ambas direcciones, funcionando como un contador ascendente/descendente.

Estos circuitos están formados por biestables (flip-flops) conectados en cascada, donde cada biestable representa un bit del número binario en conteo. Gracias a esta estructura, los contadores juegan un papel fundamental en numerosos sistemas digitales, permitiendo el seguimiento y control de eventos.

En aplicaciones de temporización, se utilizan para medir intervalos de tiempo con alta precisión, facilitando la sincronización de procesos electrónicos. También son esenciales en la división de frecuencia, donde reducen la frecuencia de una señal de reloj para generar señales más lentas, ajustadas a distintas aplicaciones.

En los sistemas de control de procesos, los contadores registran eventos como el número de productos en una línea de ensamblaje, asegurando un seguimiento preciso de la producción. Además, en la generación de secuencias, crean patrones binarios utilizados en generadores de señales y circuitos lógicos. Finalmente, en sistemas de conteo, permiten registrar datos en tiempo real, como la cantidad de personas que ingresan a un lugar o el flujo de vehículos en una vía, facilitando su análisis y gestión.

Estructura interna

Un contador típico está compuesto por:

  • Biestables (Flip-Flops): Cada biestable almacena un bit del contador. Los biestables más comunes son los de tipo D o JK.
  • Lógica de conteo: Circuitos combinacionales que determinan cómo cambia el estado del contador en cada pulso de reloj.
  • Entrada de reloj (\(CLK\)): Sincroniza las operaciones del contador. En cada flanco de subida o bajada del reloj, el contador incrementa o decrementa su valor.
  • Entrada de reset (\(RST\) o \(CLR\)): Reinicia el contador, estableciendo todas las salidas a 0.
  • Entrada de habilitación (\(EN\)): Activa o desactiva el contador.
  • Salidas (\(Q_0, Q_1, \ldots, Q_n\)): Representan el valor binario actual del contador.
Tipos de Contadores
  • Contador ascendente (Up Counter): Incrementa su valor en 1 con cada pulso de reloj.
  • Ejemplo: Contador de 4 bits (0 a 15).

  • Contador descendente (Down Counter): Decrementa su valor en 1 con cada pulso de reloj.
  • Ejemplo: Contador de 4 bits (15 a 0).

  • Contador ascendente/descendente (Up/Down Counter): Puede contar hacia arriba o hacia abajo, dependiendo de una señal de control.
  • Ejemplo: 74HC193.

  • Contador síncrono: Todos los biestables cambian de estado simultáneamente con el pulso de reloj.
  • Contador asíncrono (Ripple Counter): Los biestables no cambian de estado simultáneamente. El cambio se propaga de un biestable al siguiente.
  • Contador de módulo N: Cuenta hasta un valor específico (N) y luego se reinicia.
  • Ejemplo: Un contador de módulo 10 cuenta de 0 a 9.

Pines

Los pines de un contador dependen de su tipo, pero los más comunes son:

  • Entrada de reloj (\(CLK\)): Sincroniza las operaciones del contador.
  • Entrada de reset (\(RST\) o \(CLR\)): Reinicia el contador, estableciendo todas las salidas a 0.
  • Entrada de habilitación (\(EN\)): Activa o desactiva el contador.
  • Entrada de dirección (\(UP/DOWN\)): En contadores ascendentes/descendentes, esta entrada determina si el contador cuenta hacia arriba o hacia abajo.
  • Salidas (\(Q_0, Q_1, \ldots, Q_n\)): Representan el valor binario actual del contador.
  • Salida de acarreo (\(CO\)): Indica cuando el contador ha alcanzado su valor máximo y se reinicia.
  • Salida de préstamo (\(BO\)): En contadores descendentes, indica cuando el contador ha alcanzado su valor mínimo y se reinicia.
  • Alimentación (\(V_{CC}\) y \(GND\)): Proporcionan voltaje y tierra para el funcionamiento del circuito.
Funcionamiento

El funcionamiento de un contador depende de su tipo. Por ejemplo, en un contador ascendente de 4 bits:

  1. Inicialmente, el contador está en 0 (\(Q_0=0, Q_1=0, Q_2=0, Q_3=0\)).
  2. En cada flanco de subida del reloj, el contador incrementa su valor en 1.
  3. Después de 15 pulsos de reloj, el contador alcanza su valor máximo (15 en binario: \(1111\)) y se reinicia a 0.

En un contador descendente:

  1. Inicialmente, el contador está en su valor máximo (por ejemplo, 15 para un contador de 4 bits).
  2. En cada flanco de subida del reloj, el contador decrementa su valor en 1.
  3. Después de 15 pulsos de reloj, el contador alcanza su valor mínimo (0) y se reinicia.

Codificadores

Los codificadores son circuitos combinacionales esenciales en la electrónica digital que convierten múltiples entradas en una salida codificada de menor tamaño, reduciendo el número de líneas necesarias para representar información, lo que los hace útiles en aplicaciones como la compresión de datos, la multiplexación y la interfaz entre dispositivos; por ejemplo, un codificador de 8 a 3 toma 8 entradas y genera una salida de 3 bits que representa la entrada activa.

  • Entradas: Son las señales que el codificador procesa. Solo una entrada puede estar activa (generalmente en nivel alto, 1) en un momento dado.
  • Salida: Es el código binario que representa la entrada activa.

Los codificadores desempeñan un papel fundamental en la compresión de datos al reducir el número de líneas necesarias para representar información, lo que resulta especialmente útil en sistemas de transmisión de datos. En la interfaz entre dispositivos, permiten la conexión de sistemas embebidos con diferentes números de líneas de entrada y salida, facilitando la comunicación entre ellos. En los teclados matriciales, los codificadores convierten la pulsación de una tecla en un código binario, optimizando el uso de líneas de conexión. También son clave en los sistemas de prioridad, donde los codificadores prioritarios determinan la entrada de mayor importancia, como en el control de interrupciones. Finalmente, en la conversión de señales, estos circuitos transforman señales analógicas o digitales en códigos binarios, lo que los hace esenciales en sistemas de adquisición de datos.

Estructura interna

Un codificador está compuesto por:

  • Compuertas lógicas: Utiliza compuertas AND, OR y NOT para implementar la lógica de codificación.
  • Entradas: Dependiendo del tipo de codificador, puede tener 4, 8, 16 o más entradas.
  • Salidas: Genera un código binario que representa la entrada activa.
  • Lógica de prioridad (en codificadores prioritarios): Determina qué entrada tiene prioridad si varias entradas están activas al mismo tiempo.
Tipos de Codificadores
  • Codificador simple: Convierte una entrada activa en un código binario. Solo una entrada puede estar activa a la vez.
  • Ejemplo: Codificador de 4 a 2.

  • Codificador prioritario (Priority Encoder): Si varias entradas están activas al mismo tiempo, el codificador prioriza la entrada de mayor valor y genera el código correspondiente.
  • Ejemplo: 74HC148 (codificador prioritario de 8 a 3).

  • Codificador decimal a BCD: Convierte una entrada decimal (0-9) en su equivalente en código BCD (Binary-Coded Decimal).
  • Ejemplo: 74HC147.

Pines

Los pines de un codificador dependen de su tipo, pero los más comunes son:

  • Entradas (\(I_0, I_1, \ldots, I_n\)): Son las señales que el codificador procesa. Solo una entrada puede estar activa a la vez (en codificadores simples).
  • Salidas (\(Y_0, Y_1, \ldots, Y_m\)): Representan el código binario de la entrada activa. El número de salidas depende del número de entradas. Por ejemplo, un codificador de 8 a 3 tiene 3 salidas.
  • Habilitación (\(EN\)): Activa o desactiva el codificador. Cuando está desactivado, las salidas pueden estar en un estado de alta impedancia.
  • Salida de validación (\(GS\) o \(EO\)): Indica si al menos una entrada está activa. Es útil en codificadores prioritarios.
  • Salida de prioridad (\(EO\)): En codificadores prioritarios, indica si la salida corresponde a una entrada válida.
  • Alimentación (\(V_{CC}\) y \(GND\)): Proporcionan voltaje y tierra para el funcionamiento del circuito.
Funcionamiento

El funcionamiento de un codificador depende de su tipo. Por ejemplo, en un codificador de 4 a 2:

  1. Si la entrada \(I_0\) está activa, la salida será \(Y_1=0\), \(Y_0=0\) (código 00).
  2. Si la entrada \(I_1\) está activa, la salida será \(Y_1=0\), \(Y_0=1\) (código 01).
  3. Si la entrada \(I_2\) está activa, la salida será \(Y_1=1\), \(Y_0=0\) (código 10).
  4. Si la entrada \(I_3\) está activa, la salida será \(Y_1=1\), \(Y_0=1\) (código 11).

En un codificador prioritario, si varias entradas están activas, el codificador selecciona la entrada de mayor valor. Por ejemplo, en un codificador prioritario de 8 a 3:

  • Si \(I_7\) está activa, la salida será \(111\), independientemente de otras entradas activas.
  • Si \(I_7\) no está activa pero \(I_6\) sí, la salida será \(110\), y así sucesivamente.

Señal de Reloj

La señal de reloj es una onda periódica utilizada para sincronizar el funcionamiento de circuitos digitales. Es generada por un oscilador y alterna entre niveles altos y bajos a una frecuencia específica. Su propósito es coordinar la ejecución de operaciones dentro de un sistema digital, asegurando que los componentes actúen en el momento correcto. En contadores, registros y microprocesadores, la señal de reloj establece el ritmo de ejecución de las instrucciones.

Circuito Integrado 555

El 555 es un temporizador versátil que puede funcionar en tres modos principales: astable, monoestable y biestable. Es ampliamente utilizado en electrónica debido a su simplicidad y múltiples aplicaciones.

  • Modo astable: Genera una señal de onda cuadrada continua sin necesidad de una señal externa, funcionando como un oscilador o generador de pulsos.
  • Modo monoestable: Actúa como un temporizador, generando un único pulso de duración controlada cuando recibe un disparo externo.
  • Modo biestable: Funciona como un flip-flop, cambiando su estado con cada pulso de entrada, útil en aplicaciones de almacenamiento de estado.

Este circuito se usa en temporizadores, generadores de señal, control de ancho de pulso (PWM) y sistemas de retardo, siendo fundamental en electrónica digital y analógica.

Diseño de Sistemas Digitales

Los circuitos secuenciales son sistemas digitales cuya salida depende no solo de las entradas actuales, sino también de su historia pasada. Esta característica los hace indispensables para la implementación de sistemas de memoria, contadores, registros y máquinas de estado. En este documento, se analizarán los fundamentos teóricos y prácticos de los circuitos secuenciales, incluyendo los diferentes tipos de flip-flops, sus tablas de verdad, diagramas de estado y aplicaciones en el diseño de sistemas digitales complejos.