世界を動かす技術を、日本語で。

PicoZ80 – ドロップイン型Z80置き換えモジュール

概要

picoZ80は、従来のZ80プロセッサを置き換えるための高機能なドロップインモジュール。 RP2350BデュアルコアMCU、ESP32、8MB PSRAM、16MB Flashなどを搭載。 Z80バスをサイクル精度でエミュレートしつつ、仮想デバイスや高速アプリロード、WiFi/BT管理を実現。 設定は全てSDカード上のconfig.jsonで柔軟に管理可能。 Sharp MZシリーズなど複数のZ80マシンで動作実績あり。

picoZ80 概要と特徴

  • 物理Z80 CPU を置き換える tranZPUter系統 の設計思想
  • Z80 DIP-40ソケット にそのまま装着可能なカスタムPCB
  • RP2350B(Cortex-M33デュアルコア 150MHz/300MHz) を搭載し、Z80バスを PIOステートマシン でサイクル精度エミュレーション
  • ESP32コプロセッサ による WiFi/Bluetooth/SDカード/ウェブ管理 機能
  • 8MB PSRAM(64バンク×64KB)16MB SPI Flash による大容量メモリ空間
  • 仮想デバイス/ROM・RAMバンキング/仮想ディスク など多彩な機能を追加可能
  • 人間可読なconfig.json による柔軟な設定、再コンパイル不要
  • Sharp MZ-700/MZ-80A/MZ-80B/MZ-800/Amstrad PCW など複数Z80マシン向けペルソナ開発中

主な機能

  • Z80バスのサイクル精度エミュレーション
    • RP2350のPIOがアドレス・データ・制御信号をリアルタイム制御
    • ホストは本物のZ80と同等のバスタイミングを認識
  • 大容量バンクメモリ
    • 8MB PSRAMを64バンク×64KBで構成、CPUごとに最大4MBのバンク空間
  • メモリバンキング
    • 512バイト単位でROM/RAM/物理/仮想関数ハンドラへマッピング可能
  • 仮想デバイスフレームワーク
    • 任意のメモリ/I/O範囲をC関数で仮想化
  • ペルソナ(マシン個性)
    • config.jsonでマシン構成を柔軟に切替、仮想ドライバ追加
  • フロッピー/QuickDiskエミュレーション
    • WD1773互換FDC、Sharp QuickDisk対応、DSK/RAWイメージ利用
  • WiFi/Web管理
    • ESP32による7ページ構成のBootstrapベースWebインターフェース
    • 設定、ファイル管理、OTAファームウェア更新、ペルソナ選択
  • デュアルファームウェアパーティション
    • 独立した2つの5MB領域で安全なOTA更新
  • USBファームウェア更新
    • ブートローダ経由でUSBブリッジによるファーム書き換え対応

ハードウェア構成

  • RP2350B(Cortex-M33デュアルコア)
    • Core 1: Z80エミュレーション専用
    • Core 0: ファイルI/O, USB, ESP32制御など非リアルタイム処理
    • 512KBオンチップSRAM、48 GPIO
  • 16MB SPI Flash
    • ブートローダ、2つのアプリ領域、設定領域、汎用設定パーティション
  • 8MB PSRAM(SPI接続)
    • CPUバンクメモリ
  • ESP32コプロセッサ
    • WiFi(AP/クライアント)、Bluetooth、SDカード、Webサーバ
    • RP2350との通信は50MHz FSPI + 460.8kbaud UART
  • SDカードスロット(FAT32)
    • config.json、ROM/DISKイメージ、ファイリングシステムデータ格納
  • USBハブ
    • ホスト接続・ファームウェアアップデート用
  • 3.3V電源
    • TLV62590BV同期型降圧コンバータ(Z80ソケットの5Vから供給)

