Tag Archives: FPGA

RGB matrica: beveik 24 bitai

Supumpavau Verilog kodą iki tiek, kad pagaliau RGB matrica pradejo rodyti beveik 24 bitus informacijos. Kadangi neteisinga tiesinė LED priklausomybė, labai daug informacijos išsikraipo ir nesigauna didelis grožis. Diodų šviesumo ir žmogaus akies priklausomybė greičiausiai kokia logaritminė. Ir dar trūksta taktų (PWM moduliacija vykdoma pakadriui, nes taip sujungta schema. Todėl fps turi būti x kartų didesnė nei standartinė flicker-free), jei imti 256/4 mirgėsio nėra, o štai prie 256/2 jau jaučiasi žiaurus mirgėjimas. Taktinis dažnis ~120MHz. Nėra kur slėptis.

Keletas iliustraciju:

RGB beveik 24bit LED

Kaip viskas šviesu ir negražu. Visai nėra juodos spalvos. Tuo tarpu originaliam paveikslėlyje irgi nėra juodos spalvos, bet daug “tamsiai pilkos”:

RGB beveik 24bit LED
(2K kosminė odisėja ir demotivatoriai)

Labiau “hentai-manga” stiliaus paveiksliukas su popieriaus lapu:

RGB beveik 24bit LED

ir visas, nufotkintas tamsoje:

RGB beveik 24bit LED

Originalus paveiksliukas:

RGB beveik 24bit LED
“Your resistance only makes my penis harder!” posakis yra gana įžymus, žiūrėkit vikipedijoje apie tai. 🙂

Testinis failas (SOF/POF) įrašyti i FPGA ar konfiguracinę mikroschemą EPS4: POF/SOF.POF/SOF (fixed). New: POF/SOF. Naujos “firmware” source kodas.

RGB matrica: rašom softą

Kai pavažiuoja smegenys nuo FPGA programavimo (niekaip nepavyksta dalis 24 bitų konvertavimo į vieno bito PWM), peršokam į MS Visual Basic kurybą. Naudojam senovišką VB6 versija, nes .NET versija kažkaip nesugeba automatiškai konvertuoti senų mano projektų. O kai kuri nauja programulką, labai patogu naudotis senesnių programų gabaliukais- moduliais.

Pasirašiau sau darbinį variantą paveiksliuko konvertoriaus. Programa konvertuoja bet kokį paveiksliuką į RGB matricos dydžio atminties buferį ir taip pat, panaudojus lygio detektorius gamina vieno bito frame buferį.

RGB matrica: softas

Čia nuotrauka (netgi ne printscreenas!) su gyva matrica ir kompo ekranu. Matosi, kad matrica rodo tą patį kaip ir programos apatinis langelis. Programa gamina atminties image (vaizdą) Quartus Memory Initialization File (.mif) formatu. Jį buvo labai lengva aprašyti naudojant Basico komandomis.

O čia, šiaip, iliustracija. Dalis “timing” diagramos kurią teoriškai generuoja FPGA kodas:

timing

Kodas iš esmės toks: imam duomenis iš vidinės RGB kadro atminties, iš duomenų atimam kadro numerį (kadro numeris tai paprasčiausias skaitliukas). Taip gaunam primityvią PWM moduliacija kadrui. Teoriškai, šviesiausias taškas šviečia visus 256 karus iš 256. Tuo tarpu 50% ryškumo taškas šviečia tik 128 kadrus iš 256. Praktiškai 256 kadrai nesigavo- naudoju 64 lygius, nes neužtenka greičio (net ir dabar prasideda triukai- iš vidinės atminties skaitom duomenys tuo pat metu kaip ir keičiamas adreso duomenys- ir viskas taktuojama ~200MHz taktiniu dažniu). Taip gaunama 262144 spalvos. Iki 16M kiek trūksta… Šis rezultatas perrašomas į 1 bito kadro buferį. Kita dalis FPGA mikroschemos ima duomenis iš šio buferio iš 30 vietų po 16 bitų ir per 30 serial-shift registrų išpumpuojama į MBI mikroschemas. Atminties pumpavimas, modifikavimas ir pumpavimas atliekamas vienu metu, todėl įtariu gali kilti problemos su judančio vaizdo rodymu. Bet iki šios problemos nepriėjome.
Šiuo metu sunaudojom 2011 loginių elementų( iš 5980 galimu, 34%) ir 73728 bitus atminties (92160 galimu, 80%) ir beveik visus pinus- 79 (iš 98 galimu, 81%). Nors tiesa pinai tai ne mano problema, nes ne aš dariau plokštę…

