SK LABS
Altera MAX II razvojne ploče
I bi svetlo u nepoznatom kraju
D. PETROVIĆ
1. februar 2024.

Nakon kraće pauze, vraćamo se putevima u nepoznato. Predstavićemo vam par ploča koje koriste CPLD. Kao što smo već rekli (SK 4/2023, i.sk.rs/32118), CPLD (complex programmable logic device) jesu logički uređaji koji imaju svoj komad memorije za čuvanje programa, te im nisu nužno potrebni niti mikrokontroler, niti bilo kakav drugi komad silicijuma. CPLD je sam sebi dovoljan, ali, naravno, može da se koristi u kombinaciji sa jednim MCU-om.

EPM240T100C5N

Na obe razvojne pločice o kojima će biti reči nalazi se isti CPLD čip. Altera EPM240T100C5N je CPLD koji pripada MAX II porodici Alterinih „nepromenjivih” CPLD-a, baziranih na 0,18-mikrometarskom procesu proizvodnje. Ove čipove odlikuju osam kilobita memorije, MultiVolt jezgra, korisnička fleš memorija (UFM), te mala potrošnja. MultiVolt tehnologija omogućava izlazno-ulaznim (IO) jedinicama MAX II da rade sa logičkim nivoima od 3,3, 2,5, 1,8 i 1,5 volti. Šmitova poređenja omogućavaju toleranciju na šum na ulazima, a mogu da se programiraju za svaki izvod. Inače, EPM240 čipovi rade na 3,3 ili 2,5 volti.

Sama oznaka na CPLD-u koji se nalazi na našim razvojnim pločama (EPM240T100C5N) govori dosta o samom CPLD-u. „EPM” se odnosi na MAX II seriju CPLD-a. Gustina logičkih jedinica (elemenata) iznosi 240, što je mali broj ako posmatramo neke od Sipeed FPGA pločica o kojima smo već pisali. Od ovih logičkih kola, dostupno je 80 korisničkih IO izvoda. Naredna oznaka odnosi se na low-power ili zero-power uređaje. Izostanak ove oznake (kao na našim pločama) ukazuje na to da rade na gorepomenutim naponima. „T” označava pakovanje (TQFP), dok se „100” odnosi na ukupan broj fizičkih izvoda čipa, od kojih se neki odnose na napajanje, drugi na programiranje, dok se treći odnose na CLK izvode. „C” govori da je čip namenjen za „komercijalnu” temperaturu rada, „5” za brzinu CPLD-a (pet je sredina), „N” se odnosi na pakovanje za transport.

Logički nizovi blokova (LAB) na EPM240 su izdeljeni na šest kolona i četiri reda, što ukupno u zbiru iznosi 24 LAB-a. Svaki LAB se sastoji iz 10 logičkih jedinica (LE), gde svaki LE nosi lanac za lokalno povezivanje, lanac tabele za traženje (look-up table - LUT) i drugo. EPM240 može da radi u jednom od dva LE režima rada. Arhiva-Tekstni režim se koristi za standardne logičke aplikacije. Dinamički aritmetički režim je idealan za ugradnju „zmija”, brojača, „akumulatora”, poređenja i drugo.

Najveći deo fleš memorije postavljen je kao namenska konfiguraciona fleš memorija (CFM). CFM automatski preuzima i postavlja logičke IO pri startovanju, što omogućava skoro trenutno funkcionisanje. Korisnička fleš memorija (UFM) izdeljena je na male blokove i predstavlja programabilne priključke između veza sa nizovima logičkih jedinica za čitanje i pisanje. Tačan kapacitet UFM memorije iznosi 8192 bita, što je dovoljno za „pamćenje” veza između logičkih jedinica, ali isto tako dovoljno da se, po potrebi, iskoriste svi IO.

EPM240 dolazi sa četiri namenska izvoda radnog takta sa dvostrukom namenom (GCLK0, 1, 2, 3). GCLK (global clock) su zaduženi da obezbede globalnu mrežu radnog takta, ali se mogu koristiti i kao IO, po potrebi. Maksimalni radni takt iznosi 304 megaherca. MAX II se programira preko JTAG interfejsa, a preko namenskog programatora.

