HN🔥 83
💬 26

自作関数電卓のためにVerilogで「ニブル単位」のCPUを設計してみた

gdevic
約11時間前

ディスカッション (7件)

1
gdevic
約11時間前

核心的な疑問は「HPの関数電卓はゲートレベルで実際にどう動いていたのか?」ってことだった。その深掘りが、ゼロから自作するきっかけになったんだ。

アーキテクチャを決める上で全ての基本になったのがこれ。十進法電卓は数値をBCD(10進1桁を4ビットのニブルで表現)で格納すべきだっていう点。Z80や6502みたいな一般的なバイト単位のCPUだと、その構造と常に戦うことになる。だから、4ビットが自然なデータ幅で、メモリがニブル単位でアドレッシングできる独自の小型CPUをVerilogで設計したよ。

プロジェクトの内容:

  • 自作CPU:ハーバードアーキテクチャ、12ビットISA、8ステート実行のFSM、マイクロコードデバッグ用のFAULT状態を備えたハードウェアスタックガード

  • 三角関数用のCORDIC:14桁の有効数字まで検証済み

  • Pythonで書いた2パスアセンブラ(約700行)

  • Verilator + Qtフレームワーク:同じVerilogソースがシミュレーション、デスクトップGUIデバッガ、WebAssembly、そして実機でそのまま動く

  • マイクロコード上で動作するスクリプト言語:ハードウェアをいじらずに機能追加が可能

  • 自作PCB(EasyEDA/JLCPCB)、バッテリー、充電回路

詳細記事:https://baltazarstudios.com

Hackadayの記事:https://hackaday.com/2026/05/13/build-the-cpu-then-build-the-calculator/

2
drob518
約10時間前

親父が70年代半ばから90年代半ばまでHPに勤めてたんだ。言うまでもなく、高校や大学ではHPの電卓を使ってたよ。HP電卓の最高なところは、頑丈な作り(11Cや15Cのボタンは最高だった)、正確さ、そしてクラスメートが電卓を貸してくれと言ってきた時に「RPN(逆ポーランド記法)わかる?」って聞くと、みんな恐怖に引きつって引いていくところだね。おかげで誰も借りようとしなかったよ。とにかく、このプロジェクトは最高だね。

3
wewtyflakes
約9時間前

CPUがニブル単位(4ビット)志向なら、それって実質的なバイトサイズが4ビットってことにならないの?

4
fitsumbelay
約5時間前

これ最高!自分でハードやソフトのツールを作ってる人を見るのが大好きだ。自分も近いうちに時間を捻出してやってみたい。電卓は絶好のプロジェクトだよね。

動画って公開されてる?

5
NetMageSCW
約5時間前

素晴らしいプロジェクトだね。(私のDM42は9と正確に返してくれたよ。)

ブログ記事のパート6に間違いがあって、HP-71Bの写真のキャプションが48GXになってるね(両方ともSaturn CPUを使ってるけど)。ちなみに自分もHP-71Bを持ってて、そのForth/アセンブラROMマニュアルを使って最初のHP-48 ROMデコーダーを書いたことがあるよ。

6
gdevic
約4時間前

WebAssembly版がここで動かせるよ。デバッガーパネルありとなしで分けといた。

https://baltazarstudios.com/files/calculator-d/Calculator.html

https://baltazarstudios.com/files/calculator/Calculator.html

このWebAsmコードはQtとVerilatorでコンパイルされてて、電卓インターフェースを提供するシンプルなUIシェルの中で「ハードウェア」とマイクロコードを動かしてる。デバッグ版ではマイクロコードのリスト表示や、ブレークポイントの設定、レジスタの確認なんかができるよ。