SPARTAN - 3 Xilinx FPGA Device 1. Úvod: 1.2V řada SPARTAN-3 navazuje na úspěch předchozí řady: SPARTAN-IIE. Od architektury SPARTAN-IIE se liší v počtu systémových hradel a logických buněk, velikosti RAM, počtu I/O a implementací některých nových bloků do architektury jako jsou DCMs nebo násobičky. Počet systémových hradel se pohybuje od 50000 do 5000000. Hlavní rysy architektury SPARTAN-3: nová 90nm technologie výroby až 5 miliónů systémových hradel nebo 74880 logických buněk hodinový signál až 326MHz 3 separátní napájecí zdroje: 1.2V, 2.5V, 3.3V až 784 I/O pinů, 622Mb/s přenosová rychlost pinu podpora až 17 úrovňových standardů Double Data Rate (DDR) podpora integrovaná struktura pro konstrukci rychlých sčítaček 4 až 104 integrovaných násobiček 18 x 18 JTAG port pro testování až 1872Kb blokové RAM až 520Kb distribuované RAM až 4 Digital Clock Manager (DCM) umožňující frekvenční syntézu 8 globalních hodinových linek plná podpora vývojového prostředí Xilinx ISE Tab. č. 1: přehled vyráběných obvodů
2. Architektura Architektura je složena z 5 základních funkčních/logických bloků: IOBs (Input/Output Blocks) řídí tok dat mezi I/O pinem a vnitřní logikou CLBs (Configurable Logic Blocks) obsahující LUTs (Look-Up Tables) na principu paměti RAM Block RAM umožňující ukládaní dat ve formátu 18Kb dual-port blocks. násobičky umožňující vynásobení dvou 18-bitových čísel DCM (Digital Clock Manager) poskytuje autokalibraci, plně digitální řešení distribuce zpoždění, násobení, dělení a fázový posun hodinového signálu Obr. č. 1: uspořádaní základních bloků v architektuře SPARTAN-3 využívá pro konfiguraci paměťových buněk RAM a tedy při vypnutí napájení je daná konfigurace ztracena. Proto je potřeba zajistit nahrání konfigurace při každém zapnutí FPGA. Konfigurační data jsou automaticky čtena z externího zdroje dat (PROM, JTAG, FPGA) a to buď sériově nebo paralelně. IOBs (Input Output Blocks): SPARTAN-3 umožňuje vybrat jeden ze 17 možných úrovňových standardů pro jednotlivé piny (single-ended) a jeden ze 6 pro rozdílový výstup (differential).
Tab. č. 2: podporované standardy pro I/O piny Tab. č. 3: počty single-ended I/O a differential I/O 3. Popis logiky 3.1. IOBs (Vstupně výstupní bloky) IOB poskytuje programovatelné obousměrné rozhranní mezi I/O pinem a interní logikou FPGA. Struktura IOBs obsahuje 3 základní signálové cesty: vstupní, výstupní a 3-stavová. Vstupní cesta přenáší data z pinu do vnitřní logiky přes volitelné programovatelné zpoždění na linku I. Další možné výstupy jsou IQ1 a IQ2 přes klopné obvody. Výstupní cesta z vnitřní logiky vede přes linky O1 a O2 na výstupní pin. 3-stavový výstup je řízen linkami T1 a T2.
Ve všech cestách jsou multiplexery pro výběr jedné ze dvou linek. (IQ1, IQ2; O1, O2; T1, T2). Linky vstupující do IOB mohou být invertovány, přičemž potřebný invertor je automaticky vložen do IOB. IOB obsahuje 3 páry klopných obvodů které lze volitelně nastavit jako hranou nebo úrovní řízený. Obr. č. 2: zjednodušené schéma interní struktury IOBs
Tab. č. 4: popis signálu klopného obvodu uvnitř IOB Použitím obou klopných obvodů ve výstupní cestě a speciálního multiplexeru přepínající obě vstupní linky je možné dosáhnout DDR přenos. Pro každý KO je vyráběn hodinový signál s danou polaritou. KO na vstupní straně umožňuje také přijímat DDR přenos. Jeden zachytává data na náběžnou hranu a druhý na sestupnou hranu hodinového signálu. Obr. č. 3: princip DDR přenosu v IOBs Volitelně lze naprogramovat na výstupu pull-up a pull-down rezistory. Dále každý pin obsahuje dvě diody pro ochranu proti kladnému i zápornému přepětí. Výstupní driver pinu lze naprogramovat na FAST nebo SLOW slew rate. Blok DCI (Digitally Controlled Impedance) umožňuje u každého pinu vložit zakončovací rezistor.
Tab. č. 5: DCI I/O standard
Tab. č. 6: zakončení DCI Obr. č. 4: Spartan-3 I/O banky
I/O jsou bankovány a DCI pracuje nezávisle pro každou z osmi bank I/O. Každá banka má dva referenční vstupy VRP a VRN k nastavení budiče a zakončovacího rezistoru. Pokud se nepoužije DCI tak VRP a VRN pracují jako normální I/O. Obr. č. 5: zapojení referenčních rezistorů Různé obvody ve stejném pouzdře jsou pinově kompatibilní a tak při potřebě větší logiky není třeba navrhovat novou desku, ale stačí jen výkonnější obvod. 3.2. CLBs (Configurable Logic Blocks) CLB je tvořena 4 LC (Logic Cell), které jsou uspořádány do dvojic (řezy) tak, že daná dvojce má společný carry přenos. Obr. č. 6: uspořádaní řezů uvnitř CLB Oba řezy obsahují dva logické funkční generátory, dva ukládací elementy, multiplexer, carry logiku. Těmito bloky jsou tvořeny logické, aritmetické a paměťové funkce. Levý pár má navíc další dvě funkce: ukládaní dat pomocí distribuované RAM a posun dat s 16-bitovým registrem.
Obr. č. 7: schéma levého páru v CLB LUT (Look-Up Table) je základní část pro implementaci logické funkce. LUT v levém páru může být použita také jako distribuovaná RAM nebo jako 16-bitový posuvný registr. Klopné obvody FFX y FFY mohou být řízeny úrovní nebo hranou. Pomocí multiplexeru F5MUX lze realizovat funkce 5 a více proměnných. Carry řetězec obsahuje multiplexery CYINIT, CY0F, CYMUXF, CY0G, CYMUXG a hradla XORF, XORG, GAND a FAND. Do každého řezu vstupují 4 datové linky (F1 F4 pro dolní řez) které vedou přímo do LUT. Výstup LUT je jeden a může vést 5 možnými cestami. přes multiplexer FXMUX na linku X přes multiplexery FXMUX a DXMUX na paměťový člen a výstupem je XQ řídí multiplexer CYMUXF v řetězci carry
přes hradlo XORF v řetězci carry a vykonává aritmetické operace na multiplexer F5MUX Každý řez má navíc přímou linku propojující vstup a výstup (BX, BXOUT) Funkční generátor je tvořen pomocí LUT na principu RAM 16 x 1 bit. Na LUT jsou přímo připojeny vstupní linky (F1 F4) které fungují jako adresová sběrnice. Datový sběrnice je výstup LUT a je 1-bitová. Pomocí LUT se nechá vytvořit jakákoli funkce 4 nezávislých proměnných. LUT také může být konfigurována jako distribuovaná paměť RAM velikosti 16 x 1 bit nebo jako 16-bitový posuvný registr. Registry se nechají zapojit do kaskády a tak vznikne 32bitový, 64bitový i vícebitový. 3.3. Bloková RAM Všechny obvody rodiny SPARTAN-3 obsahují blokovou RAM uspořádanou po blocích velikosti 18Kbit. Pro uložení velkého množství dat je efektivnější použít blokovou RAM než distribuovanou RAM. Kapacita paměti je 18432bitů bez parity nebo 16384bitů s paritou. Paměť také umožňuje dvouportový přístup může být konfigurována jako Single-Port nebo Dual-Port RAM. Paměť je na čipu rozmístěna po blocích tvořící sloupce. Tab. č. 7: velikosti blokové RAM v FPGA Obr. č. 8: datové cesty Dual-Port blokové RAM
Obr. č. 9: principielní schéma Dual-Port a Single-Port blokové RAM
Tab. č. 8: popis signálů blokové RAM Paměť lze konfigurovat do různých rozměrů. Dle šířky datového slova odpovídá šířka adresové sběrnice a také podle typu paměti (Dual-Port nebo Single-Port).
Tab. č. 8: možné konfigurace paměti 3.4. Násobičky Obvody SPARTAN-3 obsahují násobičky 18x18 bitů s 36bitovým výstupem. Mohou pracovat jako asynchronní i jako synchronní. Vstupní datové slovo může být reprezentováno dvojkovým doplňkem (buď 18bitové znaménkové nebo 17bitové neznaménkové). Kaskádním řazením lze vytvořit násobičky pracující s širším datovým slovem než jen 18bitů. Obr. č. 10: asynchronní a synchronní násobička Tab. č. 9: popis signálů násobičky 3.5. DCM (Digital Clock Manager) DCM řídí, upravuje a distribuuje hodinový signál po celém čipu. Plní 3 základní funkce: eliminace časového zpoždění, frekvenční syntéza, fázový posun signálu. Všechny obvody obsahují 4 DCM (kromě XC3S50, ten má pouze 2 DCM).
Obr. č. 11: funkční blok a přiřazené signály DCM DCM se skládá ze 4 základních bloků: DLL (Delay-Locked Loop) DFS (Digital Frequency Synthesizer) PS (Phase Shifter) Status Logic Obr. č. 12: zjednodušené schéma DLL Základní funkce DLL je vyrovnávání časového zpoždění a generování fázově posunutých signálů. DLL má 2 hodinové vstupy a 7 hodinových výstupů.
Tab. č. 10: popis signálů DLL 3.6. Globální síť hodinového signálu FPGA SPARTAN-3 obsahují 7 globálních hodinových signálů GCLK0-GCLK7. Ty vstupují do pole multiplexerů kde jsou přepnuty a pokračují do DCM nebo do globální sítě hodinového signálu. V DCM jsou upraveny a vedou zpět do pole multiplexerů a pokračují do globální sítě hodinového signálu. Obr. č. 13: globální propojovací síť hodinového signálu
3.7. Propojovací síť Propojovací síť (matice) je tvořena 4 druhy propojovacích linek. Long lines vhodné pro distribuci globálního signálu s malým zpožděním, propojuje každou šestou CLB Hex lines také vhodné pro vedení rychlých signálů s malým zpožděním, navíc umožňuje efektivnější propojení, protože jsou spojeny s každou třetí CLB Double lines spojují každou druhou CLB s vysokou flexibilitou propojení Direct lines propojuje nejbližší sousední CLB Obr. č. 14: typy propojovacích linek 4. Konfigurace SPARTAN-3 FPGA je konfigurován nahráním aplikačně specifické konfigurace do vnitřní konfigurační paměti z externího zdroje dat. SPARTAN-3 podporuje 5 konfiguračních módů jak ukazuje tabulka. Tab. č. 11: konfigurační módy a odpovídající nastavení pinů
Obr. č. 15: schéma pro sériovou konfiguraci Master i Slave Obr. č. 16: schéma pro paralelní konfiguraci Slave
Obr. č. 17: schéma pro paralelní konfiguraci Master 5. Elektrické parametry Tab. č. 12: maximální přípustné hodnoty
Tab. č. 13: doporučené pracovní hodnoty 6. Značení odvodů Obr. č. 18: značení pouzder