Kompletna MAX II serija Alterinih CPLD-a prestala je da se proizvodi pre koju godinu, usled smanjene potražnje. Ipak, još uvek ih ima po radnjama u nezanemarljivom broju, kao i na razvojnim pločama. Da ne zaboravimo da opet napomenemo: Altera je u vlasništvu velikog Intela.

Plava ploča

Na plavoj PCB, iza koje stoji LC Technology, imamo EPM240T100C5N CPLD kome je 76 od 80 IO izvedeno u četiri dvostruka niza od po 10 izvoda, što je ukupno 80 i svi su propisno označeni. Preostala četiri su 5V, 3,3V i dva GND. Četiri neizvedena IO na ovim nizovima sa CPLD su GCLK (global clock). GCLK0 je povezan sa kristalom od 50 megaherca (izvod IO12), dok su preostala tri GCLK-a, uz GND, završila na PTH i mogu da se koriste po potrebi. Ovaj niz označen je sa CLK, ali nije precizirano šta tačno koji izvod predstavlja. Mala crvena lampica povezana je sa IO77 i može da se programira, a tu je i kratkospojnik kojim će se lampica fizički odvojiti iz strujnog kola, ako će IO77 da se koristi za neke druge stvari. Ploča može da se napaja preko 5V izvoda regulisanim naponom ili preko strujnog priključka, takođe sa pet volti. Za 3,3 volta je zadužen LM1117 naponski regulator. Tu je i prekidač za uključivanje ploče, kao i crvena lampica napajanja. Za programiranje, u donjem delu ploče se nalazi IDC JTAG priključak.

Crvena ploča

Na crvenoj pločici zatičemo isti CPLD, ali je format drugačiji. Pločica je uža, pa je to doprinelo da JTAG priključak bude skrajnut u stranu, čak i previše. Imamo dva dvostruka niza sa čak 88 izvoda. Zanimljivo je da ugrađena lampica nije SMD, već PTH. Sličnu PTH lampicu na nekoj razvojnoj pločici nismo videli otkako je gavran pocrneo. Napajanje je rešeno isto kao na plavoj pločici, a kao dodatak, tu su dva PTH obeležena kao +5V i GND. Zanimljivo je da su VCCINT i GNDINT ostavljeni sa opcijom da se povežu sa VCC i GND, shodno nameni, preko otpornika od nula oma. O proizvođaču crvene pločice znamo samo to da je mi nismo napravili.

USB Blaster

Za programiranje CPLD razvojnih ploča koristimo USB Blaster programator (slika desno). Ovde dolazimo do jednog, naizgled, nepremostivog problema. Naime, u identičnom kućištu mogu da se nađu programatori zasnovani na STM32 i PIC18F mikrokontrolerima. Oni sa PIC18F lako dobijaju drajvere prilikom instalacije samog Quartus razvojnog okruženja, dok ovi drugi ne, jer ih računar „vidi”, ali im ne dodeljuje drajver koji postoji. Pogađate, mi smo „uboli” SMT32. Nakon više neuspešnih pokušaja da nateramo da se drajver za naš programator instalira, pa čak i preuzimanja raznih verzija sa mreže - nismo uspeli. Da stvar bude gora, nakon svakog instaliranja drajvera dočekao nas je BSOD. Drajver nakon „oporavka” nije radio. Već smo počeli da razmišljamo da tražimo PIC18F ili neki drugi, skuplji. Ipak, ako nas je rad u elektronici i programiranju ičemu naučio, to je - strpljenje.

Drajveri za isti ovaj programator, ali za Windows 7, rade savršeno. Međutim, ovi nisu digitalno potpisani, te ne mogu da se instaliraju na Windows 10. Ili možda mogu? Pritisnut ’Shift’, pa zatim restart računara nas vodi u specijalni režim Prozora gde je to moguće. Potrebno je pod Troubleshoot: Advanced Options: Startup Settings, odabrati sedmu opciju koja će omogućiti da se na Windowsu 10 instalira drajver za Windows 7. Nakon restarta, idemo na Update Driver, pa link ka drajveru. Instalacija uspešna, nema BSOD-a, još jedan restart i naš USB Blaster je spreman za rad.

