Skip to the content
2 layers53.3 × 44.5 mmCoCo FPGA Hat, the printed circuit board in 3D

Even though this project was developed and tested with FPGA development boards Terasic DE0 and DE1, the interface can actually interface with any 3.3v device, even microcontrollers, to implement peripherals for the…

Size
53.3 × 44.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
18
Nets
82
Pads
181
Tracks, vias
706, 31
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
15 Jan 2023
Updated
2 Jun 2025

Overview

CoCo FPGA Hat is an open-source printed circuit board by costarc, from the costarc/CoCo_FPGA_Hat repository on GitHub. It is a 2-layer board of 53.3 × 44.5 mm with 18 parts on 82 nets, routed with 706 tracks and 31 vias.

It is built around the 74LVC245AD. Its parts include 5 resistors, 4 capacitors, 4 ICs and 2 connectors. It belongs with the fPGA and programmable logic boards and the FPGA and CPLD boards of this library.

Main components

1

README

README.md

CoCo_FPGA_Hat

A Cartridge interface that converts TRS-Color 5v signal levels in the bus to 3.3v, exposed over an IDC connector for external devices that operates at 3.3v level.

Even though this project was developed and tested with FPGA development boards Terasic DE0 and DE1, the interface can actually interface with any 3.3v device, even microcontrollers, to implement peripherals for the TRS-80 Color computer.

This project as adapted from my MSX DE1 hat for DE1 (https://github.com/costarc/MSX_FPGA_Hat).

Project Status: RIP. Project was assembled and tested, proven to work. Sample test project is available in the folder Reference Designs, which demonstrate how to implement a Cartridge ROM using the interface and a connected Terasic DE0.

Because it was not extensively tested and no other designs developed, there might be limitations on which functions it might be able to implement, therefore build at your own risk! :)

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, when the CoCo computer is requesting data from the FPGA, this pin is asserted HIGH by *R/W = 1, when sending data it is asserted LOW because *R/W = 0. Note that the FPGA pins are connected on the bus A of U1, and CoCo bus is connected in the bus B of U1 - this allowed both keep the CIs all aligned in the same direction and use the CoCo *R/W signal to drive the directon of this bus).

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 *SLENB OR *NMI to B be connected to FPGA connector pin 39 (/C_NMI_SLENB).

SRAM Addon

Because some development boards (such as Terasic DE0) does not have a SRAM module, it makes it difficult to implement RAM cores due to DDRAM complexity. For this reason, I designed also a SRAM addon to plug to the DE0 GPIO. This design in in the folder "DE0_Addon_Board".

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

18
QtyValueFootprintReferences
510KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R2, R3, R4, R6
40.1ufCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC1, C2, C3, C4
474LVC245APackage_DIP:DIP-20_W7.62mmU1, U2, U3, U4
2LOGOLOGOG***, G***
1CoCo_SlotRoni Footprints:COCO-CART-HATP1
1DE0 GPIOConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalIDC1
1J1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1

More from costarc/CoCo_FPGA_Hat

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

    DE0 Addon Board

    costarc/CoCo_FPGA_Hat

    Even though this project was developed and tested with FPGA development boards Terasic DE0 and DE1, the interface can actually interface with any 3.3v device, even microcontrollers, to implement peripherals for the…

    5 parts2

Similar boards

  • 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
  • 4 layers318.4 × 124.5 mmN2360, the printed circuit board in 3D

    N2360

    jasonsbeer/Amiga-N2630

    A re-imagining of the Amiga A2630 processor card.

    248 parts69
  • 4 layers102.6 × 107.3 mmPro rev1, the printed circuit board in 3D

    Pro rev1

    TheRetroWeb/PicoPOST

    RPi Pico based POST (Power-On Self Test) Diagnostic Card

    136 parts58
  • 2 layers103.9 × 43.5 mmCps2 digiav, the printed circuit board in 3D

    Cps2 digiav

    marqs85/cps2_digiav

    CPS2 digital AV interface

    146 parts49

Questions

How big is the CoCo FPGA Hat PCB?

It measures 53.3 × 44.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the CoCo FPGA Hat use?

18 parts, built around the 74LVC245AD. 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 CoCo FPGA Hat KiCad files?

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

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

Its repository states no licence, so its author keeps all rights: ask costarc before reusing the design.