Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Krijimi i qarqeve logjike në fpga altera. Plis - hapat e mi të parë

Krijimi i qarqeve logjike në fpga altera. Plis - hapat e mi të parë

6. QARQET E INTEGRUARA TË LOGJIKËS SË PROGRAMUESHME (FPGA)

Qarku i integruar logjik i programueshëm (FPGA, Pajisja Logjike e Programueshme, PLD) - komponent elektronik,

përdoret për të krijuar qarqe të integruara dixhitale. Ndryshe nga mikroqarqet konvencionale dixhitale, logjika e funksionimit të FPGA nuk përcaktohet gjatë prodhimit, por specifikohet përmes programimit (projektimit).

Historia e zhvillimit të FPGA fillon me pajisje të programueshme memorie vetëm për lexim (PROM - Programmable Read Only Memory). Në fillim, PROM-të u përdorën ekskluzivisht për ruajtjen e të dhënave, më vonë ato filluan të përdoren për të zbatuar funksione logjike. Për të zbatuar sisteme Funksionet Boolean Me një numër i madh variabla, vargje logjike të programueshme PLA (PLA - Programmable Logic Array) u zhvilluan - më së shumti tip tradicional FPGA që ka matrica të programueshme "AND" dhe "OR". Shembuj të FPGA-ve të tilla janë qarqet shtëpiake K556PT1, PT2, PT21.

Ndërtimi i PLA bazohet në faktin se çdo funksion kombinues mund të përfaqësohet si një shumë logjike (operacion OSE) i produkteve logjike (operacionet DHE). Qarku që zbaton funksionin e kombinimit është paraqitur në Fig. 6.1.

Oriz. 6.1. Diagrami i ndërtimit të PLA

Disavantazhi i kësaj arkitekture është përdorimi i dobët i burimeve të matricës së programueshme "OR", prandaj zhvillimin e mëtejshëm mikroqarqe të marra të ndërtuara sipas arkitekturës së logjikës së matricës së programueshme (PAL - Programmable Array Logic) - këto janë FPGA që kanë një matricë të programueshme "AND" dhe një matricë fikse "OR" (Fig. 6.2). Shumica e FPGA-ve moderne me një shkallë të vogël integrimi i përkasin kësaj klase. Shembujt përfshijnë IC vendas KM1556ХП4, ХП6, ХП8, ХЛ8, zhvillimet e hershme (nga mesi deri në fund të viteve 1980) FPGA kompanitë INTEL, ALTERA, AMD, GRELTA, etj.

Oriz. 6.2. Diagrami i ndërtimit PAL

Përmirësimet në FPGA kanë çuar në shfaqjen e makroologjisë së programueshme. Ato përmbajnë një matricë të vetme të programueshme "AND-NOT" ose "OR-NOT", por për shkak të reagimeve të shumta të anasjellta ato janë në gjendje të formojnë komplekse funksionet logjike. Kjo klasë përfshin, për shembull, FPGA-të PLHS501 dhe PLHS502 nga SIGNETICS, të cilat kanë një matricë "AND-NOT", si dhe qarkun XL78C800 nga EXEL, bazuar në një matricë "OR-NOT".

Arkitekturat e mësipërme FPGA përmbajnë një numër të vogël qelizash. Deri më sot, ato janë vjetëruar dhe përdoren për të zbatuar pajisje relativisht të thjeshta për të cilat nuk ka qarqe të integruara të gatshme me një shkallë të mesme integrimi. Ato nuk janë të përshtatshme për zbatimin e algoritmeve të përpunimit të sinjalit dixhital.

Përmirësimet e mëtejshme në teknologjinë e prodhimit kanë bërë të mundur zbatimin e shumëfishtë PAL në një çip të vetëm, të lidhur me lidhje të programueshme. Arkitektura të tilla quhen logjikë komplekse (komplekse) e programueshme

LOGJIKË E PROGRAMBUESHME

QARQE TË INTEGRUARA

pajisjet (CPLD - Kompleksi i Programueshëm Logic Device) - kjo është një FPGA,

Oriz. 6.3. Diagrami i makrocelës CPLD

Mikroqarqet e këtij lloji mund të përdoren për të krijuar ALU jo standarde, dekodera, multipleksorë etj., d.m.th. pajisje të tilla ku kërkohen funksione logjike të shumë variablave dhe një numër i vogël flip-flops. FPGA-të e tipit CPLD zakonisht kanë një shkallë të lartë integrimi (deri në 10,000 porta ekuivalente, deri në 256 makrocelula).

Kjo klasë përfshin FPGA të familjes MAX nga ALTERA, familjet XC9500 dhe CoolRunner nga XILINX, si dhe një numër të madh çipash nga prodhues të tjerë (Atmel, Vantis, Lucent, etj.).

Një lloj tjetër i arkitekturës FPGA janë vargjet e portave të programueshme në terren (FPGA - Field Programmable Gate Array Logic), të përbërë nga blloqe logjike të konfigurueshme (CLB) dhe shtigje komutuese - matrica lidhjesh të programueshme (Fig. 6.4). Blloqet logjike të konfigurueshme të FPGA-ve të tilla përbëhen nga një ose më shumë relativisht të thjeshta elementet logjike, të cilat bazohen në një tabelë kërkimi (LUT), multiplekserë të programueshëm, një këmbëz dhe qarqe kontrolli. Karakteristikë e arkitekturave FPGA janë blloqet hyrëse/dalëse (IOB - blloqet hyrëse/dalëse),

duke lejuar zbatimin e hyrjes/daljes me dy drejtime, gjendjen e tretë, etj.

Oriz. 6.4. Struktura FPGA

Mund të ketë mjaft elementë të tillë të thjeshtë, për shembull, në FPGA-të moderne me një kapacitet prej 1 milion portash ose më shumë, numri i elementeve logjikë arrin në disa dhjetëra mijëra. Për shkak të një numri kaq të madh elementësh logjikë, ato përmbajnë një numër të konsiderueshëm të flip-flops, dhe disa familje të FPGA-ve kanë të integruar module memorie të rikonfigurueshme. Kjo i bën FPGA-të e kësaj arkitekture një mjet shumë të përshtatshëm për zbatimin e algoritmeve të përpunimit të sinjalit dixhital, operacionet kryesore të të cilave janë shumëzimi, shumëzimi me një konstante, përmbledhja dhe vonesa e sinjalit.

Klasa FPGA përfshin FPGA të familjeve Spartan dhe Virtex

XILINX; Fusion, M1 dhe M7 Fusion dhe të tjerë nga ACTEL, si dhe familjet Cyclone, Stratix nga ALTERA, FPGA nga Atmel dhe Vantis.

6.1. Karakteristikat e programimit FPGA

Të dhënat e konfigurimit për CPLD ruhen në memorie jo të paqëndrueshme brenda FPGA, kështu që nuk ka nevojë të

PAJISJET DIGJITALE DHE MIKROPRECESORË. PJESA 2

LOGJIKË E PROGRAMBUESHME

QARQE TË INTEGRUARA

riprogramoni kur ndizet. Programi i konfigurimit FPGA ruhet në RAM-in e shpërndarë të paqëndrueshëm të çipit, i cili fshihet kur fiket energjia, kështu që skedari i konfigurimit ruhet në memorien e jashtme dhe kur ndizet energjia, skedari i konfigurimit ngarkohet në Memorie FPGA. Një ROM i riprogramueshëm zakonisht përdoret për të ruajtur skedarin e konfigurimit.

(EPRM, EEPROM ose FLASH).

Kur punoni në sisteme të tilla, konfigurimi i qarkut që duhet të merret "brenda" FPGA ose algoritmi për funksionimin e tij specifikohet ose në një gjuhë përshkrimi të tekstit: VDHL (V qarqe të integruara me shpejtësi të lartëH ardwareD përshkrimGjuha - gjuha e përshkrimit të harduerit për qarqet e integruara me shpejtësi të lartë), Verilog, ADHL (A lteraH ardwareD descriptionL angage), që të kujton një gjuhë programimi të nivelit të lartë (për shembull C); ose në një redaktues grafik (në formën e një diagrami elektrik); ose duke përdorur grafikët e rrjedhës së algoritmit ose grafikët e gjendjes. Më tej, të gjitha fazat e punës, duke përfshirë programimin ose ngarkimin e FPGA, kryhen nga një sistem i automatizuar projektimi. Sisteme të tilla prodhohen nga të gjithë prodhuesit kryesorë të FPGA

(www.actel.com) ACTEL, (www.altera.com) ALTERA, (www.xilinx.com) XILINX, dhe kompani të tjera.

7. DIGJITAL-ANALOG DHE

7.1 Parimet e ndërtimit konvertuesit dixhital në analog

Një konvertues dixhital në analog (DAC) është një pajisje për konvertimin e kodeve numerike në vlerat e tyre ekuivalente të tensionit ose rrymës. Qarqet DAC ndërtohen duke përdorur elementë dixhitalë dhe analogë (përforcues operacional, ndërprerës, matrica rezistente, etj.). Shumica e DAC-ve të bëra në formën e qarqeve të integruara janë pajisje të tipit paralel. Puna e tyre bazohet në përmbledhjen e rrymave, madhësitë e të cilave janë proporcionale me koeficientët e peshimit të biteve të kodit të hyrjes.

