Didelių FPGA projektų kūrimo pavyzdžiai. Apie plis projektų dokumentavimą. asociatyvioji atmintis. Organizacija, atrankos metodas, skirtumai nuo adresų atminties

💖 Patinka? Pasidalinkite nuoroda su draugais

Įsivaizduokite, kad procesorius, užuot vykdydamas tam tikrą instrukcijų rinkinį, bus perkurtas kiekvienai programai ir pavers algoritmą tiesiai į aparatinę įrangą. Taip veikia FPG. Šiandienos straipsnyje paaiškinsiu, kaip tai netgi įmanoma, ir supažindinsiu su įvairiais FPGA projektavimo metodais.

Norėdami pradėti, turite šiek tiek suprasti skaitmeninę ASIC veikimo logiką, tačiau pradėti su jais yra labai sunku ir brangu, todėl geriau pradėti nuo FPGA.

Kas yra FPGA?

FPGA reiškia lauko programuojamų vartų masyvą (vartotojo programuojamų vartų masyvai, FPGA). Bendresniu atveju jie vadinami FPGA – programuojamos loginės integrinės grandinės.

Naudodamiesi FPGA, galite tiesiogine to žodžio prasme kurti skaitmenines mikroschemas sėdėdami namuose su prieinama derinimo plokšte ant stalo ir kūrėjo programine įranga už kelis tūkstančius žalių rublių. Tačiau yra ir nemokamų variantų. Pastaba: tai projektuoti, o ne programuoti, nes išvestyje gausime fizinę skaitmeninę grandinę, kuri atlieka tam tikrą algoritmą aparatūros lygyje, o ne procesoriaus progą.

Tai veikia taip. Yra paruošta spausdintinė plokštė su sąsajų rinkiniu, kuris yra prijungtas prie plokštėje įdiegto FPGA lusto, kažkas panašaus į tokią šaunią duomenų centro plokštę arba šią derinimo plokštę mokymui.

Kol nesukonfigūravome FPGA, lusto viduje tiesiog nėra logikos, kaip apdoroti duomenis iš sąsajų, todėl, žinoma, niekas neveiks. Tačiau dėl dizaino bus sukurta programinė įranga, kuri, įkėlus į FPGA, sukurs mums reikalingą skaitmeninę grandinę. Tokiu būdu galite sukurti 100G Ethernet valdiklį, kuris priims ir apdoros tinklo paketus.

Svarbi FPGA savybė yra galimybė perkonfigūruoti. Tarkime, dabar mums reikia 100G eterneto valdiklio, o per savaitę ta pačia plokšte bus galima įdiegti keturias nepriklausomas 25G Ethernet sąsajas.

Rinkoje yra du FPGA lustų gamintojo lyderiai: gerai žinomi „Intel“ ir „Xilinx“. Jie valdo 58 ir 42 % rinkos. Xilinx įkūrėjai išrado savo pirmąjį FPGA lustą dar 1985 m. „Intel“ į rinką pateko visai neseniai – 2015 m., įsisavindama „Altera“, kuri buvo įkurta tuo pačiu metu kaip „Xilinx“. „Altera“ ir „Xilinx“ technologijos daugeliu atžvilgių yra panašios, kaip ir kūrimo aplinkos. Dažniau aš dirbu su Xilinx produktais, todėl nenustebkite matydami, kad ji nuolat minima straipsnyje.

FPGA plačiai naudojami įvairiose srityse: buitinė elektronika, telekomunikacijų įranga, greitintuvo plokštės, skirtos naudoti duomenų centruose, robotika, ASIC prototipų kūrimas. Toliau pateiksiu keletą pavyzdžių.

Taip pat apžvelgsime technologiją, kuri suteikia techninės įrangos perkonfigūravimą, susipažinsime su projektavimo procesu ir išanalizuosime paprastą aparatūros skaitiklio diegimo Verilog kalba pavyzdį. Jei turite FPGA derinimo plokštę, turėtumėte sugebėti ją atkartoti patys. Jei plokštės nėra, vis tiek galite susipažinti su „Verilog“, imituodami grandinės veikimą kompiuteryje.

Kaip veikia FPGA

FPGA lustas yra tas pats pritaikytas ASIC lustas, susidedantis iš tų pačių tranzistorių, kurie naudojami įprastoms grandinėms surinkti flip-flops, registrus, multiplekserius ir kitus loginius elementus. Žinoma, šių tranzistorių prijungimo tvarkos pakeisti neįmanoma. Tačiau architektūriškai mikroschema sukonstruota taip gudriai, kad galima keisti signalų perjungimą tarp didesnių blokų: jie vadinami CLB – programuojamais loginiais blokais.

Taip pat galite pakeisti loginę funkciją, kurią atlieka CLB. Tai pasiekiama dėl to, kad visas lustas yra persmelktas konfigūracijos atminties elementų Statinė RAM. Kiekvienas šios atminties bitas valdo tam tikrą signalo perjungimo klavišą arba yra loginės funkcijos, kurią įgyvendina CLB, tiesos lentelės dalis.

Kadangi konfigūracijos atmintis kuriama naudojant Static RAM technologiją, pirma, kai įjungtas FPGA, reikia sukonfigūruoti mikroschemą, antra, mikroschemą galima perkonfigūruoti beveik be galo daug kartų.

Labai supaprastinta 2D lusto struktūra be konfigūracijos atminties

CLB yra perjungimo matricoje, kuri apibrėžia CLB įėjimų ir išėjimų jungtis.

Perjungimo matricos diagrama

Kiekvienoje laidininkų sankryžoje yra šeši perjungimo klavišai, valdomi jų pačių konfigūracijos atminties ląstelių. Vienus atidarius, kitus uždarius, galima numatyti skirtingą signalų perjungimą tarp CLB.

CLB

CLB labai paprastai susideda iš bloko, apibrėžiančio kelių argumentų Būlio funkciją (ji vadinama peržvalgos lentele – Look Up Table, LUT) ir trigerio (flip-flop, FF). Šiuolaikiniuose FPGA LUT turi šešis įėjimus, tačiau dėl paprastumo paveikslėlyje pavaizduoti trys. LUT išvestis į CLB išvestį tiekiama asinchroniškai (tiesiogiai) arba sinchroniškai (per FF flip-flop, veikiantį pagal sistemos laikrodį).

LUT įgyvendinimo principas

Įdomu pažvelgti į LUT įgyvendinimo principą. Tarkime, kad turime Būlio funkciją y = (a & b) | ~c. Jo schema ir tiesos lentelė parodyta paveikslėlyje. Funkcija turi tris argumentus, todėl ji užima 2^3 = 8 reikšmes. Kiekvienas iš jų atitinka savo įvesties signalų derinį. Šias vertes apskaičiuoja FPGA programinės įrangos kūrimo programa ir įrašo į specialias konfigūracijos atminties ląsteles.

Kiekvienos ląstelės reikšmė įvedama į LUT išvesties multiplekserio įvestį, o Būlio funkcijos įvesties argumentai naudojami norint pasirinkti vieną ar kitą funkcijos reikšmę. CLB yra svarbiausias FPGA aparatinės įrangos šaltinis. CLB kiekis šiuolaikiniuose FPGA lustuose gali skirtis ir priklauso nuo lusto tipo ir talpos. Xilinx turi CLB kristalų nuo maždaug keturių tūkstančių iki trijų milijonų.

Be CLB, FPGA viduje yra daug svarbių aparatinės įrangos išteklių. Pavyzdžiui, aparatinės įrangos dauginimo-kaupimo blokai arba DSP blokai. Kiekvienas iš jų gali dauginti ir sudėti 18 bitų skaičius kiekvieną ciklą. Aukščiausios klasės kristaluose DSP blokų skaičius gali viršyti 6000.

Kitas šaltinis yra vidinės atminties blokai (Block RAM, BRAM). Kiekviename bloke galima saugoti 2 KB. Bendra tokios atminties talpa, priklausomai nuo kristalo, gali siekti nuo 20 KB iki 20 MB. Kaip ir CLB, BRAM ir DSP blokai yra sujungti perjungimo matrica ir persmelkia visą lustą. Sujungus CLB, DSP ir BRAM blokus, galima gauti labai efektyvias duomenų apdorojimo schemas.

