FPGA:0000 – Intro

Labai mažai rašiau FPGA/CPLD temoje, o ir tautinėje “spaudoje” ši tema mažai apšviesta. Todėl (nes išsibaigė fantazija) nutariau parašyti keletą straipsnių apie FPGA čipus ir jų panaudojima. Aišku, stipriai remsiuosi FPGA4FUN puslapiais. Gal net plagijuosiu. Ir dar, nesiruošiu apibrėžti visko ir visada. Todėl mano pasakojimui bus apie Alteros produktus ir verilog kalbą. Kitų neįvaldžiau.

Kadangi žaisti su FPGA “sausai” yra didelė nesamonė, o pramoniniai dev-boardai karvę kainuoja, tai pradedu pasakojima apie pigų dev boardą.

FPGA mini board
(Altera Cyclone II, EP2C8T144C8N)

Tokių dev boardų su Altera Cyclone II (EP2C5 arba EP2C8) pilna eBay. Yra plokščių, kur viskas sulituota (rodos apie 20…30$ kainuoja), o yra tik PCB (~3$ su atsiuntimu).
Jei rankos nekreivos, turite kur nors laisvą FGPA ciklono čipą, tai galima pačiam prisilituoti. Aš taip ir padariau (čipas iš seno LCD teliko). Taip pat prilitavau konfiguracinį flešiuką (nebūtina) ir kitas aprišimo detales (3.3V ir 1.25V stabilizatorius, 10K rezistoriai, keletas mažų kondikų, keli LEDai, 50MHz osciliatorių). Sulitavau JTAG ir serial prom programavimo jungtis.
Dar reikia įsigyti programavimo kabelį (pats primityviausias prie LPT porto netgi lengvai pasidaromas). Rekomenduočiau patį paprasčiausia USB Byte blasterį.

Programinius paketus (Quartus) nusikrauname iš alteros puslapių- softas nemokamas. Beja, jei naudosit kokį nors senesnį čipą, gal būt reikės nusikrauti senesnę programos versiją. Kvailiai kapitalistai išėmė senesnių čipų palaikymą naujam freeware softe. Arba jei žaisit tik vieną mėnesį, galima nusikrauti komercinę versiją- ji palaiko kogero visus čipus. Štai jei vietoje antro ciklono rasit/naudosit pirmą, tai reikės rodos 9 quartuso versijos.
Tačiau jei naudosit šį cikloną, tiks pati naujausia versija.

Galima naudoti ir MAX, ARIA ir t.t. čipus ar dar kitokius, tačiau maksai neturi PLLų, tai bus sunku kai kuriuos projektukus persikelti į hardwarą.

Dar vienas svarbus momentas:
FPGA mini board
Jei sugalvosit pakartoti eksperimentus, rekomenduoju prisitvirtinti plastikinį padą prie PCB plokštės kad apsaugoti nuo trumpų jungimų. Kitas momentas- susiraskite maitinimo šaltinį kuris laisvoje eigoje neduoda daug įtampos. LM1117-3.3 stabilizatorius leidžia max 20V įėjimo įtampą. Jei bus didesnė, gali sudegti, ir nusinešti FPGA čipą į nebūtį.

Žaidimo eigoje prie kištukų reikės prisijungti visokius papildomus elementus, tačiau jie visiškai paprasti ir surenkami “ant snarglių”.

Tikiuosi gauti bent jau kokius nors atsiliepimus apie straipsnius, kritiką ir įdėjas. Taip pat tikiuosi, kad kitos temos nebus pamirštos ir straipsniai atsiras, kai tik ką nors sugalvosiu.

Beja, straipsniai turės stiprią mano asmens įtaką- aš rašysiu kaip man patinka daryti, o ne taip kaip daro likęs pasaulis ar kokie profesionalai. 🙂