USB Blaster povezan sa računarom će se pod Universal Serial Bus controllers prijaviti kao Altera USB-Blaster, bez znaka upozorenja. Na njemu su dve lampice, ’Power’ i ’Act’, gde ova potonja govori o statusu programatora.

Pored MAX II, programator može da se koristi za programiranje i drugih CPLD i FPGA čipova, kao što su MAX3000, MAX7000, Cyclone, Stratx, FLEX10K i drugi. Pored JTAG-a, podržava još i AS i PS. Osim toga, programator podržava SignalTapII kao ugrađeni logički analizator, NIOS II komunikator i „lovac na bube”.

Quartus Prime

Quartus Prime je Alterino (Intelovo) razvojno okruženje, namenjeno za programiranje CPLD i FPGA opisnim jezikom. Preuzimamo ga sa zvaničnih Intelovih stranica, gde posebnu pažnju treba obratiti na to šta koja verzija podržava. Nažalost, MAX II nije podržan u svakoj verziji Quartusa. Prilikom instalacije potrebno je dobro ispratiti šta čarobnjak nudi za instalaciju, pa po potrebi čekirati. Nakon instalacije, pokrećemo Quartus i povezujemo programator. Potrebno je proveriti da li alat ima komunikaciju sa programatorom i da li ga prepoznaje. U slučaju problematične instalacije drajvera, Quartus, naprosto, neće „videti” programator.

U gornjoj traci idemo na Tools, pa na Programmer. Otvara se dodatni prozor sa opcijom Hardware Setup. Tu, iako je programator prepoznat, moramo da ga dodelimo i da za Mode odaberemo JTAG. Ako je sve uspešno urađeno, možemo da počnemo sa programiranjem, ali prvo da se malo upoznamo sa Quartusom.

Quartus se sastoji iz leve trake u kojoj razlikujemo Project Navigator i Tasks. U ovom prvom se krećemo kroz fajlove projekta, dok drugi sačinjava spisak zadataka koje kompajler izvršava. Naravno, potrebno je da svi „pozelene”. Donji deo je rezervisan za Messages. Ovde se listaju poruke prilikom kompajliranja u dve grupe, System i Processing. Gornja traka sadrži meni i nekoliko ikonica koje ćemo kasnije da koristimo. Desno je odeljak za IP katalog. Centralni deo je, naravno, rezervisan za programiranje.

I bi svetlo

Povezali smo USB Blaster sa MAX II razvojnom pločicom i... šta dalje? Možemo da programiramo MAX II opisnim jezikom, a možemo samo da mu dodelimo da izvršava određena logička stanja preko logičkih kapija.

Šta su logičke kapije? Logičke kapije su uređaji koji izvršavaju Bulove (Boolean) tipove podataka, kao tipove koji mogu da imaju samo dve vrednosti. Vrednosti su obično označene sa tačno ili netačno (true, false) i pokazuju istinitu vrednost logike i Bulove algebre. Postoji više tipova Bulovih podataka koji, prema Bulovoj algebri, shodno ulaznoj vrednosti, popunjavaju tabelu istinitosti. Bulova algebra i tabela istinitosti svakako zaslužuju koji red više, ali, bojimo se da ćemo zaći u Phone Zone rubriku. Dobra destinacija je i članak na Wikipediji.

Prvi korak je otvaranje novog projekta u Quartusu. Već tom prilikom dobijamo odabir čipa, a ako to ne uradimo sada, možemo kasnije. Kasnije to radimo tako što idemo na Assigments u gornjoj traci menija, pa Devices. Na samom čipu je tačna oznaka CPLD-a, te je potrebno da odaberemo konkretan model. Možemo da idemo prvo na Family, pa da tu odaberemo MAX II. Pod Available Devices će se izlistati svi, te je potrebno malo pretraživati. A možemo ići dalje u odabiru i suziti pretragu tako što ćemo pod Package odabrati TQFP, pod Pin Count odabrati 100, a pod Core Speed Grade odabrati 5. Sada je odabir sužen, te biramo EPM240T100C5.

