Category Archives: FPGA/CPLD

GAL/PAL “hackinimas”

Aš biški domiuosiu senais kompais, o ten dažnai naudojamos programuojamos logikos mikroschemos (PAL/TIBPAL/GAL/PALCE). Šios mikroschemos, ypač senos laidos, labai kaista ir net kartais nuo to kaitimo susidefektuoja. Todėl kartais jas reikia pakeisti “naujom” PALCE ar GAL mikroschemom. Visa bėda- nežinom mikroschemos turinio. Kartais “fuse” failai randami internete, kartais net būna “lygtys”. Kartais galima atstatyti turinį pagal prietaiso schemą (taip atstačiau ATARI 1200 čipą). Tačiau tai suveikia ne visada.

GAL ir PALCE čipai perrašomi. Todėl juos galima lupinėti iš senų plokščių ir panaudoti iš naujo.

Internete yra metodas, kad paprastas mikroschemas (be registrų) galima atburti naudojant paprastą “brute force” t.y. išbandant visus variantus ant kojyčių. PAL mikroschema prijungiama kaip 27C020 ir nuskaitoma kaip paprastas EPROM ir gautas “rom dump” sumaitinamas specialiai programai “pa.exe”.

Jei PAL/GAL mikroschema neturi viduje registrų ir (kas svarbu!) neturi viduje užciklintos logikas “ala” registras, tai viskas veikia. Deja, tos mikroschemos kurios man buvo svarbios buvo TIBPAL16L8 – gryna logika, bet “užciklintos” ir man nepavyko jas “nulaužti”…

Taip atrodo PAL16L8 į 27C020 adapteris.

Taigi, jei netyčia turit Amiga 2000 1Mb DRAM plokštės jungiamos į CPU slotą schemą ar PAL formules, pasidalinkit 🙂 Nes dabar atminties išpėtimas net pradeda smirdėti nuo karščio.

Žaidimas su FPGA dev board

Kažkas įsigijau pačio pirmo ciklono (EP1C20F400c7) FPGA plokštę (Nios edition). Kiek žaidžiau su Nios, bet ten visokios licenzijavimo problemos. O kita problema- mažai dokumentacijos ir dar softą kažkur pamečiau. Beja, internete informacijos apie šią pirmąją plokštę mažokai- labai ji sena.
Tačiau senas dev boardas turi ir pliusų- dalis jungčių toleruoja 5V logiką. Kaip tik pajunginėti prie mano kolekcijinių kompiuterių.

Daug metų ji kažkur gulėjo ir nesenai ją radau. Nutariau pažaisti, nes FPGA tai kaip virtualus konstruktorius- nereikia nieko lituoti, o visokias schemas galima bandyti. Ir nutariau patikrinti savadarbio Z80 emuliatoriaus darbą- man kažko neveikia Altair Basic. Tiksliau veikia, bet bėdos su matematika. O ant FPGA galima paleisti Z80 ir palyginti rezultatus.

Altair Basic
Nu ir va, Basic vistiek blogai veikia. Kame bėda. Pabandžiau perjungti Veriloge Z80 į Intelio režimą, tačiau BASIC vistiek blogai veikia.
Neaišku kur bėda. Ant tikro hardwaro paleidinėti nenoriu.

Va kaip atrodo ta plokštė:
Cyclone 1 NIOS edition dev board

Pats Altair projektas Quartus archyvo formoje.

O kadangi aš nemėgstu visos schemos “sujunginėti” teksto formoje, va kokis yra “top level” failas- grafinė schema:Altair 8800 Basic UART FPGA top schema.

HDMI (DVI) Testeris arba mano pirma ketursluoksnė

Buvo nuo senų laikų prikaupto Cikloninio šroto. Viena bėda- BGA korpusas. Tačiau laikai keičiasi, ketursluoksnės PCB jau pigios ir iš garažo buvo ištrauktos mikroshemos. Plokštė gavosi su viena rimta klaida, bet šiaip viskas veikia. Reikia pagirti Alteros mikroschemos tvirtumą. Ji buvo lituota fabrike, poto aš nulupau. Poto bandžiau reballinti, poto dar bandžiau, poto dar bandžiau. Poto prilitavau, bet ne iki galo. Poto dar kaitinau ir tapšnojau, kad rutuliukai susijungtu su PCB. Ir mikroschema išlaikė šiuos išbandymus.
Šis ciklonas turi PLL ir turi LVDS išėjimus. Kaip tik išbandyti HDMI (DVI) interfeisui:
HDMI test generator on single FPGA chip
Čia mano kiniško monitoriaus ekrano nuotrauka. Signalas eina tiesiai per HDMI iš FPGA. Matosi viena problema- eilutėje su vertikaliais brūkšneliais, pats kairinis turi būti irgi dryžuotas. Dabar neaišku, ar čia kaltas mano projektas arba visdėlto kiniškas upscaller. Mano “generatorius” išduoda VGA (640×480@60Hz, 25MHz pixel clock) vaizdą, o kiniškas žaislinis monitorius lygtai FullHD.
Continue reading →

