Atom2K18 Multiboot Capabilities - hoglet67/AtomFpga GitHub Wiki
Introduction
Atom 2K18 now has more features and options than will fit into the relatively small Xilinx XC6SLX9 FPGA:
- 6502 or 65C02 processor
- Atom2K15 RAM/ROM support
- ICE Debugger (latest version - 0.985 - with upto 8 breakpoints)
- AtoMMC2 (latest verion - 2D)
- Extended 6847 Graphics (e.g. 2x2 block graphics)
- Soft Character RAM
- VGA80x40 mode
- SID audio
- Hardware Scrolling
- Double Buffered Video Memory
- Mouse
- UART
- Integrated 6522 (runs at upto 8 MHz)
- LEDs (Knight-Rider Mode + debugging options)
- Profiling counters
- Real time clock
- Serial Access Memory (SAM)
- Page Access Memory (PAM)
- Programmable Palette
To allow a choice of features, we have pre-built multiple versions of the Atom 2K18 Core.
To save having to keep re-programming the FPGA EEPROM, we have also added a multiboot capability, which allows switching to another core on-the-fly using a poke from the Atom.
Details of each Core
The current multi-boot FPGA image includes 8 cores:
The cores are organized into pairs, where the even number core uses a 6502 processor and the odd numbered core uses a 65C02 processor. There are no other differences between the cores in a pair.
Here is a brief summary of what's excluded in each core pair:
Core 0 / 1
- 6502 processor (Core 0) or 65C02 processor (Core 1)
- excludes the ICE Debugger
Core 2 / 3
- 6502 processor (Core 2) or 65C02 processor (Core 3)
- excludes the SID
- excludes the Mouse
Core 4 / 5
- 6502 processor (Core 4) or 65C02 processor (Core 5)
- excludes the AtoMMC2
Core 6 / 7
- 6502 processor (Core 6) or 65C02 processor (Core 7)
- excludes the Mouse
- excludes the UART
- excludes the Hardware Scrolling
- excludes the Double Buffered Video Memory
- excludes the Profiling Counters
- excludes the RTC
Usage Notes
On power up, core 0 is selected.
The user can select core N as follows:
?#BFFB=#80 + N
For example, to select core 5:
?#BFFB=#85
To check the core that is currently selected:
PRINT ?#BFFB
When a core is selected, the Atom will immediately reboot into that core. Any programs in main memory will remain, but video memory (#8000-#9FFF) will be wiped (as this resides with the FPGA).
When the ICE Debugger is present, it is used by connecting a USB cable between a PC and the FPGA board, and then running a terminal program at 115,200 baud.
When the AtoMMC2 is missing, accesses to #B4xx are redirected to the expansion bus. It's possible, using Roland's FPGAtom I/O Expansion board, to add a AtoMMC externally.
[ Future: another option might be to use AtoMMC Pi on the internal Raspberry Pi ]
FPGA Utilization
20200616_1228 Release
CORE 0
Number of Slice Registers: 3,192 out of 11,440 27%
Number of Slice LUTs: 4,371 out of 5,720 76%
Number of RAMB16BWERs: 22 out of 32 68%
Number of RAMB8BWERs: 8 out of 64 12%
CORE 1
Number of Slice Registers: 3,203 out of 11,440 27%
Number of Slice LUTs: 4,346 out of 5,720 75%
Number of RAMB16BWERs: 23 out of 32 71%
Number of RAMB8BWERs: 7 out of 64 10%
CORE 2
Number of Slice Registers: 3,728 out of 11,440 32%
Number of Slice LUTs: 5,098 out of 5,720 89%
Number of RAMB16BWERs: 31 out of 32 96%
Number of RAMB8BWERs: 1 out of 64 1%
CORE 3
Number of Slice Registers: 3,706 out of 11,440 32%
Number of Slice LUTs: 5,123 out of 5,720 89%
Number of RAMB16BWERs: 31 out of 32 96%
Number of RAMB8BWERs: 1 out of 64 1%
CORE 4
Number of Slice Registers: 3,771 out of 11,440 32%
Number of Slice LUTs: 5,237 out of 5,720 91%
Number of RAMB16BWERs: 22 out of 32 68%
Number of RAMB8BWERs: 8 out of 64 12%
CORE 5
Number of Slice Registers: 3,774 out of 11,440 32%
Number of Slice LUTs: 5,092 out of 5,720 89%
Number of RAMB16BWERs: 23 out of 32 71%
Number of RAMB8BWERs: 7 out of 64 10%
CORE 6
Number of Slice Registers: 4,108 out of 11,440 35%
Number of Slice LUTs: 5,562 out of 5,720 97%
Number of RAMB16BWERs: 29 out of 32 90%
Number of RAMB8BWERs: 2 out of 64 3%
CORE 7
Number of Slice Registers: 4,077 out of 11,440 35%
Number of Slice LUTs: 5,505 out of 5,720 96%
Number of RAMB16BWERs: 30 out of 32 93%
Number of RAMB8BWERs: 2 out of 64 3%
Note: The RAMB8BWERs and the RAMB16BWERs cannot be used at the same time.