
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.

A Cartridge interface that converts MSX 5v signal levels to 3v, exposing an IDC connector for external devices that operates at 3v level.
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.
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.
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.
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.
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).
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2, R3, R4, R5, R6, R7, R8, R9 |
| 7 | 0.1uf | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1, C2, C3, C4, C5, C6, C7 |
| 7 | LOGO | LOGO | G***, G***, G***, G***, G***, G***, G*** |
| 5 | 74LVC245A | Package_DIP:DIP-20_W7.62mm | U1, U2, U3, U4, U5 |
| 4 | R_Network10_US | Resistor_THT:R_Array_SIP9 | RN1, RN2, RN3, RN4 |
| 2 | 100uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C8, C9 |
| 2 | BAT43 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | D1, D2 |
| 1 | 2K2 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R10 |
| 1 | Conn_01x03_Female | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
| 1 | DE1 GPIO | Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical | IDC1 |
| 1 | J1 | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J1 |
| 1 | J2 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | LM1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U6 |
| 1 | MSX_BUS | Roni Footprints:MSX_CART_SW_Official | CONN1 |
| 1 | SW_Push | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | SW1 |

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.

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.

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.

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.

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.

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.

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.

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

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.



tjboldt/Apple2-IO-RPi
Apple II expansion card using a Raspberry Pi for I/O


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

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.
It measures 99.9 × 64 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).