Contador de programa de 8 bits (PC)
Descripción general
- Propósito: El contador de programa de 8 bits (PC) es un registro especializado que contiene la dirección de memoria de la siguiente instrucción a buscar y ejecutar en una CPU. Se incrementa automáticamente después de cada búsqueda de instrucción para apuntar a la instrucción subsiguiente, o puede cargarse con una nueva dirección durante saltos y ramificaciones.
- Símbolo: El contador de programa se representa mediante un bloque rectangular con entradas para reloj, datos de carga, incremento, habilitación de carga, reinicio y habilitación de salida, con una salida de dirección de 8 bits.
- Rol en DigiSim.io: Sirve como componente crítico en los diseños de CPU, controlando el flujo de ejecución del programa al proporcionar la dirección para las búsquedas de instrucciones y permitiendo patrones de ejecución secuencial y no secuencial.

Descripción funcional
Comportamiento lógico
El contador de programa mantiene y actualiza la dirección de la siguiente instrucción a ejecutar. Puede incrementarse secuencialmente, cargar una nueva dirección para saltos y ramificaciones, o mantener su valor actual según las señales de control.
Tabla de funciones:
| RST | LD | INC | CLK | OE | Operación | Salida A0-A7 |
|---|---|---|---|---|---|---|
| 1 | X | X | X | X | Reinicio a cero | Alta-Z |
| 0 | 1 | X | ↑ | 1 | Cargar nueva dirección | Datos D0-D7 |
| 0 | 1 | X | ↑ | 0 | Cargar nueva dirección | Alta-Z |
| 0 | 0 | 1 | ↑ | 1 | Incrementar | Dirección + 1 |
| 0 | 0 | 1 | ↑ | 0 | Incrementar | Alta-Z |
| 0 | 0 | 0 | ↑ | 1 | Mantener valor actual | Dirección actual |
| 0 | 0 | 0 | ↑ | 0 | Mantener valor actual | Alta-Z |
| X | X | X | 0 | X | Sin cambio | Estado anterior |
Nota: ↑ representa un flanco de subida del reloj, X representa una condición "no importa" RST es asíncrono - cuando está activo, reinicia inmediatamente el contador independientemente de otras señales OE controla las salidas de tres estados - cuando está inactivo (0), todas las salidas pasan a estado Alta-Z
Entradas y salidas
Entradas:
- D0-D7[7:0]: Entradas de datos de 8 bits para cargar una nueva dirección durante saltos o ramificaciones.
- CLK: Entrada de reloj de 1 bit que sincroniza las operaciones del contador.
- LD: Entrada de habilitación de carga de 1 bit que permite la carga desde las entradas de datos cuando está activa.
- RST: Entrada de reinicio de 1 bit que reinicia el contador a 0x00 cuando está activa.
- INC: Entrada de habilitación de incremento de 1 bit que activa una operación de incremento cuando está activa.
- OE: Entrada de habilitación de salida de 1 bit que controla las salidas de tres estados.
Salidas:
- A0-A7[7:0]: Salidas de dirección de 8 bits que se conectan al bus de direcciones de memoria (tres estados controlados por OE).
Disposición de pines
Pines de entrada (lado izquierdo):
- Pines 0-7: D0-D7 (Entradas de datos para carga paralela)
- Pin 8: CLK (Reloj - sincroniza todas las operaciones)
- Pin 9: LD (Habilitación de carga - habilita la carga de datos paralela)
- Pin 10: RST (Reinicio - reinicia asíncronamente el contador a 0x00)
- Pin 11: INC (Habilitación de incremento - habilita el incremento del contador)
- Pin 12: OE (Habilitación de salida - controla las salidas de tres estados)
Pines de salida (lado derecho):
- Pines 0-7: A0-A7 (Salidas de dirección al bus de memoria)
Parámetros configurables
- Valor de reinicio: El valor al que se reinicia el PC (típicamente 0x00).
- Sensibilidad al flanco de reloj: Si el PC opera en flancos de subida o bajada del reloj.
- Control de tres estados: Cómo la señal de habilitación de salida controla los controladores de salida.
- Retardo de propagación: El tiempo que tardan las salidas en cambiar después de un evento de disparo.
Representación visual en DigiSim.io
El contador de programa de 8 bits se muestra como un bloque rectangular con las entradas etiquetadas en el lado izquierdo (D0-D7, CLK, LD, RST, INC, OE) y las salidas (A0-A7) en el lado derecho. La entrada de reloj está típicamente marcada con un símbolo de triángulo que indica sensibilidad al flanco. Cuando se conecta en un circuito, el componente indica visualmente su estado actual a través del valor de dirección mostrado en sus salidas y los cambios de color en los cables de conexión.
Valor educativo
Conceptos clave
- Control de flujo del programa: Demuestra cómo las computadoras gestionan la secuencia de ejecución de instrucciones.
- Direccionamiento: Ilustra el concepto de direccionamiento de memoria en sistemas informáticos.
- Señales de control: Muestra cómo las señales digitales controlan el comportamiento de los circuitos secuenciales.
- Arquitectura de Von Neumann: Introduce un componente fundamental de las computadoras con programa almacenado.
- Lógica secuencial: Demuestra la aplicación práctica de registros y contadores.
Objetivos de aprendizaje
- Comprender el papel del contador de programa en el ciclo de instrucción de una CPU.
- Aprender cómo se implementa el flujo de programa secuencial y no secuencial (saltos, ramificaciones).
- Reconocer cómo las señales de control coordinan la operación del contador de programa con otros componentes de la CPU.
- Aplicar los conceptos del contador de programa en el diseño de arquitecturas de CPU simples.
- Comprender las limitaciones del espacio de direcciones basadas en el ancho de bits (PC de 8 bits = 256 ubicaciones direccionables).
Ejemplos de uso/Escenarios
- Diseño básico de CPU: Componente central en una arquitectura de procesador mínima.
- Secuenciación de instrucciones: Controlar el orden de ejecución de instrucciones.
- Implementación de saltos: Cambiar el flujo del programa para ejecutar instrucciones fuera de secuencia.
- Llamadas a subrutinas: Guardar la dirección actual antes de saltar a una subrutina.
- Implementación de bucles: Ejecutar repetidamente una secuencia de instrucciones.
- Manejo de interrupciones: Redirigir temporalmente el flujo del programa para atender interrupciones.
Notas técnicas
- Un PC de 8 bits limita la memoria directamente direccionable a 256 bytes (2^8 ubicaciones).
- El PC se implementa típicamente usando un registro de 8 bits combinado con un circuito incrementador.
- En la mayoría de los diseños de CPU, el PC se incrementa automáticamente durante la fase de búsqueda de instrucción.
- Las instrucciones de salto y ramificación modifican el flujo secuencial normal cargando nuevos valores en el PC.
- El valor del PC se coloca típicamente en el bus de direcciones durante la fase de búsqueda del ciclo de instrucción.
- Las implementaciones más avanzadas pueden incluir características como predicción de saltos o segmentación para mejorar el rendimiento.
- En arquitecturas de CPU más grandes, se usan PCs con anchos de bits más amplios (16, 32, 64) para direccionar espacios de memoria más grandes.
Componentes relacionados
- Memoria (RAM/ROM): Almacena las instrucciones que el PC direcciona.
- Bus de direcciones: El bus controlado por la salida del PC.
- Registro de instrucción (IR): Almacena la instrucción buscada desde la dirección apuntada por el PC.
- Unidad de control: Genera las señales INC, LOAD, ENABLE, RESET para el PC basándose en las instrucciones decodificadas.
- ALU: Puede calcular direcciones de destino de ramificación que se cargan en el PC.
- Registros: Los registros de propósito general pueden contener direcciones para saltos indirectos.