# Unibus

Unibus fue el primero de varios buses de ordenador y diseños de backplane usados en los PDP-11 y en los sistemas VAX iniciales fabricados por la empresa Digital Equipment Corporation (DEC) de Maynard, Massachusetts. El Unibus se desarrolló hacia 1969 por Gordon Bell y el estudiante Harold McFarland mientras estaba en la Universidad Carnegie Mellon.
El nombre se refiere a la naturaleza unificada del bus: Unibus se utilizó tanto como bus de sistema para comunicar la unidad central de procesamiento con la memoria principal, como bus de periféricos para permitir a los periféricos enviar y recibir datos. La unificación de estos buses que antes estaban separados permitía que los dispositivos externos realizaran fácilmente el acceso directo a la memoria (DMA) y facilitó el desarrollo de controladores de dispositivos, ya que el control y el intercambio de datos se manejaban a través de operaciones de E/S mapeadas en memoria.
Unibus físicamente era grande, lo que llevó a la introducción de Q-bus, que multiplexó algunas de las señales para reducir el número de pines. Los sistemas PDP de mayor rendimiento utilizaban Fastbus, que básicamente son dos buses Unibus en uno. Posteriormente, el sistema fue reemplazado por Massbus, un bus dedicado de E/S introducido en el VAX y en los últimos modelos de PDP-11.

## Especificaciones técnicas

El Unibus consta de 72 señales, generalmente conectadas a través de dos ranuras de expansión de 36 vías en cada placa de circuito impreso. Al no contarse las líneas de alimentación y de tierra se le denomina habitualmente como bus de 56 líneas. Puede aparecer dentro de un backplane o montado en un cable. Se pueden conectar hasta 20 nodos (dispositivos) a un segmento Unibus; se pueden conectar segmentos adicionales usando un repetidor de bus.
El bus es completamente asíncrono, lo que permite combinar dispositivos rápidos y lentos. También permite la solapación del arbitraje (selección del siguiente maestro de bus) mientras el maestro de bus actual todavía está realizando transferencias de datos. Las 18 líneas de direccionamiento permiten direccionar un máximo de 256 KB. Normalmente, los 8 KB superiores se reservan para los registros de los dispositivos de E/S mapeados en memoria utilizados en la arquitectura PDP-11.
El diseño minimiza deliberadamente la cantidad de lógica redundante requerida en el sistema. Por ejemplo, un sistema siempre contiene más dispositivos esclavos que dispositivos maestros, por lo que la mayor parte de la lógica compleja requerida para implementar las transferencias de datos asíncronas se fuerza a que esté en los relativamente pocos dispositivos maestros. Para las interrupciones, solo el procesador de servicio de interrupciones (interrupt-fielding processor) debe contener la lógica de temporización compleja. El resultado final es que la mayoría de los controladores de E/S se pueden implementar con lógica simple, y la mayor parte de la lógica crítica se implementa como un circuito integrado MSI hecho a medida.

## Pinout

| Número | Nombre | Tipo | Descripción |
| 18 | A00-A17 | 1 | Líneas de dirección |
| 16 | D00-D15 | 1 | Líneas de datos |
| 4 | BR4-BR7 | 1 | Solicitudes de (interrupción) de bus para las prioridades 4 (más baja) a 7 (más alta) |
| 4 | BG4-BG7 | 2 | Concesiones de (interrupción) de bus para las prioridades 4 (más baja) a 7 (más alta) |
| 1 | NPR | 1 | Solicitud (de DMA) sin procesador |
| 1 | NPG | 2 | Concesión (de DMA) sin procesador |
| 1 | MSYNC | 1 | Sincronización de maestro |
| 1 | SSYNC | 1 | Sincronización de esclavo |
| 1 | BBSY | 1 | Bus ocupado |
| 1 | SACK | 1 | Reconocimiento de selección |
| 1 | INIT | 1 | Inicialización de bus |
| 1 | INTR | 1 | Solicitud de interrupción |
| 1 | PA | 1 | Control de paridad |
| 1 | PB | 1 | Control de paridad |
| 2 | C0-C1 | 1 | Líneas de control |
| 1 | ACLO | 3 | AC bajo |
| 1 | DCLO | 3 | DC bajo |
| 2 | + 5v | - | Líneas de alimentación (no se cuentan como parte de las 56) |
| 14 | Gnd | - | Líneas de tierra (no se cuentan como parte de las 56) |
Las líneas de tipo 1 son un bus normal multi-transmisor con cableado OR y con resistencias pull-up en cada extremo del bus, habitualmente en una tarjeta de terminación.
Las líneas de tipo 2 se propagan de forma selectiva por cada tarjeta a la siguiente ranura; si la tarjeta quiere mantener la concesión de solicitud, activará la línea SACK y no propagará la solicitud a la siguiente ranura. Si una ranura está vacía, es necesario instalar una "tarjeta de concesión de continuidad" en la ranura para propagar las cuatro señales de tipo 2 a la siguiente tarjeta.
Las señales de tipo 3 se generan por la fuente de alimentación y tienen un solo emisor. Estas líneas avisan a los dispositivos en el bus cuando la energía va a fallar para que esos dispositivos puedan ejecutar un apagado ordenado y deshabilitar operaciones para evitar escrituras falsas.
Las líneas de control (C0 y C1) permiten seleccionar uno de los cuatro ciclos de transferencia de datos diferentes:
* DATI (Data In, una lectura)
* DATIP (Data In/Pause, la primera parte de una operación de lectura y modificación y posterior escritura de dato. Un ciclo de operación de escritura DATO o DATOB completa a esta.)
* DATO (Data Out, escritura de una palabra)
* DATOB (Data Out/Byte, escritura de un byte)
* Durante un ciclo de interrupción, se invocaba automáticamente un quinto estilo de transferencia para transmitir un vector de interrupción desde el dispositivo de interrupción al procesador de servicio de interrupciones (interrupt-fielding processor) .