Dnes mám v plánu zabít dvě mouchy jednou ranou. Za prvé konečně sem napíšu něco o zajímavém počinu Phila Rustona – jednodeskovém počítači V6Z80P+ založeném na reálném CPU Z80 doplněném o FPGA Xilinx Spartan II, a za druhé bych rád představil výtvor Alessandra Dorigattiho – emulátor Sinclair ZX Spectrum s časováním volitelným podle Spectrum 48k, Spectrum 128k nebo Pentagon 128k. Na konci článku pak najdete, jak Alessandrův emulátor rozchodit na starší verzi desky V6Z80P+ rev1.0.
V6Z80P+
V6Z80P+ je osmibitový jednodeskový počítač založený na 20 MHz CPU Z80 a FPGA Xilinx Spartan 2. K dispozici je 512 kB videoRAM, 128 kB paměti pro sprity a 512 kB RAM pro systém. Na desce jsou PS/2 konektory pro klávesnici, myš a sérový port, video výstup přepínatelný mezi VGA a video out (SCART). zvukový výstup a 2 klasické „Atari“ joystick porty. Programy lze nahrávat nebo ukládat na SD kartu. Z této karty se také načítá operační systém, zatímco konfigurace FPGA se načítá z paměti EPROM. Snadno tak můžete během startu pomocí F-kláves měnit konfiguraci.
Phil nazval svoji architekturu OSCA (Old Skool Computer Architecture). K dispozici je 256 barev při rozlišení 368×256 pixelů a takové vymoženosti jako jsou hardwarové sprity, skrolování a další. Už když si pustíte první dema nebo hry, získáte pocit, že jste spíše na Amize, než na architektuře Z80.
Na OSCA architektuře postavil Phil vlastní operační systém, který nazval FLOS (Freezer Like Operating System), a který umožňuje spoustu činností. Můžete tak nejen procházet adresářovou strukturu a prohlížet paměť nebo spouštět aplikace, ale k dispozici je i editor, správce souborů, assembler a další.
O V6Z80P+ bych se mohl poměrně dlouho rozepisovat, ale na síti najdete spoustu informací, tak nemá cenu se opakovat. Nejlepší představu získáte zkouknutím Philova YouTube kanálu.
Cycle-perfect ZX Spectrum emulator
Asi nejlákavější aplikací pro V6Z80P+ je ZX Spectrum emulátor, který vytvořil Alessandro Dorigatti. Alessandro si pohrál s časováním a tak je emulace téměř perfektní. Je podporováno časování ZX Spectrum 48k, Spectrum 128k a Pentagon 128k. Programy lze spouštět z externího kazetového magnetofonu, emulovaného kazeťáku z TAP souborů nebo využít modernější RESIDOS či ESXDOS.
Pro správné časování bylo nutno upravit verzi 1.0 desky a přidat 14 MHz oscilátor. Alessandrův emulátor tak běží pouze na desce 1.1 a vyšších. Že je časování opravdu perfektní se můžete přesvědčit na některých náročnějších demech.
Ovšem nejlepší představu Vám opět dají videa zveřejněná na Philově YouTube kanálu.
Co se mi líbí, na rozdíl např. od Speccy 2010, je, že V6Z80P+ používá reálný Zilog Z80, tj. CPU není emulované a konfigurace se snadno mění překonfigurováním FPGA. Alessandro na svém emulátoru dál intenzivně pracuje a tak se v budoucnu určitě ještě dočkáme dalších vylepšení.
Modifikace V6Z80P+ 1.0 na verzi 1.1
Jak jsem psal v úvodu, V6Z80P+ mám už déle než dva roky a tak se jednalo o verzi 1.0. Na ní Phil připravil emulátor ZX Spectra, ale není tak přesná jako Alessandrova a navíc nenabízí tak pohodlné možnosti pro načítání programů.
Poprosil jsem tedy Phila, zda není možné upravit verzi 1.0 na verzi 1.1. Phil byl tak laskav a připravil jednoduchý návod, jak na to. Dokonce ve dvou variantách.
Není to vůbec složité. Stačí vyřadit z činnosti jedno hradlo AND a použít ho jen jako budič pro výstup hodin z FPGA, hodiny 16 MHz zavést přímo a jen do FPGA a je potřeba doplnit oscilátor 14 MHz. Protože je tato frekvence trochu atypická, nechal jsem si v Spezial Electronics naprogramovat oscilátor na míru SG8002DCPCB 14.000MHz.
Z Philových variant jsem zvolil tu první, trochu složitější, byť mi tak nepřipadla, protože se více blíží skutečnému stavu v1.1. Místo spojky pinu 13 74HCT08 na +5V jsem použil 1k5 rezistor v SMT provedení 0603, který hezky padl mezi nožičky.
Dobrá volba nebylo pouzdro DIP-8, protože je moc velké, ale nakonec jsem uštípnul nožičky a oscilátor umístil „vzhůru nohama“ nad RAM.
Před úpravou bylo samozřejmě potřeba nahrát do EEPROM konfiguraci pro v1.1, aby bylo vůbec jak nabootovat. Naštěstí konfigurace v1.1 šlape i na v1.0, tak to nebyl žádný problém. Vše šlo hladce a já můžu teď prohánět cycle-perfect ZX Spectrum emulátor.
Pingback: Pendulum pro V6Z80P+ a vylepšený ZX Spectrum Emulator | Martinův 8-bitový blog