FPGA privalumai

Pirmajame FPGA luste, kurį Xilinx sukūrė 1985 m., buvo tik 64 CLB. Tuo metu tranzistorių integracija į lustus buvo daug mažesnė nei dabar, o „palaidos logikos“ lustai dažnai buvo naudojami skaitmeniniuose įrenginiuose. Buvo atskiri lustai registrams, skaitikliams, multiplekseriams, daugintuvams. Konkrečiam įrenginiui buvo sukurta nuosava spausdintinė plokštė, ant kurios buvo sumontuotos šios mažos integracijos mikroschemos.

FPGA naudojimas leido atsisakyti šio požiūrio. Net 64 CLB FPGA sutaupo vietos spausdintinėje plokštėje, o galimybė perkonfigūruoti papildė galimybę atnaujinti įrenginių funkcionalumą po pagaminimo eksploatacijos metu, kaip sakoma „lauke“ (taigi ir pavadinimas - lauke programuojamų vartų masyvas ).

Dėl to, kad FPGA viduje galima sukurti bet kokią aparatinę skaitmeninę grandinę (svarbiausia, kad pakankamai resursų), viena iš svarbių FPGA pritaikymų yra ASIC lustų prototipų kūrimas.

ASIC kūrimas yra labai sudėtingas ir brangus, klaidų kaina yra labai didelė, o testavimo logika yra labai svarbi. Todėl vienas iš kūrimo etapų, dar prieš pradedant darbą su grandinės fizine topologija, buvo jos prototipų kūrimas viename ar keliuose FPGA lustuose.

ASIC kūrimui išleidžiamos specialios plokštės, kuriose yra daug tarpusavyje sujungtų FPGA. Mikroschemos prototipas veikia daug žemesniais dažniais (gal dešimtimis megahercų), tačiau sutaupo pinigų nustatant problemas ir klaidas.

Tačiau, mano nuomone, yra ir įdomesnių FPGA pritaikymų. Lanksti FPGA struktūra leidžia įdiegti aparatūros grandines didelės spartos ir lygiagrečiam duomenų apdorojimui su galimybe keisti algoritmą.


Techninės įrangos platformų palyginimas

Pagalvokime apie esminį skirtumą tarp procesoriaus, GPU, FPGA ir ASIC. CPU yra universalus, jame galite paleisti bet kokį algoritmą, jis yra lankstiausias ir lengviausias naudoti dėl daugybės programavimo kalbų ir kūrimo aplinkų.

Tuo pačiu metu dėl universalumo ir nuoseklaus procesoriaus komandų vykdymo našumas mažėja ir grandinės energijos suvartojimas didėja. Taip nutinka todėl, kad kiekvienai naudingai aritmetinei operacijai CPU atlieka daug papildomų operacijų, susijusių su instrukcijų skaitymu, duomenų perkėlimu tarp registrų ir talpyklos bei kitais gestais.

Kitoje pusėje yra ASIC. Šioje platformoje reikalingas algoritmas yra įdiegtas aparatinėje įrangoje dėl tiesioginio tranzistorių sujungimo, visos operacijos yra susijusios tik su algoritmo vykdymu ir nėra galimybės jo pakeisti. Taigi didžiausias platformos našumas ir mažiausias energijos suvartojimas. Tačiau ASIC perprogramuoti neįmanoma.

CPU dešinėje yra GPU. Iš pradžių šie lustai buvo skirti grafikos apdorojimui, tačiau dabar naudojami bendrosios paskirties skaičiavimo gavybai. Jie susideda iš tūkstančių mažų skaičiavimo branduolių ir atlieka lygiagrečias operacijas su duomenų masyvu.

Jei algoritmas gali būti lygiagretus, tada GPU bus galima pasiekti reikšmingą pagreitį, palyginti su procesoriumi. Kita vertus, nuoseklūs algoritmai bus įgyvendinti prasčiau, todėl platforma yra mažiau lanksti nei centrinis procesorius. Be to, norint kurti GPU, reikia turėti specialių įgūdžių, išmanyti OpenCL arba CUDA.

Galiausiai, FPGA. Ši platforma sujungia ASIC efektyvumą su galimybe keisti programą. FPGA nėra universalūs, tačiau yra algoritmų ir užduočių klasė, kuri parodys geresnį jų našumą nei CPU ir net GPU. FPGA kūrimo sudėtingumas yra didesnis, tačiau dėl naujų kūrimo įrankių šis atotrūkis sumažėja.

Lemiamas FPGA pranašumas yra galimybė apdoroti duomenis jų atvykimo greičiu su minimaliu atsako uždelsimu. Kaip pavyzdį įsivaizduokite išmanųjį tinklo maršrutizatorių su daugybe prievadų: kai Ethernet paketas patenka į vieną iš jo prievadų, prieš pasirenkant išvesties prievadą, reikia patikrinti daugybę taisyklių. Gali tekti pakeisti kai kuriuos paketo laukus arba pridėti naujų.

Naudojant FPGA šią problemą galima išspręsti akimirksniu: paketo baitai tik pradėjo patekti į mikroschemą iš tinklo sąsajos, o jo antraštė jau analizuojama. Procesorių naudojimas čia gali žymiai sulėtinti tinklo srauto apdorojimo greitį. Akivaizdu, kad maršrutizatoriams galite sukurti pritaikytą ASIC lustą, kuris veiks efektyviausiai, bet ką daryti, jei paketų apdorojimo taisyklės turi pasikeisti? Tik FPGA gali padėti pasiekti reikiamą lankstumą kartu su dideliu našumu.

Taigi, FPGA naudojami ten, kur reikalingas didelis apdorojimo našumas, greičiausias atsako laikas ir mažas energijos suvartojimas.

FPGA debesyje

Debesų kompiuterijoje FPGA naudojami greitam skaičiavimui, tinklo srauto pagreitinimui ir prieigai prie duomenų masyvų. Tai taip pat apima FPGA naudojimą aukšto dažnio prekybai biržose. Į serverius įdedamos FPGA plokštės su PCI Express ir optinio tinklo sąsaja, pagaminta Intel (Altera) arba Xilinx.

FPGA puikiai tinka kriptografiniams algoritmams, DNR sekų palyginimui ir mokslinėms užduotims, tokioms kaip molekulinė dinamika. „Microsoft“ jau seniai naudojo FPGA, kad paspartintų „Bing“ paieškos paslaugą, taip pat tvarkytų programinės įrangos apibrėžtą tinklą „Azure“ debesyje.

Mašininio mokymosi bumas neaplenkė ir FPGA. „Xilinx“ ir „Intel“ siūlo FPGA pagrindu veikiančius įrankius, skirtus darbui su giliais neuroniniais tinklais. Jie leidžia gauti FPGA programinę-aparatinę įrangą, kuri įdiegia tam tikrą tinklą tiesiai iš tokių sistemų kaip Caffe ir TensorFlow.

Be to, visa tai galite išbandyti neišeidami iš namų ir nesinaudodami debesijos paslaugomis. Pavyzdžiui, „Amazon“ galite išsinuomoti virtualią mašiną su prieiga prie FPGA plokštės ir bet kokių kūrimo įrankių, įskaitant mašininį mokymąsi.

FPGA ant krašto

Ką dar įdomaus veikia FPGA? Kodėl jiems tiesiog to nepadarius! Robotika, nepilotuojamos transporto priemonės, dronai, moksliniai instrumentai, medicinos įranga, vartotojų mobilieji įrenginiai, išmaniosios apsaugos kameros ir pan.

Tradiciškai FPGA buvo naudojami skaitmeniniam vienmačių signalų apdorojimui (ir konkuravo su DSP procesoriais) radariniuose įrenginiuose, radijo signalų siųstuvuose-imtuvuose. Vis labiau integruojant lustus ir didėjant našumui, FPGA platformos vis dažniau naudojamos didelio našumo skaičiavimams, pavyzdžiui, dvimačiams signalams apdoroti „debesies pakraštyje“ (kraštų skaičiavimas).

