1 |
2 |
alfik |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2 |
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
|
|
<head>
|
4 |
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
5 |
|
|
<title>aoOCS: Introduction</title>
|
6 |
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
7 |
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
8 |
|
|
</head>
|
9 |
|
|
<body>
|
10 |
|
|
<!-- Generated by Doxygen 1.7.2 -->
|
11 |
|
|
<div class="navigation" id="top">
|
12 |
|
|
<div class="tabs">
|
13 |
|
|
<ul class="tablist">
|
14 |
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
15 |
|
|
<li><a href="annotated.html"><span>Design Unit List</span></a></li>
|
16 |
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
17 |
|
|
</ul>
|
18 |
|
|
</div>
|
19 |
|
|
<div class="navpath">
|
20 |
|
|
<ul>
|
21 |
|
|
<li><a class="el" href="index.html">index</a> </li>
|
22 |
|
|
</ul>
|
23 |
|
|
</div>
|
24 |
|
|
</div>
|
25 |
|
|
<div class="header">
|
26 |
|
|
<div class="headertitle">
|
27 |
|
|
<h1>Introduction </h1> </div>
|
28 |
|
|
</div>
|
29 |
|
|
<div class="contents">
|
30 |
|
|
<p>The OpenCores <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> SoC is a Wishbone compatible implementation of most of the Amiga Original Chip Set (OCS) and computer functionality.</p>
|
31 |
|
|
<p><a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> is not related in any way with Minimig - it is a new and independent Amiga OCS implementation.</p>
|
32 |
|
|
<h3>Features</h3>
|
33 |
|
|
<ul>
|
34 |
|
|
<li>The <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> SoC contains the following Amiga/OCS components:<ul>
|
35 |
|
|
<li>blitter</li>
|
36 |
|
|
<li>copper</li>
|
37 |
|
|
<li>system control (interrupts)</li>
|
38 |
|
|
<li>video: bitplains, sprites, collision detection</li>
|
39 |
|
|
<li>audio: 4 channels, low-pass filter</li>
|
40 |
|
|
<li>user input: PS/2 mouse, PS/2 keyboard and joystick (keyboard arrow keys)</li>
|
41 |
|
|
<li>floppy: read and write ADF files directly from a SD card. Only the internal floppy drive is implemented</li>
|
42 |
|
|
<li>8520 CIA</li>
|
43 |
|
|
<li><a class="el" href="classao68000.html" title="ao68000 top level module.">ao68000</a> OpenCores IP core is used as the <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> processor</li>
|
44 |
|
|
</ul>
|
45 |
|
|
</li>
|
46 |
|
|
<li>All of the above components are WISHBONE revision B.3 compatible</li>
|
47 |
|
|
<li>The <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> contains the following additional components:<ul>
|
48 |
|
|
<li>SD card controller written in HDL with DMA. Supports SDHC cards only.</li>
|
49 |
|
|
<li>10/100 Mbit Ethernet controller written in HDL to send the current VGA frames (frame grabber)</li>
|
50 |
|
|
<li>HDL drivers for SSRAM, PS/2 keyboard, PS/2 mouse, audio codec, VGA DAC</li>
|
51 |
|
|
</ul>
|
52 |
|
|
</li>
|
53 |
|
|
<li><a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> 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.</li>
|
54 |
|
|
<li>The On-Screen-Display is implemented in HDL as a finite state machine. No additional controller/processor with firmware required to handle the SoC.</li>
|
55 |
|
|
<li>The following options are available on the On-Screen-Display:<ul>
|
56 |
|
|
<li>select ROM file to load (only Amiga Kickstart v1.2 was tested)</li>
|
57 |
|
|
<li>enable or disable Joystick (keyboard arrow keys)</li>
|
58 |
|
|
<li>enable or disable floppy write protection</li>
|
59 |
|
|
<li>insert a floppy - select one from a list</li>
|
60 |
|
|
<li>eject an inserted floppy</li>
|
61 |
|
|
<li>reset the system</li>
|
62 |
|
|
</ul>
|
63 |
|
|
</li>
|
64 |
|
|
<li>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.</li>
|
65 |
|
|
<li>Only PAL timings are implemented.</li>
|
66 |
|
|
<li>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.</li>
|
67 |
|
|
<li>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 <a class="el" href="page_spec_clocks.html">Clocks</a>.</li>
|
68 |
|
|
<li>A VGA frame grabber is implemented that sends captured frames by 100 Mbit Ethernet in IP/UDP packets.</li>
|
69 |
|
|
<li>The system uses about 26.400 LE on Altera Cyclone II and about 267.000 bits of on-chip RAM.</li>
|
70 |
|
|
<li>The blitter functionality was tested against the E-UAE Amiga software emulator.</li>
|
71 |
|
|
<li>Tested only on a Terasic DE2-70 board (www.terasic.com.tw).</li>
|
72 |
|
|
<li>Documentation generated by Doxygen (www.doxygen.org) with doxverilog patch (<a href="http://developer.berlios.de/projects/doxverilog/">http://developer.berlios.de/projects/doxverilog/</a>). The specification is automatically extracted from the Doxygen HTML output.</li>
|
73 |
|
|
</ul>
|
74 |
|
|
<h3>WISHBONE compatibility</h3>
|
75 |
|
|
<ul>
|
76 |
|
|
<li>Version: WISHBONE specification Revision B.3,</li>
|
77 |
|
|
<li>General description: 32-bit WISHBONE interface,</li>
|
78 |
|
|
<li>WISHBONE data port size: 32-bit,</li>
|
79 |
|
|
<li>Data port granularity: 8-bits,</li>
|
80 |
|
|
<li>Data port maximum operand size: 32-bits,</li>
|
81 |
|
|
<li>Data transfer ordering: BIG ENDIAN,</li>
|
82 |
|
|
<li>Data transfer sequencing: UNDEFINED,</li>
|
83 |
|
|
<li>Constraints on <code>CLK_I</code> signal: described in <a class="el" href="page_spec_clocks.html">Clocks</a>.</li>
|
84 |
|
|
</ul>
|
85 |
|
|
<h3>Similar projects</h3>
|
86 |
|
|
<p>Other Open-Source Amiga implementations include:</p>
|
87 |
|
|
<ul>
|
88 |
|
|
<li>Minimig (<a href="http://code.google.com/p/minimig/">http://code.google.com/p/minimig/</a>) - FPGA-based re-implementation of the original Amiga 500 hardware. Runs on the Minimig PCB and also on Terasic DE1,2 boards.</li>
|
89 |
|
|
</ul>
|
90 |
|
|
<h3>Limitations</h3>
|
91 |
|
|
<ul>
|
92 |
|
|
<li>No filesystem support on the SD card. Data is read from fixed positions. The contents of the SD card is generated by the <code>aoOCS_tool</code> described at <a class="el" href="page_spec_operation.html">Operation</a>.</li>
|
93 |
|
|
<li>No video external synchronize, lace mode, lightpen, genlock audio enable, color composite (BPLCON0)</li>
|
94 |
|
|
<li>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.</li>
|
95 |
|
|
<li>Currently <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> requires an 36-bit word SSRAM to store the video buffer. This way 3 pixels 12-bits each can be stored in one word.</li>
|
96 |
|
|
<li>Serial port not implemented.</li>
|
97 |
|
|
<li>Parallel port not implemented.</li>
|
98 |
|
|
<li>Low-pass filter disable/enable by CIA-A port A bit 1 not implemented.</li>
|
99 |
|
|
<li>Proportional controller and light pen not implemented.</li>
|
100 |
|
|
<li>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 <a class="el" href="page_spec_registers.html">Registers</a>.</li>
|
101 |
|
|
<li>Only some of the Amiga software was tested and works on the <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a>. A list of <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> software compatability is located at <a class="el" href="page_spec_operation.html">Operation</a>.</li>
|
102 |
|
|
</ul>
|
103 |
|
|
<h3>TODO</h3>
|
104 |
|
|
<ul>
|
105 |
|
|
<li>Fix some of the above limitations.</li>
|
106 |
|
|
<li>Optimize the design.</li>
|
107 |
|
|
<li>Run WISHBONE verification models.</li>
|
108 |
|
|
<li>More documentation of Verilog sources.</li>
|
109 |
|
|
<li>Describe testing and changes done in E-UAE sources.</li>
|
110 |
|
|
<li>Prepare scripts for VATS: run_sim -r -> regresion test.</li>
|
111 |
|
|
<li>Port the <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> SoC to a Xilinx FPGA.</li>
|
112 |
|
|
</ul>
|
113 |
|
|
<h3>Status</h3>
|
114 |
|
|
<ul>
|
115 |
|
|
<li>Amiga Workbench v1.2 runs with some minor graphic problems: bottom of screen not displayed correctly.</li>
|
116 |
|
|
<li>Prince of Persia runs perfectly.</li>
|
117 |
|
|
<li>Wings of Fury runs correctly. Some sound glitches in intro.</li>
|
118 |
|
|
<li>Lotus 2 runs correctly. Some sound problems in intro.</li>
|
119 |
|
|
<li>Warzone runs poor. Some major graphic problems.</li>
|
120 |
|
|
<li>More information about <a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a> software compatability is available at <a class="el" href="page_spec_operation.html">Operation</a>.</li>
|
121 |
|
|
</ul>
|
122 |
|
|
<h3>Requirements</h3>
|
123 |
|
|
<ul>
|
124 |
|
|
<li>Altera Quartus II synthesis tool (<a href="http://www.altera.com">http://www.altera.com</a>) is required to synthesise the <code><a class="el" href="classaoOCS.html" title="aoOCS top-level module for the Terasic DE2-70 board. ">aoOCS</a></code> System-on-Chip.</li>
|
125 |
|
|
<li>Java SDK (<a href="http://java.sun.com">http://java.sun.com</a>) is required to compile the <code>aoOCS_tool</code> (The tool is described in <a class="el" href="page_spec_operation.html">Operation</a>).</li>
|
126 |
|
|
<li>A FPGA board. Currently only the Terasic DE2-70 board was tested.</li>
|
127 |
|
|
<li>Icarus Verilog simulator (<a href="http://www.icarus.com/eda/verilog/">http://www.icarus.com/eda/verilog/</a>) is required to compile the and run some tests.</li>
|
128 |
|
|
<li>Access to Altera Quartus II directory (directory eda/sim_lib/) is required to compile and run some tests.</li>
|
129 |
|
|
<li>GCC (<a href="http://gcc.gnu.org">http://gcc.gnu.org</a>) is required to compile some testes based on E-UAE sources. </li>
|
130 |
|
|
</ul>
|
131 |
|
|
</div>
|
132 |
|
|
<hr class="footer"/><address class="footer"><small>Generated on Mon Dec 20 2010 21:20:19 for aoOCS by 
|
133 |
|
|
<a href="http://www.doxygen.org/index.html">
|
134 |
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
|
135 |
|
|
</body>
|
136 |
|
|
</html>
|