üzenetek

hozzászólások


AAAgold
(senior tag)

noobláma kérdés, de ez mire jó, mit számoltatnak vele?


#95904256
(veterán)
Blog

Alapvetően ez egy univerzális cucc, tehát sok mindenre jó (lehet).
Általában mégis speciális okokból használnak ilyet. :)
Előnye, hogy a benne futtatott "program" sokszor gyorsabb, mint egy CPU-n futó szoftver, illetve kisebb az energiaigénye.
Hasznos lehet pl. az alábbi esetekben:
- valamiféle új technológiai elgondolás ( pl. xyz video encoder ) kipróbálására
- olyan helyre ahol számítani lehet arra, hogy idővel megváltozik, bővül a feladata
- biztonság technikai okból ( mivel egyedi belső felépítést tesz lehetővé )
- ahol "gyorsan" kell összedobni a célhardvert egy adott feladatra

[ Szerkesztve ]


CPT.Pirk
(Jómunkásember)
Blog

Benne akkor fut program, ha belefordítasz valamilyen szoft cpu / mcu magot, amin tud futni programkód. Vagy esetleg ha fizikailag bele van építve egy vagy több társprocesszor / mikrovezérlő, de akkor az nem tisztán fpga.

Amit simán vhdl / verilog nyelven leírsz egy fpga-ba, abból fizikailag hardver jön létre, ráadásul rettentően gyorsan fog működni és könnyen átalakítható.

Úgy egyébként egy fpga nagy mértékű párhuzamos feldolgozásnál mutatja meg igazán, hogy mit tud. Nem is véletlen, hogy az aktuális csúcsszériát a hadsereg fejlesztéseiben használják fel.

[ Szerkesztve ]


#95904256
(veterán)
Blog

Tévedés. Ez egy programozható hardver, amit az általad is említett vhdl / verilog nyelven programozol. Egyébként nem véletlenül tettem idézőjelek közé a "programot", mert eltér a szokásos CPU-s programozástól. De ez akkor is egy program, ami memóriából töltődik be az eszköz indulásakor, minden egyes indításnál.

[ Szerkesztve ]


dabadab
(titán)
Blog

Ez tulajdonképpen egy chipgyártási módszer, nagyjából úgy viszonyul a "rendes" chipekhez, mint az újraírható CD a gyárilag nyomotthoz :)
Egyrészt remek tervezéshez: ha nem tetszik, ami rajta van (mert hibát találtál a tervben vagy új feature jött), akkor simán felülírod az új verzióval.
Másrészt meg ha csak pár darab kell egy chipből, mert valami spéci cucc, akkor azt így lehet gazdaságosan előállítani, mert bár egy FPGA sokkal drágább, mint legyártani az egymilliomodik ugyanolyan chipet, de sokkal olcsóbb, mint amibe a legelső chip legyártásanak az előkészítése kerül.


CPT.Pirk
(Jómunkásember)
Blog

Nem tévedés. A bitstream amit magára húz, az konfigurálja a kapu mátrixot, így jön létre a hardver, logikai kapuk szintjén.


#95904256
(veterán)
Blog

Az eszköz neve: FPGA, nézd meg mit jelent és rájössz...


CPT.Pirk
(Jómunkásember)
Blog

Programozom is őket... Esetleg írd le, mivel nem értesz egyet abból amit írtam.


dabadab
(titán)
Blog

Azért az FPGA-ban a P az úgy jelenti azt, hogy "programmable", mint az NDK automata mosógépek esetében :) Az, amit beletöltesz, csak egy leíróállomány, nem egy konkrét program. (A Verilog meg a VHDL valószínűleg Turing-teljes, de azokat egy PC-s fordító dolgozza fel és annak a kimenete már nem az.)


#95904256
(veterán)
Blog

Azt hiszed egyedül programozol FPGA-t? :)

dabadab: És a program betöltése utáni fázist minek hívod? Semminek? Tehát az FPGA a programmot "semmizi".

[ Szerkesztve ]


JColee
(őstag)

Pontosan ezért szerencsétlen megnevezés a "programozás". Jobb lenne konfigurálásnak hívni.