Šią koncepciją lengviausia suprasti naudojant eismo analizės kameros su valstybinio numerio atpažinimo pavyzdį. Galite pasiimti kamerą su galimybe perduoti vaizdą per Ethernet ir apdoroti srautą nuotoliniame serveryje. Didėjant kamerų skaičiui, padidės ir tinklo apkrova, o tai gali sukelti sistemos gedimus.

Vietoj to numerio ženklų atpažinimą geriau įdiegti tiesiai į vaizdo kameros korpusą įmontuotame skaičiuoklėje ir tekstiniu formatu perkelti valstybinius numerius į debesį. Norėdami tai padaryti, netgi galite naudoti palyginti nebrangius mažos galios FPGA, kad išsiversti su baterija. Tuo pačiu metu išlieka galimybė pakeisti FPGA logiką, pavyzdžiui, keičiant numerių standartą.

Kalbant apie robotiką ir dronus, šioje srityje ypač svarbu įvykdyti dvi sąlygas – didelio našumo ir mažo energijos suvartojimo. FPGA platforma puikiai tinka ir gali būti naudojama, ypač kuriant dronų skrydžio valdiklius. Jau gaminami UAV, kurie gali priimti sprendimus skrydžio metu.

FPGA projekto kūrimas

Yra įvairių dizaino lygių: žemas, blokinis ir aukštas. Žemas lygis apima tokių kalbų kaip „Verilog“ ar VHDL naudojimą, kur valdote plėtrą registro perdavimo lygiu (RTL). Tokiu atveju formuojate registrus, kaip ir procesoriuje, ir apibrėžiate logines funkcijas, kurios keičia duomenis tarp jų.

FPGA grandinės visada veikia tam tikru dažniu (dažniausiai 100–300 MHz), o RTL lygiu nustatote grandinės elgseną sistemos laikrodžio viduje. Šis kruopštus darbas lemia efektyviausias grandines pagal našumą, FPGA štampų išteklių suvartojimą ir energijos suvartojimą. Tačiau čia reikalingi rimti schemos įgūdžiai, o su jais procesas nėra greitas.

Blokų lygmenyje jūs iš esmės jungiate paruoštus didelius blokus, kurie atlieka tam tikras funkcijas, kad gautumėte jums reikalingos sistemos lusto (sistemos lusto) funkcionalumą.

Esant aukštam dizaino lygiui, jūs nebekontroliuosite kiekvieno laikrodžio ciklo duomenų, o sutelksite dėmesį į algoritmą. Yra kompiliatorių arba vertėjų nuo C ir C++ iki RTL lygio, pavyzdžiui, Vivado HLS. Tai gana protinga ir leidžia išversti daugybę algoritmų į aparatinės įrangos lygį.

Pagrindinis šio požiūrio pranašumas, palyginti su RTL kalbomis, yra kūrimo ir ypač algoritmų testavimo greitis: C++ kodą galima paleisti ir patikrinti kompiuteryje, ir tai bus daug greičiau nei algoritmo pakeitimų tikrinimas RTL lygiu. Žinoma, už patogumą teks mokėti – grandinė gali pasirodyti ne tokia greita ir atimti daugiau aparatūros resursų.

Dažnai esame pasiruošę sumokėti tokią kainą: jei teisingai naudosite vertėją, efektyvumas labai nenukentės, o resursų šiuolaikiniuose FPGA užtenka. Mūsų pasaulyje, kai rodomas kritinis laikas patekti į rinką, tai yra pateisinama.

Dažnai visi trys kūrimo stiliai turi būti sujungti į vieną dizainą. Tarkime, turime sukurti įrenginį, kurį galėtume sukurti į robotą ir suteikti jam galimybę atpažinti objektus vaizdo sraute – pavyzdžiui, kelio ženklus. Paimkime vaizdo jutiklio lustą ir prijunkite jį tiesiai prie FPGA. Derinimui galime naudoti HDMI monitorių, taip pat prijungtą prie FPGA.

Kadrai iš fotoaparato bus perkelti į FPGA per sąsają, kurią iš anksto nustato jutiklio gamintojas (USB čia neveikia), apdorojami ir rodomi monitoriuje. Norint apdoroti kadrus, jums reikės kadrų buferio, kuris paprastai yra išorinėje DDR atmintyje, sumontuotoje ant spausdintinės plokštės šalia FPGA lusto.


Tipinė FPGA dizaino blokinė schema

Jei vaizdo jutiklio gamintojas nepateikia mūsų FPGA lustui Interface IP, tai mes patys turėsime jį parašyti RTL kalba, skaičiuodami laikrodžius, bitus ir baitus pagal duomenų perdavimo protokolo specifikaciją. Preprocess, DDR Controller ir HDMI IP blokai, greičiausiai imsime jau paruoštus ir tiesiog sujungsime jų sąsajas. O HLS bloką, kuris atlieka gaunamų duomenų paiešką ir apdorojimą, galime rašyti C ++ ir transliuoti naudodami Vivado HLS.

Greičiausiai mums dar reikia kažkokio paruošto kelio ženklų detektoriaus ir klasifikatoriaus bibliotekos, pritaikytos naudoti FPGA. Šiame pavyzdyje, žinoma, pateikiu labai supaprastintą dizaino schemą, tačiau ji teisingai atspindi darbo logiką.

Apsvarstykite dizaino kelią nuo RTL kodo rašymo iki konfigūracijos failo įkėlimo į FPGA.

Dizaino kelias

Taigi, jūs rašote RTL kodą, kuris įgyvendina jums reikalingą schemą. Prieš išbandydami jį su realia aparatūra, turite įsitikinti, kad jis yra teisingas ir teisingai išsprendžia reikiamą problemą. Tam kompiuterio simuliatoriuje naudojamas RTL modeliavimas.

Jūs paimate savo grandinę, iki šiol pavaizduotą tik RTL kode, ir pastatote ją ant virtualaus stendo, kur grandinės įėjimams taikote skaitmeninių signalų sekas, registruojate išėjimo diagramas, išėjimo signalų priklausomybes nuo laiko ir palyginate su laukiamais rezultatais. . Paprastai randate klaidų ir grįžtate prie RTL rašymo.

Be to, logiškai patikrintas kodas tiekiamas į sintezatoriaus programos įvestį. Jis konvertuoja tekstinį grandinės aprašymą į susietą skaitmeninių elementų sąrašą iš bibliotekos, prieinamos tam FPGA lustui. Šiame sąraše bus rodomi tokie elementai kaip LUT, aktyvikliai ir nuorodos tarp jų. Šiame etape elementai dar nėra susieti su konkrečiais aparatinės įrangos ištekliais. Norėdami tai padaryti, turite nustatyti grandinės apribojimus (apribojimus) - visų pirma nurodykite, kurie fiziniai FPGA lusto įvesties / išvesties kaiščiai yra prijungti prie jūsų grandinės loginių įėjimų ir išėjimų.

Dėl šių apribojimų taip pat reikia nurodyti, kokiu laikrodžio greičiu grandinė turėtų veikti. Sintezatoriaus išvestis ir apribojimo failas yra pateikiami įgyvendinimo procesoriui, kuris, be kita ko, tvarko vietą ir maršrutą.

Vietos procesas susieja kiekvieną dar beasmenį elementą iš tinklo sąrašo su konkrečiu elementu FPGA lusto viduje. Toliau pradeda veikti Maršruto procesas, kuris bando rasti optimalų šių elementų ryšį atitinkamai FPGA perjungimo matricos konfigūracijai.

Vieta ir maršrutas veikia pagal apribojimus, kuriuos nustatėme grandinei: įvesties / išvesties kontaktais ir laikrodžio greičiu. Laikrodžio laikotarpis turi labai stiprų poveikį įgyvendinimui: jis neturi būti mažesnis už laiko delsą loginiuose vartuose kritinėje grandinėje tarp dviejų nuoseklių apversimų.

Dažnai šis reikalavimas negali būti įvykdytas iš karto, o tada reikia grįžti į pradinį etapą ir pakeisti RTL kodą: pavyzdžiui, pabandykite sumažinti logiką kritinėje grandinėje. Sėkmingai įgyvendinus, mes žinome, kurie elementai kur yra ir kaip jie yra sujungti.

