概要
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の新たな可能性を広げるプラットフォーム