OpenCores
URL https://opencores.org/ocsvn/ao68000/ao68000/trunk

Subversion Repositories ao68000

[/] [ao68000/] [trunk/] [doc/] [src/] [documentation.v] - Diff between revs 12 and 13

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 12 Rev 13
Line 76... Line 76...
 * <table width=100%>
 * <table width=100%>
 * <tr style="background: #CCCCCC; font-weight: bold;">
 * <tr style="background: #CCCCCC; font-weight: bold;">
 *     <td>Rev.     </td><td>Date       </td><td>Author             </td><td>Description        </td></tr>
 *     <td>Rev.     </td><td>Date       </td><td>Author             </td><td>Description        </td></tr>
 * <tr><td>1.0      </td><td>28.03.2010 </td><td>Aleksander Osman   </td><td>First Draft        </td></tr>
 * <tr><td>1.0      </td><td>28.03.2010 </td><td>Aleksander Osman   </td><td>First Draft        </td></tr>
 * <tr><td>1.1      </td><td>11.12.2010 </td><td>Aleksander Osman   </td><td>DBcc opcode microcode fix. Wishbone SEL signal fix. Project directory structure simplification.</td></tr>
 * <tr><td>1.1      </td><td>11.12.2010 </td><td>Aleksander Osman   </td><td>DBcc opcode microcode fix. Wishbone SEL signal fix. Project directory structure simplification.</td></tr>
 
 * <tr><td>1.2      </td><td>15.01.2011 </td><td>Aleksander Osman, Frederic Requin</td><td>Core area optimization: biggest gain in ALU multiplication and division reimplementation.</td></tr>
 * </table>
 * </table>
 */
 */
 
 
