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 →

Stabilizatorius maketinei plokštei

Labai dažnai, bandant visokias schemas maketinėje plokštėje prisireikia stabilizuoto maitinimo šaltinio. Paprastai nieko negalvodamas ten dedu 780x serijos mikroschemą ir viskas. Bet per paskutinius eksperimentus, man pritruko tiek galios, tiek vietos ant maketinės plokštės (breadboard). Ir dar man prireikė neigiamos įtampos šaltinio.
Paprastai, aš naudoju standartinius sieninius transformatoriukus nuo įvairiausiu switchų ar kitų įrenginių. Bet kai prireikė dvipoliarinio maitinimo, tai jau reikia naudoti du transformatoriukus. Ir dar tie laidai visur besimaišantys… Ir dar aišku bėda su reguliatoriaus temperatūra- pas transformatoriukus įtampa nuo 7 iki 20V. O aš savo schemose naudoju 3.3 … 5V, 12V. O kai prireikė aukštesnės neigiamos įtampos, tai neradau tokio transformatoriuko.

Ir kai neišlaikė nervai, gimė va šitas įrenginys:

impulsinis stabilizatorius

Tai joks ne stebūklas, o dvigubas impulsinis stabilizatorius ant LT1076 mikroschemų. Mikroschemas ir droselius išlupau iš kažkokio seno aparato. Schema pagal mikroschemos aprašymą. Viena LT1076 veikia kaip standartinis įtampos stabilizatorius, o kita- impulsinis invertorius. Jis iš teigiamos įtampos gamina neigiamą stabilizuotą itampą. Abiejų reguliatorių išėjimas reguliuojamas su kintamais rezistoriais. Teigiama įtampa kinta nuo Vin iki 0V. Neigiama nuo 0 iki -25V (tiek pavyko pakelti su standartiniu 7.5V 1A transformatoriuku nuo ruterio).

skaityti daugiau… Continue reading →

Kabelių schemos

Norintiems susikonstruoti kokį programavimo kabelį, aš sudėjau keletą schemų į vieną vietą. Tai įvairūs ISP kabeliai AVR procesoriams, programuojamai logikai…

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

Lygiadienis?

Kalendoriuje parašyta, kad šiandien lygiadienis. Bet kažkodėl, kalendoriukyje dienos ilgumas nelygus 12 valandų… Kažkoks tai netikslumas 🙂

kalendorius
Čia parašyta, kad dienos ilgumas 12:09. Kiek paspaudžiojus kalendorių, lengvai surandam, kad lygiadienis visdėlto buvo 19 dieną.

kalendorius

Didelis LCD be kontrolerio prie printerio porto

Išminčiai sakė, kad tai neįmanoma. Išminčiai sakė, kad neužteks kompo greičio… nu kompo greičio gal ir užteks, bet printerio portas nesugeba perduoti tokį kiekį informacijos…

Ot ir ne! Va jums Sharp LM64P10 (640×480 STN matrica), be kontrolerio, pajungta prie printerio porto:

big graphic LCD on LPT

vaizdas kartojasi, nes patingėjau softą labai rašyti. Pas tokias matricas pirmi 4 bitai valdo pusę ekrano, o kiti kitą pusę. Čia aš paprasčiausiai sujungiau D0-D3 su D4-D7.

big graphic LCD on LPT

Aišku matricos “refresh” beviltiškas ir toks vaizdelis gražus vien tik todėl, kad foto aparato išlaikymas viena trečioji sekundės. Gavosi kokie 2…3 fps vietoje rekomenduojamu 80… 🙂

big graphic LCD on LPT

O štai dumenys pasitaiko pikselis į pikselį. Dabar viska reikia perkonstruoti į kokį mikrokontrolerį, arba priklijuoti kelis SED ar Hitachi kontroleriukus.

Žemiau techninė dalis…
Continue reading →

ispDownload kabelis

Norint užprogramuoti naujoviškas programuojamos logikos mikroschemas nebereikia jokių programatorių. Užtenka paprasto kabelio. Paprasto, jei jungsime prie kompiuterio printerio porto.

