Skip to the content
PCBKitNew board
2 layers100 × 90 mmRiser, the printed circuit board in 3D

An FPGA based GDROM emulator for the Sega Dreamcast

Size
100 × 90 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
84
Pads
237
Tracks, vias
817, 67
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
7 Aug 2016
Updated
18 Feb 2023

Overview

Riser is an open-source printed circuit board by zeldin, from the zeldin/iceGDROM repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 100 × 90 mm with 29 parts on 84 nets, routed with 817 tracks and 67 vias.

It is built around the JUMPER3. Its parts include 9 connectors, 8 resistors, 1 capacitor, 1 diode and 1 crystal. It belongs with the fPGA and programmable logic and retro computing and games boards of this library.

Main components

1

README

README.md

iceGDROM

This is an implementation of IDE and the "Sega Packet Interface" as used by the Dreamcast GD-ROM drive, using an iCE40 FPGA.

In addition to the IDE interface itself, and the accompanying CD-DA interface, the FPGA bitstream implements an RV32EMC-compatible CPU and an SD Card interface. Software running on the CPU responds to disc access commands from the Dreamcast by fetching data from disc images on an SD Card.

For more detailed information, please see the webpage.

This is free software (and hardware) licensed under the GNU General Public License version 3.

Hardware

The hardware is based on the Lattice iCE40-HX8K Breakout Board. In order to connect this board to the Dreamcast motherboard, a custom "riser board" with the appropriate connectors and some additional components is used. The design files for this can be found in the pcb/riser directory. The bill of materials can be found in the file pcb/riser/bom.txt. The pin headers with a J designation should be soldered to the Breakout Board (pins facing downwards).

The components CN4, R8, D1, and JP2 through JP4 are optional. They are a passthrough for a slave hard drive, and not used by the GD-ROM emulator.

For the hardware to be complete, the following additional things are needed:

  • A USB-mini cable to connect CN6 to the Breakout Board. This is how the Breakout Board is powered when not attached to a host computer.
  • An SD Card module, to connect to CN5.
  • Rubber feet or similar to support the weight of the board in the corners not resting on CN1.

Required tools

To build the FPGA bitstream, the following tools are needed:

  • Yosys 0.6
  • arachne-pnr
  • icestorm

To build the RISC-V software, the following tools are needed:

  • riscv32-unknown-elf gcc 10.2.0
  • riscv32-unknown-elf binutils 2.34.0

Building

Building is done by running GNU make. Running make at the top level will build everything, running it in a subdir will build that part. Note that building in fpga requires the rv32 stuff to be built first.

The file rv32/source/config.h can be modified to adapt to the polarity of the CD signal on the chosen SD Card module, or to enable debug traces on the serial port of the FTDI chip.

In order to flash the FPGA bitstream to the breakout board, run make flash.

Making image files

Building the project will also create a host tool in tools/obj/makegdimg which can create image files from either .gdi files (for GD-ROM images) or from .nrg or .cdi files (for MIL-CD and audio CD images). The image files should be named DISC0000.GI0, DISC0001.GI0 etc on the SD Card. To switch between images, extract and reinsert the SD Card.

Acknowledgements

  • RISC-V softcore "VexRiscv" was developed by Charles Papon
  • GD-ROM connector pinout was provided by OzOnE
  • SD Card and FAT code based on sdfatlib by Bill Greiman
  • DiscJuggler reader code based on CDIrip by DeXT/Lawrence Williams

Parts

29
QtyValueFootprintReferences
5100Resistors_ThroughHole:Resistor_Horizontal_RM10mmR2, R3, R4, R5, R6
4JUMPER3Pin_Headers:Pin_Header_Straight_1x03JP1, JP2, JP3, JP4
3CONN_01X02Wire_Connections_Bridges:WireConnection_1.00mmDrillP1, P2, P3
210kResistors_ThroughHole:Resistor_Horizontal_RM10mmR1, R7
2CONN_02X20w_pin_strip:pin_socket_20x2CN2, CN3
10.01uCapacitors_SMD:C_1206_HandSolderingC1
111.2896Mzeldin:SG-210STFX1
11kResistors_ThroughHole:Resistor_Horizontal_RM10mmR8
1CONN_01X09Pin_Headers:Pin_Header_Straight_1x09CN5
1CONN_02X22w_pin_strip:pin_strip_2mm_22x2CN4
1LEDLEDs:LED-3MMD1
1Molex_52602_0579Molex_52602_0579:Molex_52602_0579CN1
1USB-AConnect:USB_ACN6

The 24 most common of 29 parts.

Questions

How big is the Riser PCB?

It measures 100 × 90 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Riser use?

29 parts, built around the JUMPER3. 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 Riser KiCad files?

From the zeldin/iceGDROM repository on GitHub, at the commit this page was made from: the board is pcb/riser/riser.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Riser design in my own project?

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

Similar boards

  • 2 layers271.8 × 114.3 mmArdumower mega shield svn, the printed circuit board in 3D

    Ardumower mega shield svn

    Ardumower/ardumower

    Develop an open source robotic lawn mower (HW+SW reference platform)

    426 parts282
  • 2 layers49 × 49 mmOSBMS Balancer Rev 0.9, the printed circuit board in 3D

    OSBMS Balancer Rev 0.9

    Teslafly/Dead-OpenBMS-dead

    A scalable, open source battery management system

    76 parts248
  • 4 layers137 × 86 mmCIAA K60, the printed circuit board in 3D

    CIAA K60

    ciaa/Hardware

    Hardware de la CIAA

    467 parts216
  • 2 layers59.2 × 41 mmBluey, the printed circuit board in 3D

    Bluey

    electronut/ElectronutLabs-bluey

    Nordic nRF52832 BLE development board with sensors.

    79 parts96
  • 2 layers86 × 54 mmD50mram, the printed circuit board in 3D

    D50mram

    dojoe/roland-mram-card

    A multi-bank MRAM based memory card for Roland instruments

    44 parts75
  • 2 layers54.4 × 43.2 mmReprom, the printed circuit board in 3D

    Reprom

    hbekel/reprom64

    rom replacement board for the C64

    21 parts34GPL-2.0
  • 2 layers146.1 × 53.3 mmWatersens, the printed circuit board in 3D

    Watersens

    whitebox-labs/tentacle

    An arduino shield to host and individually isolate up to 4 Atlas Scientific sensor circuits. Measure pH, conductivity, dissolved oxygen, ORP, temperature

    77 parts32
  • 2 layers100 × 100 mmEavesdrum module, the printed circuit board in 3D

    Eavesdrum module

    tobigun/EavesDrum

    EavesDrum is an e-drum trigger module project, designed for musicians and makers. It allows you to connect drum pads or piezo triggers and converts their signals into MIDI events.

    103 parts25GPL-3.0