Prvo da probamo programiranje preko dijagrama. Idemo na File: New, pa pod Design Files biramo Block Diagram/Schematic File. Dobijamo BDF fajl koji se otvara u centralnom delu i omogućava nam da kombinujemo logičke i druge blokove sa namenama izvoda (ulaz/izlaz). Svakom od ovih izvoda, za sada, dodeljujemo naziv, ali ne i sam broj izvoda pod kojim će ga CPLD prepoznati. BDF fajl dobija svoju traku sa alatkama. Tu biramo šta nam je potrebno između većeg broja alatki, kao što su Symbol, Pin ili Block. Za početak ćemo da podesimo tako da pritiskom na taster uključimo lampicu. Treba nam INPUT i OUTPUT. Dodajemo po jedan INPUT i OUTPUT iz Pin Tool i povezujemo ih Node alatkom. Ulazu i izlazu dodeljujemo nazive IN i OUT. Za početak idemo odmah jednom na Processing, pa Start Compilation, čime projekat prihvata naša dva čvora. Sada idemo na Assignments, pa Pin Planner. Ovde je potrebno svakom nazivu ulaza i izlaza dodeliti fizički izvod. Slično smo radili u GOWIN alatu kada smo pisali o Tang pločicama (SK 6/2023 - SK 9/2023). Ispod dijagrama, pod All Pins, potrebno je samo da dodelimo Location za svaki čvor, u našem slučaju PIN_28 za IN, a PIN_77 za OUT, jer, podsećamo, na pločici već postoji lampica na IO77. Još jednom kompajliranje, pa idemo na Tools, pa na Programmer. Napominjemo da sve ove alatke imaju svoje ikonice u traci sa alatima.

Prvo treba uneti programator, ako već nismo, što radimo pod Hardware Setup. Za Mode, naravno, JTAG. OTF fajl bi već trebalo da je izlistan, a ako nije, dodajemo ga na Add File. Odabiramo neophodne operacije, za sada samo Program/Configure i idemo na Start. Nakon par trenutaka, naša CPLD razvojna pločica je programirana. Dovoljno je da kratkospojnikom izvod IO28 povežemo naizmenično sa 3,3V i GND, te tako uključujemo i isključujemo lampicu na pločici.

Ali, hajde da dodamo malo automatike, kad na pločici već imamo kristal. Idemo opet na nov projekat, biramo čip i otvaramo nov BDF fajl u kom dodajemo jedan INPUT i jedan OUTPUT, s tom razlikom što input nazivamo CLK, jer, pogađate, lampicom će upravljati radni takt kristala (clock). Red je da napravimo blok simbol koji će, shodno brojaču radnog takta, uključivati našu lampicu. Pod Files: New otvaramo nov Verilog HDL fajl i u njega unosimo sledeći kod:

module counter(clk, out);

 input clk;

 output out;

 

 reg out;

 

 reg[25:0] count;

 

 always @(posedge clk) begin

  count <= count + 1’b1;

  out <= count[25];

 end

endmodule

Modul counter se, kao što vidimo, sastoji iz dva parametra, clk i out. Parametrima dodeljujemo izlaz i ulaz, shodno nameni. Sa reg[25:0] dodeljujemo raspon brojaču koliko može da broji. U procesu always odlažemo izvršenje naredbe do ispunjenja uslova. A uslov je da je count uvek manji ili isti od count uvećan za 1’b1, što je, u suštini, jedan bit (moglo je da se stavi i 1). Logičku vrednost dodeljujemo našoj OUT lampici. Menjanjem vrednosti count[25] u, recimo, manju, dobićemo da će se signal manje puta deliti, te će izlazna frekvencija biti veća i obrnuto.

Na red je došlo da napravimo naš blok simbol tako što idemo na File: Create/Update: Create Symbol Files for Current File. Vraćamo se na naš BDF fajl i pod Symbol Tools ikonicom u Project nalazimo naš simbol count. Zapravo, izlistaće se onako kako smo nazvali sam modul u Verilogu. Dodajemo naš blok između INPUT i OUTPUT čvorova i povezujemo ih prema oznakama CLK i OUT. Kompajliramo i opet idemo na Pin Planner, gde ovog puta za ulaz CLK dodeljujemo izvod PIN_12, zbog toga što je baš sa njime povezan 50-megahercni kristal na pločici. Možemo da dodamo neki eksterni na GCLK1 - 3, te da odaberemo drugi izvod. Dalje, opet sledi kompajliranje, te programiranje prema koracima iznad. I, naša lampica će početi da trepće.

