SK LABS
Sipeed Tang Nano 1K
Nepoznati 1Korak
Dejan PETROVIĆ
1. jun 2023.

Sipeed proizvodi zaista razne zanimljive ploče, koje nam, uglavnom, prolaze ispod radara, potpuno nepravedno. O njima se ne piše puno, nisu u fokusu zajednice, ali mi, eto, gledamo da tu nepravdu ispravimo. Na ovim stranicama smo pisali o izuzetno funkcionalnoj ploči MAix Bit (SK 9/2022, i.sk.rs/31471) koja je sposobna da se izbori i sa najzahtevnijim zadacima, i to izuzetno brzo. Najprijatnije nas je iznenadio Longan Nano (SK 8/2020, i.sk.rs/28478), koji je u određenom formatu sposoban da pokrene čak i video. Nabavili smo veći broj zanimljivih ploča od Sipeeda, te ćemo gledati da vam ih predstavljamo iz broja u broj. Prva na redu je Sipeed Tang Nano 1K. Prethodnika smo preskočili samo zbog toga što se negde u putu zagubio.

Sipeed Tang Nano 1K je mala razvojna ploča crne boje, koja donosi Gowin GW1NZ-LV1 FPGA čip. Sa njom se polako upuštamo u FPGA svet o kome smo pisali u tekstu „Put u nepoznato” (SK 4/2023, i.sk.rs/32118). FPGA čip pripada prvoj generaciji LittleBee porodice ovog proizvođača. Karakteriše ga veoma niska potrošnja struje, fleksibilnost, bezbednost i drugo. Čipom upravljaju CFU (configurable function unit), kao osnovne ćelije nizova blokova koji su postavljeni u redove. CFU može da se postavi u LUT4, ALU ili memorijski režim. FPGA čip poseduje 1152 logičke jedinice (LUT4 - look up table 4-inputs), 864 FF registra, 72 kilobajta SRAM-a za blokove sa taktom do 170 megaherca, i samo jedan PLL blok koji omogućava sintetisanja frekvencije radnog takta samog FPGA (do 40 megaherca, 27 megaherca predefinisano). Na raspolaganju nam je i 64 kilobajta korisničke fleš memorije, što će reći da nije neophodan prateći mikrokontroler ili dodatna fleš memorija. Korisnička fleš memorija dozvoljava i do 10 hiljada upisa uz čuvanje podataka i preko deset godina, gde se brzina upisa meri mikrosekundama. Ipak, na pločici se nalazi rezervisano mesto za dodavanje jednog SOP8 fleša, ako se za time ukaže potreba.

Za vezu sa računarom, Tang koristi BL702C_A0 iz Bouffalo Labsa. Ovaj JTAG-UART debager prilično je „napucano” parče silicijuma u čije se mogućnosti van Tanga nećemo upuštati. U ponudi je i zaseban debager ovog proizvođača, sa istim čipom. Tang se i programira preko JTAG interfejsa, a do samog USB-C priključka su i četiri dodatna JTAG pina. Tang donosi raspoređene pinove u dva reda, kao što se dâ videti kod Arduino Nano. Oznake pinova su sa donje strane, gde razlikujemo IO sa raznim funkcijama (tri obeležena tačkom su GCLK pinovi), naponske i slično. Može da se napaja preko USB-C ili 5V pinova, dok se sam čip, u osnovi, napaja sa 3,3 volta (po jedan naponski regulator za BANK0 i BANK1). Na pločici su i dva korisnička tastera obeležena sa ’A’ i ’B’, kao i klasična RGB LED. Ipak, najviše pažnje privlači 40p FPC konektor za povezivanje LCD ekrana, postavljen popreko. Tang za ekran donosi zaseban LP3320 čip koji upravlja pozadinskim osvetljenjem.

Razvojno okruženje

Za programiranje Tanga, Sipeed preporučuje GOWIN FPGA Designer alat, po mogućstvu Standard Edition, za koji je potrebno zatražiti licencu od GOWIN-a (rešava se u kratkom roku). Alat će nakon instalacije dodati programe i drajvere. Osnovni deo alata deli se na editor, koji zauzima najveći deo ekrana, te levi deo u kome se otvaraju Design, Process i Hierarchy vidžeti. Design, zapravo, predstavlja skup neophodnih fajlova izlistanih po folderima. Process je deo preko koga pristupamo osnovnim opcijama pripreme programa i ploče, kao i programiranja. Synthesize u ovom delu je, u suštini, Verify u Arduino terminologiji. Place&Route proverava da li je sve OK prilikom sastavljanja softvera sa rutovanjem ka fizičkim pinovima FPGA čipa. Program Device je jasno čemu služi. Iznad editora i vidžeta je traka sa alatkama i opcijama, dok je ispod klasična konzola, gde će se ispisivati statusi u zavisnosti od toga šta radimo. O koracima ćemo kasnije, a prvo koji red o Verilogu.

