El AY-3-8910 es un generador de sonido programable (PSG) de 3 voces diseñado por General Instrument (GI) en 1978, inicialmente para su uso con su CP1610 de 16 bits o una de las series PIC 1650 de microcomputadoras de 8 bits . El AY-3-8910 y sus variantes se utilizaron en muchos juegos de arcade ( el Gyruss de Konami contiene cinco [1]) y máquinas de pinball Bally, además de ser el chip de sonido en las consolas de videojuegos Intellivision y Vectrex , y en las computadoras hogareñas Amstrad CPC , Oric-1 , Colour Genie , Elektor TV Games Computer , MSX , Tiki 100 y más tarde ZX Spectrum . También se utilizó en las tarjetas de sonido Mockingboard y Cricket para Apple II y en el Speech/Sound Cartridge [2] para la TRS-80 Color Computer .
Después de que GI se deshiciera de Microchip Technology en 1987, el chip se vendió durante unos años bajo la marca Microchip. También fue fabricado bajo licencia por Yamaha (con un pin divisor de reloj seleccionable y una tabla de envolvente de volumen de doble resolución y doble frecuencia) como el YM2149F ; el Atari ST utiliza esta versión. Produce resultados muy similares al SN76489 de Texas Instruments y estuvo en el mercado durante un período similar.
Los chips ya no se fabrican, pero todavía se fabrican clones funcionalmente idénticos. Hay una descripción VHDL no oficial disponible de forma gratuita para su uso con FPGA .
El AY-3-8910 es una máquina de estados finitos simple . Su estado de dieciséis registros de 8 bits se programa en un bus de 8 bits (usado tanto para direccionamiento como para datos) alternando uno de los pines externos. Por ejemplo, un ciclo de configuración típico pone el bus en "modo de dirección" para seleccionar un registro y luego cambia a "modo de datos" para configurar el contenido de ese registro. Este bus se implementó de forma nativa en las propias CPU de GI, pero tuvo que ser recreado en lógica de unión o con la ayuda de un adaptador de interfaz adicional como el MOS Technology 6522 cuando el chip se usó con las mucho más comunes CPU MOS Technology 6502 o Zilog Z80 .
Seis registros controlan los tonos producidos en los tres canales principales. La frecuencia a generar se almacena en dos registros de 8 bits dedicados a cada canal, pero el valor está limitado a 12 bits por otras razones, para un total de 4095 (el valor del registro se utiliza como divisor de frecuencia y 0 se trata como 1) tonos diferentes. Otro registro controla el período de un generador de ruido pseudoaleatorio (un total de 31 tiempos de ciclo diferentes), mientras que otro controla la mezcla de este ruido en los tres canales principales.
El volumen del canal se controla mediante tres registros adicionales o activando o desactivando los controles de envolvente opcionales en ellos. Finalmente, los últimos tres registros controlan los tiempos del controlador de envolvente , estableciendo el tipo de envolvente y el tiempo de ciclo de la envolvente. Un total de ocho tipos de envolvente incluyen forma de diente de sierra o forma de triángulo, comenzando en el máximo o mínimo. La forma también se puede configurar para que se repita para un efecto cíclico. Se pueden configurar un total de 65535 tiempos de ciclo diferentes. Como solo hay una envolvente compartida entre los tres canales, muchos programadores la ignoraron y programaron sus propios controladores de envolvente en software (controlando el volumen directamente). Un truco bien conocido era ejecutar la envolvente de hardware en tiempos de ciclo superiores a 20 Hz para producir sonidos graves similares a ondas de diente de sierra o de triángulo.
Aunque sólo hay 16 registros, los cuatro bits MSB del bus de 8 bits deben configurarse con el valor predeterminado de fábrica '0000' al seleccionar un registro. La configuración incorrecta de los bits MSB hace que el chip ignore el cambio de registro. GI sí tomó pedidos de bits MSB personalizados (configurados de fábrica con un valor distinto de '0000'). Los chips fabricados con bits de registro MSB configurados de forma personalizada permiten que el mismo procesador controle más de un chip AY en el mismo bus (por ejemplo, TurboSound para ZX Spectrum). Hay muchos chips nuevos y antiguos (NOS) en el mercado secundario con bits MSB configurados de fábrica con un valor distinto de '0000'. El valor distinto de '0000' puede causar problemas de desarrollo importantes para los diseñadores y técnicos de reparación. Se debe escribir un software para identificar el valor correcto de los bits MSB en cualquier chip determinado. Además, se debe cambiar el software o agregar hardware para permitir que estos chips MSB configurados de fábrica se utilicen en lugar de los chips '0000' predeterminados.
El AY-3-8910 genera tonos con frecuencias fundamentales de hasta 125 kHz (reloj de entrada de 4 MHz o 6 MHz con el YM2149F), muy por encima del rango de audición humana y dentro del rango ultrasónico . La existencia de valores ultrasónicos es una consecuencia del diseño del divisor de frecuencia; para tener una resolución adecuada en frecuencias audibles es necesario que la frecuencia de reloj general (y, por lo tanto, la salida en divisores pequeños) sea considerablemente mayor que el rango audible. Solo los divisores por debajo de 5 dan frecuencias de salida completamente ultrasónicas. Las frecuencias equivalentes a la octava superior de un teclado de piano se pueden definir con una precisión razonable en comparación con los valores de nota aceptados para la escala de temperamento uniforme, con una precisión de casi 1 Hz en el rango A440 e incluso con mayor precisión en tonos más bajos. A pesar de la alta frecuencia máxima, la capacidad de dividir esa cifra por 4096 significa que la frecuencia de salida más baja directamente definible es 30,6 Hz, aproximadamente igual a B0, la tercera nota más baja en un piano normal de 88 teclas, y tan buena como subsónica con los sistemas de altavoces cotidianos. En esencia, el chip es capaz de producir una salida musical decente en todos los tonos razonables que se encuentran en la mayoría de las composiciones.
En cambio, el SN76489 solo tiene 10 bits de precisión para sus divisores de frecuencia. Teniendo la misma frecuencia base de 125 kHz, en teoría debería carecer de las dos octavas más bajas del PSG. Para solucionar esto, el SN76489 hace que sus generadores de tonos sean una octava más bajos que su frecuencia calculada, lo que le da una octava menos en los graves y una octava menos en los agudos en comparación con el PSG.
El chip de silicio 8910 se vendió en tres paquetes diferentes.
El AY-3-8910 tiene dos puertos de E/S paralelos de 8 bits de propósito general , A y B, y están disponibles en el paquete de 40 pines del mismo nombre.
El AY-3-8912 es el mismo chip en un encapsulado de 28 pines, con el puerto paralelo B simplemente sin conexión a ningún pin. Los encapsulados más pequeños ahorran costos y espacio en la placa. El 8912 fue la variante más utilizada.
El AY-3-8913 es el mismo chip en un encapsulado de 24 pines, con ambos puertos paralelos desconectados. Algunos usuarios pensaron que la pequeña reducción en el número de pines con respecto al 8912 lo hacía menos interesante; sin embargo, los diseñadores rara vez utilizaban los registros de E/S, por lo que GI creó esta alternativa de 24 pines completamente funcional y la lanzó aproximadamente 6 meses después de los chips 8910 y 8912. El objetivo era reducir la complejidad para el diseñador y reducir el espacio ocupado en la PCB.
El chip Yamaha YM2149F SSG (generador de sonido controlado por software) tiene la misma distribución de pines que el AY-3-8910, con la pequeña diferencia de que el pin 26 podría reducir a la mitad el reloj maestro si se baja. Si se deja sin conectar, como sucedería si se reemplaza un chip AY-3-8910, una resistencia interna eleva el pin, por lo que el reloj maestro no se reduce a la mitad.
El Yamaha YM3439 es una versión CMOS del YM2149F. Está disponible en dos paquetes: DIP de 40 pines (YM3439-D) y QFP de 44 pines (YM3439-F).
El Yamaha YMZ294 es una de las variantes más nuevas del YM2149, pero en un encapsulado de 18 pines. No tiene puertos paralelos y solo una salida de sonido con los tres canales mezclados.
El Yamaha YMZ284 es una variante aún más pequeña del YM2149, en un encapsulado de 16 pines. Es básicamente el YMZ294 sin el pin de selección de 4/6 MHz ni el pin /TEST.
El Yamaha YMZ285 tiene un paquete de 28 pines y cuenta con un PCM integrado. No tiene puertos paralelos y dos salidas de sonido: una con los tres canales SSG mezclados y otra con la salida PCM.
El Toshiba T7766A es un chip compatible que tiene el mismo pinout que el AY-3-8910 y se utilizó en algunos modelos MSX .
El Winbond WF19054 , el JFC 95101 y el File KC89C72 tienen la misma distribución de pines que el AY-3-8910 y también son 100 % compatibles con el software. Todavía se fabrican y se utilizan en muchas máquinas tragamonedas .
El AY-3-8914 tiene la misma distribución de pines y está en el mismo paquete de 40 pines que el AY-3-8910 , excepto que los registros de control en el chip están reorganizados y la "entrada esperada" en el pin A9 puede ser diferente. Se utilizó en la consola Intellivision de Mattel y en la computadora Aquarius .
El AY-3-8930 , también conocido como AY8930 , es una versión mejorada pero en su mayor parte compatible con versiones anteriores del AY-3-8910 . La función del pin BC2 ha cambiado (se ignora y se asume que es 0 independientemente del estado del pin), de lo contrario, la distribución de pines es la misma que la del AY-3-8910 . Esta variante del chip agrega una serie de mejoras importantes, como envolventes independientes para los tres canales (en lugar de una envolvente compartida), ciclos de trabajo variables, más bits de precisión para la frecuencia de las notas, el volumen y la frecuencia de la envolvente, y un generador de ruido mucho más configurable. Se utilizó en la tarjeta de sonido Covox Sound Master para IBM-PC. Muy pocos juegos lo aprovecharon más allá de las características normales del AY-3-8910 . Es posible que este chip solo haya sido producido por Microchip Technology .
Yamaha utilizó el núcleo YM2149 para producir toda una familia de chips de música que se utilizaron en teléfonos móviles, ordenadores domésticos, sistemas de videojuegos domésticos y arcade, etc. Por ejemplo, el YM2203 (también conocido como OPN) es básicamente un YM2149 con síntesis FM añadida, así como sus sucesores mucho más avanzados: el YM2608 (también conocido como OPNA) que conservaba todas las características anteriores y las ampliaba en gran medida, el YM2610 (OPNB) que añadía otras características y conservaba los canales de sonido del YM2149 pero no los puertos de E/S, y el YM2612 (también conocido como OPN2) que añadía algunas características pero eliminaba todas las demás, incluidos los canales de sonido y los puertos de E/S del YM2149.