Da kažemo i koju zanimljivost za alatku Symbol, koju koristimo kod pravljenja šeme u BDF.Na ovaj način, zapravo, uparujemo logičke jedinice CPLD čipa, o čemu smo pisali iznad. Pored ulaznih, izlaznih i naših dizajniranih čvorova, Quartus ima gomilu pripremljenih blokova kojima se pristupa preko alatke Symbol. Kada se alatka otvori, dobija se pristup folderu intelfpga, u kom razlikujemo foldere megafunctions, others i primitives. Spisak je preveliki, ali pomenućemo zanimljiv maxplus2 podfolder, gde imamo emulaciju raznih logičkih kola u formi samostalnih čipova: recimo, AND kapija 7400, flip-flop 74114, NAND kapija 7430, i tako dalje. U logic folderu su čiste logičke kapije u raznim kombinacijama ulaza i izlaza. Spisak je zaista ogroman.

• • •

Razvojne ploče nude osnovno što je potrebno da bi se programirao CPLD. Možemo da ih iskoristimo tako da rade sa lampicama, 7-segmentnim ekranima, LCD panelima, serijskom komunikacijom i drugo. Bez obzira na početne kratke spojeve u glavi, rad sa logičkim kolima je prilično prost, a jedno logičko kolo, poput ovog CPLD-a, može dobro da dođe prilikom dizajniranja kompleksnijeg projekta sa većim brojem ulaznih i/ili izlaznih signala. Svakako vas ohrabrujemo da se upustite u ovaj, ne tako poznat, svet CPLD i FPGA čipova, a mi ćemo nastaviti da se bavimo sličnim razvojnim pločicama i u budućnosti.

GALERIJA

PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
JUN 2024
Microsoft Windows/Android TV: Strimovanje igara u kućnoj mreži
Sa PC -a na Android TV
Šta kažete na to da se zavalite u fotelju ili kauč i da u PC igrama uživate na velikom ekranu?
AMD Ryzen 5 8600G
Pametan igrač
ova serija APU-ova donosi revoluciju u ovaj segment, jer pruža sasvim solidne performanse u igrama...
Gigabyte Aorus CO49DQ
Prelep pogled iz tenka
Nije prvi put da se srećemo sa monitorskom grdosijom od 49 inča, ali sada je pred nama prvi takav sa OLED panelom...
Synology DiskStation DS423+
Trajna investicija
NAS koji ide dobro utabanim stazama i definitivno možemo da ga preporučimo malim i srednjim preduzećima, ali i za ličnu upotrebu...
Huawei Watch Fit 3
Elegantniji i sposobniji
Hibridni satić koji ne samo da miri svet fitnes narukvica i klasičnih „pametnih satova”, već postavlja potpuno nove standarde u klasi...
Samsung Galaxy A15 5G i A25 5G
Prvi borbeni redovi
Galaxy A15 5G jedan je od najjeftinijih Samsungovih telefona sa 5G modemom i naslednik je Galaxyja A14 5G...
Microsoft Windows 11: Kreiranje bootabilne Windows instalacije
Prebacivanje Windowsa na USB stik
Media Creation Tool se jednostavno koristi, a proces se svodi na pritiskanje tastera Next i minimalnu interakciju...
Windows je u padu
Ali Microsoft je jak
Već duže od jedne decenije, Microsoft se suočava sa izazovima u održavanju tržišne dominacije svog vodećeg proizvoda - Windowsa...
Tehnološke granice pametnog nakita
Još sazreva
Nosiva tehnologija napredovala je velikim koracima tokom poslednjih petnaest godina...
Crow Country
Brutalno dobra low-poly, retro, TPS, horor avantura...
Senua’s Saga: Hellblade II
Ako „padate” na atmosferu i pozadinsku priču, spremite se na spektakl koji se retko viđa...
Homeworld 3
Pretvaranje jedne sjajne ideje u obični, neupečatljivi prosek...
© 2024 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama