Take Aways from Steve - Budapest University of Technology

Download Report

Transcript Take Aways from Steve - Budapest University of Technology

Mit jelent az, hogy “Beágyazott Rendszer?”
“Egy specializált számítógép rendszer, ami egy nagyobb
rendszer vagy berendezés része.”
Webopedia
“…egy beágyazott rendszer előre definiált feladatokat teljesít,
általában speciális követelményeknek megfelelve. Mivel a
rendszer egy speciális feladatra készült, ezért a
tervezőmérnökök optimalizálták, csökkentve a méretét és a
költségeket.”
Wikipedia
Példák beágyazott rendszerekre
Az ipar legfontosabb tervezési kihívásai napjainkban
• A HW mérnök problémája:
A komplex megoldások kihívása
– Ethernet, USB, video, audio, (iPod, cell phone)
• A SW mérnök problémája:
A szoftver méret exponenciális növekedése
– Megközelítőleg a teljes fejlesztési költségek 50% a szoftverrel kapcsolatos
– A legtöbb beágyazott rendszer fejlesztése a szoftver problémák miatt késik
• A terméktervezési ciklus problémája:
Az egyre bonyolultabb rendszerek kihívása.
A tervezési ciklus
Terv
Test
Rendszer
Specifikáció
Alkalmazási
teszt
Kalibrálás és
Funkcionális Teszt
Tervezés és
Szimuláció
Prototípus
Rendszer
Teszt (HIL)
Kódgenerálás
Komplex vezérlési alkalmazások
Precíziós gépi vezérlések
Repülés vezérlés
Ipari vezérlések
Mozgás vezérlés
Motor vezérlés
Gyártási volumen
ASSP
ASIC
Egyedi
kártyák
Standard
Silicon
ODM kártyák
COTS kártyák
Moduláris redsz.
Kulcsrakész rendszerek
Bevezetés költsége
Hogyan csökkenthetjük a beágyazott rendszerek tervezése
során a komplexitást?
Hagyományos beágyazott rendszerek fejlesztési ideje
Hardver tervezés: 2 hét
Logikai és áramköri tervezés: 2 hét
Hardver verifikáció: 2 hét
Szoftver tervezés/kódolás: 2 hét
Szoftver integráció: 2 hét
Rendszer teszt/ellenőrzés: 2 hét
ÖSSZESEN: 12 hét, $50,000 - $150,000
Moduláris és készen kapható elemekből
építhető beágyazott rendszerek
Hardver tervezés: 0 hét
Logikai és áramköri tervezés: 0 hét
Hardver verifikáció: 0 hét
Szoftver tervezés/kódolás: 1 hét
Szoftver integráció: 1 hét
Rendszer teszt/ellenőrzés: 1 hét
ÖSSZESEN: 3 hét, $17,000 + PC költség
Általános HW rendszerarchitektúrák
Analog
I/O
Analog
I/O
Sensor
I/O
Sensor
I/O
Processor
FPGA
Processor
Digital
I/O
Bus
I/O
USB,
Ethernet
Digital
I/O
Analog
I/O
Sensor
I/O
Processor
Digital
I/O
Bus
I/O
USB,
Ethernet
Bus
I/O
USB,
Ethernet
Általános beágyazott kommunikációs
módszerek
SPI
I2C
Serial
2. Előadás:
Téma:
A. Általános FPGA programozási technikák
Tartalom
• FPGA műveleti paletta
• Egyszerű FPGA VI
• Párhuzamosság és megosztott erőforrások
• Egészaritmetikai kérdések
FPGA műveleti paletta
FPGA specifikus funkciók
•Programozási technikák
•Eszköz I/O
•Aritmetikai és logikai elemek
•Tömbök és klaszterek
•Időzítések
•Matematikai és vezérlési funkciók
•Szinkronizálás és FIFO elemek
•Táblázatok
Egyszerű FPGA VI
• F=(A+B)CD
LabVIEW technológia leképezése
FPGA-ra
A megadott logika leképezése FPGA: F =(A+B)CD
F
A
B
C
D
A fordítási folyamat és a szerver
• A LV diagramok konvertálása átmeneti leíró fájlokra
• A leíró fájlok elküldése a fordító szerverre
– Lefordítja az adat fájlokat az FPGA-ra
– Visszaadja az FPGA konfigurációs fájlt a LabVIEW-nak
– A bitfolyamot egy VI tárolja
Compile
Server
• A LabVIEW környezet egy kliens
– Tetszőlegesen kapcsolódhat a szerverhez és leválhat róla a
fordítás után
Letöltés
Windows OS
LabVIEW FPGA Module
• A RUN parancs
kiadása után a fordítás
végén automatikusan
történik
FPGA VI
Bit File Embedded
Target FPGA
Download
FPGA VI
( a bitfájl maga)
Interaktív mód
Windows OS
LabVIEW FPGA Module
• Az FPGA-n futó VI egy
Előlapi panelen keresztül
érhető el
• Nincs debug lehetőség
– A VI az FPGA-n fut
Target FPGA
FPGA VI
(Front Panel)
Kommunikáció
FPGA VI
(működő)
Host PC interaktív mód
Windows OS
• A Host PC VI Előlapja
biztosítja FPGA VI
kommunikációt
• Megenged egyéb
feldolgozást is a Host VI-ban
Target FPGA
VI
(Front Panel)
Kommunikáció
FPGA VI
(működő)
Windows Target mód
Windows OS
LabVIEW FPGA Module
(targeted to Windows)
• Az FPGA VI a Windows
rendszeren fut
• Szoftver emuláció
– Nincs hardver időzítés
• Debuggolás lehetséges
FPGA VI
– A logika ellenőrzése fordítás előtt
Megosztott erőforrások
Mielőtt egy taszk használhatna egy megosztott erőforrást, meg kell
várnia, míg az eszköz felszabadul.
Task 1
Megosztott
erőforrás
Fut
Task 2
Vár
A Task 2 akkor indulhat, ha a Task 1 befejezte az erőforrás
használatát
Task 1
Vár
Megosztott
erőforrás
Task 2
Fut
Megosztott erőforrások
• Megosztott erőforrások:
– Digitális kimenetek
– Memória/FIFOs
– Nem újra-beépülő VI-ok
– Lokális változók
Példa megosztott erőforrásokra
VI-ok megosztása (nem újra-beépülő VI-ok)
• Nem újra-beépülő (Alapértelmezett)
– A VI megosztott
– Egyetlen példányban épül be az FPGA eszközbe
• Újra-beépülő VI
– A diagram minden példánya külön logikai elemekre képződik
le az FPGA-ban (több helyet igényel)
• Beállítható az erőforrás tulajdonságokban az opciók között
Egész aritmetika
• Nincs lebegőpontos
művelet
• Sem szimpla, sem dupla
pontosságban
Egész aritmetika
• Adatok skálázása
– A lebegőpontos szorzást/osztást helyettesítsük skálázással
– Leginkább 16 bites egészeknél használható, a számításoknál 32 bites
szélességet használva
• Műveletek
– Szorzás egész értékű skálázó értékkel
– Skálázás 2 hatványaival
– Együttesen megoldható a szorzás törttel művelet
Egész aritmetika
• Változó értékű skálázáshoz a skálázó faktor kiszámítható és
beállítható a Host VI-ban
Például:
Skálázó faktor: 11500
Léptetés: -14 bit jobbra
A művelet eredménye: 11500 / 16384 = 0.7019
Egész aritmetika
• A matematikai műveletek
során előforduló
túlcsordulások kezelésére és
elkerülésére használjunk
szaturációs műveleteket
• Túlcsordulás esetén két
lehetőség van
-Szaturáció
-Átfordulás
3. Előadás:
Téma:
A. FPGA I/O konfigurálása
B. FPGA I/O paletta
C. I/O típusok
Az FPGA I/O konfigurálása
Az FPGA I/O használata
Az FPGA I/O kétféleképpen használható:
•
Áthúzhatjuk a LabVIEW Project-ből
•
Tegyünk egy üres I/O komponenst a blokk diagramba és konfiguráljuk
I/O típusok
• Digitális vonalak – Boole változók
írhatók/olvashatók a vonalakról
• ADC és DAC – Magas szintű VI-ok, értékek
írására és olvasására; NI R-Series hardver
• Előre kiosztott IO lábak az FPGA-n
(pl. Xilinx Spartan 3E kártyán)
– Használjuk a példa projekteket mintaként
Számláló készítése Digital I/O vonalakkal
• A minimális használható pulzusszélességet a ciklus periódusideje szabja meg
Bináris konverzió az Analog I/O vonalakkal
• Az Analóg I/O használatakor a bináris értéket a
nominális értékre jkell konvertálni a host VI-ban
• A bináris konverziós tényező az aktuális kártyától függ
– Spartan 3E; 14-bit ADC
– NI Hardware; modulonként változó
3A Előadás:
Téma:
A. Digitális I/O protokollok az FPGA I/O vonalakkal
Általános digitális kommunikációs módszerek
• Komponens/IC kommunikáció
– Elektromos tervezés: SPI, I2C, JTAG, PS/2, …
• Rendszer kommunikáció
– Repülés: MIL-STD-1553, ARINC-429, …
– Autóipar: CAN, MOST, KWP, 1939, …
• Távközlés
– Űrkutatás: PCM/Telemetria
• Fogyasztói elektronika
–
Digitális audió: S/PDIF, I2S
• Egyedi
– Eszköz specifikus megvalósítás
I2C kommunikáció
SPI kommunikáció
Pont-pont Master - Slave SPI kapcsolat
Egy Master, több Slave SPI busz
kapcsolat
PWM mommunikáció
• A PWM használható egyszerűbb
szervo vezérléseknél
Pulzus szélesség
0.6 ms
1.5 ms
2.4 msc
Szög
-45 fok
0 fok
-45 fok
Megjegyzés
minimum pulzus szélesség
középállás
maximum pulzus szélesség
A LabVIEW FPGA használata digitális protokollok
generálására
Látogassunk el www.ni.com oldalra, ahol a LabVIEW FPGA-hoz
különböző példamegoldások találhatók a PWM, I2C, SPI, és
más protokollokhoz
4. előadás:
Témák:
A. Időzítési funkciók
B. Ciklusvégrahajtás különböző időzítési
funkciókkal
C. Párhuzamos ciklusvégrehajtás
D. Ciklusok szinkronizálása
E. Adatmegosztás
Időzítési vezérlő függvények
Időzítő függvények konfigurálása
• Számolási egységek
– Ütemek
– μsec
– msec
• Belső számlálók mérete
– 32 Bit
– 16 Bit
– 8 Bit
Ciklusidőzítés
• A szokásosan használt ciklus
szerkezetben a ciklus időzítő az első
hurok végrehajtás előtt inicializálja a
hurok időzítését
• Ha a kód végrehajtása egy esetben
meghaladja a beállított időzítést, akkor
a hurok időzítő ezt tolerálja és ettől
függetlenül a továbbiakban is az
eredetileg beállított hurok időzítést
tartja.
A ciklusidő beállítás és a várakozás értelmezése
• A kódszerkezet teljesen azonos
• A ciklus időzítő kód csak az első lefutáskor aktív
• A várakozás a hurokvégrehajtás minden
iterációjában aktív
Ütemszámláló alkalmazási példa:
Végrehajtási idő mérése
1. Módszer
2. Módszer
Időzítés használata kiválasztott órajelciklushoz
időzített ciklusokhoz
• Több funkció végrehajtása
egyetlen órajel alatt
• A ciklus alapértelmezésben a
fordításkor megadott órajel
sebesség szerint hajtódik
végre
• Javítja a kódvégrehajtás
sebességét és hatékonyságát
• Minden kódrészletnek
egyetlen órajelciklus alatt kell
végrehajtódnia
50 MHz Clock = Spartan 3E HW
40 MHz Clock = NI HW
16MHz Clock = Logsys HW
Többszörös órajel tartományok
• A rendszerórajel alapján különböző
sebességű órajeltartományok
alakíthatók ki
• Ennek megfelelően a különböző egy
órajelciklus időzítésű hurkok
működtethetők eltérő órajelekről
• Támogatott I/O egységek:
• R sorozatú digitális I/O-k
• cRIO-9401
• Használható:
– Órajelek generálására
– Lokális sebesség
optimalizálás
4.1 gyakorlat
Téma:
Időzítés és IO
Tárgy:
To create a VI that reads and
writes to AI/O and sets a digital
line high when threshold value
is reached
Solution:
Found in Solutions folder
Párhuzamos ciklus végrehajtás
• Előírja a ciklus végrehajtás sorrendjét
– Az olyan struktúrák, mint FIFO vagy eseményvezérlés képes
meghatározni a ciklusok lefolyását és a végrehajtás sorrendjét
– Ezek a struktúrák tudják szinkronizálni a párhuzamos
végrehajtású ciklusokat is
• Adatmegosztás
– Az adatok átadhatók a párhuzamos ciklusok között az FPGA-ban
– Használhatunk FIFO-t, memóriát vagy lokális változókat
Ciklus végrehajtási sorrend FIFO-val
FPGA
Acquisition
FPGA FIFO
FPGA FIFO
Indicator
Data Flow
• Az FPGA FIFO továbbítja
az adatokat a párhuzamos
ciklusok között
• A FIFO határozza meg a
végrehajtási sorrendet
– Az adatgyűjtő beírja az
adatokat a FIFO-ba
– A megjelenítő kiolvassa az
adatokat a kijelzéshez a
FIFO-ból
FIFO-k használata adatátadásra
FIFO olvasása
Adatbeolvasás
az eszközökről
5. Előadás:
Téma:
A. Az FPGA VI és a gazda VI (Host VI) interfész
használata
Host interfész VI-ok
• A felügyelő VI alkalmazás és az FPGA VI a közötti
kommunikációt biztosítja
• Futtatható a Windows környezetben vagy a valósidejű
beágyazott rendszeren
Host VI
FPGA VI
FPGA VI interfész lehetőségek
FPGA VI hivatkozás megnyitása
• Szerkesztési időben
– A kiválasztott FPGA VI (Target VI) vagy a bitfájl alapján
határozhatók meg az elérhető vezérlési lehetőségek
– A kiválasztott VI a megnyitandó FPGA VI hivatkozások
egy rejtett (subVI) komponense lesz
– Válasszuk ki a platformot
• Futásidőben
– Letölti a kiválasztott VI-t (bitfájlt) az FPGA-ra, hacsak ez
már nem történt meg korábban
– Visszaad egy referenciát
Válasszuk ki a FPGA Target VI…
• Válasszuk ki a kívánt VI-t vagy bitfájlt, amit az
FPGA-ban szeretnénk végrehajtani
• Biztosítja a kezelőpanel vezérlő eszközeinek
és státusz indikátorainak elérését
referenciákon keresztül
Read/Write Control
• Az FPGA VI-hoz tartozó
adatok küldésére, fogadására
szolgál
• A vezérlő/kijelző elemek
írása/olvasása a Read/Write
Control-ban megadott
felsorolásuk sorrendjében
történik
• Komplex adatstruktúrák,
tömbök, klaszterek is
használhatók
Close FPGA VI Reference
• A letöltött FPGA VI-t futó
állapotban tudja hagyni
• Le tudja állítani az FPGA VI
futását
Az FPGA VI interfészek használata
Eseményvezérlés
•
•
•
Futtatás
Letöltés (Minden letöltés újrainicializálást
okoz)
Várakozás megszakítás kérésre ( IRQ )
•
Megszakításkérés nyugtázása IRQ
6. Előadás:
Téma:
A. Az FPGA és a gazda alkalmazás közötti adatátvitel
szinkronizálása
LabVIEW FPGA és Host kommunikáció
• Az FPGA VI és a Host VI alapvetően egymáshoz
képes aszinkron folyamatok
• Minden egyes VI a többitől függetlenül fut
• Az adatátvitel szinkronizálását a megvalósított
alkalmazások igényei alapján kell megvalósítani
Aszinkron és szinkron alkalmazások
• Aszinkron alkalmazás
– Az alkalmazás nem igényel kötött szinkronizálást az
vezérléshez vagy az adatfeldolgozáshoz
– Az időzítést az FPGA biztosítja, de ez nincs
szinkronizálva a Host alkalmazáshoz
– A beérkező legfrissebb adat mindig használható – ez
általában a vezérlőalkalmazások jellemzője
• Szinkron alkalmazások
– Szoros szinkronizáció szükséges az FPGA és a Host
alkalmazás között
Megszakítások
• Fizikai jelzést (megszakítást) generál az FPGA-tól az Host felé
• Egyetlen fizikai megszakítás vonal
• 32 logikai megszakítás
• Eseményvezérlés a Wait on IRQ és Acknowledge Interrupt
elemekkel a Host alkalmazásban
• Az FPGA várakozhat a megszakításkérés nyugtázására
• A LabVIEW FPGA jelenlegi verzióói már támogatják a
többszörös Wait on IRQ használatát, a korábbi verziók csak
egyetlen IRQ várakozást támogattak.
Megszakítások
FPGA – IRQ beállítása
• A megszakítás logika beállítása az FPGA blokk
diagramban (IRQ Bit)
• Opcionálisan az FPGA blokk diagramban beállítható
várakozás a Host alkalmazástól érkező nyugtázásra,
ami törli a kérést
Megszakítások
Host – Wait on IRQ
• Specifikálja a várt logikai megszakítás kéréseket
• Visszaadja az aktuális logikai megszakítás-kérések
azonosítóit
• A szálak inaktívak (sleep) a várakozás ideje alatt
• Több Wait on IRQ is használható a Host VI-ban
Host – Acknowledge IRQ
• Törli az IRQ Number(s) által megadott logikai
megszakításkéréseket
• A megszakításkéréseket mindig nyugtázni kell, még
akkor is, ha az FPGA nem várakozik a nyugtázó jelre
RIO/Host szinkronizáció
3
1
Host
FPGA
1. FPGA VI biztosítja a felhasználói
felületi kezelőszervek és kijelzők
be/kiviteli adatforgalmát
Host VI várakozik (sleeps) az IRQ
kérés beérkezésére FPGA VI-tól
4
2. FPGA VI beállítja az IRQ 0 kérést
Host VI azonnal felébred amint
érzékeli a beérkező IRQ-t azFPGA
VI-tól
2
3. FPGA VI várakozik az IRQ
nyugtázására Host VI-tól
Host VI leolvassa ill. frissíti az
előlapi objektumokat az FPGA VIban
1
3
4
4. Host VI nyugtázza a IRQ 0-t
FPGA VI felébred és befejezi az
iterációt
5. A fenti lépések ismétlései
DMA adatátviteli módszerek
Megjegyzés: Ez a fejezet csak az NI R-Series FPGA HW-re
vonatkozik.
• Blokkoló átvitel
• Lekérdezés
• Megszakítás
DMA (Blokkoló módszer)
• A legegyszerűbb megvalósítás
• Egy adott időkorlát (Timeout)
figyelembevételével az előírt
számú adatot próbálja
beolvasni
• Ez a módszer processzor
intenzív, de nagyon gyors
DMA (Lekérdezéses módszer)
• Ez a módszer először egy
DMA-val lekérdezi az
elérhető adatok számát, majd
egy következő DMA-val
beolvassa az adatokat
• A módszer kevésbé
processzor intenzív, de azért
gyors
DMA (Megszakításos módszer)
• A megszakításos
módszer egy IRQ
kéréssel jelzi az FPGAból ha adott számú minta
elérhető a FIFO-ba
• A Host várakozik az IRQra és fogadva a kérést
kiolvassa az adott számú
mintát
• Ez a módszer nem terheli
a processzort, de
lassabb
7. Előadás:
Téma:
A.
B.
C.
D.
Teljesítmény elemzés
A LabVIEW leképezése az FPGA-ra
Sebesség optimalizáció
Erőforrás optimalizáció
A VI-ok ciklusidő elemzése
• 1 ütem = 1 órajel ciklus
• Az órajel ciklus ideje
fordítási paraméter
(Alapérték a HW
rendszertől függ NI
40MHz, LOGSYS 16MHz)
• A 32 bites számláló az
órajel felfutó élére lép
• A Tick Count függvény
visszaadja a számláló
értékét
A VI-ok ciklusidő elemzése
• Minden iterációhoz
időbélyeget rendelünk
• Kiszámítjuk az időeltérést
• A méréseket a
ciklusvégrehajtással
párhuzamosan végezzük*
• A tesztelő kód később
eltávolítható
*kihasználjuk az FPGA előnyét a párhuzamos végrehajtáshoz
A VI-ok ciklusidő elemzése
• Olvassuk le a kezdeti időt
• Hajtsuk végre a ciklust
• Olvassuk le a befejezési időt
• Számoljuk ki az
időkülönbséget
• A mérés párhuzamosan
történik*
• A kód később eltávolítható
*kihasználjuk az FPGA előnyét a párhuzamos végrehajtáshoz
A VI-ok erőforrásigény elemzése
• Sebesség
– Az elméletileg elérhető maximális
sebességet (Theoretical maximum)
is leolvashatjuk
• Erőforrásigény
– IOBs – Input/Output interfészek
– MULT18X18s - szorzók
– SLICEs – Konfigurálható logikai
elemek, azaz LUT-ok és FF-ok
– BUFGMUXs – az órajel hálózatokat
meghajtói
Ha esetleg túl nagy vagy túl lassú….
• Módosíthatjuk a kódot a sebesség, az erőforrásigény
vagy akár mindkét paraméter javítására
– Ebben nagy segítséget jelent, ha megértjük, hogyan
képezzük le a LabVIEW elemeit az FPGA-ra
A LabVIEW leképezése az FPGA-ra
• Az adatfolyam fenntartásához három komponens szükséges
– A megfelelő logikai függvényeke
– Szinkronizáció
– Engedélyezési lánc
Az adatfolyam fenntartása az FPGA-ban
FFs
FFs
FFs
A sebesség optimalizálása
• Párhuzamos ciklusok
• Pipe-line végrehajtás
• Egy óraütem alatt végrehajtott ciklusok
• Példák
Párhuzamos végrehajtás
• A grafikus programozás jól támogatja, sőt ösztönzi a
párhuzamos kódfelépítést
• A LabVIEW FPGA igazi párhuzamos végrehajtást
valósít meg
Példa párhuzamos végrehajtásra
• A ciklus sebességét a
leghosszabb végrehajtási idő
korlátozza
• AO0 végrehajtási ideje 35
ütem, DIO0-é pedig 1 ütem
(ezek HW specifikus adatok)
• Válasszuk szét a két funkciót
Így DIO0 függetlenül futhat
AO0-tól
• Ez megengedi DIO0
mintavételezési sebességének
növelését közel 10x-re a
független ciklusban
37 Ticks ~ 1uSec
4 Ticks ~ .1 uSec
Pipe-line végrehajtás
• A ciklustörzsön belül a kód felosztható különböző
iterációkba ami lényegesen csökkentheti az egyedi
iterációk hosszát
– Az adatfolyam különböző részeit párhuzamosan kezelhetjük
egyetlen iterációban
– Az adatokat a következő iterációnak shift regiszterrel vagy
visszacsatoló pontokkal adhatjuk át
Pipe-line példa
212 órajel ütem (5.3 μs)
172 órajel ütem (4.3 μs)
~ 19%-kal gyorsabb
Egy óraütem időzítésű ciklusok (SCTL)
• A ciklus törzs végrehajtható egyetlen órajel ütem alatt
• Minimalizálja a szinkronizáció és az engedélyezési
lánc által igényelt vezérlési többlet hardvert
• Azonban vannak korlátozások
– Bizonyos típusú VI-ok és függvények nem használhatók
ezekben a ciklusokban
• Ciklus időzítés
• Egymásba ágyazott ciklusok
• Várakozás
• Megosztott erőforrások
• Bármi, ami egy órajlenél több időt igényel a végrehajtáshoz
SCTL példa
• A kód áthelyezésével az SCTL ciklusba 5 órajel
ütem sebességjavulás érhető el
6 ütem
512 Slices
1 ütem
454 Slices
A ciklus végrehajtási idő javítása
• Mit tehetünk a lassú a végrehajtás?
• 12 órajel ütem
1
2
FFs
FFs
FFs
3 4
5
6
7
8
9
10
FFs
FFs
FFs
FFs
11 12
FFs
FFs
FFs
FFs
FFs
FFs FFs
Csökkentsük a leghosszabb adatút hosszát
• Alakítsuk át a blokkdiagramot
• 9 órajel ütem
1
2
3
4
5
6
7
FFs
FFs
FFs
8 9
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs FFs
Alkalmazzunk pipe-line megoldást
• Figyeljük meg a pipe-line
hatását
• 6 órajel ütem
1
2
3
4
5 6
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs FFs
Használjuk az SCTL típusú egy órajelütem
alatt végrehajtott ciklust
1
• Szükségtelenné teszi a szinkroizációhoz
és az engedélyező lánchoz kapcsolódó
logikát
• 1 órajel ütem
FFs
FFs
FFs
FFs
FFs
Erőforrás optimalizáció
• SubVI-ok
• Felhasználói felület objektumok
• Adattípusok
• Függvények, amik sok helyet foglalnak
• SCTL- Egy órajel ütem alatt végrehajtható ciklusok
• Példák
SubVI-ok megosztása
• Újra beépülő subVI-ok
minden példánya új logikai
elemeket generál
– Gyorsabb végrehajtás
– Több erőforrás (általában)
• A nem újra beépülő
subVI-ok alapvetően
megosztott
komponensek
– Lassabb végrehajtás
– Kevesebb erőforrás
(általában)
Újra beépülő
Nem újra beépülő
Szorzók száma (MULT18X18) 18 a 40-ből 45%
3 a 40-ből
7%
SLICE.ok száma
2116 a 5120-ból 41%
2028 a 5120-ból
39%
Csökkentsük a Front Panel Objektumok számát (FPO)
• Extra logikét igányel az adatátvitel vezérlése a host és
az FPGA között
• A Front Panel Array-k különösen költségesek
– Csökkentsük a tömbök méretét
– Az adatokat inkább tároljuk a felhasználói memóriában
A Front Panel Array hibás használata adatátvitelre
• Ez a diagram egy kezelőlapi tömböt használ az adatátvitelhez a host felé
Egy jobb adatátviteli módszer
• Használjunk skaláris adatokat az FPGA memória és a host közötti adatátvitelhez
Használjuk mindig a legkisebb megfelelő
adattípust
Tömörítsük az adatokat becsomagolással
• Egyesítsük a kisebb méretű adatokat egyetlen 32 bites
formátumba
– Csökkenti az előlapi objektumok számát
– Gyorsabb adatátvitel az FPGA és a Host között
Split Number
Erőforrásigényes funkciók
Hányados / Maradék képzés (Osztás)
Szorzás helyett skálázzunk 2 hatványaival (a
konstans értékű hatványozás költségmentes)
Tömb funkciók (használjunk konstansokat ahol
lehetséges)
Egyetlen órajelnyi időzítésű ciklusok
• Eltávolítja az engedélyezési lánc által okozott
extra logikát
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFs
FFsFFs
Erőforrás optimalizálás
• Ez a VI túl nagy lesz a szintézis után. Miért?
Erőforrás optimalizálás
• Ez a VI az 1M kapus FPGA 21%-át elfoglalja. Lehetne
kevesebb is?
Erőforrás optimalizálás
• Ez már csak 9%-a az FPGA elérhető erőforrásainak. Lehetne
még jobb?
Erőforrás optimalizálás
• Ez már csak az FPGA 8%-a.