Ha a konfigurációs fájlt feltöltötted, akkor az fpga konfigurálva van. Minek kéne hívni? Processzort minek hívod, mielőtt elkezdi futtatni a programot?

[ Szerkesztve ]


#95904256
(veterán)
Blog

Teljesen mindegy, hogy leírófájlnak, programnak vagy konfigurációs adatoknak hívod azt a kreálmányt amit létrehozol, az eszköz ezt fogja végrehajtani, futtatni, ennek megfelelően fog működni és ez nem fixen, hardverből bevasalt dolog.

A processzort kikapcsolva is bekapcsolva is processzornak hívnom. :)

Egyébként lehet nézni arról az oldalról is a dolgot, hogy az FPGA-ban van olyan hardver rész is amit nem tudsz konfigurálni, ez felelős a program betöltéséért.

Szerintem azzal van gondotok, hogy az eszköz a program betöltése után egyfajta "statikus" állapotba kerül, de ezt is hívni kell valaminek. Én erre azt mondom, hogy futtatja a programot. Ti minek hívjátok?

[ Szerkesztve ]


CPT.Pirk
(Jómunkásember)
Blog

Nem jó amit írsz. Itt a pipás választ olvasd el, nagyon jól összefoglalja: [link]

Konyhanyelven összefoglalva, amit leírsz HDL nyelven, azt a PC egy elég bonyolult folyamat végén bitstreamre fordítja, az meg leírja a kapcsolatot az fpga belső logikai alapegységei között (többek közt).

Azok a logikai elemek meg a programozást (helyesebben bitstream letöltést) követően órajel szinkronban kezdenek működni a megadott konfigurációban, feltételezem ezért mondod annyira a program futtatást, de az akkor se túl szerencsés kifejezés ide.

[ Szerkesztve ]


JColee
(őstag)

"ennek megfelelően fog működni és ez nem fixen, hardverből bevasalt dolog"

Igen, ezért mondhatjuk, hogy konfiguráltuk az fpga-t. Miután rátöltötted a fájlt, nem "futtat" semmit. Az én szótáramban a program=utasítás sorozat, amit egymás után végrehajtunk. Ez nem teljesül FPGA esetén (kívéve az említett soft-core procikat, ami eléggé meta :D ).


Reggie0
(félisten)

Tehat akkor egy 8 bites osszeado vagy egy nand kapu mar program?


Dr. Akula
(nagyúr)

Némi zavart érzek az Erőben. A programozás egy előre letárolt eljárás rögzítését jelenti. Ennek nem feltétele még a számítógép se. Tulajdonképp a kádban a dugó behelyezése a lefolyóba, majd vízzel feltöltése is programozás. Mert ha kihúzod a dugót, az eljárás (víz elfolyik a csatornába) megtörténik. Mielőtt valaki felháborodik hogy dehát nem ezt tanulta a suliban, először gondoljon a gép fogalmára. Mi a legegyszerűbb gép? A sima faék. Hát az se rokona a Terminatornak. Szóval kár fightolni, az FPGA konfigurálása bőven belefér a programozás fogalmába. :)


Reggie0
(félisten)

Amugy jo ez a nagy fpga, csak egy kinszenvedes lehuteni azt a 750...1000W-ot amit ki lehetne sajtolni belole.


JColee
(őstag)

Elte? :DDD


#95904256
(veterán)
Blog

Elolvastam, a fizikai működést taglalja, de arra nem ad választ, hogy a program futtatás megfelelő kifejezés vagy sem.

A "program futtatásnak" semmi köze az órajel szinkronhoz.

A program futtatás onnan jön, hogy a hardver egy bizonyos eljárást végez a programmal. Ezt az eljárást futtatásnak vagy végrehajtásnak szokták nevezni. Vagy minek kellene hívni?


Reggie0
(félisten)

Nem program, hiaba erolteted.


#95904256
(veterán)
Blog

Ha programot írsz hozzá, hogy végre lehessen hajtani, akkor az program.


#95904256
(veterán)
Blog

Akkor Te konkrétan minek hívod?


Reggie0
(félisten)

De nem programot irsz hozza, hanem digitalis logikai aramkort tervezel.


#95904256
(veterán)
Blog

Amíg egy bitfolyam írja le azt a digitális áramkört, addig az program.


