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;
use IEEE.STD_LOGIC_1164.ALL;

-- Definišemo ulaze i izlaze (interfejs)
entity robot_stop is
   Port ( senzor : in  STD_LOGIC;  -- Ulaz sa komparatora (0 = prepreka, 1 = slobodno)
          vcc    : in  STD_LOGIC;  -- Logička jedinica (stalno 1)
          motor  : out STD_LOGIC); -- Izlaz ka drajveru (0 = stop, 1 = kreni)
end robot_stop;

-- Definišemo kako sistem radi (logiku)
architecture Behavioral of robot_stop is
begin
    -- Najprostije logičko I (AND) kolo
    motor <= senzor and vcc;
end Behavioral;

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.

Ukoliko je uz ovaj članak priložen izvorni kod, on je licenciran pod MIT licencom. Kompletan pregled našeg višestrukog sistema licenciranja i preuzimanje LICENSE datoteka možete pronaći na našoj stranici: zilsel-invent.com/license-new.xhtml.

Autor: Vladimir Savić / Gemini AI

Comments

Popular posts from this blog

Fake VC830L digital multimeter

Electrolytic capacitors and design rules

How to design LM324 Astable Multivibrator