Although the virtual DIY Calculator is lots of fun, there is something satisfying about having a real machine
to play with, so we’ve been pondering the idea of creating a physical version of the DIY Calculator ...
An Existing Implementation
For your delectation and delight, some students at Newcastle University in the UK have already created one implementation of a physical DIY Calculator as part of their final year project.
The main calculator "front panel" board containing the displays (7-segment LED displays in this case) and the calculator's buttons is shown on the right. This is controlled by a Field-Programmable Gate Array (FPGA) which is located on the FPGA development board to the left. The FPGA is used to implement the DIY Calculator's CPU, ROM, RAM, and I/O ports. Furthermore, the DIY Calculator's RAM, (which is implemented using the FPGA's block RAM) contains a machine code file that was generated by the DIY Calculator's assembler.
From left-to-right, the team are Steven Cooper, Carl Hoggins, Bjornar Prestegard, Dr Albert Koelmans (instructor), and Svein Roar Kvaale. Just to perk your interest, the team's instructor, Dr Albert Koelmans, is contemplating creating an asynchronous version of the DIY Calculator's CPU (but that's a story for another day).
VHDL Files, Project Notes, etc.
For those who are interested in taking this project further, the team have kindly made their project report available, along with the VHDL models they created of the DIY Calculator, the PCB files used to manufacture the circuit boards, and so on. Note that the FPGA development board used by the team was an Altera UP2, and the software used to process the VHDL models and program this board was the Altera Quartus II Web edition.
All of this material is provided in compressed ZIP files, which you can download by clicking on the links below and saving them to your own computer:
Notes Re Physical Implementations
Truth to tell, there's quite a lot to think about when it comes to creating a physical version of the DIY Calculator. There are several different approaches one could use, but for the moment we've decided to focus on an implementation based on Field-Programmable Gate Array (FPGA) technology.
In order to give you a head start, we've created a document containing our Musings and Ponderings on this topic. For example, if you do create a physical version of the calculator, how are you going to download programs into it? Also, what are you going to do if your physical display device uses different codes to the display in the virtual world?