Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Technologie FPGA Tomáš Martínek

Podobné prezentace


Prezentace na téma: "Technologie FPGA Tomáš Martínek"— Transkript prezentace:

1 Technologie FPGA Tomáš Martínek

2 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

3 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

4 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

5 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)

6 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 ,320 CLB ve Spartan3

7 Architektura SLICE Obsahuje 2x Funkční generátor (FG) LUT RAM16 SRL16 2x Registr/Latch Multiplexory MUXF5, MUXFx “Carry” logiku Pomocná logika pro aritmetiku ,280 SLICE ve Spartan3 => ,560 FG a registrů ORCY MUXF5 MUXFx CY Arithmetic Logic

8 FG jako Look-Up Table (LUT) Logické hradlo: 4 vstupy, 1 výstup Realizuje obecnou binární funkci čtyř proměnných Příklad:

9 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

10 LUT – komponenta ve VHDL 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;

11 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

12 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

13 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

14 RAM16 – komponenta ve VHDL Paměť lze ve VHDL zapsat i behaviorálně například pomocí pole: type mem_type is array (mem_depth - 1 downto 0) of STD_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 ;

15 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

16 SRL16 – komponenta ve VHDL Lze zapsat také ve VHDL process (clk) begin if clk'event and clk = '1' then int_sig <= input & int_sig (0 to cycle - 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;

17 „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

18 „Carry“ logika – sčítačka, čítač 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

19 Block SelectRAM 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 bit2k x 9 bits 8k x 2 bits1k x 18 bits 4k x 4 bits516 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

20 BlockRAM – užitečné aplikace 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

21 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;

22 Vestavěné násobičky 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;

23 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

24 DCM obvod DCM realizuje: 1. 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í 2. Frekvenční syntézu násobení hodin. signálu dělení hodin. signálu obecný polynom M/N 3. Fázový posun fixní fázový posun proměnný fázový posun 2 – 4 DCM ve Spartan3

25 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

26 Input/Output Block - DDR Každý IOB blok obsahuje 6 registrů pro podporu DDR 2 x pro vstup 2 x pro vý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;

27 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

28 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.

29 Technologie Virtex II Pro 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ž 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

30 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

31 Technologie Virtex 4 Virtex 4 je vytváří 3 typy čipů podle cílového použití: 1. Virtex-4 LX zaměřeno na aplikace vyžadující velké množství logiky, (obsahuje pouze logiku a paměti) 2. Virtex-4 FX zaměřeno na komplexní vestavěné systémy (obsahuje PowerPC, RocketIO) 3. 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í

32 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: PowerPC Processor Reference Guide, September, 2003

33 Konec Děkuji za pozornost


Stáhnout ppt "Technologie FPGA Tomáš Martínek"

Podobné prezentace


Reklamy Google