milanche San Francisco
Član broj: 2447 Poruke: 1200 *.hsd1.ca.comcast.net.
|
Iako ima vec nekih 15 godina od kako se uopste ne bavim FPGA dizajnom, pokusacu da prenesem
neke rezone i iskustva koje sigurno vreme nije pregazilo.
Mikrokontroler ili FPGA ?
U principu, i mikrokontroler i FPGA cip mogu da na svojim izlaznim pinovima proizvedu promene napona
po odredjenom algoritmu, bez obzira da li se radi o prostom logickom ili sekvencijalnom kolu. Medjutim,
postoji nekoliko bitnih razlika:
- za razliku od mikrokontrolera koji je pravljen za izvrsavanje softvera, koji za unutrasnje funkcionisanje
zahteva clock frekvenciju nekoliko puta vecu nego sto je najcesca promena napona na izlaznim pinovima,
FPGA cipovi su programabilne kombinacije hardvera (digitalnih logickih kola), koje u principu rade na
nominalnoj frekvenciji clock-a. Dakle, razresenje uobicajene dileme - sta implementirati u softveru a sta u
hardveru - utice na izbor mikrokontroler ili FGPA.
Dok mikrokontroler moze da sasvim kompetentno programira bilo ko sa dobrim softverskim background-om
talentom i interesovanjem (ljudi sa ETF-a, FON-a, PMF-a, masinci,...), FPGA dizajn zahteva ljude sa mnogo
uzim i specificnijim znanjem digitalnih elektronskih kola (Tesla, ETF,...). Ne znam sta od knjiga postoji sada
na srpskom, ali u moje vreme je udzbenik Spasoja Tesica (Integrisana digitalna elektronika) bio cesto koriscen.
Poznavanje kombinatornih (logicka kola) i sekvencijalnih (brojaci, registri, delitelji) i kombinovanih sklopova (PLL),
predstavlja pocetnu stepenicu za ovladavanjem dizajna na FPGA cipovima.
- gde god postoji algoritam sa prebrojivim kombinacijama ulaznih promenljivih (input vectors) i sa striktno
odredjenim izlazima za te ulaze, FPGA je ocit izbor.
- gde god postoje zahtevi za vecim brojem istih sklopova, FPGA je ocit izbor. Jedan UART ili timer, mozda i
programabilni PLL ima i svaki normalniji mikrokontroler, ali obicno nema vise njih. Ako projekat zahteva vise
njih (3,4,...8....) FPGA je ocit izbor.
Cela prica sa FPGA je uzela maha sredinom devedesetih, kada je bila jedan od faktora zamaha IT sektora.
Mogucnost rapidne promene dizajna digitalnih kola bez obavezne promene dizajna stampane ploce, znacio
je mnogostruko skracenje perioda razvoja hardverskog proizvoda. Mogucnost promene konfiguracije ploce
at run-time (prisutan kod RAM-based FPGA cipova) bio je dodatni plus. Na kraju (ili na pocetku), mogucnost
upotrebe FPGA za verifikaciju dizajna cipova visestruko je skratio broj pokusaja na silicijumu (sto znaci $$$$$$$)
i pozitivno doprineo celoj prici.
Od samih pocetaka istakli su se dva koncepta FPGA - RAM based (lansirao Xilinx) i ROM based (lansirala Altera).
Mislim da su od gomile firmi koje se bave pravljenjem FPGA cipova ove dve jos uvek najistaknutije (mada to
trziste ne pratim gotovo ni malo).
Sto se tice tehnike svakodnevnog rada:
Za Xilinx cipove je postojalo nekoliko podrzanih input metoda (schematic entry iz OrCAD-a, VHDL, Verilog, Abel,
state machine diagram), a u zavrsnim fazama je postojala i mogucnost rucnog rout-ovanja.
Iako su VHDL i Verilog de facto standardni nacini komunikacije u okviru dizajna, ne znam nikoga ko se njima sluzi a
da zapravo nema neko iskustvo u board-level digitalnom dizajnu, sto znaci da u svesti paralelno drzi sematske
dijagrame. Neki konkretni problemi (glitching, meta-stabilna stanja izlaza pri promenama ulaza, open drain izlazi,...itd)
se mnogo bolje shvate iz konkretnog iskustva sa board-level-a, a HDL jezici su samo dobra apstrakcija.
Osim VHDL/Verilog, obicno se u okruzenju chip dizajn kompanija cesto zahteva i poznavanje perl-a, jer je ogromna
gomila skripti za testiranje netliste cipova kreirana u tom jeziku, gde dominira lakocom manipulisanja tekstualnih rezultata.
U principu, gro logickih funkcija se ostvaruje programiranjem tzv CLB-ova ('combinatorial logical block' u Xilinx terminologiji),
a izbor konkretne fizicke pozicije CLB-a se na pocetku dizajna radi automatski. Izlazni pinovi se kontrolisu programiranjem
susednih IOB-ova ('input-output block') gde se moze izabrati smer (ulaz ili izlaz) pina, podesiti logicko invertovanje,
open drain, itd.
Tokom dizajna, u principu, se ne moze lako pristupiti nekoj od tacaka u kolu. Obicno se za to mora dizajn kompajlirati
da na odredjeni izlazni pin istera vezu tako da moze da se nakaci logic analyzer ili osciloskop. Sve drugo se resava
rezonovanjem. Kako iskoriscenost cipa raste, sve je teze i teze, i obicno se dizajn parcijalno testira, sto opet ne mora
da garantuje da ce sve biti kako treba. U nekim situacijama, kasnjenje signala na nekoj od veza u cipu koja nije optimalno
sprovedena moze da znaci 'jovo-nanovo' za ceo dizajn.
|