Altera Summer Interns 2006 Repository
=====================================
This is the repository from the project done by the Altera interns in 2006.
The project consisted of producing a working MIPS-based processor and toolchain for the Altera DE2 board, to be used for teaching.
The work completed was as follows:
* A working single stage MIPS processor, implementing most instructions (certainly enough for lab work) and sitting on the Altera Avalon bus
* A working three stage pipelined MIPS processor, implementing a similar instruction set, also with support for interrupts
* A working five stage pipelined MIPS processor, implementing as much as the three stage processor, as well as additional instruction to support the toolchain
* Porting LCC and writing an assembler for the one and three stage processors in Python
* Porting GCC and writing an assembler for the five stage processor in C#
* Creating an IDE with syntax highlighting for C and MIPS assembly code, and a USB programming interface for the 5-stage processor
* Interfaces to VGA, sound, built-in LCD, serial and keyboard connectors on the DE2 board to the MIPS processor
* Libraries for communicating with the VGA, sound, serial port and keyboard on the DE2 board from the processor
* A 4-way, 256 line, 128 bits per line set associative I/D cache for the 5-stage MIPS processor, with write back to the cache and inteligent flushing logic

The repository directories are as follows:
* cache - Do not use. Initial cache design. Doesn't work.
* compiler - Old (1/3 stage) assembler and LCC
* documentation - Documentation and diagrams for MIPS processors
* env - C# development environment directory
* env-lib - Libraries for C# development environment
* env-invoke - Output from compiling env and associated binary and initialisation files
* helloworld - Initial mips processor design improved from an unpublished book "From Zero To One", authored by David Money Harris and Sarah Harris
* keyboardtest - Library for putting the DE2 keyboard on the Avalon bus
* malwa - Do not use. Testing area for 3 stage processor.
* mips - Working 3-stage processor
* mips-code - Various code examples
* prepsound - Little C# tool for reordering and adding headers to sound files for loading with the DE2 Control Panel tool
* rhino - Working 5-stage, cached processor
* scarab - Do not use. Cache for the rhino processor in a test harness, but bug fixes have not been backported to it from rhino.
* sound - Test area for sound code. Integrated into mips and rhino.
* vga - Test area for VGA code. Integrated into mips and rhino.
