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