基板設計

  • KiCad設計、6層PCB、DIP-40ソケットサイズに収まる極小設計
  • 0402/0603パッシブ部品、0.5mmピッチICで高密度実装
  • 主要回路シート分割
    • RP2350Bプロセッサ、ESP32、Z80バスインターフェース、電源、USBハブ
  • 手動実装(初期バージョン)→PCBファブ組立(v2.3a/v2.5)

アーキテクチャ

デュアルコア設計

  • Core 0
    • USBブリッジ、ファーム更新、ファイルI/O、ESP32制御、パーティション管理、ウォッチドッグ監視
    • ハードウェアウォッチドッグとレジスタによる起動・メインループ進捗管理
    • 障害発生時はPSRAMへダンプし、再起動後の解析が可能
  • Core 1
    • Z80エミュレーション専用ホットループ
    • PIO FIFOでZ80バストランザクション処理、メモリアクセス解決
    • 内部SRAMとPSRAMを使った高速メモリマッピング

PIOバスインターフェース

  • RP2350の3つのPIOブロック(各4ステートマシン)をフル活用
  • PIO 0
    • アドレスバス(A0-A15)、データバス(D0-D7)をサイクル同期で制御
  • PIO 1
    • 制御信号(MREQ, IORQ, RD, WR, M1, RFSH, BUSREQ, BUSACK, HALT, INT, NMI, WAIT, CLK, RESET)とサイクル実行
  • PIO 2
    • ホストタイミング、リセット、リフレッシュ、ウェイトステート生成
    • /RESET監視、DRAMリフレッシュ、/WAIT生成(tcycwaitパラメータで調整)、T1同期(IRQでCore 1へ通知)

PIOプログラム例

  • z80_addr :16ビットアドレス出力、サイクル開始信号
  • z80_data :8ビットデータバス駆動/サンプリング(BUSRQ時はトライステート)
  • z80_cycle :バストランザクション制御

まとめ

  • picoZ80は従来Z80 CPUを超高速・高機能に置き換える現代的ドロップインモジュール
  • サイクル精度のZ80エミュレーションと豊富な仮想デバイス/ネットワーク機能
  • 柔軟なJSONベース設定、拡張性の高い仮想デバイス・ペルソナ設計
  • レトロPCの新たな可能性を広げるプラットフォーム

Hackerたちの意見

俺も6502(6510)で同じようなことを考えてたんだ。C64からCPUを引き抜いてこうやって交換するか、バスマスタリングのカートリッジにするか、RAMを交換するかっていうジレンマがあったんだよね。機械の手術を避けるためにカートリッジのプランに傾いてる。RP2350をRAMのふりをさせれば、ビデオハードウェアが直接読み出せるから、いろんなことができるようになる(毎行がBADLINEになる)。最終的には、RP2350を使ったボードにVIC-IIとSIDを差し込むだけになるかも。カートリッジ方式だとコンピュータのRAMにデータを転送する必要があるけど、CPUのサイクルごとにハードウェアレジスタに書き込むこともできるから、毎行がBADLINEに似た新しいモードが実現できるかもしれない。今はRP2350を使って、できるだけCPUを使わずにスキャンラインごとにビデオを出力する実験をしてる。昨日は、異なるピクセルフォーマットのタイルを3層、スプライトを2層動かすことに成功した。結構満足してるよ。CPUはスキャンラインごとにいくつかの値を計算するけど、タイルマップデータを取得して、タイルデータを取得して、ピクセル値に変換して、透明度やパレットのルックアップは全部DMAとPIOでやってる。1、2、4、8ビットのピクセルに対応してて、各タイル/スプライト/イメージバッファ層は独立した24ビットパレットを持ってる。

こういう考え方は、エンジニアたちの間でも共通してるよね。https://eaw.app/pico6502/ 「パレットのルックアップは全部DMAとPIO」ってのは衝撃的だね。

6502(6510)用にほぼ同じことを考えてたんだ。 https://microcorelabs.com/2025/12/15/worlds-fastest-commodor... https://microcorelabs.com/2021/01/08/mcl65-worlds-fastest-ap...