Tik po to prasideda dvejetainio FPGA programinės įrangos failo kūrimo procesas. Belieka įkelti jį į tikrą aparatinę įrangą ir patikrinti, ar ji veikia taip, kaip tikėtasi. Jei šiame etape atsiranda problemų, tai reiškia, kad modeliavimas buvo nebaigtas ir šiame etape visos klaidos ir trūkumai nebuvo pašalinti.

Galite grįžti į modeliavimo etapą ir imituoti neįprastą situaciją, o jei tai neveikia, kraštutiniais atvejais derinimo mechanizmas pateikiamas tiesiogiai veikiančioje aparatinėje įrangoje. Galite nurodyti, kuriuos signalus norite sekti laikui bėgant, o kūrimo aplinka sugeneruos papildomą loginio analizatoriaus grandinę, kuri bus patalpinta ant lusto šalia jūsų dizaino grandinės, prisijungs prie dominančių signalų ir laikui bėgant išsaugos jų reikšmes. Išsaugotas norimų signalų laiko diagramas galima atsisiųsti į kompiuterį ir analizuoti.

Kol buvo atostogos, Veriloge padariau nedidelį projektą, kurį jau seniai norėjau išbandyti.

Projekto esmė tokia: prie FPGA prijungtas greitas (santykinai, žinoma) ADC su dviem kanalais ir lygiagrečia sąsaja (14-16 bitų kanale). FPGA nuskaito duomenis iš ADC ir išsaugo juos buferyje (vidinėje BRAM atmintyje). Kai buferis pilnas, skaitymas sustoja ir išorinis įrenginys (mikrovaldiklis) gali nuskaityti duomenis iš buferio per SPI sąsają. Kai kuriuos parametrus taip pat galite sukonfigūruoti naudodami SPI (tai bus aptarta kitame įraše).

Projekto testas (paspaudžiamas vaizdas).

Cyclone IVE sintezės rezultatas

Aš susintetinau rezultatą Quartus II, skirtą Cyclone IVE šeimos FPGA (EP4CE6E22A7). Tai vienas iš paprasčiausių ir nebrangiausių FPGA QFP144 pakete, skirtas 6272 loginiams elementams. Lusto atminties talpa yra 30K * 9 bitai. Vartotojo kaiščiai – 92.

lustas EP4CE6E22A7
loginiai elementai - 301 (5%)
smeigtukai - 41 (45%)
atmintis - 65536 bitai (24%)
blogiausio atvejo dažnis (125 C) – 151 MHz.

Atmintis 8 KB, tai iš tikrųjų yra buferis, kuriame įrašomi duomenys. Su dviem kanalais po 16 bitų viename mėginyje gaunama 32 bitai ir 2048 mėginiai. Nusprendžiau, kad to užteks, nors buferį galima išplėsti net iki viso tūrio.

Dažnis yra gana patenkinamas, tikėjausi, kad bus 50 MHz taktinis dažnis, o ADC - 25 MHz. Tai yra, gaunama triguba dažnio marža.

Loginių elementų skaičius tokiam FPGA yra gana nežymus, t.y. jei norite, ten galite pritvirtinti daug kitų dalykų, juolab kad liko net 51 smeigtukas.

Yra naujesnė Cyclone 10 šeima.

10 ciklono sintezės rezultatas

Mes pasirenkame lustą 10CL006YE144C8G. Jame yra tiek pat vartų (6272) kaip Cyclone 4 versijoje ir tiek pat atminties (30K x 9). Korpusas toks pat kaip QFP144, vartotojo kaiščių yra dar mažiau – 89.

lustas 10CL006YE144C8G
loginiai elementai - 289 (5%)
smeigtukai - 41 (46%)
atmintis - 65536 bitai (24%)
blogiausio atvejo dažnis (85 C) yra 145,5 MHz.

Įdomu, kad projektas tapo kompaktiškesnis loginių elementų prasme. Tai reiškia, kad su tuo pačiu loginiu pajėgumu sudėtingesnis projektas tilps į 10 cikloną. Visa kita yra maždaug tokio paties lygio.

Kyla pagrįstas klausimas: ar galima sutaupyti pinigų įdiegus kitą FPGA ar CPLD?

Išbandykime FPGA MAX10.

MAX 10 sintezės rezultatas

Čia skaitytojas (jei jis yra temoje) gali sušukti: ne, tai ne taip! MAX šeima yra CPLD, o ne FPGA, o šių sąvokų supainiojimas yra akivaizdus neprofesionalumas!

Tačiau „Intel“ rinkodaros specialistų pastangomis (ar visi žino, kad kalbame apie „Intel“ lustus?) MAX10 šeima virto FPGA, nors turi vidinę nepastovią konfigūracijos atmintį, kaip ir bet kuris CPLD.

Taigi, renkamės lustą, pavyzdžiui, 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), QFP144 paketą.

lustas 10M02SCE144A7G.
loginiai elementai - 298 (13%)
smeigtukai - 41 (41%)
atmintis – 65536 bitai (59%)
blogiausio atvejo dažnis (125 C) – 153 MHz.

Matome, kad absoliutūs rodikliai išliko praktiškai tie patys, tik padidėjo kristalų užpildymo laipsnis, tai suprantama – 2304LE prieš 6272 LE.

Ar galima naudoti MAX II?

Dabar kyla klausimas: ar galima naudoti labai pigų CPLD, pvz., MAX II? Čia viskas sudėtingiau. Jie neturi BRAM atminties, t.y. jums taip pat reikės išorinės sparčios SRAM.

Norint prijungti SRAM, žinoma, reikės papildomos logikos. Jei naudosime 4K x 16 atmintį, tai mums reikės papildomų 16 kontaktų duomenims, 12 adresams ir 3 valdymui (/cs, /we, /oe), iš viso 31 papildomai.

Logika taip pat padidės. Sunku tiksliai pasakyti kiek, bet iš pradžių jis netilps į CPLD ant 240 LE, bet galbūt tilps į 570 LE.

QFP100 pakete renkamės CPLD EPM570. Mums reikia tik 72 kontaktų, korpuse yra 76 kontaktai GPIO, t.y. turėtų užtekti viskam, bet jau labai mažai vietos plėstis.

Šio sprendimo privalumai: galbūt mažesnė kaina (net su papildomu SRAM lustu), trūkumai: didesnis grandinės sudėtingumas ir plokštės plotas.

Išleidimo kaina

Štai ką radau naudodamas efind. Mikroschemos šiek tiek skiriasi, tačiau skaičius ir raidė pabaigoje yra veikimo indeksas ir temperatūros diapazonas (komercinis). Kadangi turime trigubą dažnio skirtumą, šie skaičiai mums visiškai nesvarbūs.

EP4CE6E22C8N – 456.55 R („Promelectronics“, EKB, mažmeninė prekyba)
10CL006YE144C - 754.71 (Penktasis elementas, Sankt Peterburgas, didmeninė prekyba)
10M02SCE144C8G - 456 R (Elitan, Ekb, didmeninė prekyba)
EPM570F100C5N - 368 R (Hitech, Sankt Peterburgas) + atmintis (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) - 92.51 R (Pramoninė elektronika, EKB, mažmeninė prekyba)

Žinoma, galima rasti ir pigiau, tai tik mažmeninės kainos parduotuvėje, bet santykis bus maždaug toks pat.

Matyti, kad CPLD variantas niekaip nelaimi kainos atžvilgiu, tuo pačiu turintis daug minusų. Likusios parinktys yra maždaug lygiavertės, išskyrus tai, kad Cyclone 10 vis dar yra šiek tiek brangesnis ir mažai žmonių turi jį sandėlyje. Tačiau tai visiškai nauja šeima, iki šiol jos neatsivežė visi platintojai.

Asmeniškai man labiausiai patinka MAX 10. Jis turi vieną privalumą: nereikia įkelti FPGA konfigūracijos paleidžiant. „Cyclone 4“ variante turėsite įkelti FPGA konfigūraciją, o tai galima padaryti naudojant papildomą konfigūracijos atminties lustą arba naudojant mikrovaldiklį. Yra ir trečia galimybė: blykčioti per JTAG ir niekada neištraukti maitinimo iš lusto. Girdėjau, kad kažkas tai padarė, nežinau, ar tai pokštas, ar ne, bet tikrai to nedarysiu.

