Skip to the content
PCBKitNew board
2 layers118.2 × 73 mmPCEHD, the printed circuit board in 3D

PC Engine HDMI

Size
118.2 × 73 mm
Copper layers
2
Thickness
1.6 mm
Parts
165
Nets
192
Pads
946
Tracks, vias
3,091, 414
Pours
6
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
3 Jan 2020
Updated
20 Jan 2020

Overview

PCEHD is an open-source printed circuit board by wifiber, from the wifiber/PCEHD repository on GitHub. It is a 2-layer board of 118.2 × 73 mm with 165 parts on 192 nets, routed with 3,091 tracks and 414 vias.

It is built around the SN74LVC2G17DBV, IS25LP016D-JBLE and SN74LVCC4245APW, with the TLV70012DCK, AP7361-33E and FS7140-01G-XTD among its other parts. Its parts include 93 capacitors, 32 resistors, 20 ICs, 4 diodes and 3 transistors. It belongs with the interfaces and adapters boards of this library.

Main components

12

README

README.md

PC Engine / Turbo Grafx HDMI output board (PCEHD)

Overview

PCEHD is a project to deliver HDMI video/audio from the PC Engine/Turbo-Grafx utilizing the digital video bus exposed on the expansion connector. The goal is to take the digital video directly from the console and upscale it to 1080p.

Features

  • None yet

TODO

  • Finish initial verion of schematic (DONE)
  • Finish initial verion of HDL code (need help here)
  • Get test PCBs made (PENDING)
  • Get HDMI video output working (PENDING)
  • Get analog audio encoded into HDMI stream (PENDING)

Long Term TODO

  • Optical Drive Emulation (PENDING)
  • Flash cart / SD card option (PENDING)

Installation

Attach PCEHD to the expansion port on your PC Engine or Turbo-Grafx console. Enjoy lag free 1080p.

Usage

More info and discussion

See the docs folder for a collection of PC Engine dev material. There are good schematics online and the TurboGrafx-16 Unit Service Manual provides an excellent block diagram that really makes understanding the interaction of the 3 main HuC62xx chips much easier.

The aim of the PCEHD project is to reproduce the IC112 (HuC6260) inside the FPGA on the PCEHD. HuC6260, the Video Color Encoder, has an internal palette used for the background and sprites. It is made up of 512 9-bit entries. The first 256 entries are for the backgrounds and the last 256 are for the sprites. When the console first boots up, the VCE is initialized with palette data from the Hu Card by the CPU. According to the schematics, the data lines from the HU card all have pull-ups to 5v. This is why when you start the console with no game inserted you get a white screen - the VCE palette get filled with all 0xFF for the RGB data, which then returns white on the screen.

Requirement 1. - The FPGA needs to snoop on the CPU -> VCE communication when the console first boots. The FPGA needs to see what the CPU is loading into the VCE internal palette (All 512 entries). This is possible since both the data and address bus are exposed on the expansion connector. So the FPGA should have insight to the CPU -> VCE communication. Using the FPGA core for the HuC6260, if we are connected to the same address and data bus as the physical VCE, we should be able to get the CPU to update both the physical VCE and the FPGA-VCE at the same time, since the FPGA-VCE is listening at the same address as the VCE inside the console.

Once the console boots up and the CPU has successfully loaded the VCE pallette, the VDC now comes into play. The VDC and VCE share a 9-bit video bus (This is separate from the data bus the CPU used to load the palette in the steps above). The VDC will be placing data on the video bus, this data is a 9-bit address into the VCE palette (9-bits = 512 entries). The VCE takes these addresses, does the lookup into its palette and returns the 9-bit RGB code.

Requirement 2. - The FPGA needs to snoop on the VDC -> VCE communication. The VDC will be placing addresses on the video bus. Those addresses reference colors stored in the 512 entry VCE palette table. Once the VCE looks up the address, the data it returns is 9-bit RGB data. This 9-bit RGB data is used inside the HuC6260 to generate the analog RGB and composite signals. Assuming the FPGA knows what RGB values are stored in each VCE table entry.(Req 1) Also, assuming the FPGA knows what the VCE will display next based on what palette address the VDC was placing on the video bus - we should be able to recreate the scanline that the VCE would have displayed. From there its a matter of line-doubling and tweaking to fit the 1080p standard. Again, using the FPGA core for the HuC6260 should give us a VCE that acts just like the phyiscal one inside the console. Once we have the VCE outputting the RGB data, its a matter of formatting it into the correct HDMI standard.

Thanks to marqs for the OSSC/CPS2_HDMI projects that are the majority of the base material for this project https://github.com/marqs85

Thanks to the FPGAPCE project on github for a nice HDL example of the entire console. https://github.com/Torlus/FPGAPCE

Thanks to skum for the very clean and well layed out KiCad symbol and footprint of the expansion connector. Its 69 pins but somehow his symbol is manageable. https://github.com/skumlos/pcengine-rgb-addon

Parts

