Het ao486-project is een hardwarematige implementatie van een x86-compatibele 486 SX-processor in Verilog, gemodelleerd naar de Bochs-implementatie. Het project omvat zowel de processorcore als een volledige System-on-Chip (SoC).
Belangrijkste technische details:
- Processor: Beschikt over een pipeline-architectuur, 16 kB instructiecache en 16 kB write-back datacache.
- SoC Componenten: Bevat onder andere een IDE/floppy SD-kaartdriver, Sound Blaster 2.0 audio (met WM8731 codec), standaard VGA en diverse controllers zoals de 8259 PIC en 8237 DMA.
- Hardware: Ontworpen voor het Altera Cyclone IV E apparaat op het Terasic DE2-115 bord, met een werkklok van 30 MHz.
- Softwareondersteuning: De core kan succesvol MS-DOS 6.22, Windows 3.11, Windows 95 en Linux 3.13 draaien.
Het systeem maakt gebruik van de Bochs BIOS en een Altera NIOS2-processor die fungeert als controller voor het beheer van componenten via een On Screen Display (OSD). De prestaties zijn gemeten met Dhrystone benchmarks, waarbij geoptimaliseerde resultaten tot 4,58 VAX MIPS worden behaald.
ao486: Een x86-compatibele Verilog-core
Huidige status
- 31 maart 2014: Initiële versie 1.0.
- 19 augustus 2014: Update van
driver_sd en correctie voor PS/2.
Kenmerken
De ao486-processor
Het processormodel beschikt over de volgende eigenschappen:
- Pipeline-architectuur met vier hoofdfasen: decode, read, execute en write.
- Implementatie van alle 486-instructies, inclusief CPUID.
- 16 kB instructiecache.
- 16 kB write-back datacache.
- TLB voor 32 vermeldingen.
- Altera Avalon-interfaces voor geheugen- en I/O-toegang.
De ao486 SoC
De SoC bestaat uit de volgende componenten:
- ao486-processor.
- IDE-harde schijf die wordt omgeleid naar een HDL SD-kaartdriver.
- Floppy-controller die eveneens wordt omgeleid naar de SD-kaartdriver.
- 8259 PIC (Programmable Interrupt Controller).
- 8237 DMA (Direct Memory Access).
- Sound Blaster 2.0 met DSP en OPL2 (FM-synthese werkt niet volledig). De geluidsuitgang is omgeleid naar een WM8731 audio-codec.
- 8254 PIT (Programmable Interval Timer).
- 8042 toetsenbord- en muiscontroller.
- RTC (Real-Time Clock).
- Standaard VGA.
Alle componenten zijn gemodelleerd als Altera Qsys-componenten. Altera Qsys verbindt alle onderdelen met elkaar en levert de SDRAM-controller. Het ao486-project draait momenteel uitsluitend op het Terasic DE2-115 bord.
Resourcegebruik
Het project is gesynthetiseerd voor het Altera Cyclone IV E EP4CE115F29C7 apparaat. De benutting van resources is als volgt:
| Unit | Logische cellen | M9K geheugenblokken |
| ao486 processor | 36517 | 47 |
| floppy | 1514 | 2 |
| hdd | 2071 | 17 |
| nios2 | 1056 | 3 |
| onchip for nios2 | 0 | 32 |
| pc_dma | 848 | 0 |
| pic | 388 | 0 |
| pit | 667 | 0 |
| ps2 | 742 | 2 |
| rtc | 783 | 1 |
| sound | 37131 | 29 |
| vga | 2534 | 260 |
Fitter-rapport (na compilatie van alle componenten)
- Fitter Status: Successful - Sun Mar 30 21:00:13 2014
- Quartus II Versie: 13.1.0 Build 162 (64-Bit, SJ Web Edition)
- Revisienaam: soc
- Top-level Entity: soc
- Family: Cyclone IV E
- Device: EP4CE115F29C7
- Totaal aantal logische elementen: 91.256 / 114.480 (80%)
- Combinatorische functies: 86.811 / 114.480 (76%)
- Dedicated logische registers: 26.746 / 114.480 (23%)
- Totaal aantal registers: 26.865
- Totaal aantal pinnen: 108 / 529 (20%)
- Totaal geheugenbits: 2.993.408 / 3.981.312 (75%)
- Embedded Multiplier 9-bit elementen: 44 / 532 (8%)
- Totaal aantal PLL's: 1 / 4 (25%)
De maximale frequentie is 39 MHz; het project maakt gebruik van een klok van 30 MHz.
CPU Benchmarks
Voor de benchmarks is het pakket DosTests.zip gebruikt.
| Test | Resultaat |
| Dhrystone 1 Benchmark (niet-geoptimaliseerd) | 1,00 VAX MIPS |
| Dhrystone 1 Benchmark (geoptimaliseerd) | 4,58 VAX MIPS |
| Dhrystone 2 Benchmark (niet-geoptimaliseerd) | 1,01 VAX MIPS |
| Dhrystone 2 Benchmark (geoptimaliseerd) | 3,84 VAX MIPS |
Ondersteunde software
De ao486 draait succesvol de volgende software:
- Microsoft MS-DOS versie 6.22.
- Microsoft Windows for Workgroups 3.11.
- Microsoft Windows 95.
- Linux 3.13.1.
BIOS en VGA BIOS
Het project maakt gebruik van de BIOS van het Bochs-project (versie 2.6.2), met enkele kleine wijzigingen voor ondersteuning van de harde schijf.
De VGA BIOS is afkomstig van het VGABIOS-project (versie 0.7a) en vereiste geen wijzigingen. Aangezien het VGA-model geen VBE-extensies heeft, zijn deze uitgeschakeld.
NIOS2-controller
De ao486 SoC maakt gebruik van een Altera NIOS2-processor voor het beheren van alle componenten en het weergeven van de inhoud van het On Screen Display (OSD). Via het OSD kan de gebruiker floppy-disks invoegen en verwijderen.
Licenties
- Bestanden in de directoriën
rtl, ao486_tool en sim vallen onder de BSD-licentie.
- Bestanden in de directoriën
bochs486 and bochsDevs zijn afkomstig van het Bochs Project en vallen onder de LGPL-licentie.
- Het binaire bestand
sd/fd144m/fdboot.img is afkomstig van het FreeDOS-project.
- Het binaire bestand
sd/bios/bochs_legacy is een gecompileerde BIOS van het Bochs-project.
- Het binaire bestand
sd/vgabios/vgabios-lgpl is een gecompileerde VGA BIOS van het vgabios-project.
Compileren
Om de SoC (inclusief de NIOS II microcontroller) te compileren, is Altera Quartus II software vereist. De Verilog-componenten van de SoC, waaronder de ao486-processor, kunnen in principe met elke Verilog-compiler worden gecompileerd, hoewel de synthese-projectbestanden momenteel alleen zijn voorbereid voor Altera Quartus II.
Let op: In de huidige versie kunnen sommige synthese-projectbestanden (met name de paden daarin) defect zijn.
ao486 processor
Laad het projectbestand vanuit syn/components/ao486/ao486.qpf.
SoC
Laad het projectbestand vanuit syn/soc/soc.qpf. Let op dat het Qsys-systeem gegenereerd moet worden voordat u in Altera Quartus II compileert.
BIOS
- Pak het
bochs-2.6.2 bronarchief uit.
- Pas de patch uit de directory
bios/bochs-2.6.2 toe door in de uitgepakte directory uit te voeren: patch -p1 < (pad naar patchbestand).
- Voer
./configure uit in Bochs.
- Voer
make uit in Bochs.
- Ga naar de directory
bios en voer make uit.
Het resulterende binaire bestand BIOS-bochs-legacy werkt met de ao486 SoC.
VGABIOS
- Pak het
vgabios-0.7a bronarchief uit.
- Pas de patch uit de directory
bios/vgabios-0.7a toe door in de uitgepakte directory uit te voeren: patch -p1 < (pad naar patchbestand).
- Voer
make uit in vgabios.
Het binaire bestand VGABIOS-lgpl-latest.bin werkt met de ao486 SoC.
De SoC uitvoeren op Terasic DE2-115
- Compileer het Altera Quartus II project in
syn/soc/soc.qpf.
- Compileer de firmware voor de NIOS II:
- Open de Nios II Software Build Tools for Eclipse.
- Maak een workspace aan in de directory
syn/soc/firmware.
- Importeer de projecten
exe en exe_bsp.
- Genereer de BSP (Board Support Package) voor het
exe_bsp project.
- Compileer het
exe project.
- Compileer de BIOS en kopieer het binaire bestand naar de directory
sd/bios.
- Compileer de VGABIOS en kopieer het binaire bestand naar de directory
sd/vgabios.
- Compileer de
ao486tool door ant jar uit te voeren in de directory ao486tool.
- Bewerk de bestanden in de directory
sd/hdd. Deze bevatten de positie van de virtuele harde schijf op de SD-kaart. De startwaarde moet een veelvoud zijn van 512 (waarden in bytes vanaf het begin van de SD-kaart).
- Voer
java -cp ./dist/ao486tool.jar ao486.SDGenerator uit in de directory ao486tool.
- Kopieer het bestand
ao486_tool/sd.dat naar de eerste sectoren van de SD-kaart met: dd if=sd.dat of=/dev/sdXXX.
- Plaats de SD-kaart in het Terasic DE2-115 bord.
- Programmeer de FPGA met het SOF-bestand.
- Laad en start de firmware van de NIOS II-controller.
- Selecteer via het OSD het BIOS-bestand (KEY0 voor omlaag, KEY1 voor omhoog, KEY2 voor selecteren).
- Selecteer het VGABIOS-bestand op het OSD.
- Selecteer de harde schijf op het OSD.
- Selecteer de floppy op het OSD (gebruik de KEYs om het floppy-image te kiezen, KEY3 om te annuleren).
- Na selectie of annulering start de ao486 op.
Om het OSD opnieuw te activeren, drukt u op KEY2.
ao486: Een x86-compatibele Verilog-core
Huidige status
- 31 maart 2014: Initiële versie 1.0.
- 19 augustus 2014: Update van
driver_sd en correctie voor PS/2.
Kenmerken
De ao486-processor
Het processormodel beschikt over de volgende eigenschappen:
- Pipeline-architectuur met vier hoofdfasen: decode, read, execute en write.
- Implementatie van alle 486-instructies, inclusief CPUID.
- 16 kB instructiecache.
- 16 kB write-back datacache.
- TLB voor 32 vermeldingen.
- Altera Avalon-interfaces voor geheugen- en I/O-toegang.
De ao486 SoC
De SoC bestaat uit de volgende componenten:
- ao486-processor.
- IDE-harde schijf die wordt omgeleid naar een HDL SD-kaartdriver.
- Floppy-controller die eveneens wordt omgeleid naar de SD-kaartdriver.
- 8259 PIC (Programmable Interrupt Controller).
- 8237 DMA (Direct Memory Access).
- Sound Blaster 2.0 met DSP en OPL2 (FM-synthese werkt niet volledig). De geluidsuitgang is omgeleid naar een WM8731 audio-codec.
- 8254 PIT (Programmable Interval Timer).
- 8042 toetsenbord- en muiscontroller.
- RTC (Real-Time Clock).
- Standaard VGA.
Alle componenten zijn gemodelleerd als Altera Qsys-componenten. Altera Qsys verbindt alle onderdelen met elkaar en levert de SDRAM-controller. Het ao486-project draait momenteel uitsluitend op het Terasic DE2-115 bord.
Resourcegebruik
Het project is gesynthetiseerd voor het Altera Cyclone IV E EP4CE115F29C7 apparaat. De benutting van resources is als volgt:
| Unit | Logische cellen | M9K geheugenblokken |
| ao486 processor | 36517 | 47 |
| floppy | 1514 | 2 |
| hdd | 2071 | 17 |
| nios2 | 1056 | 3 |
| onchip for nios2 | 0 | 32 |
| pc_dma | 848 | 0 |
| pic | 388 | 0 |
| pit | 667 | 0 |
| ps2 | 742 | 2 |
| rtc | 783 | 1 |
| sound | 37131 | 29 |
| vga | 2534 | 260 |
Fitter-rapport (na compilatie van alle componenten)
- Fitter Status: Successful - Sun Mar 30 21:00:13 2014
- Quartus II Versie: 13.1.0 Build 162 (64-Bit, SJ Web Edition)
- Revisienaam: soc
- Top-level Entity: soc
- Family: Cyclone IV E
- Device: EP4CE115F29C7
- Totaal aantal logische elementen: 91.256 / 114.480 (80%)
- Combinatorische functies: 86.811 / 114.480 (76%)
- Dedicated logische registers: 26.746 / 114.480 (23%)
- Totaal aantal registers: 26.865
- Totaal aantal pinnen: 108 / 529 (20%)
- Totaal geheugenbits: 2.993.408 / 3.981.312 (75%)
- Embedded Multiplier 9-bit elementen: 44 / 532 (8%)
- Totaal aantal PLL's: 1 / 4 (25%)
De maximale frequentie is 39 MHz; het project maakt gebruik van een klok van 30 MHz.
CPU Benchmarks
Voor de benchmarks is het pakket DosTests.zip gebruikt.
| Test | Resultaat |
| Dhrystone 1 Benchmark (niet-geoptimaliseerd) | 1,00 VAX MIPS |
| Dhrystone 1 Benchmark (geoptimaliseerd) | 4,58 VAX MIPS |
| Dhrystone 2 Benchmark (niet-geoptimaliseerd) | 1,01 VAX MIPS |
| Dhrystone 2 Benchmark (geoptimaliseerd) | 3,84 VAX MIPS |
Ondersteunde software
De ao486 draait succesvol de volgende software:
- Microsoft MS-DOS versie 6.22.
- Microsoft Windows for Workgroups 3.11.
- Microsoft Windows 95.
- Linux 3.13.1.
BIOS en VGA BIOS
Het project maakt gebruik van de BIOS van het Bochs-project (versie 2.6.2), met enkele kleine wijzigingen voor ondersteuning van de harde schijf.
De VGA BIOS is afkomstig van het VGABIOS-project (versie 0.7a) en vereiste geen wijzigingen. Aangezien het VGA-model geen VBE-extensies heeft, zijn deze uitgeschakeld.
NIOS2-controller
De ao486 SoC maakt gebruik van een Altera NIOS2-processor voor het beheren van alle componenten en het weergeven van de inhoud van het On Screen Display (OSD). Via het OSD kan de gebruiker floppy-disks invoegen en verwijderen.
Licenties
- Bestanden in de directoriën
rtl, ao486_tool en sim vallen onder de BSD-licentie.
- Bestanden in de directoriën
bochs486 and bochsDevs zijn afkomstig van het Bochs Project en vallen onder de LGPL-licentie.
- Het binaire bestand
sd/fd144m/fdboot.img is afkomstig van het FreeDOS-project.
- Het binaire bestand
sd/bios/bochs_legacy is een gecompileerde BIOS van het Bochs-project.
- Het binaire bestand
sd/vgabios/vgabios-lgpl is een gecompileerde VGA BIOS van het vgabios-project.
Compileren
Om de SoC (inclusief de NIOS II microcontroller) te compileren, is Altera Quartus II software vereist. De Verilog-componenten van de SoC, waaronder de ao486-processor, kunnen in principe met elke Verilog-compiler worden gecompileerd, hoewel de synthese-projectbestanden momenteel alleen zijn voorbereid voor Altera Quartus II.
Let op: In de huidige versie kunnen sommige synthese-projectbestanden (met name de paden daarin) defect zijn.
ao486 processor
Laad het projectbestand vanuit syn/components/ao486/ao486.qpf.
SoC
Laad het projectbestand vanuit syn/soc/soc.qpf. Let op dat het Qsys-systeem gegenereerd moet worden voordat u in Altera Quartus II compileert.
BIOS
- Pak het
bochs-2.6.2 bronarchief uit.
- Pas de patch uit de directory
bios/bochs-2.6.2 toe door in de uitgepakte directory uit te voeren: patch -p1 < (pad naar patchbestand).
- Voer
./configure uit in Bochs.
- Voer
make uit in Bochs.
- Ga naar de directory
bios en voer make uit.
Het resulterende binaire bestand BIOS-bochs-legacy werkt met de ao486 SoC.
VGABIOS
- Pak het
vgabios-0.7a bronarchief uit.
- Pas de patch uit de directory
bios/vgabios-0.7a toe door in de uitgepakte directory uit te voeren: patch -p1 < (pad naar patchbestand).
- Voer
make uit in vgabios.
Het binaire bestand VGABIOS-lgpl-latest.bin werkt met de ao486 SoC.
De SoC uitvoeren op Terasic DE2-115
- Compileer het Altera Quartus II project in
syn/soc/soc.qpf.
- Compileer de firmware voor de NIOS II:
- Open de Nios II Software Build Tools for Eclipse.
- Maak een workspace aan in de directory
syn/soc/firmware.
- Importeer de projecten
exe en exe_bsp.
- Genereer de BSP (Board Support Package) voor het
exe_bsp project.
- Compileer het
exe project.
- Compileer de BIOS en kopieer het binaire bestand naar de directory
sd/bios.
- Compileer de VGABIOS en kopieer het binaire bestand naar de directory
sd/vgabios.
- Compileer de
ao486tool door ant jar uit te voeren in de directory ao486tool.
- Bewerk de bestanden in de directory
sd/hdd. Deze bevatten de positie van de virtuele harde schijf op de SD-kaart. De startwaarde moet een veelvoud zijn van 512 (waarden in bytes vanaf het begin van de SD-kaart).
- Voer
java -cp ./dist/ao486tool.jar ao486.SDGenerator uit in de directory ao486tool.
- Kopieer het bestand
ao486_tool/sd.dat naar de eerste sectoren van de SD-kaart met: dd if=sd.dat of=/dev/sdXXX.
- Plaats de SD-kaart in het Terasic DE2-115 bord.
- Programmeer de FPGA met het SOF-bestand.
- Laad en start de firmware van de NIOS II-controller.
- Selecteer via het OSD het BIOS-bestand (KEY0 voor omlaag, KEY1 voor omhoog, KEY2 voor selecteren).
- Selecteer het VGABIOS-bestand op het OSD.
- Selecteer de harde schijf op het OSD.
- Selecteer de floppy op het OSD (gebruik de KEYs om het floppy-image te kiezen, KEY3 om te annuleren).
- Na selectie of annulering start de ao486 op.
Om het OSD opnieuw te activeren, drukt u op KEY2.