udapesti mŰszaki És gazdasÁgtudomÁnyi egyetem...
TRANSCRIPT
![Page 1: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/1.jpg)
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
![Page 2: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/2.jpg)
BME-MIT
FPGA labor
FPGA – tipikus alkalmazások
• ASIC prototípus
• Hálózati infrastruktúrák
• Switch, router, bázisállomás; csomagfeldolgozás
• Titkosítás
• Űrkutatás, katonaság (pl. UAV)
• Ipari alkalmazások
• Vezérlés (motor, erőművek, …)
• Adatgyűjtés, monitorozás
• Jelfeldolgozás
• Orvosi képfeldolgozás (röntgen, ultrahang, CT, …)
• Nagy felbontású videó feldolgozás
• Ipari képfeldolgozás (objektum detektálás, sztereó kamerák, …)
• Tradicionális szűrési feladatok, FFT
• High Performance Computing
![Page 3: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/3.jpg)
BME-MIT
FPGA labor
„Standalone” FPGA
• Dedikált HW funkciók túlzottan komplex
vezérlés nélkül
• „Glue logic”: kis erőforrásigényű, kiegészítő
feladatok ellátása, egyszerű interfészek
• Pl. Lattice ICE FPGA-k mobiltelefonokban
• Adatfolyam jellegű hardveres feldolgozás
• Pl. képernyő fal vezérlés: HDMI bemenetek
kép demultiplexálás/multiplexálás HDMI
kimenetek
![Page 4: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/4.jpg)
BME-MIT
FPGA labor
HPC: FPGA alapú gyorsító kártya
• Legelterjedtebb a PCIe interfész
• De van QPI (Intel), CAPI (IBM)
• Dedikált, jól párhuzamosítható funkciók HW
megvalósítása
• Adatközpontok, szerverek, pl. Microsoft Catapult
• Pl. AI,
adatbázis
keresés (Google)
![Page 5: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/5.jpg)
BME-MIT
FPGA labor
Beágyazott rendszerek (1)
• Külső processzor + FPGA
• Interfész: CPU saját
busza (pl. LocalBus),
vagy PCI/PCI Express
• CPU: tipikusan vezérlés,
sztenderd interfészek
(ETH, USB)
• FPGA: párhuzamos
adatfeldolgozás,
időkritikus feladatok
![Page 6: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/6.jpg)
BME-MIT
FPGA labor
Beágyazott rendszerek (2)
• Processzor is az FPGA-ban
System on Chip
• CPU lehet hard-core vagy soft-core
• Hard-core ma tipikusan ARM
magokat jelent (Xilinx Zynq,
Altera SoC), korábban PowerPC
• Nagy sebességű kapcsolat a CPU
és az FPGA rész között, könnyen
módosítható
• CPU relatív költsége magasabb
lehet
![Page 7: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/7.jpg)
BME-MIT
FPGA labor
HPC – szuperszámítógépek
![Page 8: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/8.jpg)
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 9: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/9.jpg)
BME-MIT
FPGA labor
FPGA felépítés
• Egyszerűsített általános kép
![Page 10: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/10.jpg)
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 11: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/11.jpg)
BME-MIT
FPGA labor
FPGA gyártók részesedése
• Megemlítendő még: Achronix
Xilinx
49%
Altera
40%
Lattice
6%
Microsemi
4% Egyéb
1%
![Page 12: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/12.jpg)
BME-MIT
FPGA labor
Technológiai háttér
• Az SRAM FPGA-k jellemzően a technológiai élvonalban
vannak
– Altera Stratix 10 14 nm, Arria 10 & Cyclone 10 20nm,
– Altera Cyclone V, Stratix V 28 nm
– Altera Cyclone-IV 60 nm (TSMC)
– Xilinx UltraScale (20 nm), UltraScale+ (16 nm)
– Xilinx Artix-7/Kintex-7/Virtex-7 28 nm
– Xilinx Spartan-6 45 nm (TSMC)
– Lattice SC/M 90 nm
• Ezek a technológiák költségesek
– Ezt nem minden alkalmazás viseli el
![Page 13: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/13.jpg)
BME-MIT
FPGA labor
Xilinx FPGA családokSpartan-3 Spartan-6 Virtex-6 Artix-7 Kintex-7 Virtex-7
Logikai
cella
33k 150k 760k 215k 480k 2000k
BRAM 0,65 Mb 4,8 Mb 38 Mb 13 Mb 34 Mb 68 Mb
DSP 36 180 2016 740 1920 3600
GMAC/s* 7,2 140 2419 929 2845 5335
Transciever - 8 72 16 32 96
Tr. Bit rate - 3,2 Gb/s 11,18 Gb/s 6.6 Gb/s 12.5 Gb/s 28 Gb/s
Serdes - 1080 Mb/s 1400 Mb/s 1250 Mb/s 1600 Mb/s 1600 Mb/s
PCIe - 1.0 x1 2.0 x8 2.0 x4 2.0 x8 3.0 x8
Mem.
vezérlő
166 MT/s 800 MT/s 1066
MT/s
1066
MT/s
1866
MT/s
1866
MT/s
Ár (USD) ~70 ~240 ~14.000 380 2.000-
3.000
~24.000
![Page 14: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/14.jpg)
BME-MIT
FPGA labor
Xilinx FPGA családok (2.)Kintex
UltraScale
Virtex
UltraScale
Kintex
UltraScale+
Virtex
UltraScale+
Virtex
UltraScale+
Logikai cella 1,4M 5,5M 1,14M 3,78M 2,85M
BRAM 75,9 Mb 88,6Mb 34,6Mb 94,5+360 70+270
DSP 5520 2880 1968 (3528) 12.288 9024
GMAC/s* 4000 2100 1750/3140 10.936 8000
Transciever 64 60
60
44
32
128 96
Tr. Bit rate 16,3 Gb/s 16,3 Gb/s
30,5 Gb/s
16,3 Gb/s
32,75 Gb/s
32,75 Gb/s 32,75 Gb/s
Serdes 1600 Mb/s 1600 Mb/s 1600 Mb/s 1600 Mb/s 1600 Mb/s
PCIe 6 Gen3 x8 6 Gen3 x8 5 Gen3 x16
Gen4 x8
4 Gen3 x16
Gen4 x8
6 Gen3 x16
Gen4 x8
Mem. Vezérlő 2400 MT/s 2400 MT/s 2666 MT/s 2666 MT/s 8 GB HBM2
Ár (USD) ~9000 ~55.000 ~6000 N/A N/A
![Page 15: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/15.jpg)
BME-MIT
FPGA labor
Xilinx Zynq SOC
![Page 16: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/16.jpg)
BME-MIT
FPGA labor
Xilinx UltraScale+ MPSOC
![Page 17: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/17.jpg)
BME-MIT
FPGA labor
Altera FPGA-k
• Cyclone: költséghatékony - ALM
• E, GX (3.125 Gbps), GT (5 Gbps) sorozat
• Max. 300k LE
• Arria: közepes teljesítményű - ALM
• GX (6,5 Gbps), GT (10,3125 Gbps), SX (SoC), ST (SoC)
• Max 500k LE
• Startix: nagy teljesítményű - ALM
• E (logika), GS (DSP), GX (14.1 Gbps), GT (28,05 Gbps)
• Max 1M LE
• SoC: Arria V SoC, Cyclone V, Arria 10, Stratix 10 SoC
• 2 magos ARM Coretx A9 (Stratix 10: 4 magos A53)
![Page 18: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/18.jpg)
BME-MIT
FPGA labor
Microsemi (ACTEL) FPGA-k
• Alacsony fogyasztás, flash alapú
• VersaTile
• LUT3, D-FF, Latch
• RAM/FIFO
• ARM Cortex M1 opció egyes típusokban
• IGLOO
• Max. 75k VersaTile (IGLOO/e)
• ProASIC3
• Max. 75k VersaTile (ProASIC3/e)
![Page 19: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/19.jpg)
BME-MIT
FPGA labor
Lattice FPGA-k
• Lattice ECP3
• Sztenderd LUT4 alapú architektúra
• RAM, DSP, SerDes, PLL
• iCE40 (ex-SiliconBlue) – LP és HX sorozat
• Akkumulátoros üzemhez – telefon, tablet
• Szinte 0 statikus fogyasztás
• Egyébként ~3-12 mA @ 32 MHz
• LUT4 alapú; RAM blokkok; PLL
• Pl. Samsung Galaxy S5: Lattice iCE40 LP1K; LG
C900: iCE65
![Page 20: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/20.jpg)
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
– Xilinx Virtex-5 óta
• alapelem mérete x4, azaz LUT6
![Page 21: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/21.jpg)
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 22: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/22.jpg)
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 23: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/23.jpg)
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 24: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/24.jpg)
BME-MIT
FPGA labor
A CLB erőforrása
• Az eredeti koncepció nem változott (Spartan-3, Virtex-4 FPGA-kig)
• 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 25: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/25.jpg)
BME-MIT
FPGA labor
A CLB erőforrása
• 1 Slice-ban az eddigi 2 helyett 4 LUT és 2*4
tárolóelem
• A LUT-ok 6 bemenetűek
• Elsősorban az FPGA-ban megvalósított, egyre
bonyolultabb logikák indokolták (huzalozás!)
• A Slice-ok felében továbbra is megvalósítható
extra funkció: shift regiszter, RAM
![Page 26: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/26.jpg)
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 27: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/27.jpg)
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 28: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/28.jpg)
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
![Page 29: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/29.jpg)
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 30: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/30.jpg)
BME-MIT
FPGA labor
Több bemenetű összeadók
• 3:2 Compressor + összeadó(k): Add3 LUT6-ban
ABUS=X^Y^Z
BBUS=(X&Y)|(X&Z)|(Y&Z)
1011_1001
^0010_1010
^0011_1001
1010_1010
0011_1001
10001_1100
![Page 31: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/31.jpg)
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 32: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/32.jpg)
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 33: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/33.jpg)
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 34: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/34.jpg)
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 35: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/35.jpg)
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 36: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/36.jpg)
BME-MIT
FPGA labor
A részletes struktúra
• Egyszerűsített SliceM felső és alsó logikai cellája
![Page 37: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/37.jpg)
BME-MIT
FPGA labor
Virtex-6 SLICEM
![Page 38: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/38.jpg)
BME-MIT
FPGA labor
Stratix IV ALM
![Page 39: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/39.jpg)
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 40: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/40.jpg)
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 41: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/41.jpg)
BME-MIT
FPGA labor
LUT RAM
• LUT RAM csak a SliceM oldalon realizálható
• 1 Slice 1db RAM16x1D vagy 1db RAM32x1S
![Page 42: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/42.jpg)
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 43: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/43.jpg)
BME-MIT
FPGA labor
LUT RAM – Verilog
RAM16X1S #(.INIT(16'h0000)
) RAM16X1S_inst (.O(O),.A0(A0),.A1(A1),.A2(A2),.A3(A3),.D(D),.WCLK(WCLK),.WE(WE)
);
module ram16 (input clk, we,input [3:0] a, input [7:0] d,output [7:0] o);
reg [7:0] mem[15:0];always @ (posedge clk)if (we)
mem[a] <= d;
assign o = mem[a];
endmodule
![Page 44: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/44.jpg)
BME-MIT
FPGA labor
LUT RAM – VHDL primitív
• UNISIM library-ben definiált
Library UNISIM;use UNISIM.vcomponents.all;.......................
RAM16X1S_1_inst : RAM16X1S_1generic map (
INIT => X"0000")port map (
O => O, -- RAM output
A0 => A0, -- RAM address[0] input
A1 => A1, -- RAM address[1] input
A2 => A2, -- RAM address[2] input
A3 => A3, -- RAM address[3] input
D => D, -- RAM data input
WCLK => WCLK, -- Write clock input
WE => WE -- Write enable input
);
![Page 45: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/45.jpg)
BME-MIT
FPGA labor
LUT RAM – VHDL
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
entity ram16 isport (
clk : in std_logic;we : in std_logic;addr : in std_logic_vector
(3 downto 0);din : in std_logic_vector
(7 downto 0);dout : out std_logic_vector
(7 downto 0));end;architecture rtl of ram16 istype marray is array (15 downto 0)of std_logic_vector(7 downto 0);signal memory : marray;………………….
………………………………….
begin
process(clk)beginif (clk'event and clk='1') then
if (we='1') thenmemory(CONV_INTEGER(addr)) <=
din;end if;
end if;end process;
dout <= memory(CONV_INTEGER(addr));
end;
![Page 46: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/46.jpg)
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 47: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/47.jpg)
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 48: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/48.jpg)
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 49: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/49.jpg)
BME-MIT
FPGA labor
LUT SRL – Verilog
SRLC16E #(.INIT(16'h0000)
) SRLC16E_inst (.Q(Q),.Q15(Q15),.A0(A0),.A1(A1),.A2(A2),.A3(A3),.CE(CE),.CLK(CLK),.D(D)
);
module SRL(input clk, ce, d,input [3:0] a,output q, q15);
reg [15:0] shr = 16’h0000;always @ (posedge clk)if (ce)
shr <= {shr[14:0], d};
assign q15 = shr[15];assign q = shr[a];
endmodule
![Page 50: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/50.jpg)
BME-MIT
FPGA labor
LUT SRL – VHDL
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
entity ram16 isport (
clk : in std_logic;ce : in std_logic;addr : in
std_logic_vector(3 downto 0);d : in std_logic;q, q15 : out std_logic;);
end;architecture rtl of ram16 issignal shr : std_logic_vector(15 downto 0);……………………………….
begin
process(clk)beginif (clk'event and clk='1') then
if (ce='1') thenshr <= shr(14 downto 0) & d;
end if;end if;end process;q <= shr(CONV_INTEGER(addr));q15 <= shr(15);end;
![Page 51: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/51.jpg)
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
![Page 52: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/52.jpg)
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 53: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/53.jpg)
BME-MIT
FPGA labor
LUT SRL használat
• Számlálók
• Gyűrűs számláló (one hot v. Johnson) 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 54: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/54.jpg)
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 55: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/55.jpg)
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 56: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/56.jpg)
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 57: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/57.jpg)
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 58: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/58.jpg)
BME-MIT
FPGA labor
Egyéb erőforrások
• Többféle memória modul
• DSP blokk teljes MAC struktúrával
• Beépített CPU mag/magok
• Nagysebességű soros interfészek (max ~32Gbit/s)
• PCIe IP (Gen3, Gen4 nem végleges)
• 1G/10G/100G Ethernet MAC
![Page 59: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/59.jpg)
BME-MIT
FPGA labor
Speciális blokkok az FPGA-ban
• Blokk RAM elhelyezése
![Page 60: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/60.jpg)
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 61: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/61.jpg)
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 62: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/62.jpg)
BME-MIT
FPGA labor
Blokk RAM
• Beállítások
– NO_CHANGE a kimeneten az írást követően
![Page 63: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/63.jpg)
BME-MIT
FPGA labor
Blokk RAM
• Beállítások
– READ_FIRST
![Page 64: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/64.jpg)
BME-MIT
FPGA labor
Blokk RAM
• Beállítások
– WRITE_FIRST
![Page 65: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/65.jpg)
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 66: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/66.jpg)
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 67: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/67.jpg)
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 68: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/68.jpg)
BME-MIT
FPGA labor
Blokk RAM használat
• Újabb 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 69: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/69.jpg)
BME-MIT
FPGA labor
BlokkRAM FIFO
• 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 70: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/70.jpg)
BME-MIT
FPGA labor
FIFO használat
• Xilinx: Core Generator
• Altera: MegaWizard (vagy scfifo/dcfifo
komponens)
![Page 71: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/71.jpg)
BME-MIT
FPGA labor
BRAM példányosítás (Verilog)RAMB16_S36_S36 #(
.WRITE_MODE_A("WRITE_FIRST")) RAMB16_S36_S36_inst (
.DOA(DOA), // Port A 32-bit Data Output
.DOB(DOB), // Port B 32-bit Data Output
.DOPA(DOPA), // Port A 4-bit Parity Output
.DOPB(DOPB), // Port B 4-bit Parity Output
.ADDRA(ADDRA), // Port A 9-bit Address Input
.ADDRB(ADDRB), // Port B 9-bit Address Input
.CLKA(CLKA), // Port A Clock
.CLKB(CLKB), // Port B Clock
.DIA(DIA), // Port A 32-bit Data Input
.DIB(DIB), // Port B 32-bit Data Input
.DIPA(DIPA), // Port A 4-bit parity Input
.DIPB(DIPB), // Port-B 4-bit parity Input
.ENA(ENA), // Port A RAM Enable Input
.ENB(ENB), // Port B RAM Enable Input
.SSRA(SSRA), // Port A Synchronous Set/Reset Input
.SSRB(SSRB), // Port B Synchronous Set/Reset Input
.WEA(WEA), // Port A Write Enable Input
.WEB(WEB) // Port B Write Enable Input
);
![Page 72: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/72.jpg)
BME-MIT
FPGA labor
BRAM példányosításRAMB16_S36_S36_inst : RAMB16_S36_S36generic map (
WRITE_MODE_A => "WRITE_FIRST",WRITE_MODE_B => "WRITE_FIRST")
port map (DOA => DOA, -- Port A 32-bit Data OutputDOB => DOB, -- Port B 32-bit Data OutputDOPA => DOPA, -- Port A 4-bit Parity OutputDOPB => DOPB, -- Port B 4-bit Parity OutputADDRA => ADDRA, -- Port A 9-bit Address InputADDRB => ADDRB, -- Port B 9-bit Address InputCLKA => CLKA, -- Port A ClockCLKB => CLKB, -- Port B ClockDIA => DIA, -- Port A 32-bit Data InputDIB => DIB, -- Port B 32-bit Data InputDIPA => DIPA, -- Port A 4-bit parity InputDIPB => DIPB, -- Port-B 4-bit parity InputENA => ENA, -- Port A RAM Enable InputENB => ENB, -- PortB RAM Enable InputSSRA => SSRA, -- Port A Synchronous Set/Reset InputSSRB => SSRB, -- Port B Synchronous Set/Reset InputWEA => WEA, -- Port A Write Enable InputWEB => WEB -- Port B Write Enable Input
);
![Page 73: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/73.jpg)
BME-MIT
FPGA labor
BRAM példányosítás (2)RAMB16BWER_inst : RAMB16BWER
generic map (
-- DATA_WIDTH_A/DATA_WIDTH_B: 0, 1, 2, 4, 9, 18, or 36
DATA_WIDTH_A => 0,
DATA_WIDTH_B => 0,
WRITE_MODE_A => "WRITE_FIRST",
WRITE_MODE_B => "WRITE_FIRST")
port map (
DOA => DOA, -- 32-bit output: A port data output
DOPA => DOPA, -- 4-bit output: A port parity output
DOB => DOB, -- 32-bit output: B port data output
DOPB => DOPB, -- 4-bit output: B port parity output
ADDRA => ADDRA, -- 14-bit input: A port address input
CLKA => CLKA, -- 1-bit input: A port clock input
ENA => ENA, -- 1-bit input: A port enable input
REGCEA => REGCEA, -- 1-bit input: A port register clock enable input
RSTA => RSTA, -- 1-bit input: A port register set/reset input
WEA => WEA, -- 4-bit input: Port A byte-wide write enable input
DIA => DIA, -- 32-bit input: A port data input
DIPA => DIPA, -- 4-bit input: A port parity input
ADDRB => ADDRB, -- 14-bit input: B port address input
CLKB => CLKB, -- 1-bit input: B port clock input
ENB => ENB, -- 1-bit input: B port enable input
REGCEB => REGCEB, -- 1-bit input: B port register clock enable input
RSTB => RSTB, -- 1-bit input: B port register set/reset input
WEB => WEB, -- 4-bit input: Port B byte-wide write enable input
DIB => DIB, -- 32-bit input: B port data input
DIPB => DIPB -- 4-bit input: B port parity input
);
![Page 74: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/74.jpg)
BME-MIT
FPGA labor
Altera RAM
• „Régebbi” eszközökben csak BRAM, pl.
• Cyclone IV: M9K
• Cyclone V: M10K
• Stratix-III és IV: M9K és M144K
• Stratix-V: M20K
• ALM alapú eszközök (Cyclone V és Stratix-III-
tól)
• MLAB – 640 bites LUT alapú memória (10
ALM/MLAB)
![Page 75: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/75.jpg)
BME-MIT
FPGA labor
Altera RAM példányosításCOMPONENT altsyncram
GENERIC (
……………………
numwords_a : NATURAL;
numwords_b : NATURAL;
widthad_a : NATURAL;
widthad_b : NATURAL;
width_a : NATURAL;
width_b : NATURAL;
…………………);
PORT (
clock0 : IN STD_LOGIC ;
wren_a : IN STD_LOGIC ;
address_b : IN STD_LOGIC_VECTOR (ADDR_WIDTH-1 DOWNTO 0);
clock1 : IN STD_LOGIC ;
data_b : IN STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0);
q_a : OUT STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0);
wren_b : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (ADDR_WIDTH-1 DOWNTO 0);
data_a : IN STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0);
q_b : OUT STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0);
aclr0 : IN STD_LOGIC;
aclr1 : IN STD_LOGIC
);
END COMPONENT;
![Page 76: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/76.jpg)
BME-MIT
FPGA labor
BlockRAM – Read First
module sp_ram(input clk, input we, input en,input [10:0] addr, input [ 7:0] din,output [7:0] dout);
reg [7:0] memory[2047:0];reg [7:0] dout_reg;
always @ (posedge clk)if (en)begin
if (we)memory[addr] <= din;
dout_reg <= memory[addr];end
assign dout = dout_reg;
endmodule
![Page 77: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/77.jpg)
BME-MIT
FPGA labor
BlockRAM – Read First
library IEEE;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;USE ieee.std_logic_unsigned.ALL;
entity ram isport (
clk, ce, we : in std_logic;addr : in std_logic_vector(8 downto 0);din : in std_logic_vector(35 downto 0);dout : out std_logic_vector(35 downto 0));
end;
architecture rtl of ram istype marray is array (511 downto 0) of
std_logic_vector(35 downto 0);signal memory : marray;
begin
process(clk)beginif (clk'event and clk='1') thenif (ce='1') thenif (we='1') thenmemory(CONV_INTEGER(addr)) <=
din;end if;dout <=
memory(CONV_INTEGER(addr));end if;
end if;end process;
end;
![Page 78: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/78.jpg)
BME-MIT
FPGA labor
BlockRAM – Write First
module sp_ram(input clk, input we, input en,input [10:0] addr, input [ 7:0] din,output [7:0] dout);
reg [7:0] memory[2047:0];reg [7:0] dout_reg;
always @ (posedge clk)if (en)begin
if (we)memory[addr] = din;
dout_reg = memory[addr];end
assign dout = dout_reg;
endmodule
![Page 79: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/79.jpg)
BME-MIT
FPGA labor
BlockRAM – Write First
library IEEE;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;USE ieee.std_logic_unsigned.ALL;
entity ram isport (
clk, ce, we : in std_logic;addr : in std_logic_vector(8 downto 0);din : in std_logic_vector(35 downto 0);dout : out std_logic_vector(35 downto 0));
end;
architecture rtl of ram istype marray is array (511 downto 0) of
std_logic_vector(35 downto 0);signal memory : marray;
process(clk)beginif (clk'event and clk='1') thenif (ce='1') thenif (we='1') thenmemory(CONV_INTEGER(addr)) <=
din;dout <= din;
elsedout <=
memory(CONV_INTEGER(addr));end if;
end if;end process;
end;
![Page 80: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/80.jpg)
BME-MIT
FPGA labor
BlockRAM – No Change
module sp_ram(input clk, input we, input en,input [10:0] addr, input [ 7:0] din,output [7:0] dout);
reg [7:0] memory[2047:0];reg [7:0] dout_reg;
always @ (posedge clk)if (en)begin
if (we)memory[addr] <= din;else
dout_reg <= memory[addr];end
assign dout = dout_reg;
endmodule
![Page 81: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/81.jpg)
BME-MIT
FPGA labor
BlockRAM – No Change
library IEEE;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;USE ieee.std_logic_unsigned.ALL;
entity ram isport (
clk, ce, we : in std_logic;addr : in std_logic_vector(8 downto 0);din : in std_logic_vector(35 downto 0);dout : out std_logic_vector(35 downto 0));
end;
architecture rtl of ram istype marray is array (511 downto 0) of
std_logic_vector(35 downto 0);signal memory : marray;
process(clk)beginif (clk'event and clk='1') thenif (ce='1') thenif (we='1') thenmemory(CONV_INTEGER(addr)) <=
din;elsedout <=
memory(CONV_INTEGER(addr));end if;
end if;end process;
end;
![Page 82: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/82.jpg)
BME-MIT
FPGA labor
DP BlockRAMmodule dp_ram(input clk_a, we_a, en_a, clk_b, we_b, en_b,
input [10:0] addr_a, addr_b,input [ 7:0] din_a, din_b, output [7:0] dout_a, dout_b);
reg [7:0] memory[2047:0];reg [7:0] dout_reg_a, dout_reg_b;
always @ (posedge clk_a)if (en_a)begin
if (we_a)memory[addr_a] <= din_a;
dout_reg_a <= memory[addr_a];endassign dout_a = dout_reg_a;
always @ (posedge clk_b)if (en_b)begin
if (we_b)memory[addr_b] <= din_b;
dout_reg_b <= memory[addr_b];endassign dout_b = dout_reg_b;endmodule
![Page 83: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/83.jpg)
BME-MIT
FPGA labor
DP BlockRAM – VHDL (1)entity bram isgeneric(
ADDR_WIDTH : integer := 12;DATA_WIDTH : integer := 18
);port(
clk_a : in std_logic;rst_a : in std_logic;ce_a : in std_logic;we_a : in std_logic;addr_a : in std_logic_vector(ADDR_WIDTH-1 downto 0);din_a : in std_logic_vector(DATA_WIDTH-1 downto 0);dout_a : out std_logic_vector(DATA_WIDTH-1 downto 0);
clk_b : in std_logic;rst_b : in std_logic;ce_b : in std_logic;we_b : in std_logic;addr_b : in std_logic_vector(ADDR_WIDTH-1 downto 0);din_b : in std_logic_vector(DATA_WIDTH-1 downto 0);dout_b : out std_logic_vector(DATA_WIDTH-1 downto 0)
);end bram;………………………………………………………
![Page 84: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/84.jpg)
BME-MIT
FPGA labor
DP BlockRAM – VHDL (2)
architecture rtl of bram is
type array_WbyD is array ((2**ADDR_WIDTH)-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);shared variable memory : array_WbyD := (others=>CONV_STD_LOGIC_VECTOR(0,DATA_WIDTH));
signal dout_reg_a0 : std_logic_vector(DATA_WIDTH-1 downto 0);signal dout_reg_a1 : std_logic_vector(DATA_WIDTH-1 downto 0);
signal dout_reg_b0 : std_logic_vector(DATA_WIDTH-1 downto 0);signal dout_reg_b1 : std_logic_vector(DATA_WIDTH-1 downto 0);
begin
…………………………………
![Page 85: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/85.jpg)
BME-MIT
FPGA labor
DP BlockRAM – VHDL (3)-- PORT A
process(clk_a)beginif (clk_a'event and clk_a='1') then
if (ce_a='1') thenif (rst_a='1') then
dout_reg_a0 <= (others=>'0');dout_reg_a1 <= (others=>'0');
elsedout_reg_a0 <= memory(CONV_INTEGER(addr_a));dout_reg_a1 <= dout_reg_a0;
end if;if (we_a='1') then
memory(CONV_INTEGER(addr_a)) := din_a;end if;
end if;end if;end process;dout_a <= dout_reg_a1;
![Page 86: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/86.jpg)
BME-MIT
FPGA labor
DP BlockRAM – VHDL (4)-- PORT B
process(clk_b)beginif (clk_b'event and clk_b='1') then
if (ce_b='1') thenif (rst_b='1') then
dout_reg_b0 <= (others=>'0');dout_reg_b1 <= (others=>'0');
elsedout_reg_b0 <= memory(CONV_INTEGER(addr_b));dout_reg_b1 <= dout_reg_b0;
end if;if (we_b='1') then
memory(CONV_INTEGER(addr_b)) := din_b;end if;
end if;end if;end process;dout_b <= dout_reg_b1;
end rtl;
![Page 87: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/87.jpg)
BME-MIT
FPGA labor
Implementációs constraint-ek
• Szintézer függő a constraint-ek elnevezése
• XST (ISE) többnyire támogatja a Synplify
constraint-eket is
• Verilog: kommentben, „synthesis” kulcsszó
• VHDL: attributum megadás
• UCF file-ban
reg [31:0] reg_a /* synthesis KEEP=„TRUE” */;
(* KEEP=„TRUE” *) reg [31:0] reg_a;
signal reg_a: std_logic_vector(31 downto 0);attribute keep : string;attribute keep of reg_a: signal is „TRUE”;
![Page 88: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/88.jpg)
BME-MIT
FPGA labor
XST RAM constraint-ek
• Globálisan a project-ben megadható
• Változónként is felüldefiniálható
• RAM implementáció
• RAM_EXTRACT: „yes” vagy „no”
• RAM_STYLE: „auto”, „block”, „distributed”,
„pipe_distributed”reg [7:0] memory[511:0] /* synthesis RAM_EXTRACT=„YES”
RAM_STYLE=„BLOCK” */;
type marray is array (511 downto 0) of std_logic_vector(35 downto 0);signal memory : marray;attribute RAM_EXTRACT : string;attribute RAM_STYLE : string;attribute RAM_EXTRACT of memory : signal is „YES”;attribute RAM_STYLE of memory : signal is „BLOCK”;
![Page 89: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/89.jpg)
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
![Page 90: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/90.jpg)
BME-MIT
FPGA labor
Xilinx szórzó (DSP) áramkörök
• V2, V2P, SP3:
• MULT18x18 és MULT18x18S: 18x18 bit, előjeles, kimeneti regiszter
• SP3E, SP3A
• MULT18x18SIO: 18x18 bit, előjeles, be- és kimeneti regiszterek
• SP3A DSP (SP6: SDP48A1)
• DSP48A: 18x18 bit + pre-adder + akkumulátor
• V4
• DSP48: 18x18 bit + akkumulátor
• V5
• DSP48E: 25x18 bit MUL, akkumulátor, ALU (+/-, logikai műveletek)
• V6, 7-es sorozat
• DSP48E1: 25x18 bit MUL, akkumulátor, ALU (+/-, logikai
műveletek), pre-adder
![Page 91: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/91.jpg)
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 92: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/92.jpg)
BME-MIT
FPGA labor
Szorzó – HDLmodule mul_s (input clk, en, input signed [17:0] a, b,
output reg signed [35:0] p);always @ (posedge clk)if (en)
p <= a*b;endmodule
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_signed.all;
entity mul_s is port(clk, en : in std_logic;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 mul_s;architecture rtl of mul_s is beginprocess(clk)beginif rising_edge(clk) then
if (en)p <= a * b;end if;
end if;end process;end rtl;
![Page 93: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/93.jpg)
BME-MIT
FPGA labor
Szorzó – HDL
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;
entity mul_s is port(clk, en : in std_logic;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 mul_s;architecture rtl of mul_s is beginprocess(clk)beginif rising_edge(clk) then
if (en)p <= a * b;end if;
end if;end process;end rtl;
![Page 94: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/94.jpg)
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 95: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/95.jpg)
BME-MIT
FPGA labor
Xilinx DSP48A
![Page 96: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/96.jpg)
BME-MIT
FPGA labor
Xilinx DSP48
![Page 97: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/97.jpg)
BME-MIT
FPGA labor
Xilinx DSP48E
• Max. 600 MHz működési frekvencia
• MAC (multiplay-and-accumulate) művelethez
optimalizált architektúra
• Pl. FIR szűrő
• Műveletvégzők
• 48 bites összeadó/kivonó (2x24, 2x12 SIMD)
• 48 bites logikai egység (AND, OR, NOT, …..)
• 25x18 bites szorzó
• 25 bites elő-összeadó
![Page 98: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/98.jpg)
BME-MIT
FPGA labor
Xilinx DSP48E1
![Page 99: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/99.jpg)
BME-MIT
FPGA labor
35x35 bites szorzó (SP6)
![Page 100: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/100.jpg)
BME-MIT
FPGA labor
DSP – Adder Tree vs. kaszkád
![Page 101: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/101.jpg)
BME-MIT
FPGA labor
Több bemenetű összeadók
• 3:2 Compressor + összeadó(k): Add3 LUT6-ban
ABUS=X^Y^Z
BBUS=(X&Y)|(X&Z)|(Y&Z)
![Page 102: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/102.jpg)
BME-MIT
FPGA labor
6 bementű összadó
• 6:3 Compressor + 2 db 2 bemenetű összeadó
X = A^B^C^C^D^E^F
Y = AB^AC^AD^AE^AF^
BC^BD^BE^BF^
CD^CE^CF^DE^DF^EF
Z = ABCD | ABCE | ABCF | ABDE | ABDF | ABEF |
ACDE | ACDF | ACEF | ADEF | BCDE | BCDF |
BCEF | BDEF | CDEF
![Page 103: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/103.jpg)
BME-MIT
FPGA labor
1-MAC FIR
![Page 104: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/104.jpg)
BME-MIT
FPGA labor
Párhuzamos FIR
• Mintavételi frekvencia ~= működési frekvencia
![Page 105: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/105.jpg)
BME-MIT
FPGA labor
Részben párhuzamos FIR
![Page 106: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/106.jpg)
BME-MIT
FPGA labor
Interpoláció (1)
• Bemeneti mintavételi frekvencia egész számú
többszörözése (N-szerezése)
• Új minták beillesztése (N-1 db 0)
• Aluláteresztő szűrő Fout/2/N vágási frekvenciával
![Page 107: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/107.jpg)
BME-MIT
FPGA labor
Interpoláció (2)
• Kimeneti minták generálása:
• Ez a Polyphase filter
![Page 108: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/108.jpg)
BME-MIT
FPGA labor
Párhuzamos interpoláló FIR
![Page 109: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/109.jpg)
BME-MIT
FPGA labor
Decimálás (1)
• Mintavételi frekvencia N-ed részére csökkentése
• Aluláteresztő szűrés Fin/2/N-re
• Minden N mintából N-1 eldobása
• Azt eldobott mintákat felesleges kiszámolni!
![Page 110: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/110.jpg)
BME-MIT
FPGA labor
Decimálás (2)
• Kimeneti minták generálása:
![Page 111: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/111.jpg)
BME-MIT
FPGA labor
Párhuzamos decimáló FIR
![Page 112: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/112.jpg)
BME-MIT
FPGA labor
Xilinx constarint-ek
• MULT_STYLE: auto, block, pipe_block, kcm,
csd, lut, pipe_lut
• KCM: constant coefficient multiplier
• CSD: canonic signed digit (konstansok átkódolása
hatékonyabb műveletvégzéshez)
• USE_DSP48: auto, yes, no
• Szorzáshoz automatikusan használja
• Összeadáshoz nem
![Page 113: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/113.jpg)
BME-MIT
FPGA labor
Összeadó DSP48-cal
module add(input clk,input signed [47:0] a,input signed [47:0] b,output signed [47:0] p
)/* synthesis USE_DSP48="yes" */;
reg signed [47:0] a_reg;reg signed [47:0] b_reg;reg signed [47:0] p_reg;always @ (posedge clk)begin
a_reg <= a;b_reg <= b;p_reg <= a_reg + b_reg;
endassign p = p_reg;
endmodule
![Page 114: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/114.jpg)
BME-MIT
FPGA labor
Összeadó DSP48-callibrary IEEE; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL;USE ieee.std_logic_signed.ALL;
entity dsp isport (
clk : in std_logic; d0, d1 : in std_logic_vector(47 downto 0);q : out std_logic_vector(47 downto 0)
);attribute USE_DSP48 : string;attribute USE_DSP48 of dsp : entity is "YES";end;
architecture rtl of dsp isbegin
process(clk)beginif (clk'event and clk='1') then
q <= d0 + d1;end if;end process;
end;
![Page 115: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/115.jpg)
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 116: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/116.jpg)
BME-MIT
FPGA labor
Órajel erőforrások
• Globális órajel terjesztő hálózat (minden szinkron
elemhez) - BUFGMUX
• Globális órajel bemenet (GCK láb)
• Órajel menedzsment modulok (DCM, PLL)
• Belső logika
• Clock-capable I/O
• BUFIO – I/O órajel buffer – CSAK I/O-hoz
• BUFR – Regionális órajel buffer – adott régióhoz
![Page 117: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/117.jpg)
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 118: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/118.jpg)
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, I0 ciklus végét megvárja, kimenet 0,
ezután vár I1 alacsony értékére és átkapcsol rá
![Page 119: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/119.jpg)
BME-MIT
FPGA labor
Verilog leírás
• Az órajelként használt külső jelek bufferelése
automatikus (IBUFG, IBUFGDS nem!)
• Az FPGA-ban generált órajelekre ez nem igaz!!
IBUFGDS IBUFGDS_inst (.O(O), // Clock output
.I(I), // Diff_p input
.IB(IB) // Diff_n input
);
BUFGMUX BUFGMUX_inst (.O(O), // Clock output
.I0(I0), // Clock0 input
.I1(I1), // Clock1 input
.S(S) // Clock select
);
![Page 120: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/120.jpg)
BME-MIT
FPGA labor
VHDL leírás
• Az órajelként használt külső jelek bufferelése
automatikus (IBUFG, IBUFGDS nem!)
• Az FPGA-ban generált órajelekre ez nem igaz!!
IBUFGDS_inst : IBUFGDSgeneric map (
IOSTANDARD => "DEFAULT")port map (
O => O, -- Clock buffer output
I => I, -- Diff_p clock buffer input
IB => IB -- Diff_n clock buffer input);
BUFGMUX_inst : BUFGMUXport map (
O => O, -- Clock MUX output
I0 => I0, -- Clock0 input
I1 => I1, -- Clock1 input
S => S -- Clock select input
);
![Page 121: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/121.jpg)
BME-MIT
FPGA labor
Regionális órajelek (1.)
• FPGA mérettől függő számú órajel régió (6…18)
![Page 122: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/122.jpg)
BME-MIT
FPGA labor
Regionális órajelek (2.)
• BUFIO/BUFR használat
![Page 123: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/123.jpg)
BME-MIT
FPGA labor
Órajel multiplexálás logikával
![Page 124: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/124.jpg)
BME-MIT
FPGA labor
Órajel multiplexálás logikával
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity clock_mux isport (
clk_i0 : in std_logic;clk_i1 : in std_logic;sel : in std_logic;clk_o : out std_logic
);end clock_mux;
architecture rtl OF clock_mux is
signal ff_clk0 : std_logic_vector(2 downto 0) := "000";signal ff_clk1 : std_logic_vector(2 downto 0) := "000";signal clk_o : std_logic;begin
process(clk_i0)beginif (clk_i0'event and clk_i0='1') then
ff_clk0(0) <= not sel and not ff_clk1(2);ff_clk0(1) <= ff_clk0(0);
end if;end process;
process(clk_i0)beginif (clk_i0'event and clk_i0='0') then
ff_clk0(2) <= ff_clk0(1);end if;end process;
process(clk_i1)beginif (clk_i1'event and clk_i1='1') then
ff_clk1(0) <= sel and not ff_clk0(2);ff_clk1(1) <= ff_clk1(0);
end if;end process;
process(clk_i1)beginif (clk_i1'event and clk_i1='0') then
ff_clk1(2) <= ff_clk1(1);end if;end process;
clk_o <= (clk_i0 and ff_clk0(2)) or(clk_i1 and ff_clk1(2));
![Page 125: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/125.jpg)
BME-MIT
FPGA labor
Órajel generálás
• Spartan-3: DCM
• Spartan-6: DCM, DCM_CLKGEN, PLL
• Virtex-5, Virtex-6: MMCM (PLL)
• Artix-7, Kintex-7, Virtex-7: MMCM, PLL
![Page 126: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/126.jpg)
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ó
– DFS frekvencia szintézer
• Tipikus alkalmazás
![Page 127: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/127.jpg)
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 128: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/128.jpg)
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 129: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/129.jpg)
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 130: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/130.jpg)
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 131: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/131.jpg)
BME-MIT
FPGA labor
DCM példányosítás
DCM_SP #(.CLKDV_DIVIDE(2.0),.CLKFX_DIVIDE(1),.CLKFX_MULTIPLY(4),.CLKIN_DIVIDE_BY_2("FALSE"),.CLKIN_PERIOD(0.0),.CLKOUT_PHASE_SHIFT("NONE"),.CLK_FEEDBACK("1X"),.DLL_FREQUENCY_MODE("LOW"),.DUTY_CYCLE_CORRECTION("TRUE"),.PHASE_SHIFT(0),.STARTUP_WAIT("FALSE")
) ……………………………………
……… DCM_SP_inst (.CLK0(CLK0),.CLK180(CLK180),.CLK270(CLK270),.CLK2X(CLK2X),.CLK2X180(CLK2X180),.CLK90(CLK90),.CLKDV(CLKDV),.CLKFX180(CLKFX180),.LOCKED(LOCKED),.PSDONE(PSDONE),.STATUS(STATUS),.CLKFB(CLKFB),.CLKIN(CLKIN),.PSCLK(PSCLK),.PSEN(PSEN),.PSINCDEC(PSINCDEC),.RST(RST));
![Page 132: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/132.jpg)
BME-MIT
FPGA labor
DCM kaszkádosítás
• DCM kényes a reset-reprocess(clk0_fx_bufg, rst, dcm_locked(0))beginif (rst='1' or dcm_locked(0)='0') then
rst_cnt <= (others=>'0');dcm_rst <= '1';
elsif (clk0_fx_bufg'event and clk0_fx_bufg='1') thenif (rst_cnt(23)='0') then
rst_cnt <= rst_cnt+1;elsif (rst_cnt(23)='1' and dcm_locked(1)=‘0') then
rst_cnt <= (others=>'0');end if;
if (rst_cnt(23 downto 22)="00") thendcm_rst <= '1';
elsedcm_rst <= '0';
end if;end if;end process;
![Page 133: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/133.jpg)
BME-MIT
FPGA labor
DCM időzítési kritériumok
• Spartan-6, -2, DLL
• Bemenet: 5…250 MHz
• Kimenet: 5…250 MHz
• Spartan-6, -2, DFS
• Bemenet: 0,5…333 MHz
• Kimenet: 5…333 MHz
![Page 134: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/134.jpg)
BME-MIT
FPGA labor
PLL
• Phase Locked Loop (6-os sorozattól)
• 6 kimenet, egyedi fázissal és osztási aránnyal
• Újrakonfigurálható
D
MFCLKIN VCOF
OFVCO
1FOUT
![Page 135: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/135.jpg)
BME-MIT
FPGA labor
PLL időzítési kritériumok
• Spartan-6, -2
• Bemenet (BUFIO): 19…450 MHz
• Bemenet (BUFG): 19…375 MHz
• PFD: 19…400 MHz
• VCO: 400…1000 MHz
• Kimenet (BUFG): 3,125…375 MHz
• Kimenet (BUFPLL): 3,125…950 MHz
![Page 136: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/136.jpg)
BME-MIT
FPGA labor
Altera órajel kezelés
• Hasonló a Xilinx-hoz,
picit több megkötés
![Page 137: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/137.jpg)
BME-MIT
FPGA labor
Altera Clk Control + PLL
![Page 138: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/138.jpg)
BME-MIT
FPGA labor
Altera Cyclone IV PLL
![Page 139: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/139.jpg)
BME-MIT
FPGA labor
Altera PLL időzítési kritériumok
• Cyclone IV, -8
• Bemenet: 5…472,5 MHz
• PFD: 5…325 MHz
• VCO: 600…1300 MHz
• Kimenet: 0…402,5 MHz
![Page 140: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/140.jpg)
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
![Page 141: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/141.jpg)
BME-MIT
FPGA labor
I/O erőforrások
Több I/O szabvány támogatása
– Aszimmetrikus („Single ended”)
• LVCMOS, LVTTL, HSTL, SSTL, PCI
– Differneciális
• LVDS, RSDS, TMDS, Differential HSTL & SSTL
– Vccaux (bankonként)
• IOB pre-drivers, differencális bem. erősítő/komparátor, LVDS bias
generators, egyéb belső áramköri elemek
– Vcco (bankonként)
• I/O feszültség
– Kimeneti meghajtás erősség &
slew rate állítás
– PULLUP, PULLDOWN, KEEPER
![Page 142: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/142.jpg)
BME-MIT
FPGA labor
IOB
IOB
– Kapcsolat a láb (PAD) és az FPGA belső
erőforrásai között
![Page 143: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/143.jpg)
BME-MIT
FPGA labor
IOB attributumok
• PULLUP: gyenge felhúzó ellenállás
• PULLDOWN: gyenge lehúzó ellenállás
• KEEPER: gyenge fel/lehúzás, az utolsó logikai
szintet tartja a meghajtás után is (nem lebeg)
• DRIVE_STRENGTH: meghajtás erősség (amper)
• SLEW_RATE: jelváltási sebesség (FAST/SLOW)
![Page 144: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/144.jpg)
BME-MIT
FPGA labor
I/O referencia feszültség
• I/O bankonként állítható
• Megegyezik az adott bankban használt I/O
feszültséggel
• Lehet külső forrás (VREF lábak)
• Egyes FPGA-knál belül is előállítható
![Page 145: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/145.jpg)
BME-MIT
FPGA labor
Termináció
• Ki/bemenet impedancia illesztése
• Külső ellenállás
• DCI – Digitally Controlled Impedance
![Page 146: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/146.jpg)
BME-MIT
FPGA labor
DCI
• Digitally Controlled Impedance
• On-Die Termination
• Egy (külső) referencia ellenállás értékét „másolja”
• VRN/VRP lábak
• Folyamatosan változik (pl. hőmérséklet,
tápfeszültség változás kompenzációja)
• Soros vagy párhuzamos lezáró ellenállás
![Page 147: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/147.jpg)
BME-MIT
FPGA labor
DCI példa: DDR2 adatvonal
• Külső ellenállásokkal
• DCI a bemeneten
• DCI mindkét oldalon
![Page 148: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/148.jpg)
BME-MIT
FPGA labor
I/O primitívek
• Single ended
– IBUF, IBUFG, OBUF, OBUFT, IOBUF
• Differenciális
– IBUFDS, IBUFGDS, OBUFDS, OBUFTDS, …
![Page 149: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/149.jpg)
BME-MIT
FPGA labor
Spartan-3 IOB
![Page 150: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/150.jpg)
BME-MIT
FPGA labor
Spartan-6 IO Tile
![Page 151: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/151.jpg)
BME-MIT
FPGA labor
Bemenetek
• Standard lehetőségek
• Kombinációs; regiszterezett; latch bemenet
• DDR bemeneti FF
– OPPOSITE_EDGE, SAME_EDGE,
SAME_EDGE_PIPELINED
![Page 152: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/152.jpg)
BME-MIT
FPGA labor
DDR bemeneti FF
• DDR OPPOSITE_EDGE
![Page 153: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/153.jpg)
BME-MIT
FPGA labor
DDR bemeneti FF
• DDR SAME_EDGE
• DDR SAME_EDGE_PIPELINED
![Page 154: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/154.jpg)
BME-MIT
FPGA labor
Kimenetek
• Standard lehetőségek
• Kombinációs, FF, latch
• FF rendelkezésre áll a a tri-state vezérlőjelhez is
• DDR kimeneti regiszter
![Page 155: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/155.jpg)
BME-MIT
FPGA labor
DDR kimeneti FF
• OPPOSITE_EDGE
• SAME_EDGE
![Page 156: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/156.jpg)
BME-MIT
FPGA labor
Órajel kimenet
• Belső, nagy frekvenciás órajel osztása
• ODDR FF
reg [1:0] clk_div;always @ (posegde clk)
clk_div <= clk_div + 1;
assign clk_d2 = clk_div[0];assign clk_d4 = clk_div[1];
ODDR2 ODDR2_clk (.Q(clk_pin),.C0(clk),
.C1(~clk),
.CE(1'b1),
.D0(1'b1),
.D1(1'b0),
.R(1'b0),
.S(11b0));
![Page 157: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/157.jpg)
BME-MIT
FPGA labor
I/O Delay
• Programozható késleltetővonal (SP6, V4, V5, V6)
• CE & INC
• késleltetés állítás
• CINVCTRL:
• órajel invertálás
• IDELAYCTRL
• Kalibráció
• V4, V5, V6
• Fix 200 MHz-ről üzemel
• Példányosítás, automatikus
replikáció (általában…)
![Page 158: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/158.jpg)
BME-MIT
FPGA labor
ISERDES
• Soros-párhuzamos átalakító
• SP6
• SDR:2,3,4 bites kimenet, kaszkádosítható (5,6,7,8)
• V4, V5, V6
• SDR: 2,3,4,5,6 bites kimenet, kaszkádosítható (7,8)
• DDR: 4,6,8,10 bites kimenet, kaszkádosítható (8, 10)
![Page 159: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/159.jpg)
BME-MIT
FPGA labor
ISERDES (SP6)
![Page 160: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/160.jpg)
BME-MIT
FPGA labor
Forrás szinkron bemenetek
• Forrás szinkron (source synchronous): az adatküldő fél
küldi az órajelet is
• „Edge aligned”: az órajel él az adatváltással egy
időpontban van
• „Center aligned”: az órajel éle az adatváltások között
„félidőben”, azaz stabil adatnál van
• Órajel frekvencia
• Az adatsebességgel azonos (vagy DDR esetben a fele) –
pl. RAM, MIPI
• Az adatsebesség valahányad része, pl HDMI
![Page 161: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/161.jpg)
BME-MIT
FPGA labor
DDR S. Sync. BUFIO
![Page 162: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/162.jpg)
BME-MIT
FPGA labor
Kalibráció és fázis detektálás
• IDELAY kalibráció (adat): egy órajel periódus hány
delay tap-nek felel meg (hőmérséklet & tápfeszültség
függő)
• Init CAL master & slave
• Reset
• CAL slave (periodikusan, de viszonylag ritkán)
• Master-t nem, mert CAL alatt invalid a kimenet
• Fázis detektálás (IDELAY állítás ISERDES alapján)
• 2-4 adatváltást vár ISERDES „VALID” kimenet
• Fázis módosítás irány ISERDES „INCDEC” kimenet
• BitSlip: adat szón belüli bit igazítás
![Page 163: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/163.jpg)
BME-MIT
FPGA labor
OSERDES
• Párhuzamos-soros átalakító
• Adat és háromállapotú vezérlőjel bemenet
• SP6
• SDR: 2,3,4 bites bemenet
• V5, V6
• SDR, DDR: 2,3,4,5,6 bites bemenet (háromállapotú:
max 4)
![Page 164: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/164.jpg)
BME-MIT
FPGA labor
Xilinx UltraScale
• 1 Slice = 8 LUT + 16 FF, 1 Slice/CLB
• 4 CE/CLB, több kimenet/Slice: LUT, MUX, FF
• F9MUX
• Distributed RAM
• Független írási/olvasási CE
• BRAM: Dedikált kaszkádosítás
• UltraRAM: 4Kx72 bit, dual-port
• DSP: 27x18 szorzó
• Transciever: 16 – 32 Gb/s
• Megnövelt huzalozási kapacitás
• Átdolgozott órajel terjesztés kisebb skew
![Page 165: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/165.jpg)
BME-MIT
FPGA labor
![Page 166: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/166.jpg)
BME-MIT
FPGA labor
Gyors összehasonlítás
• Altera Stratix III
– 11.168 USD
• Xilinx Virtex4
– 10.558 USD
• Lattice SC/M
– 2.275 USD
![Page 167: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/167.jpg)
BME-MIT
FPGA labor
Gyors összehasonlítás
• Altera Stratix IV: 800 – 18.000 USD
![Page 168: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/168.jpg)
BME-MIT
FPGA labor
Gyors összehasonlítás
Xilinx Virtex-6: 900 – 10.000 USD
![Page 169: UDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM …home.mit.bme.hu/~szanto/education/vimima13/FPGA_I... · 2017. 5. 29. · DSP 5520 2880 1968 (3528) 12.288 9024 GMAC/s* 4000 2100](https://reader033.vdocuments.pub/reader033/viewer/2022061000/60af1ca7111fb457211f1e34/html5/thumbnails/169.jpg)
BME-MIT
FPGA labor
Gyors összehasonlítás
• Altera Cyclone IV
– 10 - 600 USD
• Xilinx Spartan6
– 16 – 200 USD
• Lattice ECM
– 11 - 273 USD
• Actel IGLOO
– 13 – 295 USD