Qarku i një DAC 4-bitësh është paraqitur në Fig. 7.1.

Oriz. 7.1. Parimi i ndërtimit të një qarku DAC

Ai përfshin një matricë rezistente, një tension referencë U R, një përforcues operacional dhe ndërprerës S 0 − S 3.

Rezistencat e rezistorëve të matricës janë të tilla që rrymat që rrjedhin nëpër rezistorë korrespondojnë me koeficientët e peshimit të shifrave të numrit

D = d 3 d 2 d 1 d 0 . Pozicioni i kontakteve të çelësit varet nga vlerat e d i. Nëse d i = 0, atëherë rryma që rrjedh nëpër rezistencën e matricës nën veprimin e tensionit të referencës U R shkurtohet në telin e përbashkët.

Kur d i = 1, rryma e rezistencës rrjedh nëpër S i. rrjedh në qarkun e përmbledhjes

rryma, të kryera në një përforcues operacional me reagime të tensionit paralel. Nyja përmbledhëse ka praktikisht zero

PAJISJET DIGJITALE DHE MIKROPRECESORË. PJESA 2

DIGJITAL-ANALOG DHE

KONVERTERËT ANALOG-DIGJITAL

potencial në lidhje me telin e përbashkët, pra tensioni i daljes mund të shkruhet si më poshtë:

U 0= − R R 0 U R (2 3 d 3+ 2 2 d 2+ 2 1 d 1+ 2 0 d 0) .

Për të rritur kapacitetin bit të DAC, është e nevojshme të shtoni numrin e duhur të rezistorëve dhe çelsave.

Prodhimi i rezistencave me precizion të lartë për matricat është i mbushur me vështirësi, veçanërisht në rastin e DAC-ve me shumë bit (vlerat e rezistorëve janë në intervalin gamë të gjerë- nga R në

R 2 n − 1 , por kërkesat për saktësinë absolute të përcaktimit

rezistencat janë të njëjta për të gjithë rezistorët). Prandaj, shpesh përdoret një matricë rezistence e tipit R − 2R (Fig. 7.2).

Oriz. 7.2. DAC me matricë të tipit R – 2R

Koeficientët e peshimit të fazave përcaktohen nga ndarja vijuese e tensionit të referencës. Koeficienti i zbutjes së çdo faze të matricës është i barabartë me dy. Tensioni i daljes DAC është:

U 0=− 16 R 0 R U R (2 3 d 3+ 2 2 d 2+ 2 1 d 1+ 2 0 d 0) .

Transistorët MOS shpesh përdoren si ndërprerës elektronikë në qarqet DAC (Fig. 7.3). Përdoren gjithashtu ndërprerës të rrymës bazuar në transistorë bipolarë.

Oriz. 7.3. DAC 4-bit:

a – fragment i një qarku me ndërprerës MOS, b – UGO

Shembuj të IP:

K572PA1 - DAC 10-bit. IC përmban një matricë precize R − 2R, ndërprerës tranzistor MOS, amplifikues të hyrjes, inverterë dhe një rezistencë për qarkun e reagimit op-amp. Për të kthyer rrymën totale në tension, duhet të lidhet një përforcues operacional. Kërkohet gjithashtu një referencë e tensionit të jashtëm.

PAJISJET DIGJITALE DHE MIKROPRECESORË. PJESA 2

DIGJITAL-ANALOG DHE

KONVERTERËT ANALOG-DIGJITAL

7.2. Parimet e ndërtimit konvertuesit analog në dixhital

Një konvertues analog në dixhital (ADC) është një pajisje për konvertimin e tensionit në kodin e tij numerik përkatës. Operacionet e kryera gjatë procesit konvertimi analog në dixhital, janë përshkruar në hyrje. Më poshtë marrim parasysh vetëm aspektet e qarkut të ndërtimit të një ADC.

Bazuar në metodën e konvertimit, ADC-të mund të ndahen në paralele

Dhe konsistente.

ADC-të paralele, tensioni i hyrjes krahasohet njëkohësisht me të gjitha nivelet e pragut të shkallës së kuantizimit (Fig. B.1.). Si rezultat i krahasimit, gjendet niveli më i afërt i kuantizimit, numri i të cilit shprehet në kod binar duke përdorur një kodues. Një diagram që përfaqëson ADC paralel 3-bit, i paraqitur në Fig. 7.4. Një burim i tensionit referencë dhe një grup rezistencash bëjnë të mundur gjenerimin e tensioneve të barabarta me nivelet e pragut.

Tensioni i referencës është (2n -1) = 7 herë vlera e hapit të kuantizimit U S. Nëse, për shembull, tensioni i hyrjes është in

variojnë nga (4+ 1 2 ) U S në (5+ 1 2 ) U S duhet të përfaqësohet

niveli i kuantizimit i barabartë me 5U S dhe, në përputhje me rrethanat, kodi binar 101. Kodi i daljes gjenerohet si më poshtë. Për një vlerë të dhënë të U I, rezultatet e gjashtë krahasuesve vendosen në

intervali i marrjes së mostrave, sinjalet dalëse të krahasuesve futen në një regjistër. Për të gjeneruar kodin e numrit të nivelit të kuantizimit, përdoret një kodues prioritar. Kodi i daljes së koduesit përcaktohet nga hyrja e aktivizuar me numrin më të madh (në konsideratë

shembull ky është X 5).

Oriz. 7.4. ADC paralele: a – qark, b – UGO

Shembull ËSHTË:

K1107PV1 - ADC paralel 6-bit. IC është prodhuar duke përdorur teknologjinë bipolare. Frekuenca maksimale e marrjes së mostrave është 20 MHz.

Në ADC-të serike, voltazhi i hyrjes balancohet në mënyrë sekuenciale nga një grup (shumë) standardesh, vlerat e të cilave janë shumëfisha të hapit të kuantizimit. Një lloj i konvertuesve të tillë është ADC

PAJISJET DIGJITALE DHE MIKROPRECESORË. PJESA 2

DIGJITAL-ANALOG DHE

KONVERTERËT ANALOG-DIGJITAL

numërimi sekuencial. Funksionimi i tij bazohet në numërimin e numrit të përmbledhjeve të hapit të kuantizimit të kërkuar për të marrë vlerën e tensionit të hyrjes. Qarku ADC i numërimit serik është paraqitur në Fig. 7.5. Ai përbëhet nga një numërues n-bit lart/poshtë, një krahasues dhe një n-bit konvertues dixhital në analog të përfshira në qarkun e reagimit.

Oriz. 7.5. ADC numërimi serik

Duke përdorur një krahasues, krahasohen tensioni i hyrjes U I dhe tensioni i daljes së DAC O. Nëse U I > U O, atëherë dalja e krahasuesit është niveli i unitetit dhe numëruesi funksionon në modalitetin e mbledhjes së pulsit të orës C. Për shkak të kësaj, tensioni U O tenton në U I. Kur ato krahasohen, kodi i daljes n-bit D do të përfaqësojë tensionin e hyrjes ADC. Nëse U I< U O то счетчик работает в вычитающем режиме. Таким образом, напряжениеU O , а следовательно, и выходной код, отслеживают выходное напряжениеU I Для того, чтобы

Për të parandaluar lëkundjen e sinjalit të kthimit U/D pas përfundimit të procesit të gjurmimit, është e mundur të plotësoni qarkun ADC me një pajisje

bllokimi i kundërvënieve në U I − U O< U S 2 .

Diagrami i qarkut të ADC i paraqitur në Fig. 7.5, shumë e thjeshtë. Por me rritjet e tensionit të hyrjes, procesi i gjurmimit mund të zgjasë deri në 2n cikle të orës (periudhat e pulsit C). Përshpejtimi i konvertimit arrihet në një ADC të ponderuar me bit. Diagrami i tij është i ngjashëm me diagramin në Fig. 7.5, vetëm numëruesi zëvendësohet nga një regjistër me një pajisje kontrolli. Funksionimi i ADC-së së peshimit në bit ndodh si më poshtë. Së pari, të gjitha bitet e regjistrit vendosen në zero. Pastaj 1 futet në bitin më domethënës të regjistrit Në të njëjtën kohë, në daljen e DAC

është vendosur tensioni U O = 2n − 1 U S, i barabartë me gjysmën e totalit2 n − 2),

atëherë d n − 2 = 1

Nese jo,

d n − 2 = 0 .

Pas n

fazat, procesi i balancimit përfundon dhe një kombinim kodi që përfaqëson tensionin e hyrjes ADC vendoset në daljen e regjistrit. Në mënyrë që të sigurohet që gjatë shndërrimit tensioni

U I nuk ka ndryshuar një qark kampionimi i ruajtjes është instaluar në hyrjet e krahasuesit.

ADC-të e tjera serike janë gjithashtu të njohura, për shembull, ADC-të që funksionojnë duke përdorur metodën e integrimit.

Shembuj të IP:

K572PV1 - ADC 12-bit me peshim bit pas bit. IC është prodhuar duke përdorur teknologjinë CMOS. Përdoret me të jashtme amplifikatorë operacionalë dhe një burim tensioni referues. Koha tipike e konvertimit është 110 µsec.

