. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
CPLD a FPGA 1.díl - představení obvodů
16. července 2008 | Pandatron | CPLD a FPGA 1.díl - představení obvodů | Komentářů: 5  

CPLD a FPGA 1.díl - popis obvodů

Úvodní díl miniseriálnu o programovatelných hradlových polech. Po vysvětlení základních termínů následuje představení a základní popis programovatelných logických obvodů SPLD, CPLD a FPGA.

Tímto prvním dílem začíná miniseriál o programovatelných číslicových obvodech. Nejprve si popíšeme co to PLD obvody vlastně jsou, co umožňují a jak se dělí. V následujícím díle si vybereme jejich prvního zástupce a zapojíme ho na malé zkušební destičce. Následovat budou díly popisující krok za krokem práci s těmito obvody a jejich návrh, simulaci a programování. Celý seriál tedy bude směřovat spíše k praktickým ukázkám a rychlému proniknutí do problematiky těchto obvodů. Ještě co se typu obvodů týče, budu se zaměřovat na obvody firmy Xilinx, se kterými mám sám dobré zkušenosti.

Na závěr úvodu bych rád ještě dodal, že ve spojení s těmito obvody nebudu mluvit o programování nýbrž o konfigurování. Nejedná se totiž o psaní strojového kódu, ale o tvorbu vnitřního propojení (návrhu) součástky.

Vyrob si svůj integrovaný obvod
Číslicové programovatelné obvody se souhrně nazývají PLD - Programmable Logic Device. Jde o obvody u kterých si můžete naprogramovat jejich obsah a jejich vnitřní zapojení. Slovo obsah není právě nejlepší, co je v nich obsaženo určuje samozřejmě jejich výrobce, avšak jak to vše bude propojené záleží jen na nás. V každém případě jde však o obvody číslicové bez analogových vstupů a výstupů.

Takovým nejmenším stavebním prvkem těchto a logických obvodů vůbec je dvouvstupové hradlo NAND. Ze dvou takových hradel je totiž možné vytvořit například klopný obvod, z desítek binární čítač a z tisíců pak i celý procesor. Počet hradel je u obvodů PLD vždy uveden, avšak jde o poměrně zavádějící informaci. Řada hradel je totiž použita na pomocné a systémové funkce, takže pro rozhodování o velikosti obvodu je lepší zaměřit se na údaj o počtu makrobuněk (macrocells).


Obr. 1: Základní rozdělení obvodů Xilinx [1]

Makrobuňka je vždy jeden paměťový člen, tedy klopný obvody typu D, doplněný o řadu pomocných hradel. Podoba makrobuňky se v každém obvodu liší, ta z nejjednodušších obvodů - z obvodu PAL je na následujícím obrázku.


Obr. 2: Typická struktura makrobuňky [2]

Obvody CLPD (viz dále) mají makrobuňky složitější a u obvodů FPGA se již mluví spíše o logických blocích združujících i řadu dalších funkcí.

Pro a proti
Jelikož se jedná o velice rychlé součástky schopné pracovat na frekvencích stovek MHz až jednotek GHz, je jejich použití na místě především v aplikacích vyžadujících rychlou reakci či zpracování rychlích signálů (například video signálu). Druhou výhodou nutnou k uveřejnění hned v úvodu je tzv. pinová rovnocenost. Tedy až na pár speciálních pinů je totiž možné si vždy určit který pin chceme použít na kterou funkci (signál) a tím si podstatně usnadnit především návrh desky s plošnými spoji.

Jako jistá nevýhoda by se u složitějších PLD obvodů dala uvést malá velikost pouzdra a přitom velký počet pinů, tedy kombinace ne příliš vhodná pro amatérské použití. Dále pak absence analogových prvků (například DAC), větší množství napájecích napětí (navíc s přesně danou sekvencí a sklonem jejich náběhu) a často i potřeba externí Flash paměti pro vlastní konfiguraci. Větší složitost návrhu oproti programování procesorů by se dala uvést také jako jistá nevýhoda, avšak to je samozřejmě jen věcí zvyku.

Základní typy
PLD obvody bych, alespoň pro potřeby tohoto seriálu, rozdělil do tří základních skupin:

SPLD
Simple Programmable Logic Device, neboli jednoduché programovatelné obvody PAL, GAL, PLA a podobné.
Jde o zastaralé obvody, které umožňují naprogramovat pouze jednoduché logické funkce. Obvody mají předem definované vstupní a výstupní piny a uživatel jen konfiguruje vlastní logickou funkci pro každý jednotlivý výstup zvlášť (na každém výstupu je totiž umístěna jedna makrobuňka). Základem logických funkcí těchto obvodů jsou poté kombinační logické funkce ve tvaru součtu součinů, podobně jako u pamětí PROM.

Nejlépe funkci těchto obvodů objasní následující obrázek:


Obr. 3: Základní princip obvodů řady PAL

