Avtor: dr. Simon Vavpotič
Microchipov PIC64, s podobno zmogljivostjo kot Raspberry Pi 5, je v primerjavi z enojedrnim PIC32 velik korak v prihodnost. Štiri RISC-V jedra prinašajo za industrijske in časovno kritične aplikacije številne prednosti.
Prehod na 64-bitne mikrokontrolerje PIC64, ki so jih prvič in s tem veliko povečanje zmogljivosti je bil nujen, saj na primer že za zajem videa visoke ločljivosti iz digitalne 4K kamere zahteva hitro shranjevanje velike količine podatkov na pogon SSD, čemu PIC32 večinoma ni kos. K odločitvi za novo 64-bitno arhitekturo je poglavitno prispevala tudi potreba po zmogljivejših komunikacijskih vmesnikih. PIC64-HPSC (high performance space) omogoča uporabo tudi v vesoljskih tehnologijah, katerih tržni dežel se v zadnjih letih močno povečuje.
PIC64 je sistem v enem čipu (SoC), saj združuje vse, razen dinamičnega glavnega pomnilnika in pomnilnika za trajno hrambo, ki ju moramo snovalci krmilnikov samo dodati na tiskano vezje. Kot pomnilnik za operacijski sistem s podatkovno shrambo navadno uporabljamo SD kartico, lahko pa namesto te vgradimo tudi eMMC modul. Zagon je mogoč tudi prek SPI vmesnika iz velikih zaporednih EEPROMov, katerih vsebina se prenese v SDRAM in nato zažene. Pri vseh ostalih PICih, ki niso SoC, ampak mikrokontrolerji, sta statični RAM pomnilnik in EEPROM vgrajena v čip, pri čemer zmogljivejši model PIC32MZ omogočajo tudi nekaj MB zunanjega pomnilnika.
Ta vsebina je samo za naročnike
Družina PIC64 z RISC-V jedri
Sisteme v enem čipu iz družine PIC64 lahko uporabljamo tudi v drugih v računsko zahtevnih sistemih, ki zahtevajo veliko zanesljivost delovanja, ko so: sistemi s strojnim vidom, računalniki za nadzor delovanja v avtomobilih, komunikacijski vmesniki, tehnologija LiDAR, računalniki v letalih z elektronskimi sistemi upravljanja (fly by wire) in sistemi s strojnim učenjem, pri katerih še posebej izstopajo veliki jezikovni modeli in nevronske mreže z globokim učenjem. Nekaj tovrstnih rešitev so že uporabili tudi v vesoljskih odpravah, kakršni sta: Deep impact in Mars Curiosity Rover.
V nasprotju s PIC32, ki temelji na MIPS-ovem procesorskem jedru, je PIC64 zasnovan na jedrih RISC-V, ki imajo prav tako omejen nabor strojnih ukazov in niso mikroprogramirana, kar skupaj s sorazmerno velikimi predpomnilniki prvega in drugega nivoja zagotavlja hitro delovanje.
Čeprav so mnogi pričakovali, da se bodo pri Microchipu namesto tega odločili za arhitekturo ARM64, je k odločitvi za RISC-V arhitekturo gotovo svoje prispeval tudi finančni vidik, saj je RISC-V arhitektura odprtokodna in brezplačna, dovoljene pa so tudi njene prilagoditve. Z njo lahko procesne enote zgradimo tudi v FPGA programljivih poljih logičnih vrat. Sicer je RISC-V arhitektura podobno visoko skalabilna kot ARM64 arhitektura in omogoča gradnjo visoko zmogljivih rešitev za zemeljske in vesoljske aplikacije. Odprtokodnost RISC-V arhitekture omogoča tudi hitrejše odkrivanje napak in morebitnih varnostnih tveganj. Prednost ARM64 po drugi strani je veliko večja pestrost programske opreme in razvojnih orodij.
Posebnost družne PIC64 je možnost asimetričnega multiprocesiranja, saj ima od štirih do osem glavnih procesorskih jeder (U54), obenem pa še nadzorno procesorsko jedro (E51), katerega naloga je zagon in upravljanje delovanja glavnih procesorskih jeder. Slednje lahko razporeja na samostojne naloge, ali pa jih združuje v grupe za simetrično multiprocesiranje, kakršno poznamo pri klasičnih PC-jih. Združevanje omogoča nadzorno procesorsko jedro. Denimo, PIC64GX omogoča poganjanje dveh operacijskih sistemov hkrati: Ubuntu Linux in Zephyr. Če za prvega izberemo simetrično multiprocesiranje na treh glavnih U54 jedrih, lahko preostalo U54 glavno jedro poganja Zephyr, ki je izpeljanka priljubljenega RTOS, ki ga lahko namestimo tudi na PIC32 mikrokontrolerje.
Posebej zanimiv je nabor različnih vmesnikov, med katerimi so: DDR LPDDR za priklop obveznega dinamičnega zunanjega pomnilnika, gigabitni Ethernet, PCIe za zunanje naprave, MIPI CSI/DSI za priklop zunanjega zaslona ali kamere ter HDMI 1.4 za priklop monitorja.
Različice PIC64 so tri: GX, HX in HPSC, od katerih je najzmogljivejša zadnja z 8 procesorskimi jedri.
Nima grafičnega procesorja, samo cevovod!
Ko na hitro pogledamo ploščo PIX64GX Couriosity Kit, se ta morda res zdi nadvse podobna Raspberry Pi 3, kar bi lahko sklepali iz štirih glavnih procesorskih jeder, a ni čisto tako. Raspberry Pi 3 ima vgrajen Broadcomov Video Core IV, ki omogoča prikaz grafike visoke ločljivosti, medtem ko PIC64GX zmore le preprosto prekrivno grafiko, kot je križ v krogu za določanje sredinskega pogleda na sliki iz digitalne kamere visoke ločljivosti ipd.
Digitalno kamero povežemo prek priključka MIPI CS2, od koder video tok potuje čez cevovod do VDMA (video DMA) krmilnika, ki sliko shrani neposredno v SD RAM področje, ki je določeno s posebnim registrom. Nato potuje video tok v krmilnik prikazovalnika, ki je sorazmerno preprosto vezje, katerega edina naloga je ustvariti HDMI signal za prikaz na monitorju.
Edini način za prikaz kompleksne grafike je prek PCIe vodila, če nanj povežemo grafično kartico, vendar bomo v tem primeru za ustrezne gonilnike morali poskrbeti sami, kar pa ni ravno enostavno.
Najcenejši in najenostavnejši
PIC64GX sistemi v enem čipu (SoC) so najenostavnejši, a kljub temu ponudijo obilico funkcionalnosti. Štiri glavna procesorska jedra delujejo s taktom 600 MHz, kar se v primerjavi z x64 in ARM64 arhitekturama ne zdi veliko, a je tako predvsem zato, ker morajo zagotavljati večjo zanesljivost delovanja pri nizki porabi energije, podobno kot mikrokontrolerji. Obenem, je pomembna notranja zgradba procesorja, pa tudi hitrost in velikost predpomnilnikov.
PIC64GX je kljub temu veliko zmogljivejši od 32-bitnih PIC32MZ mikrokontrolerjev, v kar nas prepriča tudi PIC64GX Curiosity Kit, ki stane v ZDA 150 USD. Z 1 GB SD DDR 4 RAM, ležiščem za SD kartico za operacijski sistem, Ethernet vmesnikom, MIPI vmesnikom za digitalno kamero po standardu CSI-2, HDMI 1.4 priključkom za priklop monitorja, priključkom mikroBUS za kartične nadgradnje (klobuke, vendar z drugačnimi priključki kot ji imajo tisti za Raspberry Pi) in dvanajstimi splošno-namenskimi priključki, ki so na voljo uporabniki, ima podobne funkcionalnosti kot Raspberry Pi 3b, vendar je brez grafičnega procesorja, zato ne omogoča le prekrivno grafiko.
Poleg naštetega ima še osem LED-ic, s katerimi si lahko olajšamo razhroščevanje, začetniki pa jih lahko uporabijo tudi za preizkušanje enostavnih primerov. PIC64GX je združljiv tudi s PolarFire FPGA tehnologijami, ki omogočajo gradnjo prototipne logike s pomočjo programiranja logičnih vrat.
Programska oprema
PIC64GX poganja operacijski sistem Ubuntu Linux, za razvoj lastne programske opreme pa lahko uporabimo različna programska orodja, ki jih namestimo na PC z Windows ali Linuxom in ustreznim programom za terminalski dostop in FTP prenos podatkov.
Prenos programom in podatkov lahko izvedemo prek zaporednega vmesnika (UART), ki ga s PC povežemo prek USB-UART vmesnika, kakršen je na primer FTDI USB to UART bridge. Sam za ta namen uporabljam lastni vmesnik, ki sem ga razvil na osnovi PIC32MX250F128B. Prednost zaporednega prenosa podatkov je tudi ta, da ne potrebujemo posebnih gonilnikov, saj so ti že vgrajeni tako v Windows kot Linux. Za grafični dostop lahko uporabimo tudi WinSCP.
Programiranje PIC64GX Couriosity Kita si lahko olajšamo z različnimi programskimi orodji. Denimo, na PC namestimo zastonjski Visual Studio Core in razširitev MPLAB PIC64GX SDK Visual Studio Code extension, kar omogoča programiranje v C++ ter prenos in razhroščevanje programske kode v PIC64GX Couriosity Kitu. Obenem moramo namestiti tudi USB MHCP-Debug Serial Converter gonilnik, ki omogoča poganjanje in razhroščevanje kode iz razvojnega okolja Visual Studio Code.
PIC64HX
Oznaka HX sicer ne pomeni, da je SoC namenjen vesoljskim projektom, oziroma za gradnjo elektronike umetnih satelitov, še vseeno pa je neprimerno zmogljivejši od PIC64GX, le da je brez video cevovoda, ki pa ga pri umetno-inteligenčnih aplikacijah tako in strojnem učenju ali tako navadno ne potrebujemo. Po drugi strani, lahko na osnovi družine PIC64HX sorazmerno enostavno gradimo Ethernetna stikala. Njena prednost je tudi visoka odpornost na odpovedi delovanja, visoka skalabilnost in izjemna prilagodljivost za uporabo pri različnih kompleksnih problemih, kot so aplikacije v vojaški in letalski industriji. Prek vodila PCIe je mogoč tudi priklop dodatnih razširitvenih modulov.
Temu primerna je tudi vrhnja zmogljivost kar osmih procesorskih jeder, ki znaša 26.000 DMIPS pri skalarnih operacijah ter 2 TOPS (2*10^9 operacij na sekundo) in 1 TFLOPS (10^9 operacij s števili v plavajoči vejici na sekundo). Za primerjavo povejmo, da je vrhnja zmogljivost PIC64GX zgolj 5.000 DMIPS.
PIC64HPSC
K vsemu naštetemu pri PIC64HX dodaja še: krmilnik za upravljanje s pomnilnikom (MMU), vektorski cevovod, ki omogoča hitrejše umetni-inteligenčne operacije, podporo za virtualizacijo, hkratno izvajanje istih ukazov v dveh glavnih jedrih z zaklenjenim korakom. Slednje je nujno pri vseh aplikacijah z visoko stopnjo zanesljivosti delovanja, saj kontrolna enota PIC64HPSC po vsakem izvajanju primerja rezultata obeh jeder. Če se razlikujeta, sproži postopek ugotavljanja pravilnosti delovanja obeh jeder. Posebnost PIC64HPSC je tudi možnost uporabe višjih delovnih taktov, vsej do 1 GHz.
Naslednjič
Toliko za uvod. Razvojno ploščo bomo detajlno testirali v eni od naslednjih številk, ko bomo preverili tudi, ali jo lahko vključimo v Home Assistant sistem za nadzor doma.