K1113PV1 - ADC 10-bit për peshimin bit pas bit. IC është prodhuar duke përdorur teknologji bipolare dhe përmban të gjithë komponentët funksionalë të ADC, duke përfshirë një burim të tensionit referencë dhe një gjenerator të orës. Fazat e daljes janë projektuar sipas një qarku me tre gjendje. Koha e konvertimit - jo më shumë se 30 μsec.

Duke krahasuar ADC-të paralele dhe serike, mund të vërehen sa vijon. ADC-të paralele janë qarqe me shpejtësi të lartë, por zbatimi i tyre kërkon kosto të mëdha harduerike (një ADC 6-bit përmban 64 krahasues). ADC-të e numërimit serik kanë qarkun më të thjeshtë, por punojnë relativisht me tensione me frekuencë të ulët. ADC-të e peshuara me bit zënë një pozicion të ndërmjetëm për sa i përket kompleksitetit dhe performancës. Kombinimi i qarqeve ADC paralele dhe serike ju lejon të krijoni një numër të madh opsionesh konvertuesish me parametra të ndryshëm dhe një shumëllojshmëri funksionesh.

PAJISJET DIGJITALE DHE MIKROPRECESORË. PJESA 2

LITERATURA

LITERATURA

1. Xhami K.F., Pokoptseva M.N. Pajisjet dixhitale dhe mikroprocesorët. Libër mësuesi për studentët e specialitetit 210312 “Teknologjia audiovizive”. Pjesa 1. – Shën Petersburg: SPbGUKiT, 2008.

2. Novikov Yu.V. Bazat e qarkut dixhital. Elementet bazë dhe diagramet. Metodat e projektimit. - M.: Mir, 2001.

3. Novikov Yu., Skorobogatov P. Bazat e teknologjisë së mikroprocesorit: Një kurs leksionesh. - M.: INTUIT.RU, 2003.

4. Belov A. Manual vetë-udhëzues për teknologjinë e mikroprocesorit. - M.: Shkenca dhe Teknologjia, 2003.

5. Novozhilov O.P. Bazat e teknologjisë dixhitale: Libër mësuesi. – M.: Radio Soft, 2004.

6. Ugryumov E. Qarku dixhital nga elementi logjik në LSI/VLSI të avancuara me struktura të programueshme. – Shën Petersburg: BHV – Petersburg, 2004.

7. Boyko V. Projektimi i qarkut të sistemeve elektronike. Pajisjet dixhitale.

– Shën Petersburg: BHV – Petersburg, 2004.

8. Boyko V. Projektimi i qarkut të sistemeve elektronike. Mikroprocesorët dhe mikrokontrolluesit. – BHV – Shën Petersburg, 2004.

9. Naryshkin A.K. Pajisjet dixhitale dhe mikroprocesorët. – M.: Shtëpia botuese. Qendra "Akademia", 2004.

10. Wilkinson B. Bazat e projektimit të qarkut dixhital. - Kiev: Williams, 2004.

11. Fricke K. Kursi hyrës i elektronikës dixhitale. - M.: Tekhnosferë, 2004.

12. Opadchiy Yu.A. Elektronikë analoge dhe dixhitale. Libër mësuesi për universitetet. - M.: Linja telefonike- Telekom, 2005.

13. Tocci R. Widmer N. Sistemet dixhitale. Teoria dhe praktika. - Kiev: Williams, 2004.

14. Alekseeva L.A., Bul M.P., Glassman K.F., Pokoptseva M.N.. Udhëzime për kryerjen e punës laboratorike për studentët e specialitetit 201400 “Teknologji audiovizive” në lëndën “Pajisjet dixhitale dhe mikroprocesorët”. – Shën Petersburg: SPbGUKiT, 2002.

U detyrova ta shkruaj këtë artikull nga shokët e mi që i kuptojnë shumë mirë kontrollorët (shumë më mirë se unë) dhe i përdorin kudo që shkojnë. Sidoqoftë, ka një numër të madh aplikacionesh ku përdorimi i FPGA-ve jo vetëm që justifikohet, por gjithashtu çon në thjeshtimin e konsiderueshëm të sistemit dhe përmirësimin e parametrave të tij. Do të bëj një rezervim menjëherë: në këtë dhe ndoshta artikuj pasues, unë i konsideroj FPGA-të vetëm nga Xilinx, jo sepse më paguanin, madje as sepse janë më të mirët, thjesht historikisht punoj pothuajse ekskluzivisht me ta.

Pra, le të fillojmë me një teori të vogël. FPGA ndahen në dy grupe kryesore: CPLD (Complex Programmed Logic Device) dhe FPGA (Field Programmed Gate Array). CPLD- kjo është zakonisht një FPGA e klasës "ekonomike", d.m.th. kanë çmim të ulët dhe një sasi mjaft e pakët burimesh, kjo është veçanërisht e dukshme për shkaktarët. FPGA zakonisht më të shtrenjta, përmbajnë më shumë burime (logjikë të thjeshtë - nxitës...) dhe, më e rëndësishmja, së fundmi blloqe shtesë "komplekse", si shumëzuesit, memoria e bllokut, hardueri i ndërfaqes (Ethernet, PCI-express...) dhe madje edhe PowerPC bërthamat e procesorit. Më vete, mund të përmendim serinë Zinq nga Xilinx - ata përgjithësisht mbushën bërthamat ARM atje. Dallimi kryesor midis FPGA dhe CPLD është nevoja për të ngarkuar konfigurimin kur ndizet energjia dhe, në përputhje me rrethanat, një ROM e jashtme me konfigurimin. Edhe familja SPARTAN-3AN ka një ROM të integruar në bord, nga i cili niset.

Tani gjëja më e rëndësishme: si ndryshon një FPGA nga një kontrollues dhe kur t'i përdorni ato. Gjithçka është shumë e thjeshtë këtu: FPGA (ne marrim ato pa zile dhe bilbila) është, në fakt, një qese logjike në një çip, i cili mund të lidhet në mënyrë arbitrare: të njëjtët shkas, AND, OSE dhe primitivë të ngjashëm, si p.sh. , në serinë K155 ose 74NS. Një kontrollues është një procesor i gatshëm (megjithëse me një numër të vogël komandash), memorie të integruar, autobusë të të dhënave dhe komandave, pajisje periferike, etj. Në përgjithësi, ju mund të bëni një kontrollues të vogël nga një FPGA e madhe, por kjo ide është të paktën, budalla. Pra, kontrolluesi është krijuar për ekzekutimin e zinxhirëve të gjatë të komandave, të tyre përsëritje ciklike, kalimi nga një zinxhir në tjetrin, etj., dhe FPGA është krijuar për të kryer thjeshtë operacionet logjike dhe, më e rëndësishmja, një numër i madh menjëherë (dhe madje edhe në frekuenca të ndryshme të orës).

