Retro CPC Dongle – Part 47

The programming daughter-board for the CPC2 is on its way, most likely making its slow way through the USPS. Rather than wait a few more weeks for the board to arrive, I thought I’d share the 3D render for the board.

Building this board was an exciting new development in the project as the board was designed using KiCad. Transitioning to KiCad from DesignSpark was not a decision undertaken lightly. The proprietary nature of DesignSpark, coupled with the forced upgrades and continual re-registration process convinced me to give KiCad a go. After a few hours of learning the new work-flow and learning the huge number of short-cut keys, and I was building boards like a pro.

The models for the components I used were either available from the Mouser web site, or were created at my request by the wonderful folks at SamacSys. While I did trial the process of creating new components and footprints, this was unnecessary as everything I needed was provided for me.

After laying out the board and thanks to the super smart folks at OSHPark, the process of submitting the board for manufacture couldn’t have been simpler. Here’s a comparison of the process for DesignSpark and KiCad. See if you can spot which process is the better one.

StepDesignSparkKiCad
1Set up the parameters for each manufacturing layerDrop the PCB file on the OshPark home page
2Output the plots for all layers
3Rename the plots so they can be identified by the layout software
4Load all plots into GERBV to check the alignment of all layers
5Zip up all files
6Drop the ZIP file on the OSHPark home page.
7 Done!Done!

In case you didn’t spot it, processing the KiCad PCB file was waaaaay easier – a surprising and delightful experience. A brief visual check from the OSH Park simulated renders and I was confident that the KiCad PCB file had been interpreted correctly.

A quick click on the ‘Buy’ button and my boards were on their way. Assuming that I haven’t bungled the layouts, the build process should be fairly simple, so I’ll post again when I’ve put these boards together. With the programming headers moved from the CPC2 to the daughter-board, I’ll be able to focus on getting the 3D printed case correct.

Previous Post <====> Next Post

Retro CPC Dongle – Part 46

It’s time to create the enclosure for the CPC2. This is my first foray into the world of 3D printing and it was quite daunting at first. However, free online software like TinkerCad make the process of creating a model fairly simple. I chose to start by creating the base that would hold the main PCB as this would likely be the most difficult piece to get correct, mainly because the cut-outs for the ports had to line up correctly. I ended up with this:

When printed, it gave me this:

Click for a large image

Not quite right, but almost! The holes for the HDMI and USB don’t quite align. To be fair to me, I was working from the mechanical design, rather than measuring the actual board that I built, so it’s not too bad.

One of the problems I have in testing the board fit is that there are two pin headers on the bottom of the board for the ESP32-Wroom32 and the FPGA, so it won’t quite fit onto the mounting pegs for a flush fitting. My plan is to build a second board that will connect to the main board with pogo-pins and remove the pin headers completely. That way, the same board can sit low in the case when in use and sit on the pogo-pins for testing and programming. This also means it must be easy to remove the board from the case and return it when programmed as it will flop-flop between the test harness and the finished case as needed for system programming.

Without spending time to really understand the capabilities of 3D printing, I opted for a conservative design for the enclosure. It will be a three part-piece comprising the base shown above, the top and the keyboard. It could probably have been done with two pieces, but would require support structures and have been a lot more difficult to print.

With businesses across the world struggling with COVID related problems, I really wanted to support my local businesses, so I used an Aussie printer, http://3dprint-au.com/ to print the part for me. It was a little more expensive than buying from overseas, but helping out local businesses in a tough year is the right thing to do.

I considered buying a 3D printer, but I’d need to create 9 pieces before I broke even at $50 per print vs a FlashForge Finder. I may still do this, given the lead time it takes to get a manufactured print and the chances of me screwing it up a few times.

The other discovery that I made when creating the model for the base is that to maintain the correct proportions for the CPC2 with the original CPC, is that it needs to be quite long. Anyone that knew the original CPC464 knew how long these machines are. You can see the location of the board pins in the image above, and everything outside of these is empty space. However, for the CPC2 to look like a miniature of the original, it needs this space added to be proportional. Sadly, it makes the final outer dimensions a lot larger than I wanted, and not exactly a dongle any more.

However, at this point, I’ll just be glad to have the project finished. I hope to have the programming harness built for my next post, so until then, stay safe!

Last Post <====> Next Post

Retro CPC Dongle – Part 44

Final Hardware Build

At long last, the final build of the CPC is finished, tested and working!

A working CPC2(dot4!)

Assembly of the new board was pretty uneventful. I followed my usual process of dry assembly on a spare board, solder pasting with a stainless steel stencil, rapidly transferring the components from the dry board to the pasted board followed by a session in the IR oven. Continue reading

Retro CPC Dongle – Part 43

With the world in lockdown, you’d think there’s plenty of time for hobbies. Somehow, it’s been 4 months since my last post – time flies in a crisis! I’ll admit that I’ve been somewhat lax in working on the CPC2, but with the project so close to completion, I need to re-commit to finishing this 5-year project! Today’s post is about my CPC Bluetooth joystick!

Modded Atari 2600 joystick

Continue reading

Retro CPC Dongle – Part 41

Build v2.3

So the next build of the CPC2 is done. I recorded the process with a time-lapse camera because it’s hard to make a 7 hour build entertaining. Each second of video is 30 seconds of assembly time, so this 7-hour build ended up at 7m19s of timelapse, after cutting out the cursing and head-scratching. See if you can spot my hands start to shake at the 2-hour mark of trying to precisely place the sub-millimetre components and enjoy.

Continue reading

Retro CPC Dongle – Part 38

This post talks about HyperRAM, what it is, how to interface to it and how to improve the performance of high-speed parallel interfaces.

HyperRAM is described well by Cypress. It is essentially a double data rate RAM with a compact 12-line interface that masks the underlying technology of a DDR SDRAM.  It can provide 333MB/s of data transfer in short bursts. Data is transferred on both edges of the clock, and the narrow bus makes it ideal for microprocessors or pin-constrained FPGAs. Continue reading

Retro CPC Dongle – Part 36

Another update and another dead end. In an attempt to add the much-needed storage mentioned in my last post, I managed to damage the board so that the JTAG connection stopped working. I added the EPCQ configuration flash chip to the board, only to find that I’d wired the data in and data out back to front and the flash can’t be read from the FPGA. I looked at direct access through the ASMI connection, but I couldn’t get this working. I guess it doesn’t expect the chip to be wired in ‘backwards’! In a futile recovery attempt, I tried to solder in the spare 16G eMMC card, but managed to short out the power pins again. Upon desoldering the eMMC, I must have damaged something because the JTAG connection stopped working. The chip could still be programmed through the supervisor connection on the fast-passive-parallel port, so it was not extensively damaged, but the JTAG connection was pretty essential to efficient RTL development. For now the board is relegated to the ‘post-project-review’ bin. Developing the hardware, RTL and software all in parallel creates too much inefficiency. So I decided to use this board to finish the development, the Terasic Cyclone V GX Starter:


Continue reading

Retro CPC Dongle – Part 35

Time for a quick update. I’ve integrated the SDRAM controller, the byte cache, and created some logic to map some of the SDRAM address space to the CPC ROM enable line. I also created some logic to allow the support CPU to push data into the SDRAM. This means that the support CPU can alter the ROM configuration of the CPC2 based on a user-set configuration.

To test the set-up, I created an example ROM that when booted by the CPC, it copies itself to address 0x4000, then dumps 64 bytes of memory at 0x4000. This will test the SDRAM controller, the cache and the cache replacement algorithm. Here’s the output.

Booting a dynamically installed ROM

Continue reading