NOTE: This is a work-in-progress. Check back for updates. I will note any revisions at the top of this article.
- 2017-03-19 – Fixed a typo (thanks, Roger), and minor clean up.
Cyclone CoCo – Roger Taylor’s FPGA CoCo on a Chip
In July 2015, Roger Taylor began the process of recreating a CoCo 3 system in an FPGA (field programmable gate array). Using a low-cost (less than $80) Terasic DE0-Nano development board and a custom I/O add-on board, he quickly got a virtual CoCo running. He has been continually improving the system and adding more features. His “CoCo on a Chip” Facebook group has documented this every step of the way.
Last year, I had acquired one of these DE0-Nano development boards and the RGB22VGA add-on board from Ed Snider. I was planning on using it to hook my old CoCo 3 up to a borrowed VGA monitor. But, at last year’s 25th annual CoCoFEST! near Chicago, Mark Marlette of Cloud-9 was selling his all-in-one version of this RGB to VGA adapter. I picked on of those up, and never used the DE0-Nano.
Roger recently sent me one of his add-on boards so I can finally put together my own FPGA CoCo. Let’s see how it goes…
- Terasic DE0-Nano Development and Education Board. These list for $79 on the manufacturer’s website ($61 for academic purchasers). It comes with a retractable USB Mini cable, which will be used to program the FPGA.
- Roger Taylor’s Terasic DE0-Nano Upgrade Daughter Board. He sometimes has these available completely assembled for around $99 (via his e-Bay store). You can also just buy the bare boards and build one yourself.
- SD memory card. Currently, the project does not support SDHC cards, so you have to find an older, smaller capacity SD (SDSC) card like a 2GB. I picked up a Transcend 2GB card on Amazon for about $7.
- PS/2 Keyboard (and optional mouse). I have never owned anything that used PS/2, so I didn’t have an old keyboard to use. I found a cheap Logitech Classic Keyboard K100 on Amazon for $11.99.
- VGA Monitor. I have one I borrowed to use with my CoCo, but I think VGA ports can still be found on some modern monitors.
- USB Power Supply for the DE0-Nano. You can use the included USB Mini cable and use a USB power port, or use a similar USB charging cable with a Mini connector.
A cheap PS/2 keyboard, 2GB SD card, DE0-Nano and Roger’s add-on card.
About Roger’s Terasic DE0-Nano Upgrade Daughter Board
Roger’s add-on board has RAM, two PS/2 style ports, a 1/8″ audio output jack, and VGA port. There are header connectors for plugging in a module that handles the SD card, and ones for WiFi and Bluetooth. My unit has The SD card and WiFi installed. I will be ordering a Bluetooth module for wireless serial ports (they are very cheap).
The card has writing along the bottom indicating which direction it should be plugged up tot he DE0-Nano: “Faces DE0-Nano USB connector –>>”:
Writing on the board points the way to proper installation…
You can also tell orientation by the cutout in the board, which lines up with some small 2-pin connector on the DE0-Nano below:
Cutout in the board allows access to a connector below.
- Roger recommends installing the Quartus II programming app. (Smaller than having to install the full Quartus II IDE).
- You will also need to install the USB Blaster device driver, which will be found in the install directory of the programming app.
- You also want the latest Cyclone CoCo firmware from his Facebook group. He calls it Cyclone CoCo, for reasons that will become obvious once you start using it :)
It seems the first step will be to install the Terasic software, and then hook the DE0-Nano up and load Roger’s firmware. The software is only available for Windows and Linux. Since I am a Mac user, I will either have to run it via virtualization (I use Parallels Desktop and Windows 10) or find a PC to use. I have several Raspberry Pis running Linux, so maybe that is an option as well.
After that, you will have to install a driver, and lastly you will be able to load Roger’s firmware on to the device and turn it in to an FPGA CoCo. Here are the steps I took:
Step 1: Install the free programming app.
Download it here:
I am using the Windows version, so my screen shots will be from that version.
Installing the Stand-Alone Quantus II Programmer from Altera.
This will make available a program called “Quartus II 12.1 Programmer” in the Altera 12.1 Build 177 folder.
NOTE: Your version number may be different if you are using later or earlier versions than I have. If you are setting up one of these, I’m sure you can figure that out.
Step 2: Install the USB driver.
When you plug in the DE0-Nano to the computer, Windows should prompt you for a driver. My Windows 10 did not, so I had to manually install it. If yours does, you can skip the next step and go straight to how to browse to the driver.
First, I had to open the Device Manager and find the USB-Blaster in the Other devices section:
Device Manager showing the USB section, missing the driver.
Double clicking on USB-Blaster brings up information about the device:
USB-Blaster needs a driver.
Select “Update Driver…” and then choose “Browse my computer for driver software“. You have to manually tell it where the driver will be found (inside the programmer install directory):
Select the second option so you can browse to where the driver is located.
On my system, I used the default install location and the driver was located here:
Browse to the drivers directory inside of the programmer software directory.
Your directory names may be different, depending on what version of the software you install. Browser there, and then click Next:
The system should find the driver and install it.
Step 3: Program the DE0-Nano
Plug in the DE0-Nano to a USB port using the included cable, then launch the Quartus II 12.1 Programmer application.
Quartus II 32-bit Programmer showing No Hardware.
If your Hardware Setup box says “No Hardware”, click the Hardware Setup button and select “USB-Blaster“:
Select the USB-Blaster device.
After you close that windows, you can use File->Open to browse to and load the FPGA firmware image you downloaded from Roger’s Facebook page:
Load Roger’s firmware image.
When it is loaded, you will need to check off “Program/Configure” and (probably optional) “Verify” to enable the Start button:
Firmware loaded and ready to program.
Once those two buttons are checked, you can then click Start to begin programming. After a few moments, you should see “100% (Successful)” in the top right green box:
Programming in progress. It only takes a few moments.
Congratulations! You now have an FPGA CoCo!
Hello, FPGA CoCo!
After these steps, I plugged the device up to a VGA monitor and plugged in my PS/2 keyboard to the left port, and powered it up. It should instantly come to life with a familiar green screen, but if you have not prepared the special SD card for it yet, it will hang, trying to boot from that card.
You can hold down ESCape when you power up to bypass that, and find yourself at a nice virtual CoCo:
Hello, FPGA CoCo!
In the next part, I will figure out how to configure the SD card so I can actually load some software on it, and save any programs I create.
Until then … wow. This was easy! I can’t wait to see what all it can do. Thanks, Roger!