Tačiau variantas su „Cyclone 4“ programine įranga per mikrovaldiklį turi pranašumą: galimybė atnaujinti FPGA programinę įrangą per vartotojo sąsajas: USB, Ethernet ir kt.

Galimas ir kitas nebanalus variantas: visai neįdiegti mikrovaldiklio, o į FPGA įkelti kokį nors įdėtą procesorių. Bet tai nėra labai geras pasirinkimas, galbūt, nes. tam tikrai reikės išorinės ROM ir RAM bei bent jau USB tilto. Žinoma, nebūtina sąmoningai atsisakyti šios galimybės, bet man atrodo, kad ją įgyvendinti yra sunkiau nei naudojant mikrovaldiklį.

Apie tai, kokias funkcijas atlieka ši programinė įranga, parašysiu kitame įraše.

FPGA NAUDOJIMAS MODERNIUOSE ĮRENGINIUOSE

Tupikovas Pavelas Andrejevičius

5 kurso studentas, meno katedra OmSTU, Rusijos Federacija, Omskas

Šiandien programuojamos loginės integrinės grandinės (FPGA) vis dažniau naudojamos įvairiuose šiuolaikiniuose įrenginiuose, taip yra dėl to, kad FPGA turi didelių pranašumų prieš įprastus skaitmeninius mikroschemus. Šie pranašumai apima:

· Patobulintas gaminio veikimas.

· Sumažinama prekės kaina.

Sumažinti gaminio matmenys.

Padidėja gaminio patikimumas (mažėja atskirų mikroschemų skaičius)

Produkto lankstumas padidėja (FPGA visada gali būti perprogramuotas)

FPGA architektūra turi sudėtingą struktūrą (1 pav.)

1 pav. Vidinė FPGA struktūra

Kaip matyti iš 1 paveikslo, pagrindinė FPGA dalis susideda iš programuojamų loginių blokų ir programuojamų vidinių jungčių.

Pats FPGA programavimo (firmware) procesas susideda iš būtinų jungčių tarp įrenginio įėjimų ir išėjimų formavimo.

Iki šiol pasaulyje yra du FPGA gamybos lyderiai. Tai Amerikos firmos Xilinx ir Altera.

Kiekviena įmonė siūlo savo CAD darbui su FPGA. Xilinx siūlo Xilinx programinės įrangos kūrimo rinkinį (SDK). Altera siūlo Max+Plus II ir Quartus II, taip pat ModelSim modeliavimo sistemą.

Kuriant programinės įrangos programas, dažniausiai naudojamos kalbos, apibūdinančios įrangos veikimą, šiandien dažniausiai naudojamos šios kalbos:

Verilog HDL.

Sunkiausia išmokti VHDL kalbą, tačiau tuo pat metu ji turi didžiausias galimybes funkciniu ir elgsenos abstrakcijos lygiu, tačiau ji turi mažiau galimybių struktūriniame abstrakcijos lygmenyje, palyginti su Verilog HDL, VITAL biblioteka buvo sukurta siekiant išplėsti VHDL kalbos galimybes (2 pav.).


2 pav. Abstrakcijos sluoksniai Verilog Ir VHDL

Verilog HDL kalbos veikimo pavyzdys yra Mini-DiLab stendo CYCLONE III EP3C5E1444C8N FPGA įdiegta programa, kurios bendras vaizdas parodytas fig. 3.


3 pav. Bendras lentos vaizdas Mini - DiLab

Ši programa įgyvendina nuoseklų led0-led7 šviesos diodų perjungimą, pasirenkant pridėti „šviesos“ judesį naudojant pba ir pbb mygtukus, taip pat valdyti perjungimo greitį naudojant jungiklius sw0, sw1.

//Programos tekstas

modulis projektas ( išvestis vadovavo, įvestis clk_25mhz, įvestis pba, įvestis pbb,

įvestis sw);

// Projekto vidinių jungčių paskirtis

viela s1;

viela s2;

viela s3;

// Kitų failų (paprogramių), prijungtų prie projekto, iškvietimas

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Skaitiklio skaitiklis_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

pabaigos modulis// programos pabaiga

Paprogramė tr

modulis tr(out, set, res); // Sukurkite programą

// I/O užduotis

išvestisreg išeiti;

įvestis rinkinys;

įvestis res;

// inicijavimas

pradinė

pradėti

išeiti<= 1"d0;

// Pagrindinės programos kodas

visada @(negedge nustatyti arba negedge res)

pradėti

jeigu(~(rinkinys))

išeiti<= 1"d1;

Kitas

išeiti<= 1"d0;

pabaigos modulis // Programos pabaiga

Paprogramių skaitiklis

modulis skaitiklis(con, q, clk, up); // Programos pradžia

išvestisreg con;

išvestis q = con;

įvestis aukštyn, clk;

// Pagrindinės programos kodas

visada @(pozedžas clk)

pradėti

jeigu(clk)

jeigu(aukštyn)

Con<= con - 1"d1;

Kitas

Con<= con + 1"d1;

pabaigos modulis// Programos pabaiga

Paprogramė mx (multiplekseris)

modulis mx( išvestis.reg a, įvestisį, įvestis apkrova);

// Pagrindinės programos kodas

visada @*

pradėti

atveju(apkrova)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

pabaigos dėklas

pabaigos modulis // Programos pabaiga

Paprogramė dc3_8 (multiplekseris)

modulis dc3_8(išėjimas, įėjimas); // Programos pradžia

// I/O užduotis

išvestis.reg išeiti;

įvesties laidas in;

// Pagrindinės programos kodas

visada @*

pradėti

atveju(į)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

pabaigos dėklas

pabaigos modulis // Programos pabaiga

Programa buvo įdiegta CAD Quartus II.

Sukūręs programą, kompiliatorius nesukūrė programoje jokių klaidų ar pastabų, susijusių su programos analize ir sintakse (4 pav.).


4 pav. Projekto pranešimo langas

Kompiliatoriaus pastabos rodo Quartus II licencijos nebuvimą (mokymui buvo naudojama nemokama programos versija) ir projektui modeliuoti reikalingų failų nebuvimą.

RTL Šio projekto struktūra parodyta fig. 5.


5 pav. Projekto įgyvendinimas ( RTL struktūra)

Kaip parodyta pav. 6 šioje programoje naudojama tik nedidelė dalis šios FPGA galimybių.

6 pav. Projekte dalyvaujanti FPGA dalis

Išvados: Programuojamos loginės integrinės grandinės naudojamos daugelyje įrenginių. Norint išmokti su jais dirbti, į specialybių, susijusių su radioelektroninės įrangos projektavimu ir konstravimu, mokymo programą būtina įvesti techninės įrangos aprašymo kalbų (Verilog HDL ir VHDL) pažinimą.

Bibliografija:

1. Grushevitzky R.I. Programinės logikos mikroschemomis pagrįstų sistemų projektavimas / R.I. Grushevitzky, A.X. Mursajevas, E.P. Niūrus. Sankt Peterburgas: BHV Petersburg, 2002. - 608 p.

2. Kolomovas D.A. Kompiuterinės projektavimo sistemos iš Altra MAX+plus II ir Quartus II. Trumpas aprašymas ir pamoka / D.A. Kolomovas, R.A. Myalk, A.A. Zobenko, A.S. Filippovas. M.: IP RadioSoft, 2002. - 126 p.

3. Maxfield K. FPGA dizainas. Jauno kovotojo kursas. / K. Maxfield. M.: Leidykla "Dodeka-XXI", 2007. - 408 p. (vertimas iš anglų kalbos).

65 nanometrai – kitas Zelenograd Angstrem-T gamyklos tikslas, kainuosiantis 300-350 milijonų eurų. Įmonė „Vnešekonombank“ (VEB) jau pateikė paraišką lengvatinei paskolai gauti gamybos technologijoms modernizuoti, šią savaitę pranešė „Vedomosti“, remdamasi gamyklos direktorių tarybos pirmininku Leonidu Reimanu. Dabar „Angstrem-T“ ruošiasi paleisti 90 nm topologijos lustų gamybos liniją. Ankstesnės VEB paskolos, už kurią ji buvo įsigyta, mokėjimai prasidės 2017 m. viduryje.