/*! \page page_spec_introduction Introduction
/*! \page page_spec_introduction Introduction
 *
 *
Line 87... Line 88...
 *
 *
 * <h3>Features</h3>
 * <h3>Features</h3>
 *  - CISC processor with microcode,
 *  - CISC processor with microcode,
 *  - WISHBONE revision B.3 compatible MASTER interface,
 *  - WISHBONE revision B.3 compatible MASTER interface,
 *  - Not cycle exact with the MC68000, some instructions take more cycles to complete, some less,
 *  - Not cycle exact with the MC68000, some instructions take more cycles to complete, some less,
 *  - Uses about 7500 LE on Altera Cyclone II and about 45000 bits of RAM for microcode,
 *  - Uses about 4925 LE on Altera Cyclone II and about 45600 bits of RAM for microcode,
 *  - Tested against the WinUAE M68000 software emulator. Every 16-bit instruction was tested with random register contents and RAM contents
 *  - Tested against the WinUAE M68000 software emulator. Every 16-bit instruction was tested with random register contents and RAM contents
 *    (\ref page_verification). The result of execution was compared,
 *    (\ref page_verification). The result of execution was compared,
 *  - Runs Linux kernel version 2.6.33.1 up to init process lookup (\ref page_soc_linux),
 
 *  - Contains a simple prefetch which is capable of holding up to 5 16-bit instruction words,
 *  - Contains a simple prefetch which is capable of holding up to 5 16-bit instruction words,
 *  - Documentation generated by Doxygen (www.doxygen.org) with doxverilog patch (http://developer.berlios.de/projects/doxverilog/). The specification
 *  - 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.
 *    is automatically extracted from the Doxygen HTML output.
 *
 *
 * <h3>WISHBONE compatibility</h3>
 * <h3>WISHBONE compatibility</h3>
Line 108... Line 108...
 *  - WISHBONE data port size: 32-bit,
 *  - WISHBONE data port size: 32-bit,
 *  - Data port granularity: 8-bits,
 *  - Data port granularity: 8-bits,
 *  - Data port maximum operand size: 32-bits,
 *  - Data port maximum operand size: 32-bits,
 *  - Data transfer ordering: BIG ENDIAN,
 *  - Data transfer ordering: BIG ENDIAN,
 *  - Data transfer sequencing: UNDEFINED,
 *  - Data transfer sequencing: UNDEFINED,
 *  - Constraints on <tt>CLK_I</tt> signal: described in \ref page_spec_clocks, maximum frequency: about 70 MHz.
 *  - Constraints on <tt>CLK_I</tt> signal: described in \ref page_spec_clocks, maximum frequency: about 64 MHz.
 *
 *
 * <h3>Use</h3>
 * <h3>Use</h3>
 * The ao68000 can be used as an processor in a System-on-Chip booting Linux kernel up to <tt>init</tt> program lookup (\ref page_soc_linux).
 * - The ao68000 is used as the processor for the OpenCores aoOCS project - Wishbone Amiga OCS SoC(http://opencores.org/project,aoocs).
 
 * - It can also be used as a processor in a System-on-Chip booting Linux kernel version 2.6.33.1 up to <tt>init</tt> program lookup (\ref page_soc_linux).
 *
 *
 * <h3>Similar projects</h3>
 * <h3>Similar projects</h3>
 * Other free soft-core implementations of M68000 microprocessor include:
 * Other free soft-core implementations of M68000 microprocessor include:
 *  - OpenCores TG68 (http://www.opencores.org/project,tg68) - runs Amiga software, used as part of the Minimig Core,
 *  - OpenCores TG68 (http://www.opencores.org/project,tg68) - runs Amiga software, used as part of the Minimig Core,
 *  - Suska Atari VHDL WF_68K00_IP Core (http://www.experiment-s.de/en) - runs Atari software,
 *  - Suska Atari VHDL WF_68K00_IP Core (http://www.experiment-s.de/en) - runs Atari software,
Line 123... Line 124...
 *  - OpenCores ae68 (http://www.opencores.org/project,ae68) - no files uploaded as of 27.03.2010.
 *  - OpenCores ae68 (http://www.opencores.org/project,ae68) - no files uploaded as of 27.03.2010.
 *
 *
 * <h3>Limitations</h3>
 * <h3>Limitations</h3>
 *  - Microcode not optimized: some instructions take more cycles to execute than the original MC68000,
 *  - Microcode not optimized: some instructions take more cycles to execute than the original MC68000,
 *  - TRACE not tested,
 *  - TRACE not tested,
 *  - The core is large compared to other implementations.
 *  - The core is still large compared to other implementations.
 *
 *
 * <h3>TODO</h3>
 * <h3>TODO</h3>
 *  - Optimize the microcode and count the exact cycle count for every instruction,
 *  - Optimize the desgin and microcode,
 
 *  - Count the exact cycle count for every instruction,
 *  - Test TRACE,
 *  - Test TRACE,
 *  - Run WISHBONE verification models,
 *  - Write more documentation.
 *  - More documentation of the ao68000 module: signal description, operation, FSM in <tt>bus_control</tt>,
 
 *  - Describe changes done in WinUAE sources (copy from ao.c),
 
 *  - Describe microcode words and subprocedures,
 
 *  - Document the <tt>soc_for_linux</tt> modules,
 
 *  - Prepare scripts for VATS: run_sim -r -> regresion test,
 
 *  - Use memories from OpenCore common.
 
 *
 *
 * <h3>Status</h3>
 * <h3>Status</h3>
 *  - Tested with WinUAE software MC68000 emulator,
 *  - April 2010: Tested with WinUAE software MC68000 emulator,
 *  - Booted Linux kernel up to <tt>init</tt> process lookup.
 *  - April 2010: Booted Linux kernel up to <tt>init</tt> process lookup,
 
 *  - December 2010: Runs as a processor in OpenCores aoOCS project,
 
 *  - January 2011: Core area optimization by over 33% (Thanks to Frederic Requin).
 *
 *
 * <h3>Requirements</h3>
 * <h3>Requirements</h3>
 *  - Icarus Verilog simulator (http://www.icarus.com/eda/verilog/) is required to compile the <tt>tb_ao68000</tt> testbench/wrapper,
 *  - Icarus Verilog simulator (http://www.icarus.com/eda/verilog/) is required to compile the <tt>tb_ao68000</tt> testbench/wrapper,
 *  - Access to Altera Quartus II instalation directory (directory eda/sim_lib/) is required to compile the <tt>tb_ao68000</tt> testbench/wrapper,
 *  - Access to Altera Quartus II instalation directory (directory eda/sim_lib/) is required to compile the <tt>tb_ao68000</tt> testbench/wrapper,
 *  - GCC (http://gcc.gnu.org) is required to compile the WinUAE MC68000 software emulator,
 *  - GCC (http://gcc.gnu.org) is required to compile the WinUAE MC68000 software emulator,
Line 372... Line 370...
 * <tr style="background: #CCCCCC; font-weight: bold;">
 * <tr style="background: #CCCCCC; font-weight: bold;">
 *     <td rowspan=2>Name</td><td rowspan=2>Source</td><td colspan=3>Rates (MHz)</td><td rowspan=2>Remarks</td><td rowspan=2>Description</td></tr>
 *     <td rowspan=2>Name</td><td rowspan=2>Source</td><td colspan=3>Rates (MHz)</td><td rowspan=2>Remarks</td><td rowspan=2>Description</td></tr>
 * <tr style="background: #CCCCCC; font-weight: bold;">
 * <tr style="background: #CCCCCC; font-weight: bold;">
 *     <td>Max</td><td>Min</td><td>Resolution</td></tr>
 *     <td>Max</td><td>Min</td><td>Resolution</td></tr>
 *
 *
 * <tr><td>CLK_I</td><td>Input Port</td><td>70</td><td>-</td><td>-</td><td>-</td><td>System clock.</td></tr>
 * <tr><td>CLK_I</td><td>Input Port</td><td>64</td><td>-</td><td>-</td><td>-</td><td>System clock.</td></tr>
 * </table>
 * </table>
 */
 */
 
 
/*! \page page_spec_ports IO Ports
/*! \page page_spec_ports IO Ports
 * <h3>WISHBONE IO Ports</h3>
 * <h3>WISHBONE IO Ports</h3>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.