Radiona ULX3S
ULX3S je odlično STEM učilo za potrebe nastave "programiranja" FPGA bazirano na otvorenoj zajednici i u pogledu hardvera i softvera. I najmanji model sa Lattice LFE5U-12F - ECP5 FPGA serije dovoljan je za gotovo sve ponuđene projekte.
Pros
- Lepa količina interfejsa na razvojnoj ploči
- Prvi koraci kroz lako ponovljiv Blinky primer su odličan uvod u FPGA svet
- Popularan Lattice LFE5U serije ECP5 u četiri varijante: 12F, 25F, 45F i 85F
- Oblik ploče prilagođen izradi sopsvene ručne retro-gameing konzole
Cons
- Nedostaje adekvatan on-line kurs i dobro oformljen Wiki
- Uputstvo za FPGArduino nismo uspeli da ispratimo
Veoma su retke, ako ih uopšte i ima, recenzije u čije pisanje ulazimo nakon više od dve godine od prijema jedinice. Priznajem da sam bar deset puta u tom periodu pitao sebe: „A šta ti je uopšte ovo trebalo?“. Ovo pitanje i inače sebi postavim, ali nikada do sada ga nisam postavio zbog sebe, a ne zbog uređaja. Naime, da bi se napisala recenzija, bar je takvo pravilo u našoj redakciji, mora se provesti dovoljno vremena u radu sa jedinicom da bi mišljenje bilo verodostojno, a ne kombinovano prepisivanje stavki iz korisničkog uputstva i online specifikacija. Iz iskustva znamo da je moguće za mesec dana istražiti novi SBC na nekom Rockchip-u koji je derivat RK35xx serije, budući da smo mu do tog trenutka bar deset „rođaka“ upoznali. Ali, kada se susretnete sa novim svetom kao što je ovaj FPGA koji je zanosan i nepoznati toliko da u isto vreme i privlači i zastrašuje, shvatite da ne pišete samo recenziju o uređaju, već i da su vaše sposobnosti na testu. A one su na testu, jer u ovom slučaju nemate neki od „CortexARM“-olikih SoC-eva na SBC-olikoj ploči. Ovde, kod ULX3S imate nestandardnu ploču sa „metamorfozirajućim silicijumom“ Lattice LFE5U-12F – ECP5 FPGA serije sa 12.000 logičkih ćelija.
Hardver
ULX3S je kreiran kao učilo za potrebe nastave „programiranja“ FPGA. Reč „programiranje“ je pod navodnicima kako se ne bi upuštali u večnu prepirku oko termina i pitanja da li se FPGA programira ili dizajnira ili već nešto treće… Na projektu njenog razvoja još od 2016. godine zajedno rade Radiona.org / Zagreb Makerspace i FER – Faculty of Electrical Engineering and Computing – University of Zagreb i ona je danas pored svoje STEM namena i jedna od najuvaženijih FPGA platformi među mejkerima i entuzijastima, ali i profesionalcima.
U njenoj osnovi je čip iz Lattice Semiconductor ECP5 serije i proizvodi se u četiri verzije u zavisnosti od njega: ECP5 12F, ECP5 25F, ECP5 45F i ECP5 85F koji se u suštini razlikuju po broju LookUp tabela – ćelija kojih može biti: 12.000, 25.000, 45.000 ili 85.000 respektivno. Razlikuju se i u nekim fizičkim parametrima signala, odnosno hardverskim rešenjima i za to treba pogledati zvanično uputstvo prilikom izbora modela. Ne znači da je „veći“ čip ujedno i bolji za aplikaciju u kojoj želite da ga koristite.
Slika ispod iznedrila nam je priliku za jedno skretanje sa teme – pogledajte lemne rupe ispod čipa koje su označene sa: BL, CS, DC, RES, SDA, SCL, VCC i GND. Po njima se vidi da je u pitanju SPI komunikacija, a raspored nije slučajan – odgovara rasporedu nožica na poznatom 0,96″ kolor displeju SSD1331. Pozicioniran tu gde jeste, kao da objašnjava da je maksimalno prilagođen za ručnu retro-gejming konzolu.