Pekinas sugriuvo Wall Street

Pagrindiniai JAV indeksai pirmąsias Naujųjų metų dienas pažymėjo rekordiniu kritimu, milijardierius George'as Sorosas jau perspėjo, kad pasaulis laukia 2008-ųjų krizės pasikartojimo.

Pirmasis Rusijos vartotojų procesorius Baikal-T1, kurio kaina yra 60 USD, pradedamas masiškai gaminti

Bendrovė „Baikal Electronics“ 2016 metų pradžioje žada į pramoninę gamybą išleisti apie 60 USD vertės rusišką „Baikal-T1“ procesorių. Įrenginiai bus paklausūs, jei tokią paklausą sukurs valstybė, teigia rinkos dalyviai.

MTS ir Ericsson kartu kurs ir įdiegs 5G Rusijoje

PJSC „Mobile TeleSystems“ ir Ericsson pasirašė sutartis dėl bendradarbiavimo kuriant ir diegiant 5G technologiją Rusijoje. Bandomuosiuose projektuose, įskaitant 2018 m. pasaulio čempionatą, MTS ketina išbandyti Švedijos pardavėjo plėtrą. Kitų metų pradžioje operatorius pradės dialogą su Telekomunikacijų ir masinių ryšių ministerija dėl penktos kartos mobiliojo ryšio techninių reikalavimų formavimo.

Sergejus Čemezovas: „Rostec“ jau yra viena iš dešimties didžiausių inžinerinių korporacijų pasaulyje

Interviu RBC „Rostec“ vadovas Sergejus Čemezovas atsakė į degančius klausimus: apie „Platon“ sistemą, „AVTOVAZ“ problemas ir perspektyvas, valstybinės korporacijos interesus farmacijos versle, kalbėjo apie tarptautinį bendradarbiavimą spaudžiant sankcijoms, importą. pakeitimas, reorganizavimas, plėtros strategijos ir naujos galimybės sunkiais laikais.

Rostec yra „apsaugotas“ ir kėsinasi į „Samsung“ ir „General Electric“ laurus

„Rostec“ stebėtojų taryba patvirtino „Plėtros strategiją iki 2025 m.“. Pagrindiniai uždaviniai – padidinti aukštųjų technologijų civilinių gaminių dalį ir pasivyti „General Electric“ bei „Samsung“ pagal pagrindinius finansinius rodiklius.

Straipsnyje bandoma nustatyti programuojamųjų loginių integrinių grandynų (FPGA) sukurtų skaitmeninių modulių pridedamos dokumentacijos sudėtį. Šią lydimąją dokumentaciją kūrėjai turi pateikti vartotojui/užsakovui, kad sukurtą skaitmeninį modulį sėkmingai panaudotų savo projektuose skaitmeninių įrenginių FPGA projektavimo etape.

Įvadas

Taigi, kokios projektinės dokumentacijos reikėtų prašyti kūrėjo, jei įmonė ar užsakovo įmonė ar kitas kūrėjas ateityje savo projektuose naudos „užsienio“ sukurtą įrenginį? Šis straipsnis gali būti naudojamas kaip „apgaudinėjimo lapas“, kad pirmiausia būtų galima teisingai išduoti FPGA skaitmeninio įrenginio kūrimo techninę užduotį, o tada paprašyti kūrėjo pateikti jau sukurto skaitmeninio įrenginio projektinę dokumentaciją. Remdamasi ankstesne patirtimi, susijusia su projektavimo dokumentacija, įmonė ar firma paprastai taiko šiuos standartus ir reglamentus:

  • GOST 2.102-68 ESKD. Projektavimo dokumentų rūšys ir išsamumas.
  • GOST 15.101-98. Produktų kūrimo ir gamybos sistema. Tyrimo darbų atlikimo tvarka.
  • GOST R 15.201-20-00. Produktų kūrimo ir gamybos sistema. Gaminiai pramoniniams ir techniniams tikslams. Produktų kūrimo ir gamybos tvarka.

Paprastai tai buvo programinės įrangos failas ir programa (skaitmeninio įrenginio aprašymas VHDL / Verilog arba skaitmeninių grandinių rinkinys, sukurtas grandinės rengyklėje naudojant skaitmeninės loginės bibliotekos elementus, tokius kaip šlepetės, registrai, skaitikliai, dekoderiai ir kt.) CD ar DVD ir programavimo instrukcijos. Štai ir viskas.

Pavyzdžiui, autorius susidūrė su tokia problema. Vienas iš darbuotojų sukūrė sudėtingą kelių modulių skaitmeninį įrenginį. Aš aprašiau visus VHDL modulius ir pažiūrėjau į šių modulių ir viso skaitmeninio įrenginio veikimo ciklogramas geru ir brangiu osciloskopu. Jis nežinojo apie „Test Bench“ failus ir apie galimybę atlikti simuliacijas arba nemokėjo jų parašyti, beje, taip pat nebuvo jokių pastabų dėl projekto ir modulių aprašymų. Situacija gali būti dar blogesnė, jei modulius vaizduoja skaitmeninės grandinės, suprojektuotos scheminiame redaktoriuje, naudojant bibliotekos elementus. Čia ir slypi vienas iš pagrindinių trūkumų: be paties kūrėjo, vargu ar kas nors supras šį skaitmeninį įrenginį, ypač jei projektas yra kelių modulių, o kiekvieno modulio aprašymas yra daugiau nei 100 eilučių ar daugiau. nei vienas monitoriaus ekranas. Taigi, jei kitas kūrėjas nori tokį jau sukurtą skaitmeninį įrenginį, skirtą FPGA, įtraukti į naują kūrimą ar projektą, jam vėl reikia skirti laiko šio skaitmeninio įrenginio kūrimui.

FPGA dizaino problemos istorija

Šiuo metu FPGA rinka yra viena dinamiškiausiai besivystančių. FPGA yra naudojami daugelyje technologijų šakų. Šiuo metu nėra vienareikšmės metodikos, tenkinančios visus techninės įrangos kūrėjus, norint gauti FPGA konfigūraciją iš įrenginio funkcinio modelio sistemos lygiu. Populiariausias šios problemos sprendimo būdas yra IP branduolių technologijos (intelektinės nuosavybės branduolių) naudojimas. IP branduoliai yra paruošti komponentai, leidžiantys lengvai įtraukti juos į savo projektą, kad sukurtumėte sudėtingesnę sistemą. Šis metodas turi vieną reikšmingą trūkumą – IP branduolių prijungimą prie elementinio pagrindo. Kiekvienas IP branduolys yra optimizuotas tam tikrai konkretaus gamintojo lustų serijai, o tai žymiai pablogina galimybę perkelti jau sukurtus įrenginius iš vieno elemento pagrindo į kitą. Dėl uždaro komercinių CAD architektūrų pobūdžio neįmanoma pridėti savo funkcinių įrenginių modelių sistemos lygiu, kad būtų galima gauti įrenginių modelius registro perdavimo lygiu (RTL). Skaitmeninio modulio kūrimas vykdomas skaitmeninės grandinės pavidalu, nubrėžtos grandinių redaktoriuje, naudojant gamintojo įmontuotą pagrindinių grandinės elementų CAD biblioteką, pvz., šlepetus, dekoderius, skaitiklius, sumatorius ir kt.

Kitas populiarus metodas, leidžiantis pereiti nuo funkcinio modelio sistemos lygiu prie įrenginio modelio registrų perdavimo lygmeniu, yra sistemos lygio projektavimo kalbų (SLDL) naudojimas. Tokios kalbos apima SystemC, Handel-C, VHDL, Verilog, System Verilog. Pagrindinis privalumas yra nepriklausomybė nuo aparatinės įrangos pagrindo, kuriame įrenginys bus įdiegtas.

