Integrated Circuit Chips: Difference between revisions
NerdOfEpic (talk | contribs) No edit summary |
NerdOfEpic (talk | contribs) No edit summary |
||
Line 107: | Line 107: | ||
= RAM = | = RAM = | ||
System RAM in NerdConsole should operate at 55ns or faster. | |||
== AS6C62256 == | == AS6C62256 == | ||
This 32KB RAM chip is used for NerdConsole's 16KB of Main RAM. There aren't any readily available 16KB static RAM chips, so the decision was made to use a 32KB chip instead, and only use half of it. Main RAM was intentionally placed on a separate chip from Extended RAM to simplify bank selecting logic. | This 32KB RAM chip is used for NerdConsole's 16KB of Main RAM. There aren't any readily available 16KB static RAM chips, so the decision was made to use a 32KB chip instead, and only use half of it. Main RAM was intentionally placed on a separate chip from Extended RAM to simplify bank selecting logic. | ||
Line 268: | Line 270: | ||
= ROM = | = ROM = | ||
Cartridge ROM in NerdConsole should operate at 150ns or faster. There are several cartridge specifications that use different types of ROM chips. | |||
== | |||
== | == AT28C64 == | ||
== | This 8KB ROM chip is so small (storage-wise) that it represents only 1/2 of one bank. The use of this chip in a cartridge is generally expected to be for coding challenges that try to do as much as possible with as little code as possible. | ||
== | |||
== 256KB == | {| class="wikitable" | ||
== 512KB == | | style="text-align:right" width="180" | NC | ||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 28 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | ~WE | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | NC | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 16 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 15 | |||
| style="text-align:left" | D3 | |||
|} | |||
== AT28C256 == | |||
This 32KB ROM chip is used in small cartridges and typically provides exactly one bank of each of Low ROM and High ROM without the need for any support chips. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | A14 | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 28 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | ~WE | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | A13 | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 16 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 15 | |||
| style="text-align:left" | D3 | |||
|} | |||
== W27C512 == | |||
This is a 64KB ROM chip that is both fast and usually inexpensive. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | A15 | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 28 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | A14 | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | A13 | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 16 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 15 | |||
| style="text-align:left" | D3 | |||
|} | |||
== SST39SF010 == | |||
This is the 128KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | NC | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 32 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A16 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 31 | |||
| style="text-align:left" | ~WE | |||
|- | |||
| style="text-align:right" | A15 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 30 | |||
| style="text-align:left" | NC | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 29 | |||
| style="text-align:left" | A14 | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 28 | |||
| style="text-align:left" | A13 | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 15 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 16 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D3 | |||
|} | |||
== SST39SF020 == | |||
This is the 256KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | NC | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 32 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A16 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 31 | |||
| style="text-align:left" | ~WE | |||
|- | |||
| style="text-align:right" | A15 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 30 | |||
| style="text-align:left" | A17 | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 29 | |||
| style="text-align:left" | A14 | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 28 | |||
| style="text-align:left" | A13 | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 15 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 16 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D3 | |||
|} | |||
== SST39SF040 == | |||
This is the 512KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | A18 | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 32 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | A16 | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 31 | |||
| style="text-align:left" | ~WE | |||
|- | |||
| style="text-align:right" | A15 | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 30 | |||
| style="text-align:left" | A17 | |||
|- | |||
| style="text-align:right" | A12 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 29 | |||
| style="text-align:left" | A14 | |||
|- | |||
| style="text-align:right" | A7 | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 28 | |||
| style="text-align:left" | A13 | |||
|- | |||
| style="text-align:right" | A6 | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 27 | |||
| style="text-align:left" | A8 | |||
|- | |||
| style="text-align:right" | A5 | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 26 | |||
| style="text-align:left" | A9 | |||
|- | |||
| style="text-align:right" | A4 | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 25 | |||
| style="text-align:left" | A11 | |||
|- | |||
| style="text-align:right" | A3 | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 24 | |||
| style="text-align:left" | ~OE | |||
|- | |||
| style="text-align:right" | A2 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | A10 | |||
|- | |||
| style="text-align:right" | A1 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | ~CE | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 13 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 14 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D2 | |||
! style="text-align:left" | 15 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 16 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D3 | |||
|} | |||
= Audio = | = Audio = | ||
The audio system in NerdConsole has a dedicated audio processor which is driven the CPU. The output of that is then piped to the Raspberry Pi based PPU for inclusion in the HDMI signal. | |||
== YM-3812 == | == YM-3812 == | ||
The Yamaha YM-3812 is the same audio processor that was found in countless Adlib and SoundBlaster sound cards. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | VCC | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 24 | |||
| style="text-align:left" width="180" | M | |||
|- | |||
| style="text-align:right" | ~IRQ | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 23 | |||
| style="text-align:left" | SY | |||
|- | |||
| style="text-align:right" | ~IC | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 22 | |||
| style="text-align:left" | NC | |||
|- | |||
| style="text-align:right" | A0 | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 21 | |||
| style="text-align:left" | MO | |||
|- | |||
| style="text-align:right" | ~WR | |||
! style="text-align:left" | 5 | |||
! style="text-align:right" | 20 | |||
| style="text-align:left" | SH | |||
|- | |||
| style="text-align:right" | ~RD | |||
! style="text-align:left" | 6 | |||
! style="text-align:right" | 19 | |||
| style="text-align:left" | NC | |||
|- | |||
| style="text-align:right" | ~CS | |||
! style="text-align:left" | 7 | |||
! style="text-align:right" | 18 | |||
| style="text-align:left" | D7 | |||
|- | |||
| style="text-align:right" | NC | |||
! style="text-align:left" | 8 | |||
! style="text-align:right" | 17 | |||
| style="text-align:left" | D6 | |||
|- | |||
| style="text-align:right" | NC | |||
! style="text-align:left" | 9 | |||
! style="text-align:right" | 16 | |||
| style="text-align:left" | D5 | |||
|- | |||
| style="text-align:right" | D0 | |||
! style="text-align:left" | 10 | |||
! style="text-align:right" | 15 | |||
| style="text-align:left" | D4 | |||
|- | |||
| style="text-align:right" | D1 | |||
! style="text-align:left" | 11 | |||
! style="text-align:right" | 14 | |||
| style="text-align:left" | D3 | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 12 | |||
! style="text-align:right" | 13 | |||
| style="text-align:left" | D2 | |||
|} | |||
== YM-3014 == | == YM-3014 == | ||
This chip is a digital to analog converter (DAC) and is used to convert the digital signals produced by the YM-3812 into actual analog audio waveforms. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | VCC | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 8 | |||
| style="text-align:left" width="180" | MP | |||
|- | |||
| style="text-align:right" | To BUFF | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 7 | |||
| style="text-align:left" | RB | |||
|- | |||
| style="text-align:right" | LOAD | |||
! style="text-align:left" | 3 | |||
! style="text-align:right" | 6 | |||
| style="text-align:left" | GND | |||
|- | |||
| style="text-align:right" | SD | |||
! style="text-align:left" | 4 | |||
! style="text-align:right" | 5 | |||
| style="text-align:left" | CLOCK | |||
|} | |||
= Logic = | = Logic = | ||
Line 682: | Line 1,247: | ||
| style="text-align:left" | CLK | | style="text-align:left" | CLK | ||
|} | |} | ||
= Clock = | |||
Clock generation is handled with crystal oscillators. Regardless of the size (DIP-8 or DIP-14) the pinout is the same. | |||
{| class="wikitable" | |||
| style="text-align:right" width="180" | NC | |||
! style="text-align:left" width="30" | 1 | |||
! style="text-align:right" width="30" | 4 | |||
| style="text-align:left" width="180" | VCC | |||
|- | |||
| style="text-align:right" | GND | |||
! style="text-align:left" | 2 | |||
! style="text-align:right" | 3 | |||
| style="text-align:left" | Clock | |||
|} | |||
== CPU Clock == | |||
The main CPU in NerdConsole operates at 6.00 MHz. | |||
== Audio Clock == | |||
The audio system in NerdConsole operates at 3.58 MHz. There is an independent clock crystal for this instead of and form of clock division of the main CPU clock. |
Revision as of 20:48, 21 January 2024
This is a collection of pinouts and basic descriptions for all of the various chips used in NerdConsole.
Processor
65C02
This is the main processor in NerdConsole. It is operated at 6.00 MHz.
~VP (Vector Pull) | 1 | 40 | ~RES (Reset) |
---|---|---|---|
RDY (Ready) | 2 | 39 | PHI2O (Phase 2 Clock Out) |
PHI1O (Phase 1 Clock Out) | 3 | 38 | ~SO (Set Overflow) |
~IRQ (Interrupt Request) | 4 | 37 | Phase 2 Clock In |
~ML (Memory Lock) | 5 | 36 | BE (Bus Enable) |
~NMI (Non-Maskable Interrupt) | 6 | 35 | NC |
SYNC | 7 | 34 | R~W (Read/~Write) |
VCC | 8 | 33 | D0 |
A0 | 9 | 32 | D1 |
A1 | 10 | 31 | D2 |
A2 | 11 | 30 | D3 |
A3 | 12 | 29 | D4 |
A4 | 13 | 28 | D5 |
A5 | 14 | 27 | D6 |
A6 | 15 | 26 | D7 |
A7 | 16 | 25 | A15 |
A8 | 17 | 24 | A14 |
A9 | 18 | 23 | A13 |
A10 | 19 | 22 | A12 |
A11 | 20 | 21 | GND |
RAM
System RAM in NerdConsole should operate at 55ns or faster.
AS6C62256
This 32KB RAM chip is used for NerdConsole's 16KB of Main RAM. There aren't any readily available 16KB static RAM chips, so the decision was made to use a 32KB chip instead, and only use half of it. Main RAM was intentionally placed on a separate chip from Extended RAM to simplify bank selecting logic.
A14 | 1 | 28 | VCC |
---|---|---|---|
A12 | 2 | 27 | ~WE |
A7 | 3 | 26 | A13 |
A6 | 4 | 25 | A8 |
A5 | 5 | 24 | A9 |
A4 | 6 | 23 | A11 |
A3 | 7 | 22 | ~OE |
A2 | 8 | 21 | A10 |
A1 | 9 | 20 | ~CE |
A0 | 10 | 19 | D7 |
D0 | 11 | 18 | D6 |
D1 | 12 | 17 | D5 |
D2 | 13 | 16 | D4 |
GND | 14 | 15 | D3 |
AS6C4008
This 512KB RAM chip is used for Extended RAM and provides 32x 16KB banks.
A18 | 1 | 32 | VCC |
---|---|---|---|
A16 | 2 | 31 | A15 |
A14 | 3 | 30 | A17 |
A12 | 4 | 29 | ~WE |
A7 | 5 | 28 | A13 |
A6 | 6 | 27 | A8 |
A5 | 7 | 26 | A9 |
A4 | 8 | 25 | A11 |
A3 | 9 | 24 | ~OE |
A2 | 10 | 23 | A10 |
A1 | 11 | 22 | ~CE |
A0 | 12 | 21 | D7 |
D0 | 13 | 20 | D6 |
D1 | 14 | 19 | D5 |
D2 | 15 | 18 | D4 |
GND | 16 | 17 | D3 |
ROM
Cartridge ROM in NerdConsole should operate at 150ns or faster. There are several cartridge specifications that use different types of ROM chips.
AT28C64
This 8KB ROM chip is so small (storage-wise) that it represents only 1/2 of one bank. The use of this chip in a cartridge is generally expected to be for coding challenges that try to do as much as possible with as little code as possible.
NC | 1 | 28 | VCC |
---|---|---|---|
A12 | 2 | 27 | ~WE |
A7 | 3 | 26 | NC |
A6 | 4 | 25 | A8 |
A5 | 5 | 24 | A9 |
A4 | 6 | 23 | A11 |
A3 | 7 | 22 | ~OE |
A2 | 8 | 21 | A10 |
A1 | 9 | 20 | ~CE |
A0 | 10 | 19 | D7 |
D0 | 11 | 18 | D6 |
D1 | 12 | 17 | D5 |
D2 | 13 | 16 | D4 |
GND | 14 | 15 | D3 |
AT28C256
This 32KB ROM chip is used in small cartridges and typically provides exactly one bank of each of Low ROM and High ROM without the need for any support chips.
A14 | 1 | 28 | VCC |
---|---|---|---|
A12 | 2 | 27 | ~WE |
A7 | 3 | 26 | A13 |
A6 | 4 | 25 | A8 |
A5 | 5 | 24 | A9 |
A4 | 6 | 23 | A11 |
A3 | 7 | 22 | ~OE |
A2 | 8 | 21 | A10 |
A1 | 9 | 20 | ~CE |
A0 | 10 | 19 | D7 |
D0 | 11 | 18 | D6 |
D1 | 12 | 17 | D5 |
D2 | 13 | 16 | D4 |
GND | 14 | 15 | D3 |
W27C512
This is a 64KB ROM chip that is both fast and usually inexpensive.
A15 | 1 | 28 | VCC |
---|---|---|---|
A12 | 2 | 27 | A14 |
A7 | 3 | 26 | A13 |
A6 | 4 | 25 | A8 |
A5 | 5 | 24 | A9 |
A4 | 6 | 23 | A11 |
A3 | 7 | 22 | ~OE |
A2 | 8 | 21 | A10 |
A1 | 9 | 20 | ~CE |
A0 | 10 | 19 | D7 |
D0 | 11 | 18 | D6 |
D1 | 12 | 17 | D5 |
D2 | 13 | 16 | D4 |
GND | 14 | 15 | D3 |
SST39SF010
This is the 128KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored.
NC | 1 | 32 | VCC |
---|---|---|---|
A16 | 2 | 31 | ~WE |
A15 | 3 | 30 | NC |
A12 | 4 | 29 | A14 |
A7 | 5 | 28 | A13 |
A6 | 6 | 27 | A8 |
A5 | 7 | 26 | A9 |
A4 | 8 | 25 | A11 |
A3 | 9 | 24 | ~OE |
A2 | 10 | 23 | A10 |
A1 | 11 | 22 | ~CE |
A0 | 12 | 21 | D7 |
D0 | 13 | 20 | D6 |
D1 | 14 | 19 | D5 |
D2 | 15 | 18 | D4 |
GND | 16 | 17 | D3 |
SST39SF020
This is the 256KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored.
NC | 1 | 32 | VCC |
---|---|---|---|
A16 | 2 | 31 | ~WE |
A15 | 3 | 30 | A17 |
A12 | 4 | 29 | A14 |
A7 | 5 | 28 | A13 |
A6 | 6 | 27 | A8 |
A5 | 7 | 26 | A9 |
A4 | 8 | 25 | A11 |
A3 | 9 | 24 | ~OE |
A2 | 10 | 23 | A10 |
A1 | 11 | 22 | ~CE |
A0 | 12 | 21 | D7 |
D0 | 13 | 20 | D6 |
D1 | 14 | 19 | D5 |
D2 | 15 | 18 | D4 |
GND | 16 | 17 | D3 |
SST39SF040
This is the 512KB version of this ROM chip. This chip has the advantage of being writable at 5V and can thus be used for cartridges that allow save games to be stored.
A18 | 1 | 32 | VCC |
---|---|---|---|
A16 | 2 | 31 | ~WE |
A15 | 3 | 30 | A17 |
A12 | 4 | 29 | A14 |
A7 | 5 | 28 | A13 |
A6 | 6 | 27 | A8 |
A5 | 7 | 26 | A9 |
A4 | 8 | 25 | A11 |
A3 | 9 | 24 | ~OE |
A2 | 10 | 23 | A10 |
A1 | 11 | 22 | ~CE |
A0 | 12 | 21 | D7 |
D0 | 13 | 20 | D6 |
D1 | 14 | 19 | D5 |
D2 | 15 | 18 | D4 |
GND | 16 | 17 | D3 |
Audio
The audio system in NerdConsole has a dedicated audio processor which is driven the CPU. The output of that is then piped to the Raspberry Pi based PPU for inclusion in the HDMI signal.
YM-3812
The Yamaha YM-3812 is the same audio processor that was found in countless Adlib and SoundBlaster sound cards.
VCC | 1 | 24 | M |
---|---|---|---|
~IRQ | 2 | 23 | SY |
~IC | 3 | 22 | NC |
A0 | 4 | 21 | MO |
~WR | 5 | 20 | SH |
~RD | 6 | 19 | NC |
~CS | 7 | 18 | D7 |
NC | 8 | 17 | D6 |
NC | 9 | 16 | D5 |
D0 | 10 | 15 | D4 |
D1 | 11 | 14 | D3 |
GND | 12 | 13 | D2 |
YM-3014
This chip is a digital to analog converter (DAC) and is used to convert the digital signals produced by the YM-3812 into actual analog audio waveforms.
VCC | 1 | 8 | MP |
---|---|---|---|
To BUFF | 2 | 7 | RB |
LOAD | 3 | 6 | GND |
SD | 4 | 5 | CLOCK |
Logic
NerdConsole uses a variety of logic chips for address decoding, holding register values, and buffering data as it moves between systems.
74HCT00
This chip provides four 2-input NAND gates.
1A | 1 | 14 | VCC |
---|---|---|---|
1B | 2 | 13 | 4B |
1Y | 3 | 12 | 4A |
2A | 4 | 11 | 4Y |
2B | 5 | 10 | 3B |
2Y | 6 | 9 | 3A |
GND | 7 | 8 | 3Y |
74HCT08
This chip provides four 2-input AND gates.
1A | 1 | 14 | VCC |
---|---|---|---|
1B | 2 | 13 | 4B |
1Y | 3 | 12 | 4A |
2A | 4 | 11 | 4Y |
2B | 5 | 10 | 3B |
2Y | 6 | 9 | 3A |
GND | 7 | 8 | 3Y |
74HCT14
This chip provides six signal inverters.
1A | 1 | 14 | VCC |
---|---|---|---|
1Y | 2 | 13 | 6A |
2A | 3 | 12 | 6Y |
2Y | 4 | 11 | 5A |
3A | 5 | 10 | 5Y |
3Y | 6 | 9 | 4A |
GND | 7 | 8 | 4Y |
74HCT30
This chip provides a single 8-input NAND gate. This is used to identify when extended RAM bank 255 is selected and thus extended RAM writes should instead be directed to the PPU.
A | 1 | 14 | VCC |
---|---|---|---|
B | 2 | 13 | NC |
C | 3 | 12 | H |
D | 4 | 11 | G |
E | 5 | 10 | NC |
F | 6 | 9 | NC |
GND | 7 | 8 | Y |
74HCT32
This chip provides four 2-input OR gates.
1A | 1 | 14 | VCC |
---|---|---|---|
1B | 2 | 13 | 4B |
1Y | 3 | 12 | 4A |
2A | 4 | 11 | 4Y |
2B | 5 | 10 | 3B |
2Y | 6 | 9 | 3A |
GND | 7 | 8 | 3Y |
74HCT139
This chip is provides 2 separate 2 to 4 line decoders. Each takes 2 inputs as a 2-bit number (0-3) and turns on the single line that corresponds to that number as output.
~1G | 1 | 16 | VCC |
---|---|---|---|
1A | 2 | 15 | ~2G |
1B | 3 | 14 | 2A |
1Y0 | 4 | 13 | 2B |
1Y1 | 5 | 12 | 2Y0 |
1Y2 | 6 | 11 | 2Y1 |
1Y3 | 7 | 10 | 2Y2 |
GND | 8 | 9 | 2Y3 |
74HCT238
This chip is a 3 to 8 line decoder. It takes 3 inputs as a 3-bit number (0-7) and turns on the single line that corresponds to that number as output.
A0 | 1 | 16 | VCC |
---|---|---|---|
A1 | 2 | 15 | Y0 |
A2 | 3 | 14 | Y1 |
~G0 | 4 | 13 | Y2 |
~G1 | 5 | 12 | Y3 |
G2 | 6 | 11 | Y4 |
Y7 | 7 | 10 | Y5 |
GND | 8 | 9 | Y6 |
74HCT240
This chip reads the state of all 8 possible controllers and inverts the signal turning the 0s from pressed buttons into 1s.
~1OE | 1 | 20 | VCC |
---|---|---|---|
1A0 | 2 | 19 | ~2OE |
~2Y3 | 3 | 18 | ~1Y0 |
1A1 | 4 | 17 | 2A3 |
~2Y2 | 5 | 16 | ~1Y1 |
1A2 | 6 | 15 | 2A2 |
~2Y1 | 7 | 14 | ~1Y2 |
1A3 | 8 | 13 | 2A1 |
~2Y0 | 9 | 12 | ~1Y3 |
GND | 10 | 11 | 2A0 |
74HCT273
This chip provides an octal D-type flip-flops with a clear pin for ensuring a known state upon system reset. These are commonly used for holding upper address pin values for bank selection.
~CLR | 1 | 20 | VCC |
---|---|---|---|
1Q | 2 | 19 | 8Q |
1D | 3 | 18 | 8D |
2D | 4 | 17 | 7D |
2Q | 5 | 16 | 7Q |
3Q | 6 | 15 | 6Q |
3D | 7 | 14 | 6D |
4D | 8 | 13 | 5D |
4Q | 9 | 12 | 5Q |
GND | 10 | 11 | CLK |
Clock
Clock generation is handled with crystal oscillators. Regardless of the size (DIP-8 or DIP-14) the pinout is the same.
NC | 1 | 4 | VCC |
---|---|---|---|
GND | 2 | 3 | Clock |
CPU Clock
The main CPU in NerdConsole operates at 6.00 MHz.
Audio Clock
The audio system in NerdConsole operates at 3.58 MHz. There is an independent clock crystal for this instead of and form of clock division of the main CPU clock.