// This file defines the hardware modules and interconnections of a simulated // NED computer. // // Note that the simulated system is intentionally overprovisioned with respect // to the likely hardware configuration of the real NED computer. This is // intended to allow easy experimentation inside the simulator without // requiring a DSL (or config file parser) for system configuration, or // requiring frequent changes to the bootrom code. // // Although NED can be built (or simulated) with an arbitrary number of GBuses, // this simulated system has two. GBus0 is intended primarily for 'compute' // tasks and GBus1 is intended primarily for 'io' tasks. // // The simulated system is laid out as shown in the diagram below. Note that // devices connected to UARTs (e.g. network, mouse, etc) are not part of NEDsim // and are included only to document external connectivity assumed by software // running on NED. // // // GBus0 GBus1 // v v // +-------+ | +------------+ | +-------+ // -----------| SSB |-----|-----| GIMP |-----|-----| SSB |---------- // | +-------+ | +------------+ | +-------+ | // | | | | // | | | | // +--------+ +-------+ | +------------+ | +-------+ +--------+ // | |-----| CPU 0 |-----|-----| Interrupt |-----|-----| CPU 0 |-----| | // | | +-------+ | | Controller | | +-------+ | | // | Stacks | o | +------------+ | o | Stacks | // | | o | | o | | // | 4x | o | | o | 4x | // | Intrlv | +-------+ | +------------+ | +-------+ | Intrlv | // | |-----| CPU 7 |-----|-----| Global |-----|-----| CPU 7 |-----| | // +--------+ +-------+ | | RAM 0 | | +-------+ +--------+ // | +------------+ | // | o | // +-------+ | o | +-------+ // | Local |-----| o |-----| Local | // | RAM 0 | | +------------+ | | RAM 0 | // +-------+ |-----| Global |-----| +-------+ // o | | RAM 13 | | o // o | +------------+ | o // o | | o // +-------+ | | +-------+ // | Local |-----| |-----| Local | // | RAM 7 | | | | RAM 7 | // +-------+ | | +-------+ // | | // | | // +-----+ | | +-----+ // | ROM |-----| |-----| ROM | // +-----+ | | +-----+ // | | // | | // +-------+ +--------+ | | +---------+ +----------+ // | Debug |-----| UART 0 |-----| |-----| UART 0 |-----| Terminal | // +-------+ +--------+ | | +---------+ +----------+ // | | // | | // +--------+ | | +---------+ +---------+ // | UART 1 |-----| |-----| UART 1 |-----| Network | // +--------+ | | +---------+ +---------+ // o | | // o | | // o | | +---------+ +----------+ // +--------+ | |-----| UART 2 |-----| Keyboard | // | UART 3 |-----| | +---------+ +----------+ // +--------+ | | // ^ | // | +---------+ +-------+ // |-----| UART 3 |-----| Mouse | // | +---------+ +-------+ // | // | // | +---------+ // |-----| UART 4 | // | +---------+ // | o // | o // | o // | +---------+ // |-----| UART 15 | // | +---------+ // | // | // | +---------+ // |-----| Block | // | | Storage | // | | (TODO) | // | +---------+ // | // | // | +--------------+ // |-----| Video Output | // | | (TODO) | // | +--------------+ // ^