RGB matrica: 1 bito frame buferis

Po ilgo laiko tarpo, pagaliau prisėdau prie savo RGB LED matricos. Kiek pavargau ir perrašiau visą matricos “taimingo” schemą į vieną Verilog modulį. Testinė schema buvo padaryta iš atskirų loginių elementų. Pakeliui išsisprendė keletas (bent jau teorinių) “gliukų” oscilogramose ir šiaip, schema užima mažiau vietos FGPA viduriuose.

Kol kas organizuotas vieno bito “frame” buferis (kadro atminties buferis). Duomenys iš FPGA vidinės atminties pastoviai pumpuojama į RGB matricą. Pakeliui išprestas rebusas dėl skirtingo RGB LEDų išsidėstymo ir “logiškos” video atminties. LEDai sulituoti kiek kitaip, ir video atmintis gaunasi kiek iškreipta, panašiai kaip ZX Spectrum kompiuteryje. Geriau jau schemoje viską išburti, nei ateityje vargti su paveikslėlio paruošimo softu.

RGB matrica
(Tie snukučiai jau iš pradžių buvo su pasuktom burnom, va paveiksliuko “source”: Paveiksliukas kuris turejo buti pavaizduotas. Dar įtariu nesklandumus Basic’o programoje).

Pakeliui teko pasirašyti softą MS Visual Basic’e, kuris paruošia video buferio atminties “dump’ą” kurį galima užkrauti į FPGA naudojant Quartus programinę įrangą.

Iškilo kelios naujos problemos:

  1. Raudona spalva žymiai prislobsta jei uždegami visi 16 diodų ant tos pačios mikroschemos.
  2. Skirtingų mikroschemų “blokai” turi skirtingus baltos spalvos balansus- matosi “siūlės” kai spalva pereina iš vieno bloko į kitą.
  3. Ir jau minėta bėda su žalia spalva- ji linkusi geltonuoti prie didesnio intensyvumo.
  4. Pastebliu mikro “gliukus” mėlynoje spalvoje- kažkokie, vos įžiūrimi, mėlynos spalvos vaiduokliukai.

Šiaip, aš išradinėju dviratį, bet užsienėtis kuris paliko komentarą mano puslapiuose kad jis irgi turi tokias pat matricas net nesiruošia pasidalinti kodu. Spaudžia. Nu ir eina jis peklon, man savo lameriško kodo negaila. Todėl viska skelbiu kaip “freeware”. 🙂

FPGA source code: RGB matricos 1bito buferis Quartus archyvas ir frame buferio turinys.

Bendras vaizdelis kaip atrodo schema: Matricos sujungimo schema pdf dokumentas.

Sekantis etapas ir planai:

Pilnas RGB, bet jau kelių bitų spalvų lygiai, nes su aštuoniom spalvom 21 amžiuje kiek primityvu… 🙂

RGB LED matrica: organizacija

Šis postas labiau skirtas man pačiam nei plačiajai visuomenei. Paprasčiausiai, popieriukai su užrašais dažnai pasimeta arba sunku juos rasti. O čia, internete, informacija randu greičiau :).
Pagaliau buvo laisvo laiko, ir aš kiek padirbėjau su savo RGB LED matrica. Labai palengvino darbą FPGA mikroschema prilituota prie matricos- be jos, “reverse engineering” užtrūktu labai daug laiko… Laikas pažiūrėti ką sumastė Adaptive Micro Systems LLC iš Milwaukee, Vajomingo… 😉