Le të kalojmë nga teoria në praktikë. Për të filluar, do të na duhet një lloj çipi CPLD. Ka pak burime, por mjaftojnë për zhvillim. Unë do të marr XC95288XL në kutinë TQ144 (përsëri, sapo ndodhi të ishte në magazinë), në përgjithësi ju rekomandoj të merrni diçka më të freskët, për shembull, nga seria CoolRunner 2. Për të marrë produkt i gatshëm(edhe nëse pulson minimalisht me një LED), duhet: të bashkojmë harduerin (këtu, shpresoj, nuk do të ketë probleme, por do të përmend nuancat), "të shkruajmë" firmuerin (në rastin tonë, më tepër , vizatoni) dhe ndezni firmuerin në mikroqark. Në përgjithësi, do të na duhet softuer që gjeneron firmware dhe një programues. Ne shkarkojmë softuerin (Xilinx ISE Webpack) nga faqja zyrtare e internetit (edhe pse ata do t'ju kërkojnë të regjistroheni), licenca e Webpack është falas. Programuesi mund të bëhet sipas diagramit në Fig. 1 (për një port LPT) ose mund të blini një USB të fabrikës (e gjeta në dyqanet online kineze për rreth 50 dollarë, por nuk e bleva vetë). Më shumë.

Oriz. 1

Pasi e lidhëm FPGA-në dërrasë buke, bashkova ose bleva një programues, shkarkoi dhe instaloi paketën ISE Webpack (kam versionin 13.2), lësho Project Navigator dhe krijo një projekt të ri. Për të krijuar një projekt, zgjidhni Skedar -> Projekt i ri, specifikoni emrin e projektit dhe ku do ta ruani atë, si dhe specifikoni llojin e burimit TOP-LEVEL (Fig. 2). Fakti është se për një FPGA nuk është e nevojshme të vizatoni një diagram të flip-flops dhe lidhjet e tyre, për shembull, mund të shkruani në gjuhë të nivelit të lartë (VHDL, Verilog) dhe nuk është aspak e nevojshme; përdorni një gjë brenda të njëjtit projekt. Për momentin, ne përdorim vetëm Skematikën në të gjitha nivelet.


Oriz. 2
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Në dritaren tjetër (Fig. 3) ne zgjedhim mikroqarkun tonë (në fillim nuk e prekim pjesën tjetër); Në dritaren që shfaqet pasi klikojmë butonin "Next", ne admirojmë parametrat e projektit të krijuar, klikojmë "Finish" - dhe kjo është ajo: projekti është krijuar.


Oriz. 3

Tani duhet, në fakt, të vizatojmë një diagram: klikoni me të djathtën në dritaren me projektin dhe burimin e ri (Fig. 4), t'i jepni këtij burimi një emër (ky është emri i skemës sonë, mund të ketë shumë prej tyre në projekt), zgjidhni Skematikën përsëri, klikoni "Next" ", ne i admirojmë përsëri parametrat skedari i krijuar, klikoni "Finish" dhe merrni një diagram të pastër.


Oriz. 4
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Argëtimi fillon: në panelin në të majtë (jo në skaj) klikoni butonin "shto simbolin" (Fig. 5).


Oriz. 5
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Dhe ne kemi një listë të simboleve të bibliotekës aktuale edhe më tej në të majtë. Ne do të kuptojmë se si të shtojmë, krijojmë dhe modifikojmë bibliotekat më vonë (sipas nevojës). Tani është e rëndësishme për ne që të zgjedhim simbolin e kërkuar. Pra, në dritaren e sipërme ne shohim një klasifikues të caktuar - një filtër, i cili nuk është i nevojshëm për t'u përdorur (epo, pse të lëvizni nëpër të gjitha llojet e shkaktuesve dhe elementëve logjikë kur kemi nevojë për një numërues).

Për shembull, merrni parasysh detyrën e mëposhtme: duhet të përcaktoni sa më saktë që të jetë e mundur kohën e vonesës midis skajeve kryesore të 2 pulseve që shfaqen në tela të ndryshëm dhe bashkoni këtë vlerë në kontrollues përmes ndërfaqes SPI. Çdo ngjashmëri ndërmjet detyrës dhe temës “Promovimi frekuenca e funksionimit MK" në një nga forumet e robotikës është i qëllimshëm. Pra, në hyrje të pajisjes ka 2 tela për pulset dhe 3 tela për kontrolluesin SPI. Shtojmë një hyrje tjetër të orës (nuk e dimë ende në çfarë frekuence, ne mund të supozojmë se është të paktën 70 MHz Le të fillojmë të vizatojmë firmuerin: ne kemi nevojë për shkas të mbyllur që do të "kapin" pulset, një numërues kohore, një regjistër ndërrimi (nuk ka nevojë t'i krijojmë ato, ato janë bibliotekë). Unë nuk do të përshkruaj se çfarë janë shkaktarët dhe numëruesit, shpresoj që lexuesit të jenë "në dijeni" dhe nuk do të ketë probleme, përndryshe do të duhet të shkruani disa artikuj të tjerë (Fig. 6). , siç mund ta shihni, nuk është e nevojshme të vizatoni një tel nga dalja e simbolit në hyrje, mjafton thjesht të etiketoni qarkun për të përcaktuar hyrjet dhe daljet e jashtme, ne përdorim butonin ". Shto I/. O Shënues”.


Oriz. 6
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Kur diagrami është gati, shkoni te skeda Dizajn dhe klikoni dy herë në Implement Design - fillojnë të gjitha llojet e proceseve (për të filluar, nuk ka rëndësi se cilat - gjëja kryesore është që gjithçka së bashku është procesi i distilimit kodin burim në firmware). Kur gjithçka funksionon, ne i shikojmë gabimet me paralajmërime: ne rregullojmë gjithçka që është e rëndësishme dhe lëmë pjesën tjetër. Për shembull, ne nuk kemi nevojë për daljet e CEO dhe TS të numëruesit dhe 15 bitët e mbetur të daljes paralele të regjistrit të ndërrimit nuk janë gjithashtu të nevojshme, por ata betohen me paralajmërime. Nëse ai betohet me gabime në atë që duam, kjo do të thotë se ne duam diçka të gabuar. Nëse ne (dhe sintetizuesi) jemi të kënaqur me gjithçka, ne vazhdojmë të admirojmë raportet: sa burime janë përdorur, cilat frekuenca të orës janë në dispozicion... Nëse gjithçka është përsëri në rregull, atëherë është koha të simuloni qarkun dhe të siguroheni që në fakt funksionon sipas detyrës. Unë sugjeroj të kryeni simulimin pasi të keni kontrolluar oraret, sepse ndonjëherë për të marrë frekuencën e kërkuar të orës duhet të shkundni të gjithë qarkun, gjë që, natyrisht, mund të ndikojë në rezultatin ...

Pra, simulimi: në skedën Design (në panelin e majtë) zgjidhni simulimin (Fig. 7).


Oriz. 7
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Më poshtë, në proceset, në vend të proceseve të sintezës dhe instalimeve elektrike, është shfaqur procesi Simulimi i Modelit të Sjelljes, klikoni dy herë mbi të - lansohet simulatori, në të cilin ne shohim sinjalet tona (jo vetëm hyrje-dalje, por edhe të ndërmjetme) (Fig. 8).


Oriz. 8
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Ne e vendosim kursorin e miut mbi butona dhe lexojmë komentet mbi butonat. Ne vendosim kohën e hapit të simulimit (Fig. 9) dhe vlerat fillestare të sinjaleve hyrëse dhe vendosim menjëherë sinjalet e orës (ne nuk do të simulojmë dhe ndërrojmë orën çdo 5 ns).


Oriz. 9
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Duke ecur në kohë duke manipuluar hyrjet dhe (nëse është e nevojshme) hapin e simulimit, marrim një diagram kohor (Fig. 10).


Oriz. 10
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Sigurohemi që gjithçka të funksionojë siç është menduar (ose korrigjojmë më tej qarkun) dhe kalojmë në hapin tjetër - duke shpërndarë daljet dhe hyrjet nëpër kunjat e mikroqarkullimit. Për ta bërë këtë, shtoni një skedar tjetër burimor (Fig. 11), përkatësisht Skedari i Kufizimeve të Implementimit.


Oriz. njëmbëdhjetë
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Ne shkruajmë "pinout e microcircuit" (Fig. 12), dhe këtu shkruajmë gjithashtu kërkesat për frekuencat e orës. Dhe tani kemi ardhur te nuanca e lidhur me sinjalet e orës. Fakti është se sinjalet e orës duhet të mbërrijnë në të ashtuquajturat linja globale - linja që kalojnë nëpër të gjithë mikroqarkun, linjat e mbetura janë të natyrës lokale dhe kalojnë nëpër logjikën e kalimit nga blloku në bllok. Çipi XC95288XL në paketën TQ144 ka 3 linja të tilla, dhe ato janë të lidhura me këmbët 30, 32, 38. Sinjalet e mbetura mund të lidhen me çdo këmbë hyrëse/dalëse (I/O).


Oriz. 12
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Klikoni përsëri dy herë Implement Design, prisni, lexoni komentet për temën e paralajmërimeve me gabime dhe shkoni te raportet për pikat e rradhës (Fig. 13) dhe kohëzgjatjet (Fig. 14); Sigurohemi që gjithçka të na përshtatet dhe lumturinë e kemi në formën e skedarit %project_name%.jed.


Oriz. 13
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)


