Skip to the content
2 layers99.9 × 64 mmMSX FPGA Hat, the printed circuit board in 3D

A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

Size
99.9 × 64 mm
Copper layers
2
Thickness
1.6 mm
Parts
44
Nets
102
Pads
286
Tracks, vias
1,020, 55
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
12 Nov 2022
Updated
24 Aug 2026

Overview

MSX FPGA Hat is an open-source printed circuit board by costarc, from the costarc/MSX_FPGA_Hat repository on GitHub, published under the MIT licence. It is a 2-layer board of 99.9 × 64 mm with 44 parts on 102 nets, routed with 1,020 tracks and 55 vias.

It is built around the 74LVC245AD, LM1117-3.3 and BAT43. Its parts include 10 resistors, 9 capacitors, 6 ICs, 3 connectors and 2 diodes. It belongs with the retro computing and games and fPGA and programmable logic boards and the FPGA and CPLD boards of this library.

Main components

3

README

README.md

MSX_FPGA_Hat

A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

Interface for MSX computers with level shift conversion to 3.3v. Allow MSX to use FPGA development boards such as Terasic DE0 and DE1 as generic peripherals.

THIS IS WORKING IN PROGRESS. THE BOARD IS BEING TESTED, AND REFERENCE DESIGNS CREATED. ROM and RAM reference designs work well, but as of now I was not able to implement a stable SD Card interface.

Technical Description of the Interface

The interface connects the computer BUS to the FPGA GPIOs, using the flat cable. The interface should be connected to JP2 of DE1, which corresponds to GPIO_1. This is the GPIO used in all the reference designs in this project. To use JP1 (GPIO_0), all pins must be remapped for the projects.