Taigi, viena vertus, naudojant IP branduolio technologiją, aparatūros kūrėjas gauna aukštos kokybės sprendimą, tačiau griežtai susietą su aparatinės įrangos pagrindu, kuriame įrenginys yra įdiegtas. Kita vertus, naudojant aparatūros aprašymo kalbas sistemos lygiu, įrenginio diegimas nepriklauso nuo aparatinės įrangos. Iš to, kas išdėstyta pirmiau, darytina išvada, kad šiuo metu svarbu naudoti bendrą skaitmeninių modulių naudojimą aparatinės įrangos aprašymo kalba ir gamintojo (Xilinx, Altera, Actel ir kt.) ir trečiųjų šalių kūrėjų IP branduoliuose, kad būtų pagreitintas. skaitmeninių modulių projektavimo procesas. Naudojant trečiųjų šalių gamintojų skaitmeninius modulius, kartais pridedamoje dokumentacijoje trūksta informacijos.

Informacijos apie sukurtą skaitmeninį FPGA modulį teikimas

Atsižvelgdamas į FPGA konfigūracijos gavimo metodiką pagal įrenginio funkcinį modelį sistemos lygiu, kūrėjas gali išskirti šiuos FPGA skaitmeninių modulių tipus:

  • Programinė įranga - sukurtas skaitmeninis modulis, perduodamas vartotojui aprašymo forma aparatinės įrangos aprašymo kalba (VHDL, Verilog) arba (ir) sukurtas scheminiame redaktoriuje, skirtas tolesniam naudojimui automatinės loginių grandinių sintezės programose ir optimizuotas pagal funkciniai parametrai.
  • Firmware - skaitmeninis modulis, sukurtas trečiosios šalies kūrėjų įmonės, vadinamas IP branduoliu, perduodamas vartotojui loginės grandinės (netlist) forma, pagrįsta FPGA gamintojo loginių elementų biblioteka ir optimizuotas funkciniu požiūriu. ir elektriniai parametrai.

Dokumentacijos rengimo etape, remiantis asmenine patirtimi, be įprastos projektinės dokumentacijos ir specifikacijų, atliekamų pagal GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114, būtina išduoti visų tipų modelių dokumentus. (sistema, logika, grandinė), sukurta FPGA skaitmeninių įrenginių projektavimo etapuose.

Kitaip tariant, į skaitmeninio FPGA įrenginio projektavimo dokumentų rinkinį, be programinės įrangos failo, programavimo instrukcijų ir projekto, įrašyto į CD / DVD, taip pat turėtų būti pridedama dokumentacija.

Lentelė. Patvirtinamųjų dokumentų skyrių sąrašas

Skyriaus pavadinimas Žiūrėti
Programinė įranga Firmware
Bendra informacija
Tikslas ir apimtis APIE R
Specifikacijos APIE APIE
Atstatymo signalų aprašymas APIE APIE
Sinchronizacijos signalų aprašymas APIE APIE
Sąsajų aprašymas APIE R
Laiko diagramos R APIE
Valdymo registrų aprašymas APIE APIE
Struktūrinė (funkcinė) diagrama R R
Programavimo vadovas APIE APIE
FPGA modelis arba šeima,
įmonės gamintojas
R APIE
Skaitmeninio modulio pristatymas
loginiam projektavimui FPGA
RTL modelis APIE Nr
Loginis modelis Nr APIE
Dizaino ribos APIE APIE

Čia yra sekcijų (lentelės), kurios turėtų būti įtrauktos į pridedamą skaitmeninio FPGA modulio projekto dokumentaciją, sąrašas. Kiekviename skyriuje rodomi poreikio įtraukti skyrių į dokumentų rinkinį ženklai:

  • "O" - privaloma pateikta sekcija;
  • "R" - skyrius rekomenduojamas pristatymui.

Rekomenduojami failų formatai patvirtinamiesiems dokumentams pateikti yra MS Word, PDF (geriausias formatas), HTML. Aprašo failai aparatinės įrangos aprašo kalba (VHDL, Verilog) ir (arba) sukurti schemų rengyklėje pateikiami pagal CAD projektavimo programinės įrangos reikalavimus. Išimtis gali būti papildoma grafinio formato (JPEG, BMP) skaitmeninių grandynų failų, sukurtų schemų rengyklėje, nuostata.

Bendra informacija

Šiame skyriuje aprašoma bendra informacija apie sukurtą skaitmeninį modulį:

  • funkcinė schema ir ją sudarantys blokai / dalys;
  • atstatyti signalus, sinchronizavimas;
  • taikomos sąsajos;
  • kontrolės registrai;
  • laiko schema;
  • programavimas.

Tikslas ir apimtis

Nustatoma skaitmeninio modulio paskirtis, taikymo sritis.

Specifikacijos

Pateikiamas pagrindinių jo techninių charakteristikų aprašymas, pavyzdžiui, našumas, tam tikro FPGA lusto energijos suvartojimas, užimtų vartų skaičius, naudojamo FPGA lusto tipas. Papildomai nurodomas FPGA gamintojas, naudotas kuriant skaitmeninį CAD modulį, bei programinė įranga, naudojama modeliavimui ir tikrinimui. Nurodoma visų naudojamų programų versija ir įdiegti naujinimai. Pateikiamas grafinis skaitmeninio modulio vaizdas „juodosios dėžutės“ pavidalu su išorinių įėjimų / išėjimų žymėjimu ir trumpas jų paskirties aprašymas.

Atstatymo signalų aprašymas

Pateikiama išsami informacija apie atstatymo signalus:

  • Išorinių ir vidinių atstatymo signalų sąrašas.
  • Atstatymo signalų laiko parametrai ir laiko diagramos.
  • Grandinės, skirtos generuoti vidinius atstatymo signalus, jei tokių yra, yra įtrauktos į skaitmeninį modulį.
  • Ryšiai su kitais signalais (ypač sinchronizacijos signalais).

Sinchronizacijos signalų aprašymas

Pateikiama išsami informacija apie sinchronizavimo signalus:

  • išorinių sinchronizacijos signalų aprašymas;
  • sinchronizavimo signalų laiko parametrai;
  • vidinių sinchronizacijos signalų ir jų formavimo schemų aprašymas;
  • sinchronizavimo signalų iš skirtingų šaltinių laiko ryšiai;

Sąsajų aprašymas

Pateikiamos visų sąsajų, kurios yra sukurto skaitmeninio modulio dalis, naudojimo ypatybės, pageidautina suvienodintos sąveikai su kitais sistemos mazgais organizuoti mikroschemoje. Be to, pateikiama internetinė nuoroda į pilną standartinės sąsajos aprašymą arba pateikiamas pačios sąsajos aprašymas. Šiuo metu sąsajos su AMBA, PLB, Wishbone magistrale priimamos kaip vieningos skaitmeninių modulių sąsajos.

Laiko diagramos

Pateikiama reikalinga informacija organizuojant duomenų mainus per sąsajas ir kitus skaitmeninio modulio įėjimus/išėjimus: grafinis laiko diagramų vaizdavimas, duomenų perdavimo protokolų aprašymas, reikalavimai išoriniams signalams, taikomiems skaitmeniniam moduliui (trukmė, dažnis ir kt.) ir kita informacija.

Valdymo registrų aprašymas

Pateikiamas visų skaitmeninio modulio valdymo registrų aprašymas. Tipiškame valdymo registro aprašyme yra registro pavadinimas, registro adresas vidinėje adresų erdvėje, pradinė reikšmė pašalinus atstatymo signalą, prieigos tipas (skaitymas / rašymas), vidinio aprašymas. laukai.

Struktūrinė (funkcinė) diagrama

Pateikiamas skaitmeninio modulio pagrindinių vidinių mazgų / blokų jungčių vidinės struktūros vaizdas, trumpas jų tekstinis aprašymas. Be to, pateikiamas pagrindinių skaitmeninio modulio vidinių blokų aprašymas. Šio dokumento tikslas – suteikti vartotojui informaciją, reikalingą skaitmeninio modulio veikimo principams suprasti.

Aprašytų blokų skaičių ir aprašo apimtį nustato skaitmeninio modulio kūrėjas. Pageidautina, kad minimalus aprašytų modulių skaičius atitiktų skaitmeninio modulio struktūrinės (funkcinės) schemos elementų skaičių.