Reggie0
(félisten)

Az konfiguracio, nem program. A nyelvek sem programnyelvek, hanem leiro nyelvek lasd: VHDL (VHSIC-HDL) (Very High Speed Integrated Circuit Hardware Description Language)

Az FPGA-ban a programozas annyit jelent, hogy a konfiguraciot tartalmazo memoria helyben atirhato mikor az aramkorben a helyen van az IC. Last EPROM, EEPROM, stb.. Abban is bitfolyam van, megsem program, de programozhatoak. Szemben pl. a maszk programozhato Gate Arrayel, amit a gyarban programoznak a megfelelo femezesi retegek letrehozasaval (lasd pl. hardcopy).

[ Szerkesztve ]


JColee
(őstag)

És vannak olyanok is amik egyetlen alkalommal konfigurálhatóak (fuse/antifuse fpga).


#95904256
(veterán)
Blog

Közelítsük meg másképp. Mi az a program?
Szerintem a program egy olyan szellemi termék ami módosítható és egy hardver működését be tudod folyásolni vele. Ezzel pont az csinálod.

Közelítsük meg másképp. Mit jelent a P az FPGA nevében?
Azt, hogy programozható. Ha már így alakult, akkor hívjuk is programnak.

Persze ha átneveztetitek FCGA-ra...

A program meg nem más, mint amivel leírod a hardvernek, hogy mit csináljon.
Tehát az általad említett konfiguráció meg a program ebben az esetben megfelelnek egymásnak. Hiába erőlteted, hogy két külön dolog...

[ Szerkesztve ]


CPT.Pirk
(Jómunkásember)
Blog

De nézd hozzá a GA betűk jelentését is. Gate Array, azaz kapu tömb, programozható kapu mátrix.
Egy programkód futtatásához parancsértelmező kell amit egy normál processzorban megtalálsz, miközben itt egy nagy halom alap logikai elem dolgozik órajel alapján, egymással a bitstream által konfigurált kapcsolatban.

[ Szerkesztve ]


#95904256
(veterán)
Blog

Értem én, hogy mit mondasz, de nem értek vele egyet.

Te mindenáron csak egy bizonyos fajta programozást nevezel programozásnak. Amit megszoktál a normál processzorokban.

Én meg minden olyan szoftvert programnak hívok amit a hardver végrehajt.
Nem látom szükségszerűségét, hogy órajelhez legyen kötve a végrehajtás.


CPT.Pirk
(Jómunkásember)
Blog

Nem tudom végrehajtásnak hívni azt, ami programozás után történik.

Az órajelhez kötés egy hardveres adottság itt, mert az fpga belsejének nagy többsége órajel szinkronban működik. Bitstream feltöltés után a konfigurált kapu mátrix egyszerűen elkezd működni az órajelnek megfelelően.

Ha a bitstream leír egy egyszerű in -> out összekötést két pin között, akkor csak létrejön az ennek megfelelő digitális áramkör a mátrix konfigurációjával, majd szépen elkezd dolgozni az az áramkör az órajelnek megfelelően. Semmilyen végrehajtásról nem beszélhetünk azon kívül, hogy a bitstreamben tárolt konfigurációt magára húzta az fpga. De az konfiguráció, nem program.


#95904256
(veterán)
Blog

Oké, hívjuk konfigurálásnak és nem programozásnak.

De csak azért, hogy konzekvens maradjak az alábbi mondáshoz:
Minden program tartalmaz legalább egy változót, egy ciklust és egy hibát.
Ebben az esetben a program csak dinamikus végrehajtású lehet, így az FPGA nem programozható, csak konfigurálható.

Jó éjt! :)


Dr. Akula
(nagyúr)

"Semmilyen végrehajtásról nem beszélhetünk azon kívül, hogy a bitstreamben tárolt konfigurációt magára húzta az fpga."

Pedig már az maga egy program végrehajtás. A felprogramozott hardvernek meg miért kéne tudnia magának is szoftvert futtatnia? Még a végén kiderül hogy oprendszere sincs, tehát előbb azt is írni kell rá hogy majd aztán azon belül is lehessen futtatni egy programot, és csak akkor válik programmá, addig nem. :D

[ Szerkesztve ]


