All Projects → alfikpl → Aoocs

alfikpl / Aoocs

Licence: other
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.

Labels

Projects that are alternatives of or similar to Aoocs

Spinalhdl
Scala based HDL
Stars: ✭ 696 (+2926.09%)
Mutual labels:  verilog
Ie12
A (very) minimal web browser for FPGAs implemented in Verilog
Stars: ✭ 6 (-73.91%)
Mutual labels:  verilog
Upduino Ov7670 Camera
Design to connect Lattice Ultraplus FPGA to OV7670 Camera Module
Stars: ✭ 17 (-26.09%)
Mutual labels:  verilog
Hdl
HDL libraries and projects
Stars: ✭ 727 (+3060.87%)
Mutual labels:  verilog
Fpga
related to Spartan6 FPGA
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Netlist Graph
Java library for parsing and manipulating graph representations of gate-level Verilog netlists
Stars: ✭ 7 (-69.57%)
Mutual labels:  verilog
Verilator
Verilator open-source SystemVerilog simulator and lint system
Stars: ✭ 645 (+2704.35%)
Mutual labels:  verilog
Cgragenerator
Stars: ✭ 22 (-4.35%)
Mutual labels:  verilog
Naivecpu
A CPU that implementing THCO-MIPS16 instruction set.
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Verilog Vga Controller
A very simple VGA controller written in verilog
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog
Cocotb
cocotb, a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python
Stars: ✭ 740 (+3117.39%)
Mutual labels:  verilog
Co4618
This repo is for the 4618 group nember to share code.
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
K1801
1801 series ULA reverse engineering
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog
Verilog Ethernet
Verilog Ethernet components for FPGA implementation
Stars: ✭ 699 (+2939.13%)
Mutual labels:  verilog
Lenet accelerator
A Lenet ASIC Accelerator targeting minimum number of cycles
Stars: ✭ 17 (-26.09%)
Mutual labels:  verilog
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+2839.13%)
Mutual labels:  verilog
Busblaster
KT-Link compatible buffer for the Bus Blaster v3
Stars: ✭ 6 (-73.91%)
Mutual labels:  verilog
Fftdemo
A demonstration showing how several components can be compsed to build a simulated spectrogram
Stars: ✭ 23 (+0%)
Mutual labels:  verilog
Tf530
tf530
Stars: ✭ 22 (-4.35%)
Mutual labels:  verilog
Fpga Sram
mystorm sram test
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog

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:

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

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].