Difference between revisions of "Front Panel For 8 Bit Computers"

From Land Boards Wiki
Jump to navigation Jump to search
(25 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
<video type="youtube">WupSfpHNN78</video>
 
<video type="youtube">WupSfpHNN78</video>
 +
 +
<video type="youtube">nmlrxyyVe7Q</video>
  
 
== Front Panel for 8-Bit Microprocessors ==
 
== Front Panel for 8-Bit Microprocessors ==
 +
 +
* See [[Front_Panel_for_8_Bit_Computers_V2|here for V2 (through-hole) version]]
  
 
[[File:EightBitFrontPanel720px.JPG]]
 
[[File:EightBitFrontPanel720px.JPG]]
 +
 +
=== Top row controls ===
 +
 +
Typical controls.
 +
 +
[[File:FrontPanel-01-Front-3D-controls.png]]
  
 
== Features ==
 
== Features ==
Line 54: Line 64:
  
 
== Drivers ==
 
== Drivers ==
 +
 +
=== VHDL Driver ===
 +
 +
* [https://github.com/douggilliland/Design_A_CPU/tree/main/Peripherals/FrontPanel01 VHDL code to control Front Panel autonomously]
 +
** Great for FPGA Retro-computers
 +
** Converts pushbuttons into raw, debounced, and toggled outputs
 +
** Uses [https://github.com/douggilliland/Design_A_CPU/wiki IOP16 small CPU core]
 +
** Example: [https://github.com/douggilliland/MultiComp/tree/master/MultiComp_On_RETRO-EP4CE15/M6800_MIKBUG_FrontPanel01 6800 running MIKBUG using the Front Panel] - Run/Halt the CPU, Read SRAM, ROM, etc, Write to SRAM
 +
 +
==== VHDL Entity ====
 +
 +
<pre>
 +
-- -------------------------------------------------------------------------------------------------------
 +
-- Front Panel starts here
 +
 +
fp01 : work.FrontPanel01
 +
  port map
 +
  (
 +
    -- Clock and reset
 +
    i_CLOCK_50 => i_CLOCK_50, -- Clock (50 MHz)
 +
    i_n_reset => w_resetClean_n, -- Reset
 +
    -- 32 outs, 32 ins
 +
    i_FPLEDs => w_LEDsOut, -- Out to LEDs (32)
 +
    o_PBRaw => w_PBsRaw, -- Raw version of the Pushbuttons (32)
 +
    o_PBLatched => w_PBLatched, -- Latched version of the Pushbuttons (32)
 +
    o_PBToggled => w_PBsToggled, -- Toggle version of the Pushbuttons (32)
 +
    -- I2C interface
 +
    io_I2C_SCL => io_I2C_SCL, -- I2C clock to Front Panel card
 +
    io_I2C_SDA => io_I2C_SDA, -- I2C data to/from Front Panel card
 +
    i_I2C_INTn => i_I2C_INTn -- Interrupt input - active low
 +
  );
 +
 +
-- Front Panel ends here
 +
-- -------------------------------------------------------------------------------------------------------
 +
 +
</pre>
 +
 +
=== Arduino Driver ===
  
 
* I2C parts are standard MCP23017 drivers which are supported in Arduino and most microprocessors
 
* I2C parts are standard MCP23017 drivers which are supported in Arduino and most microprocessors
 +
** [https://github.com/land-boards/lb-Arduino-Code/tree/master/libraries/LandBoards_MCP23017 LandBoards_MCP23017 library]
 +
** [https://www.arduino.cc/en/Guide/Libraries?setlang=en#importing-a-zip-library Importing an Arduino ZIP library]
 +
 +
=== Micro-Python ===
 +
 +
* [https://github.com/land-boards/lb-Python-Code/blob/master/MicroPython/PyBoard%20Clone/libraries/mcp23017/mcp23017.py Micro-Python driver for MCP23017]
 +
 +
=== C Code ===
 +
 
* [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn PSoC driver GitHub Repo]
 
* [https://github.com/douggilliland/Retro-Computers/tree/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn PSoC driver GitHub Repo]
 
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/FrontPanel.c FrontPanel.c]
 
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/FrontPanel.c FrontPanel.c]
 
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/FrontPanel.h FrontPanel.h]
 
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/FrontPanel.h FrontPanel.h]
 +
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/MCP23017.c MCP23017.c]
 +
** [https://github.com/douggilliland/Retro-Computers/blob/master/Z80/PSOC/PSOC_Design_Files/Z80-PSoC-3-Chips_002/Z80_3Chip.cydsn/MCP23017.h MCP23017.h]
 +
 +
== Assembly Sheet ==
 +
 +
[[Front Panel Assembly Sheet Rev 1]]

Revision as of 18:17, 9 April 2022

Tindie-mediums.png

Front Panel for 8-Bit Microprocessors

EightBitFrontPanel720px.JPG

Top row controls

Typical controls.

FrontPanel-01-Front-3D-controls.png

Features

It has these features. They may not fit your generic design. Especially since this card has to have an I2C interface.

  • 32 Pushbutton Switches
  • 32 LEDs
  • I2C interface (Two Wire interface - plus power and ground)
    • Jumper selectable base address
    • Occupies I2C addresses either 0x20-0x23 or 0x24-0x27
    • Jumper Selectable I2C terminators
  • I2C daisy-chain connector
    • Interrupt line
      • Can be configured to interrupt on button presses
      • MCP23017 need to be set to Open-Drain output - card has pull-up to Vcc
  • 4 MCP23017 16-bit I2C Port Expanders
    • These are fine pitch surface mount parts
  • 3.3V or 5V operation
  • Compatible form factor with RETRO-EP4CE15 and other cards
    • 95x95mm
    • 6-32 mounting holes

Connector

J2 - I2C Connector

  • Two row header on bottom of card
  • 5 pin in
  • 4 pin out (daisy-chain)
  1. GND
  2. VCC
  3. SDA
  4. SCL
  5. INT*

And

  1. GND
  2. VCC
  3. SDA
  4. SCL

Schematic

Drivers

VHDL Driver

VHDL Entity

-- -------------------------------------------------------------------------------------------------------
-- Front Panel starts here
	
fp01 : work.FrontPanel01
  port map
  (
    -- Clock and reset
    i_CLOCK_50		=> i_CLOCK_50,		-- Clock (50 MHz)
    i_n_reset		=> w_resetClean_n,	-- Reset
    -- 32 outs, 32 ins
    i_FPLEDs		=> w_LEDsOut,		-- Out to LEDs (32)
    o_PBRaw		=> w_PBsRaw,		-- Raw version of the Pushbuttons (32)
    o_PBLatched		=> w_PBLatched,		-- Latched version of the Pushbuttons (32)
    o_PBToggled		=> w_PBsToggled,	-- Toggle version of the Pushbuttons (32)
    -- I2C interface
    io_I2C_SCL		=> io_I2C_SCL,		-- I2C clock to Front Panel card
    io_I2C_SDA		=> io_I2C_SDA,		-- I2C data to/from Front Panel card
    i_I2C_INTn		=> i_I2C_INTn		-- Interrupt input - active low
  );

-- Front Panel ends here
-- -------------------------------------------------------------------------------------------------------

Arduino Driver

Micro-Python

C Code

Assembly Sheet

Front Panel Assembly Sheet Rev 1