Reggie0
(félisten)

A programozhato a memoriara vonatkozik meg mindig. Ahogy a FLASH is programozhato a PROM is programozhato az EPROM is programozhato. De ez nem azt jelenti, hogy program van benne.

A program definicio szerint utasitasok sorozatabol all. Az FPGA-ba nincsenek utasitasok, csak logikai aramkor(ok).

A programozas ket dolgot jelent:
1. Programkodot irni.
2. Valaminek a tartalmat beallitani.

De semmiesetre sem azt, hogy valamibe programot tolteni, az csak a 2. specialis esete.

(#32) Dr. Akula: Az, hogy leirom mit mivel kell osszekotni meg nem program. Ezzel az erovel barmilyen aramkort programnak hivhatnal.

[ Szerkesztve ]


Tetsuo
(aktív tag)

Játszani lehet vele? :D


Tetsuo
(aktív tag)

De akkor miért nem ilyenek a CPU-k? :F


dabadab
(titán)
Blog

Én a programozás fogalmánál azért ragaszkodnék a Turing-teljességhez, az FPGA konfigurációnál ez meg nyilvánvalóan nincs meg.

[ Szerkesztve ]


Reggie0
(félisten)

Egy negyed ekkora FPGA-ra olyan 6-10 ora a forditasi ido also hangon, de akar napokig tarthat es baromi sok munka megirni is. FPGA hiresen rossz a fejlesztesi ido szempontjabol, pont ezert erolkodnek az OpenCL->FPGA forditassal(lasd SDAccel xilinxnel). Ha meg egy processzort implementalsz benne(vagy igazabol barmit) az egy ASIC(aka CPU)-nal sokkal lassabb lesz es tobbet is fogyaszt. Tehat altalanos celu aramkort nem igazan eri meg beletolteni, specializalni kell a feladatra. Ugy viszont joval hatekonyabb egy GPU vagy CPU megoldasnal, olykor joval gyorsabb is.

Amugy hozzaferheto regota, AWS-ben lehet berelni FPGA kartyas gepet, de azokban limitalva van az elektromos teljesitmeny, amit neked kell tudni betartani, kulonben kivagnak, szoval maxra nem tudod kijaratni a kartyat, csak olyan 20-25%-ra, de meg igy is elonyosebb egy procinal, ha jol optimalizaljak a dizajnt.

A masik problema az arazas, kis tetelben nagyon pofatlan szorzokkal dolgoznak, saccra 28x-40x-es ar az 1000db-os tetelhez kepest.

[ Szerkesztve ]


J.J. András
(őstag)

akkor szavazzunk... Én mint csak végfelhasználó Dr.Akula és Ákos véleményével érték egyet.... Nincs vita, írsz egy kódsort, azt végrehajtja a gép programszerűen = programozás .
egy szavazat nekik ... Az már 3 ! :)


Reggie0
(félisten)

Ja, 100 millio legy nem teved :) De cuki amikor a laikusok megmagyarazzak, hogy rosszul tudod a szakmad :D

[ Szerkesztve ]


J.J. András
(őstag)

cuki vagy ciki ... :) de ez van...
( nem akarlak bántani , meg okoskodni, de egyet tudok, ... Aki teljesen bent van a szakmában néha nem látja a fától az erdőt. Példa: kb. 14 éve leírtam hogy szerintem miért fos és bántja a szemem az akkori LCD (hódító) technológia.... Minden "odaértő" okos szakmabeli lehülyézett, még a kedves PH rendszergazdák bannoltak is pár hétre.... Mire eljött 2019, és lehet kapni nagy dinamikatartományú 240Hz-es lcd kijelzőket végre.... Akkor is elmondtam, hogyan látom, de senki nem bírta megérteni, hogy azok nagyon helytálló és okos gondolatok.... De érdekes módon a gyártók az általam felvázolt útra léptek. Lcd vs. Crt !! Na most ugyanazt látom: Nekem ez célhardwer, amibe betölthetek általam írt bármilyen utasítás sort, és azt végrehajtja, ergo felprogramoztam azt a fránya FPGA-t )
szóval ez anno 1990-es évek dereka után nemcsak "szakmai" vitafórumnak indult, így még mindig le merem írni a véleményem a szakma krémje számára .... Ha megegeded : :B