RGB LED full color matrix

Matrica sudaryta iš 72×24=1728 RGB šviesos diodų. (Viso 5184 diskretus diodai).
Matrica padalinta į dvi dalis (eiles) kurios įjungiamos signalais (pagal mano klasifikaciją): LE_MBI_UPPER ir LE_MBI_LOWER (69 ir 70 ciklono kojos). Viena eilė sudaro 12 šviesos diodų eilučių. /LE signalo impulsas perveda informaciją iš vidinio registro į išorę. Žiūrėti MBI5026CD datasheetą .

Šias dvyliką eilučių valdo (per mosfetų raktus) paprasčiausia dvejetainė-šešiolika (74HC154, К155ИД3) mikroschema. Šios mikroschemos naudojamos tik 12 jaunesniųjų išėjimų. Pati dešifravimo mikroschema pajungta taip: A0-A3 (HC154A[3..0]) prie ciklono (32, 33, 34, 35), OE2 (HC154OE2) prie ciklono (32). O štai OE1 pajungtas gana įdomiai, čia padaryta apsauga nuo užstrigimo- su diskretinėm detalėm (rezistoriai, kondikai, tranzai, diodai) suorganizuotas šioks toks watchdog’as. Kol šį “šunį” maitinam per (RC_UNKNOWN1, 37), dešifratorius išduodą išėjimą. Užtenka generaciją nutraukti ir dešifratorius išsijungia.

Kiekvienoje eilutėje (išskyrus pirmuosius du kvadratėlius) yra 16 RGB diodų, kurie savo ruožtu maitiniami iš 3 serial-par-LED-draiver mikroschemų (MBI5026CD). Kiekviena mikroschema atitinkamai R, G ir B spalvas.

Dar, visos MBI5026 turi OE išėjimų valdymus, kurie sujungti išilgai, t.y. OE1 (59) atsovauja viršutinės dalies R spalvai, OE2 (60)- G, OE3 (61)- B. Atitinkamai OE4,5,6 (62, 67, 68)- apatinės dalies RGB.

Vaizdelio paišymas organizuojamas taip:
Paimam iš atminties 10×16 spalvotų pikselių. Juos užkraunam į registrus. Su LE pasirenkam viršutinę ar apatinę matricos dalį naudoti, o su dešifratoriaus A0..A3 pasirenkam eilutę. Kam tas LE? Nes kiekvienas “kvadratėlis” turi savo nuosava SDI…

Bet kaip organizuojamas individualaus taško ryškumo reguliavimas? Kažkaip manipuliuojant OE ir H154OE2? Nes teoriškai, čia turėtų buti “analoginė”, “full color” matrica. Kažkaip nesinori tikėti, kad čia tik 8 spalvos… 🙁 Pati MBI5026 turi fiksuotos srovės išėjimus.

Pažiūrėkit ką jie gamina/gamino: http://www.adaptivedisplays.com/

Ciklonas 1

Iš defektuoto plazminio teliko išlupau plokštę su Alteros Cyclone čipuku. Tai EP1C3T100C8 mikroschema: šimtas kojų, iš jų vartotojui skirta tik 65, 2910 loginių elementų, 59904 bitai atminties ir vienas PLL. Kadangi mano plokščių gamybos technologija dar nėra tobula ir dar dėlto, kad galutinis produktas dar nesugalvotas pasinaudojau gamykliniu universaliu adapteriu. Prie to adapterio iš kitos pusės priklijavau maitinimo, programavimo ir konfiguravimo plokštę. Panaudojau paprasčiausius laidelius abiejų plokščių sujungimui. Kadangi naudojama viensluoksnė plokštė, bet Cynar vielučių neapseita.

