Retrochallenge (2016-January) - Tandy Color Computer Cartridge.
Eagle
Switch branches/tags
Nothing to show
Clone or download
adamgreen Fix missing Gnd connection on SD socket
I connected the shield pins labelled ground to the actual ground but
forgot to connect the actual ground pin of the SD card to my ground
plane.
Latest commit e45587f Mar 24, 2016

README.creole

Attribution

When working on the schematic and layout for this project, I referenced the following links:
http://www.nf6x.net/2013/10/cocoeprompak/: Mark J. Blair's CoCoEPROMpak blog.
https://github.com/NF6X/CoCoEPROMpak: GitHub repository containing Eagle CAD project files for Mark J. Blair's CoCoEPROMpak. I used the CoCo Cartridge device from this Eagle project as the basis for my Eagle project.

February 1st, 2016 - Final Thoughts

I got a good start on my CoCo cartridge project this month. I hope to get the boards put together and tested before the next Retrochallenge so that I can really start having some fun!

The Competition!

I read through many of the other entries from my fellow competitors and I have to say that I am really amazed by what I saw. There were so many entries this time, it took awhile to read through them all! While there were a few entrants that seem to have gotten stalled right out of the gate, most didn't. For the ones that made any progress at all, they made for pretty good reads. I do however have some personal favorites:

  • MASS_WERK's Maze War for Olivetti M10 and NEC PC-8201A - There is just a lot of great documentation here for the retro laptop Kyocera KC-85 computer and it's siblings, including the TRS-80 Model 100. I have a Model 100 and know that if I was ever going to sit down and do some real coding on it, I would start with this awesome project to get tons of pointers.
  • Paul Robson's Wallpaper Computer - Wow! So much was accomplished in one short month on this project: wrote an emulator for the SC/MP processor, setup hardware emulation, wrote a monitor that includes basic assembler/disassembler functionality, wrote simple MINOL (high level language like BASIC) interpreter, and ported the classic Star Trek game to MINOL.
  • 16kram's Port of classic Star Trek text games to the Mattel Aquarius - Speaking of classic Star Trek games, this project discusses a bit of the history of these games and then goes about porting one of the earliest versions to the Mattel Aquarius.
  • John W. Linville's Xmas Rush for the TRS-80 MC-10 - The game is interesting! The platform is interesting! And as usual the documentation of the whole process is what I have come to expect from John - Excellent!
  • Brett M. Gordon's Global Thermonuclear War - Global Thermonuclear War for the Tandy Color Computer 2, my current retro machine of choice. It uses networking over DriveWire to allow for multiplayer gaming action over the Internet. What does he use as a game server? An IRC (Internet Relay Chat) server of course!
  • Jim Gerrie's BASIC Games for the TRS-80 MC-10 - More MC-10 gaming goodness. Game ports to this platform often also end up on the CoCo as well so that is another big win!

January 30th, 2016 - Where Am I At?

I have spent the last week and a half working on the layout of my CoCo Cartridge PCB. Earlier this morning I completed the initial 2-layer layout for the board.

At this point I don't think I will get the order in to have the PCB manufactured before the end of this Retrochallenge but it definitely looks like I should be ready to do so during the first week of February. I always knew that I wouldn't have time during this Retrochallenge to get the boards all together and doing something cool in a month. It would have been nice though if I could have had the boards back before the end of the month and started basic bring up. Either way, I will still be ready for the next Retrochallenge with actual debugged boards.

Success?

This was one of the most challenging Retrochallenge projects I have set for myself so far. I am a software guy so this project was way outside of my comfort zone! I was really pushed to learn new skills. Those new skills will definitely be useful for other future projects. Based on that I still consider it to be a personal success! This was my first PCB layout in almost a decade and definitely my most ambitious to date!

January Work Items

  • Get the layout reviewed by friends who actually do this kind of thing for a living.
  • Print out the layout (the component pads in particular) on paper at 1:1 scale and verify the footprints against the parts that I have already received from DigiKey.
  • Clean up the component labels which will end up on the final silkscreen.

Work Items to Complete Before Next Retrochallenge

There are a few things I would like to complete over the next couple of months to prepare for the next Retrochallenge:

  • Incorporate layout feedback.
  • Send off to have the PCBs manufactured.
  • Populate boards and verify basic functionality of each major section:
    • Power Regulation
    • 12MHz Oscillator
    • LPC1769 CPU & JTAG/SWD port
    • UART0
    • uSD Card
    • USB
    • Ethernet
    • CoCo Cartridge Edge to LPC1769 Connections

January 21st, 2016 - Parts Have Arrived!


Earlier this week a box of fun arrived from DigiKey! Within it are all the electronic components that I think I need for this CoCo cartridge project.

PCB Layout


The above images more or less tells the whole story of where I am with the PCB layout for this project. At this point, my goal for the Retrochallenge is to actually do the layout and get the PCB ordered. I would then solder it together and perform some basic bring-up after the Retrochallenge closes. This would make it ready for me to put it to real use in the next Retrochallenge.