Tipiškame vidaus bloko aprašyme yra:

  • bloko priskyrimas;
  • struktūrinė (funkcinė) blokinė schema (jei reikia);
  • darbo režimai ir algoritmai;
  • darbo laiko diagramos;
  • padalinio valdymo organizavimas;
  • bendravimo su kitais padaliniais organizavimas;
  • bet kokia kita informacija.

Programavimo vadovas

Suteikia visą reikiamą informaciją apie programavimo procesą naudojant skaitmeninio modulio gamintojo CAD FPGA, reikalingas programinės įrangos kūrimo ir derinimo priemones bei programinės įrangos bibliotekas.

FPGA modelis arba šeima, gamintojas

Skaitmeninio modulio programinei įrangai nurodomas FPGA gamintojas, FPGA modelis arba šeima ir jo greičio charakteristikos. Programinės įrangos skaitmeniniam moduliui pateikiama informacija apie užimtų resursų kiekį, taikomo FPGA reikalavimus.

Skaitmeninio modulio loginiam projektavimui vaizdavimas

Straipsnyje buvo aptarti sunkumai naudojant „svetimą“ projektą VHDL – trūksta tinkamų gairių programoms pavadinti ir rašyti. Taip pat buvo duoti bendri nurodymai dėl pavadinimų, gerų manierų rašant programas ir sintezės gairės. Šiuos klausimus reikėtų kiek įmanoma išsamiau aptarti su kūrėju, jei ateityje planuojate toliau kurti ar atnaujinti savarankiškai, kol jis pradės kurti skaitmeninio modulio RTL modelį FPGA. Tai ypač pasakytina apie programinės įrangos skaitmeninio modulio tipą FPGA. Toje pačioje straipsnio dalyje aprašomi bendrieji reikalavimai visam kuriamo skaitmeninio modulio projektui FPGA. Štai klausimai, į kuriuos turėtumėte atkreipti dėmesį rengdami FPGA skaitmeninio modulio kūrimo užduotis, ypač tai susiję su darbo rezultatų perdavimu.

RTL modelis

Skaitmeninis modulis, aprašytas sintezuotame Verilog arba VHDL kalbos poaibyje arba (arba) sukurtas schemų rengyklėje, yra skirtas naudoti FPGA loginės sintezės etape. Tiekiama programinei įrangai kaip surinktas skaitmeninio modulio projektas FPGA gamintojo CAD sistemoje. Firmware skaitmeniniam moduliui RTL modelis pateikiamas pagal atskirą sutartį.

Be RTL modelio failų, perkeliami:

  • Modelio naudojimo instrukcijos.
  • Modelyje esančių atminties blokų aprašymas, įskaitant atminties tipą, dydį, atminties blokų skaičių, atminties bloko hierarchinį pavadinimą.
  • Aprašoma, kaip sukurti iš anksto sukurtus branduolius, naudojant programas jiems kurti (pavyzdžiui, CoreGenerator for Xilinx ISE). Jei aprašymų nėra, dėl technologijos ir gamintojo priklausomybės gali būti perprojektavimo ir taikymo apribojimų.
  • Jei naudojamas gamintojo mikroprocesorius (pavyzdžiui, iš Altera - Nios procesoriaus; iš Xilinx - Microblaze, PowerPC mikroprocesorių), būtinas procesoriaus branduolio ir jo periferijos konfigūravimo proceso aprašymas.
  • Testų rinkinys (Test Bench failai), skirtas patikrinti ir imituoti skaitmeninį modulį, parašytą Verilog ir (arba) VHDL arba (arba) System Verilog.
  • Bet kokia kita papildoma informacija.

Loginis modelis

Modelis yra tinklo sąrašas, aprašytas naudojant Verilog arba VHDL kalbas FPGA gamintojo bibliotekos pagrindu ir pateikiamas skaitmeninio modulio programinei įrangai.

Be loginio modelio failų, perkeliami:

  • Šio modelio naudojimo instrukcijos.
  • Testų rinkinys (Test Bench failai), skirtas patikrinti ir imituoti skaitmeninį modulį, parašytą Verilog ir (arba) VHDL arba (arba) System Verilog.
  • Vadovas, kaip dirbti su skaitmeninio modulio modeliavimo ir tikrinimo testų rinkiniu.
  • Bet kokia kita papildoma informacija.

Dizaino ribos

Projektavimo apribojimai pateikiami kaip failas, aprašantis apribojimų, taikomų skaitmeniniam moduliui, kai jis įtrauktas į sistemos lusto loginį modelį, rinkinį. Į šį rinkinį įeina apribojimai sinchronizavimo signalams (laikrodžio apribojimai), laiko apribojimai (laiko apribojimai), skaitmeninio modulio sąveikos su kitais moduliais apribojimai ir skaitmeninio modulio veikimo sąlygos. Pirmenybė teikiama projektavimo apribojimams (SDC) arba FPGA gamintojo CAD formatui.

Sinchronizavimo signalų apribojimų sąrašo pavyzdys:

  • laiko diagrama (Laikrodžio bangos forma);
  • laikrodžio dažnio nestabilumas (Džitter);
  • laikrodžio fazės keitimas;
  • perjungimo laikų trukmė (Transition times);
  • Išvestinių laikrodžio signalų laiko diagramos (Sugeneruotos laikrodžio bangos formos);
  • bet kokia kita papildoma informacija.

Sinchronizavimo signalų apribojimų rinkinys yra privalomas skaitmeninių modulių programinei įrangai ir programinei įrangai.

Laiko limitų sąrašo pavyzdys:

  • signalų atsiradimo prie įėjimų laikas (Arrival times at inputs);
  • signalų atsiradimo išėjimuose laikas (Reikalingas laikas išėjimuose);
  • kelių dviračių takai;
  • klaidingi takai (False paths);
  • duomenų signalo perėjimo laiko trukmė;
  • bet kokia kita papildoma informacija.

Išvada

Sukurtų skaitmeninių FPGA modulių pridedamos dokumentacijos sudėtis pateikiama vartotojo ir kūrėjo susitarimu. Dažniausiai kūrėjas pateikia tik skaitmeninį modulį, aprašytą VHDL, Verilog, System Verilog ir (arba) sukurtą scheminiame rengyklėje. Dėl papildomos dokumentacijos kūrėjo atsakymas dažniausiai būna toks: „Skaitmeninis modulis veikia, tad imk ir naudokis. Nėra nieko sudėtingo apibūdinti grandinę aparatūros kalba: jūs patys tai išsiaiškinsite.

Autoriaus nuomone, jūs galite suprasti bet ką, viskas priklauso nuo noro ir sugaišto laiko, o laikas, praleistas suprasti „svetimą“ projektą jau sukurtame skaitmeniniame modulyje, yra tiesiogiai proporcingas įrangos aprašymo VHDL patirtimi, Verilog ir žinių skaitmeninės ir mikroprocesorinės grandinės. To galima išvengti, jei iš pradžių susitarsite su kūrėju dėl pridedamos dokumentacijos sudėties, tada skaitmeninio modulio naudojimas jūsų projekte taps lengvesnis, o jo įgyvendinimas bus greitesnis.

Apibendrindamas autorius norėtų pažymėti, kad formuluojant skaitmeninio įrenginio kūrimo užduotį FPGA, reikia laikytis straipsnyje pateiktų rekomendacijų, tada nebus problemų pakartotinai naudojant ar atnaujinant anksčiau sukurtą skaitmeninį įrenginį. prietaisas.

Literatūra

  1. Denisovas A. Keletas patarimų, kaip kurti skaitmeninius VHDL įrenginius, skirtus FPGA // Komponentai ir technologijos. 2009. Nr.12.
  2. GOST 2.102-68 ESKD. Projektavimo dokumentų rūšys ir išsamumas.
  3. GOST 2.114-95 ESKD. Specifikacijos.
  4. GOST 15.101-98. Produktų kūrimo ir gamybos sistema. Mokslinio tiriamojo darbo atlikimo tvarka.
  5. GOST R 15.201-20-00. Produktų kūrimo ir gamybos sistema. Gaminiai pramoniniams ir techniniams tikslams. Produktų kūrimo ir gamybos tvarka.
pasakyk draugams