Connectors

From NerdConsole
Jump to navigationJump to search

Joysticks

SNES Controller Ports

NerdConsole has 2 SNES-style joystick ports built into the front of the system for players 1 and 2. These are always available. All controller connections are SNES controller compatible and use this same arrangement of pins.

Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7
Ground NC NC Data Latch Clock VCC

Extra Controller 6-Pin Port

Built onto the mainboard is a 6-pin connector that provides the power and signals for controllers 3 and 4. Data3 and Data4 lines are specifically for those controllers.

Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6
Ground Data3 Data4 Latch Clock VCC

Extra Controller 4-Pin Port

Built onto the mainboard is a 4-pin connector that provides the data signals for controllers 5, 6, 7 and 8. Data5, Data6, Data7, and Data8 lines are specifically for those controllers. This connection is used in conjunction with the 6-Pin port connections.

Pin 1 Pin 2 Pin 3 Pin 4
Data5 Data6 Data7 Data8

Cartridge

The 44-pin cartridge connector provides the means to access the ROM chip (or chips) that contain the software to execute. The pin order may seem scrambled up, but it is laid out in a way that closely aligns with the pin order of most ROM chips.

Top / Front / Label Side Bottom / Back Side
A12 1 44 Ground
A13 2 43 Clock
A7 3 42 ~Read / Write
A8 4 41 ~Enable
A6 5 40 VCC (+5V DC)
A9 6 39 RRS
A5 7 38 HRS7
A11 8 37 HRS6
A4 9 36 HRS5
A3 10 35 HRS4
A10 11 34 HRS3
A2 12 33 HRS2
A1 13 32 HRS1
D7 14 31 HRS0
A0 15 30 LRS7
D6 16 29 LRS6
D0 17 28 LRS5
D5 18 27 LRS4
D1 19 26 LRS3
D4 20 25 LRS2
D2 21 24 LRS1
D3 22 23 LRS0

Key

  • ~ = Active Low Signal
  • A = Address Pins (0-13)
  • D = Data Pins (0-7)
  • LRS = Low ROM Select (0-7)
  • HRS = High ROM Select (0-7)
  • RRS = ROM Region Select
    • 0 = Low ROM ($8000 to $BFFF)
    • 1 = High ROM ($C000 to $FFFF)

Video Board Port

The connection between the NerdConsole mainboard and the Raspberry Pi that acts as the PPU is made through a 28-Channel logic level conversion board. This is required because NerdConsole operates at 5V and the GPIO system on a Raspberry Pi operates at 3.3V. According to the Raspberry Pi documentation, you absolutely CANNOT use 5V logic levels with GPIO without causing permanent damage.

This pin layout is based on how the Raspberry Pi orders the GPIO pins. My original pin layout was visually pleasing for a human because everything was in a nice order. As I was learning more about reading from the GPIO pins, I realized that the way I had it would require nearly 100 operations to move bits around in code. They have been changed so they align with the Raspberry Pi layout which reduces the number of operations to just 6 as a worst case with fast fails that use as few as 1. This has the effect of making the pin order seem random but for with huge efficiency gains.

--- 1 2 ---
A0 3 4 ---
A1 5 6 ---
A2 7 8 A12
--- 9 10 A13
D0 11 12 D1
~Vsync 13 14 ---
D5 15 16 D6
--- 17 18 D7
A8 19 20 ---
A7 21 22 Front Power
A9 23 24 A6
--- 25 26 A5
~Enable 27 28 Read / ~Write
A3 29 30 ---
A4 31 32 A10
A11 33 34 ---
D2 35 36 A14
Safe Shut Down 37 38 D3
--- 39 40 D4

Key

  • ~ = Active Low Signal
  • --- = Not Connected
  • A = Address Pins (0-14)
  • D = Data Pins (0-7)

System Connections

There are a few connections within the system.

Back Power

This connector accepts main power input and provides the switches and buttons to control it.

Power Input +5VDC 1 8 Power Input Ground
Power Switch 2 7 Power Switch
PPU Safe Shutdown Button 3 6 PPU Safe Shutdown Button
Main Power LED + 4 5 Main Power LED -

Front Power

This connector is for turning on and off the main board in NerdConsole without affecting the power state of the Raspberry Pi based PPU.

Front Power Switch 1 6 Front Power Switch
Reset Button 2 5 Reset Button
Front Power LED + 3 4 Front Power LED -

PPU Power / Audio

This connector is for powering the PPU directly from the main board. This power is intended to be provided though the MicroB-USB power plug on the Raspberry Pi. It also provides the audio signal from the YM-3812 to be piped into the earphone jack on the Raspberry Pi.

PPU Power + 1 4 PPU Power -
Audio Signal + 2 3 Audio Signal -