January 13th, 2016 - Some Progress!

Schematic Completed


Full scale PDF

I completed the schematic capture for my CoCo cartridge earlier this week and the Eagle CAD project containing it can be found here. My schematic is heavily based on this ARM mbed-1768 schematic. I have been using these NXP LPC1768 based mbed modules in many of my embedded projects over the last few years so using the LPC1769, a 120MHz version of the 100MHz LPC1768, was the path of least resistance for me. I decided to design my own PCB for this project to force myself to relearn the process, to get my first experience at having my own PCB design professionally made (In the past I have etched my own boards which were mostly through-hole designs), and to give me access to more pins on the LPC176x device.

Some notes about my CoCo cartridge design so far:

  • It uses a 120 MHz NXP LPC1769 ARM Cortex-M3 microcontroller with 512k of FLASH and 64k of SRAM.
  • The CoCo is 5V and the LPC1769 is 3.3V but the microcontroller pins connected to the cartridge edge connector are all 5V tolerant. This means that the 5V signals from the CoCo hardware will cause no problems for the microcontroller. Everything should work fine as long as all of the CoCo hardware on the bus will see 3.3V signals from the LPC1768 as a high value representing a 1 and not a 0.
  • I have included a USB mini-B connector in my design. This will allow the LPC1769 to be connected to the PC and act as a full-speed (12 Mbit/sec) USB device.
  • The design includes a TI DP83848C Ethernet PHY chip and Ethernet Jack (with magnetics) capable of 10/100 Mbit/sec communications. This will make it possible for the LPC1769 to communicate with the PC via UDP and/or TCP as well.
  • I connected the single DAC output pin of the LPC1769 to the SND pin on the CoCo cartridge edge connector. The analog voltage range of 0-3.3V should be ok for the CoCo; it just won't generate the full volume range possible. This makes it good enough for experimentation and later I would add an amplifier in future revisions to obtain the full 0-5V range.
  • There is also a socket on the board to allow modern uSD cards to be accessed via the LPC1769's SSP0 peripheral.
  • I included a 6-pin 0.1" pin header in the design so that I can connect a FTDI cable to the LPC1769's UART0 for debugging and/or ISP programming.
  • Added pads to nReset and ISP pins so that the device can be brought up in ISP programming mode if needed.
  • Also added a 2x5 JTAG/SWD header so that I can connect my J-Link debugger module. This will be my preferred method for debugging and programming but the UART gives me a backup plan.

I utilized or extended parts from these fine github repositories when creating my schematic:
Mark J. Blair's CoCoEPROMpak Eagle Project
SparkFun's Eagle Libraries
Adafruit's Eagle Library
https://github.com/4jochen/WIZ820io-Piggyback-RaspberryPi

DigiKey Order Placed

Once I had completed my schematic for the CoCo cartridge, I ordered up the components from DigiKey Electronics. I should have them on hand by the time I finish the PCB layout so that I can verify the device footprints before sending off to have the boards made.

My order included:

Quantity Part Number Description Unit Price
1 568-4966-ND LPC1769FBD100,551 - IC MCU ARM 512KB FLASH 100LQFP 11.19000
1 DP83848CVV/NOPB-ND DP83848CVV/NOPB - IC TXRX ETHERNET PHYTER 48-LQFP 5.13000
1 SAM8799-ND FTSH-105-01-L-DV-K - CONN HEADER 10 POS DUAL .05" SMD 3.25000
1 1278-1011-ND RB1-125BAG1A - CONN MAGJACK 1PORT 100 BASE-T 2.55000
1 101-00660-68-6-1-ND 101-00660-68-6 - CONN MICRO SD CARD PUSH-PUSH R/A 1.82000
1 535-9561-1-ND ASE-12.000MHZ-LC-T - OSC XO 12.000MHZ CMOS SMD 1.37000
1 535-9577-1-ND ASE-50.000MHZ-LC-T - OSC XO 50.000MHZ CMOS SMD 1.37000
1 H2959CT-ND UX60-MB-5ST - CONN RECEPT MINI USB2.0 5POS 1.07000
1 497-1242-1-ND LD1117S33TR - IC REG LDO 3.3V 0.8A SOT223 0.46000
1 495-5639-1-ND B82422A1183K100 - FIXED IND 18UH 155MA 2 OHM SMD 0.46000
4 399-3683-1-ND T491A106K006AT - CAP TANT 10UF 6.3V 10% 1206 0.30800
1 BSS84CT-ND BSS84 - MOSFET P-CH 50V 130MA SOT-23 0.23000
2 399-8030-1-ND C0805C180K5GACTU - CAP CER 18PF 50V NP0 0805 0.10000
1 P4.87KCCT-ND ERJ-6ENF4871V - RES SMD 4.87K OHM 1% 1/8W 0805 0.10000
4 P49.9CCT-ND ERJ-6ENF49R9V - RES SMD 49.9 OHM 1% 1/8W 0805 0.10000

