El Original Chip Set ( OCS ) es un conjunto de chips utilizado en las primeras computadoras Commodore Amiga y que definió las capacidades gráficas y de sonido de Amiga. Fue reemplazado por el ligeramente mejorado Enhanced Chip Set (ECS) y la muy mejorada Advanced Graphics Architecture (AGA).
El chipset original apareció en los modelos Amiga fabricados entre 1985 y 1990: Amiga 1000 , Amiga 2000 , Amiga CDTV y Amiga 500 .
El chipset que le dio al Amiga sus características gráficas únicas consta de tres chips "personalizados" principales: Agnus , Denise y Paula . Tanto el chipset original como el chipset mejorado fueron fabricados utilizando tecnología lógica NMOS por la subsidiaria de fabricación de chips de Commodore , MOS Technology . Según Jay Miner , el chipset OCS se fabricó en un proceso de fabricación de 5 μm, mientras que AGA Lisa se implementó en un proceso de 1,5 μm. Los tres chips personalizados se empaquetaron originalmente en DIP de 48 pines; las versiones posteriores de Agnus, conocidas como Fat Agnus, se empaquetaron en un PLCC de 84 pines .
Agnus es el chip central del diseño. Controla todo el acceso a la RAM del chip tanto desde el procesador central 68000 como desde los otros chips personalizados, utilizando un complicado sistema de prioridades. Agnus incluye subcomponentes conocidos como blitter (transferencia rápida de datos en la memoria sin la intervención del procesador) y Copper (coprocesador sincronizado con vídeo). El Agnus original puede direccionar 512 KB de RAM del chip. Las revisiones posteriores, denominadas "Fat Agnus", añadieron 512 KB de RAM pseudo-rápida, que para ECS se cambió a 1 MB (a veces llamado "Fatter Agnus") y posteriormente a 2 MB de RAM del chip.
Denise es el procesador de vídeo principal. Sin utilizar overscan , la pantalla gráfica del Amiga tiene 320 o 640 píxeles de ancho por 200 ( NTSC ) o 256 ( PAL ) píxeles de alto. Denise también admite entrelazado , que duplica la resolución vertical, a costa de un parpadeo intrusivo en los monitores típicos de esa época. Se utilizan gráficos de mapa de bits planos , que dividen los bits individuales por píxel en áreas separadas de memoria, llamadas planos de bits . En funcionamiento normal, Denise permite entre uno y cinco planos de bits, lo que da de dos a 32 colores únicos. Estos colores se seleccionan de una paleta de 4096 colores (cuatro bits por componente RGB ). Un sexto plano de bits está disponible para dos modos de vídeo especiales: modo Halfbrite y modo Hold-And-Modify (HAM). Denise también admite ocho sprites , desplazamiento de un solo píxel y un modo de "campo de juego dual". Denise también maneja la entrada del ratón y el joystick digital.
Paula es principalmente el chip de audio, con cuatro canales de sonido PCM de 8 bits independientes mezclados por hardware , cada uno de los cuales admite 65 niveles de volumen (desde ningún sonido hasta el volumen máximo) y velocidades de salida de forma de onda desde aproximadamente 20 muestras por segundo hasta casi 29.000 muestras por segundo. Paula también maneja interrupciones y varias funciones de E/S , incluida la unidad de disquete , el puerto serie y los joysticks analógicos .
Hay muchas similitudes, tanto en la funcionalidad general como en la división de la funcionalidad en los tres chips componentes, entre el chipset OCS y el chipset mucho anterior y más simple de las computadoras Atari de 8 bits , que consta de los chips ANTIC , GTIA y POKEY ; ambos chipsets fueron diseñados conceptualmente por Jay Miner , lo que explica la similitud.
El chip Agnus controla en general el funcionamiento de todo el conjunto de chips. Todas las operaciones están sincronizadas con la posición del haz de vídeo. Esto incluye el acceso a la RAM integrada , conocida como RAM del chip porque el conjunto de chips tiene acceso a ella. Tanto el procesador central 68000 como otros miembros del conjunto de chips tienen que arbitrar el acceso a la RAM del chip a través de Agnus . En términos de arquitectura informática, esto se denomina Acceso directo a memoria (DMA), donde Agnus es el Controlador DMA (DMAC).
Agnus tiene una política de acceso a memoria compleja y basada en prioridades que intenta coordinar mejor las solicitudes de acceso a memoria entre recursos en competencia. Por ejemplo, las recuperaciones de datos de bitplane tienen prioridad sobre las transferencias de blitter, ya que la visualización inmediata de los datos del búfer de trama se considera más importante que el procesamiento de la memoria por parte del blitter. Agnus también intenta ordenar los accesos de tal manera que se superpongan los ciclos del bus de la CPU con los ciclos de DMA. Como el procesador 68000 original de los Amigas tendía a acceder a la memoria solo en cada segundo ciclo de memoria disponible, Agnus opera un sistema en el que los ciclos de acceso a memoria "impares" se asignan primero y según sea necesario al DMA del chip personalizado de tiempo crítico mientras los ciclos restantes están disponibles para la CPU, por lo que la CPU generalmente no se bloquea y no parece ralentizarse. Sin embargo, el acceso a chips personalizados que no son críticos en cuanto al tiempo, como las transferencias de blitter , pueden utilizar todos los ciclos pares o impares disponibles y, si se establece el indicador "BLITHOG" (acaparador de blitter), Agnus puede bloquear los ciclos pares de la CPU en deferencia al blitter .
Los tiempos de Agnus se miden en "relojes de color" de 280 ns . Esto equivale a dos píxeles de baja resolución (140 ns) o cuatro píxeles de alta resolución (70 ns). Al igual que Denise, estos tiempos se diseñaron para su visualización en televisores domésticos y se pueden sincronizar con una fuente de reloj externa.
El blitter es un subcomponente de Agnus. "Blit" es la abreviatura de "transferencia de imagen de bloque" o bit blit . El blitter es una unidad de transferencia de memoria y operación lógica altamente paralela. Tiene tres modos de operación: copia de bloques de memoria, relleno de bloques (por ejemplo, relleno de polígonos) y dibujo de líneas.
El blitter permite copiar rápidamente la memoria de vídeo, lo que significa que la CPU puede liberarse para otras tareas. El blitter se utilizaba principalmente para dibujar y volver a dibujar imágenes gráficas en la pantalla, llamadas "bobs", abreviatura de "objetos blitter".
El modo de copia de bloques del blitter toma de cero a tres fuentes de datos en la memoria, llamadas A, B y C, realiza una función booleana programable en las fuentes de datos y escribe el resultado en un área de destino, D. Cualquiera de estas cuatro áreas puede superponerse. El blitter se ejecuta desde el inicio del bloque hasta el final, conocido como modo "ascendente", o a la inversa, modo "descendente".
Los bloques son "rectangulares"; tienen un "ancho" en múltiplos de 16 bits, una altura medida en "líneas" y una distancia de "paso" para moverse desde el final de una línea a la siguiente. Esto permite que el blitter funcione en cualquier resolución de video de hasta 1024 × 1024 píxeles. [1] La copia realiza automáticamente una operación lógica por píxel. Estas operaciones se describen de forma genérica utilizando minterms . Esto se utiliza más comúnmente para hacer copias directas (D = A) o aplicar una máscara de píxeles alrededor de objetos bliteados (D = (C Y B) O A). La copia también puede desplazar cada línea en barril de 0 a 15 píxeles. Esto permite que el blitter dibuje en desplazamientos de píxeles que no son exactamente múltiplos de 16.
Estas funciones permiten que Amiga mueva ventanas GUI por la pantalla rápidamente, ya que cada una está representada en el espacio de memoria gráfica como un bloque rectangular de memoria que puede desplazarse a cualquier ubicación de memoria de pantalla requerida a voluntad.
El modo de línea del blitter dibuja líneas gruesas de un solo píxel utilizando el algoritmo de línea de Bresenham . También puede aplicar un patrón repetitivo de 16 bits a la línea. El modo de línea también se puede utilizar para dibujar cuerpos celestes rotados: cada línea de datos de cuerpos celestes se utiliza como patrón de línea, mientras que el modo de línea dibuja el cuerpo celeste inclinado línea por línea.
El modo de relleno del blitter se utiliza para rellenar espacios horizontales por línea. En cada espacio, lee cada píxel por turno, de derecha a izquierda. Siempre que lee un píxel determinado, activa o desactiva el modo de relleno. Cuando el modo de relleno está activado, fija cada píxel hasta que se desactiva el modo de relleno o hasta que finaliza la línea. Juntos, estos modos permiten al blitter dibujar polígonos individuales sombreados en plano. Los Amigas posteriores tendían a utilizar una combinación de una CPU más rápida y un blitter para muchas operaciones.
El Copper es otro subcomponente de Agnus. El nombre es la abreviatura de "coprocesador". El Copper es una máquina de estados finitos programable que ejecuta un flujo de instrucciones programado, sincronizado con el hardware de video.
Cuando está encendido, el Copper tiene tres estados: leyendo una instrucción, ejecutándola o esperando una posición específica del haz de video. El Copper ejecuta un programa llamado lista Copper en paralelo con la CPU principal . El Copper se ejecuta en sincronía con el haz de video y se puede utilizar para realizar varias operaciones que requieren sincronización de video. Lo más común es que se use para controlar la salida de video, pero puede escribir en la mayoría de los registros del chipset y, por lo tanto, se puede usar para iniciar blits, configurar registros de audio o interrumpir la CPU.
La lista Copper tiene tres tipos de instrucciones, cada una de las cuales es un par de dos bytes, cuatro bytes en total:
La longitud del programa de lista Copper está limitada por el tiempo de ejecución. Copper reinicia la ejecución de la lista Copper al comienzo de cada nuevo fotograma de video. No hay una instrucción de "fin" explícita; en su lugar, se utiliza la instrucción WAIT para esperar una ubicación a la que nunca se llega.
En circunstancias normales, el Amiga genera sus propios tiempos de vídeo, pero Agnus también permite sincronizar el sistema con una señal externa para lograr el genlocking con hardware de vídeo externo. También hay una salida de 1 bit en este conector que indica si el Amiga está emitiendo color de fondo o no, lo que permite una fácil superposición del vídeo del Amiga sobre el vídeo externo. Esto hizo que el Amiga fuera particularmente atractivo como generador de caracteres para titular vídeos y trabajos de retransmisión, ya que evitaba el uso y el gasto de unidades de A/B roll y croma key que serían necesarias sin el soporte de genlock. El soporte de capacidades de overscan, entrelazado y genlocking, y el hecho de que el tiempo de visualización fuera muy cercano a los estándares de retransmisión (NTSC o PAL), hicieron del Amiga el primer ordenador ideal para fines de vídeo y, de hecho, se utilizó en muchos estudios para digitalizar datos de vídeo (a veces llamado frame-grabbing), subtitular y noticias de vídeo interactivas.
Denise está programada para obtener datos de video planar de uno a cinco planos de bits y traducirlos en una búsqueda de color . El número de planos de bits es arbitrario, por lo tanto, si no se necesitan 32 colores, se pueden usar 2, 4, 8 o 16 en su lugar. El número de planos de bits (y la resolución) se puede cambiar sobre la marcha, generalmente mediante el Copper. Esto permite un uso muy económico de la RAM y un equilibrio entre la velocidad de procesamiento de la CPU y la sofisticación gráfica cuando se ejecuta desde la RAM del chip (ya que los modos más allá de 4 bpp en lores o 2 bpp en hires usan canales DMA adicionales que pueden ralentizar o detener temporalmente la CPU además de los canales no conflictivos habituales). También puede haber un sexto plano de bits, que se puede usar en tres modos gráficos especiales:
Hay dos resoluciones de gráficos horizontales, "lowres" con píxeles de 140 ns y "hires" con píxeles de 70 ns, con un valor predeterminado de 320 o 640 píxeles horizontales de ancho sin utilizar overscan. Como la salida de píxeles está regulada por el reloj del sistema principal, que se basa directamente en el reloj de ráfaga de color NTSC, estos tamaños casi llenan el ancho de un televisor estándar con solo un borde de "underscan" delgado entre los gráficos y el borde de la pantalla en comparación con muchos otros ordenadores domésticos contemporáneos, para una apariencia más cercana a una consola de juegos pero con detalles más finos. Además de esto, Denise admite overscan razonablemente extenso; Técnicamente, se pueden especificar modos con datos suficientes para hasta 400 u 800 píxeles (+25%), aunque esto solo es realmente útil para el desplazamiento y los efectos especiales que involucran la visualización parcial de gráficos grandes, ya que se cumple un límite de hardware separado en 368 (o 736) píxeles, que es el máximo que cabe entre el final de un período de borrado y el comienzo del siguiente, aunque es poco probable que incluso esta cantidad de píxeles sea visible en cualquier pantalla que no sea un monitor dedicado que permita el ajuste del ancho de escaneo horizontal, ya que gran parte de la imagen, por diseño, desaparecerá sin problemas detrás del bisel de la pantalla (o, en las pantallas LCD, se recortará en el borde del panel). [4] [5] Debido a la estructura altamente regular de la sincronización del Amiga en relación con las líneas de exploración y la asignación de recursos DMA a varios usos además de los gráficos normales del "campo de juego", el aumento de la resolución horizontal también es una compensación entre la cantidad de píxeles y la cantidad de sprites de hardware disponibles, ya que aumentar las ranuras DMA dedicadas al video del campo de juego termina robando algo (de 1 a 7 del total de 8) del motor de sprites.[1].
La resolución vertical, sin sobreescaneo, es de 200 píxeles para un Amiga NTSC de 60 Hz o de 256 para un Amiga PAL de 50 Hz. Esta resolución se puede duplicar utilizando una pantalla entrelazada y, al igual que con la resolución horizontal, se puede aumentar utilizando sobreescaneo, hasta un máximo de 241 (o 483) para NTSC y 283 (o 567) para PAL (los modos entrelazados ganan una línea adicional como máximo, lo que se determina por la cantidad de líneas que se toman del total disponible mediante el borrado y la sincronización, y las líneas de escaneo totales en los modos no entrelazados son la mitad de las cuentas entrelazadas originales, de número impar, de especificación de transmisión, redondeadas hacia abajo).
A partir de ECS, Denise se actualizó para admitir el modo "Productividad", que permitía una resolución de 640 x 400 sin entrelazado, aunque solo con 4 colores.
Denise puede componer hasta ocho sprites de 16 píxeles de ancho por línea de escaneo (en modo automático) en la parte superior, inferior o entre los campos de juego, y detectar colisiones entre sprites y los campos de juego o entre sprites. Estos sprites tienen tres colores visibles y un color transparente. Opcionalmente, se pueden "unir" pares adyacentes de sprites para formar un solo sprite de 15 colores. El DMA de Sprites lee datos para formar un canal de sprites controlado por sus registros, lo que permite la reutilización vertical de sprites. Tiene que haber una línea de escaneo vacía entre dos entradas de lista sucesivas para permitir la actualización de los datos de sprites. Usando manipulaciones de registros de CPU o Copper, cada canal de sprites se puede reutilizar varias veces en un solo cuadro para aumentar el total de sprites por cuadro. Los registros de posición de sprites también se pueden cambiar durante una línea de escaneo, lo que aumenta el número total de sprites en una sola línea de escaneo. Sin embargo, los datos de sprites , o forma, solo se obtienen una sola vez por línea de escaneo y no pueden cambiar. El primer juego de Amiga que utilizó los registros de reposicionamiento de sprites durante una línea de escaneo fue Hybris, lanzado en 1988.
El chip Denise no admite un modo de texto dedicado. [6]
Finalmente, Denise junto a los CIAs es responsable de manejar las entradas X/Y del mouse/joystick.
La idea de que Denise obtiene datos del plano de bits y de los sprites es una simplificación. Es Agnus quien mantiene los contadores de posición de pantalla horizontal y vertical e inicia las operaciones de lectura de la DRAM. Denise tiene una serie de registros del plano de bits que contienen 16 bits de datos cada uno, lo suficiente para dibujar 16 píxeles. Cuando Agnus emite una escritura en el registro 1, todos los registros se transfieren a registros de desplazamiento separados desde los cuales se generan píxeles (al mismo tiempo que se cargan nuevos valores desde la DRAM). Denise tampoco tiene conocimiento de ninguna dirección de memoria.
El chip Paula, diseñado por Glenn Keller, de MOS Technology , es el controlador de interrupciones , pero también incluye lógica para la reproducción de audio, control de la unidad de disquete, entrada/salida del puerto serie y señales de dos y tres botones del ratón/joystick. La lógica se mantuvo funcionalmente idéntica en todos los modelos Amiga de Commodore.
Paula tiene cuatro canales de sonido PCM de 8 bits controlados por DMA . Dos canales de sonido se mezclan en la salida de audio izquierda y los otros dos se mezclan en la salida derecha, lo que produce una salida de audio estéreo . El único formato de muestra de hardware compatible es el complemento a dos lineal con signo de 8 bits . Cada canal de sonido tiene una frecuencia independiente y un control de volumen de 6 bits (64 niveles). Internamente, el hardware de audio se implementa mediante cuatro máquinas de estado, cada una con ocho estados diferentes.
Además, el hardware permite que un canal de un par de canales module el período o la amplitud del otro canal. En Amiga, esto rara vez se utiliza porque tanto la frecuencia como el volumen se pueden controlar de mejor manera, pero se podría utilizar para lograr diferentes tipos de trémolo y vibrato , e incluso efectos de síntesis FM rudimentarios.
El audio se puede reproducir mediante dos métodos. La mayoría de las veces, se utiliza audio controlado por DMA. Como se explicó en la discusión de Agnus, se prioriza el acceso a la memoria y hay una ranura DMA por línea de escaneo disponible para cada uno de los cuatro canales de sonido. En una pantalla NTSC o PAL normal, la reproducción de audio DMA está limitada a una velocidad de salida máxima de 28.867 valores por canal (PAL: 28.837) por segundo, lo que suma un total de 57.674 (PAL: 57.734) valores por segundo en cada salida estéreo. Esta velocidad se puede aumentar con los conjuntos de chips ECS y AGA utilizando un modo de video con una velocidad de escaneo horizontal más alta .
Alternativamente, Paula puede indicar a la CPU que cargue una nueva muestra en cualquiera de los cuatro buffers de salida de audio generando una interrupción cuando se necesita una nueva muestra. Esto permite velocidades de salida que superan los 57 kHz por canal y aumenta la cantidad de voces posibles (sonidos simultáneos) mediante la mezcla de software.
El Amiga contiene un filtro de paso bajo analógico ( filtro de reconstrucción ) que es externo a Paula. El filtro es un filtro de paso bajo Butterworth de 12 dB/oct a aproximadamente 3,3 kHz. El filtro solo se puede aplicar globalmente a los cuatro canales. En los modelos posteriores al Amiga 1000 (excluyendo la primera revisión del Amiga 500), el brillo del LED de encendido se utiliza para indicar el estado del filtro. El filtro está activo cuando el LED tiene un brillo normal y se desactiva cuando se atenúa (en los primeros modelos del Amiga 500, el LED se apagaba por completo). Los modelos lanzados antes del Amiga 1200 también tienen un filtro de paso bajo estático de tipo "perilla de tono" que se activa independientemente del "filtro LED" opcional. Este filtro es un filtro de paso bajo de 6 dB/oct con una frecuencia de corte de 4,5 o 5 kHz.
Posteriormente se desarrolló una técnica de software que puede reproducir audio de 14 bits combinando dos canales configurados a diferentes volúmenes. Esto da como resultado dos canales de 14 bits en lugar de cuatro canales de 8 bits. Esto se logra reproduciendo el byte alto de una muestra de 16 bits al volumen máximo y el byte bajo al volumen mínimo (ambos rangos se superponen, por lo que el byte bajo debe desplazarse dos bits hacia la derecha). La operación de desplazamiento de bits requiere una pequeña cantidad de CPU o sobrecarga de blitter, mientras que la reproducción convencional de 8 bits está controlada casi en su totalidad por DMA. Esta técnica se incorporó al subsistema de audio redireccionable AHI , lo que permite que las aplicaciones compatibles utilicen este modo de forma transparente.
El controlador de disquete es inusualmente flexible. Puede leer y escribir secuencias de bits sin procesar directamente desde y hacia el disco a través de DMA o E/S programada a 500 ( doble densidad ) o 250 kbit/s ( densidad simple o GCR). MFM o GCR eran los dos formatos más utilizados, aunque en teoría se podía utilizar cualquier código limitado en longitud de ejecución . También proporciona una serie de características convenientes, como la sincronización en palabra (en la codificación MFM, se utiliza normalmente $4489 como palabra de sincronización ). La codificación/decodificación MFM se realiza normalmente con el blitter: una pasada para la decodificación, tres pasadas para la codificación. Normalmente, la pista completa se lee o escribe de una sola vez, en lugar de sector por sector; esto hizo posible deshacerse de la mayoría de los huecos entre sectores que la mayoría de los formatos de disquete necesitan para evitar de forma segura el "sangrado" de un sector escrito en el encabezado previamente existente del siguiente sector debido a las variaciones de velocidad de la unidad. Si todos los sectores y sus encabezados se escriben siempre de una sola vez, este sangrado solo es un problema al final de la pista (que aún no debe sangrar hacia el principio), de modo que solo se necesita un espacio por pista. De esta manera, para el formato de disco nativo de Amiga, la capacidad de almacenamiento en bruto de los discos DD de 3,5 pulgadas se incrementó de los 720 KB típicos a 880 KB, aunque el sistema de archivos menos que ideal de los modelos anteriores de Amiga redujo esto nuevamente a aproximadamente 830 KB de datos de carga útil reales.
Además del formato de disco nativo de 3,5 pulgadas y 880 KB, el controlador puede manejar muchos formatos extranjeros, como:
El Amiga 3000 introdujo una unidad de disquete especial de doble velocidad que también permitía el uso de discos de alta densidad con doble capacidad sin ningún cambio en el controlador de disquete de Paula.
El puerto serial es rudimentario, utiliza solo entrada/salida programada y no tiene un buffer FIFO . Sin embargo, se puede seleccionar prácticamente cualquier velocidad de bits, incluidas todas las velocidades estándar, la velocidad MIDI y velocidades personalizadas extremadamente altas.