Recrea Chiptunes en Verilog

Nora Prieto
Nora Prieto

El semestre termina en Cornell, y eso significa que es hora de los proyectos finales. [Bruce Land]el laboratorio. Todos los años vemos muy buenos proyectos, y este año no es la excepción. Por su proyecto, [Andre] y [Scott] implementó la unidad de procesamiento de sonido (APU) de Nintendo Entertainment System (NES). Este es el clásico sonido con chips que dominó una generación con sonidos de 8 bits que en realidad no son de ocho bits, con la ayuda de una CPU 6502 que no es realmente una CPU 6502.

A diferencia del MOS 6581 SID simultáneo, que es esencialmente un sintetizador analógico en un chip, la APU en la NES es extraordinariamente espartana. Hay dos canales de onda de pulso, un canal de onda triangular, un canal de ruido aleatorio y el canal de modulación delta (DMC) que se usa muy raramente para reproducir muestras de sonido de muy baja calidad. Esta es una reimplementación de NES APU para laboratorio universitario; es muy comprensible que [Andre] y [Scott] no implementó el DMC raramente utilizado.

Todo sobre el circuito NES está bien documentado, entonces [Andre] y [Scott] tenía una excelente wiki para su investigación. En el nivel más alto, la APU funciona con un reloj de 894 kHz y controla tres canales a través de registros dedicados. Estas salidas cuentan con un mezclador que los niños escalaron y combinaron en una salida de 16 bits reproducida con un códec de sonido Wolfson WM8731.

Después de implementar la APU de NES, [Andre] y [Scott] agregó un lector de tarjetas SD que puede leer el formato de sonido de Nintendo, el formato de distribución estándar para los conjuntos de chips de NES, y copió 6502 para verificar los registros. El resultado es un dispositivo relativamente simple que reproduce chips NES con una precisión asombrosa. Los archivos de audio en el informe del proyecto suenan como si fueran reales, pero están completamente copiados al hardware moderno.

  • RicoElectrico dice:

    > eso es muy comprensible [Andre] y [Scott] no implementó el DMC raramente utilizado.
    Si Super Mario Bros.3 (por ejemplo, batería en un tema de trombón) es un uso poco común, entonces no sé qué es común …

    • Alex Rossie dice:

      De hecho, si lees el protocolo del proyecto (que desafortunadamente está escrito en un grado de escuela secundaria), el DMC no se implementó porque les faltaba tiempo y podían tener música razonable sin apoyarlo.

      También vale la pena mencionar una gran parte del proyecto que realmente funciona en niosii, el interruptor de softcore solo la unidad de procesamiento de sonido es HDL

      Buen proyecto. Es una lástima lo de la edición, pero creo que, literalmente, las habilidades se quedan atrás.

      • evitar dice:

        LUTeralmente….

        Veo lo que hiciste alli.

    • netbarba dice:

      Sin mencionar toda la música de Sunsoft, con ese increíble bajo muestreado. (Maestro Blaster, Viaje a Silius, Batman …)

  • Sweeney dice:

    Dada la cantidad de núcleos HDL 6502 disponibles, ¿por qué diablos copiaron uno en C?

    • Alex Rossie dice:

      Querían el núcleo niosia para la tarjeta SD, etc.

      • Sweeney dice:

        Puede tener más de un núcleo ejecutándose en FPGA. Podían tener NIOSII y, por ejemplo, T65 en el DE2-115 que usaban, y aún tenían suficiente espacio para su emulación de chip de sonido.

  • fraude dice:

    Si bien el Commodore SID tiene una ingeniería brillante, no es un sintetizador analógico en un chip. Todo se genera digitalmente y se alimenta mediante un solo filtro analógico al final de la ruta de la señal.

  • ROBÓ dice:

    ¿Qué hicieron por el canal de ruido?

    El chip original parece un LFSR con un velocímetro seleccionable (entrada).

    En el chip, los FPGA parecen tener LUT de unidad LFSR que necesitan hacer algún tipo de filtrado digital.

    Lo siento, no puedo procesar Verilog mientras escribo VHDL.

    Compré un AY-3-8912 para jugar con estos sonidos antiguos y luego descubrí que una computadora retro que tengo aquí tiene el mismo chip.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *