BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK
Digitális rendszerek tervezése FPGA áramkörökkel SRAM FPGA Architektúrák Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium 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 BME-MIT FPGA labor
FPGA felépítés • Egyszerősített általános kép
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
BME-MIT FPGA labor
Technológiai háttér • Az SRAM FPGA-k jellemzıen a technológiai élvonalban vannak – Altera Stratix4 40 nm Virtex7 28 nm – Xilinx Virtex5 65 nm Virtex6 40 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 BME-MIT FPGA labor
Gyors összehasonlítás • Altera Stratix3 – 11.168 USD
• Xilinx Virtex4 – 10.558 USD • Lattice SC/M – 2.275 USD BME-MIT FPGA labor
Gyors összehasonlítás • Altera Stratix4 – Nincs ár
• Xilinx Virtex5 ( Slice = 4LE) 8.818 USD T13.178
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 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 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ő 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 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 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 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
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 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 logika megvalósítására is használhatók
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;
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ı
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ı
BME-MIT FPGA labor
Belsı multiplexerek • Szélesebb logikai kifejezésekhez • A „független” szeletek kombinálhatók • MUX4, MUX8, MUX16 egy CLB-ben
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
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é BME-MIT FPGA labor
A részletes struktúra • Egyszerősített SliceM felsı és alsó logikai cellája
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
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
BME-MIT FPGA labor
LUT RAM • LUT RAM csak a SliceM oldalon realizálható • 1 Slice 1db RAM16x1D vagy 1db RAM32x1S
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
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 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 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
BME-MIT FPGA labor
LUT SRL használat • Mőveleti láncok belsı pontjaiban pipe-line ké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 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
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
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
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 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
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! 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 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 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á 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
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
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 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) 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ó
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 BME-MIT FPGA labor
Speciális blokkok az FPGA-ban • Blokk RAM elhelyezése
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)
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
BME-MIT FPGA labor
Blokk RAM • Beállítások – NO_CHANGE a kimeneten az írást követıen
BME-MIT FPGA labor
Blokk RAM • Beállítások – READ_FIRST
BME-MIT FPGA labor
Blokk RAM • Beállítások – WRITE_FIRST
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 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ó 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 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ó, ….)
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 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 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
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!
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 BME-MIT FPGA labor