| ▲ | I designed a nibble-oriented CPU in Verilog to build a scientific calculator(github.com) | ||||||||||||||||||||||
| 46 points by gdevic 3 hours ago | 8 comments | |||||||||||||||||||||||
| ▲ | drob518 2 hours ago | parent | next [-] | ||||||||||||||||||||||
My dad worked for HP from the mid-1970s through the mid-1990s. Needless to say, I used HP calculators in high school and college. The best things about having an HP calculator were the solid physical construction (the buttons on the 11C and 15C were awesome), the accuracy, and the fact that whenever your classmates asked to borrow your calculator they would recoil in horror when you asked them whether they knew RPN. Nobody borrowed my calculator. Anyway, I love this project. | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | wewtyflakes an hour ago | parent | prev | next [-] | ||||||||||||||||||||||
If the CPU is nibble-oriented, wouldn't that mean that that is its byte size? | |||||||||||||||||||||||
| |||||||||||||||||||||||
| ▲ | gdevic 3 hours ago | parent | prev [-] | ||||||||||||||||||||||
The core question: how did HP's scientific calculators actually work at the gate level? That rabbit hole led to building one from scratch. The architectural decision everything else follows from: a decimal calculator should store numbers as BCD — one decimal digit per 4-bit nibble. A standard byte-oriented CPU (Z80, 6502) fights that layout constantly. So I designed a small custom CPU in Verilog where 4 bits is the natural data width and memory is nibble addressable. What the project covers: - Custom CPU: Harvard architecture, 12-bit ISA, 8-state execution FSM, hardware stack guard with a FAULT state for microcode debugging - CORDIC for trig functions, verified to 14 significant digits - Two-pass assembler in Python (~700 lines) - Verilator + Qt framework: same Verilog source runs in simulation, as a desktop GUI debugger, as WebAssembly, and on real hardware - Scripting language on top of the microcode for adding functions without touching hardware - Custom PCB (EasyEDA/JLCPCB), battery, charging circuit Write-up: https://baltazarstudios.com Hackaday: https://hackaday.com/2026/05/13/build-the-cpu-then-build-the... | |||||||||||||||||||||||
| |||||||||||||||||||||||