Gražioji pusė:
Cyclone I
Juodu flamasteriu užtušavau nenaudojamas kojas ir jų numerius, nes jie labai blaškė dėmesį, Vidiniai užrašai nelabai trugdo, bet manau ir juos reikės užtušuoti.

O čia jau “blogoji” pusė (daryta “lygintuvine technologija, todėl nekokybiška):
Cyclone I
Čia pritvirtinti du stabilizatoriai: VccIO – 3.3V, VccINT- 1.5V, keletas kondensatorių, 25MHz osciliatorius pajungtas prie 10 ciklono kojos, keliolika rezistorių pull-up ir pull-down. Taip pat prilituota ir EPCS1 konfiguracinė mikroschema. Ji dar neišbandyta, nes mano ByteBlaster prijungiamas prie printerio porto nesugeba perkonfiguruoti šios mikroschemos. Kažkaip galima priversti patį cikloną perrašyti šią mikroschemą, bet aš dar nedaaugai iki tokio varianto. Taip pat du kištukai- vienas JTAG, o kitas EPCS1 perprogramavimui.

Čia yra juodai-baltas ploštės šablonas ir Eagle schema bei PCB. Jie kiek skiriasi nuo plokštės nuotraukoje, nes nuotraukos variantas turi gana daug klaidų, o archyve teoriškai tas klaidas ištaisiau. Ir tikriausiai privėliau naujų.

FPGA/CPLD čipukų taip pat galima rašti kiek senesnio modelio rūteriuose, DSL modemuose, telekomo įrangoje, senuose serveriuose, kiek egzotiškesnėse PCI plokštėse. Žodžiu, mažesnio tiražo brangesnėje aparatūroje. Sėkmės medžioklėje.

LCD + FPGA

Po kažkiek tai eksperimentų ir vienos mikroschemos mirties padaryta 1/5 mano LCD kontrolerio projekto. Kol kas veikia tik beveik visi timing’ai, duomenys kol kas perduodami iš flash ROM mikroschemos. Kol kas yra šie bugai: dešinėje ekrano truksta 4 stulpelių (dingo vienas baitas informacijos), truksta 3 eilučių apačioje (ir dėl to pasidaro brukšnys per vidurį ekrano), visas vaizdas pasislinkęs per vieną eilutę (o čia jau ne bugas, o displėjaus ypatybė: jis pirmąja eilutę rodo prieš kadrų sinchroimpulsą).

Čia bendras darbo lauko vaizdas: impulsinis maitblokis (+5V ir ~-15V), 20.48MHz osciliatorius (čia nesvarbu, nes dažnis vistiek padalinamas ar tai 4 ar 8 kartus), ATMEL 29C010A “Video ROMas” ir ALTERA FLEX EPF10K10TC144-3 FPGA kuris ir viską daro. Raudoni brūkšneliai ant “breadboard” tai 47K rezistorių rinkiniai “patempti” duomenų ar adresų linijas link 1 ar 0.

LCD+FPGA

Kiek didesnis ekrano vaizdas. Kai kurie bugai yra ne FPGA “schemoje”, bet kiek itariu MS Visual Basic programoje kuri apdoroja vaizdą ir generuoja Video bitmap.

LCD+FPGA

To be done: išgaudyti bugus (ir pridaryti naujų 🙂 ), sukurti kompiuterio interfeisą (dar nežinau kokį), pritaikyti vietoje ROM RAMą (iš pradžių statinį RAMą, o vėliau kokį dinaminį, kad pamažinti laidų skaičių). Dar vėliau- padaryti spalvotą vaizdą.

Cikloniukas

