DMG-CPU Research
On this page
  1. Block Diagram
  2. Architecture Overview
  3. Design Overview
  4. Buses
  5. Revisions

DMG-CPU LR35902 SoC

Block Diagram

cpu_block 1

Top-level layout of the entire SoC:

dmgcpu_sm

Architecture Overview

After a long analysis, the impressions about the architectural solutions used in DMG-CPU can be expressed as follows:

Design Overview

The design will be considered from the point of view of module topology ("pools" of standard cells that can be found on the chip). The description is rather superficial, but it is good for "first sight".

Buses

This section contains a list of all internal buses. Tables of the other signals can be found in the corresponding sections.

Name From Where To Description
a 2 Core / Arb+MMIO+APU HRAM, BootROM, Arb, MMIO, PPU1, PPU2, APU Internal address bus. In TEST1 mode, all internal address bus drivers are disabled and the value comes from the outside, together with the Arb+MMIO+APU modules (for reason 2) instead of the SM83 core.
d Global Global Internal data bus. In TEST1 mode all internal drivers are not allowed to drive the data bus. During clk2=0 (and if TEST1 Mode is disabled) the data bus is precharged from 4 places at once (3 prechargers in different modules and 1 precharger in SM83 Core)
n_ma PPU1 Pads External video memory address bus (inverse hold)
nma PPU1, PPU2 PPU1, PPU2 Internal video memory address bus between PPUs (inverse hold)
md PPU1, PPU2, Arbiter PPU1, PPU2, Arbiter Internal video memory data bus
oam_din Arb PPU2 OAM data input bus
wave_a APU WaveRAM Wave RAM address bus
wave_rd WaveRAM APU Wave RAM data output bus
oa PPU2 OAM OAM address bus
n_oama PPU2 OAM OAM A data bus (inverse hold)
n_oamb PPU2 OAM OAM B data bus (inverse hold)
dma_a MMIO Arb, APU, PPU2 DMA address bus. Due to the fact that the address bus arbitration is separated between Arb, MMIO and APU - part of the bus bits go to Arb (15) and APU (7:0). This bus is used directly for DMA needs only in PPU2

What does the letter M in the name of the PPU and VRAM buses stand for? I don't know... maybe Mario or Metroid? :smiley:

Revisions

TBD.


  1. GAMEBOY Programming Manual: https://archive.org/details/GameBoyProgManVer1.1 

  2. The chip is topologically arranged so that the address bus arbitration is divided into three parts: in arb, in mmio, and in apu, to equalize wire lengths.