FPGA/CPLD atd.
Jan Waclawek
wek@evona.sk
Čtvrtek Září 8 09:42:14 CEST 2005
petrtoshw wrote:
> Bohuzel se mi z toho udelal v hlave jeste vetsi zmatek nez pred tim. Tak
> hlavne jsem nepochopil (a kupe lidi tady to asi prijde jako vtip) jaky je
> rozdil mezi CPLD a FPGA.
Nic nie je lepsie alebo horsie, to by sa to nerobilo aj jedno aj druhe.
Jedna sa skor o to, ze na niektore aplikacie je vhodnejsie jedno a na
ine zasadruhe. Su rozdiely aj v cene, dostupnosti, vyvojovych
prostriedkoch a ako pisete aj v "instant on", ale to sa pochopitelne
vyrobcovia snazia co najviac potriet, takze su k dispozicii aj FPGA co
maju bud zaintegrovanu konfiguracnu pamat, alebo su priamo zalozene na
technologii s "trvacnou pametou" (ako sa docerta preklada spravne
nonvolatile memory?)
Najlepsie je nazerat na ten rozdiel z historickeho hladiska.
CPLD: na zaciatku bola potreba robit k procesorom adresne dekodery, co
vedie ku kombinacnej logike s vacsim mnozstvom vstupov. Ak sa to riesi
klasickymi hradlami typu 74xx, vedie to k velkemu mnozstvu puzdier a
znacnym oneskoreniam. Pritom sa stale dokola opakuje urcity vzor:
niektore vstupy (adresne bity) sa zneguju, potom sa urobi rozsiahly AND,
a niekolko takychto ANDov sa zluci pomocou ORu do vysledneho signalu
(napr. chip select). Tento problem sa riesil pomocou bipolarnych
programovatelnych pamati (PROM), je to vsak neefektivne (=drahe)
vyuzitie pamate, a tak jeden z vyrobcov PROM (MMI) zacal robit bipolarnu
pamat priamo v tvare matice AND-OR. Prepalenim prepojky sa vyberie,
ktory zo vsupov a ci invertovany alebo nie je zapojeny do jedneho z
mnohych ANDov, a ANDy su potom zdruzene do niekolkych ORov vystupy
ktorych su priamo vystupmi obvodu. Vznikli obvody PAL (programmable
array logic). Tato struktura sa neskor vylepsila pridanim roznych
doplnkov, napr. zavedenim spatnej vazby (vystupy su privedene ako vstupy
do matice), zavedenim volitelneho invertora na vystupe, zavedenim
registrov na vystupoch (t.j. prvok sekvencnej logiky; inak je to vsetko
kombinacna logika), zavedenim moznosti trojstavovat vystup. Viedlo to k
velkemu sortimentu PALov, navyse este roznej hustoty a poctu pinov,
navyse to vsetko v jedenkrat programovatelnej technologii. Po vzniku
EEPROM firma Lattice vzala vsetky PALy a zhrnula ich vlastnosti do
jednotnej struktury (GAL), kde za ORmi nasleduje tzv. makrocela s
programovatelnou vlastnostou (s/bez registra, s/bez inverzie, s/bez
trojstavovania); vznikli aj GALy s "buried (zvonka nepristupnymi)
makrocelami (kvoli moznosti pouzit o nieco rozsiahlejsiu sekvencnu
logiku). Dalsiemu rastu hustoty branilo najma to, ze pri zachovani
kompletnej AND/OR matice rastie hustota s poctom vstupov kvadraticky
alebo mozno aj rychlejsie. Nasledujucim krokom teda bolo urobit prvok,
kde je zintegrovanych viacero mensich GAL struktur, spojenych pomerne
rafinovanym no nie kompletnym prepojovacim polom, s niekolkymi signalmi
distribuovanymi po celom cipe (zvacsa hodiny) (bohuzial neviem kto tento
krok urobil ako prvy). To su vlastne uz CPLD.
FPGA vznikli skor z pohladu navrhara IO (CPLD skor z pohladu systemoveho
navrhara, t.j. uzivatela IO). Pri navrhu IO sa pre zjednodusenie procesu
navrhu zacali pouzivat tzv. standardne bunky, sada pomerne malych
struktur zahrnujucich napr. jeden klopny obvod, alebo jedno kombinacne
hradlo, ktore mali vopred dobre definovane vlastnosti; a cely IO sa
navrhoval z takychto "predpripravenych" celkov. Ked vznikol vacsi dopyt
po zakaznickych IO v mensom nez masovom mnozstve, hladala sa lacnejsia
alternativa k plne zakaznickemu navrhu, a vysla z myslienky mat
pripraveny vacsi cip s uz hotovymi standardnymi bunkami v nejakom
rozumnom mixe, a zakaznicky navrh by len tieto poprepajal do pozadovanej
funkcie. Toto sa nazyva Gate Array (hradlove pole). Odtialto bol uz len
krok k myslienke realizovat jednotlive bunky a ich prepojenie
strukturami podobnymi bunkam statickych RAM pamati, cim vznikli FPGA.
Z takehoto pohladu vyplynu aj tie rozdiely: CPLD su podobne ako PAL/GAL
vhodne pre rozsiahlu kombinacnu logiku (obrovske AND/OR polia), kym maju
dost obmedzene moznosti co sa tyka sekvencnej logiky (kazda makrocela
obsahuje len 1 klopny obvod a makrociel je len niekolko desiatok); tiez
ich zvacsovanim rastie ich hustota (=cena) rychlejsie nez linearne
(neumerne rastu prepojovacie struktury) (t.j. sa cenovo oplati pouzit
2ks "polovicnych" CPLD nez jeden velky - samozrejme sa vsak tak nemusi
navrh dat urobit). FPGA znamena obrovsky pocet malych buniek
"rozsypanych" po velkej ploche cipu. Su viac vhodne pre sekvencnu
logiku, ale je takmer absolutnou nevyhnutnostou synchronny navrh kvoli
tazko zvladnutelnym oneskoreniam medzi bunkami. A zvacsovat FPGA takmer
vobec nie je problem.
Fuj to som sa rozpisal, co?
wek
Další informace o konferenci Hw-list