bme-mit fpga labor

61
BME-MIT FPGA labor Digitális rendszerek tervezése FPGA áramkörökkel SRAM FPGA Architektúrák BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Upload: vonga

Post on 06-Feb-2017

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: BME-MIT FPGA labor

BME-MIT

FPGA labor

Digitális rendszerek tervezése FPGA áramkörökkel

SRAM FPGA Architektúrák

BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEMVILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR

MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK

Fehér BélaSzántó Péter, Lazányi János, Raikovich Tamás

BME MITFPGA laboratórium

Page 2: BME-MIT FPGA labor

BME-MIT

FPGA labor

FPGA áramkörök felépítése

• Az alapvetı erıforrások

– Logikai blokkok

– I/O blokkok

– Huzalozás

• Felhasználói szinten közvetlenül csak az elsı kettıjelenik meg

• A huzalozás nem direkt erıforrás, de kritikus esetekben az eszköz használati értékének igen fontos eleme

Page 3: BME-MIT FPGA labor

BME-MIT

FPGA labor

FPGA felépítés

• Egyszerősített általános kép

Page 4: BME-MIT FPGA labor

BME-MIT

FPGA labor

Technológia és piac

• Az FPGA flexibilis eszköz, ez költségekkel jár

• Költség/szolgáltatás optimalizálása fontos

• Technológiai lehetıségek/elfogadható ár

• A VLSI félvezetı technológia szempontjából az SRAM FPGA kedvezı eszköztípus

– Sok egyszerő, azonos modul

– Szabályos ismétlıdés, szimmetrikus struktúra

– Az I/O meghajtók és néhány PLL kivételével „egyszerő, közönséges” CMOS logika

Page 5: BME-MIT FPGA labor

BME-MIT

FPGA labor

Technológiai háttér

• Az SRAM FPGA-k jellemzıen a technológiai élvonalban vannak

– Altera Stratix4 40 nm

– Xilinx Virtex5 65 nm

– Lattice SC/M 90nm

• Ezek a technológiák költségesek

– Ezt nem minden alkalmazás viseli el

• Egyszerősített, a fontos tulajdonságokat megırzı, megjelenítı eszközök

– Altera Cyclone, Xilinx Spartan, Lattice EC

– Fıképp általános célú, fogyasztói alkalmazásokhoz

Page 6: BME-MIT FPGA labor

BME-MIT

FPGA labor

Gyors összehasonlítás• Altera Stratix3

– 11.168 USD

• Xilinx Virtex4

– 10.558 USD

• Lattice SC/M

– 2.275 USD

Page 7: BME-MIT FPGA labor

BME-MIT

FPGA labor

Gyors összehasonlítás

• Altera Stratix4

– Nincs ár

• Xilinx Virtex5 ( Slice = 4LE) 8.818 USD T13.178

Page 8: BME-MIT FPGA labor

BME-MIT

FPGA labor

Gyors összehasonlítás

• Altera CycloneIII– 13 - 502 USD

• Xilinx Spartan3– 12 – 442 USD

• Lattice ECM– 11 - 273 USD

• Actel IGLO– 13 – 295 USD

Page 9: BME-MIT FPGA labor

BME-MIT

FPGA labor

FPGA belsı felépítés

• SRAM FPGA mindig LUT alapú (kivétel MOT †)

• A LUT egy 1 bit széles memória

• Mélysége (címvonalak száma ) változó

– Korai elemzések alapján a 4 bit tőnt optimálisnak • Kompromisszum a huzalozás és granularitás között

– Egy logikai egység 2 – 4 LUT „közelségére” épít• Lokális belsı kapcsolatok a késleltetést csökkentik

– Legújabb irányzat a drágább termékvonalban• alapelem mérete x4, azaz LUT6

Page 10: BME-MIT FPGA labor

BME-MIT

FPGA labor

Példa eszköz: Xilinx Spartan3E

• Általános felépítés egyszerő

• Homogén logikai struktúra

– Egyenletes CLB réteg

– Funkcionális blokkok• BRAM

• MULT

• DCM

– I/O győrő

Page 11: BME-MIT FPGA labor

BME-MIT

FPGA labor

A logikai elemek

• Enyhe aszimmetria a CLB felépítésben

• 1 CLB = 2 x 2 Szelet

• Bal és jobb szelet eltérı

– Extra LUT módok

• Független függıleges

kapcsolatok

– speciális logika

– aritmetika

Page 12: BME-MIT FPGA labor

BME-MIT

FPGA labor

A CLB struktúra

• Megosztott elrendezés• „Független” belsı blokkok• Szempontok nem ismertek