これは「CPUの置き換え」ってより、バスレベルの参加者って感じだね。バスをサイクル精度で制御できるようになると、CPUの抽象化が消えちゃう。外からマシンの動作全体を再定義してるようなもんだ。

おお、すごい!シャープのMZシリーズの強化だ!素晴らしいね。1980年代にあのマシンたちでたくさんの時間を過ごしたし、いくつか持ってるよ。シャープMZ-80KのMZ80FDをエミュレートできるようになるのはクールだね。https://blog.jgc.org/2009/08/in-which-i-switch-on-30-year-ol...

これは趣味の人向けなの?それとも、何か産業用途があるの?Z80で動いてるマシンってまだあるの?

ほとんどの古いデジタル技術は、今でも産業で使われてるよ。

TI-84+のグラフ計算機は今でも人気で、現行モデルだよ。Z80ベースなんだけどね。(DIP40ソケットが入ってるのは見つからないと思うけど。)

趣味のためだけだね。シンプルなZ80 CPUの交換用としてはかなりオーバーエンジニアリングされてる。とはいえ、どこかの誰かが、ある制御基板が故障して、CPUだけが問題だって気づくことは想像できる。で、製造中止の部品のストックが水に浸かってダメになって、システムがダウンしてる間に会社が毎時何百万も失ってるっていう話はあまり一般的ではないと思う。人間に全幅の信頼を寄せて、そういうシステムを担当している人たちは、Z80が使えなくなる前に、全ての制御基板の交換用が用意されていることを計画していると想像したいな。

Z80で動いてる機械ってまだあるの? めっちゃあるよ。Zilogが生産終了を発表したのは2024年だけど、それでもまだたくさん出回ってるし、安くて信頼性も高い部品なんだ。だから、Z80を使ってるデバイスに頼ってて、CPUが壊れるのが心配なら、棚に何百個も置いておけるくらい安いしね。今のところ、工業用途にはあまり役立たないかもしれないけど、本物が手に入りやすいからね。将来的には状況が変わるかもしれないし、こういうプロジェクトがあるのはいいことだね。

おすすめのヒント:RP2350の設計シートを無視して、標準の1.2V LDOを使って内部のvCoreを供給するといいよ。あの変なインダクタを使わなくて済むし、1.2Vで300MHzで安定して動かせるから。

それにはどんな理由があったの?そのインダクタの特定の特徴が選ばれる要因になったのか、それとも選んだ後に設計が一般的なインダクタの挙動に依存していることに気づいたのか。設計シートから外れると、何が変わるかわからないのが問題だよね。違いに依存していない可能性は高いけど、わからないっていうのが気になるんだよね。

こういうのをクラシックCPU ICEとして作りたいな、トレースメモリや逆アセンブル機能付きで。(多くのCPUにはクリスタルオシレーター回路が必要だよ、6802、8085など)Altair 8800みたいなクラシックコンピュータのデバッグに役立つと思う。動作しているマシンのブートトレース(最初の100,000命令を記録)を取得して、壊れたマシンのものと比較するんだ。これで問題が5秒で見つかるよ。

自作ハードウェアは初心者なんだけど、いろんな環境でPLCシステムに何年も携わってきたよ。理由は説明できないけど、Teensy2が大好きなんだ…これも欲しいな。趣味がすごく高くつきそうな気がする。古い家族のTandonがあって、いろいろアイデアが浮かんできてる。

実際のTandy Radio Shack Model 3コンピュータに移植されたの?(Z-80ベースで)

これは基本的にインサーキットエミュレーター(ICE)だね。

これ、MicroCoreLabsのMCLZ8(2022)を思い出すな:https://microcorelabs.com/2022/05/11/mclz8-zilog-z80-emulato... (6502、6809、68000、8088用のドロップインエミュレーターもあるよ。)