ULX3S pripada Open Source hardveru i na sajtu se mogu naći svi fajlovi potrebni da sami izradite svoju jedinicu. Naravno, za one kojima to ne predstavlja zadovoljstvo, a pisac ovih redova spada među njih, ULX3S se može kupiti sastavljen po ceni od $140 do $220 u zavisnosti od ugrađenog ECP5-a.
Što se ugrađene memorije tiče, na ploči je Winbond W982G6KH-6 čip od 32 MB SDRAM-a koji radi na 166 MHz. Sa druge strane, na poleđini ploče je 16 MB Quad-SPI Flash-a. Ono što može biti čudno korisnicima naviknutim na SBC-ove, isprogramiran FPGA se nakon prestanka napajanja vraća u svoje prvobitno stanje, pa je nakon svakog uključivanja potrebno ponovo „formirati“ FPGA – dakle čip nema u tom smislu memoriju.

Odlično je što je na ploči realizovano i ležište za SD karticu, doduše u pitanju je malo neobičan preklopni model. Toliko neobičan da su i sami postavili kratak video o tome kako se kartica ubacuje i vadi iz njega. Desno od njega, na donjoj slici vidimo i red od osam (od D0 do D7) programabilnih RGB dioda. Dva dugmeta, označena sa B1 i B2, takođe vidljivi na slici su programabilna takođe i locirana su tu da bi u retro-gejming aplikacijama mogla zgodno da služe kao „fire“ dugmad.

A kada smo kod dugmadi, tu su i četiri dodatna, takođe programabilna, raspoređena na karakterističan način kao na konzolama – pogodna za: levo-desno-gore-dole komande.
Pažljiv posmatrač primetiće i Maxim MAX11125A 8-kanalni SAR, 12-bitni 1 MSamples/s ADC konvertor koji se u praksi odlično pokazao za akviziciju analognih signala u prenosnim low-power uređajima.

Za bežičnu povezivost, pa recimo i za daljinsko ažuriranje firmvera, zgodan je ugrađeni ESP32-WROVER-E. To je danas vremešni, ali provereno funkcionalan 2.4 GHz Wi-Fi i Bluetooth 4.2 BLE modul sa integrisanom antenom koji se jedno vreme primarno koristio kao rešenje za bežične komunikacije u mejkerskim projektima i displejima. Danas je sam Espressif otišao dalje sa manjim i tehnološki naprednijim modulima u svojim rešenjima za embedovane bežične komunikacije. Pazite na antenu, tako je postavljena da viri van gabarita ploče, a kako je tanana, vrlo ju je lako odvaliti.
Zanimljivost realizacije naše ploče je postojanje FTDI FT231XQ-R USB 2.0 to UART kontrolera, koji je različit od UART-to-USB kola na originalnoj slici ULX3S-a na sajtu. Ne znamo koji je bio originalni, ali ovaj može obezbediti RS232, RS422 i RS485 interfejse, što bi bilo interesantno za industrijske aplikacije.

Na poleđini je i ležište za CR1225 bateriju ugrađenog MCP7940N RTC-a. Sada je i trenutak da pomenemo i 56 pinova (28 „PMOD-friendly“ differencijalnih parova) za mejkersku upotrebu sa signalima. Pinovi su svi 3.3 V, a pinovi od 0 do 13 mogu da se prebace i u 2.5 V mod. Od napojnih kontakata u okviru ova dva niza rupa nalaze se i oni sa 5 VDC, 3.3 VDC, ali i GND pinovi.

Prednja ili gornja strana ove 94 × 51 mm ploče ima još neke zanimljivosti. Tu je stereo audio out i mic in kao 3.5 mm konektor, koji može da se koristi i kao kompozitni video izlaz. Pored je HDMI izlaz. Najzad tu su i dva USB konektora, sa time da je US1 povezan preko gore pomenutog FT231XQ-R i koristi se za flešovanje ploče.