– 4 bit számláló/aritmetika– Kedvezıbb huzalozás?

• Az extra memória funkciók hasznosak– A konfigurációs memória

részletei felhasználói memóriaként is elérhetık

Page 13: BME-MIT FPGA labor

BME-MIT

FPGA labor

A CLB erıforrása

• Az eredeti koncepció nem változott • Az alap erıforrás az Logic Cell LC = 1 LUT + 1 FF• LUT4

– tetszıleges 4 változós fgv.– 1 változóra hazárdmentes– Mőködési idı bemenet és

logikai komplexitás invariáns• DFF

– Élvezérelt, ↑↓, órajel eng.– Szink/Aszink. SET/RESET

• Független kombinációs és regiszteres kimenet

Page 14: BME-MIT FPGA labor

BME-MIT

FPGA labor

Dedikált CLB erıforrások

• Az egységes alapkoncepció finomítása

– A LUT4 természetesen mindenre jó, de• A sokváltozós logikai függvények, a legegyszerőbbek is

túl sok szintet igényelnek → lassú

• Az aritmetikai mőveletekben kell átvitel jel. Ez egy fontos, de csak belül szükséges, idıkritikus jel. LUT4 alapon 100% redundancia lép fel (3 bemeneti jel 2 függvénye)

• Hagyományos tömbszorzónál egy-egy szinten kell lokális bitszorzat (AND2) és összeadás a részszorzatokhoz

Page 15: BME-MIT FPGA labor

BME-MIT

FPGA labor

A gyors átvitelképzés

• Az aritmetikai mőveletek hatékonysága alapvetı• Sebességük a használhatóságot egyértelmően

jellemzi• Az elemei mővelet:

– Sj = Aj xor Bj xor Cij

– Coj = AjBj + AjCij + BjCij

– A teljes mővelet végrehajtási ideje a Ci0 → Con-1 út terjedési ideje, n-1 az adatméret függvénye

• A beépített egyszerő átvitel lánc feleslegessé tesz bármilyen más CLA, CS módszert

Page 16: BME-MIT FPGA labor

BME-MIT

FPGA labor

A gyors átvitel logika• A mőveletet 1 bites fél összeadókra bontja• A szelet Cin bejövı bitje BX input vagy alsó CLB Cout vagy fix 0 / 1• Összeg bit

– Fout= A0 xor B0– Xout = Fout xor Cin

• Átvitel – Bit helyiértékenként

átvitelterjesztés vagyátvitel generálás

– A CYMUXF vezérlése az Fout jellel

– Tehát ha Fout=1, terjeszt, ezért CoutF=Cin, egyébként CoutF=AB, vagyis generál, ha AB=1

– Az erıforrások más logikamegvalósítására is használhatók

Page 17: BME-MIT FPGA labor

BME-MIT

FPGA labor

A gyors átvitel logika• Aritmetika ADD/SUB/INC/DEC mővelet

– SUM=A xor B xor Ci

– Átvitel terjesztés

és/vagy generálás

– Co = AB + ACi + BCi

– Co = (A xor B) ? Ci : A;

Page 18: BME-MIT FPGA labor

BME-MIT

FPGA labor

Szorzás logikával• A szorzás erıforrás igényes

• Bitszorzás AND2

• Összegzés FA

• Kezdıszinten

egyszerősítés

lehetséges,

egybıl 2 szint

összegezhetı

Page 19: BME-MIT FPGA labor

BME-MIT

FPGA labor

Szorzás CLB logikával

• Aritmetika MUL mővelet

– Bitszintő szorzat és összegzés

– PPij=PPij-1 + Aik*Bkj

– XOR kapu felsı ága általában PPij-1

– Az ábra az elsı szintet mutatja, itt 2 bitszorzat összegezhetı

Page 20: BME-MIT FPGA labor

BME-MIT

FPGA labor

Belsı multiplexerek

• Szélesebb logikai kifejezésekhez

• A „független” szeletek

kombinálhatók

• MUX4, MUX8, MUX16 egy CLB-ben

Page 21: BME-MIT FPGA labor

BME-MIT

FPGA labor

MUX használat logikához

• Más lehetıségek

– LUT5 generálása

– Tetszıleges 5 vált. fv.

– Egyedi 6 – 9 változós függvények• Pl. MUX4 6 bemenettel

Page 22: BME-MIT FPGA labor

BME-MIT

FPGA labor

CYMUX használat logikához

• A MUX általános elem, lehet AND vagy OR kapu

• Ennek megfelelıen a LUT4

részlet logikák összevonhatók

szélesebb függvényekké

Page 23: BME-MIT FPGA labor

BME-MIT

FPGA labor

A részletes struktúra• Egyszerősített SliceM felsı és alsó logikai cellája

Page 24: BME-MIT FPGA labor

BME-MIT

FPGA labor

Memória funkciók a CLB-ben

• Elosztott memóriának hívják• LUT mérető blokkokból építhetı a szükséges méret

– Lehet természetesen ROM (alapvetıen mindig az)– RAM-nál szétválasztott adat be és kimeneti vonal– Lehet szinkron beírású RAM– Lehet szinkron beírású dual-port RAM

• 2x erıforrásigény

– Szinkron olvasás a CLB FF használatával– Kezdıérték minden esetben megadható– Sebesség illeszkedik a rendszerhez– Kiváló elem regiszter készletek

megvalósítására

Page 25: BME-MIT FPGA labor

BME-MIT

FPGA labor

Elızmények• Ez a funkció a 4000-es családban jelent meg elıször

– A memória hagyományos aszinkron SRAM volt

– Ez nem kezelhetı megbízhatóan az idızítések miatt

• Ezután lett az írás szinkron

– Ennek megfelelıen az írás a WCLK jel élére történik

– Az olvasás azonos idejő, aszinkron

Page 26: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT RAM

• LUT RAM csak a SliceM oldalon realizálható

• 1 Slice 1db RAM16x1D vagy 1db RAM32x1S

Page 27: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT RAM

• Nagyobb méret relatív lokális elhelyezéssel

• A rendszer a RAM32x8S

elemet 8 szeletben helyez el

• Használat

– HDL forrásnyelvi szintrıl

– Beépítés könyvtári

primitívként

Page 28: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT shift regiszter

• Érdekes elem, igen flexibilisen használható• Származtatható a konfigurációs mechanizus

ismeretében– A konfigurációs bitek bekapcsoláskor egy nagy

shiftregiszterbe léptetıdnek be– Minden konfigurációs elem egy-egy poziciója a

konfigurációs tárnak– 1 LUT 16 bitet foglal el– Az SRL16 módban ezt a 16 bitet „átemeljük” a

felhasználói logikába

Page 29: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT shift regiszter

• A megvalósítás

• Tulajdonságok– Dinamikusan változtatható hosszúságú soros

késleltetı (1 – 16) Kaszkádosítható CLB-ken át– Nincs SET/RESET, párhuzamos D/Q, van CE

Page 30: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT SRL használat

• Alapvetıen mint késleltı, aszinkron dinamikus címzéssel

• Szinkron címzés FF használattal

Page 31: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT SRL használat

• Mőveleti láncok belsı pontjaiban pipe-linekésleltetések kiegyenlítése

• Adatméretnek megfelelı számú LUT kell

• Kis mérető FIFO – Adatok SRL-ben– Kiegészítı logika, címszámláló, státusz jelzık

Page 32: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT SRL használat

• Véletlensorozat generátor LFSR használatával

• XAPP211, LFSR visszacsatoló

polinomok n=3 és n=168 között

• Pl. Gold Code Generator for

Page 33: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT SRL használat

• Számlálók

• Győrős számláló max. 16 modulusig

– Konfigurációs inicializálás a 100..000 értékre

– Modulus választható a LUT címbemeneten keresztül

– Szabadon futó, nincs RESET, de van CE

Page 34: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT SRL számláló

• Nagyobb modulus

– SRL16-ok sorba kötve

– Relatív prím hosszú SRL16-ok

kimenetei AND kapcsolatban

• Példa: 3465 modulusú osztó

– Legyen az SRL16-ok egyedi

modulusa a 3465 faktorizációja

alapján 11, 9, 7 és 5.

– A TC csak minden 5x7x9x11=

385. ciklusban lesz aktív

5

7

9

11

Page 35: BME-MIT FPGA labor

BME-MIT

FPGA labor

LUT FF

• A szekvenciális logika alaperıforrása

– Megjegyzés: Néhány FPGA-ban nincs dedikált regiszter erıforrás, azt az általános logikai cellából alakítják ki

– Az SRAM FPGA-ak mindig tartalmaznak FF-ot

– Élvezérelt DFF órajel engedélyezéssel

– Alaphelyzet beállítás• SET/RESET, szinkron/aszinkron

• Inicializálás: INIT0/INIT1

Page 36: BME-MIT FPGA labor

BME-MIT

FPGA labor

További erıforrások

• Huzalozás

– Bıven túlméretezett huzalozási erıforrások

– Történelmi okokból

Page 37: BME-MIT FPGA labor

BME-MIT

FPGA labor