Address and control signals always flow from the computer to the FPGA - the DIR and /OE signals in U2,U3,U4 and U5 are always asserted (pull-up for bus directoin (Pin 1) and grounded for /OE (pin 19).

For U1, the BUS direction is controlled by the computer read signal (RD_n) in MSX. When read operation is triggered (RD_n = 0), the directon of the data in U1 flows from the FPGA to the computer. At all other times, the data flows from the computer to the FPGA.

U1 has a pull-up in the /OE pin, to keep any output disabled until the FPGA drives this pin low, which should only occur when the FPGA is in fact requested by the computer. Keeping /OE high isolates the computer BUS from anythign happening in the FPGA, which is also important during the boot in the computer.

Controlling Flow of Data in the Interface

The recommended method to drive the interace signals is as follows:

U1 bus direction (pin 1): no additional implementaton is required - this pin is controlled automatically by the computer according his operations. For example, in the MSX computer, when requesting data from the FPGA, this pin is asserted LOW by RD_n = 0, when sending data it is asserted HIGH because RD_n will be HIGH.

U1 /OE (Output Enable, pin 19): This pin should be put in LOW whenever the FPGA detects that it is being requested - for example, if a ROM is implemented in the FPGA, the address and slot decoding should detect and assert according the GPIO pin /C_U1_D_OE (name was meant to stand for "CI U1, computer Data bus, pin OE).

U2,U3,U4,U5 bus direction: also no need to be concerned - these CIs have fixed bus direction, and constantly asserted HIGH for data to flow from the 74lvc245 bus A to bus B. The interface has some pins being used to carry data from the FPG to the computer in these CIs, in which case the routing for such signals was made bringing in input from the GPIO to the bus A, and teh exit in the bus B reouted to the computer.

Jumpers and Configurations

The limited number of GPIOs in the development board require that we do some compromises in the design. Some of the less used signals were routed to jumpers, at which point they can be selected to be sent to the FPGA.

J1 allow to select one of /CS1, /CS2 and /CS12 to send to FPGA connector pin 3 (/C_CS_SLT). J2 allow to select either CLOCK or /RESET signal to send to FPGA connector pin 1 (C_CLK_OR_RST).

Other Important Considerations

The interface was designed to be compatible with Terasic DEn series of boards. However, these boards present some differences in the GPIOs funtionalities, where some bords (like DE1) have 36 generic I/O pins avaialable fo rinput/output functions, and others like DE0 have four pins dedicated to either input or outputs. This is the case of pins 1 and 3, whch are input only pins, and 19, 21 which are output only. These differences were already considered in the reference designs, and these pins assigned to functions that will not case problems of limitations to the designs. If you want to change the pin mapping in the FPGA designs, pay attention to these pins - do not assign functions opposite to the directon they actually work.

Parts

44
QtyValueFootprintReferences
910KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8, R9
70.1ufCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2, C3, C4, C5, C6, C7
7LOGOLOGOG***, G***, G***, G***, G***, G***, G***
574LVC245APackage_DIP:DIP-20_W7.62mmU1, U2, U3, U4, U5
4R_Network10_USResistor_THT:R_Array_SIP9RN1, RN2, RN3, RN4
2100uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC8, C9
2BAT43Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalD1, D2
12K2Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR10
1Conn_01x03_FemaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1DE1 GPIOConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalIDC1
1J1Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1J2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1LM1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U6
1MSX_BUSRoni Footprints:MSX_CART_SW_OfficialCONN1
1SW_PushConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalSW1

More from costarc/MSX_FPGA_Hat

7
  • 2 layers99.9 × 64 mmMSX FPGA Hat, the printed circuit board in 3D

    MSX FPGA Hat

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    42 parts7MIT
  • 2 layers99.9 × 64 mmMSX FPGA Hat, the printed circuit board in 3D

    MSX FPGA Hat

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    41 parts7MIT
  • 2 layers99.9 × 64 mmMSX FPGA Hat, the printed circuit board in 3D

    MSX FPGA Hat

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    39 parts7MIT
  • 2 layers99.9 × 64 mmMSX FPGA Hat, the printed circuit board in 3D

    MSX FPGA Hat

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    37 parts7MIT
  • 2 layers103 × 66 mmMSX IDC Interface, the printed circuit board in 3D

    MSX IDC Interface

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    31 parts7MIT
  • 2 layers103 × 66 mmMSX FPGA Hat, the printed circuit board in 3D

    MSX FPGA Hat

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    26 parts7MIT
  • 2 layers31.5 × 56.6 mmDE0 Addon Board, the printed circuit board in 3D

    DE0 Addon Board

    costarc/MSX_FPGA_Hat

    A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.

    5 parts7MIT

Similar boards

  • 4 layers78 × 49 mmReAgnus MegAChip, the printed circuit board in 3D

    ReAgnus MegAChip

    jbilander/ReAgnus-MegAChip

    A ReAgnus MegaAChip PCB that takes a Gowin FPGA with embedded PSRAM, a PLCC-84 plug and FET level shifters.

    57 parts33CC-BY-SA-4.0
  • 4 layers108 × 25.3 mm64MB SIMM, the printed circuit board in 3D

    64MB SIMM

    herzmx/cps3-nos

    CPS3 NOS is an alternative to the original SIMMs for CPS3; currently, the available options include clone SIMMs with old-stock FLASH memory and Ultra SIMMs by DS.

    39 parts12
  • 2 layers204.5 × 121.9 mmCt800-pcb, the printed circuit board in 3D

    Ct800-pcb

    d3rvita/ct800-pcb

    PCB for the CT800 chess computer

    91 parts4MIT
  • 2 layers112.4 × 74.2 mmAppleVGA, the printed circuit board in 3D

    AppleVGA

    markadev/AppleII-VGA

    VGA card for Apple II+/IIe computer

    35 parts207MIT
  • 2 layers89.5 × 77.5 mmApple2-IO RPi, the printed circuit board in 3D

    Apple2-IO RPi

    tjboldt/Apple2-IO-RPi

    Apple II expansion card using a Raspberry Pi for I/O

    24 parts140MIT
  • 6 layers304.8 × 243.8 mmAmigaPCI MainBoard, the printed circuit board in 3D

    AmigaPCI MainBoard

    AmigaPCI/AmigaPCI-MainBoard

    Amiga with Native PCI Bus

    748 parts135
  • 2 layers96 × 71.6 mmA2DVI.v1.6, the printed circuit board in 3D

    A2DVI.v1.6

    rallepalaveev/A2DVI

    This is based on Clintech Pico Board (CPB) with 48 GPIOs, most 5V tolerant.

    112 parts82MIT
  • 4 layers223.3 × 120.1 mmISA FPGA v2, the printed circuit board in 3D

    ISA FPGA v2

    robfinch/Cores

    Cores ===== RTF's Cores Use at your own risk. Welcome to my galaxy of cores. Contained in the directories are IP cores, source code for digital circuits.

    132 parts78

Questions

How big is the MSX FPGA Hat PCB?

It measures 99.9 × 64 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MSX FPGA Hat use?

44 parts, built around the 74LVC245AD, LM1117-3.3 and BAT43. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the MSX FPGA Hat KiCad files?

From the costarc/MSX_FPGA_Hat repository on GitHub, at the commit this page was made from: the board is Hardware Interface/Previous Versions/v1.4/MSX_FPGA_Hat.kicad_pcb and its schematic Hardware Interface/DE0_Addon_Board/DE0_Addon_Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MSX FPGA Hat design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).