Files
pico/README.ja.md
Philip Smart e19a22fce6 Added README
2026-03-29 23:59:43 +01:00

17 KiB
Vendored
Raw Permalink Blame History

picoZ80 / pico6502

RP2350 ベースのドロップイン CPU 交換ボード — サイクル精度 PIO バスインターフェース、WiFi 管理、仮想デバイスフレームワーク搭載

Copyright (c) 2019-2026 Philip Smart — eaw.app


概要

picoZ80 は、レガシー Z80 ベースコンピュータの Z80 DIP-40 CPU ソケットに直接装着できるカスタム PCB です。個別の Z80 プロセッサの代わりに、RP2350B マイクロコントローラ(デュアルコア 150 MHz Cortex-M33、最大 300 MHzを搭載し、プログラマブル I/OPIOステートマシンが Z80 のアドレス、データ、制御バスをサイクル精度で完全に制御します。

pico6502 は同じアーキテクチャを MOS 6502 に適用し、互換ホストの 6502 DIP-40 CPU を置換します。

すべてのバストランザクションは RP2350 の PIO エンジンによりリアルタイムで処理され、ホストシステムは実際の CPU と同じバスタイミングを認識します。RP2350 の第 2 コア、512 KB オンチップ SRAM、8 MB 外部 PSRAM、16 MB Flash により、高速実行、仮想化メモリ、ROM バンキング、仮想ディスクドライブ、マシンペルソナエミュレーションなど、ほぼ無制限の機能が実現されます。

ESP32 コプロセッサが WiFi、Bluetooth、SD カードマスストレージ、ブラウザベースの管理インターフェースを提供します。すべての設定は SD カード上の config.json ファイルで駆動され、メモリマップ、ROM イメージ、ドライバ選択の再設定にリコンパイルは不要です。

主な機能

  • ドロップイン Z80/6502 交換 — DIP-40 CPU ソケットに装着するだけ。ホストは通常のバスタイミングを認識
  • サイクル精度 PIO バスインターフェース — 3 つの RP2350 PIO ブロックがアドレス、データ、制御信号をフルバス速度で処理
  • 8 MB PSRAM — 64 バンク x 64 KB のバンクアドレス空間、512 バイト単位で設定可能
  • ROM/RAM バンキング — ブロックを ROM、RAM、物理ホストメモリ、仮想関数ハンドラとしてマッピング可能
  • 仮想デバイスフレームワーク — メモリブロックや I/O ポート範囲を C 関数で実装可能
  • マシンペルソナ — JSON 駆動設定で任意の Z80/6502 ホストに対応。Sharp MZ ペルソナ同梱
  • フロッピーおよび QuickDisk エミュレーション — SD カードイメージからの WD1773 FDC および Sharp QuickDisk ドライブエミュレーション
  • WiFi ウェブ管理 — 設定、ファイル管理、OTA アップデート、ペルソナ選択用の 7 ページ Bootstrap ウェブインターフェース
  • デュアルファームウェアパーティション — 安全な OTA アップグレード用の 2 つの独立した 5 MB ファームウェアスロット
  • USB ファームウェアアップデート — ブートローダが USB ブリッジを公開し、ハードウェアデバッガ不要で初期フラッシュ可能

ハードウェア

picoZ80 PCBリビジョン 2.5は、Z80 DIP-40 パッケージの物理的フットプリント内に収まるコンパクトな 6 層基板です。すべてのロジックは 3.3 V で動作し、5 V ホストバスに対するレベルシフトを備えています。

主要コンポーネント

コンポーネント 説明
RP2350B デュアルコア Cortex-M33最大 300 MHz、512 KB SRAM、48 GPIOQFN-80
16 MB SPI Flash ブートローダ、2 つのファームウェアスロット、2 つの設定スロット、パーティションテーブル
8 MB PSRAM 外部疑似スタティック RAM — 64 バンク x 64 KB
ESP32-S3-PICO-1 WiFi/BT コプロセッサ、SD カード、ウェブサーバ
SD カードスロット FAT32 — config.json、ROM イメージ、ディスクイメージを格納
USB ハブ CH334F — ホスト接続とファームウェアアップデートブリッジ
電源 TLV62590BV 5 V-to-3.3 V バックコンバータZ80 ソケット VCC から給電)