Huzalozás• Különbözı huzalozási erıforrások• Hosszú vonalak az IC

teljes felületén– Minden 6. CLB-hez

• A hatos csoportok között egyszintő átugrás

• Kapcsolat a második szomszédokhoz• Alapvetı szomszédos, direkt kapcsolatok• Speciális globális hálózatok (Nem CLK!)

– GSR Globális SET/RESET vonal– GTS Globális Hiz az I/O kimenetekre

• Az órajel hálózat más!

Page 38: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel erıforrások

• Az FPGA tervek legfontosabb szempontja az órajelezés

• Alapvetı a szinkron tervezés

– Egy modulon/blokkon belül egy órajelet használunk

– Lassabb ütemezést órajel engedélyezésen keresztül valósítunk meg.

• Természetesen egy teljes terven belül lehet több órajel tartomány

– Ezek között a kommunikációt igen gondosan kell megtervezni

Page 39: BME-MIT FPGA labor

BME-MIT

FPGA labor

Globális órajel hálózatok

• A teljes felület negyedekre osztva

– Negyedenként 8-8 globális órajel hálózat

– Ezek „globalizálhatók” vagy függetlenül használhatók (fogyasztás!)

– Meghajtás csak globális órajel bufferekrıl• MUX funciója is van, az órajel forrás átkapcsolható

– Órajel forrás lehet • Közvetlenül külsı dedikált GCLK láb

• Órajel kezelı modul kimenet

• Belsı jel

Page 40: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel hálózatok tulajdonságai

• A teljes felületen minimális késleltetés

– Globális szinkron paradigma

• Csak FF, RAM, vagy más elem órajel bemenetére csatlakoztatható

– nem használható, mint általános logikai jel

– A FF órajel bemenet meghajtható általános jelekrıl, de ez egy nem ajánlott tervezési stílus

• BUFGMUX átkapcsolás glitch mentesen két tetszıleges frekvenciájú aszinkron órajel

között

– S vált, CKa ciklus végét megvárja, kimenet 0,

ezután vár CKb alacsony értékére és átkapcsol rá

Page 41: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel kezelı modul• Általános célú órajel kezelı

– Szinkronizáló,

– Frekvencia osztó

– 2x szorzó

– Fázistoló / fázis hasító

– DLL frekvencia szintézer

• Tipikus alkalmazás

Page 42: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel kezelı modul

• Fázis toló egység

– Beállítható késleltetés, 20 – 40 ps lépésben

– Belsı felépítés: Visszacsatolt szabályozó kör,

ami kompenzálja a késleltetést

Page 43: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel kezelı egység

• Belsı / külsı késleltetés kompenzáció

• Azonos késleltetéső komponensek beépítésével az egyes késleltetések kompenzálhatók

• A külsı és belsı órajel események szinkronizálhatóak

Page 44: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel kezelı egység

• Órajel kondicionálás

– Szinkronizáció

– Frekvencia kétszerezés

– 4 fázisú órajelezés

– Különbözı leosztott

késleltetés kompenzált

CLKDIV frekvenciák:

1.5, 2, 2.5, 3, …..8, 9, ..

10, … 16

(CLK2x/K, ahol K = 3 …32)

Page 45: BME-MIT FPGA labor

BME-MIT

FPGA labor

Órajel kezelı egység

• Frekvencia szintézer

– Lényegében egy frekvencia szorzó egység

– Fout = F_CKin * FX_Mult/FX_Div, ahol• FX_Mult 2…32

• FX_Div 1…32

– A kimeneti CK_FX lehet fáziszárt vagy független a referenciától (CLK_FB használata)

• Frekvencia szintézis lehetséges független és fáziszárt üzemmódban

• A használható frekvencia tartomány eltérı

• Spartan 3E 5MHz – 250MHz, ha szinkronizált (DLL is kell)

• Spartan 3E 200kHz – 333MHz, ha nem kell szinkronizáció

Page 46: BME-MIT FPGA labor

BME-MIT

FPGA labor

Egyéb erıforrások

• Az alacsony árfekvéső elemekben

– Nagyobb mérető memória blokkok

– Dedikált szorzó modulok

• Prémium kategóriában

– Többféle memória modul

– DSP blokk teljes MAC struktúrával

– Beépített CPU mag/magok

– Nagysebességő soros interfészek

Page 47: BME-MIT FPGA labor

BME-MIT

FPGA labor

Speciális blokkok az FPGA-ban

• Blokk RAM elhelyezése

Page 48: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM

• 2 – 4 kbyte dual port szinkron RAM

• Mérettıl függı számban 4 – 36 db