165
QtyValueFootprintReferences
710.1ucustom_components:SM0603_Capa_libcmsC3, C10, C11, C12, C13, C14, C15, C17, C19, C20, C23, C24, C28, C29, C31, C32 +55
1210Kcustom_components:SM0603_Resistor_libcmsR17, R19, R20, R21, R22, R25, R26, R27, R28, R29, R30, R32
1110ucustom_components:SM0603_Capa_libcmsC1, C2, C5, C8, C16, C18, C25, C26, C30, C67, C69
101ucustom_components:SM0603_Capa_libcmsC21, C22, C70, C71, C72, C74, C75, C76, C77, C79
610kcustom_components:SM0603_Resistor_libcmsR5, R7, R8, R12, R13, R14
6SN74LVCC4245APWcustom_components:SN74LVCC4245APWU9, U10, U11, U14, U18, U19
52.2kcustom_components:SM0603_Resistor_libcmsR1, R3, R4, R9, R10
4MPZ1608S221Acustom_components:SM0603_Resistor_libcmsFB1, FB2, FB3, FB4
4SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP2, JP3, JP5
31Kcustom_components:SM0603_Resistor_libcmsR23, R24, R31
34.7kcustom_components:SM0603_Resistor_libcmsR6, R16, R18
3BC847Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3
2RClamp0524Pcustom_components:SLP2510P8D2, D3
2TLV70012custom_components:SOT-23-5_HandsolderingU15, U17
110CL025YE144C8Ncustom_components:TQFP-144_thermalU12
11kcustom_components:SM0603_Resistor_libcmsR11
125custom_components:SM0603_Resistor_libcmsR15
125.000MHzCrystal:Crystal_SMD_SeikoEpson_FA238-4Pin_3.2x2.5mm_HandSolderingY1
147ucustom_components:SM0603_Capa_libcmsC27
174153Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU8
1887custom_components:SM0603_Resistor_libcmsR2
1ADV7513custom_components:LQFP-64-1EP_10x10mm_Pitch0.5mm_HandsolderingU2
1AP7361custom_components:SOT-223_HandsolderingU1
1FS7140-01G-XTDcustom_components:FS7140-01G-XTDU5
1HDMI_CONNcustom_components:HDMI_CONN-10029449-111RLFJ1
1IS25LP016D-JBLEcustom_components:SOIC-8_3.9x4.9mm_Pitch1.27mm_HandsolderingU13
1JTAG_CONNConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalP1
1MF-FSMF020X-2custom_components:SM0603_Resistor_libcmsF1
1Micro_SD_CardConnector_Card:microSD_HC_Hirose_DM3D-SFJ2
1PCEngineExpansionpcengine_expansion:PCEngineExpansionU4
1PCM1808PWRcustom_components:PCM1808PWRU6
1SD05-7custom_components:SOD-323_HandsolderingD4
1SI5351C-Bcustom_components:QFN-20-1EP_4x4mm_Pitch0.5mm_HandsolderingU7
1SN74LVC2G17custom_components:SOT-23-6_HandsolderingU20
1TLV70018custom_components:SOT-23-5_HandsolderingU3
1TLV70025custom_components:SOT-23-5_HandsolderingU16
1ZHCS400TAcustom_components:SOD-323_HandsolderingD1

Questions

How big is the PCEHD PCB?

It measures 118.2 × 73 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PCEHD use?

165 parts, built around the SN74LVC2G17DBV, IS25LP016D-JBLE, SN74LVCC4245APW and TLV70012DCK. 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 PCEHD KiCad files?

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

Can I use the PCEHD design in my own project?

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

Similar boards

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

    Cps2 digiav

    marqs85/cps2_digiav

    CPS2 digital AV interface

    146 parts49
  • 4 layers124.6 × 68.7 mmOssc board, the printed circuit board in 3D

    Ossc board

    marqs85/ossc_pcb

    ossc pcb design files

    265 parts163
  • 2 layers212.5 × 99.5 mmOssc pro, the printed circuit board in 3D

    Ossc pro

    marqs85/ossc_pro_hw

    OSSC Pro HW files

    499 parts31CERN-OHL-P-2.0
  • 4 layers42 × 44.4 mmSTM32 FlightController, the printed circuit board in 3D

    STM32 FlightController

    JLjoestar23/STM32_FlightController

    PCB, software, firmware, and other files related to a custom made STM32-based flight controller.

    56 parts1
  • 4 layersInfiniteRecon, the printed circuit board in 3D

    InfiniteRecon

    Rivercraft911/InfiniteRecon

    A lot coming soon....

    128 parts
  • 4 layers100 × 68 mmBasic ecp5-pcb, the printed circuit board in 3D

    Basic ecp5-pcb

    mattvenn/basic-ecp5-pcb

    Reference design for Lattice ECP5 FPGA. Featuring Raspberry Pi interface and 6 PMODs

    75 parts144CC0-1.0
  • 2 layers100 × 68 mmFirst fpga pcb, the printed circuit board in 3D

    First fpga pcb

    mattvenn/first-fpga-pcb

    FPGA dev board based on Lattice iCE40 8k

    70 parts83
  • 2 layers35.6 × 18.8 mmSamd51 micropython 9, the printed circuit board in 3D

    Samd51 micropython 9

    gnilsson2/YAPP_Box_KiCad_Generator

    Generate Openscad boxes from KiCad PCB files.

    22 partsMIT