Fundamentos de Arquitectura de Microprocesadores y Protocolos de Comunicación Digital

Arquitectura y Funcionamiento del Microprocesador

El Microprocesador

El microprocesador es un circuito integrado que contiene los elementos que constituyen la CPU de una computadora. Es una máquina síncrona que procesa números binarios, siguiendo una secuencia organizada de pasos.

Funciones Principales del Microprocesador

  • Direccionamiento de la instrucción a ejecutar: Realizado con el contador de programa, cuyo valor se incrementa automáticamente, pero puede ser alterado para modificar el flujo de ejecución.
  • Decodificación de las instrucciones: Interpreta el significado de la instrucción recibida en código binario.
  • Controlar la transferencia de información: Genera y transmite las señales de gobierno y sincronismo a todo el sistema.
  • Cálculo: La ALU se encarga de efectuar las operaciones aritméticas y lógicas.
  • Responder a peticiones de servicio: Atiende las solicitudes de dispositivos de entrada y salida de datos.
  • Almacenamiento temporal: Los registros internos son celdas para el almacenamiento temporal de información.

Tipos de Arquitectura de Conjunto de Instrucciones: RISC y CISC

Las arquitecturas de microprocesadores se clasifican principalmente en dos tipos según la complejidad de su conjunto de instrucciones:

RISC (Reduced Instruction Set Computer)

  • Utiliza un conjunto pequeño y uniforme de instrucciones simples, cada una ejecutada en un solo ciclo de reloj.
  • Solo accede a memoria con instrucciones LOAD y STORE.
  • Su control se realiza directamente por hardware.
  • La complejidad reside en el compilador, no en el microprograma.
  • Usa varios registros de propósito general y un formato de instrucción fijo.
  • Produce programas más largos.
  • Ejemplos: SPARC, ARM (comunes en microcontroladores y dispositivos móviles).

CISC (Complex Instruction Set Computer)

  • Emplea un conjunto grande y variado de instrucciones complejas, que suelen requerir varios ciclos por instrucción.
  • Cualquier instrucción puede acceder a memoria.
  • El control se hace mediante microprogramas.
  • La complejidad reside en el microcódigo, no en el compilador.
  • Posee un único conjunto de registros y formato de instrucción variable.
  • Genera programas más cortos.
  • Ejemplos: Intel x86, AMD, Motorola 68000.

Componentes de la Arquitectura Básica del Procesador

El Contador de Programa señala la dirección de la instrucción a buscar en memoria, la cual se envía mediante el búfer de direcciones y se almacena en el Registro de Instrucciones. Luego, el Decodificador de Instrucciones interpreta su contenido y genera las señales necesarias para la ALU, usando el acumulador y los registros como fuente de datos. El resultado se guarda nuevamente en el Acumulador y el Registro de Estado actualiza las banderas que reflejan el resultado. Finalmente, la Unidad de Control y Temporización coordina todo el proceso, mientras que el Búfer de Datos gestiona el intercambio de información.


Arquitecturas de Memoria: Von Neumann y Harvard

Arquitectura Von Neumann

Utiliza una única memoria para almacenar tanto los datos como las instrucciones, accediendo a ella mediante un solo bus. Esto limita la velocidad de acceso, ya que no pueden leerse datos e instrucciones al mismo tiempo. Es común en computadoras personales y sistemas de propósito general.

Arquitectura Harvard

Posee memorias separadas para datos e instrucciones, cada una con su propio bus, lo que permite acceso simultáneo y una mayor velocidad de ejecución. Se aplica principalmente en microcontroladores y procesadores digitales de señales (DSP).


Diagrama de Tiempo del Procesador

Un diagrama de tiempo representa gráficamente la secuencia y duración de las operaciones que realiza el procesador durante la ejecución de una instrucción. Muestra cómo cambian las señales de control, acceso a memoria y transferencia de datos en función de los ciclos de reloj. Permite visualizar en qué momento se realiza cada etapa del ciclo de instrucción (búsqueda, decodificación, ejecución, almacenamiento del resultado).


Modos de Direccionamiento

Los modos de direccionamiento son las distintas formas en que un procesador selecciona y accede a los operandos (datos) que intervienen en una instrucción. Determinan si el operando está en un registro, en memoria, o si forma parte directa de la instrucción.

  1. Modo Inmediato

    El operando es el dato mismo y se especifica dentro de la instrucción.

    Ejemplo: MOV A, #5. Significa que el valor 5 se carga directamente en el registro A.

  2. Modo Directo

    La dirección de memoria del operando se indica explícitamente en la instrucción.

    Ejemplo: MOV A, 40h. Carga en el registro A el contenido de la dirección de memoria 40h.

  3. Modo Indirecto por Registro

    El operando está en una posición de memoria cuya dirección se encuentra almacenada en un registro.

    Ejemplo: MOV A, @R0. El registro R0 contiene una dirección de memoria, y el contenido de esa dirección se carga en A.

Estos modos permiten al procesador flexibilidad en la forma de acceder a los datos, optimizando velocidad, espacio de código y uso de memoria.


Protocolo UART (Universal Asynchronous Receiver-Transmitter)

UART es un sistema de comunicación serie y asíncrona, es decir, transmite los datos bit a bit sin necesidad de una señal de reloj compartida entre los dispositivos. Su función principal es convertir los datos paralelos del sistema en serie para enviarlos por una línea de transmisión, y volver a convertirlos a formato paralelo al recibirlos.

Estructura de una Trama UART Típica

| Start | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | Paridad | Stop |
  • Bit de Inicio (Start): Es un bit en nivel bajo (0) que indica al receptor el comienzo de la transmisión. Sirve para sincronizar la lectura del mensaje.
  • Bits de Datos: Son los bits de información del carácter a enviar (pueden ser de 5 a 8 bits). Se transmiten desde el bit menos significativo (LSB) hasta el más significativo (MSB).
  • Bit de Paridad: Se usa para verificar errores en la transmisión.
    • Paridad Par: Se envía un 1 si el número de bits ‘1’ en los datos es impar.
    • Paridad Impar: Se envía un 1 si el número de bits ‘1’ es par.
  • Bit de Parada (Stop): Uno o dos bits en nivel alto (1) que marcan el fin de la trama y permiten que el receptor identifique el final del carácter. También sirve para asegurar una pausa antes del siguiente byte.

Protocolos de Comunicación Serie Síncrona: SPI e I²C

SPI e I²C son protocolos de comunicación serie síncrona, lo que significa que utilizan una señal de reloj para sincronizar el envío y recepción de datos. Sin embargo, se diferencian en su estructura, velocidad y forma de conexión.

SPI (Serial Peripheral Interface)

Tipo de Conexión

Usa cuatro líneas principales:

  • MOSI: Datos del maestro al esclavo.
  • MISO: Datos del esclavo al maestro.
  • SCLK: Reloj generado por el maestro.
  • SS (o CS): Selección de esclavo (activo en nivel bajo).

Características

  • Modo Maestro/Esclavo: Un maestro puede comunicarse con varios esclavos, cada uno con su línea SS independiente.
  • Velocidad: Muy alta (decenas de MHz).

Ventajas y Desventajas

  • Ventajas: Comunicación full-duplex (envío y recepción simultánea). Alta velocidad y baja latencia. Implementación simple en hardware.
  • Desventajas: Requiere más pines. No tiene control de flujo ni confirmación de recepción. Distancias de conexión cortas.

I²C (Inter-Integrated Circuit)

Tipo de Conexión

Usa solo dos líneas compartidas:

  • SDA: Datos.
  • SCL: Reloj.

Características

  • Modo Maestro/Esclavo: Soporta varios maestros y varios esclavos en el mismo bus, cada uno con una dirección única.
  • Velocidad: Menor que SPI (hasta 400 kHz en modo estándar o 3,4 MHz en modo rápido).

Ventajas y Desventajas

  • Ventajas: Requiere menos pines. Permite múltiples dispositivos con solo dos líneas. Diseño sencillo y económico.
  • Desventajas: Menor velocidad. Comunicación half-duplex. Requiere resistencias pull-up y tiene mayor complejidad en el protocolo.

Protocolo USB (Universal Serial Bus)

El USB es un bus de comunicación serie universal formado por cuatro cables: dos para alimentación eléctrica y dos para transmisión de datos.

Tipo de Transferencia y Arquitectura

  • El USB utiliza una arquitectura Maestro-Esclavo, donde la PC actúa como Maestro (Host) y los periféricos (mouse, teclado, pendrive, etc.) funcionan como Esclavos.
  • Cada periférico recibe un número de identificación y solo responde cuando el Maestro lo solicita.
  • Se pueden conectar hasta 127 dispositivos al mismo bus, y su expansión se realiza mediante Hubs (distribuidores).
  • El acceso al bus se realiza bajo la modalidad de Token o “testigo”, en la cual los datos se envían en paquetes de entre 8 y 256 bytes.
  • Para controlar errores, el USB utiliza el modelo CRC implementado directamente por hardware.

Detección de Dispositivos

El protocolo USB detecta automáticamente los dispositivos conectados, gracias a su capacidad de manejar tanto información de control como de usuario. Los servicios auxiliares del stack de comunicación son los encargados de:

  • El descubrimiento y la numeración de nuevos dispositivos.
  • La asignación de direcciones únicas a cada periférico.
  • La administración de canales virtuales para gestionar múltiples conexiones simultáneamente.