Iš sugedusio bevielio rūterio išsilupau eksperimentams Lattice isp2032VE mikroschemą ir prisilitavau prie maketinės plokštės. Todėl visus eksperimentus teks daryti su Lattice Semiconductors produktais. Visą programinę įrangą galima nemokamai nusikrauti iš mikroschemos gaminto interneto puslapių. Tai pat duodama nemokama licenzija kurios užtenka pradžios eksperimentams.

Kiek bevarčiau Lattice puslapius, bet kažkaip neradau kabelio schemos. Panaršius platesnius interneto vandenius, Intelio (!) puslapiuose radau senesnį dokumentą apie kabelį, o dar kažkokio žmogaus puslapiuose radau detalią schemą. Tai teoriškai universalus isp ir JTAG kabeliukas. Jei nenaudoti kai kurių opcijų, vieną mikroschemą galima netgi išmesti, bet mikroschemas programuos.

Kadangi naujos mikroschemos maitinamos jau ne nuo 5V, tai kabelis turi veikti nuo 3.3V maitinimo. Bet tada būtų problemos programuoti senesnius modelius… Bent jau mano turima mikroschema yra “5V tolerant”, todėl kabelio elektronika yra 5V. Reikia tik pasirūpinti, kad programuojama schema duotu reikiamą įtampą.

Aišku galima daryti spausdintinę plokštę šiam kabeliukui, bet kam vargti dėl dviejų mikroschemų? Aš surinkau kabelį “ore”.

ispDOWNLOAD Cable For Programming Lattice ISP Devices

Tie du rezistoriai tai jau mano išmislas. Vienas rezistorius jungia jungties korpusą su bendru korpusu. Taip saugomas kompas- didesnė tikimybė, kad korpusas pasijungs pirmas. O rezistorius tik “amortizuoja” galimus įtampos skirtumus. Kitas rezistorius jungia Vcc detect grandinę. Nenorėjau printerio portą jungti tiesiogiai prie kito prietaiso maitinimo- teoriškai šis rezistorius leis kompui detektuoti įtampą, bet ir apribos srovę jei kas pasidarys blogai. Dar reikėtu sudėti visus kitus rezistorius, bet čia jau per daug detalių kai montuojama ore.

Grafinis LCD ekraniukas

Iš kažkokio seno dauginimo aparato išlupau grafinį LCD ekraniuką. Tai standartinis ekraniukas be kontrolerio. Ir dar nukirpau nuo pagrindinės plokštės patį kontrolerį… Viską “ant snarglių” pajungiau prie maketinės plokštės, padaviau maitinimą ir pajungiau prie kompiuterio printerio porto.

graphic LCD

Ant plokštės, nuotraukoje žemiau, matosi dvi pagrindinės mikroschemos- kontroleris Toshiba T6963C ir atminties mikroschema. Ta smulkmė tai negatyvios įtamps keitiklis ir šiaip šiukšlės nesusijusios su LCD moduliu.

Skaityti daugiau….
Continue reading →

LCD modulio testas

Gavau keletą paklausimų apie LCD modulio pajungimą prie kompiuterio printerio porto. Gal žmonės nemoka naudotis interneto paieška ar šiaip neįvaldė kalbų… Taigi supaprastintos instrukcijos kaip greitai pajungti LCD prie kompo ir mikliai sukonfiguruoti WinAmp’o pluginą, kad jis kažką rodytų ant ekrano.

Schema labai paprasta. Dėmesio! Kai kurie senesni arba nestandartiniai, “žieminiai”, moduliai reikalauja papildomo įtampos šaltinio prijungto prie Vee kontakto (kontrastas). Tačiau didžioji dalis skystų kristalų moduliu veikia nuo standartinės įtampos ir kad išbandyti modulį užtenka Vee kontaktą pajungti prie žemės. Daugelis moduliu turi “self-test”, testavimo, režimą. Užtenka pajungti maitinimą ir kontrastą ir viena eilė simbolių pasidaro juodi, o kita eilė nesimato.

Pati schema. Tas kintamas rezistorius būtent ir reguliuoja kokia įtampas bus ant Vee kontakto. Pas standartinius modulius užtenka tą koja sujungi su žeme arba panaudoti kintamą rezistorių tarp +5V ir žemės.

Skaityti toliau…
Continue reading →