回路図シート

KiCad 設計(kicad/PICOZ80/)は 5 シートに分かれています:

  1. RP2350B プロセッサ — GPIO 割り当て、水晶、Flash、PSRAM
  2. ESP32 コプロセッサ — WiFi モジュール、SD カード、FSPI/UART プロセッサ間通信
  3. Z80 バスインターフェース — DIP-40 ソケット、全バス信号用直列抵抗ネットワーク
  4. 電源 — 5 V-to-3.3 V 同期バックコンバータ
  5. USB ハブコントローラ — CH334FMini-B コネクタ付き)

アーキテクチャ

デュアルコア設計

  • Core 0 — 非リアルタイムタスク: USB ブリッジ、ファイル I/OESP32 中継)、ファームウェアアップデート調整、ウォッチドッグ監視、障害診断
  • Core 1 — CPU エミュレーションホットループ専用: PIO FIFO サービス、メモリマップに対するアドレス解決、物理ホスト・PSRAM・仮想デバイスハンドラへのディスパッチ

PIO バスインターフェース

Z80 バスインターフェースは RP2350 PIO アセンブリ(z80.pioで完全に実装されています。3 つの PIO ブロックすべてを使用:

PIO プログラム 機能
0 z80_addr, z80_data, z80_cycle, z80_fetch アドレス/データバス、サイクルシーケンス、オペコードフェッチ
1 z80_mem_read/write, z80_io_read/write, z80_busrq, z80_nmi, z80_clk_sync, z80_int_ack メモリ/IO サイクル、バス制御、割り込み
2 z80_reset, z80_refresh, z80_wait, z80_sync ホストタイミング、DRAM リフレッシュ、ウェイトステート、T1 同期

3 層メモリモデル

ストレージ 説明
1 RP2350 SRAM512 KB O(1) ブロックタイプルックアップテーブル — 512 バイトブロック用 128 エントリ
2 PSRAM8 MB、SPI 64 バンク x 64 KB RAM/ROM イメージ、ポインタ配列、関数ポインタ配列
3 Flash16 MB、SPI ファームウェア、ROM イメージ(起動時に PSRAM にコピー)、設定 JSON

メモリブロックタイプ: PHYSICAL, PHYSICAL_VRAM, PHYSICAL_HW, RAM, ROM, VRAM, FUNC, PTR

Flash メモリレイアウト

パーティション アドレス範囲 サイズ 内容
ブートローダ 0x10000000-0x1001FFFF 128 KB USB ブリッジ、ファームウェアアップデート、パーティション選択
App スロット 1 0x10020000-0x1051FFFF 5 MB Z80 ファームウェア(パーティション 1
App スロット 2 0x10520000-0x10A1FFFF 5 MB Z80 ファームウェア(パーティション 2
App 設定 1 0x10A20000-0x10C9FFFF 2.5 MB ROM イメージ + 設定 JSONスロット 1
App 設定 2 0x10CA0000-0x10F1FFFF 2.5 MB ROM イメージ + 設定 JSONスロット 2
全般設定 0x10F20000-0x10FFEFFF 892 KB コア設定
パーティションテーブル 0x10FFF000-0x11000000 4 KB アクティブスロット、チェックサム、メタデータ

マシンペルソナ

ファームウェアは複数のマシンペルソナをサポートし、各ペルソナは異なる PSRAM バンクに関連付けられます。ペルソナの切り替えにより、ホストをリブートせずにアクティブなメモリマップとロード済み ROM イメージが変更されます。

ペリフェラルおよびファイリングシステムドライバ

ドライバ 説明
MZ700.c Sharp MZ-700 ペリフェラルセット — バンク切り替え、ビデオ、キーボード I/O
WD1773.c WD1773 フロッピーディスクコントローラ — SD カードからの 80 トラック DSK/RAW イメージ
QDDrive.c Sharp QuickDisk ドライブ — QD イメージファイルによる完全な SIO/2 エミュレーション
RFS.c ROM ファイリングシステム — SD からの MZF ロード、CP/M v2.23、SA-1510 BASIC、MS-BASIC v4.7
TZFS.c TranZPUter ファイリングシステム (開発中)
MZ-1E05.c Sharp MZ-1E05 フロッピーディスクインターフェースユニット
MZ-1E14.c BIOS ROM 付き QuickDisk コントローラMZ-700/MZ-800
MZ-1E19.c BIOS ROM なし QuickDisk コントローラMZ-800/MZ-2000/MZ-2200/MZ-2500
MZ-1R12.c 32 KB バッテリバックアップ RAM ボードSD カードに永続化)
MZ-1R18.c 64 KB RAM 拡張 / RAMFILE

ビルド手順

前提条件

  • CMake 3.20+
  • ARM GCC ツールチェーンarm-none-eabi-gcc
  • Docker — ESP32 ファームウェアビルド用Espressif IDF コンテナ espressif/idf:release-v5.4
  • Python 3 — Pico SDK ビルドツールに必要
  • Perl — 自動バージョンインクリメントに使用

ディレクトリ構成

<root>/
├── get_and_build_sdk.sh      # pico-sdk のクローンとビルド
├── build_tzpuPico.sh         # RP2350 ファームウェアのビルド(+ オプションで ESP32
├── picoZ80.h.tmpl            # ボード定義テンプレート(ビルド時に SDK にコピー)
├── pico-sdk/                 # get_and_build_sdk.sh でクローン
├── pico-extras/              # get_and_build_sdk.sh でクローン
└── projects/
    ├── Z80/                  # Z80 エミュレーターライブラリ(別途クローン)
    └── tzpuPico/             # 本プロジェクト

ステップ 1 — プロジェクトのクローン

mkdir -p <root>/projects
cd <root>/projects

# メインプロジェクトのクローン
git clone https://git.eaw.app/eaw/pico.git tzpuPico

# Z80 エミュレーターライブラリのクローン
git clone https://github.com/redcode/Z80.git Z80

ステップ 2 — PICO_PATH の設定

get_and_build_sdk.shbuild_tzpuPico.sh の先頭にある PICO_PATH 変数を編集:

export PICO_PATH=/your/chosen/root/

ステップ 3 — Pico SDK の取得とビルド

cd <root>
./get_and_build_sdk.sh

ステップ 4 — RP2350 ファームウェアのビルド

cd <root>

# 標準リリースビルドRP2350 のみ)
./build_tzpuPico.sh

# デバッグビルド
./build_tzpuPico.sh DEBUG

# フルビルド — RP2350 + Docker 経由の ESP32 ファームウェア
./build_tzpuPico.sh ALL

出力ファイル:

  • projects/tzpuPico/fw/uf2/ — ブートローダ UF2 イメージ(初期 USB フラッシュ用)
  • projects/tzpuPico/fw/bin/ — アプリケーションパーティションバイナリOTA アップデート用)

ESP32 ファームウェアの個別ビルド

alias idf54='docker run --rm --privileged \
  --volume /dev:/dev --volume /sys:/sys:ro \
  --volume /dev/bus/usb:/dev/bus/usb \
  -v $PWD:/project -w /project \
  -it espressif/idf:release-v5.4 idf.py "$@"'

cd <root>/projects/tzpuPico/esp32
idf54 build

フラッシュ

初期 RP2350 フラッシュ

6 ピンデバッグヘッダのピン配置:

ピン 1 ピン 2 ピン 3 ピン 4 ピン 5 ピン 6
SWCLK SWDIO Reset RP2350 Reset ESP32 GND BOOTSEL
  1. **ピン 6BOOTSEL**を Low に保持
  2. 電源を投入するか、**ピン 3Reset**を Low にして解放
  3. 起動開始後すぐに BOOTSEL を解放
  4. USB を接続 — RP2350 がマスストレージデバイスとして列挙
  5. マウントされたドライブに Bootloader_<version>.uf2 をコピー

初期 ESP32 フラッシュ

python3 -m venv ./venv/ && source ./venv/bin/activate
cd $HOME/esptool

PORT=/dev/ttyUSB0          # システムに合わせて調整
BINPATH=/path/to/build

python3 ./esptool.py -p ${PORT} -b 115200 \
  --before default_reset --after hard_reset --chip esp32s3 \
  write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m \
  0x0     ${BINPATH}/bootloader.bin \
  0x8000  ${BINPATH}/partition-table.bin \
  0x9000  ${BINPATH}/ota_data_initial.bin \
  0x10000 ${BINPATH}/sd_card.bin

OTA アップデート(初期フラッシュ後)

  • RP2350http://<device-ip>/ota-rp2350.htm にアクセスし、.bin ファイルをアップロード
  • ESP32http://<device-ip>/ota-esp32.htm にアクセスし、ファームウェアバイナリまたは FilePack アーカイブをアップロード

SD カードの準備

FAT32 でフォーマットしてください。ルートディレクトリに config.json を配置します。設定で参照される ROM イメージおよびディスクイメージ用のサブディレクトリを作成します。ボード稼働後は、ウェブファイルマネージャページからも SD カードを管理できます。


ウェブインターフェース

ESP32 が WiFi 経由で 7 ページの Bootstrap ウェブインターフェースを提供:

ページ 機能
ステータス システム概要 — RP2350/ESP32 ファームウェアバージョン、パーティション情報、稼働時間
パーソナリティ マシンペルソナの選択と切り替え
設定 シンタックスハイライト付きの config.json 編集
ファイルマネージャ SD カード上のファイルの閲覧、アップロード、ダウンロード、削除
OTA RP2350 RP2350 ファームウェアバイナリの OTA アップロード
OTA ESP32 ESP32 ファームウェアまたは FilePack アーカイブのアップロード
WiFi 設定 AP/クライアントモード、SSID、パスワードの設定

ドキュメント

詳細なドキュメントは eaw.app で公開されています:


クレジット

  • Manuel Sainz de Baranda y GoniZ80 C 言語 Z80 CPU エミュレーターライブラリGPL v3
  • Raspberry Pi Ltd — Pico SDK および RP2350 ハードウェア
  • Espressif Systems — ESP-IDF フレームワークおよび ESP32 ハードウェア
  • Philip Smart — ハードウェア設計、RP2350 PIO ファームウェア、ESP32 ウェブアプリケーション、JSON 設定システム、Sharp MZ ペルソナドライバ、ドキュメント

商用利用の制限

書面による明示的な許可なく商用利用は認められません。

picoZ80/pico6502 のハードウェア設計、ファームウェア、および関連するすべてのソフトウェアは、個人使用、教育目的、および非商用利用のみに提供されています。この設計のいかなる部分も、著者の書面による明示的な許可なく、商用製品に使用、複製、製造、販売、または組み込むことはできません。

商用ライセンスのお問い合わせ: info@eaw.app


ライセンス

コンポーネント ライセンス
picoZ80/pico6502 RP2350 ファームウェアPIO、C ソース) GNU General Public License v3
picoZ80/pico6502 ESP32 ファームウェアおよびウェブインターフェース GNU General Public License v3
Z80 CPU エミュレーターライブラリManuel Sainz de Baranda y Goni GNU General Public License v3
KiCad ハードウェア設計ファイル回路図、PCB、ガーバー Creative Commons BY-NC-SA 4.0
ドキュメントおよびユーザーガイド Creative Commons BY-NC-SA 4.0
Raspberry Pi Pico SDK BSD 3-Clause
ESP-IDF フレームワーク Apache License 2.0
Bootstrap 4ウェブインターフェース MIT License

ファームウェアとソフトウェアは GPL v3 の下でオープンソースです。ハードウェア設計とドキュメントは CC BY-NC-SA 4.0 の下でライセンスされています(非商用利用のみ — 商用ライセンスはリクエストに応じて提供可能)。サードパーティライブラリは各自のライセンスを保持します。

picoZ80pico6502engineers@work の名称は Philip Smart の商標です。帰属表示、商標、および盗用防止の条項の詳細は NOTICE ファイルをご覧ください。

ライセンス全文: LICENSE | LICENSE-HARDWARE.txt | LICENSE-SOFTWARE.txt