11 replies on “FPGA:0000 – Intro”

  1. Jėga, laukiu naujų skaitinių! Vis nesiryžau fpga pasijungt. Įdomiausia būtų sužinot, kodėl apskritai man jos reikia ir kur jau paprastų priemonių nepakanka ir kodėl:).

  2. Manau, kad mėgėjiškas FPGA naudojimas yra “šaudymas į muses iš patrankos” 🙂
    Dabar yra kur kas efektyvesnių būdų “įdarbinti” pinigus ir elektronikos žinias. Pvz. Olinuxino:
    https://www.olimex.com/Products/OLinuXino/A13/
    Asmeniškai man labai patiko:
    https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-MICRO/
    Toks minimalistinis daiktas, leidžiantis pasileisti Apache ir PHP, su visais iš to išplaukiančiais privalumais.
    Mano pasidalijimas apie šios plokštės naudojimą:
    https://www.olimex.com/forum/index.php?topic=956.msg4439#msg4439

  3. O mano nuomone būtent šis olinuchuino yra šaudymas iš raketinio komplekso į žvirblius. Nes useris pavirsta linux operatorium kuris sugeba OS parašyti kelias komandines eilutes. Čia beveik jokių elektronikos žinių nebereikia. Lygiai taip pat galima pajungti didelį kompiuterį šiam reikalui… arba dar pigesnį USB sticką iš kinų.

    Kam man PHP ir Apache jei man reikia pamirksėti LEDais? 🙂
    Turiu aš panašų dev boardą.. ir nesinaudoju. Nes griozdas siaubingas, SVETIMI bugai ar updeitai griauna sistemą ir esu pririštas prie svetimos hardwarės.

  4. Na jau Levai, pasiskubinai “į šuns dienas išdėti” Olinuxino. Labai jau siaurai į šį reikalą pasižiūrėjai. Jei tikslas tik LED pamirksėti (čia turiu omenyje ne RGB LED matricos 1000×1000 valdymą), tai tą ir su 555 arba kokiu aštuonių kojų mikrovaldikliu galima padaryti, nereikia nei Olinuxino, nei FPGA. O elektronikos žinių tobulinimui Olinuxino suteikia milžiniškas galimybes – viskas čia open source – yra visa geležies dokumentacija, gali “kepti” savo plokštes, gali visokius papildomus modulius jungti, jei tik noras yra. Tai pritaikymo sritys apsiriboja tik vartotojo fantazija – ir kopterio, ir namų šildymo sistemos valdymas ir kas tik į galvą šaus. O Apache ir PHP suteikia beveik neribotas vartotojo sąsajos galimybes. Juk visą procesą gali matyti ir valdyti iš kompo ar išmanaus telefono, būnant kad ir už tūkstančio km nuo valdomo objekto.
    Bugai yra visur, tai neišvengiama. Tiesiog sistemas reikia projektuoti taip, kad šalia pagrindinio valdymo algoritmo, būtų ir diagnostikos dalis, priverčianti sistemą iš neprognozuojamų būsenų grįžti į numatytas. Ir tada didelių bėdų neiškils.

  5. Šaunu, labai gražūs ir išsamūs pavyzdžiai! 🙂 Bet blem, pas mane gi ACEX plikas. Gal kadanors.. 😀

  6. gintarui: nu gal ir yra. Bet tai greičiau ne elektroniko, o programuotojo hobis. Tiesa pasakius man visiškai nereikia kad mano namų pečius valdytusi per 1000km per internetą, nes nesu tikras, kad softas saugus ir jokie hakeriai ar softo gedimai išjungs pečių per šalčius 🙂 Jei net toks Samsungas telefonus daro su bugais, tai idomu, kiek bugu bus šiuose dėžutėse.

    Ar yra kur nors išbaigtas projektas ant tu plokštelių?

    Tiesa tai off topikas. Šių straipsniu prasmė, kad žmonės suprastu kas yra tas CPLD/FPGA ir kuom juos valgo.

    kionig’ui: O kuris ACEXas guli plikas?

  7. Kaip čia pasakius, jis gal ir ne visai plikas, bet turint atitinkamai tiesias rankas, galima nuiimti nuo plokštės. O, jis yra toks: EP1k30tc144-3.

    Į Atera’s nelabai teko gilintis, kadangi turiu Xilinx’o devboard’ą tokį posenį, bet utžektinai kaip pradedančiajam. Beje, tavo senieji straipsniai apie FPGA kaip tik ir paskatino jais susidomėti 🙂

    Dabar apleidau, kadangi ARM’ai patraukė dėmesį dėl savo pigumo. Bet būtinai reikės sugrįžt prie FPGA 🙂

    Pakolkas vienintelė problema, kad usb FPGA programatoriai nepigūs ir kiekvienam gamintojui reikia atskiro.

  8. Hmm, vadinasi ne ten kažkur nužiūrėjau aš tuos pobrangius. Reikės pasidomėti ar labai jie skiriasi 🙂 O, gal žinai kuo galėtų skirtis? T. y. ne tik kad originalus/neoriginalus gamintojas, bet gal dar ir įvairių FPGA palaikymu?

  9. Taip, hakeriai rimta problema, todėl jungti Olinuxino prie visiems prieinamo interneto reikia labai atsakingai. Bet tam yra galimybė jungtis lokaliame tinkle arba naudoti WiFi modulį. Olinuxino atradau prieš tris savaites, tai laiko užteko tik pirminiam pasibandymui. Realus projektas iš tiesų yra daromas, jei įdomu, galėsiu pranešti kai pabaigsim.
    O dabar jau viskas, savo offtopiku daugiau nebeteršiu FPGA temos 🙂

  10. Tai jau geriau Raspberry Pi, vietoje Olinuxino, didesnis palaikymas. O šiaip tai jau nėra skirtumo, ar tokį boardą naudot, ar kokią nors “normalaus kompiuterio” (tipo x86) motininę. Vis tiek nesuprasi kaip hardwaras veikia, linux programuodamas 🙂 .

Leave a Reply

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