1 |
12 |
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>ao68000: 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="modules.html"><span>Modules</span></a></li>
|
16 |
|
|
<li><a href="annotated.html"><span>Design Unit List</span></a></li>
|
17 |
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
18 |
|
|
</ul>
|
19 |
|
|
</div>
|
20 |
|
|
<div class="navpath">
|
21 |
|
|
<ul>
|
22 |
|
|
<li><a class="el" href="index.html">index</a> </li>
|
23 |
|
|
</ul>
|
24 |
|
|
</div>
|
25 |
|
|
</div>
|
26 |
|
|
<div class="header">
|
27 |
|
|
<div class="headertitle">
|
28 |
|
|
<h1>Introduction </h1> </div>
|
29 |
|
|
</div>
|
30 |
|
|
<div class="contents">
|
31 |
|
|
<p>The OpenCores <a class="el" href="classao68000.html" title="ao68000 top level module.">ao68000</a> IP Core is a Motorola MC68000 compatible processor.</p>
|
32 |
|
|
<h3>Features</h3>
|
33 |
|
|
<ul>
|
34 |
|
|
<li>CISC processor with microcode,</li>
|
35 |
|
|
<li>WISHBONE revision B.3 compatible MASTER interface,</li>
|
36 |
|
|
<li>Not cycle exact with the MC68000, some instructions take more cycles to complete, some less,</li>
|
37 |
13 |
alfik |
<li>Uses about 4925 LE on Altera Cyclone II and about 45600 bits of RAM for microcode,</li>
|
38 |
12 |
alfik |
<li>Tested against the WinUAE M68000 software emulator. Every 16-bit instruction was tested with random register contents and RAM contents (<a class="el" href="page_verification.html">Processor verification</a>). The result of execution was compared,</li>
|
39 |
|
|
<li>Contains a simple prefetch which is capable of holding up to 5 16-bit instruction words,</li>
|
40 |
|
|
<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>
|
41 |
|
|
</ul>
|
42 |
|
|
<h3>WISHBONE compatibility</h3>
|
43 |
|
|
<ul>
|
44 |
|
|
<li>Version: WISHBONE specification Revision B.3,</li>
|
45 |
|
|
<li>General description: 32-bit WISHBONE Master interface,</li>
|
46 |
|
|
<li>WISHBONE signals described in <a class="el" href="page_spec_ports.html">IO Ports</a>,</li>
|
47 |
|
|
<li>Supported cycles: Master Read/Write, Master Block Read/Write, Master Read-Modify-Write for TAS instruction, Register Feedback Bus Cycles as described in chapter 4 of the WISHBONE specification,</li>
|
48 |
|
|
<li>Use of ERR_I: on memory access – bus error, on interrupt acknowledge: spurious interrupt,</li>
|
49 |
|
|
<li>Use of RTY_I: on memory access – repeat access, on interrupt acknowledge: generate auto-vector,</li>
|
50 |
|
|
<li>WISHBONE data port size: 32-bit,</li>
|
51 |
|
|
<li>Data port granularity: 8-bits,</li>
|
52 |
|
|
<li>Data port maximum operand size: 32-bits,</li>
|
53 |
|
|
<li>Data transfer ordering: BIG ENDIAN,</li>
|
54 |
|
|
<li>Data transfer sequencing: UNDEFINED,</li>
|
55 |
13 |
alfik |
<li>Constraints on <code>CLK_I</code> signal: described in <a class="el" href="page_spec_clocks.html">Clocks</a>, maximum frequency: about 64 MHz.</li>
|
56 |
12 |
alfik |
</ul>
|
57 |
|
|
<h3>Use</h3>
|
58 |
13 |
alfik |
<ul>
|
59 |
|
|
<li>The <a class="el" href="classao68000.html" title="ao68000 top level module.">ao68000</a> is used as the processor for the OpenCores aoOCS project - Wishbone Amiga OCS SoC(<a href="http://opencores.org/project,aoocs">http://opencores.org/project,aoocs</a>).</li>
|
60 |
|
|
<li>It can also be used as a processor in a System-on-Chip booting Linux kernel version 2.6.33.1 up to <code>init</code> program lookup (<a class="el" href="page_soc_linux.html">System-on-Chip example with ao68000 running Linux</a>).</li>
|
61 |
|
|
</ul>
|
62 |
12 |
alfik |
<h3>Similar projects</h3>
|
63 |
|
|
<p>Other free soft-core implementations of M68000 microprocessor include:</p>
|
64 |
|
|
<ul>
|
65 |
|
|
<li>OpenCores TG68 (<a href="http://www.opencores.org/project,tg68">http://www.opencores.org/project,tg68</a>) - runs Amiga software, used as part of the Minimig Core,</li>
|
66 |
|
|
<li>Suska Atari VHDL WF_68K00_IP Core (<a href="http://www.experiment-s.de/en">http://www.experiment-s.de/en</a>) - runs Atari software,</li>
|
67 |
|
|
<li>OpenCores K68 (<a href="http://www.opencores.org/project,k68">http://www.opencores.org/project,k68</a>) - no user and supervisor modes distinction, executes most instructions, but not all.</li>
|
68 |
|
|
<li>OpenCores ae68 (<a href="http://www.opencores.org/project,ae68">http://www.opencores.org/project,ae68</a>) - no files uploaded as of 27.03.2010.</li>
|
69 |
|
|
</ul>
|
70 |
|
|
<h3>Limitations</h3>
|
71 |
|
|
<ul>
|
72 |
|
|
<li>Microcode not optimized: some instructions take more cycles to execute than the original MC68000,</li>
|
73 |
|
|
<li>TRACE not tested,</li>
|
74 |
13 |
alfik |
<li>The core is still large compared to other implementations.</li>
|
75 |
12 |
alfik |
</ul>
|
76 |
|
|
<h3>TODO</h3>
|
77 |
|
|
<ul>
|
78 |
13 |
alfik |
<li>Optimize the desgin and microcode,</li>
|
79 |
|
|
<li>Count the exact cycle count for every instruction,</li>
|
80 |
12 |
alfik |
<li>Test TRACE,</li>
|
81 |
13 |
alfik |
<li>Write more documentation.</li>
|
82 |
12 |
alfik |
</ul>
|
83 |
|
|
<h3>Status</h3>
|
84 |
|
|
<ul>
|
85 |
13 |
alfik |
<li>April 2010: Tested with WinUAE software MC68000 emulator,</li>
|
86 |
|
|
<li>April 2010: Booted Linux kernel up to <code>init</code> process lookup,</li>
|
87 |
|
|
<li>December 2010: Runs as a processor in OpenCores aoOCS project,</li>
|
88 |
|
|
<li>January 2011: Core area optimization by over 33% (Thanks to Frederic Requin).</li>
|
89 |
12 |
alfik |
</ul>
|
90 |
|
|
<h3>Requirements</h3>
|
91 |
|
|
<ul>
|
92 |
|
|
<li>Icarus Verilog simulator (<a href="http://www.icarus.com/eda/verilog/">http://www.icarus.com/eda/verilog/</a>) is required to compile the <code>tb_ao68000</code> testbench/wrapper,</li>
|
93 |
|
|
<li>Access to Altera Quartus II instalation directory (directory eda/sim_lib/) is required to compile the <code>tb_ao68000</code> testbench/wrapper,</li>
|
94 |
|
|
<li>GCC (<a href="http://gcc.gnu.org">http://gcc.gnu.org</a>) is required to compile the WinUAE MC68000 software emulator,</li>
|
95 |
|
|
<li>Java runtime (<a href="http://java.sun.com">http://java.sun.com</a>) is required to run the <code>ao68000_tool</code> (<a class="el" href="page_tool.html">ao68000_tool documentation</a>),</li>
|
96 |
|
|
<li>Java SDK (<a href="http://java.sun.com">http://java.sun.com</a>) is required to compile the <code>ao68000_tool</code> (<a class="el" href="page_tool.html">ao68000_tool documentation</a>),</li>
|
97 |
|
|
<li>Altera Quartus II synthesis tool (<a href="http://www.altera.com">http://www.altera.com</a>) is required to synthesise the <code>soc_for_linux</code> System-on-Chip (<a class="el" href="page_soc_linux.html">System-on-Chip example with ao68000 running Linux</a>).</li>
|
98 |
|
|
</ul>
|
99 |
|
|
<h3>Glossary</h3>
|
100 |
|
|
<ul>
|
101 |
|
|
<li><b><a class="el" href="classao68000.html" title="ao68000 top level module.">ao68000</a></b> - the <a class="el" href="classao68000.html" title="ao68000 top level module.">ao68000</a> IP Core processor,</li>
|
102 |
|
|
<li><b>MC68000</b> - the original Motorola MC68000 processor. </li>
|
103 |
|
|
</ul>
|
104 |
|
|
</div>
|
105 |
15 |
alfik |
<hr class="footer"/><address class="footer"><small>Generated on Sat Jan 15 2011 17:55:18 for ao68000 by 
|
106 |
12 |
alfik |
<a href="http://www.doxygen.org/index.html">
|
107 |
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address>
|
108 |
|
|
</body>
|
109 |
|
|
</html>
|