From nothing more than a sea of gates, to a modern scientific calculator
An FPGA-based, implemented with a fully custom CPU, scientific calculator with 13 digits of precision and all extended trigonometric and logarithmic functions (and much more).
- Normal, scientific, and engineering display notation; also, select a number of digits to display
- Basic algebraic functions (including powers and roots)
- Trigonometric and inverse trig, in both radians and degrees
- Logarithmic and antilog, both decimal and e base
- Hyperbolic sin, cos, tan, and their inverse
- Statistical mode with mean, sum, the sum of squares, and standard and population deviation
- Combinatorial and probability: nCr and nPr
- Conversions: between degrees and radians, between polar and Cartesian coordinate systems, between Fahrenheit and Celsius
- Factorial, percentage, and percentage of change functions
- Memory value store, and recall, value add to a store register
The idea for this project came about during a week of freezing arctic winter events here in Austin, Texas, with a failed power grid (as well as the Texas government) while keeping close to a gas fireplace, the only source of heat and light, for a few days. With weak internet over a phone data line, I could only do some preliminary searches and mainly work out various details on a writing pad, and with a growing feeling that this kind of project may be personally exciting and practically doable.
Note: The calculator has been completed, but I am still tinkering. Above all, I am behind in documenting it and publishing the source code.
- Introduction to the idea
- Basic Four Functions and Verification
- Practical Numerical Methods, more advanced algorithms
- The Framework for Development
- … (to document)
- The calculator is complete and running!
An advanced, visual netlist-level simulator
Z80 Explorer is a Zilog Z80 netlist-level simulator capable of running Z80 machine code and also an educational tool with features that help reverse engineer and understand this chip better. Read more…
A novel implementation of an old CPU
This article contains a brief overview and introduction to the A-Z80 CPU created for FPGA and a ZX Spectrum implementation tied to it. Read more…
A-Z80 is a conceptual implementation of the venerable Zilog Z80 processor targeted to synthesize and run on a modern FPGA device. It differs from existing Z80 implementations in that it is designed from the ground up through schematics and low-level gates. This set of articles describes its design and implementation.
Open source project at GitHub: https://github.com/gdevic/A-Z80
and OpenCores: http://opencores.org/project,a-z80
It is time to do something useful with the A-Z80 CPU, so why not implement a Sinclair ZX Spectrum computer, kick back, and do some retro gaming?
PlayZX is an Android app to search, download and play ZX Spectrum games, as sound files, directly into your Speccy.
The application works with a large database of games (over 12,000 titles!). You simply select a game you want to “play,” within a few seconds, the image should be downloaded, converted to a sound file, and then played through the audio output on your device.
In this blog, I show how to interface an Atari-style joystick to the Altera DE1 FPGA board running a Spectrum implementation, how to change the ROM to enable you to input some game-cheat pokes, and a few games I eventually completed using this setup. Read more…
The data bus on the Z80 processor carrying information within the chip itself does not simply connect to package pins and out to the world – the gate circuitry of each bit is quite complex. This article presents a transistor-level schematic of a data bit’s gate, which I reverse-engineered from a die photograph.
Deciphering a chip die-shot into meaningful logic gates may be hard, but it is both challenging and interesting. It is not too difficult if you follow certain guidelines, which I describe in this post.
This post is about making an FPGA to display text on a VGA monitor.
This is a set of articles on DIY making of a PCB board.
We build a board from scratch with the Atmel SAM3 MCU on it. We complete the project with the necessary software programming, starting with the initial board requirement stage, through the design, and then “in-garage” manufacturing.
- Get Started
- The Mask
- Cut a Board
- Expose and Develop
- Drilling holes
- Solder parts
- Protection and Sealing
- Testing and Troubleshooting
This blog post describes the various tools I use for work and hobby projects on my development PC. Read more…
Git is a popular source revision control system; GitForce is one of the visual front-ends to the git command line tool with the look and feel of Perforce SCM.
I wrote GitForce to help people – who are already familiar with Perforce – to transition to using git with a minimal learning curve.
Open source project at SourceForge: http://sourceforge.net/projects/gitforce
Sources are at GitHub: GitHub – gdevic/GitForce: A visual front-end to git
Flight Sim Remote Panel 2 is an Android application that shows a basic general aviation instrument set (basic-6 and radios) on your Android phone or tablet.
The x86 virtualization became a mainstream technology, but it was not always that way. Intel CPU architecture was not designed for virtualization, so it was relatively recent that clever software methods were devised to successfully implement it.
In this post I want to share some interesting technologies I’ve discovered while writing a proprietary virtualization solution. Read more…
I wanted to write a Linux driver for an FM-radio card I purchased but then I got very disappointed with the existing Linux debugging tools – and their inferiority to Windows debuggers. So, instead of writing a driver, I wrote a source-level kernel debugger for Linux instead.
Open source project at SourceForge: http://sourceforge.net/projects/linice
Just before the Wold Cup the most horrific thing happened: our Mitsubishi WS-65819 broke!
Now, most people would run to the nearest store and purchase a brand new TV without blinking, but this mishap presented an opportunity to see what’s inside that box and perhaps try to fix it. Read more…
For a long time, I wanted to get an internet radio to get access to thousands of stations from all over the world. I ended up building a custom “radio” that can do that – and more.
A weather station, Ambient Weather WS-2080 has a nasty hardware issue: occasionally, its USB interface would hard hang. Once it happens, nothing short of a power reset of the receiver unit would fix it. I’ve finally got around to fix it. If you have a similar problem with that weather station, read more…
Sinclair ZX81 lives on!
Parallel Port Logic Analyzer
Software Scope using a Sound Card
RS232 and Raspberry Pi (1)
RS232 and Arduino (2)
Accuracy of Arduino’s ADC
Printing from Eagle
Etching the PCB: Copper etchant calculator