Code Monkey home page Code Monkey logo

aoocs's Introduction

Description

The OpenCores aoOCS SoC is a Wishbone compatible implementation of most of the Amiga Original Chip Set (OCS) and computer functionality. aoOCS is not related in any way with Minimig - it is a new and independent Amiga OCS implementation.

Features

  • The aoOCS SoC contains the following Amiga/OCS components:
    • blitter
    • copper
    • system control (interrupts)
    • video: bitplains, sprites, collision detection
    • audio: 4 channels, low-pass filter
    • user input: PS/2 mouse, PS/2 keyboard and joystick (keyboard arrow keys)
    • floppy: read and write ADF files directly from a SD card. Only the internal floppy drive is implemented
    • 8520 CIA
    • ao68000 OpenCores IP core is used as the aoOCS processor
  • All of the above components are WISHBONE revision B.3 compatible
  • The aoOCS contains the following additional components:
    • SD card controller written in HDL with DMA. Supports SDHC cards only.
    • 10/100 Mbit Ethernet controller written in HDL to send the current VGA frames (frame grabber)
    • HDL drivers for SSRAM, PS/2 keyboard, PS/2 mouse, audio codec, VGA DAC
  • aoOCS uses only one external memory: a SSRAM with 36-bit words and pipelined access. A video buffer with about 250KB is located SSRAM. Another 256KB are used by the ROM. All the rest memory can be used as Chip RAM.
  • The On-Screen-Display is implemented in HDL as a finite state machine. No additional controller/processor with firmware required to handle the SoC.
  • The following options are available on the On-Screen-Display:
    • select ROM file to load (only Amiga Kickstart v1.2 was tested)
    • enable or disable Joystick (keyboard arrow keys)
    • enable or disable floppy write protection
    • insert a floppy - select one from a list
    • eject an inserted floppy
    • reset the system
  • The On-Screen-Display is independent of the running Amiga software. It is enabled and disabled by the Home key and controled by the keyboard arrow keys and the right CTRL key.
  • Only PAL timings are implemented.
  • The video output is VGA compatible: 640x480 at 70 Hz. A rather simple method is used to extend the 256 PAL horizontal lines to 480 VGA lines: all lines are doubled except for every 8th one.
  • The system uses generally a single clock: 30 MHz. There are two more clocks: 12 MHz, 25 MHz generated to interface with external hardware (Audio codec, Ethernet controller). A single altpll is used to generate all three clocks from one 50 MHz external clock. More information about clocks is available at Clocks.
  • A VGA frame grabber is implemented that sends captured frames by 100 Mbit Ethernet in IP/UDP packets.
  • The system uses about 26.400 LE on Altera Cyclone II and about 267.000 bits of on-chip RAM.
  • The blitter functionality was tested against the E-UAE Amiga software emulator.
  • Tested only on a Terasic DE2-70 board (www.terasic.com.tw).
  • Documentation generated by Doxygen (www.doxygen.org) with doxverilog patch (http://developer.berlios.de/projects/doxverilog/). The specification is automatically extracted from the Doxygen HTML output.

License

The OpenCores aoOCS SoC is licensed under the Simplified BSD License. Works based on this project may be released under a proprietary license or as closed source software.

WISHBONE compatibility

  • Version: WISHBONE specification Revision B.3,
  • General description: 32-bit WISHBONE interface,
  • WISHBONE data port size: 32-bit,
  • Data port granularity: 8-bits,
  • Data port maximum operand size: 32-bits,
  • Data transfer ordering: BIG ENDIAN,
  • Data transfer sequencing: UNDEFINED,
  • Constraints on CLK_I signal: described in Clocks.

Similar projects

Other Open-Source Amiga implementations include:

  • Minimig (http://code.google.com/p/minimig/) - FPGA-based re-implementation of the original Amiga 500 hardware. Runs on the Minimig PCB and also on Terasic DE1,2 boards.

Limitations

  • No filesystem support on the SD card. Data is read from fixed positions. The contents of the SD card is generated by the aoOCS_tool described at Operation.
  • No video external synchronize, lace mode, lightpen, genlock audio enable, color composite (BPLCON0)
  • All bitplain data is fetched at once in a burst memory read at the begining of each line. No changes to the bitplain data done after the beginning of a line are visible.
  • Currently aoOCS requires an 36-bit word SSRAM to store the video buffer. This way 3 pixels 12-bits each can be stored in one word.
  • Serial port not implemented.
  • Parallel port not implemented.
  • Low-pass filter disable/enable by CIA-A port A bit 1 not implemented.
  • Proportional controller and light pen not implemented.
  • Some rarely used OCS registers are not implemented: strobe video sync, write beam position, coprocessor instruction fetch identify. For a complete list of not implemented registers look at Registers.
  • Only some of the Amiga software was tested and works on the aoOCS. A list of aoOCS software compatability is located at Operation.

TODO

  • Fix some of the above limitations.
  • Optimize the design.
  • Run WISHBONE verification models.
  • More documentation of Verilog sources.
  • Describe testing and changes done in E-UAE sources.
  • Prepare scripts for VATS: run_sim -r -> regresion test.
  • Port the aoOCS SoC to a Xilinx FPGA.

Status

  • Amiga Workbench v1.2 runs with some minor graphic problems: bottom of screen not displayed correctly.
  • Prince of Persia runs perfectly.
  • Wings of Fury runs correctly. Some sound glitches in intro.
  • Lotus 2 runs correctly. Some sound problems in intro.
  • Warzone runs poor. Some major graphic problems.
  • More information about aoOCS software compatability is available at Operation.
  • July 2011: Project copied to (https://github.com/alfikpl/aoOCS). Further development of aoOCS will continue on github.

Requirements

  • Altera Quartus II synthesis tool (http://www.altera.com) is required to synthesise the aoOCS System-on-Chip.
  • Java SDK (http://java.sun.com) is required to compile the aoOCS_tool (The tool is described in Operation).
  • A FPGA board. Currently only the Terasic DE2-70 board was tested.
  • Icarus Verilog simulator (http://www.icarus.com/eda/verilog/) is required to compile the and run some tests.
  • Access to Altera Quartus II directory (directory eda/sim_lib/) is required to compile and run some tests.
  • GCC (http://gcc.gnu.org) is required to compile some testes based on E-UAE sources.

Structure diagram

Structure diagram

Screenshots

Amiga Kickstart v1.2 bootstrap screen with aoOCS On-Screen-Display

Amiga Kickstart v1.2 bootstrap screen with aoOCS On-Screen-Display

Amiga Workbench v1.2 screen

Amiga Workbench v1.2 screen

Wings of Fury

Wings of Fury

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.