Oriz. 14
(foto e klikueshme për t'u zmadhuar, hapet në një dritare të re)

Skedari i firmuerit është gati. Le të themi edhe pajisja. Ne lidhim kabllon JTAG me kompjuterin dhe klikojmë dy herë në Konfiguro pajisjen e synuar. Programi i firmuerit (Impact.exe) do të fillojë në fakt, kur prodhoni disa pajisje për ndezjen e një serie, mund të kufizoni veten në lëshimin e vetëm një; Ne krijojmë një projekt të ri (ky është një projekt për programin e firmuerit), lejojmë që ai të gjejë automatikisht programuesin dhe çipin e lidhur, të shfaqë skedarin e firmuerit dhe klikoni Program. Ne presim disa dhjetëra sekonda, shohim një mbishkrim që thotë se gjithçka është në rregull - pajisja është gati.

PREZANTIMI

Zakonisht, kur dikush sheh një bord funksional, ata gjithmonë bëjnë të njëjtat pyetje: - A është ky një Arduino? - Si funksionon pa Arduino?

Nuk është një mikrokontrollues, nuk është as një procesor, është një FPGA. FPGA është një qark i integruar logjik i programueshëm, një mikroqark i tillë përbëhet nga shumë blloqe ose makroqeliza identike, secili prodhues i quan ato ndryshe, kështu që për Xilinx është Slices (feta) për Altera - LogicElements (elemente logjike). Këto blloqe janë relativisht të thjeshta, mund të veprojnë si disa elementë logjikë, të jenë një tabelë e vogël kërkimi (LUT), të përmbajnë një grumbullues të gatshëm, shumëzues, bllok të përpunimit të sinjalit dixhital (DSP), në përgjithësi, gjithçka që prodhuesi ka në mendje. . Përdoruesi mund t'i rregullojë dhe konfigurojë këto blloqe sipas dëshirës, ​​duke zbatuar kështu qarqe dixhitale mjaft komplekse. Ju mund të implementoni edhe një mikrokontrollues në një FPGA, për shembull duke implementuar të njëjtin Arduino ose një procesor të arkitekturës suaj, për shembull, jo një procesor regjistri, por një procesor stack, madje mund të implementoni FPGA-në tuaj në një FPGA!

Midis FPGA-ve me buxhet të disponueshëm, mund të identifikohen dy prodhues kryesorë: Altera dhe Xilinx me produktet e tyre mund të filloni udhëtimin tuaj për të zotëruar këto teknologji; Sipas mendimit tim, është më mirë të zgjidhni çipat Altera, pasi mjedisi i tyre i dizajnit azhurnohet vazhdimisht, dhe nëse zgjidhni një çip të njohur Xilinx XC3S500E, do të duhet të jeni të kënaqur me mjedisin e vjetëruar ISE 14.7 (megjithëse ai gjithashtu ka avantazhet e tij) .

Në literaturën e huaj mund të gjeni shkurtesa për FPGA: FPGA dhe CPLD. CPLD (Complex Programmable Logic Device) - çipa me një numër i vogël makroqeliza, blloqe të specializuara dhe konsum i ulët i energjisë. Një projekt i madh nuk mund të sintetizohet për këtë lloj çipi, por ato përdoren gjithashtu në praktikë, për shembull, një mikrokontrollues i rrallë ka, të themi, 300 këmbë. Çipa të tillë shpesh përdoren si sisteme ndërfaqesh, paraprocesorë dhe zgjerues I/O. FPGA (Field-Programmable Gate Array) është një grup portash i programueshëm në terren (FPGA), çipa shumë më të fuqishëm në krahasim me CPLD, por konsumon më shumë energji dhe kushton dukshëm më shumë. Për të ulur koston e zonës së diapazonit, çipat FPGA mund të përmbajnë funksione të gatshme, të tilla si njësitë e përpunimit të sinjalit dixhital (njësi DSP), procesorë të integruar dhe memorie të integruar. FPGA-të përdoren gjerësisht për testimin dhe verifikimin e modeleve, në të ashtuquajturin vlefshmëri para silikonit, duke ulur kështu kostot dhe kohën përpara lëshimit të produktit. Çipat FPGA mund të rikonfigurohen pothuajse në çdo kohë, zhvillimet janë duke u zhvilluar, për shembull në Intel, për të kombinuar arkitekturat e një procesori konvencional dhe një çipi FPGA. Xilinx tashmë ka zgjidhje të tilla - Zynq, por ne nuk do të flasim për to tani për tani.

Biseda do të jetë për më shumë gjera te thjeshta, veçanërisht pasi mora në dorë një komplet zhvillimi: Cyclone IV 4 FPGA Core Board dhe Altera USB Blaster Downloader PLD Development komplet për 35 dollarë, të blerë në AliExpress.

1 Demo bordi Cyclone IV 4 FPGA Core Board, përshkrim i shkurtër

Oriz. 1 - Pagesë Demo Bordi kryesor i Ciklonit IV 4 FPGA

Pllaka (Fig. 1) ka të instaluar një çip EP4CE6E22C8N, karakteristikat e tij:

Lloji i burimit Përshkrim i shkurtër sasi
Elementet logjike (Les) Numri i blloqeve logjike - qelizat, karakteristika kryesore me të cilën mund të krahasojmë "fuqinë" e çipave do të përdorë këto blloqe 6,272
Memorie e integruar (Kbit) Kujtesa e integruar nuk është ende një karakteristikë e rëndësishme për ne 270
Shumëzues të ngulitur 18x18 Shumëzues harduerësh të integruar, një parametër shumë i rëndësishëm në përpunimin e sinjalit dixhital, fuqia e plotë e FPGA-ve zbulohet kur disa shumëzues funksionojnë paralelisht 15
PLL për qëllime të përgjithshme Nyjet e lakut të mbyllura në fazë, jo ende një karakteristikë e rëndësishme, thjeshtojnë sinkronizimin e pajisjeve që veprojnë në frekuenca të ndryshme 2
Rrjetet globale të orës Numri i domeneve të frekuencës nuk është ende një karakteristikë e rëndësishme 10
Bankat hyrëse/dalëse të përdoruesit Numri i bankave hyrëse/dalëse të përdoruesve të veçantë nuk është ende një karakteristikë e rëndësishme 8
I/O maksimumi i përdoruesit Numri i kunjave të personalizuara I/O, ne mund të lidhim çdo pajisje, si Arduino 91

Bordi ka:

  1. Memoria Flash – Kur të aplikohet energjia, FPGA do të konfigurohet për t'u implementuar në memorie flash. Ju mund të sintetizoni projektin tuaj dhe të shkruani në këtë flash
  2. Kuarci 25 MHz është një gjenerues i frekuencës së orës referuese, është në këtë frekuencë që do të funksionojnë të gjitha projektet tona, FPGA-ja jonë mund të mbështesë deri në 10 kanale të tilla.
  3. LED - 10, butona - 2.
  4. Kunjat hyrëse/dalëse 61 + 2 tokëzim, 1 jo i lidhur. Mund të lidhni pajisje të ndryshme. DAC-ADC, akselerometra dhe xhiroskopë, simbolikë dhe shfaqje grafike, ashtu si Arduino.
  5. Furnizimi me energji përmes USB, ose 5V të jashtëm.

Kompleti përfshin gjithashtu një programues JTAG, Altera USB Blaster.

2. Mjedisi Quartus II dhe projekti ynë i parë

Për të punuar me këtë FPGA, ne duhet të shkarkojmë mjedisin zyrtar të zhvillimit - Quartus II Web Edition, është falas. Shkojmë në faqen zyrtare http://dl.altera.com/15.0/?edition=web, në momentin e shkrimit versioni 15.0 është më i riu, nëse është më i ri, shkarkojeni.

Zgjidhni:


Oriz. 2 - zgjidhni produktet e nevojshme Altera

Dhe klikoni butonin e shkarkimit (Shkarko skedarët e zgjedhur). Pas së cilës do të na kërkohet të regjistrohemi, regjistrohemi, shkarkojmë dhe instalojmë.

Le të krijojmë projektin tonë të parë.

Nisni Quartus, zgjidhni menunë kryesore File -> New Project Wizard, shfaqet dritarja e hyrjes, klikoni Next. Tjetra ju duhet të specifikoni drejtorinë për projektin dhe emrin e tij, fusha e tretë është emri i modulit të lartë, do të shihni më vonë se çfarë është. Ne zgjedhim dosjen ku duam të ruajmë projektin dhe nxjerrim një emër, kam test1.


Oriz. 3 - dritarja e magjistarit të projektit të ri

Klikoni tjetër, ne pyetemi nëse është një projekt bosh apo një model Projekti. Lëreni bosh, më pas. Pastaj na kërkohet të shtojmë skedarë ekzistues, nuk kemi asgjë, pasi sapo po fillojmë udhëtimin tonë, klikoni Next.

Më pas, ne duhet të zgjedhim çipin tonë, kjo mund të bëhet në çdo kohë. Ne zgjedhim si në figurë, Family – Cyclone IV E, pajisje specifike të zgjedhur në “Pajisjet e disponueshme” dhe zgjedhim çipin tonë EP4CE6E22C8N, është në fillim. Nëse keni një tjetër, gjeni tuajën, është e rëndësishme. Kliko tjetër.


Oriz. 4 -

Do të shfaqet një dritare - zgjedhja e veglave të projektimit, korrigjimi i gabimeve, kaloni këtë për momentin, klikoni tjetër dhe më pas përfundoni.


Oriz. 5 - Dritarja "Assinments-Deice"

Në dritare, zgjidhni artikullin "Konjat e papërdorura". Ky cilësim përcakton se çfarë ndodh me kunjat e palidhura. Kjo mund të jetë e rëndësishme në projektin tuaj, ju nuk ka gjasa të përdorni të gjitha kunjat, dhe ato të palidhura në fakt mund të jenë të lidhura me tokëzimin ose me energjinë (epo, ju kurrë nuk e dini se kush e lidhi bordin). Nëse aplikoni një në një kunj të tokëzuar, ajo do të digjet, kështu që ju duhet ta monitoroni me kujdes këtë.

Si parazgjedhje, kunjat e papërdorura "Si hyrje e trefishuar me tërheqje të dobët" (konjat e hyrjes janë në gjendjen e tretë me rezistencë të lartë, me një tërheqje të dobët të energjisë), mund t'i lini ose zgjidhni "Si hyrje e trefishtë “. Mund të lexoni për rezistencën tërheqëse në Wikipedia https://ru.wikipedia.org/wiki/Pull-up_resistor. NË teknologjia dixhitale mund të ketë tre gjendje, një logjike është tensioni i furnizimit ose një nivel i lartë, një zero logjike është kur kunja lidhet me tokën ose nivel i ulët dhe gjendje me rezistencë të lartë. Gjendje me rezistencë të lartë- kjo është kur kunja ka një rezistencë shumë të lartë dhe praktikisht nuk ndikon në telin me të cilin është lidhur, kjo gjendje është e nevojshme, për shembull, kur organizoni autobusët, kur shumë pajisje janë të lidhura me një tel dhe jo pajisje aktive mos ndërhyni në punë.


Oriz. 6 - Dritarja "Opsionet e pajisjes dhe pineve", kunjat e papërdorura

Ne i lidhim të gjitha në "Editorin e Detyrave"


Oriz. 7 - Telefononi "Redaktuesin e Detyrave" nga menyja ose paneli

Në dritaren që shfaqet, bëjeni siç bëra unë, ose, nëse është absolutisht e saktë, atëherë sipas diagramit të tabelës suaj.


Oriz. 8 - Redaktori i Assinement

Në kolonën "Për", shkruani emrin e hyrjes ose daljes. Në kolonën "Emri i detyrës", zgjidhni "Vendndodhja". Në kolonën "Vlera" është numri i pinit të mikroqarkullimit, sipas diagramit të tabelës (kam numrat e pinit të shkruar direkt në tabelë).

Ju gjithashtu duhet të specifikoni se çfarë të bëni me butonat, të cilët janë të lidhur me njërën këmbë në tokë dhe tjetrën me hyrjen e çipit. Kur shtypni në këmbë do të ketë një nivel të ulët, por pa shtypur, është e paqartë, këmba e çipit thjesht do të varet në ajër, gjë që është shumë e keqe. Duhet të lidhni hyrjen e çipit me energjinë ose me një rezistencë në tabelë ose në një mënyrë më elegante në "Editorin e detyrave". Në kolonën "Emri i detyrës", zgjidhni "Rezistencë e dobët tërheqjeje" për grupin e çelësit* (grupi tregohet me një yll).


Oriz. 9 - Redaktori i Detyrës

Tjetra, ju duhet të krijoni një përshkrim të modulit të nivelit të lartë, i cili do të punojë drejtpërdrejt me këmbët e çipit të gjitha modulet e tjera do të funksionojnë vetëm me të. Në menynë kryesore, klikoni "E re" dhe zgjidhni "Skedarët e projektimit-> Diagrami i bllokut/Skedari skematik".


Oriz. 10 - Dialogu i skedarëve të rinj

Në dritaren që hapet, zgjidhni "Pin Tool" dhe vendosni hyrjen dhe daljen (kunjat hyrëse dhe dalëse) në diagram. Ne e riemërtojmë hyrjen si çelës, daljen si led dhe i lidhim me një përcjellës. Ruani dhe klikoni "Fillimi i përpilimit".


Oriz. 11 - Dritare përshkrim grafik, Pin Tool dhe Start Compilation janë të theksuara

Pas përpilimit, kemi marrë paralajmërime, i injorojmë për momentin, ato kanë të bëjnë me kunjat e palidhura, mungesën e sinjali i orës dhe përshkrimet për "Timing Analyzer".

Ne lidhim bordin demo dhe programuesin, zgjidhni mjetin "Programmer". Dritarja duhet të thotë "USB-Blaster", nëse jo, atëherë klikoni "Hardware Setup" dhe përpiquni të kuptoni pse jo, ka shumë të ngjarë që drejtuesit nuk janë instaluar, shikoni pajisjet Windows, kërkoni pajisje të paidentifikuara, ndoshta ka një problem me kabllon. Nëse gjithçka është në rregull, klikoni "Zbulimi automatik" dhe zgjidhni çipin tonë.


Oriz. 12 - Dritarja e programuesit

Klikoni klikoni dy herë miun në fushën "File" dhe zgjidhni skedarin për të shkruar në FPGA (ndodhet në dosjen output_files të projektit tonë), kontrolloni fushën "Program / Configure" dhe shtypni butonin "Start".


Oriz. 13 - Dritarja e programuesit, çipi ynë është konfiguruar tashmë

Urime për konfigurimin tuaj të parë FPGA! Dioda D1 duhet të ndizet, kur shtypni tastin 1 duhet të fiket (pasi butoni mbyll këmbën në tokë), atëherë do të bëjmë diçka për të)

