FPGA: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
PResümee puudub
P Lisatud võimalik eestikeelne vaste, sõna 'pais' ei kõlba sõna 'gate' vasteks mitte üldse; muud grammatikatäiustused (pms. kokku-lahku kirjutamine)
1. rida:
{{keeletoimeta}}
[[Pilt:Altera StratixIVGX FPGA.jpg|thumb|300px|Altera Stratix IV GX FPGA]]
'''FPGA''' (''field-programmable gate array'', e.k. väliprogrammeritav väravamassiiv) on [[mikroskeem]], mis on disainitud nii, et selle täpse konfiguratsiooni määrab selle kasutaja, mitte tootja. FPGA konfiguratsioon määratakse tavaliselt [[riistvara kirjeldamise keel|riistvara kirjeldamise keelega]] (i.k. ''hardware description language'' - HDL), mis on sarnane keelele, millega kirjeldatakse [[rakenduse rakendus-spetsiifiline mikroskeem|rakenduse rakendus-spetsiifilisi mikroskeeme]] (''application-specific integrated circuit'' - ASIC). FPGA suudab esitada igat loogilist funktsiooni, mida rakenduse rakendus-spetsiifiline mikroskeem võib esitada.<ref>{{Cite book| |last1 = Wiśniewski | first1 = Remigiusz | title = Synthesis of compositional microprogram control units for programmable devices | date year= 2009 | publisher = University of Zielona Góra | location = Zielona Góra | isbn = 978-83-7481-293-1 | pages = 153 }}</ref>
 