#95904256
(veterán)
Blog

Én megváltoztattam a véleményem.

Bár mindenki programozásnak hívja az FPGA programozását, ez téves.

Lehet és érdemes különbséget tenni konfigurálás és programozás közt.

A konfigurálás vagy paraméterezés a működéshez szükséges adatok beállítását jelenti, míg a program lépésről lépésre hajtódik végre. Az előbbi a működés során egy egyszeri dolgot takar, míg az utóbbi egy folyamatos valami. :)

De ettől még a főlégy természetesen tudhatja rosszul tudja a szakmáját. :)

[ Szerkesztve ]


#90088192
(senior tag)
Blog

Hello :)

Talán úgy érdemes elképzelni mint egy huzalozott analog Számítógépet(WPLC).

Vagyis Te megmondod hova menjenek a vezetékek.
Vagyis felkonfigurálod egy adott feladatra.
De a nap végen egy analog/digitalis Logikai hálózat, ami módosítható, de NEM üzem közben.
Mig a processzor amikor programot futtat maga a program szabadon változtatható(Akar a BIOS is) de a Processzor Architektúrája mar nem változtatható.
Az FPGA eseten magát a hardvert változtatod meg a konfigurálás során.
:R
(onnan tudom, mert az inverterünket egy FPGA hajtja, külön van egy PIC ami kommunikál az FPGA-val, es a megfelelő bementeken folyamatosan változtatja a bemenő szinteken, hogy az FPGA azt csinálja amit szeretnénk, vagyis a PIC-et programozzuk, ami majd előállítja a megfelelő bemenetet az FPGA szamara ami abból kisakkozza, mit is kell csinálni a kimeneten, vagyis a referenciák programozása amit a PIC csinál, es a villámgyors FPGA a referenciák fényében tudja változtatni a kimenetet hiszen 20kHz a kapcsolási frekvencia az IGBT-hez(Legalabb 2-2 van párba), nincs idő rá míg a PIC kiszámolja ami szükséges egy egy kapcsoláshoz.)


iqkacsa
(csendes tag)

Szerintem nem arról vitatkozznk, hogy mit csinál egy FPGA, hanem hogy fogalmilag mit értünk "programozás" és "program futtatása" alatt.

Részemről nem tudom ezek pontos definícióját, de ha a program futtatása alatt utasítások szekvenciális végrehajtását értjük, akkor olyat az FPGA tényleg nem csinál (ha csak nincs benne egy soft- vagy hardcore processzor, mint már azt említettétek). Viszont nekem sokkal kézenfekvőbb azt mondani, hogy "programot futtat", mint hogy "konfiguráció alapján algoritmust implementál", mert abban egyetértünk, hogy az FPGA lényeges része a konfigurálhatóság, és szerintem, ha csak összehuzalozol két lábat, az is nevezhető algoritmusnak (mégha elég primitív is).


Colomb
(csendes tag)

Nyelveszeti szempontól szerintem az egy program, hogy elmegyünk a boltba. :) A bevásárló lista összeállítása talán programozásnak nevezhető. Amit utanna "lefuttatunk". De a fogós ravasz kérdés, hogy a bevásárlás és annak megtervezése az egy program vagy inkabb konfigurálás... :) :R


haxiboy
(veterán)
Blog

Én mint szoftverfejlesztő Reggie0-vel értek egyet.
Azért mert programozásnak hívják attól még nem lesz az...inkább rendszer tervezés.
FPGA esetében írsz egy utasítás sorozatot ami megmondja hogy "az adott vezetékek hova csatlakozzanak" ergo kialakítod az "új hardvered". Ami ott létrejön akár nand kapukkal (vagy akár tranzisztorokkal) is összerakható, nyilván kevésbé költséghatékonyan.
Nagy vonalakban ha építek egy astabil multivibrátor-t ami bár nem tartalmaz kapukat nagy vonalakban megmutatja hogy ez mégsem programozás.
Ellenben ha írok egy programot - lényegtelen milyen programozási nyelvben- a végeredmény mindig gépi kód lesz amit az áramkör hajt végre.
A digtech könyveimben is mindenhol konfigurálásnak hívják.
Valamikor a 60-as években már volt szó újrakonfigurálható számítás elvről, aminek mai megvalósítása az FPGA.