Softver
Da bi olakšali prve korake korisnika koji se prvi put susreću sa FPGA programiranjem, a naravno žele da što pre vide neki rezultat, ljudi iz Radione su smislili „prečicu“. Naime, online je dat veći broj unapred završenih projekata i sve što je potrebno uraditi je da se preuzme .bit fajl i „flešuje“ na FPGA. Za to je potreban fujprog program za PC koji će isprogramirati FPGA. ULX3S je potrebno prethodno povezati USB kablom sa PC računarom na kome se pokreće pomenuti fujprog. Sam program se može preuzeti sa GitHub-a. U problemu mogu biti samo vlasnici Linux ARM64 računara, jer za njih nema iskompajlirane verzije. No, rešenje je jednostavno, budući da se na istom GitHub-u može naći izvorni kod, a uputstvo za kompajliranje je dato.

Prvi test, kao i obično je blinkanje dioda, pa u direktorijum projekta pronalazimo blink.bit i u terminalu startujemo:
fujprog blink.bit
Šarene diode na našem ULX3S-u će početi da žmirkaju.
radxa@RadxaOrionO6:~$ cd Test
radxa@RadxaOrionO6:~/Test$ cd blink
radxa@RadxaOrionO6:~/Test/blink$ fujprog blink_12f.bit
ULX2S / ULX3S JTAG programmer v4.8 (git cc3ea93 built Mar 29 2026 23:50:29)
Copyright (C) Marko Zec, EMARD, gojimmypi, kost and contributors
Using USB cable: ULX3S FPGA 12K v3.0.3
Programming: 100%
Completed in 8.11 seconds.
radxa@RadxaOrionO6:~/Test/blink$
Sledeći korak je logučan – samostalni blinky projekat. Za to je potrebno formirati niz softverskih alata (toolchain) – pre svega yosys i nextpnr na vašem razvojnom PC računaru. Mi smo za ovu priliku odabrali Radxa Orion O6 sa 16 GB RAM-a, što bi trebalo da je korektan hardver. Uputstvo je dato za sve platforme, a mi biramo ARM64. Sada se možemo i poigrati modifikovanjem postojećeg blinky.py.

Za kompajliranje možemo izabrati dva opensource paketa: OSS ECP5 tool koji se sastoji od ECP5 kompajlera, fujprog i openFPGALoader-a i drugog OpenCrab ECP5 tool-a koga čine ECP5 kompajler i openFPGALoader. Kako OSS postoji za ARM64, biramo njega.
Najzad instaliramo Verilator (sudo apt-get install verilator) i pozicioniramo se u direktorijum blinky. Pre nastavka u Makefile-u uskladimo broj ćelija sa našim modelom na 12F i trima komandama kompajliramo i flešujemo kod na FPGA.
make clean
make ulx3s.bit
make prog
Ovime smo i prvi put i kompajlirali kod. Ostaje nam sada samo još jedan korak do kreacije nekog novog potpuno našeg projekta, a to je da definišemo kolo u Verilogu. Ako se kećemo u besplatnom softveru, kombinacija VS Code i Verilog-HDL/SystemVerilog/Bluespec SystemVerilog ekstenzije pripremiće okruženje za prve samostalne korake u FPGA svetu čuda. Narednih ima puno i ko je zainteresovan za ovaj pristup hardveru mora računati da posveti adekvatnu količinu vremena za učenje.