Kaip jau seniau minėjau, viena firma “davė” keletą plokštelių su ALTERA FPGA Cyclone II (EP2C5T144C6N). Jos buvo išbrokuotos dėl kažkokių tai priežasčių. Kiek apžiurėjus PCB buvo pastebėta, kad kaikurios plokštės perpiltos lydmetaliu, o kitos kiek perkaitintos ir takeliai vietomis susibanginiavo. Išsirinkau kiek mažiau pažeista plokštelę ir nutariau kiek paburti. Pirmiausia, plokštelėje nėra JTAG kištuko, bet yra skylė jam. Įlituojam jį. Ant plokštės sumontuoti core ir kiti stabilizatoriai atrodo nepažeisti. Pajungiau 3.3V maitinimą ir … plokštė atsiliepė JTAG grandinėje.

cyclone II

Tačiau, nors ir leidžiasi programuojama, bet nepereina į “user” režimą. Kiek panagrinėjus takelius ir prasisukus su oscilografu, pamačiau, kad mikroschema pajungta kitam programavimo režimui. Teko kelias valandas paburti ir štai rekomendacijos: reikia susirasti vieną naują mažytį SMD rezistorių apie 10K vertės ir trys mažus laidukus. Geriau naudoti taip vadinamus “Kynar wire” t.y. plonas monolitinis laidelis su izoliacija kiek plonesnis už plauką.

Nupjaunam takelį nuo 85 kojos (MSEL1) kuris einą į vieną iš stabilizatorių. Su lituokliu paimam lašiuką lydmetalio ir užtrumpinam tarpelį tarp 85 ir 84 (MSEL0) kojos. Čia turi gautis, kad abi kojos pajungtos į žemę. 10K rezistorių vienu galu lituojam prie Vcc 3.3V. Prie kito galo prilituojam laiduką apie 10mm ilgio ir jungiam jo kitą galą prie išorės kištuko adatėlės kuri eina prie 15 (DCLK) kojos. Taip padarom DCLK pull up. Kitą gal net trumpesnį laidą prilituojam prie žemės, o kitą gala prilituojam prie kištuko adatėlės kuri eina į 14 (DATA0) koją. Dabar idomioji dalis- ant plokštės stovi LCX125 (buferiukai paprasčiausi). Galima juo panaudoti, bet paprasčiau (bent jau man) tai nutraukti takelį iš LCX125 6 kojos einanti į cikloną. Tai patogu padaryti kitoje plokštės pusėje. Toliau plonu laideliu reikia nutrauktą takelį einanti į cikloną sujungti su Vcc 3.3V, juolab kad čia taip patogiai jis eina ir yra abieju signalų VIA skylės.

Žodžiu turi gautis taip: 14 (DATA0)=GND, 15 (DCLK)=PULLUP, 16 (nCE)=GND, 20 (nCONFIG)=VCC OR PULLUP, 82 (nSTATUS)=PULLUP, 83 (CONFDONE)=PULLUP, 84 (MSEL0)=GND, 85 (MSEL1)=GND.

Plokštėje yra kažkokios paslaptys susijusios su šoniniu kištuku, kažkodėl ant jo išeinantis signalai kažkaip dubliavosi, nors to neturėtų būti. Dar neišsiaiškinau- bet padavus signalą iš ciklono, ten pasidubliavo kai kurie išėjimai ir pats ciklonas kiek pradėjo šilti. Tačiau eksperimentams visai tinka ir kita skylė skirta kažkokiai jungčiai- ten yra 12 kontaktų ir kurių 11 pajungta prie “atsarginių” ciklono kojų (113, 112, 115, 114, 121, 118, 125, 122, 133, 126 ir 134). Dvylikta koja tai žemė. Taktiniam dažniui patogu naudoti šoninį kištuką, jo viena adatėlė eina per 56 omų rezistorių į 17 (CLK0) ciklono koją.

Ciklonas bent jau per šias kojas puikiausiai dirba ir programuojasi. Dėkui už mikroschemą.

Biški apie CPLD

Trumpai papasakosiu apie savo eksperimentus su CPLD mikroschema ir Lattice programine įranga.