(#44) Colomb: Inkább úgy nézném a dolgot hogy a bevásárlás maga a program (a bevásárló lista csak paraméterek), a bolt pedig a hardver ami nélkül nem tudnád a bevásárlást sem megcsinálni.
A bolt megtervezése...na az konfigurálás (tervezés).

[ Szerkesztve ]


Hiftu
(senior tag)

Úgy vélem világnézeti különbségeken vitáztok. Mivel más hitrendszerben gondolkodtok, ezért nem fogjátok egymást meggyőzni. Vallásháborúk elég sok dolog miatt indultak már el. Hagyjuk ki belőle a nagy FPGA értelmezési világháborút. (Terminátor 13 témája egyébként.)


dokanin
(aktív tag)

Ebből a kis csevejből egész jó kép alakult ki bennem, mi is lehet az az FPGA. Eltekintve attól, hogyan nevezitek az életre keltését.
Köszi.


F4ther
(tag)

Érdekes diszkurzus jött itt létre :)
Feltételezem hogy az itt vitatkozó szakemberek, szoftverfejlesztők, programozók :)

Én nem vagyok programozó, de mi hardver közeli programozásnak hívtuk.

De hogy említsem az FPGA-t azoknak akiket érdekel, konyhanyelven:

A felhasználási területe ipari célú, többek között: Katonai, gyártástechnológiai, állami. Legfőbb területeket kiemelném: Rakéta vezérlő rendszerek, műholdak, lidar kép feldolgozó rendszer (Pl önjáró katonai drónok, vagy az önjáró gépjárművek adatfeldolgozó központjai FPGA csipekre épülnek), radarok.. stb. A lényeg, hogy olyan területeken alkalmazzák, ahol szükséges nagyon gyorsan, nagymennyiségű adat feldolgozása - mint pl a képfelismerő rendszerek is ilyenek.

Ezt az FPGA úgy teszi lehetővé, hogy a processzor architektúra nem fix, hanem a logikai áramkörök kapcsolatait alakítják ki a processzoron belül. Így valós párhuzamos adatfeldolgozásra lesz képes, amire például a hagyományos processzorok nem. Ezáltal nagyságrendekkel lehet gyorsabb bizonyos célfeladatok elvégzése. Persze ez nem a teljes és pontos kép, ennél az FPGA sokkal érdekesebb :)

Akit érdekel a téma, nyugodtan elindulhat ebbe az irányba, nagy jövő áll még az FPGA előtt az automatizáció és az önjáró gépezetek egyre jobban előtérbe kerülése által.

[ Szerkesztve ]


kisfurko
(senior tag)

Én nem ragaszkodnék a Turing-teljességhez. Ami fontos, hogy kell egy állapottér, ami pl. egy kombinációs hálózatnál nincs. Egyik állapotból a másikba "viszi" a program.
Egy FPGA pedig tud sima kombinációs hálózatként is müködni. Olyankor semmiképpen sem futtat programot.
Szerintem a programozás kifejezés mindkét helyen helytálló, hiszen a sok-sok konfiguráció közül beprogramozod a szükségeset. Tehát, amikor szoftvert írsz, akkor is egy megfelelö kombinációt választasz ki az összes közül.
Még jó, hogy manapság már nem gyakori az önmódosító kód, mert akkor azon is lehetne vitatkozni... :D

Szerk:
Azt még hozzátenném, hogy sokan rosszul gondolják, és utasítássorozatnak tekintik a HDL-ben egymás után leírt dolgokat, holott pont az a lényege, hogy semmilyen sorrendiség nem áll fenn, azt más módon kell kifejezni. Pont ezért harap bárki a program kifejezésre ebben a kontextusban, aki foglalkozott már FPGA-kkal.

[ Szerkesztve ]


Reggie0
(félisten)

Ok, az egyik felhasznaloi igenyek, a masik pedig az alapfogalmak es mukodes elmelete.Az, hogy sokszor a fejlesztok a felhasznaloi igenyeket nem tudjak jol felmerni es kiertekelni, teljesen egyetertek, de mas dolog.

üzenetek