ZX LCD

Besitvarkant daiktus (čia retas reiškinys), radau savo seną eksperimentą su FPGA/CPLD ir LCD (tik ekranas jau buvo kitas). Tas eksperimentas buvo nedabaigtas dėl žinių, noro ir kantrybės stokos. Dabar visko kiek daugiau, tai nudraskiau nereikalingas detales ir pridėjau naujų:
ZX Spectrum in CPLD LCD mode
Tai labai panaši sistema kaip ir paprastam ZX Spectrum CPLD/VGA. Tik pasikeitė keletas esminių koncepcijų:
Senesnėje versijoje atmintis buvo bendra- procesorius ir VGA buferis naudojosi ta pačia atminties mikroschemą, todėl CPLD stengėsi atlikti atminties arbitro (MMU) darbą ir laiko rėžiais (time slot) prileisdavo tai CPU tai VGA prie tos pačios atminties. Ši schema kiek kitokia- pirmiausia, naudojama atskira atmintis procesoriui- Toshiba TC551001BPL-85. Tai žymiai lėtesnė atmintis, tačiau ji skirta tik procesoriui. VGA ar LCD kontroleris visiškai nesikreipia į ją. LCD/VGA kontroleris tik sėdi ant duomenų ir adreso linijų ir stebi jam reikiamas kombinacijas- jei pastebimas rašymas į video atminties plotą, duomenys dubliuojami ir LCD/VGA atmintyje. Taip pat stebim Z80 IN/OUT veiksmus, nes mums reikia vaizduoti pajungta klavietūrą, magnetofoną ir garsiakalbį.

ZX Spectrum in CPLD LCD mode
Tačiau tai vienspalvis LCD monitorius, 320 x 240 taškelių. Duomenys pumpuojami po 4 bitus iš karto, todėl sistemos dažnis netgi kiek lėtesnis. Tačiau labai lėtinti negalima, nes kažkur prie 40Hz kadrų dažnio labai matosi vaizdo mirgėjimas. Dabar LCD veikia virš 60Hz dažniu. Deja, jis labai inertiškas- “border” efektai susilieja…

ZX Spectrum in CPLD LCD mode
O judantys objektai beveik nesimato.

Aišku šiame variante visiškai ignoruojami spalvų atributai (“flash” veikia), todėl žaidimų vaizdeliai keistoki. O borderį padariau dryžuota, kad kiek nors skirtusi “spalvos”.

Šis antras maketas buvo surinktas ne dėl ZX spectrum. Aš galvoju čia sudėti kokį nors kitą retro kompiuterį, bet ZX yra vienas iš paprasčiausių, tai testavimui suėjo.
Schemotechnika visiškai paprasta- adresų šyna po stiprintuvo 2x SN74HCT541N (nelabai jis reikalingas) eina į CPLD, ROM, RAM. Tas pats, tik be buferio, padaryta su duomenų šyna. Viskas “sumontuota” CPLD mikroschemoje. Ten aišku tebeliko keletas klaidų, tačiau sistema veikia.

Ir aišku visi failai:
Intel-Altera Quartus CPLD source code for ZX Spectrum LCD version.

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

LCD ekranas iš senoviško dauginimo aparato: EDMMPU3BDF, jo pinout:


1. ON/OFF
2. n.c.
3. VS
4. HS
5. pix CLK
6. Vcc, +5V
7. GND
8. Vee, -25V
9. D3, pixel data
10. D2
11. D1
12. D0
13. Vee, same as 8.
14. contrast.

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.
Continue reading →

Commodore 6526/8520 kopija CPLD

