Razlika između CPLD/FPGA i MCU arhitekture kroz jednostavan primer
UVOD
Razlika između CPLD/FPGA čipova i mikrokontrolera (MCU) leži
u brzini izvršavanja, a to ću vam objasniti na jednom veoma jednostavnom
primeru.
Zamislite malog robota koji sa prednje strane šasije ima
senzor za detekciju prepreka. Princip rada je sledeći: infracrveni senzor šalje
podatke o prepreci ispred sebe. U zavisnosti od udaljenosti predmeta,
jednobitni analogno-digitalni konvertor (odnosno običan komparator sa
razdelnikom napona) šalje jedan bit podataka na prekidni ulaz ulaznog sistema
koji kontroliše robota.
• Logička nula (0) na izlazu komparatora
znači da je prepreka detektovana i da vozilo mora odmah da se zaustavi.
•
Logička jedinica (1) znači da je put čist i da vozilo treba da
nastavi kretanje.
Ovaj sistem možemo implementirati na dva načina: pomoću CPLD
čipa ili pomoću mikrokontrolera (MCU). Razlika u radu je drastična.
Sistem implementiran pomoću CPLD čipa
VHDL je više platforma za opisivanje nego klasičan
programski jezik. On se fundamentalno razlikuje od jezika kao što su zborni
jezik (Assembly) ili C/C++, jer VHDL opisuje fizičku elektroniku koju gradite
od digitalnih logičkih kola (I, ILI, NI, NILI itd.).
Za naš primer možemo uzeti jedno "I" (AND) logičko kolo sa dva ulaza:
1. Prvi ulaz povezujemo na izlaz
našeg jednobitnog komparatora (senzora).
2. Drugi ulaz trajno povezujemo na
logičku jedinicu, odnosno VCC.
Ako senzor detektuje prepreku, na njegovom izlazu se
pojavljuje nula. To znači da se na ulazu našeg "I" kola pojavljuje
nula, pa će i izlaz kola postati nula (jer je 1 AND 0 = 0). Ta nula se
prosleđuje drajveru motora kao signal za gašenje.
Sistem koji ovde opisujemo VHDL kodom je, dakle, jedno
obično logičko "I" kolo sa dva ulaza i jednim izlazom – i ništa više
od toga. Ovaj uprošćeni primer služi da slikovito prikaže samu suštinu
hardverskog pristupa.
VHDL Kod (robot_stop.vhd)
|
library IEEE; |
Kako ovaj kod zapravo funkcioniše?
Nema čekanja i takta:
Ovde ne postoji sat (takt) niti procesor koji liniju po liniju izvršava
kod. Čim se stanje na pinu senzor promeni, izlaz motor se menja trenutno,
brzinom svetlosti, kroz čist fizički prolaz signala kroz tranzistore.
Čist hardver, a ne
softver: Ovaj VHDL kod se unutar CPLD čipa doslovno "preslika" u
fizičke žice i jedno jedino logičko kolo unutar silicijuma.
Sistem implementiran pomoću mikrokontrolera (MCU)
Kod mikrokontrolera je princip potpuno drugačiji jer imamo
softver pisan u C++ jeziku. Glavni program (rutina) se neprekidno izvršava u
petlji na mikroprocesoru, a pored nje imamo i prekidne rutine.
Kada senzor detektuje prepreku, on šalje električni signal
prekidnom kontroleru koji je integrisan unutar MCU-a. Taj signal privremeno
zaustavlja glavni program i pokreće ISR (Interrupt Service Routine) prekidnu
rutinu. Zadatak ove rutine je da softverski pošalje signal zaustavljanja
drajveru DC motora.
U čemu je glavna razlika?
Razlika je ogromna. Kod CPLD primera, naš kod je opisao
logičko kolo koje se fizički hardverski realizovalo unutar čipa. To je
ekvivalentno tome da smo uzeli namensko integrisano kolo (poput starog logičkog
čipa CD4081) i zalemili ga direktno na štampanu ploču (PCB).
Put signala kod
CPLD-a je direktan:
Senzor ➡️ Logičko
"I" kolo ➡️ Drajver motora ➡️ Motor
Put signala kod
mikrokontrolera uključuje softversku obradu:
Senzor ➡️ MCU
(Hardverski prekid ➡️ Pauziranje glavnog programa ➡️ Izvršavanje ISR koda) ➡️
Drajver motora ➡️ Motor
|
Zaključak: VHDL
(odnosno CPLD/FPGA) je u ovakvim zadacima dramatično brži. Ovde ne koristimo
procesor koji mora da troši taktove kako bi pročitao i izvršio softverske
naredbe, već opisujemo namenski hardver koji se direktno preslikava u
digitalnu elektroniku. |
Open Source & Podela znanja
Ovaj članak, prateće slike i PDF dokumenti su licencirani
pod Creative Commons Attribution 4.0 International (CC BY 4.0) licencom.
Slobodno možete deliti, kopirati i prerađivati materijal u bilo koje svrhe,
uključujući i komercijalne, pod uslovom da jasno navedete izvor:
zilsel-invent.com.
Comments
Post a Comment