Qarku i integruar logjik i programueshëm (FPGA, anglisht pajisje logjike e programueshme, PLD) është një komponent elektronik që përdoret për të krijuar qarqe të integruara dixhitale. Ndryshe nga mikroqarqet konvencionale dixhitale, logjika e funksionimit të FPGA nuk përcaktohet gjatë prodhimit, por specifikohet përmes programimit (projektimit). Për programim, programuesit dhe mjediset e korrigjimit përdoren për të vendosur strukturën e dëshiruar të një pajisjeje dixhitale në formën e një diagrami qarku ose programi në gjuhët e veçanta të përshkrimit të harduerit Verilog, VHDL, AHDL, etj. Një alternativë ndaj FPGA-ve janë: matrica bazë kristalet që kërkojnë fabrikë procesi i prodhimit për programim; ASIC - LSI të specializuara me porosi (të mëdha qarqe të integruara), të cilat në prodhime të vogla dhe të vetme janë dukshëm më të shtrenjta; kompjuterë të specializuar, procesorë (të tillë si procesorët e sinjalit dixhital) ose mikrokontrollues që, për shkak të metodë softuerike Implementimet e algoritmeve janë më të ngadalta se FPGA-të. Disa prodhues FPGA ofrojnë procesorë të butë për FPGA-të e tyre, të cilat mund të modifikohen për t'iu përshtatur detyrë specifike, dhe më pas futet në FPGA. Kjo siguron një reduktim të hapësirës në tabelën e qarkut të printuar dhe thjeshton dizajnin e vetë FPGA-së.

Qarqet e integruara të logjikës së programueshme (FPGA) u shfaqën një dekadë e gjysmë më parë si një alternativë ndaj grupeve të portave të programueshme (PLA). FPGA-të ndryshojnë nga ato më të fundit si në arkitekturë ashtu edhe në teknologjinë e prodhimit.

PLM është një matricë e elementeve logjike me shumë hyrje (disa dhjetëra hyrje) me flip-flops, në të cilën përbërësit e njësive të formave normale disjunktive të funksioneve të këtyre elementeve programohen nga kërcyesit. Në fillim, kërcyesit u bënë në formën e përcjellësve të hollë të shkrirë. Tani kërcyesit bëhen në formën e një porte lundruese MOSFET, si në një ROM të riprogramueshëm elektrik, d.m.th. PLM-të prodhohen duke përdorur teknologjinë e memories flash. PLD-të e mëdha (CPLD) ndryshojnë vetëm në atë që disa PLD janë mbledhur në një çip dhe bashkohen nga një fushë e programueshme lidhjesh.

FPGA është një matricë e elementeve logjike me hyrje të ulët (nga dy deri në pesë hyrje), flip-flops, seksione të linjave të komunikimit të lidhura me kërcyes nga transistorë me efekt në terren. Duke gjykuar nga Emri anglisht- Field Programmable Gate Array (FPGA) - FPGA programohen duke ndryshuar nivelin e fushës elektrike (fushës) në portat e këtyre transistorëve. Për dallim nga, për shembull, LPGA - Laser Programmable Gate Array. Portat e të gjithë transistorëve "programues" me efekt në terren janë të lidhura me daljet e këmbëzës së një regjistri të zhvendosjes së gjatë, i cili mbushet kur programohet FPGA. Disa nga seksionet e këtij regjistri mund të shërbejnë edhe si qeliza ROM.

Firmware zakonisht ruhet në ROM pranë FPGA dhe pas ndezjes ose një sinjali të rivendosjes, ai shkruhet automatikisht në regjistrin e ndërrimit të programimit FPGA. Ky proces quhet konfigurim FPGA. Meqenëse baza e FPGA-ve janë flip-flops që ruajnë firmuerin, FPGA-të prodhohen duke përdorur teknologjinë e çipave statike RAM.

Krahasuar me CPLD-të, FPGA-të përfitojnë, së pari, në një numër të pakufizuar riprogramimesh, së dyti, në kapacitetin logjik, duke përfshirë kapacitetin specifik të përqindjes së portave, dhe së treti, në konsumin e ulët të energjisë.

Si rregull, FPGA-të kanë dy deri në tre rend të madhësisë kapacitet më të madh në numrin e portave logjike ekuivalente sesa CPLD-të dhe, si RAM-i statik, nuk konsumojnë pothuajse asnjë energji në mungesë të ndërrimit. Përveç kësaj, FPGA-të kanë një rend të madhësisë besueshmëri më të lartë (shkallë më e ulët e dështimit) sesa CPLD.

Disavantazhet përfshijnë nevojën për një ROM të jashtëm firmware dhe një gjenerator të orës. Por një ROM me 8 pine zë shumë më pak hapësirë ​​në tabelë sesa vetë FPGA me qindra kunja. E njëjta gjë vlen edhe për gjeneratorin e sinkronizimit. programim elektronik i integruar

Përdoruesit kanë shumë dyshime për mbrojtjen e një projekti nga kopjimi. Në të vërtetë, firmware FPGA ruhet në një ROM të jashtëm, përmbajtja e së cilës thjesht kopjohet. Por ndryshimi ose deshifrimi i firmuerit, për shembull, për të fshehur autorësinë ose për të rivendosur qarkun, është pothuajse i pamundur, pasi semantika e pjesëve në skedarin e firmuerit është një sekret i kompanisë, dhe ndryshimi i pakujdesshëm i tij mund të dëmtojë FPGA. Nëse kërkohet mbrojtje, programi ngarkohet duke përdorur një CPLD të jashtëm, makina në të cilën siguron mbrojtje për projektin. Gjeneratat e reja të FPGA-ve ofrojnë kriptim të firmuerit, për shembull, duke përdorur enkriptuesin e integruar DES, duke siguruar që çelësi të ruhet duke përdorur një bateri.

