Fundamentos de Operación del Microprocesador y Gestión de Memoria


Operaciones Iniciales del Microprocesador

Estas son las operaciones que el propio microprocesador inicia. Generalmente, estas incluyen:

  • Leer memoria.
  • Escribir en memoria.
  • Lectura de E/S (obtener datos de un dispositivo de entrada).
  • Escribir E/S (enviar datos a un dispositivo de salida).

Los microprocesadores tratan la memoria y los dispositivos de E/S de la misma manera. Los dispositivos de entrada y salida simplemente se mapean a direcciones de memoria para el microprocesador.

Por ejemplo, el teclado puede comportarse como la dirección de memoria A3F2H. Para obtener qué tecla ha sido presionada, el microprocesador lee los datos en la ubicación A3F2H.

El proceso de comunicación entre el microprocesador y los periféricos consta de 3 pasos:

  1. Identificar la dirección.
  2. Transferir la información binaria.
  3. Proporcionar las señales de temporización correctas.

La Operación de Lectura de Memoria

Para leer el contenido de una ubicación de memoria, tienen lugar los siguientes pasos:

  1. El microprocesador coloca la dirección de 16 bits de la ubicación de memoria en el bus de direcciones.
  2. Posteriormente, activa la señal de control de lectura de memoria (RD) que habilita el chip de memoria.
  3. La memoria decodifica la dirección e identifica la ubicación correcta.
  4. La memoria coloca el contenido en el bus de datos.
  5. El microprocesador lee el valor del bus de datos tras un tiempo de acceso determinado.

Operaciones Internas de Datos

El microprocesador 8085 puede realizar operaciones internas como:

  • Almacenamiento de datos.
  • Operaciones aritméticas y lógicas.
  • Pruebas de estado.
  • Otras operaciones de control.

Para realizar estas operaciones, el microprocesador necesita una arquitectura interna como la que se describe a continuación.

Componentes Clave de la Arquitectura Interna

Además de los registros de propósito general, el acumulador y los flags (banderas de estado), la arquitectura interna incluye:

  • Contador del programa (PC): Registro utilizado para controlar la secuencia de las instrucciones. Contiene siempre la dirección de la siguiente instrucción a ejecutar. Dado que contiene una dirección, debe tener 16 bits de ancho.
  • Puntero de la pila (Stack pointer): Registro de 16 bits que apunta a la pila, un área de memoria utilizada para almacenar datos que serán recuperados pronto. Normalmente accede a la pila en una modalidad LIFO (Last In, First Out).

Operaciones Iniciadas Externamente

Los dispositivos externos pueden iniciar una de las 4 siguientes operaciones:

  • Reset: Todas las operaciones se detienen y el contador del programa se reinicia a la dirección 0000H.
  • Interrupt: Las operaciones se interrumpen y el microprocesador ejecuta una rutina de servicio de interrupción (ISR). Esta rutina gestiona la interrupción (realiza las operaciones necesarias). Posteriormente, el microprocesador reanuda sus operaciones previas.
  • Ready: El 8085 tiene un pin llamado READY, que es utilizado por dispositivos externos para pausar la ejecución del 8085 hasta que estén listos. Mientras la señal READY esté en estado bajo (lógico ‘0’), el 8085 estará en estado de espera (wait state).
  • Hold: El 8085 tiene un pin llamado HOLD. Este pin es empleado por dispositivos externos para solicitar el control de los buses del sistema. Cuando la señal HOLD es activada por un dispositivo externo, el 8085 pausa la ejecución de sus instrucciones y libera el control de los buses. Esto facilita que dispositivos externos, como los de Acceso Directo a Memoria (DMA), puedan gestionar directamente la información en los buses.

Diseño y Operación de la Memoria

La memoria es el componente donde se almacena la información (datos e instrucciones). Se distinguen dos tipos principales:

  • Memoria principal: Incluye RAM (Random Access Memory), compuesta por biestables (flip-flops) o condensadores, y ROM (Read-Only Memory), que utiliza diodos o transistores para almacenar información de forma permanente.
  • Memoria de almacenamiento secundario: Como discos duros, unidades de estado sólido (SSD), CD-ROM, etc.

