thejpster / monotron

A simple 8-bit home computer style application for the TI Tiva-C Launchpad
Apache License 2.0
191 stars 9 forks source link

The Monotron Platform #71

Closed thejpster closed 4 years ago

thejpster commented 4 years ago

It would be nice if 'Monotron' was an application you could run on different boards (see #12). @IGBC also wanted to port it to a board with an FPGA based GPU. This is the classic M-N problem.

Bad solution (M*N):

CPU Board A +---+ Expansion Board A
             \ /
              X
             / \
CPU Board B +---+ Expansion Board B

Better solution (M+N):

CPU Board A +                  + Expansion Board A
             \                /
              Common Interface
             /                \
CPU Board B +                  + Expansion Board B

The standard microcontroller interfaces are:

We should endeavour to support all of these, as they all have their uses.

There are several interface pinouts in common use:

By adding another, we are in danger of:

Obligatory XKCD reference

The general idea I think should be:

+-----------------+   +-[VGA]-[USB?]-[PWR]-+
| :  :            |   |                    |
| :  :            |===|B                   |
| :  :            |   |R                   |
|                 |   |I                   |
|                 |   |D                   |
|                 |===|G                   |
|     Clik        |   |E                   |
| Expansion Board |   |     CPU Board      |
+-----------------+   +--------------------+

+-----------------+   +-[VGA]-[USB?]-[PWR]-+
|                 |   |                    |
| ::::::::        |===|B                   |
|                 |   |R                   |
|                 |   |I                   |
|                 |   |D                   |
|                 |===|G                   |
|     Pi Hat      |   |E                   |
| Expansion Board |   |     CPU Board      |
+-----------------+   +--------------------+

+-----------------+   +-[VGA]-[USB?]-[PWR]-+
|                 |   |                    |
| ::  ::  ::  ::  |===|B                   |
| ::  ::  ::  ::  |   |R                   |
| ::  ::  ::  ::  |   |I                   |
|                 |   |D                   |
|                 |===|G                   |
| Monotron 4-way  |   |E                   |
| Expansion Board |   |     CPU Board      |
+-----------------+   +--------------------+

i.e. a bunch of M CPU boards, designed for Nucleo-64, Launchpad, TinyFPGA, etc, and a bunch of N expansion boards, offering one or more connectors of a specific type.

They interconnect using our own standard 'Bridge' interface, that carries as many signals as we can reasonably consider.

thejpster commented 4 years ago

The MBI (Monotron Bridge Interface) will look something like:

49 pins plus, ground, so say, 64 pins? On a 2x32 header? You'd have a basic sub-set that all CPU boards must implement (I2C, one IRQ, one UART, one SPI CS, etc) which allows for one slot. A fully-featured CPU board could handle four slots, with each slot using all three buses.

thejpster commented 4 years ago

See GitHub.com/neotron-compute