Lidhja e RP2350 me procesorin klasik Z80: Eksperiment i ri
Një entuziast i elektronikës po eksperimenton me mikrocontrollerin Raspberry Pi Pico RP2350 dhe modulimin e tij PIO, duke synuar të krijojë një ndërfaqe me procesorin klasik Z80. Për këtë qëllim përdor një kartë PCB të projektuar vetë, bazuar në modulin Pimoroni PGA2350, dhe po kërkon mënyra për të lexuar adresën dhe busin e të dhënave të Z80-së në kohë reale. Nëse e arrin, kjo do të lejojë kontroll të drejtpërdrejtë të një CPU-je të vjetër nga një platformë moderne.
Z80‑ja, e prodhuar fillimisht si një pajisje NMOS me frekuencë 2.5 MHz, pati variante më të shpejta: Z80A (4 MHz) dhe Z80B (6 MHz). Versionet CMOS, si Z84C0008, Z84C0010 dhe Z84C0020, ofrojnë frekuenca nga 8 MHz deri në 20 MHz dhe janë prodhuar nga prodhues të ndryshëm, përfshirë Zilog, SGS, ST, NEC dhe Mostek. Edhe pse prodhimi u ndal në 2024, tregjet jashtë vendit pretendojnë se mund të furnizojnë Z84C0020‑ra të reja me 20 MHz për çmime të arsyeshme. Testuesi i CPU‑s Z80 mund të ndihmojë në identifikimin e shpejtësisë së një procesori të gjetur “në natyrë”, dhe autorja ka provuar vetë një grup të tillë pajisjesh.
Një nga pyetjet kryesore është se cila është frekuenca minimale e mundshme për Z80-në. Disa variante moderne janë plotësisht statike, duke lejuar ndalimin e plotë pa humbur gjendjen, ndërsa të tjera mund të kërkojnë një orë të vazhdueshme. Sipas dokumentacionit origjinal Z80A, pulsat e ulëta (LOW) nuk duhet të kalojnë 2 µs, ndërsa pulsat e larta (HIGH) mund të zgjasin deri në 200 µs, duke dhënë një periudhë totale prej rreth 203 µs – për një frekuencë prej pak më pak se 5 kHz. Kjo shpjegon rekomandimin për të mbajtur sinjalin e orës në nivelin HIGH kur nuk ciklohet, dhe thekson nevojën për sinjale si RESET që duhen mbajtur për tre cikle të orës për të garantuar një rinicializim të saktë.
Për të realizuar lidhjen, përdoret bërthama Arduino Pico (https://github.com/earlephilhower/arduino-pico), e cila lejon ngarkimin e kodit në RP2350, por autorja përpiqet të mbajë kodin në funksionet standarde të SDK-së së Pico‑C/C++. Inicializimi i GPIO-së në RP2040/RP2350 kërkon funksione që janë pak të ngadalshme për leximin e busit, prandaj përdoren API‑ra që lejojnë veprime simultane në disa pin-e. Ndërkohë, PIO‑ja ka një koncept të “base‑it” të ndryshëm për grupet e pin-eve, gjë që mund të krijojë konfuzion nëse nuk merret parasysh se baza 0 përfshin pin‑et 0‑31, ndërsa baza 1 përfshin pin‑et 16‑47. Këto detaje teknike janë thelbësore për të ndërtuar një ndërfaqe të qëndrueshme midis RP2350-së dhe Z80-së.
Në fund, autorja thekson se një qark i “single‑step” i bazuar në sinjalin /M1 dhe përdorimin e /WAIT për të ndalur CPU‑në deri në hapin tjetër, siç paraqitet në librin “Build Your Own Z80 Computer” (figura 4.5), mund të jetë një zgjidhje praktike për testimin dhe kontrollin e procesorit klasik nga platforma e re.