What Next?

I now need to get back into Eagle and start laying out the PCB. Given my current schedule, I think I will complete the PCB design and get it sent off to OSH Park for manufacturing before the end of this Retrochallenge event but they won't be manufactured in time. I guess I know what I will be doing for Retrochallenge-2016-July!

January 8th, 2016 - Slow Start!

I am getting off to a slow start for this Retrochallenge. I am not at the point that I have anything to show yet but I thought I would give some more details on what I hope to accomplish for this month's challenge.

My main goal is to connect a 32-bit 120MHz NXP LPC1769 Cortex-M3 microcontroller to a Tandy CoCo2 through the 40-pin cartridge port. Why would I want to do that?

  • Why Not?
  • Get more PCB design experience. I have done quite a bit of protoboard work for my hobby embedded projects over the last 5+ years but it has been some time since I actually fired up Eagle CAD and did a proper schematic and layout.
  • Build a cartridge that is flexible enough to explore some CoCo hardware ideas I have had:
    • Hardware debugger.
    • Serial connection between CoCo and PC via USB.
    • Floppy drive simulation.
    • Hard drive simulation.
    • Multi-bank ROM cartridge.
    • And More!

I don't expect to actually explore the above ideas this month but I want to get the hardware in place to make it possible for future Retrochallenge events.

Mapping CoCo Signals to LPC1769

One of the first things I had to do was figure out what functionality of the LPC1769 I wanted to exploit in this project. The four LPC1769 peripherals that I wanted to take advantage of for this project include:

  1. USB for connectivity to PC.
  2. Ethernet for higher speed (100Mb/s versus USB's 12Mb/s) connectivity to PC.
  3. DAC for generating sound.
  4. SSP to communicate via SPI to a uSD card.

After reserving pins for the use of the Ethernet, USB, and SSP peripherals (wowser Ethernet uses a lot of pins to talk to the PHY chip), I came up with the following mapping of CoCo signals to LPC1769 pins:

Cartridge Pin Name LPC1769 Pin Notes
1 -12V NC Only connected on CoCo1
2 12V NC Only connected on CoCo1
3 HALT* P3_25 ->CoCo
4 NMI* P3_26 ->CoCo
5 RESET* P2_11 Potential interrupt source
6 E P2_12 Potential interrupt source
7 Q P2_13 Potential interrupt source
8 CART* P4_28 ->CoCo
9 +5V NC Powers 3.3V voltage regulator
10 D0 P2_0 D0-D7 on lowest 8-bits of Port 2
11 D1 P2_1
12 D2 P2_2
13 D3 P2_3
14 D4 P2_4
15 D5 P2_5
16 D6 P2_6
17 D7 P2_7
18 R/W* P0_0 Same port as A0-A15
19 A0 P0_4 Too bad A0-A15 aren't on contiguous pins
20 A1 P0_5
21 A2 P0_6
22 A3 P0_7
23 A4 P0_8
24 A5 P0_9
25 A6 P0_10
26 A7 P0_11
27 A8 P0_16
28 A9 P0_17
29 A10 P0_18
30 A11 P0_19
31 A12 P0_20
32 CTS* P0_24 Same port as A0-A15
33 GND GND
34 GND GND
35 SND P0_26 DAC pin to allow output of digitized sounds
36 SCS* P0_25 Same port as A0-A15
37 A13 P0_21
38 A14 P0_22
39 A15 P0_23
40 SLENB* P4_29 ->CoCo

Working on Schematic Capture

I started getting back up to speed on Eagle at the beginning of the week and the schematic capture for the cartridge is now in full swing. I will issue an update here when I finish the schematic for this project.

Useful CoCo Cartridge Links

I have found the following sites to be helpful as I work on this project:
http://www.nf6x.net/2013/10/cocoeprompak/: Mark J. Blair's CoCoEPROMpak blog.
https://github.com/NF6X/CoCoEPROMpak: gihub repository containing Eagle project files for Mark J. Blair's CoCoEPROMpak.
http://retrotinker.blogspot.com: John Linville's Retro Tinker blog which includes his Retrochallenge 2015/07 cartridge related project.
http://fahrfall.blogspot.com: John Linville's Fahrfall blog which includes cartridge creation back in Retrochallenge 2014/07.

December 10th, 2015 - Project Overview

My plan for this Retrochallenge project is to get a start on the design of a cartridge for my TRS-80 Color Computer 2.

Goals for this time around:

  • Nail down the functionality that I want from this cartridge.
  • Complete schematic capture and PCB layout.
  • Order parts.
  • Get board professionally made.

If I am lucky I will get to soldering up the board in January but really I just want to be ready to put the cartridge hardware through its paces during the July Retrochallenge.