Verilog

U pomenutom tekstu od pre neki mesec, rekli smo šta je Verilog. Sintaksa Veriloga poprilično se razlikuje od onoga što radimo prilikom programiranja jednog Arduina u C/C++. U sintaksi razlikujemo module (Verilog se i zasniva na konceptu modula), liste sa ulazima i izlazima, deklaracije Verilog tipova podataka, modulskih instanci i slično. Svaki skup instrukcija se naziva modulom. Modul počinje i završava se sa ključnim rečima module i endmodule. Između ovih ključnih reči, unutar modula, pišu se sve promenljive, funkcije i zadaci. Jedan modul može u sebi da ima podmodule. Recimo da su ovi moduli, zapravo, blokovi kôda koji nešto izvršavaju i sami su sebi dovoljni. Mogu da budu jako uprošćeni, ali i izuzetno kompleksni. Izvršavanje Veriloga može da bude na nivou gejtova, na nivou protoka podataka i na nivou modelovanja ponašanja. Opisivanje programiranja u Verilogu prevazilazi okvire namene ovog članka, te se ovde zaustavljamo. Postoji dosta tutorijala na mreži, te kod upoznavanja sa Verilogom ne bi trebalo da bude problema.

I bi svetlo

Kao i obično, kao prvi korak prilikom upoznavanja sa novim hardverom ispisaćemo jedno „Zdravo Svete!” u elektroničkom smislu, to jest, pustićemo LED da trepće. Nakon pokretanja GOWIN-a, pokrećemo nov projekat pod File, pa FPGA Design Project. U nastavku se bira hardver, u ovom slučaju sam FPGA čip GW1NZ. Otvaramo novi fajl kao Verilog fajl i u editor polju pišemo naš hardverski opisni jezik.

module Blink(

  input sys_clk,

  output led

  );

  reg [24:0] count = 0;

  always @ (posedge(sys_clk)) count <= count + 1;

  assign led = count[24];

endmodule

Verilog fajl započinjemo otvaranjem modula Blink, koji kao svoje parametre sadrži listu portova, u ovom slučaju sistemski „klok” kao ulaz i led kao izlaz. Pod reg [24:0] određujemo brojaču count da ima 24 bita, tako da može da broji od 0 do 224-1, to jest, od nula do 16777215 u decimalnom prikazivanju. Proces always uz @() konstrukciju odlaže evaluaciju naredbe do ispunjenja određenih uslova. Konstrukcija, u suštini, kaže da će blok biti aktivan sve dok se ne pojavi pozitivan sys_clk završetak (positive edge -> posedge). U nastavku, mi kažemo da je count uvek manji ili isti od count uvećan za jedan. Logičku vrednost dodeljujemo našoj led sa assign. Kada je sve ispisano, dvoklik na Synthesize u Process vidžetu trebalo bi da prikaže eventualne greške u konzoli prilikom optimizacije, zaključivanja, tehničkog mapiranja i generisanja raport fajla.

Ako je sve u redu, a nema razloga da ne bude, idemo na FloorPlanner odmah iznad Synthesize. Sa leve strane, u folderu Ports su izlistani ulazni i izlazni portovi, isti oni koje smo deklarisali kao parametre modula na početku Verilog fajla. Sa desne strane se otvara Package View, kao pinout samog FPGA čipa. Potrebno je naprosto prevući izlazni LED port na odgovarajući pin čipa. Prema tehničkoj dokumentaciji, znamo da su RGB LED vezane za pinove 9, 10 i 11. Nakon snimanja postavki, idemo na Place&Route koji će izvršiti rutovanje, to jest, povezivanje naše LED u Verilogu sa odabranim fizičkim izvodom FPGA čipa. Ako je i ovde sve u redu, idemo na Program Device ispod.

