1 |
2 |
robfinch |
# rf68000
|
2 |
|
|
|
3 |
|
|
## Overview
|
4 |
|
|
This is a mc68000 similar core. It is not the smallest core, some aspects of the core are not well thought out, but it runs.
|
5 |
|
|
It is *not* micro-coded and instead uses a large state machine. Many classes of instructions have their own states.
|
6 |
|
|
ALU operations are distributed and there are three separate result lanes for byte, word and long-word operations.
|
7 |
|
|
The core may be configured for little-endian operation. The default is for big-endian.
|
8 |
|
|
There is some 68010 compatibility. The movec instruction and vector base register are present. Instructions that operate on the status register are restricted to supervisor mode. This is to support virtual machine.
|
9 |
|
|
movec was desired to allow access to additional control registers. tick-tick count, coreno-the multi-core core number
|
10 |
|
|
|
11 |
|
|
## Status
|
12 |
|
|
The core fails to complete the test suite dervied from https://github.com/cdifan/cputest. which itself is derived from MicroCoreLabs https://github.com/MicroCoreLabs/Projects/MCL68/MC68000_Test_Code. Known to be a good test of operation of a 68000. It gets about 3/4 of the way through. So there are some bugs yet. Almost all instructions are working. The following instructions are not working correctly: ABCD, SBCD, NBCD, and DIVS. The procedure to handle BCD numbers is to convert to binary, perform the operation, then convert back to BCD. Suspect illegal combinations of BCD digits are working differently.
|
13 |
|
|
The core works well enough to run a small monitor program that allows dumping and editing memory.
|
14 |
|
|
It is used in a multi-core network-on-chip.
|
15 |
|
|
|
16 |
|
|
## History
|
17 |
|
|
Work started on the core in 2008. It was set aside for a long time, and work resumed in November 2022.
|
18 |
|
|
|
19 |
|
|
## Supported Bus Interface
|
20 |
|
|
The core is *WISHBONE* B.3 master compatible.
|
21 |
|
|
Supported cycles: master read/write, master read/modify/write
|
22 |
|
|
Address and data bus are both 32-bits wide.
|
23 |
|
|
|
24 |
|
|
## Size / Performance
|
25 |
|
|
approx. 13,000 LUTs (21,000 LC's), approx <80 MHz max (in -1 part).
|
26 |
|
|
No idea how the cycle times compare to a stock 68000, but suspect it may be a little faster due to minimum bus cycle time of two clocks and a 32-bit data bus.
|
27 |
|
|
|
28 |
|
|
## Software
|
29 |
|
|
The core may use 68000 software. There is a modified 68k vasm assembler. Additional control registers were added for movec.
|
30 |
|
|
There are some software examples in the examples folder.
|
31 |
|
|
|
32 |
|
|
## License
|
33 |
|
|
BSD-3
|
34 |
|
|
|
35 |
|
|
## Other 68k Cores
|
36 |
|
|
http://www.opencores.org/project,ao68000
|
37 |
|
|
http://www.opencores.org/project,tg68
|
38 |
|
|
http://www.experiment-s.de/en
|
39 |
|
|
http://www.opencores.org/project,k68
|
40 |
|
|
http://www.opencores.org/project,ae68
|