Z80 CPU (AKI-80) と M5Stack Core2 (ESP32) を接続し、ESP32でROM等をエミュレートする際の主要な信号接続の概念図です。
graph TD
subgraph "M5Stack Core2 (ESP32)"
direction LR
ESP32_CLK["CLK_OUT (GPIO)"]
ESP32_RESET["N_RESET_OUT (GPIO)"]
ESP32_ADDR["Address Bus In (A0-A15)"]
ESP32_DATA["Data Bus IO (D0-D7)"]
ESP32_MREQ["N_MREQ_IN"]
ESP32_IORQ["N_IORQ_IN"]
ESP32_RD["N_RD_IN"]
ESP32_WR["N_WR_IN"]
ESP32_WAIT["N_WAIT_OUT"]
ESP32_INT["N_INT_OUT (Optional)"]
ESP32_NMI["N_NMI_OUT (Optional)"]
ESP32_BUSRQ["N_BUSRQ_OUT (Optional)"]
ESP32_BUSAK["N_BUSAK_IN (Optional)"]
end
subgraph "AKI-80 (Z80 CPU)"
direction LR
Z80_CLK["CLK"]
Z80_NRESET["nRESET"]
Z80_ADDR["Address Bus Out (A0-A15)"]
Z80_DATA["Data Bus IO (D0-D7)"]
Z80_MREQ["nMREQ"]
Z80_IORQ["nIORQ"]
Z80_RD["nRD"]
Z80_WR["nWR"]
Z80_WAIT["nWAIT"]
Z80_INT["nINT (Optional)"]
Z80_NMI["nNMI (Optional)"]
Z80_BUSRQ["nBUSRQ (Optional)"]
Z80_BUSAK["nBUSAK (Optional)"]
end
ESP32_CLK --> Z80_CLK
ESP32_RESET --> Z80_NRESET
Z80_ADDR --> ESP32_ADDR
ESP32_DATA <--> Z80_DATA
Z80_MREQ --> ESP32_MREQ
Z80_IORQ --> ESP32_IORQ
Z80_RD --> ESP32_RD
Z80_WR --> ESP32_WR
ESP32_WAIT --> Z80_WAIT
ESP32_INT --> Z80_INT
ESP32_NMI --> Z80_NMI
ESP32_BUSRQ --> Z80_BUSRQ
Z80_BUSAK --> ESP32_BUSAK
注意:
- この図は概念的なものであり、ESP32の具体的なGPIOピン番号は省略しています。実際のピン割り当ては
esp32_z80_emulator.cpp
の定義を参照してください。 - 重要: この図ではロジックレベルシフタを省略して描画していますが、Z80 (5Vロジック) と ESP32 (3.3Vロジック) を実際に接続する際は、信号の電圧レベルを変換するためにロジックレベルシフタが必須です。適切なレベルシフタを使用しない場合、デバイスが損傷する可能性があります。
- "Optional" と記載のある信号線 (INT, NMI, BUSRQ, BUSAK) は、本プロジェクトの基本的な構成 (ROMエミュレーションと単純なI/O) では使用しない可能性がありますが、拡張性を考慮して記載しています。