picoZ80: Z80 컴퓨터를 현대적으로 복구하기
개요
picoZ80는 레트로 컴퓨터의 Z80 CPU를 더 빠른 현대식 프로세서로 교체하는 프로젝트입니다. 물리적인 Z80 칩 대신 강력한 마이크로컨트롤러를 사용하면서도, WiFi, Bluetooth, SD카드 지원, 가상 장치 등 수많은 기능을 추가합니다.
picoZ80는 Z80 DIP-40 소켓에 직접 꽂을 수 있도록 설계된 커스텀 PCB입니다. 칩 자체는 RP2350B 마이크로컨트롤러를 탑재하고 있는데요, 이건 듀얼코어 150MHz Cortex-M33 칩으로 최대 300MHz까지 동작합니다. 보드에 내장된 프로그래머블 I/O(PIO) 상태 머신들이 Z80의 주소, 데이터, 제어 신호를 실시간으로 완전히 제어합니다.
단순한 에뮬레이터가 아닙니다
picoZ80는 그냥 Z80를 소프트웨어로 흉내 내는 수준이 아닙니다. 모든 버스 트랜잭션을 RP2350의 PIO 엔진이 실시간으로 처리하기 때문에, 호스트 시스템은 진짜 Z80에서와 정확히 같은 버스 타이밍을 경험합니다. 동시에 RP2350의 두 번째 코어와 충분한 온칩 SRAM, 8MB 외부 PSRAM, 16MB 플래시를 활용하면 기본적인 Z80 인터페이스 위에 거의 무한에 가까운 기능을 추가할 수 있습니다. 가속된 실행, 가상 메모리, ROM 뱅킹, 가상 디스크 드라이브, 전체 머신 에뮬레이션 등이 모두 가능합니다.
연결성과 관리
보드에는 ESP32 보조 프로세서가 함께 실려 있어서 WiFi, Bluetooth 연결을 담당하고, SD카드 스토리지와 웹 기반 관리 인터페이스를 제공합니다. 가장 멋진 점은 설정이 SD카드의 단일 JSON 파일(config.json)로 관리된다는 것입니다. 재컴파일할 필요 없이 메모리 맵, ROM 이미지, 드라이버 선택을 바꿀 수 있습니다.
실제 동작
picoZ80는 Sharp MZ 시리즈 컴퓨터들에서 실제로 동작하고 있습니다. 다양한 MZ 머신용 "페르소나(persona)"들이 개발 중인데요, 뱅크 RAM/ROM, 플로피 디스크 에뮬레이션, QuickDisk 에뮬레이션, ROM Filing System, TranZPUter Filing System 같은 기능들을 동시에 지원합니다.
설정이 완전히 JSON 기반이라서, 새로운 Z80 호스트 지원을 추가하는 것도 간단합니다. 설정 파일을 수정하고, 필요하면 C 드라이버를 조금 추가하기만 하면 됩니다.
핵심 특징
Z80 완벽 대체 - Z80 DIP-40 소켓에 그대로 끼울 수 있습니다. 호스트는 정상적인 Z80 버스 타이밍을 계속 경험합니다.
사이클 정확도 - 세 개의 RP2350 PIO 상태 머신이 주소, 데이터, 제어 신호를 동시에 처리하며, 모두 Z80 버스 속도로 작동합니다.
대용량 메모리 - 8MB PSRAM이 64 뱅크 × 64KB로 구성되어, CPU 컨텍스트당 총 4MB의 뱅크 주소 공간을 제공합니다.
ROM/RAM 뱅킹 - 메모리 블록을 512바이트 단위로 설정할 수 있고, ROM, RAM, 물리 호스트 메모리, 또는 가상 함수 핸들러로 매핑할 수 있습니다.
가상 장치 프레임워크 - 메모리나 I/O 포트의 어떤 512바이트 블록이든 C 함수로 백업할 수 있어서, 완전히 가상화된 주변장치를 구현할 수 있습니다.
머신 페르소나 - Z80 펌웨어를 JSON 설정으로 다양한 Z80 호스트에 맞게 구성할 수 있습니다. MZ-700 페르소나는 이미 풍부한 드라이버를 갖추고 있으며, 앞으로 MZ-80A, MZ-80B, MZ-800 등 다른 Sharp 머신들도 지원할 예정입니다. 나아가 Amstrad PCW 같은 다른 컴퓨터들도 지원 범위에 포함될 계획입니다.
플로피 및 QuickDisk 에뮬레이션 - WD1773 호환 플로피 디스크 컨트롤러와 Sharp QuickDisk 드라이브 에뮬레이션을 지원합니다. SD카드의 DSK/RAW 이미지를 사용합니다.
WiFi 및 웹 관리 - 보드의 ESP32가 7페이지 규모의 Bootstrap 웹 인터페이스를 제공합니다. 설정, 파일 관리, OTA 펌웨어 업데이트, 페르소나 선택이 모두 웹으로 가능합니다.
듀얼 펌웨어 파티션 - 독립적인 두 개의 5MB 펌웨어 슬롯으로 안전한 OTA 업그레이드를 지원합니다. 활성 파티션은 웹 인터페이스나 부트로더에서 선택할 수 있습니다.
USB 펌웨어 업데이트 - 부트로더가 USB 브릿지를 노출하므로, 하드웨어 디버거 없이 펌웨어를 플래시할 수 있습니다.
하드웨어
picoZ80 PCB(리비전 2.5)는 Z80 DIP-40 패키지의 물리적 크기에 맞게 설계된 컴팩트한 멀티레이어 기판입니다. 레트로 컴퓨터 케이스 내부의 일반적인 공간도 고려했습니다. 모든 로직은 3.3V에서 작동하며, 5V 호스트 버스와의 레벨 시프팅과 구동 전류는 회로도에서 처리됩니다.
보드는 단일 PCB에 다섯 개의 서브시스템을 통합하고 있습니다: RP2350B 프로세서, Z80 버스 인터페이스, ESP32 보조 프로세서, 전원 공급부, USB 허브.
핵심 컴포넌트
RP2350B (Cortex-M33 듀얼코어) - 최대 300MHz에서 동작하는 주 프로세서입니다. Core 1에서 Z80 에뮬레이션 핫루프를 실행하고, Core 0는 파일 I/O, USB, ESP32 릴레이를 처리합니다. 512KB 온칩 SRAM을 갖추고 있습니다. RP2350B 변종(RP2350A가 아닌)은 전체 Z80 버스에 필요한 48개의 GPIO 핀을 제공합니다.
16MB SPI Flash - 부트로더, 두 개의 애플리케이션 펌웨어 슬롯, 두 개의 설정 슬롯, 일반 설정 파티션을 저장합니다. 전체 주소 범위는 0x10000000–0x11000000입니다.
8MB PSRAM (SPI) - 에뮬레이트된 CPU를 위해 64 뱅크 × 64KB의 뱅크 주소 공간을 제공하는 외부 의사정적 RAM입니다.