Yra tokia deficitinė senoviška mikroschema- CIA (complex interface adapter) skirta 680x ir 68000 čipsetams – 6526 / 6526A ir 8520. Naudojo ir gamino šias mikroschemas Commodore (jos čipų gamykla MOS). Naudojami šie čipai Commodore 64, 128 ir Amiga serijos kompiuteriuose. Tikriausiai buvo naudojama ir plačiau, bet man nepapuolė plokštės, kurios turėtu šiuos čipus. Šie čipukai tai interfeisiniai, jie visaip programuojami ir paprastai bendrauja su periferija. O kadangi kojyčių apsauga pas senas mikroschemas labai silpna, tai šios mikroschemos miršta vienos iš pirmųjų. Kiek supaprastinta, 8520 versija užlenkė mano Amiga 500 netgi keliems metams.
Dabartiniais laikas šios mikroschemos nebegaminamos, tačiau jos tebemiršta. Ir jų kainą pradėjo kilti- dabar viena mikroschema kainuoja kažkur apie 25€ (be atsiuntimo ir mokesčių). O kompiuteriuose dažnai stovi po dvi. Man netgi susidarė nuomonė, kad apsimoka pirkti kai kuriuos senus kompus, lupti lauk čipus ir parduoti- kaip auto šrote. Palaidos detalės kainuoja daugau nei visas komplektas. O ir nusipirkti galima neveikiančia.

Todėl kilo iškreiptas projektas: Commodore 8526/8520 kopija CPLD. Jei viskas pavyks, tai galima mikroschemą emuliuoti ir greitesniu MCU. Bet kolkas buvo pasirinkta CPLD ir Altera Quartus 9. Kodėl? Todėl, kad aš turiu keleta CPLD suderinamu su 5V TTL lygiais ir softas nemokamas. Softas gana sudėtingas ir turi visokiausiu diagnostinių įrankių, o ir CPLD turi perteklinį kiekį kojelių, todėl galima išsivesti visokius vidinius registrus laukan ir tikrintis su osciloskopu.

Mano poros laisvų dienų darbo frontas atrodo taip:
Commodore CIA 6526/8520 CPLD-FPGA verilog copy
(Nuotrauka pasididina)
.
Continue reading →

Manija ir motyvacija

Seniau rašiau, kad iš garažo atsinešiau plazminį ekraniuką. Kiek laiko ieškojau duomenų apie šita daiGtą, bet nelabai ir radau. Poto užklydau firmelę capetronics kurie lygtai prekiauja tokiais ekraniukais, juos remontuoja ir panašiai. Ir parašiau aš jiems laiškelį- tipo turiu porą tokių ekraniukų, norėčiau išbandyti kaip jie veikia ir kad būčiau labai dėkingas už bet kokią informaciją apie šią Sharp produkciją. Kaip nekeista, gavau atsakyma kuris nuskambėjo kaip keistokai: tipo jie turi visus datasheetus, bet tikrai neduos man tos informacijos. Nu jei ne duos, tai galėjo ir nerašyti to laiško. Aš jiems tada atsakiau, kad jei negali, tai nereikia, gal kreipsiuos į patį Sharp, o gal pats atbursiu kur kas ir kaip eina. Gavau atsakymą kuris sukėlė mano honorą: tipo bandyk laimę durnelį… O to, man kvailam ir užteko. Teko jamti už ragų ar kitos minkštos vietos ir padirbėti.
Todėl parašysiu, bent jau dalinai, kaip dariau šitą “reverse engineeringą”.
Continue reading →

FPGA:0008 – UART

Nu va. Schema didėja ir sudetingėja. Taip pat įvedami įvairūs pataisymai į jau esamus modulius. Todėl dabar stengsiuos prie straipsnio pridėti projekto archyvą. Tai bus su RARu suarchyvuotas Quartuso archyvas (qar) failas. Teoriškai, užteks tik importuoti archyvuotą projektą į Quartusą ir viskas veiks.

Komentaruose skaitytojas rašė apie RS232 modulį. Tiksliau į serial protokolo modulį. Aš nesu toks didelis gudrutis, todėl modulį paėmiau iš FPGA4FUN puslapio. Tačiau jo panaudojimą vilkinau tol, kol bus galima vizualiai panaudoti mūsų “pamokėlėse”. Taigi mintis tokia- sukurti kažkokią tai primityvią serial terminalo video plokštę. Vienam gale RS232 (konvertuotas iki LVTTL lygio), o kitame- monitorius.
Kaip bazę naudojam tą patį video generatorių ir jau spėjusius įgrįsti melynai žalius kvadratėlius.
Continue reading →

FPGA:0007 -tekstinė atmintis

Iš eilės einantys skaičiai nelabai įdomūs. Todėl prie mūsų “video kontrolerio” reikia pritaikyti atmintį. Kad į tą atmintį rašyti informaciją, o displėjus rodytu kas ir kaip čia gaunasi.
Maždaug taip:
grafika yiff
Čia dar galima pastebėti, kad aš padidinau šrifta du kartus tiek į plotį, tiek į aukštį. Paprasčiausiai labai jau mažos raidelės buvo ant ekrano, o ir video atmintis labai didelė gautusi. Continue reading →