Velocidad de Comunicación

La velocidad del USB depende del estándar de evolución que se esté utilizando. Para alcanzar la máxima tasa de transferencia, tanto el conector como los dispositivos deben ser compatibles con el mismo estándar:

Estándar USBVelocidad MáximaNombre Comercial
USB 1.112 MbpsFull Speed
USB 2.0480 MbpsHigh Speed
USB 3.05 GbpsSuperSpeed
USB 3.1 / 3.210 a 20 GbpsSuperSpeed+
USB 4.040 GbpsUltraSpeed

Ventajas del USB frente a UART, SPI e I²C

  • Mayor velocidad de transmisión.
  • Conexión universal y estandarizada.
  • Permite alimentación eléctrica además de la transferencia de datos.
  • Plug & Play: Detección automática y configuración inmediata de dispositivos.
  • Capacidad de múltiples conexiones simultáneas mediante Hubs.
  • Control de errores por hardware (CRC), lo que asegura mayor fiabilidad en la comunicación.

Protocolo RS-232

RS-232 es un protocolo para transmisión de señales a media distancia con velocidad moderada, utilizando transmisión de información en serie. Requiere solo dos conductores imprescindibles (datos y masa).

La norma RS-232 utiliza niveles de tensión de ±15V, lo que requiere un circuito de adaptación de niveles (como el chip MAX232) para la conexión con microcontroladores que generalmente usan niveles TTL (0-5V). El hardware se ha popularizado con el uso de conectores DB9 o DB25.

Señales de Control Importantes

  • TXD y RXD: Líneas de transmisión y recepción de datos serie.
  • GND: Tierra o masa.
  • Otras señales de control: DTR, DSR, RTS, CTS, DCD, RI.

Tipos de Interconexión Física y Control de Transferencia

Interconexión Paralela

Los bits se transmiten simultáneamente a través de múltiples líneas. Los datos viajan en paralelo (generalmente un byte) desde los puertos hacia la memoria a través de un registro de la CPU, utilizando el bus de datos.

Interconexión Serie

Los datos se envían secuencialmente por un único hilo de transmisión (Tx) y se reciben por otro de recepción (Rx).

Control de Transferencia Paralela

El control, necesario para que el receptor reconozca el envío de información, se puede resolver de dos formas:

  • Control Estroboscópico: Utiliza una línea de control especial para avisar el envío. Se utiliza una señal de DATO VÁLIDO. El flanco ascendente de esta señal indica al receptor que los datos están disponibles para ser leídos.
  • Apretón de Manos (Handshaking): Emplea dos líneas de control (Señal de Envío y Señal de Aceptación) para un control tanto en el envío como en la confirmación de la recepción.

Control de Transferencia Serie

La transferencia serie puede ser sincrónica o asíncrona:

  • Sincrónica: La transferencia se controla mediante señales de control por hilos independientes a los de datos. La duración de los bits se controla con flancos ascendentes (coinciden con las conmutaciones de los bits).
  • Asíncrona: Las señales de control se combinan con las de información y se envían por el mismo hilo. En estado de no-transmisión, la línea de dato está en nivel alto. La transmisión de un carácter inicia con un flanco decreciente seguido del BIT de START, que permite la sincronización.

Instrucciones de Control de Flujo (Ensamblador)

Las instrucciones de control permiten cambiar el valor del registro IP (Puntero de Instrucción), modificando la secuencia de ejecución del programa.

Instrucciones de Salto

  • JMP (Jump): Salto incondicional. Permite saltar a cualquier punto del código. El destino se indica con una etiqueta (un nombre seguido de dos puntos, ej. inicio:).
  • CMP (Compare): Compara dos valores. El salto condicional posterior depende del resultado de esta comparación.

Saltos Condicionales

Transfieren el control a una etiqueta si se cumple una condición. Se utilizan para emular estructuras de alto nivel como if/else.

  • JE: Saltar si son iguales (Jump if Equal).
  • JNE: Saltar si no son iguales (Jump if Not Equal).
  • JA: Saltar si es mayor (Jump if Above).
  • JAE: Saltar si es mayor o igual (Jump if Above or Equal).
  • JB: Saltar si es menor (Jump if Below).
  • JBE: Saltar si es menor o igual (Jump if Below or Equal).

Iteraciones

  • LOOP: Se utiliza para realizar iteraciones fijas (tipo for). Utiliza el registro CX como contador. Cada vez que se ejecuta LOOP, CX se decrementa en 1 y solo se realiza la bifurcación a la etiqueta si CX es distinto de 0.
  • Las iteraciones condicionales (tipo while) se implementan combinando CMP y saltos condicionales (JE, JNE, etc.) con un salto incondicional (JMP) al inicio del bucle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.