Skip to content

Commit

Permalink
Merge pull request #247 from ogamespec/main
Browse files Browse the repository at this point in the history
Bidirectional bus multiplexing wiki
  • Loading branch information
ogamespec authored Mar 26, 2024
2 parents 2355608 + afe8343 commit dbed54b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions buses.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,19 @@ ALU result to bottom.
|adh|SPH, PCH, W|IDU Hi|

The names of some internal bottom buses are arbitrary (do not make sense).

## Bidirectional bus multiplexing

This section describes the approach used in SM83 to connect bidirectional buses to consumers.

![buses](/imgstore/buses.jpg)

A few words if the schematic doesn't look very clear.

- The value from the bus does not come directly to the consumer, but is stored on the transparent DLatch (on the FET gates). From the DLatch output, the value comes out as a complement, because DLatch by its nature is an ordinary inverter (not)
- If you want to output a value from the consumer to the bus, the design in the figure below is used:
- The value is output via znand, with the OE signal used to "open" znand; for this reason, the consumer output value is inverted
- Bus is synchronous (clocked by CLK): when CLK=0 the bus is being precharged, when CLK=1 the value from the consumers is updated if they have been "connected" by their OE signals.
- Several consumers can be connected to the bus by hanging additional znand in bunches

From the above, it will be clear why the SM83 uses "inverse hold" for registers.
Binary file added imgstore/buses.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit dbed54b

Please sign in to comment.