FPGA koosneb programmeeritavatest loogika komponentidestloogikakomponentidest, mida kutsutakse loogika plokkideksloogikaplokkideks, ja seadistatavatest vaheühendustest, mille abil saab loogika plokkeloogikaplokke ühendada. Loogika plokke saab panna tegema keerulisi funktsioone aga ka lihtsaid loogilisi tehteid nagu näiteks [[AND]] ja [[XOR]]. Tihti on FPGA igas loogika plokisloogikaplokis ka mälu elemendidmäluelemendid, mis võivad olla lihtsad [[Triger|flipp-floppid]] või keerulisemad mälu üksusedmäluüksused.<ref name="FPGA">[http://www.eecg.toronto.edu/~vaughn/challenge/fpga_arch.html FPGA Architecture for the Challenge]</ref>
 
Lisaks digitaalsetele funktsioonidele on mõnel FPGA-l võimalused ka [[analoogelektroonika]] jaoks. Enamasti saab programaatiliselt muuta kiibi jalal oleva signaali muutumise kiirust ja väljund vooluväljundvoolu tugevust. Teiseks on suhteliselt tavalised analoogsignaali võrdlejad. Eksisteerivad ka mõned seadmed, milles on olemas nii [[Analoog-digitaalmuundur|analoog-digitaalmuundurid]] kui ka [[Digitaal-analoogmuundur|digitaal-analoogmuundurid]], mis lubavad FPGA-l käituda nagu [[Süsteemikiip|süsteemikiip]].<ref>Mike Thompson, EETimes[http://www.eetimes.com/showArticle.jhtml?articleID=200000777 Mixed-signal FPGAs provide GREEN POWER]</ref>
 
==Ajalugu==
FPGA kasvas välja [[programmeeritav püsimälu|programmeeritavatest püsimäludest]] (PROM) ja [[programmeeritav loogika seadeloogikaseade|programmeeritavatest loogika seadmetestloogikaseadmetest]] (PLD). Neid mõlemaid sai programmeerida, aga [[loogika värav|loogika väravateloogikavärav]] ate-vahelised ühendused jäid samaks.<ref name="history">[http://www.fpgacentral.com/docs/fpga-tutorial/history-programmable-logic ''History of the programmable logic'']</ref>
 
Ameerika Ühendriikide Merepinna Sõjandusdepartemang (i.k. '''Naval Surface Warfare Department''') rahastas hilistel 1980ndatel Steve Casselman-i poolt juhitud eksperimenti, mille eesmärgiks oli luua arvuti, mis implementeeriksjuurutaks 600 &nbsp;000 taasprogrammeeritavat [[loogika värava|loogika väravatloogikavärav]]at. Casselman-ilCasselmanil see õnnestus ja sellega seonduv patent anti välja 1992. aastal.
 
Mõned teedrajavad kontseptsioonid ja tehnoloogiad programmeeritavate loogika väravateloogikaväravate ja loogika plokkideloogikaplokkide kohta leiduvad patentides, mis anti 1985. aastal David W. PageilePage'ile ja LuVerne R. Petersonile anti.
 
'''[[Xilinx]]'''-i kaasasutajad Ross Freeman ja Bernard Vonderschmitt leiutasid 1985. aastal esimese kommertsiaalse FPGA - '''XC2064'''.<ref>Peter Clarke, EE Times, "[http://www.eetimes.com/story/OEG20010622S0091 Xilinx, ASIC Vendors Talk Licensing]."</ref> XC2064-l oliolid programmeeritavad väravad ja programmeeritavad vaheühendused. See oli uue tehnoloogia ja turu algus.<ref name="four">Funding Universe. “[http://www.fundinguniverse.com/company-histories/Xilinx-Inc-Company-History.html Xilinx, Inc.]”</ref> XC2064-l oli 64 seadistatavat loogika plokkiloogikaplokki, millel oli kaks 3 sisendiga [[otsingutabel|otsingutabelit]].<ref name="clive">Clive Maxfield, Programmable Logic DesignLine, "[http://www.pldesignline.com/products/187203173 Xilinx unveil revolutionary 65nm FPGA architecture: the Virtex-5 family].</ref>
 
[[Xilinx]] jätkas konkurentideta ja kasvas kiirelt kuni 1990ndate keskpaigani, millal konkurendid kanda kinnitasid. 1993. aastaks oli '''Actel'''-i käes 18% kogu FPGAdeFPGA-de turust.<ref name="four"/>
 
1990ndad oli FPGA-de jaoks kiire kasvu periood nii keerukuse kui ka tootmismahtude poolest. Üheksakümnendate alguses kasutati FPGA-sid peamiselt telekommunikatsioonis ja võrgusides. Kümnendi lõpuks leidsid FPGA-d tee tööstuslikesse rakendustesse.<ref name="book">Clive Maxfield, book,raamat "[http://books.google.com/books?id=dnuwr2xOFpUC&pg=PA4&lpg=PA4&dq=FPGA+Market+growth+1990s&source=web&ots=YjFedB35Vp&sig=EH8y56Cih9iNLEqYXkZ63iO46K4&hl=en&sa=X&oi=book_result&resnum=4&ct=result The Design Warrior's Guide to FPGAs]".Published byKirjastas Elsevier, 2004. ISBN 0750676043, 9780750676045.</ref>
 
===Kaasaegsed arengud===
Hiljutine trend on viia traditsiooniline FPGA edasi ja ühendada see mikroprotsessori ja teiseteiste lisaseadmetega, et moodustada [[süsteemikiip]]. Näiteks sellistest hübriid-tehnoloogiatest võib tuua [[Xilinx]] Virtex-II PRO ja Virtex-4 seadmed, kus on üks või rohkem [[PowerPC]] protsessorit FPGA loogika kangasse[[loogikakangas]]se integreeritud. [[Atmel]]-i FPSLIC on veel üks selline seade, mis kasutab AVR-i protsessorit koos Atmel-i programmeeritava loogika -arhitektuuriga.
 
Alternatiivne lähenemine protsessorite kasutamises on võimalus kasutada tarkvaralisi protsessoreid, mis on implementeeritudjuurutatud otse FPGA loogikale.
Hiljutine trend on viia traditsiooniline FPGA edasi ja ühendada see mikroprotsessori ja teise lisaseadmetega, et moodustada [[süsteemikiip]]. Näiteks sellistest hübriid-tehnoloogiatest võib tuua [[Xilinx]] Virtex-II PRO ja Virtex-4 seadmed, kus on üks või rohkem [[PowerPC]] protsessorit FPGA loogika kangasse integreeritud. [[Atmel]]-i FPSLIC on veel üks selline seade, mis kasutab AVR-i protsessorit koos Atmel-i programmeeritava loogika arhitektuuriga.
 
Lisaks hakkavad tekkima mõned uued arhitektuurid, mis ei ole enam tüüpilised FPGA-d. Tarkvaraliselt seadistatav mikroprotsessori seeria Stretch S5000 kasutab hübriidset lähenemist pakkudes kasutajale tavapäraseid protsessori tuumasidprotsessorituumasid ja FPGA -sarnaseid programmeeritavaid tuumasid samal kiibil.
Alternatiivne lähenemine protsessorite kasutamises on võimalus kasutada tarkvaralisi protsessoreid, mis on implementeeritud otse FPGA loogikale.
 
===Loogikaväravate arv===
Lisaks hakkavad tekkima mõned uued arhitektuurid, mis ei ole enam tüüpilised FPGA-d. Tarkvaraliselt seadistatav mikroprotsessori seeria Stretch S5000 kasutab hübriidset lähenemist pakkudes kasutajale tavapäraseid protsessori tuumasid ja FPGA sarnaseid programmeeritavaid tuumasid samal kiibil.
 
===Loogika väravate arv===
*1987: 9000, Xilinx<ref name="four"/>
*1992: 600 &nbsp;000, Naval Surface Warfare Department
*~2000: Miljonid<ref name="book"/>
*2010: Miljardid
42. rida ⟶ 41. rida:
 
==FPGA võrdluses teistega==
Teadusuuring on näidanud, et FPGA-del võtavad disainidkonstruktsioonid keskmiselt umbes 18 korda rohkem pindala, vajavad 7 korda rohkem voolu ja on 3 korda aeglasemad kui samad lahendused [[rakenduse rakendus-spetsiifiline mikroskeem|rakenduse rakendus-spetsiifilise mikroskeemi]] peal.<ref name=FPGA-ASIC-comparison>http://doi.acm.org/10.1145/1117201.1117205</ref>
 
FPGA eelisteks on võimalus seda uuesti programmeerida, et parandada skeemi vigasid. Ja tüüpiliselt läheb nende peal implementeeritudjuurutatud toote turule toomiseks vähem aega.<ref name="whitepaper">Tim Erjavec, White Paper, "[http://www.xilinx.com/publications/prod_mktg/Targeted_Design_Platforms.pdf Introducing the Xilinx Targeted Design Platform: Fulfilling the Programmable Imperative]."</ref>
 
Tootjad saavad valida ka kesktee, kui nad arendavad välja oma toote disaini FPGA peal, kuid lõppversiooni toodavad tavalise tehnoloogia baasil.
 
===Võrdluses keerukate programmeeritavate loogika seadmetega===
Peamised erinevused [[kompleksne programmeeritav loogika seadeloogikaseade|kompleksekompleksse programmeeritava loogika seadmeloogikaseadme]] ja FPGA vahel on arhitektuuriline. Loogika seadmetelLoogikaseadmetel on tavaliselt väike hulk loogika väravateloogikaväravate jadasid, mis hiljem kokku kogutakse, ja nii saab täpsemini ennustada aega, mis kulub signaali töötlemiseks. Lisaks saab neile paigutada rohkem loogikat, aga vähem loogikaelementide vahelisi ühendusi, mis tähendab omakorda vähem paindlikkust. FPGA arhitektuuris on just nimelt loogika plokkideloogikaplokkide vahelistel ühendustel rohkem rõhku ja see muudab nad paindlikumaks.
 
==Rakendused==
FPGA rakenduste seas on [[Signaalitöötlus|signaalitöötlus]], tarkvaraline raadio, [[rakenduse rakendus-spetsiifiline mikroskeem|rakenduse rakendus-spetsiifilise mikroskeemi]] prototüüpimine, pilditöötlus, kõne tuvastuskõnetuvastus, krüptograafia, bioinformaatika, arvutiriistvara emuleerimine, raadio astronoomiaraadioastronoomia ja kasvav hulk igasugu muid rakendusi.
 
FPGAdFPGA-d alustasid pakkudes alternatiivi [[kompleksne programmeeritav loogika seadeloogikaseade|kompleksetele loogikakomplekssetele seadmeteleloogikaseadmetele]]. Nende ülesandeks oli teiste laialdaselt levinud skeemide kokkuühendamine. Kui FPGAdeFPGA-de võimalused kasvasid, hakkasid nad järjest rohkemidrohkem ülesandeid täitma. Tänapäeval on mõned kohe päris [süsteemikiip|süsteemikiibi] rollis.<ref>[http://www.bdti.com/articles/info_eet0207fpga.htm FPGA/DSP Blend Tackles Telecom Apps]</ref><ref>Mark LaPedus, EETimes [http://www.eetimes.com/showArticle.jhtml?articleID=197001881 Xilinx aims 65-nm FPGAs at DSP applications]</ref>
FPGA rakenduste seas on [[Signaalitöötlus]], tarkvaraline raadio, [[rakenduse spetsiifiline mikroskeem|rakenduse spetsiifilise mikroskeemi]] prototüüpimine, pilditöötlus, kõne tuvastus, krüptograafia, bioinformaatika, arvutiriistvara emuleerimine, raadio astronoomia ja kasvav hulk igasugu muid rakendusi.
 
FPGAd alustasid pakkudes alternatiivi [[kompleksne programmeeritav loogika seade|kompleksetele loogika seadmetele]]. Nende ülesandeks oli teiste laialdaselt levinud skeemide kokkuühendamine. Kui FPGAde võimalused kasvasid, hakkasid nad järjest rohkemid ülesandeid täitma. Tänapäeval on mõned kohe päris [süsteemikiip|süsteemikiibi] rollis.<ref>[http://www.bdti.com/articles/info_eet0207fpga.htm FPGA/DSP Blend Tackles Telecom Apps]</ref><ref>Mark LaPedus, EETimes [http://www.eetimes.com/showArticle.jhtml?articleID=197001881 Xilinx aims 65-nm FPGAs at DSP applications]</ref>
 
FPGAdFPGA-d leiavad eriti kasutust just seal, kus osatakse ära kasutada nende arhitektuuri poolt pakutavat paralleelsust. Üheks selliseks alaks on koodimurdmine ja krüptograafiliste algoritmide lahendamine jõumeetodil.
 
FPGA-d kasutatakse ka muidu palju tehteid nõudvate algoritmide kiirendamiseks, et säästa protsessori ressurssiprotsessoriressurssi (Sagelisageli on pudelikaelaks just andmevahetuskiirus ja seetõttu sobib FPGA-le anda ülesandeid, kus on vaja samade andmetega teha palju tehteid). FPGA-d pole veel saanud iga kõrgema otsa arvuti koostisosaks, sest nende programmeerimine on võrreldes tavalise tarkvaraga kordades keerulisem ja selleks ei ole veel piisavalt häid tööriistu, mis suudaksid seda keerukust vähendada.
 
Traditsiooniliselt on FPGA-sid kasutatud peamiselt väikesemahulistes projektides. Väikeste mahtude juures on FPGA-de eest makstav lisaraha siiski väiksem, kui [[rakenduse rakendus-spetsiifiline mikroskeem|rakenduse rakendus-spetsiifilise mikroskeemi]] tootmine. Tänapäeval on langenud hinnad ja kasvanud jõudlus oluliselt laiendanud FPGA-de tööpõldu.
 
==Arhitektuur==
Kõige levinum FPGA arhitektuur<ref name="FPGA" /> koosneb '''loogika plokkideloogikaplokkide massiivist''' (sõltuvalt tootjast kutsutakse seda kas seadistavaks loogika plokiksloogikaplokiks (CLB) või loogika -massiiviplokkiks (LAB)), sisend/väljund jalgadest ning vaheühendustest. Üldiselt on kõigil ühendustel sama ribalaius.
 
Rakenduse mikroskeem peab olema FPGA-le tõlgendatud adekvaatsete ressurssidega. Kui CBL/<ABBR TITLE="loogika-massiivplokkide">LAB-de</ABBR> ja sisendite/väljundite arvu saab kergesti tuletada konkreetsest disainist, siis ühendusradade arv võib isegi sama palju loogikat sisaldavate skeemide puhul märgatavalt varieeruda. Kuna kasutamata ühendusrajad lisavad hinda, aga mitte tulemust, siis üritavad FPGA-de tootjad pakkuda just piisavalt radasid, et oleks võimalik enamikke disaine, mis sobivad loogika elementide arvu poolest, ühendada. Need arvud on saadud hinnangute, mis on tuletatud Rent-i reeglist, või olemasolevate disainidega eksperimenteerimise abil.
 
Üldiselt koosneb loogika plokkloogikaplokk (CLB või LAB) mõnest '''loogika rakustloogikarakust'''. Tüüpiline loogika rakkloogikarakk koosneb 4 sisendiga [[otsingutabel|otsingutabelist]], [[täisliitja]]st ja D-tüüpi [[Triger|flip-flopist]] nagu all näidatud. Otsingutabel on joonisel jagatud kaheks 3 sisendiga otsingutabeliks. Tavarežiimis on need läbi vasakul oleva [[Multipleksor|multipleksori]] kombineeritud üheks 4 sisendiga otsingutabeliks. Aritmeetikarežiimis söödetakse nende väljundid liitjale. Režiimi saab valida keskmise multipleksori programmeerimise abil. Väljund võib olla sünkroonne või asünkroonne sõltuvalt joonisel paremal asuva multipleksori programmeerimisest. Praktikas kasutatakse tervet või osa täisliitjast otsingutabeli funktsioonina, et ruumi säästa.<ref>http://www.altera.com/literature/hb/cyc2/cyc2_cii51002.pdf</ref><ref>http://www.altera.com/literature/hb/stratix-iv/stx4_5v1_01.pdf</ref><ref>http://www.xilinx.com/support/documentation/user_guides/ug070.pdf</ref>
 
[[Pilt:FPGA cell example.png||400px|thumb|center|Lihtsustatud näidis loogika rakustloogikarakust]]
 
'''Loogika rakkLoogikarakk''' koosneb tavaliselt kahest või neljast sellisest struktuurist, kus mõned signaalid on neile ühised. Loogika plokkidesLoogikaplokkides on tüüpiliselt omakorda mõned loogika rakudloogikarakud.
 
Viimastel aastatel on tootjad oma tippklassi toodetes asendanud 4 sisendiga otsingutabelid 6 sisendiga otsingutabelite vastu, mis pidid kiiremad olema.<ref>http://www.xilinx.com/bvdocs/whitepapers/wp245.pdf</ref>
80. rida ⟶ 78. rida:
Selle näidisarhitektuuri loogika ploki jalgade asukoht on näidatud alloleval joonisel.
 
[[Pilt:logic block pins.svg|frame|center|Loogika plokkLoogikaplokk (''in'' -&mdash; sisend, ''out'' -&mdash; väljund)]]
 
Iga sisend on juurdepääsetav ühest loogika plokiloogikaploki küljest, samal ajal kui väljund võib minna ainult kas paremal või all asuvale loogika plokkideloogikaplokkide kanalile. Iga väljund võib olla ühendatud naaber loogika plokkinaaberloogikaploki suvalise sisendi külge.
 
Sarnaselt võib sisend/väljund jalg võib olla ühendatud suvalise ühenduse segmendiga, mis asub naaberkanalil. Näiteks kiibi ülal paikneva sisend/väljund jala võib ühendada suvalise juhtmega, mis asub tema all paikneval horisontaalsel kanalil.
 
Üldiselt on FPGA vaheühendused segmenteerimata. See tähendab, et iga ühenduse osa ulatub ühe loogika plokiniloogikaplokini ja lõppeb lüliti karbislülitikarbis. Mõnede programmeeritavate lülitite sisselülitamine lüliti karbislülitikarbis tekitab pika pikema raja. Kiiremate vaheühenduste saavutamiseks kasutavad mõned FPGA arhitektuurid ka pikemaid radasid, mis läbivad mitut loogika plokkiloogikaplokki, enne kui jõuavad mõnda lülitikarpi.
 
Kõikjal, kus ristuvad vertikaalne ja horisontaalne loogika plokkideloogikaplokkide kanal ristuvad, on lülitikarp. Sellises arhitektuuris, kus rada läheb lülitikarpi, on kolm programmeeritavat lülitit, mis määravad ära, millise teise samasse karpi mineva rajaga see rada ühendatakse.
 
Moodsas FPGA-s võib lisaks olla veel kõrgema taseme funktsionaalsust, mis on riistvaraliselt fikseeritud. Üldkasutatavate funktsioonide fikseerimine vähendab vajaminevat pindala ja teeb need kiiremaks võrreldes primitiivsetest loogikaloogikaplokkidest plokkidest tehtudegatehtutega. Sellistest lisaelementidest on kõige sagedasemad: kordajad, integreeritud protsessorid, kõrge kiirusega sisend/väljund loogika ja sisseehitatud mälu.
 
FPGA-sid kasutakse laialdaselt ka süsteemi disainisüsteemidisaini testimiseks. See lubab [[mikrokiip|mikrokiibi]] valmistajatel testida oma disaini enne, kui mikrokiip tehases valmis tehakse.
 
==FPGA disain ja programmeerimine==
Et määrata FPGA käitumine peab kasutajal olema [[riistvara kirjeldamise keel|riistvara kirjeldamise keelega]] (''hardware description language'' - HDL) või elektriskeemiga disain. HDL on parem vorm, kui on vaja töötada suurte struktuuridega, sest seal saab neid nummerdada, mitte ei pea igat väikest osa käsitsi joonistama. Aga visualiseerimiseks on parem kasutada skeemi.
 
SiisKasutades kasutadesseejärel mõnda abiprogrammi genereeritakse elektriliste ühenduste nimekiri. SiisJärgnevalt saab selle ühenduste nimekirja saab konkreetse FPGA peale kaardistada. Selle jaoks on tavaliselt FPGA tootja poolt valmistatud kinnine tarkvara. Kasutaja vaatab tulemuse üle erinevate valideerimismeetoditega, mis võivad näidata nii ajastuse analüüsi kui ka süsteemi simulatsiooni.
 
Kui disainimise ja valideerimise protsess on lõppenud, genereeritakse FPGA tootja tarkvara poolt binaarfail, mille abil seadistatakse lõpuks FPGA. Seadistamiseks kasutatakse [[jadaühendus|jadaühendust]] või välist mäluseadet.
 
Kõige tavalisemad HDLidHDL-id on '''VHDL''' ja '''Verilog'''. Kuid HDLidHDL-id on tavaliselt suhteliselt keerulised ja seda võrreldakse oma raskusastme poolest [[Assemblerkeel|assemblerkeelega]].
 
Selleks, et lihtsustada kompleksetekomplekssete süsteemide disainimist FPGA-del, on loodud teeke, mis sisaldavad keerulisi funktsioone ja skeeme, mis on testitud ja optimiseeritud. NeidInglise kutsutaksekeeles ingliseon keelesnende tihtipealenimetus nii:tihtipeale "IP cores" ja nad on saadaval FPGA-de tootjate ja kolmandate osapoolte käest. Enamasti on need tasulised ja kinniste litsentsidega, kuid mõned on ka mõned avatud lähtekoodi ja vaba litsentsiga.
 
==Vaata ka==
109. rida ⟶ 107. rida:
** [[VHSIC Hardware Description Language|VHDL]]
** [[Verilog]]
* [[Loogika väravateLoogikaväravate massiiv]]
* [[Programmeeritav süsteemikiip]]
* [[rakendus-spetsiifiline mikroskeem]] (Application-specific integrated circuit]] (e. ASIC)
* [[kombinatoorne loogika]]
* [[kompleksne programmeeritav loogika seadeloogikaseade]] (CPLD)
* [[tarkvaraline protsessor]]