• Adatméret rugalmasan választható

– 16kx1, 8kx2, 4kx4, nincs paritás

– 2kx(8+1), 1kx(16+2), 512x(32+4)

Page 49: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM • Használati módok

– Igazi dual port, teljesen független CLKA és CLKB

• Kiváló elem független órajeltartományok közötti szinkronizációra, adatcserére

• Teljesen szinkron mőködés

– Írás: cím, adat és WE aktív, mővelet CLK élére

– Olvasás: cím, RE aktív, CLK élére az adat a kimeneti regiszterbe kerül

Page 50: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM

• Beállítások

– NO_CHANGE a kimeneten az írást követıen

Page 51: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM

• Beállítások

– READ_FIRST

Page 52: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM

• Beállítások

– WRITE_FIRST

Page 53: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM konfliktusok

• Természetesen, a dual portos mőködés miatt, egy cella írásakor, ugyanahhoz a cellához fordulva problémák adódnak

• Dual port módban egyidıben azonos címre írás eltérıadatokkal, az adat bizonytalan lesz (nincs prioritás)

• Aszinkron órajeleknél, írás és azonos idejő olvasás hozzáférés esetén az olvasás eredménye bizonytalan

– Az új belsı adat még nem stabil az olvasás idején

• WRITE_FIRST vagy NO_CHANGE esetén egyik port írásakor a másik kimeneti latch tartalma módosul

Page 54: BME-MIT FPGA labor

BME-MIT

FPGA labor

BlokkRAM használat

• Tetszıleges memória funkció

• Adatméret átalakítás átvitel elıtt

– PAR → SER soros átvitel SER→PAR,

– 32 bit → 2 bit, 2 bit → 32 bit

• A tartalom fele függetlenül használható, mint 2 db egy portos memória

• Ugyanígy fele akkora 72 bit széles memória is kialakítható

• Bufferek, késleltetı vonalak, videó sor tároló

Page 55: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM használat

• Általános logika, mint egy „nagyobb LUT”

– n bemenet, m kimenet REGISZTERES!

– Függvénytáblázat sin/cos, stb.

• Mikroprogramozott vezérlı programtár és következı utasítás logika

• Tulajdonságok:

– Inicializálható felkonfiguráláskor

– RESET csak a kimeneti regisztert befolyásolja

Page 56: BME-MIT FPGA labor

BME-MIT

FPGA labor

Blokk RAM használat

• Virtex eszközökben további tulajdonságok

– Széles adatformátum esetén bájtonkénti írás engedélyezés

• Beágyazott rendszerek megvalósítása során fontos lehet

• CPU buszrendszere kínálja / igényli

• Operációs rendszer meglévı forrása használ rövid változókat (újrafordítható, ….)

Page 57: BME-MIT FPGA labor

BME-MIT

FPGA labor

BlokkRAM használat

• FIFO használat támogatása– Közvetlen HW kiegészítı logika– Rendszer elem sebessége nem csökken– Üzemmódok:

• Normál• FWFT az elsı adat

átesik a kimenetre

– Jelzések:• Full, AlmostFull• Empty, AlmostEmpty

Page 58: BME-MIT FPGA labor

BME-MIT

FPGA labor

Szorzó

• A felhasználók régi vágya

• Teljes párhuzamos tömbszorzó 18x18 bites

• Illeszkedik a BlokkRAM 18 bites konfigurációjához

• A fizikai beépítés is támogatja az együttes használatot, pl. FIR szőrı

• 2’s komplemens, elıjeles mővelet

• 36 bites teljes eredmény

– P[35] redundáns bit

Page 59: BME-MIT FPGA labor

BME-MIT

FPGA labor

Szorzó

• Mőködési sebessége a nagy, illeszkedik a RAM-hoz

• Megırizhetı az opcionális pipe-line regiszterekkel

• Használható

– Önállóan

– Kaszkádosítva

Page 60: BME-MIT FPGA labor

BME-MIT

FPGA labor

Szorzó

• Kibıvítés nagyobb pontosságra, pl. 35 x 35 bit

• 4 db keresztszorzat,

• MSW x MSW

• LSW x LSW

• MSW x LSW

• LSW x MSW

• Elıjel kiterjesztés!

Page 61: BME-MIT FPGA labor

BME-MIT

FPGA labor

Összefoglalás

• FPGA belsı erıforrások– Logikai blokk sokféle lehet

• SRAM-nál tipikus a LUT4 + DFF• Kiegészítı tulajdonságok:

– Átvitelgyorsító– Elosztott memória– SRL16

– Speciális modulok• Órajel kezelı• Szorzó• BlokkRAM