F32C RISC-V / MIPS ISA retargetable CPU jezgro
Odvojili smo ovaj „projekat“ kao nešto posebno. Naime, posetite f32c GitHub. To je legendarni Verilog projekat izrade retargetable, scalar, pipelined 32-bitnog procesorskog jezgra. Urađeno je za sve današnje bitnije FPGA čipove, Alterine, Lattice i Xilinx, pa i za naš Lattice ECP5. Jezgro je sposobno da izvršava RISC-V i MIPS setove instrukcija pa na ovaj način dobijate jednojezgarni procesor sa 16 kB instrukcijskog i 8 kB data keša. Čip na sintetičkim celobrojnim (INT) benčmarcima postiže 3.3 CoreMark/MHz i 1.46 DMIPS/MHz, što je jako dobro i u klasi Raspberry Pi 3. Za pokretni zarez rezulati pokazuju 3 MFLOPs/MHz.
Pretvarajući naš Lattice u ovakav „procesor“ omogućili bismo da tako isprogramiran FPGA posmatramo kao pravi procesor, što nam opet dozvoljava, uz adekvatnu podršku, da ga programiramo u Arduino IDE. Prateći zvanično uputstvo kreću i naše muke. Prvo u naš Arduino IDE instaliramo definicije za ULX3S ploču. Radimo na Radxa Orion O6 sa ARM64 arhitekturom. Ranije smo već iskompajlirali ujprog, a i da nismo ovde vidimo da je na lokaciji f32c tools-a moguće preuzeti sve fajlove potrebne za to.
Sledeći korak u uputstvu za podešavanje je preuzimanje toolchain-a, a on nažalost ne postoji za ARM64 arhitekturu. Da bi ipak nastavili, prešli smo na Radxa X4, na kome je Intel N100 i novi Ubuntu 25.10 sa KDE-om. Vrlo lepa platforma za mnoge mejkerske projekte – pa je inače i preporučujemo. No, ovde dolazimo do novih problema sa ručnim kopiranjem određenih fajlova i podešavanjima pravima pristupa direktorijuma vezanih za ArduinoIDE instalaciju na ovom računaru, kao i do dupliranja Arduino-master i f32c fajlova, najzad do nedostataka „serial“ biblioteke i u konačnici se to sve zajedno završilo neslavno. Naš je stav, ako mi nismo uspeli prateći uputstva na zvaničnoj prezentaciji, verovatno neće ni naši čitaoci. Vreme kada je mejkerski svet počivao na ideji iz „Autostoperskog vodiča kroz galaksiju“ u kome se uspešna firma bavi prodajom fabrički nefunkcionalnih naprava, kako bi ih kupovali oni koji traže osećaj posebnosti iz trenutka kada bi ga te uređaje učinili funkcionalnim, u današnjem brzom svetu naviklom na „gotova idiot-proof rešenja“ je prošlo.
Zaključak
Radiona ULX3S je divan FPGA razvojni sistem, STEM učilo, pa i DIY retro-gaming konzola bazirana na odličnom Lattice LFE5U-12F čip ECP5 FPGA serije. Model sa najmanje ćelija, ali sasvim dovoljno za veoma složene projekte, a kamoli za početničko upoznavanje i prve FPGA projekte sa 12.000 ćelija može se nabaviti za oko 120 USD.

Ovaj izuzetan hardver i pored mnogih online materijala razvojnog tima i iz nezavisnih izvora, prosto vapi za dobrim online kursem kroz, recimo desetak, lekcija i dobrim pratećim Wiki-jem sa primerima koji su detaljno analizirani. Kao izuzetan primer podrške sopstvenom hardveru treba pogledati Nordic Semiconductor i njihovo sadašnje angažovanje u tom smeru, koja je od prepoznatljivo lošeg pre ni samo godinu dana, danas uzdignuto na najviši mogući nivo. Tek tada možemo da govorimo o pravoj open-hardver i open-softver demokratizaciji tehnologije, kada korisnik lako bude uvučen u njen magični svet. I ovo je jedina sugestija timu koji stoji iza ovog naročitog hardvera.
I da odgovorimo na prvo pitanje u ovom tekstu: „Ne da mi je trebalo, već mi je ultimativno drago što sam sa Radiona ULX3S, gotovo 30 godina nakon VHDL kursa na mom fakultetu (sa koga sam bežao u KST) opet zaronio u FPGA svet. I oprostite mi na ljutnji što online dokumentacija nije ispratila svojim kvalitetom hardver.„