Qarqet e integruara logjike të programueshme (FPGA) janë një nga elementët më premtues të qarqeve dixhitale. Një FPGA është një çip në të cilin ndodhen një numër i madh elementësh logjikë të thjeshtë. Fillimisht, këta elementë nuk janë të lidhur me njëri-tjetrin. Elementet lidhëse (transformimi i elementeve të ndryshëm në diagrami elektrik) kryhet duke përdorur çelësa elektronikë të vendosur në të njëjtin kristal. Çelësat elektronikë menaxhuar kujtim i veçantë, në qelizat e të cilave është futur kodi i konfigurimit qark dixhital. Kështu, pasi të keni shkruar në memorien FPGA kode të caktuara, mund të montoni një pajisje dixhitale të çdo shkalle kompleksiteti (kjo varet nga numri i elementeve në çip dhe parametrat e FPGA). Ndryshe nga mikroprocesorët, FPGA-të mund të organizojnë algoritme të përpunimit dixhital në nivelin e harduerit (qarkut). Në të njëjtën kohë, shpejtësia e përpunimit dixhital rritet ndjeshëm. Përparësitë e teknologjisë së projektimit të pajisjes së bazuar në FPGA janë:

  • · koha minimale e zhvillimit të qarkut (ju duhet vetëm të futni kodin e konfigurimit në memorien FPGA);
  • · ndryshe nga elementët konvencionalë të qarkut dixhital, nuk ka nevojë të zhvillohet dhe prodhohet kompleksi bordet e qarkut të printuar;
  • · konvertimi i shpejtë i një konfigurimi qarku dixhital në një tjetër (duke zëvendësuar kodin e konfigurimit të qarkut në memorie);
  • · Prodhimi kompleks teknologjik nuk kërkohet për të krijuar pajisje të bazuara në FPGA. FPGA është konfiguruar duke përdorur një kompjuter personal në tavolinën e zhvilluesit. Kjo është arsyeja pse kjo teknologji quhet ndonjëherë "fabrika në një tryezë".

Aplikacionet tipike FPGA: përpunimi dixhital sinjale, elektronikë me porosi, sisteme për marrjen e të dhënave, sisteme kontrolli, pajisje telekomunikacioni, pajisje sistemesh komunikimi pa tel, pajisje kompjuterike Qëllimi i përgjithshëm.

Duke u përpjekur për të arritur karakteristika të larta teknike dhe cilësi të konsumit të produkteve të tyre, zhvilluesit pajisjet elektronike përdorni qarqe të integruara të specializuara (SIS). Përdorimi i tyre ofron përparësitë e mëposhtme:

  • - zvogëlimi i dimensioneve të pajisjes. Përdorimi i FPGA-ve bën të mundur reduktimin e numrit të IC-ve, zvogëlimin e madhësisë së bordeve të qarkut të printuar dhe në këtë mënyrë zvogëlimin e dimensioneve të të gjithë pajisjes;
  • - përmirësimi i karakteristikave teknike. Reduktimi i numrit të IC-ve çon në rritjen e performancës së sistemit dhe uljen e konsumit të energjisë;
  • - rritja e besueshmërisë. Meqenëse probabiliteti i një gabimi ose dështimi të pajisjes është drejtpërdrejt proporcional me numrin e IC-ve, besueshmëria e pajisjeve që përdorin ICIC rritet ndjeshëm;
  • - sigurimin e mbrojtjes së zhvillimit. Meqenëse është shumë më e vështirë (dhe ndonjëherë pothuajse e pamundur) të kopjosh një pajisje që përmban FPIC sesa një pajisje që përdor komponentë standardë, përdorimi i FPIC bën të mundur sigurimin e të drejtave të autorit të zhvilluesit;
  • - rritja e fleksibilitetit të modifikimit. Meqenëse modifikimi i SIS, si rregull, nuk kërkon përpunim të përbërësve të tjerë, ridrejtim të bordeve të qarkut të printuar, etj., mundësitë e korrigjimit dhe modifikimit të pajisjes janë rritur ndjeshëm.

Në shumicën e rasteve, klasat e mëposhtme të ASIC dallohen në literaturë:

  • - IC të programueshëm nga përdoruesi - FPGA (PLD).
  • - IC-të e programueshme me maskë - kristalet bazë të matricës (BMC) ose vargjet e portës (Gate Arrays).
  • - IC në qelizat standarde (Standard Cells).
  • - IC plotësisht të personalizuara (Full Custom).

FPGA dhe BMK i përkasin kategorisë së IC-ve gjysmë të personalizuara, pasi topologjia në qark formohet pjesërisht gjatë prodhimit të vetë IC-ve dhe pjesërisht programohet në përputhje me kërkesat e konsumatorit.

Pjesa tjetër e SPIS janë bërë me porosi, sepse E gjithë topologjia e qarkut, duke marrë parasysh funksionet e kërkuara, zhvillohet gjatë prodhimit të çipit.

Klasifikimi i FPGA-ve është paraqitur në figurë, nga e cila mund të shihni se cilin drejtim dhe seksion të FPGA-ve zë FPGA:

Klasifikimi i SPIS

Po prisnit një shenjë? Këtu është ai!

Për shumë vite isha në mëdyshje për të filluar programimin e FPGA sepse ishte e vështirë, e shtrenjtë dhe e dhimbshme (siç më dukej). Por është mirë të kesh miq që të ndihmojnë të hedhësh hapin e parë. Dhe tani një gjë nuk e kuptoj - PSE PRITA KAQ?

Tani unë do t'ju ndihmoj të bëni edhe hapin e parë!

Pse më duhet?

A jeni lodhur duke lexuar vazhdimisht dokumente në MK tuaj ose duke mbajtur një mori informacionesh në kokën tuaj. Ju rishkruat gjithçka në asm, por shpejtësia ende nuk është e mjaftueshme. Keni lidhur dy pajisje të jashtme me MK-në tuaj, lidhni një të tretën, por ju kanë mbaruar ndërprerjet, ato module që tashmë punonin nuk punojnë. Merr nje MK tjeter, me te fuqishem nga e njejta linje, por prap manuale, regjistra flamujsh, copa... dreqin. Ju ndryshoni platformën: kaloni në një MK tjetër dhe hidhni njohuritë tuaja për platformën e mëparshme. Pavarësisht se çfarë bëni, është e vështirë. Ju gjeni një platformë popullore në të cilën mund të montoni lehtësisht një projekt nga komponentët, por ende nuk mund të hidheni mbi kufizimet harduerike të këtij MK... Diku në skaj të vetëdijes suaj ndonjëherë shfaqet mendimi se në një FPGA kjo do të funksiononte padyshim shpejt dhe paralelisht, cili është ky "pikërisht problemi që duhet zgjidhur ju lutem", por unë jam shumë i vjetër/budalla/i zënë/etj për të/filluar ta bëj këtë.

Dëshironi më në fund të merrni frymë lirisht? Shkoni përpara!

Gëzimi i zhvillimit në FPGA

Kam pasur një ditë të vështirë në punë. Nga njëra punë erdha në punën e dytë, pastaj në daçë, në mbrëmje bëra detyrat e shtëpisë, detyrat e shtëpisë, pastaj një film familjar dhe vetëm në orën 23 isha plotësisht i lirë! Të thuash që isha i lodhur do të thotë të mos thuash asgjë. Por në këtë gjendje, u ula në laptop me një qëllim të fortë: të bëja një gjenerator të valëve katrore 440 Hz. Kaluan 20 minuta dhe tashmë mund ta dëgjoja në kufje. Nuk u besoja veshëve! M'u deshën edhe 15 minuta të tjera për të bërë PWM dhe për të ndryshuar volumin. Deri në atë kohë, unë kisha vetëm bordin e FPGA-së për rreth një javë, dhe para kësaj kisha lexuar vetëm disa libra në Verilog.

Atë mbrëmje kuptova: JA KU ESHTE! Kjo është platforma ku unë mund t'i kthej shpejt dhe me lehtësi mendimet e mia në një pajisje të vërtetë funksionale!

Pse eshte ajo?

Unë do të përshkruaj avantazhet që ka në studimin dhe përdorimin e FPGA-ve, megjithëse të gjithë i dinë tashmë:
  • Universaliteti i njohurive- kur ndryshoni modelin MK, duhet të lexoni dokumentacionin. Kur ndryshoni prodhuesin e MK, duhet të lexoni dokumentacionin. Ju duhet të lexoni vazhdimisht dokumentet, të mbani vazhdimisht shumë informacion në kokën tuaj. Kur zhvilloni në një FPGA, nëse dini Verilog ose VHDL, atëherë jo vetëm që mund të programoni çdo FPGA nga linja e një prodhuesi, por gjithashtu, nëse dëshironi, të kaloni në një tjetër (Altera, Xilinx). Megjithëse do të ketë momente kur zotëroni një mjedis të ndryshëm zhvillimi dhe çështje delikate të harduerit, vetë thelbi i qasjes për dizajnimin e pajisjeve në HDL nuk do të ndryshojë nga kjo.
  • Nga ideja te hardueri- gjatë zhvillimit të një projekti, nëse ju mungon një mikrokontrollues, duhet të zgjidhni një tjetër. Në parim, ju mund të bëni supozime nëse ky MK do të përballojë apo jo projektin. Ose ekziston një MK specifike dhe ju po përpiqeni të përshtatni një projekt në të. Më shpesh ky është rasti. Më kujton pak qasjen e gjyshit tim, i cili bën një shkallë nga ajo që ka në kasolle. Edhe pse mund të dizajnoni një shkallë, blini dërrasa që do të përshtaten... Nga ideja në harduer, dhe jo anasjelltas.
  • Lehtësia e përdorimit të zhvillimeve të njerëzve të tjerë- mund të merrni modulin e dikujt tjetër dhe ta aplikoni në projektin tuaj. Nga kodi mund të kuptoni se si funksionon. Edhe nëse është për xilinx, dhe po e bëni nën altera. Ndonjëherë kjo nuk funksionon mirë, por është më e lehtë se, për shembull, shtimi i bibliotekave binare në një projekt C++/Qt
  • Blloko pavarësinë. Blloqet në HDL janë si funksione të pastra në gjuhë. Ato varen vetëm nga sinjalet hyrëse. Moduli i zhvilluar dhe i korrigjuar do të vazhdojë të funksionojë si duhet, pavarësisht se si rritet projekti. Asgjë nga jashtë nuk do të ndikojë në funksionimin e duhur të tij nga brenda. Dhe në përgjithësi, mund të harroni se si funksionon - është një kuti e zezë. Plus, blloqet funksionojnë paralele.

Problemi i zgjedhjes

Ka shumë pyetje se çfarë të zgjidhni: Altera/Xilinx, Verilog/VHDL, çfarë bordi korrigjimi të marrë. Por gjërat e para së pari.

Prodhuesi

une zgjodha Altera. Pse? Epo, kështu vendosëm unë dhe shoku im, megjithëse emri Xilinx është më i bukur për mua. POR. Nëse nuk mund të zgjidhni tani, atëherë unë do ta bëj për ju. Ju duhet Altera! Pse? Une nuk e di. Gjëja më e rëndësishme tani është të hedhësh një hap: të bësh një zgjedhje. Zgjodha Altera dhe nuk jam penduar deri tani.



Gjuhe

Le ta marrim Verilog - sepse… Epo, e kuptoni.

Bordi i zhvillimit

Zgjedhja e bordit të zhvillimit mori më shumë kohë. Është e qartë se bordet ndryshojnë në çipin e instaluar FPGA. Dhe çipat FPGA ndryshojnë nga njëri-tjetri në numrin e elementeve. Por nuk është aspak e qartë se sa prej tyre do të nevojiten për projektet tuaja të testimit. Prandaj, kalova pjesën më të madhe të kohës duke kërkuar për të gjitha llojet e projekteve FPGA për të zbuluar se sa konsumojnë burimet FPGA.

Në familjen Altera, për para të arsyeshme mund të blejmë pllaka me CPLD MAX II me elementë 240, 570 dhe 1270, ose çipa më të vjetër FPGA si Cyclone 1, 2, 3, 4 me deri në 10,000 ose më shumë qeliza. Si të zgjidhni?

Edhe në bazë të 240 qelizave, projekti Mars Rover bën vetëm një numër të madh projektesh. Unë rekomandoj fuqimisht që ta lexoni për të pasur një ide të përafërt të kompleksitetit të projekteve që mund të përshtaten në 240 qeliza. Nga ana tjetër, ka projekte që janë plotësisht të programuara për një kopje harduerike të një PC specifik, duke përfshirë procesorin dhe të gjithë logjikën rreth tij (NES, Speccy, Orion, YuT-88, etj). Kjo tashmë kërkon pesë, dhjetë ose më shumë mijëra qeliza. Plus, këto borde përmbajnë pajisje shtesë të jashtme.

Prandaj, unë do të këshilloja të merrni diçka midis 240 dhe 10,000 qelizave, me një preferencë për ato më të mëdha në varësi të fondeve në dispozicion. Në një tabelë korrigjimi, qelizat shtesë nuk janë një punë e madhe, por nëse nuk ka mjaft prej tyre, nuk mund të bëni asgjë për këtë. Më pas, kur pajisja të korrigjohet, do të bëhet e qartë se sa qeliza nevojiten, do të blini sasinë e kërkuar, pa "komplet të trupit" të panevojshëm, më lirë dhe do ta lini në pajisjen e përfunduar.

Ajo që me të vërtetë e dallon MAX nga Ciklonet, përveç numrit të qelizave, është:
1) Seria MAX nuk ka një PLL brenda. Çdo bord zhvillimi ka një oshilator, zakonisht 50 MHz. Kjo do të mjaftojë për shumicën e projekteve. I gjithë sinkronizimi do të ndodhë duke ndarë 50 MHz me një vlerë. Ose, mund të merrni një gjenerator të jashtëm dhe ta futni atë në një hyrje të veçantë FPGA. Po sikur të keni nevojë për një frekuencë më të lartë se 50 MHz? Nuk munda të gjeja menjëherë oshilatorët mbi 50 MHz. Por këtu vjen në ndihmë PLL, e cila është ndërtuar në Cyclones. Në të mund të shumëzoni frekuencën, për shembull, deri në 100 MHz.
2) Seria Cyclone ka njësi të shumëzimit të harduerit të integruar. Numri i tyre varet nga modeli specifik - këtu mund të "shikoni udhëzimet" për të zbuluar se sa. Nëse planifikoni të bëni një lloj DSP, atëherë ata do të jenë të dobishëm: ata do të kursejnë qelizat dhe do të rrisin shpejtësinë. Nga ana tjetër, nëse nuk ka shumëzues, ato mund të sintetizohen, por një FPGA e vogël mund të mos ketë burime të mjaftueshme për këtë.

Në të gjitha aspektet e tjera, unë kam një kriter "përshtatshëm/nuk përshtatet". Korrigjimi në një tabelë që është padyshim më e madhe se sa nevojitet, e ndjekur nga plotësimi i saj me minimumin e kërkuar për këtë.

Sa para nevojiten?


Programues
Unë besoj se nuk kam kohë të bashkoj programuesit me shumicë.

300 rubla. Kam marrë timen në eBay, duket kështu:

Bordi i zhvillimit
Zgjedhja është e gjerë, në varësi të sasisë së parave.

Niveli i parë 350 - 550 rubla. Këto janë borde të bazuara në MAX II (ose qeliza). Mund të jetë i përshtatshëm për njohjen fillestare dhe integrimin e mëtejshëm në pajisjet fundore. Bordi ka një gjenerator, disa butona, disa LED dhe 80 kunjat e mbetura sipas gjykimit tuaj.

njësia e fuqisë
Është një domosdoshmëri, por nuk përfshihet gjithmonë. Do t'ju duhet një furnizim me energji 5 volt dhe një rrymë prej 2A.

Niveli mesatar nga 900 në 1500 rubla. Këto janë dërrasat e Ciklonit 1, 2, 3, 4, që ndryshojnë kryesisht në numrin e qelizave.
Ata janë shënuar diçka si kjo:
E.P. 2 C 5 T144 - Ciklon 2 afërsisht 5k qeliza
E.P. 4 C.E. 6 E22C8N - Ciklon 4 rreth 6k qeliza
E.P. 2 C 8 Q208C8N - Ciklon 2 afërsisht 8k qeliza

Ju mund të vini re se cikloni 3 mund të ketë më shumë qeliza se cikloni 4.

Këtu janë disa opsione:

835 rubla.
Bordi minimal i sistemit ALTERA FPGA CycloneII EP2C5T144 për të mësuar mirë

880 rubla
Altera CycloneII EP2C5T144 FPGA Mini Development Learn Core Board E081

1265 rubla
EP2C8 EP2C8Q208C8N ALTERA Cyclone II Bordi Bërthamë i Vlerësimit të Zhvillimit të FPGA

Bordet e avancuara . Këto janë tabela në të cilat janë instaluar module shtesë (UTP, USB, AUDIO), lidhës (SD, VGA), butona, çelsat, LED, tregues me shtatë segmente, etj. Secili mund të shkojë bordi bazë, dhe kartat e zgjerimit mund t'i bashkëngjiten veçmas.

Unë kam grupin e mëposhtëm të punës - bordi + bordi i zgjerimit:
Altrea EP4CE10E22 FPGA CORE Board + Tabela e pajisjes USB/Tingulli/Ethernet/Karta SD/VGA
2760 rubla

Këtu është bordi kryesor. Ka 2 LED, 2 butona, 4 çelësa, një tregues me shtatë segmente dhe një çip RAM.

Bordi i zgjerimit. Ai përmban SD, VGA, si dhe kontrollues USB (Chip USB2.0 me shpejtësi të lartë: CY7C68013A), AUDIO (Kartë zanore deri në 96kHz/32bit ADC/DAC: WM8731S), UTP (ndërfaqe Ethernet 100M: DM9000A):

Këto dërrasa thjesht futen në njëra-tjetrën, por unë ende i kam në një sirtar. Për punët e mia kam një dërrasë buke, të cilën e lidh me një kabllo që vjen me kompletin. Gjithashtu në përfshirë Furnizimi me energji 5 volt.

Artikujt më të mirë mbi këtë temë