Home

Awesome

ICOZIP

ICO Zip is intended to be a demonstration repository, demonstrating how the ZipCPU may be placed onto an ICO board.

Particular goals of this project include:

A unique feature of this project is that the Raspberry Pi that will host the ICO board will only have a minor role in the project. My intention is to use the Raspberry Pi only as a TCP/IP stack the provides access to 1) a command port on the FPGA, 2) a serial port within the FPGA, and perhaps even 3) a means of downloading new bit files to the FPGA. If all goes well, then, one should only need to run the netpport program on the Raspberry Pi, and after that everything should be accessable through the TCP/IP port numbers given in port.h.

This actually has a very profound consequence. By allowing the user to have access to the internals of the FPGA, peripheral development may be done and verified prior to placing the CPU into the FPGA. Hence, by the time the CPU is placed on board, all the parts and pieces of the design will already be known to work, leaving the only new variable that of the CPU itself.

Status

This project is a work in progress, but it is now close enough that if you have an interest in it then I would welcome you to try it.

As of 20170526, the basic, uart, and pmodled examples are fully functional. While much work has taken place on the parallel port testing modules (using sw/netpport)--they just aren't reliable enough (yet) to depend upon.

UPDATE: As of 20180731 ...

  1. The simulator is now fully functional

  2. The CPU test runs. Steps to running the CPU test include:

  1. Building the design will also build a simulation in the sim/verilated directory. The main program file for this simulation is automaster_tb.cpp. (The main_tb.cpp file is created by AutoFPGA, and so automaster_tb.cpp is the actual top level program.) You can interact with this simulation just as you would with the CPU. The name of the simulation will either be pc-main_tb or arm-main_tb depending on whether you are running from your host computer or the Pi. pc-main_tb can take an argument -t trace.vcd to force it to create a trace. It can also take the name of a ZipCPU program, which it will then load and automatically run.

  2. I haven't tested flash based programs yet, such as the 4x4x4 tic-tac-toe program mentioned above.

UPDATE: As of 20180801 ...

  1. Flash based programs now run

  2. The ZipCPU debugger has been ported to this architecture

  3. The CPU can now run "Hello, World!" using the newlib C-library, and even starting by copying the program from flash to SRAM

  4. After running cputest, the following are the additional steps necessary to run hello world:

  1. You can also run this in a simulation, by running either pc-main_tb path/to/hello, or pc-main_tb and then running pc-zipload -r path/to/hello. You may need to add a -n localhost parameter to your zipload command, and you will need to telnet into your local simulation host, but otherwise running from simulation is the same as from the hardware.