Jde o zobrazení základního principu obvodů PAL. Vlevo nahoře jsou vstupy obvodu. Jejich invertovaná a neinvertovaná hodnota je přivedena na součinovou matici AND. Vodorovné čáry protínající tuto matici reprezentují vždy jedno součinové hradlo. Každé takové součinové hradlo obsahuje několik vstupů a tím je možné na každé takové hradlo připojit více vstupních signálů (ty černé puntíky). Výstupy těchto hradel se spojují v součtovém hradle OR a přes případnou další logiku procházejí až na výstupní pin. Zároveň se tyto signály často vracejí i zpět do matice, takže je možné jejich stav využít i u ostatních částí obvodu.
Na každém výstupním pinu je navíc umístěna jedna (jednobitová) makrobuňka.

Jejich největší zástupce je obvod PAL22V10, který obsahuje 10 výstupů a tedy 10 makrobuněk. Což mimojiné znamená, že z takového obvodu bylo možné vytvořit maximálně desetibitový binární čítač, který již však nemohl vykonávat nic dalšího.

CPLD
Předchozí obvody se staly základem obvodu CPLD - Complex Programmable Logic Device. Na následujícím obrázku je znázorněna typická struktura těchto obvodů:


Obr. 4: Typická struktura obvodu CPLD

Jak je vidět, obvody CPLD obsahují řadu obvodů PAL a samozřejmě další nutné prostředky na jejich propojení. Tím je u nich dosaženo mnohem větší volnosti a co se makrobuněk týče, ty v současnosti prodávané od Xilinx jich obsahují 32 - 512 (tím největším je CoolRunner II).
Až na pár speciálních pinů mohou být všechny piny konfigurovány jako vstupní, výstupní, nebo bi-direction. Speciální piny jsou (stejně tak i v následujících obvodech FPGA) například piny pro připojení hodinových signálů, ale o těch až později.
Většina obvodů CPLD obsahuje interní paměť eeprom pro trvalé uložení konfigurace v obvodu.

Samozřejmě i zde platí jistá funkční omezení a CPLD obvody se hodí pouze na jednodušší aplikace. I tak je však možné tvořit s těmito obvody i poměrně velké aplikace. Příkladem by tomu mohla být například barevná grafická karta pana Sedláčka, postavená na obvodu XC9572XL se 72 makrobuňkami (odkaz je uveden na konci článku). Zde (samozřejmě s laskavým svolením autora) uvádím zmenšený obrázek vnitřního zapojení obvodu:


Obr. 5: Zmenšený obrázek vnitřního propojení obvodu CPLD v grafické kartě

FPGA
Obvody FPGA - Field Programmable Gate Array jsou nejsložitějšími, zároveň však také nejobecnějšími PLD obvody. Místo klasických makrobuněk jsou složeny z tzv. logických bloků a obsahují až miliony ekvivalentních hradel (typické dvouvstupové hradlo NAND).
Na následujícím obrázku je znázorněna typická struktura obvodu FPGA.


Obr. 6: Typická struktura obvodu FPGA

Logic Cell představují vlastní programovatelné logické bloky navzájem propojitelné globální propojovací maticí. Některé signály sousedících bloků je navíc často možné propojit přímo a bez použítí globální propojovací matice. Takové spoje mají mnohem menší zpoždění a umožňují realizovat například rychlé obvody šíření přenosu, čož je nezbytné například pro čítačky a násobičky. Dále FPGA obvody obsahují samozřejmě vstupně-výstupní bloky a často i řadu dalších speciálních bloků. Například to jsou hardwarové násobičky, dualportové paměti RAM, PLL a DLL obvody a další.

Obvody FPGA obsahují pro svou konfiguraci pouze integrovanou paměť RAM. Je tedy nutné je po každém zapnutí znovu nakonfigurovat. To si však obvody dokáží provést i sami z externí eeprom paměti, kterou vždy po zapnutí automaticky přečtou.

Závěr
Tolik tedy k úvodu a základnímu představení PLD obvodů. Podrobnější popis bude následovat vždy při použití té které vlastnosti či funkce. V následující kapitole se již podíváme na jednoho ze zástupců CPLD obvodů, představíme si ho a zapojíme na malé destičce.

Případné dotazy pište do komentářů pod článek a já se na ně pokusím případně reagovat i ve článcích.

Použitá literatura:
[1]
Programmable Logic Design Quick Start Handbook
[2]
Programovatelné Logické Obvody, Ing. Martin Poupa, Ph.D.

Odkazy & Download:
Domácí stránka Xilinx
Grafická karta pana Sedláčka







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk
Příbuzné články:
CPLD a FPGA 1.díl - představení obvodů
CPLD a FPGA 2.díl – XC9572 a vývojová deska
CPLD a FPGA 3.díl – První aplikace

Komentáře (6):

Zobrazit starší 30 dnů (6)...

host
6. Dne 27. 12. 2008 v 20:22 zaslal host
další dil
další díl kdy bude?


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
PGSM-M10: GSM/GPRS modul s M10
Čtyřpásmový GSM/GPRS modul s M10 firmy QUECTEL a podporou SMS, MMS, GPRS Class 12, TCP/IP, FTP a dalších.
Skladem od 690 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007