330 likes | 573 Views
Technologie FPGA. Tomáš Martínek martinto@fit.vutbr.cz. Obsah. Hlavní výrobci FPGA Architektura Xilinx Spartan 3 CLB – Configuration Logic Block Block RAMs Embedded Multipliers Clock Management IOB Architecture Ostatní architektury Xilinx: Virtex II, Virtex II Pro, Virtex 4.
E N D
Technologie FPGA Tomáš Martínek martinto@fit.vutbr.cz
Obsah • Hlavní výrobci FPGA • Architektura Xilinx Spartan 3 • CLB – Configuration Logic Block • Block RAMs • Embedded Multipliers • Clock Management • IOB Architecture • Ostatní architektury • Xilinx: Virtex II, Virtex II Pro, Virtex 4
Hlavní výrobci FPGA • Xilinx • Spartan, Spartan II, Spartan 3E, Spartan 3 (FIT kit) • Virtex, Virtex E, Virtex II, Virtex II Pro • Virtex 4 • Altera • Stratix, Stratix II, Stratix GX • Ostatní • Atmel
Obsah • Hlavní výrobci • Architektura Xilinx Spartan 3 • CLB – Configuration Logic Block • Block RAMs • Embedded Multipliers • Clock Management • IOB Architecture • Ostatní architektury • Xilinx: Virtex II, Virtex II Pro, Virtex 4
Architektura Xilinx Spartan 3 • Matice konfigurovatelných logických bloků (CLB) • Vestavěné blokové paměti BlockRAM a násobičky • Obvody pro řízení hodinového signálu (DCM)
CLB – Konfigurovatelný blok logiky Obsahuje • 4 x SLICE (menší logické elementy) • 2 x nezávislé „carry“ řetězce pro konstrukci rychlých sčítaček • Rychlé připojení k sousedním členům a připojení ke globální propojovací matici • 192 - 8,320 CLB ve Spartan3
Architektura SLICE ORCY MUXFx CY MUXF5 CY Arithmetic Logic Obsahuje • 2x Funkční generátor (FG) • LUT • RAM16 • SRL16 • 2x Registr/Latch • Multiplexory MUXF5, MUXFx • “Carry” logiku • Pomocná logika pro aritmetiku • 768 - 33,280 SLICE ve Spartan3 • => 1536 - 66,560 FG a registrů
FG jako Look-Up Table (LUT) • Logické hradlo: 4 vstupy, 1 výstup • Realizuje obecnou binární funkci čtyř proměnných • Příklad:
FG jako Look-Up Table (LUT) • Pomocí multiplexerů MUXF5 a MUXFx lze jednoduše vytvářet složitější funkce • MUXFx je potom označován jako MUXF6 nebo MUXF7
Lze instancovat jako komponentu ve VHDL, ale obvykle se to neprovádí => Syntezátor je automaticky vytváří na základě behaviorálního nebe strukturálního popisu ve VHDL. Například z rovnice: Y<= A xor B and (C or D); se při syntéze může využít LUT se zadanou funkcí Existují 4 varianty podle počtu využitých vstupů: LUT1, LUT2, LUT3, LUT4 Knihovní prvek ve VHDL component LUT4 generic( INIT : bit_vector(15 downto 0) ) port( I0 : in std_logic; I1 : in std_logic; I2 : in std_logic; I3 : in std_logic; O : out std_logic ); end component; LUT – komponenta ve VHDL
FG jako paměťový prvek (RAM16) • Paměť o velikosti 16x1 bitů • Asynchronní čtení: po vystavení adresy jsou na výstup vystavena data, není potřeba čekat na hodinový signál • Synchronní zápis: data jsou do paměti zapsána na vzestupnou hranu hodinového signálu WCLK • Vhodná pro konstrukci menších pamětí RAM16
FG jako paměťový prvek (RAM16) Tvoření větších paměťových celků • Pomocí MUXF5 a MUXFx lze jednoduše tvořit paměti 32x1 bit, 64x1 bit, atd. • Paměti lze paralelně řadit vedle sebe a tvořit paměti o libovolné šířce dat
RAM16D – dvou-portová paměť • Port A • asynchronní čtení • synchronní zápis • Port B • asynchronní čtení • Vhodná např. pro konstrukci: • FIFO pamětí (jeden zápisový port, druhý čtecí port) • Registrového pole procesoru (pro jednu instrukci je potřeba načíst dva operandy z reg. pole) • Jedna RAM16D je vytvořena ze dvou FG ! RAM16D
Paměť lze ve VHDL zapsat i behaviorálně například pomocí pole: type mem_type is array (mem_depth - 1 downto 0) ofSTD_LOGIC_VECTOR (d_width - 1 downto 0); signal mem : mem_type; Různé typy syntezátorů však nemusí být schopny rozpoznat správný typ paměti. Je potřeba nastudovat dokumentaci ke konkrétnímu syntezátoru nebo použít přímo komponentu RAM16 Single Port RAM16X1S, RAM32X1S, RAM64X1S, RAM128X1S Dual Port RAM16X1D, RAM32X1D, RAM64X1D component RAM16X1S port ( D : in std_logic; WE : in std_logic; WCLK : in std_logic; A0 : in std_logic; A1 : in std_logic; A2 : in std_logic; A3 : in std_logic; O : out std_logic ); end component; RAM16 – komponenta ve VHDL
FG jako posuvný registr (SRL16) • Synchronní zápis, data v registru se posunou o jednu pozici • Asynchronní čtení ze zadané pozice, výstup se objeví na Q • Jednoduché rozšíření pomocí multiplexorů MUXF5 a MUXFx • Vhodný například pro konstrukci zpožďovacích obvodů, generátorů náhodných čísel (LFSR), čítače libovolných sekvencí, apod. • Velká úspora zdrojů oproti implementaci pomocí registrů umístěných ve SLICE SRL16
Lze zapsat také ve VHDL process (clk) begin if clk'event and clk = '1' then int_sig <= input & int_sig (0 tocycle - 2); end if; end process main; output <= int_sig(cycle -1); Některé typy syntezátorů opět nemusí tuto konstrukci rozpoznat správně Posuvný registr nesmí mít RESET, protože FG neumí resetovat svůj obsah. Posuvný registr s resetem bude automaticky sestrojen z běžných registrů Single SRL16, SRL16E, SRL16_1, SRL16E_1 Cascade SRLC16, SRLC16E, SRLC16_1,SRLC16E_1 component SRLC16E port ( D : in std_logic; CE : in std_logic; CLK : in std_logic; A0 : in std_logic; A1 : in std_logic; A2 : in std_logic; A3 : in std_logic; Q : out std_logic; Q15 : out std_logic ); end component; SRL16 – komponenta ve VHDL
„Carry“ logika • Používá se pro konstrukci rychlých sčítaček, čítačů, komparátorů apod. • Carry logika je v každém SLICE tvořena z: • 2x multiplexor - MUXCY • 2x hradlo xor - XORCY • 1x hradlo or – ORY • Příklad: Komparátor VHDL: Y<= ‘1’ when (A = B) else ‘0’; • LUTy porovnávají části operandů • MUXCY vytváří logický AND
Příklad: 4-bitová sčítačka VHDL: c <= a + b + cin; Tři stupně výpočet součtu bez znalosti výsledku z předchozího stupně (první XOR implementován v LUTu) přenos přenosového příznaku (implementován v MUXCY) výpočet koncového výsledku na základě předběžného výsledku a přenosu (implementován v XORCY) Implementace: 2 x SLICE Příklad: čítač vs. sčítačka argument B=0, CIN=1 výpočet bez prvního XORu „Carry“ logika – sčítačka, čítač
Paměťový blok o velikosti 18Kb Synchronní čtení i zápis (data jsou dostupná v následujícím hodinovém taktu) Jedno-portová i dvou-portová varianta, pro každý port lze nastavit jednu z následujících datových šířek: 16k x 1 bit 2k x 9 bits 8k x 2 bits 1k x 18 bits 4k x 4 bits 516 x 36 bits Vhodná pro: uložení většího objemu dat, paměť instrukcí pro procesor, konstrukce FIFO pamětí, FSM obvodů, apod. 4 – 104 BRAM ve Spartan3 Block SelectRAM
FIFO paměti zapisovací strana čtecí strana logika pro vyhodnocení stavu FULL, EMPTY FSM automaty v paměti je implementována logika následujícího stavu i výstupní funkce velký počet stavů, velká rychlost, jednoduchá možnost změny funkce BlockRAM – užitečné aplikace
BlockRAM – komponenta ve VHDL • Jedno-portová varianta RAMB16_S1 , RAMB16_S2, RAMB16_S4, RAMB16_S9, RAMB16_S18, RAMB16_S36 • Dvou-portová varianta RAMB16_S1_S1, RAMB16_S1_S2, RAMB16_S1_S4, … , RAMB16_S2_S9,RAMB16_S36_S36 • Lze nastavit počáteční obsah paměti pomocí parametru INIT_XX component RAMB16_S36 generic ( INIT_XX : bit_vector(255 downto 0)) port ( DI : in std_logic_vector(31 downto 0); DIP : in std_logic_vector(3 downto 0); ADDR : in std_logic_vector(8 downto 0); EN : in std_logic; WE : in std_logic; SSR : in std_logic; CLK : in std_logic; DO : out std_logic_vector(31 downto 0); DOP : out std_logic_vector(3 downto 0) ); end component;
Vestavěná násobička ušetří velké množství logiky a dosahuje vysoké rychlosti výpočtu 18 x 18 bitů vstupní operandy 36 bitů výstupní operand Podporuje znaménkové i neznaménkově operandy Lze kaskádně propojit pro vytvoření větších násobiček Vhodná pro DSP aplikace (operace konvoluce, multiple and acumulate) 4 – 104 MULT18x18 v Spartan3 VHDL komponenta component MULT18X18 port( A : in std_logic_vector (17 downto 0); B : in std_logic_vector (17 downto 0); P : out std_logic_vector (35 downto 0) ); end component; Vestavěné násobičky
Globální rozvod hodinového signálu • Hodinový signál je přiváděn do FPGA skrze GCLK piny a rozváděn rovnoměrně po celém čipu pomocí speciálních hodinových rozvodů (rychlejší než běžné vodiče) • Hodinový signál vstupuje přes BUFG/BUFGMUX komponent, které odstraní případné zkreslení a zákmity • Hodiny lze upravovat pomocí speciálních DCM obvodů • korekce zpoždění • násobení, dělení • fázový posun
DCM obvod DCM realizuje: • Redukce zpoždění hod. signálu • hod. signál distribuční sítě je převeden zpět na vstup CLKFB a je vyváženo jeho zpoždění • Frekvenční syntézu • násobení hodin. signálu • dělení hodin. signálu • obecný polynom M/N • Fázový posun • fixní fázový posun • proměnný fázový posun 2 – 4 DCM ve Spartan3
Input/Output Block (IOB) • Každý pin FPGA může být konfigurován jako vstup, výstup nebo obojí • Jsou podporovány jednotlivé vodiče i diferenciální páry (pouze u dvou sousedních pinů) • Je podporováno velké množství standardů: • LVTTL, LVCMOS, PCI33, PCI66, PCI-X, GTL, HSTL, STTL, AGP • LVDS, LDT, LVPECL • Podpora Double data rate (DDR) • Digitálně řízená impedance (DCI) – redukuje nutnost velkého množství ukončovacích rezistorů na desce • 124 – 784 IOB ve Spartan3
Každý IOB blok obsahuje 6 registrů pro podporu DDR 2 x provstup 2 x provýstup 2 x pro řízení třístavového výstupu Příklad DDR komponenty ve VHDL: component FDDRRSE port ( Q : out std_logic; D0 : in std_logic; D1 : in std_logic; C0 : in std_logic; C1 : in std_logic; CE : in std_logic; R : in std_logic; S : in std_logic); end component; Input/Output Block - DDR
Obsah • Hlavní výrobci FPGA • Architektura Xilinx Spartan 3 • CLB – Configuration Logic Block • Block RAMs • Embedded Multipliers • Clock Management • IOB Architecture • Ostatní architektury • Xilinx: Virtex, Virtex II, Virtex II Pro, Virtex 4
Virtex, Virtex II • Podpora třístavových sběrnic uvnitř FPGA - každý CLB blok obsahuje 2-3 třístavové budiče • Možnost rekonfigurovat za běhu pouze část FPGA čipu • Virtex - rekonfigurace řízena vnějším obvodem • Virtex II – možnost řízení rekonfigurace čipu zevnitř FPGA – přístup pomocí ICAP (Internal Configuration Access Port) komponenty. • Rekonfigurace nabízí nové možnosti – rozsáhlé aplikace lze rozdělit na několik částí a vykonávat je postupně. V čipu mohou běžet pouze ty části, které jsou v aktuální době potřeba – úspora zdrojů, energie.
RocketIO jsou speciální obvody, které umožňují multi-gigabitové připojení FPGA s externím zařízením nebo jiným FPGA Propustnost jednoho RocketIO až 3.125 Gbps Data z/do FPGA se v RocketIO serializují/deserialuzují, kódují pomocí kódování 8/10 a provádí se korekce hodinových signálů Podporuje velké množství standardů: 1Gb, 10Gb Ethernet Fibre Channel PCI Express 4-24 RocketIO obvodů na čipech s technologií Virtex II Pro Technologie Virtex II Pro
PowerPC procesorové jádro je umístěno přímo na čipu Architektura: 32-bitů RISC procesor od firmy IBM, 16kB datová a instrukční cache je uvnitř procesoru Pracovní frekvence až do 400 MHz Velmi výhodné pro aplikace, které kombinují hradlové pole s výkonným procesorem 1-2 PowerPC procesory na čipech s technologií Virtex II Pro Technologie Virtex II Pro
Technologie Virtex 4 Virtex 4 je vytváří 3 typy čipů podle cílového použití: • Virtex-4 LX • zaměřeno na aplikace vyžadující velké množství logiky, (obsahuje pouze logiku a paměti) • Virtex-4 FX • zaměřeno na komplexní vestavěné systémy (obsahuje PowerPC, RocketIO) • Virtex-4 SX • zaměřeno na DSP aplikace (rychlé násobičky, velké množství vestavěných multiply-acumulate bloků) • 90 nm technologie, logika a paměti pracují až do 500MHz • Vylepšené vlastnosti BlockRAM pamětí • každých 8 bitů může mít svůj vlastní WE, podpora kaskádního zapojení paměti, vestavěná podpora pro konstrukci FIFO pamětí
Odkazy • Xilinx: Spartan-3 FPGA Family:Complete Data Sheet, August, 2005 • Xilinx: Virtex™Field Programmable Gate Arrays, April, 2001 • Xilinx: Virtex-II Field-Programmable Gate Arrays, September, 2002 • Xilinx: Virtex-II Pro™ Platform FPGAs: Complete Data Sheet, Aprip, 2004 • Xilinx: Virtex-4 Family Overview, June 2005 • Xilinx: Virtex-4 RocketIO Multi-Gigabit Transceiver, June 2005 • Xilinx: XtremeDSP for Virtex-4 FPGAsUser Guide, October, 2005 • Xilinx: PowerPCProcessorReference Guide, September, 2003 • http://www.xilinx.com
Konec Děkuji za pozornost