Difference between revisions of "Front Panel for 8 Bit Computers V2"

From Land Boards Wiki
Jump to navigation Jump to search
Line 96: Line 96:
 
<pre>
 
<pre>
 
-- -------------------------------------------------------------------------------------------------------
 
-- -------------------------------------------------------------------------------------------------------
-- Front Panel starts here
+
-- Front Panel starts here
+
-- Pass IOP16 code size and stack size down to the Front Panel
fp01 : work.FrontPanel01
+
fp01 : work.FrontPanel01
  port map
+
generic map (
  (
+
INST_ROM_SIZE_IN => 512, -- 512W code size
    -- Clock and reset
+
STACK_DEPTH_IN => 4 -- 16 deep stack size
    i_CLOCK_50 => i_CLOCK_50, -- Clock (50 MHz)
+
)
    i_n_reset => w_resetClean_n, -- Reset
+
port map
    -- 32 outs, 32 ins
+
(
    i_FPLEDs => w_LEDsOut, -- Out to LEDs (32)
+
-- Clock and reset
    o_PBRaw => w_PBsRaw, -- Raw version of the Pushbuttons (32)
+
i_CLOCK_50 => i_CLOCK_50, -- Clock (50 MHz)
    o_PBLatched => w_PBLatched, -- Latched version of the Pushbuttons (32)
+
i_n_reset => i_n_reset, -- Reset (from FGPGA KEY)
    o_PBToggled => w_PBsToggled, -- Toggle version of the Pushbuttons (32)
+
-- 32 outs, 32 ins
    -- I2C interface
+
i_FPLEDs => w_LEDsOut, -- Out to LEDs (32)
    io_I2C_SCL => io_I2C_SCL, -- I2C clock to Front Panel card
+
o_PBRaw => w_PBsRaw, -- Raw version of the Pushbuttons (32)
    io_I2C_SDA => io_I2C_SDA, -- I2C data to/from Front Panel card
+
o_PBLatched => w_PBLatched, -- Latched version of the Pushbuttons (32)
    i_I2C_INTn => i_I2C_INTn -- Interrupt input - active low
+
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
 
-- Front Panel ends here

Revision as of 08:50, 20 April 2022

Tindie-mediums.png

FrontPanel02 P527-cropped-720px.jpg

Front Panel for 8-Bit Microprocessors v2

See here for Ver 1 - SMT version

Features

This is a through-hole version of Front Panel for 8_Bit Computers.

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 of 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

Legends

FrontPanel-01-Front-3D-800px.png

  • D0-D7 - Data bus
  • A0-A15 - Address bus
  • Controls

Top row controls

Board has typical control silkscreen markings. It is all through hole so that it is much easier to assemble.

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

  • RUN - Run/Halt pushbutton, RUN LED on for CPU running
  • RESET - Reset the CPU
  • STEP - Single Step the CPU
  • Undefined
  • CLEAR - Clear address bus (if SETADR is ON) or data bus lines (if SETDAT is ON)
  • INCADR - Increment the address
    • If SETDAT is on write data
  • SETDAT - Set the data value
  • SETADR - Set the address

Drivers

VHDL Driver

VHDL Entity

-- -------------------------------------------------------------------------------------------------------
	-- Front Panel starts here
	-- Pass IOP16 code size and stack size down to the Front Panel
	fp01 : work.FrontPanel01
		generic	map ( 
			INST_ROM_SIZE_IN	=> 512,						-- 512W code size
			STACK_DEPTH_IN		=> 4							-- 16 deep stack size
		)
		port map
		(
			-- Clock and reset
			i_CLOCK_50			=> i_CLOCK_50,				-- Clock (50 MHz)
			i_n_reset			=> i_n_reset,				-- Reset (from FGPGA KEY)
			-- 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

PSoC Control

  • Z80 example

C Code

Assembly Sheet

Front Panel V2 Assembly Sheet Rev 1