Prisiverčiau biški pasimokinti naudotis programuojama logika. Kaip jau rašiau kitose žinutėse, mano mikroschemų pasirinkimas buvo labai mažytis ir teko žaisti su Lattice isp2032VE110LT44 mikroschema. Taip pat labai padėjo straipsnis iš Seattle Robotics Society. Taip pat tuo pačiu metu nagrinėjausi supaprastinto LCD ekrano veikimu. Todėl sujungiau abi mintis į vieną ir gavosi va tokia nesamonė…

CPLD + LCD

Beja, šiame projekte dalyvauja ir dvipoliaris reguliuojamas maitinimo šaltinis iš senesnės žinutės.

Teorija apie LCD valdymą išbandžiau su BASIC programa. CPLD programinę įranga nusikroviau iš Lattice puslapių. Programavimo kabelį taip pat pasidariau. CPLD mikroschemą prisilitavau prie maketinės- eksperimentinės plokštės.

O dabar pradedam šneką apie CPLD programavimą…
…skaityti toliau… Continue reading →

Per silpna mikrschema

Eksperimentuojant su programuojama logika kilo noras pasijungti LCD monitorių. Monitorius be kontrolerio, todėl visą darbą turi atlikti programuojama mikroschema. Pirmiems eksperimentams aš naudojau Lattice isp2032VE. Jos programavimas paprastas, softas lengvai suprantamas (per vieną vakarą galima išmokti), konfiguracija įrašoma į vidinį flašą. Bėda ta, kad mažokai kojyčių ir mažai logikos elementų.

Low of GLBs.

Čia mano eksperimentinis darbo laukas. ROMas imituoja atmintį- jo turinys turi vaizduotis ant ekrano. Turime gauti chaotišką, bet statinį vaizdelį. CPLD (programuojama logika) atlieka dažnio daliklį, generuoja sinchro signalus ir bando išduoti adresų signalus atminčiai. Bet priėjau prie mikroschemos ribų- užtenka pridėti dar vieną kojytę ar perkelti jau naudojama koją į kitą mikroschemos pusę ir iškarto gaunam klaidos pranešimą: “34200 ERROR: Number of GLBs, 9, exceeds maximum number of available GLBs, 8, in part ‘ispLSI2032VE-110LT44’ “.

O man dar reikia iškišti kaip minimum dar 11 kojų! Perkuičiau savo archyvą, gal kokių mandresnių mikroschemų… Labai tiktų ispLSI2128-100LT… Pajungiau prie programatoriaus- neskaito. Nu galvoju bloga. Paimu iš kitos plokštės (tikrai veikiančios)- vėl neveikia. Labai labai įtariu, kad šikniai iš Lattice Semiconduktors neduoda demo licenzijos vartotojams jos programuoti. Arba aš kažko nesuprantu.

Labai nesinori, bet gal teks pereiti prie kitos šeimynos. Iš kažkokio senoviško DSL modemo išlupau plokštę, su statybiniu fenu nupūčiau lauk procesorių, RAM, ROM ir dar kažką, kas nusipūtė :). Žodžiu pasidariau kąžką panašaus į ekpsperimentinę plokštę. Teko tik prisilituoti programatoriaus lizdą (skylutės jau buvo paruoštos 🙂 ).

Low of GLBs.

Alteros softas visiškai skiriasi nuo Lattice. Teks mokytis per naujo. Programatorius irgi kiek skiriasi, bet schema nėra labai sudėtinga. Pasidariau ir šį programatorių. Pajungiu schemą ir valio! Mato programa mano FLEXą. Bėda ta, kad velniai žino kur kokia koja nuvesta- plokštė daugiasluoksnė, sunku surasti. O ir logika tai FPGA tipo, su RAM tipo konfiguracija. Išjungi maitinimą ir viską ji užmiršta.

Programuojama logika

Programuojama logika arba mano kančios…

