Ricoh 2A03 y 2A07

El Ricoh 2A03 o RP2A03 es una CPU de 8 bits, famosa por ser la escogida para equipar la videoconsola Nintendo Family Computer / Nintendo Entertainment System. Contiene un núcleo MOS Technology 6502 licenciado por Ricoh. Se diferencia de 6502 estándar en que sólo puede operar con enteros, se le añaden 22 registros mapeados en memoria que controlan generadores de sonido programables, una rudimentaria DMA y leían los mandos de juegos. Los equipos vendidos en zonas PAL (Europa y Australia, principalmente) usan las CPU Ricoh 2A07 o RP2A07, idénticos al 2A03, excepto porque usan un divisor diferente del reloj y una tabla de frecuencias de la CPU diferentes. En todos los casos vienen en un encapsulado DIP de 40 pines.

Ricoh 2A03 y 2A07
Información
Tipo integrated circuit model
Desarrollador MOS Technology
Fabricante Ricoh
Datos técnicos
Frecuencia de reloj de CPU 1,79 MHz (NTSC)
1,66 MHz (PAL)
Conjunto de instrucciones MOS 6502

La CPU en NTSC funciona a una frecuencia de reloj de 1,79 MHz, mientras que su variante PAL funciona más lento, a una frecuencia de 1,66 MHz, con unos "ajustes" en el sonido para que no suene a una velocidad inferior que la versión americana y japonesa.

Historia

Cuando el ingeniero Masayuki Uemura estaba diseñando la videoconsola Famicom (como se llamaba a la NES en Japón) para Nintendo a principios de los años 80, acabó por decidirse por una CPU 6502 como procesador para este nuevo soporte.

Contactaron con muchos fabricantes de semiconductores, pero la mayoría rechazaron sus ofertas, ya que buscaban que alguien se fabricase realmente muy barato. Nintendo buscaba precios por los suelos, aunque a cambio prometía compras enormes. Finalmente, la empresa Ricoh, sin mucho trabajo en su división de semiconductores, aceptó la propuesta ofrecida por Nintendo, que no iba a pagar más de 2.000 yens por chip (lo que a Ricoh le pareció absurdamente bajo), pero prometía comprar tres millones de CPUs en dos años. Además, para que a Ricoh le fuese más rentable, hicieron ciertas restricciones al 6502 y añadieron otras cosas necesarias para el diseño final de la consola.

Aunque en Nintendo se preguntaron qué iban a hacer con tanto chip si la Famicom no tenía éxito, acabó siendo la videoconsola más vendida a lo largo de los años 80 y hasta mediados de los años 90.

La máquina arcade Unisystem VS (que puso en los salones de recreativas a Super Mario Bros y otras joyas de Nintendo), utiliza también la Ricoh 2A03 como CPU.

Generador de sonido del 2A03 (PSG)

El 2A03 posee un generador de sonido integrado que tiene 5 voces. Éstas son:

  • 2 canales de pulsos ajustables de onda cuadrada
  • 1 canal de onda triangular (usado generalmente para las notas graves y tambores)
  • 1 generador de ruido blanco (también se puede configurar para obtener ruido periódico, es decir, ruido tonal o en bucle)
  • 1 canal de reproducción de muestras de sonido basada en Modulación Delta (DMC) de 1 bit (también puede reproducir PCM de 7 bits sin comprimir activando la reproducción con el registro DMC_RAW)

El ciclo de las ondas de pulso se puede ajustar a valores de 12,5%, 25%, 50% y 75%.

Registros de memoria del 2A03

Al núcleo MOS 6502 se le agregan 22 registros de memoria o "mapeadores" adicionales que se usan para el generador de sonido, las muestras de sonido DMC, la lectura de los controles y la rudimentaria DMA on-die. Además Ricoh omite la funcionalidad de código binario decimal o BCD del 6502 para ahorrar espacio en el silicio.

$4000SQ1_VOLAjuste de ciclo y volumen para el canal de pulso 1
$4001SQ1_SWEEPRegistro del control de barrido para el canal de pulso 1
$4002SQ1_LOContador de byte bajo para el periodo del canal de pulso 1
$4003SQ1_HIContador de byte alto para el periodo y longitud para el canal de pulso 1
$4004SQ2_VOLAjuste de ciclo y volumen para el canal de pulso 2
$4005SQ2_SWEEPRegistro del control de barrido para el canal de pulso 2
$4006SQ2_LOContador de byte bajo para el periodo del canal de pulso 2
$4007SQ2_HIContador de byte alto para el periodo y longitud para el canal de pulso 2
$4008TRI_LINEARContador lineal para el canal de onda triangular
$4009N/USin usar, pero se puede acceder a él en bucles de limpieza de memoria
$400ATRI_LOContador de byte bajo para el canal de onda triangular
$400BTRI_HIContador de byte alto para el periodo y longitud del canal de onda triangular
$400CNOISE_VOLControl de volumen para el generador de ruido blanco
$400DN/USin usar, pero se puede acceder a él en bucles de limpieza de memoria
$400ENOISE_LOForma del periodo y longitud para el generador de ruido blanco
$400FNOISE_HIContador de longitud para el generador de ruido blanco
$4010DMC_FREQModo para la reproducción y frecuencia de las muestras de sonido DMC
$4011DMC_RAWReproducción de PCM de 7 bits sin comprimir
$4012DMC_STARTInicio de la forma de onda de las muestras de sonido DMC, es la dirección: $C000 + $40*$xx
$4013DMC_LENLongitud de la forma de onda de las muestras de sonido es de $10 * $ xx + 1 bytes (128 * $ xx + 8 muestras)
$4014OAM_DMAEscritura de copias en $xx de 256 bytes de lectura desde $xx00-$xxFF y escribir a OAM_DATA ($2004)
$4015SND_CHNUsado para habilitar los canales de sonido y para el estado de los mismos
$4016JOY1Datos del mando 1
$4017JOY2Datos del mando 2 y controlador del contador de cuadros
$4018-$401FFuncionalidad de la APU y I/O están normalmente desactivadas

(N/U= No usado)

Fuente

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.