Prvo što se pojavljuje je prozorče Cable Setting, gde sve ostavljamo kako jeste, a tiče se odabira debagera i brzine prenosa, kao i detektovanja ploče. Sklonjeno prozorče ostavlja GOWIN Programmer. Ukoliko FPGA nije prikazan, idemo na Scan Device. Pod Access Mode biramo gde će se naš program smestiti između SRAM-a, internog fleša ili eksternog fleša. Ako je odabir SRAM, tada će se program izvršavati sve dok je Tang povezan sa napajanjem. Jednom restartovan, Tang će zaboraviti na SRAM i nastaviti da izvršava ono što je na flešu, ako išta ima. Ova opcija je zgodna prilikom testiranja. Odabirom Embedded Flash Mode nalažemo programatoru da program smesti na fleš, te će se on izvršavati uvek nakon pokretanja Tanga. Pod Operation se dobijaju opcije uslovljene odabiru smeštaja. U našem slučaju, za fleš biramo opciju embFlash Erase , Program, a kao File Name naš FS fajl, obično u folderu Documents (putanja se bira prilikom otvaranja samog Verilog fajla na početku). I, na kraju, ikonica Program/Configure smešta naš Blink Verilog program na fleš memoriju Sipeed Tang Nano 1K pločice. Nakon jedva sekunde, LED će početi da trepće. Na zvaničnim stranicama postoji primer (malo kompleksniji) koji smenjuje sve tri boje u krug.

• • •

Tang je prilično povoljna FPGA pločica, sa dosta dokumentacije i naša je preporuka za upliv u nepoznati svet FPGA. Sama koncepcija blokova i modula je za početnike možda malo zbunjujuća, ali nakon početnog upoznavanja se očas posla dođe do uslovljavanja LED pritisnutim tasterom. Naravno, Tang je sposobniji od pukog paljenja i gašenja jedne LED.U narednom periodu ćemo predstaviti i druge pripadnike Nano serije, kao i drugačije načine programiranja. Ovaj put u nepoznato završio se LED svetlom na kraju FPGA tunela.

GALERIJA

PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
DECEMBAR 2023
Microsoft Windows 11 23H2
Sveže oprani Prozori
Windows Copilot, ugrađeni AI pomoćnik, već sada je daleko više od toga što je Cortana ikad bila i mogla da bude...
Asus ROG Maximus Z790 Formula
Hladna zimi, hladna leti
Uz Raptor Lake Refresh generaciju Intelovih Core procesora paralelno je „osvežena” i ponuda modela matičnih ploča...
Apple Watch Ultra 2 i Apple Watch Series 9
Ovogodišnji „ vršioci dužnosti”
Oba sata dolaze sa preinstaliranim WatchOS-om 10.x i to je jedna od značajnih novina...
Asus ROG Ally Z1 Extreme
Saveznik je stigao!
Ovo je Windows PC, oličen u formi ručne igračke konzole, što ga već na prvu loptu razlikuje od najvećeg konkurenta, Valveovog Steam Decka...
Estetska vizija Pavela Surovog
Arhetipsko kulturno nasleđe i AI
Kako to izgleda kad AI u svoje ruke uzme neko ko i te kako ume da ga iskoristi kao alatku?
Razvoj traktorskog snopa
Svemirski čistač
Naučnici su na korak od stvaranja tehnologije koja je donedavno bila sastavni deo naučne fantastike...
Samsung Galaxy Tab S9 FE+
Povoljan kvalitet
Uređaj laserski fokusiran na zonu gde se preklapaju vrh srednjeg dela tržišta i početak onog najvišeg...
Borba YouTubea protiv adblockera
Reklamokalipsa YouTubea
Alphabet očekuje da mu se vrati uloženo, što je sasvim normalno, ali sam kvalitet usluge na svim nivoima opada u svim Googleovim proizvodima...
Regulacija kripto-trgovanja
Kripto-tržište u paklenoj kuhinji
Tržište kripto-valuta i srodnih finansijskih instrumenata pretrpelo je još jedan veliki i razočaravajući potres...
Alan Wake II
Ovo je hrabar, na momente lud i superpretenci-ozan, ali nikada dosadan eksperiment kombinovanja naracije i gejmpleja...
The Talos Principle 2
Bolju, impresivniju, zarazniju i produkcijski napucaniju glavolomku u ovome trenutku nećete naći...
Call of Duty: Modern Warfare III
Kampanja je kratka, multiplayer recikliran, a glavna novost je zombi režim DMZ, posuđen iz Warzonea...
© 2023 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama