ZX Spectrum sukištas į CPLD

Šiuo metu kiek tvarkau senų kompų kolekciją ir nutariau suremontuoti savo Santaką (baltik versija). Pirmiausia nurinkau visus laidus, pasilikau pliką PCB, atstačiau ROM čipus ir pajungiau. Aišku niekas neveikia. Todėl pradėjau nagrinėtis- pirmas stepas, nėra RESET signalo. Pašalinom rusišką mikroschemą К155ЛН1 nauja SN74LS04. Pradėjo veikti procesorius ir netgi bandė formuotis vaizdas. Bet jis dingo. Pastebėjau, kad dar kaista К555ИЕ10- kol šalta, signalai praeina. Poto pakaista ir signalai dingsta. Čia jau rankos kiek nusuleido- supratau, kad tarybinė kokybė man nepadės. PCB padaryta ant snarglių ir beveik negalima perlituoti. Net blogiau už kiniškas popierines PCB iš 1980-tųjų metų.

ZX Spectrum CPLD Altera
Užtenka tik ką nors pakaitinti ir takeliai atsiklijuoja.

Pasinagrinėjau prie tos pačios progos schemą ir staiga kilo mintis: Schema tai gana paprasta ir tikrai ją galima aprašyti Verilog ir sukišti į nedidelę CPLD (ne FPGA), nes nesinorėjo organizuoti Z80, RAM ir ROM. O šios mikroschemos griežtai 5V.
O kitas pasirinkimas- Altera MAX EPM3256AQC208 šrotinės plokštelės iš utilizuotu rusiškų žaidimo automatų (Игрософт, Igrosoft IGP1). Čia naudojama ne visa didelė plokštė, o tik CPLD mikroschema su SRAM čipu. Deja tik 32K. Užtat 12ns.

ZX Spectrum CPLD Altera
Gavosi toks monstras. Dvi CPLD plokštelės tik todėl, kad norėjosi 64K, bet paaiškėjo, kad demonstracijai užtenka ir vienos plokštės- 16K ZX spectrum irgi veikia.

Gaminti originalų ZX visiškai neįdomu (jaučiu tikrai yra kur nors jau tai padaryta). Todėl nubrėžiau šiam žaidimui tokius kriterijus: mano speccy turi veikti su LCD monitorium ir VGA režime; negalima žiūrėti į svetimus projektus; negalima žiūrėti į klonų schemas; naudotis galima tik originalia schema ir programuotojų instrukcijas.
T.y. konstruoti kompiuterį iš programuotojo pusės.

Gavosi va tokia neinformatyvi schema:
ZX Spectrum CPLD Altera
(schema pdf formate)

Tai buvo įdomiai praleistas laikas ir šio žaidimo rezultatas:
ZX Spectrum CPLD Altera
Kažkas tokio kur bent jau veikia Basic’as…

ZX Spectrum CPLD Altera
Ir net yra įrašymo į juostelę garsas ir efektai. Deja, nuskaitymas nepadarytas (ten tik komparatoriaus ir garso signalo reikia).

Tačiau abejoju, ar nusikaitytu originalios santakos programų kasetės. Todėl, kad mano konstrukcija turi keleta esminių skirtumų nuo originalo. Mano kompiuterio taktinis dažnis 3.57134MHz vietoje 3.5MHz nes pagrindinis taktinis dažnis 50MHz ir visi dažniai gaminami iš čia. Panaši bėda su INT kur turi būti 50Hz. O pagrindinė bėda- pasirodo, kad Z80 CPU originaliam kompiuteryje stipriai stabdomas per WAIT koją. Mano “kompiuteris” to nežinojo ir jis visada veikia ant pilno greičio. Iš esmės, mano sistema asinchroninė- vaizdo generavimas visiškai nesusijęs su procesoriaus taktais. SRAM atmintis ant tiek greita, kad per kelis VGA clock (25MHz) taktus spėja parodyti vaizdą, nuskaityti duomenis iš RAM į procesorių ir dar ir įrašyti… Tačiau tai jau “verilog programos” momentai. Viską galima pasižiūrėti source code.

Liko vienas nepataisytas bugas. Kaip matosi vienoje nuotraukoje, pirmo ir antro stulpelio pixeliai pasislinko žemyn per vieną pixelį. Gal pataisysiu, bet procesas kiek atsibodo.. 🙂

Source code for Altera Quartus ZX Spectrum Naujas ZX Spectrum source code
Naujausias kodas komentaruose.

Jei jums nepasileido, tai atminkite, kad kai kurie Z80 CPU reikalauja, kad jų clock būtų 5Vpp, o ne TTL lygio. CPLD duoda 3V lygius.

13 replies on “ZX Spectrum sukištas į CPLD”

  1. Sveikas Levai, kiek pamenu, tai nuskaitymo procedura prisiderina prie plaukiojancio bitrate +-kazkiek% (gan placiose ribose), nes buitinis kasetinis magas gi nenuspejamas daiktas.

  2. biški pakeičiau VGA režimą, į klasikinį (640×480@60Hz, 25MHz pixel clock). Teko padvigubinti eilutes, bet dabar atrodo gražiau. Pirmo stulpelio bugas pataisytas- kaip visada, jis buvo visiškai kitoje vietoje nei ieškojau.
    ZX Spectrum VGA mode

  3. Krovimas iš “magnetofono” veikia. Naudoju programą androidui “playzx”… ech, kad taip gerai būtų krovės vaikystėje. Gal nervų daugiau turėčiau.

    zx game screen

    Tačiau mano kompe mažai RAM, reikia “prisukti” dar 32K. O kita bėda- kol kas dar pilnai nepatikrinau, bet rodos, kai kurie žaidimai turbo greičiais veikia. Atsiliepia tas, kad mano Z80 visiškai nestabdomas.

  4. Kažkur šiuose puslapiuose įdėjau kitą versiją, su viena CPLD ir kitu SRAM čipu. Pilnai asinchroninis variantas, Z80 turbinasi iki kažkur 8MHz ir kompas vistiek veikia. 🙂

    turbo zx spectrum cpld verilog

    Veikia ant didelio greičio todėl, kad viskas padaryta pagal dokumentaciją- adresų buferiai, duomenų registravimas, teisingas clock. Magnetofono interfeisas ir PS/2 portas klaviatūrai.

  5. Pakomentuosiu ne prie kondikų, kur rašiau. Bus labiau į temą čia.
    Altera MAX EPM3256AQC208 jau žiūriu ir nebėra, o ir brangus reikalas gaunas, bet užskaitau. Visada smagu tokie dalykai 🙂

    Aš iš draugelio gavau senų laikų baltiko PCB geros būklės.
    Neįtikėtina, bet Omeditoj gavau visą logiką. Kažkokių RU5 dar pas tą patį draugelį užsilikę senoj saldainių “Obelėlė” dėžutėj 🙂

    Litavimas ėjosi maloniai, žiūriu varžas kuo dailiau suguldyti, kad jau būtų estetinis vaizdas. Kelios valandos gryno malonumo ir jau plokštė dailiausia kaip senais laikais ant stalo, tik lizdai ne mėlyni.

    Ir čia pirmieji išsikalinėjimai. Nelaimingų RE3 paėmiau kiek buvo sandėliuose gal 13 :), pasidariau programatorių kaip kūjį, neduok dieve – rankom spaudinėjamą, bito formavimąs ant 8 kontaktų switcho.. zdz labai autentiškagavosi. Ir visos bestijos programuojant pakeliui išmirė.
    Viena suklupo anksčiau, kita beveik iki galo ir pabaigoj nudvėsė … niekaip “nepramuša”.
    Baigėsi visos ir nusviro rankos. Ką ir norėti po tiek metų. Jau senais laikais nebuvo jos mylimos.

    Ką daryti. Gaila mesti viską. Suradau tokį flashą SST39SF040-70-4C-NHE-T , pavarčiau datasheetus palyginau, man rodos, su greičiais viskas gerai. Pasidariau negražią adaptaciją RE3 DIP`ui
    Pasirašiau programėlę atmegai 2560, geras kūšys laidų – užprogramavau, įstačiau žiurkių lizdą, sudarkė visą mano taip kruoščiai darytą estetiką 🙂
    Ir tik tada supratau, ką pražiūrėjau. Nei telikas nei jokie mano monikai nebepalaiko 15Khz 🙁 Neturiu tokios senienos. O ir nebesinori stiklinio seno griozdo statyt.

    Patingėjau iš kinų siūstis konverterį. Taip ir liko projektas laukti geresnių laikų.

    Prieš naujus metus radau ruselis vienas parašė konverterį spektrumams ZX>rp2040 (PICO)> VGA
    Super. Pigu, tik pačiam firmwarą pasikompiliuoti (kiekvienam spektrumui reikia paderinti parametrus)

    Galvojau imsiuosi vėl reikalo. Bet tada jau aišku smalsumas pažiūrėt ant RP2040 mažu kas emuliatorių parašė. Ir tikrai. Jau parašė.
    Juk pranašavo kai rp2040 su tuo PIO pasirodė, kad užderės emuliatorių 😀
    https://github.com/fruit-bat/pico-zxspectrum

    Tada vienam telegram kanale dar geresnį variantą radau. Pasidalino žmonės išeities failais, pasidariau, susikompiliavau pagal save firmwarą (kad viskas atrodytų, įjungei ir 1982 Sinclair Spectrum Ltd… ) ir gavosi labai labai artimas tikrai geležiai reikalas. Su įrašymais iš juostelės pageidaujant, bet man užteko pilnam kaifui ir užkrovimo iš SD, emuliuojant garsą į dinamikus. Viską į korpusą su dinamikais surinkau. Jei dar klaviatūrą herkoninę netingėčiau būtų visai super. Bet bus gerai ir išorinė PS2

    Daugybė yra visokių ZX spetrum variantų ant FPGA, CPLD , ESP32 – ko tik nori. Bet visi arba brangūs arba gadina autentiką kokios nors video inicializacijos. Tarkim, yra RASPBERRY PI W baremetal emuliatorius https://zxmini.speccy.org/en/index.html
    Beveik gerai bet .. vis tiek, kaip liaudiškai sako, lyg kažkas ne vietoj tarp kojų 😀
    ESP32 tiesa, visai smagiai žiūrėjosi https://github.com/rpsubc8/ESP32TinyZXSpectrum/blob/main/readmeEnglish.md

    Bet ant PICO, nu labai fainas gavosi daiktas. Jau labai arti tikro ypač kai paslėptas korpuse 🙂 Z80 ASM atrodo paprastutis po visokių gyvenime vartytų datasheet`u 🙂 Smagu parašinėti niekučius ASM, pavarinėti MsPacman ekrane.

Leave a Reply

Your email address will not be published. Required fields are marked *