Užėjo noras kiek pasimokinti apie porgramuojamą logiką. Pradinių žinių- nulis. Tik žinau, kad tokia yra.

Pati paprasčiausia ir seniausia programuojama logika tai PAL (PALCE) ir GAL mikroschemos. Deja joms reikia specialaus programatoriaus. O jo schemos internete aš neradau. Tiesa, yra GAL programatoriaus schema, bet aš jos nebandžiau. O beto softas senoviškas…

Teko pasižiūrėti į sekančios kartos mikroschemas. Jos programuojamos per JTAG (serial) kabelį ir nereikalauja specialių sudėtingų programatorių. Bėda, kad tos mikroschemos brangios ir retos. Ypač bananų respublikoje Lietuvoje, kur “support’o” megėjams visiškai nėra. O atsisiusti iš užsienio labai brangu. Teko grybauti per visokius šiukšlynus, senas plokštes. Gerai, kad tos mikroschemos perprogramuojamos (PAL – ne. Jos OTP).

Štai mano grybukai:
CPLD / FPGA
(Tiesa dar turiu keleta Alteros flexu su BGA korpusais… tokie korpusai man neįkandami.)

A ir C tai AMD Mach 110 ir 120 serijos mikroschemos- neturiu softo.
B- Xilinx FPGA XC3142A, turimas softas nepalaiko jos.
D- Altera EPM7032LC44-15T – lygtai turimas softas jos nepalaiko.
E, F, G – Alteros FPGA Flex serijos (EPF10K10TC144, EPF81188ARC240, EPF8636AQC208) – tik vieną palaiko turimas softas.
H- Lattice isp2032VE110LT44 – softas palaiko.
I- EPM3032ATC44 – softas palaiko, tik schemutė veikiančiam aparate.
J- Lattice ispLSI2128 100LT- softas palaiko su “A” raide. Datasheetas sako, kad be ar su A raide tai tas pats. Bet mano readeris šios mikroschemos neatpažysta- arba mikroschema bloga, arba softas nepalaiko. Gaila. Ji man tiktu.

Kad užprogramuoti mikroschemas reikia joms sukurti jedec failus su specialiu softu. Softas brangus. O demo versijos “kramto” tik kai kurias mikroschemas. Taip susiaurino mano galimybes dar labiau.
Didelės mikroschemos turi labai daug kojų. Ir visas kojas prilituoti megėjiškom sąlygom sunku. Tai dar pamažino mano pasirinkimą.
FPGA mikroschemos labai geros, daug logikos elementų, bet jos konfiguracija saugoma SRAM atmintyje- išjungus maitinimą, konfiguracija dingsta. Konfiguraciją galima įrašyti į mažą serial ROM mikroschemą, užkrauti iš kompo per laidą ar su kokiu nors mikroprocesorium sukišti kodą ir kokio ROMo. Mano eksperimentams tai buvo kiek sudėtinga. Todėl teko pasirinkti CPLD- logika kur konfiguracija įrašoma į flash atmintį ir išsilaiko atjungus įtampą.

Deja mano eksperimentams liko tik Lattice isp2032VE110LT44.

• SuperFAST HIGH DENSITY IN-SYSTEM
PROGRAMMABLE LOGIC
— 1000 PLD Gates
— 32 I/O Pins, Two Dedicated Inputs
— 32 Registers
— High Speed Global Interconnect
— Wide Input Gating for Fast Counters, State
Machines, Address Decoders, etc.
— Small Logic Block Size for Random Logic
— 100% Functional, JEDEC and Pinout Compatible
with ispLSI 2032V Devices
• 3.3V LOW VOLTAGE 2032 ARCHITECTURE
— Interfaces With Standard 5V TTL Devices
• HIGH PERFORMANCE E2CMOS® TECHNOLOGY
— fmax = 300 MHz Maximum Operating Frequency
— tpd = 3.0 ns Propagation Delay
— Electrically Erasable and Reprogrammable