Acceso a la Información en la Memoria

Para que el microprocesador pueda acceder (leer o escribir) a la información en la memoria (RAM o ROM), necesita realizar lo siguiente:

  1. Seleccionar el chip de memoria correcto (utilizando las líneas de dirección de orden superior del bus de direcciones).
  2. Identificar la ubicación de la memoria (utilizando las líneas de dirección de orden inferior del bus de direcciones).
  3. Acceder a los datos (utilizando el bus de datos).

Buffers de Tres Estados (Tri-State Buffers)

Es un elemento fundamental en el diseño de sistemas de memoria y buses. Es un circuito lógico con tres posibles estados de salida:

  • 0 lógico.
  • 1 lógico.
  • Alta impedancia.

En el modo de alta impedancia, el circuito se comporta como si estuviera desconectado de la salida completamente.

El circuito tri-state tiene dos entradas y una salida:

  • La primera entrada es la entrada de datos (D).
  • La segunda entrada es la señal de habilitación (enable).

Si la señal de habilitación está en estado alto (lógico ‘1’), la salida sigue el comportamiento correcto del circuito. Si la señal de habilitación está en estado bajo (lógico ‘0’), la salida entra en estado de alta impedancia, comportándose como un circuito abierto.

Elementos de Memoria Básicos

El elemento de memoria básico es similar a un D-latch. Este latch tiene una entrada de datos, una entrada de habilitación y una salida.

Sin embargo, este diseño presenta una limitación: los datos siempre están presentes en la entrada y la salida se ajusta continuamente al contenido del latch.

Para evitar esto, se añaden buffers de tres estados en la entrada y la salida del latch. Las señales de control WR (Write) y RD (Read) son activas a nivel bajo: si su valor es ‘0’, la señal se propaga; si es ‘1’, se comportan como un circuito abierto (alta impedancia).

Construcción de un Registro de Memoria

Si tomamos 4 de los latches básicos descritos anteriormente y los unimos, conseguiremos un registro de memoria de 4 bits.

Diseño de un Chip de Memoria

Utilizando las señales de control RD y WR se puede determinar la dirección del flujo de datos (lectura o escritura) en la memoria. Posteriormente, utilizando la señal de habilitación de chip (Chip Enable) adecuada, activamos un registro de memoria individual. Lo que acabamos de diseñar es una memoria con 4 ubicaciones y cada ubicación tiene 4 elementos (bits). Esta memoria se llamará 4×4 (4 ubicaciones de 4 bits cada una).

Habilitación de Entradas y Decodificación de Direcciones

¿Cómo producimos estas líneas de habilitación de registro? Puesto que solo una de estas señales de habilitación puede estar activa simultáneamente, se utilizan decodificadores para generar estas señales a partir de un menor número de líneas de dirección, reduciendo así el número de pines del chip. Estas líneas de entrada al decodificador son, de hecho, las líneas de dirección de la memoria.

Dado que tenemos buffers de tres estados tanto en las entradas como en las salidas de los flip-flops, es posible utilizar un único conjunto de pines para la entrada y salida de datos (bus de datos bidireccional).

Proceso de Escritura en Memoria

¿Qué sucede cuando el programador emite la instrucción STA (Store Accumulator)?

  1. El microprocesador activaría la señal de control WR (poniéndola a ‘0’) y desactivaría la señal de control RD (poniéndola a ‘1’).
  2. La dirección de memoria se coloca en el bus de direcciones y es aplicada al decodificador de direcciones del chip, que genera una única señal de habilitación para activar solamente uno de los registros de memoria.
  3. Los datos a escribir se colocan en el bus de datos y se almacenan en la ubicación de memoria seleccionada.

Dimensiones y Capacidad de la Memoria

La memoria se caracteriza por dos parámetros principales: su longitud (número total de ubicaciones) y su ancho (número de bits por ubicación).

La longitud es una función del número de líneas de dirección:

2^(Número de líneas de dirección) = Número de ubicaciones de memoria

Por ejemplo:

2^10 = 1.024 ubicaciones (1KB)

Un chip de memoria con 4KB de direcciones necesitaría log₂(4096) = 12 líneas de dirección.

Dejar un Comentario

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