ao486: un núcleo Verilog x86 compatible con el 486 SX capaz de arrancar MS-DOS y Windows 95

Fuentes: ao486: an x86-compatible Verilog core implementing a 486 SX, with a full SoC running DOS, Windows and Linux

ao486 es un núcleo de procesador escrito en Verilog que reproduce las características de un Intel 486 SX y se acompaña de un SoC completo capaz de arrancar Linux 3.13 y Windows 95. El modelado y las pruebas se basaron en la implementación x86 del emulador Bochs, y el SoC integra el procesador junto con una controladora IDE que redirige a un controlador HDL sobre tarjeta SD, una controladora de disquetera también redirigida a SD, los chips 8259 PIC, 8237 DMA y 8254 PIT, un controlador 8042 de teclado y ratón, RTC y VGA estándar. Incluye además una Sound Blaster 2.0 con DSP y OPL2 —la síntesis FM no funciona por completo— cuya salida se redirige al códec de audio WM8731, y un procesador Altera NIOS II que gestiona los componentes y el menú en pantalla (OSD) para insertar y expulsar disquetes. El núcleo dispone de pipeline de cuatro etapas (decode, read, execute y write), todas las instrucciones del 486 con CPUID, caché de instrucciones de 16 kB, caché de datos write-back de 16 kB y TLB de 32 entradas, con interfaces Altera Avalon para memoria y E/S. El proyecto se ejecuta exclusivamente en la placa Terasic DE2-115 y se sintetiza para el dispositivo Altera Cyclone IV E EP4CE115F29C7: la síntesis ocupa 91.256 elementos lógicos (80 % del dispositivo) y funciona a 39 MHz sobre un reloj de 30 MHz. En benchmarks Dhrystone alcanza entre 1,00 y 4,58 VAX MIPS. El software verificado incluye MS-DOS 6.22, Windows for Workgroups 3.11, Windows 95 y Linux 3.13.1. El BIOS procede de Bochs 2.6.2 con parches menores y la VGA BIOS de vgabios 0.7a sin modificaciones. El código Verilog se distribuye bajo BSD; los componentes heredados de Bochs, bajo LGPL. Para compilar el SoC completo se requiere Altera Quartus II y Nios II Software Build Tools.