Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Greške
  • Izrada logičkih sklopova na FPGA altera. Plis - moji prvi koraci

Izrada logičkih sklopova na FPGA altera. Plis - moji prvi koraci

6. PROGRAMIBILNI LOGIČKI INTEGRIRANI KRUGOVI (FPGA)

Programabilni logički integrirani krug (FPGA, Programmable Logic Device, PLD) - elektronička komponenta,

koristi se za izradu digitalnih integriranih sklopova. Za razliku od konvencionalnih digitalnih mikrosklopova, logika rada FPGA nije određena tijekom proizvodnje, već je specificirana programiranjem (dizajnom).

Povijest razvoja FPGA počinje programibilnim memorijskim uređajima samo za čitanje (PROM - Programmable Read Only Memory). U početku su PROM-ovi služili isključivo za pohranu podataka, a kasnije su se počeli koristiti za implementaciju logičkih funkcija. Za implementaciju sustava Booleove funkcije S veliki broj varijable, razvijeni su programabilni logički nizovi PLA (PLA - Programmable Logic Array) - naj tradicionalni tip FPGA s programabilnim matricama "I" i "ILI". Primjeri takvih FPGA su domaći krugovi K556PT1, PT2, PT21.

Konstrukcija PLA-a temelji se na činjenici da se bilo koja kombinacijska funkcija može prikazati kao logički zbroj (operacija ILI) logičkih proizvoda (operacija AND). Sklop koji implementira kombinacijsku funkciju prikazan je na sl. 6.1.

Riža. 6.1. PLA konstrukcijski dijagram

Nedostatak ove arhitekture je slaba iskorištenost resursa programabilne matrice "ILI", stoga daljnji razvoj primljeni mikrosklopovi izgrađeni prema arhitekturi programibilne matrične logike (PAL - Programmable Array Logic) - to su FPGA koji imaju programabilnu matricu "I" i fiksnu matricu "ILI" (slika 6.2). Većina modernih FPGA s malim stupnjem integracije pripada ovoj klasi. Primjeri uključuju domaće IC KM1556HP4, HP6, HP8, HL8, rani razvoj (sredina do kasnih 1980-ih) FPGA tvrtke INTEL, ALTERA, AMD, LATTICE itd.

Riža. 6.2. PAL konstrukcijski dijagram

Poboljšanja FPGA dovela su do pojave programibilne makrologike. Sadrže jednu programabilnu matricu "I-NE" ili "ILI-NE", ali zbog brojnih inverznih povratnih sprega sposobni su formirati složene logičke funkcije. Ova klasa uključuje, na primjer, FPGA PLHS501 i PLHS502 tvrtke SIGNETICS, koji imaju matricu "I-NE", kao i sklop XL78C800 tvrtke EXEL, temeljen na matrici "ILI-NE".

Gore navedene FPGA arhitekture sadrže mali broj ćelija. Do danas su zastarjeli i koriste se za realizaciju relativno jednostavnih uređaja za koje ne postoje gotovi integrirani sklopovi srednjeg stupnja integracije. Nisu prikladni za implementaciju algoritama digitalne obrade signala.

Daljnja poboljšanja proizvodne tehnologije omogućila su implementaciju višestrukih PAL-ova na jednom čipu, povezanih programabilnim vezama. Takve se arhitekture nazivaju složenom (kompleksnom) programabilnom logikom

PROGRAMABILNA LOGIKA

INTEGRIRANI KRUGOVI

uređaji (CPLD - Complex Programmable Logic Device) - ovo je FPGA,

Riža. 6.3. CPLD makroćelijski dijagram

Mikrosklopovi ove vrste mogu se koristiti za stvaranje nestandardnih ALU-ova, dekodera, multipleksera itd., tj. takvi uređaji gdje su potrebne logičke funkcije mnogih varijabli i mali broj bistabila. FPGA tipa CPLD tipično imaju visok stupanj integracije (do 10 000 ekvivalentnih vrata, do 256 makroćelija).

Ova klasa uključuje FPGA obitelji MAX tvrtke ALTERA, obitelji XC9500 i CoolRunner tvrtke XILINX, kao i veliki broj čipova drugih proizvođača (Atmel, Vantis, Lucent itd.).

Drugi tip FPGA arhitekture su programibilni nizovi vrata (FPGA - Field Programmable Gate Array Logic), koji se sastoje od konfigurabilnih logičkih blokova (CLB) i preklopnih staza - programabilnih matrica povezivanja (Sl. 6.4). Podesivi logički blokovi takvih FPGA sastoje se od jednog ili više relativno jednostavnih logički elementi, koji se temelje na tablici pretraživanja (LUT), programabilnim multiplekserima, okidaču i upravljačkim krugovima. Karakteristika FPGA arhitektura su ulazno/izlazni blokovi (IOB - input/output blocks),

omogućujući implementaciju dvosmjernog ulaza/izlaza, trećeg stanja itd.

Riža. 6.4. FPGA struktura

Takvih jednostavnih elemenata može biti dosta; na primjer, u modernim FPGA s kapacitetom od 1 milijun vrata ili više, broj logičkih elemenata doseže nekoliko desetaka tisuća. Zbog tako velikog broja logičkih elemenata sadrže značajan broj flip-flopova, a neke obitelji FPGA imaju ugrađene rekonfigurabilne memorijske module. To čini FPGA ove arhitekture vrlo prikladnim sredstvom za implementaciju algoritama za digitalnu obradu signala, čije su glavne operacije množenje, množenje s konstantom, zbrajanje i kašnjenje signala.

Klasa FPGA uključuje FPGA iz obitelji Spartan i Virtex

XILINX; Fusion, M1 i M7 Fusion i drugi iz ACTEL-a, kao i obitelji Cyclone, Stratix iz ALTERA-e, FPGA iz Atmela i Vantisa.

6.1. Značajke FPGA programiranja

Podaci o konfiguraciji za CPLD pohranjeni su u trajnoj memoriji unutar FPGA, tako da nema potrebe

DIGITALNI UREĐAJI I MIKROPROCESORI. 2. DIO

PROGRAMABILNA LOGIKA

INTEGRIRANI KRUGOVI

reprogramirati kada je uključen. FPGA konfiguracijski program pohranjuje se u distribuiranom hlapljivom RAM-u čipa, koji se briše kada se napajanje isključi, tako da se konfiguracijska datoteka sprema u vanjsku memoriju, a kada se napajanje uključi, konfiguracijska datoteka se učitava u FPGA memorija. Za pohranu konfiguracijske datoteke obično se koristi reprogramabilni ROM.

(EPRM, EEPROM ili FLASH).

Kada se radi u takvim sustavima, konfiguracija sklopa koja se mora dobiti "unutar" FPGA ili algoritam za njegov rad specificiran je ili u tekstualnom opisnom jeziku: VDHL (Very high speedintegrated circuitsH ardwareD descriptionLanguage - jezik opisa hardvera za brzi integrirani krugovi), Verilog, ADHL (A lteraH ardwareD descriptionL anguage), koji podsjeća na programski jezik visoke razine (na primjer C); ili u grafičkom uređivaču (u obliku električnog dijagrama); ili pomoću dijagrama toka algoritma ili grafikona stanja. Nadalje, sve faze rada, uključujući programiranje ili učitavanje FPGA, izvodi sustav za automatizirani dizajn. Takve sustave proizvode svi vodeći proizvođači FPGA

(www.actel.com) ACTEL, (www.altera.com) ALTERA, (www.xilinx.com) XILINX i druge tvrtke.

7. DIGITALNO-ANALOGNI I

7.1 Načela gradnje digitalno-analogni pretvarači

Digitalno-analogni pretvarač (DAC) je uređaj za pretvaranje numeričkih kodova u njihove ekvivalentne vrijednosti napona ili struje. DAC sklopovi se grade pomoću digitalnih i analognih elemenata (operacijska pojačala, sklopke, otporničke matrice itd.). Većina DAC-ova izrađenih u obliku integriranih krugova su uređaji paralelnog tipa. Njihov se rad temelji na zbrajanju struja, čije su veličine proporcionalne težinskim koeficijentima bitova ulaznog koda.

Krug 4-bitnog DAC-a prikazan je na sl. 7.1.

Riža. 7.1. Princip izgradnje DAC kola

Sadrži otpornu matricu, referentni napon U R, operacijsko pojačalo i sklopke S 0 − S 3.

Otpori matričnih otpornika su takvi da struje koje teku kroz otpornike odgovaraju težinskim koeficijentima znamenki broja

D = d 3 d 2 d 1 d 0 . Položaj kontakata prekidača ovisi o vrijednostima d i . Ako je d i = 0, tada je struja koja teče kroz matrični otpornik pod djelovanjem referentnog napona U R kratko spojena na zajedničku žicu.

Kada je d i = 1, struja otpornika teče kroz S i. teče u krug zbrajanja

struje, izvedeno na operacijskom pojačalu s paralelnom povratnom spregom napona. Čvor zbrajanja ima praktički nulu

DIGITALNI UREĐAJI I MIKROPROCESORI. 2. DIO

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI PRETVARAČI

potencijal u odnosu na zajedničku žicu, dakle izlazni napon može se napisati na sljedeći način:

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

Da bi se povećao bitni kapacitet DAC-a, potrebno je dodati odgovarajući broj otpornika i sklopki.

Proizvodnja visokopreciznih otpornika za matrice puna je poteškoća, posebno u slučaju višebitnih DAC-ova (vrijednosti otpornika su u rasponu širok raspon- od R do

R 2 n − 1 , ali zahtjevi za apsolutnom točnošću određivanja

otpori su isti za sve otpornike). Stoga se često koristi matrica otpora tipa R − 2R (slika 7.2).

Riža. 7.2. DAC s tipom matrice R – 2R

Težinski koeficijenti stupnjeva postavljaju se sekvencijalnim dijeljenjem referentnog napona. Koeficijent prigušenja svakog stupnja matrice jednak je dva. Izlazni napon DAC-a je:

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

MOS tranzistori se često koriste kao elektroničke sklopke u DAC sklopovima (slika 7.3). Koriste se i strujne sklopke na bazi bipolarnih tranzistora.

Riža. 7.3. 4-bitni DAC:

a – fragment sklopa s MOS sklopkama, b – UGO

Primjeri IP-a:

K572PA1 - 10-bitni DAC. IC sadrži preciznu R − 2R matricu, MOS tranzistorske sklopke, ulazna pojačala, pretvarače i otpornik za povratni krug operacijskog pojačala. Za pretvaranje ukupne struje u napon potrebno je spojiti operacijsko pojačalo. Također je potrebna vanjska referenca napona.

DIGITALNI UREĐAJI I MIKROPROCESORI. 2. DIO

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI PRETVARAČI

7.2. Načela gradnje analogno-digitalni pretvarači

Analogno-digitalni pretvarač (ADC) je uređaj za pretvaranje napona u odgovarajući numerički kod. Operacije koje se izvode tijekom procesa analogno-digitalna pretvorba, opisani su u uvodu. U nastavku razmatramo samo aspekte strujnog kruga izgradnje ADC-a.

Na temelju metode pretvorbe, ADC se mogu podijeliti na paralelne

I dosljedan.

U paralelnih ADC-ova, ulazni napon se istovremeno uspoređuje sa svim razinama praga kvantizacijske ljestvice (slika B.1.). Kao rezultat usporedbe, pronalazi se najbliža razina kvantizacije, čiji se broj izražava u binarnom kodu pomoću kodera. Dijagram koji predstavlja 3-bitni paralelni ADC, prikazan na sl. 7.4. Izvor referentnog napona i skup otpornika omogućuju generiranje napona jednakih razinama praga.

Referentni napon je (2n -1) = 7 puta vrijednost koraka kvantizacije U S . Ako je npr. ulazni napon in

rasponu od (4+ 1 2 ) US do (5+ 1 2 ) US mora biti predstavljen

razina kvantizacije jednaka 5U S i, prema tome, binarni kod 101. Izlazni kod se generira na sljedeći način. Za danu vrijednost U I, izlazi šest komparatora postavljeni su na

intervalu uzorkovanja, izlazni signali komparatora unose se u registar. Za generiranje brojčanog koda razine kvantizacije koristi se prioritetni koder. Izlazni kod enkodera određen je aktiviranim ulazom s najvećim brojem (u razmatranom

primjer ovo je X 5).

Riža. 7.4. Paralelni ADC: a – krug, b – UGO

Primjer JE:

K1107PV1 - 6-bitni paralelni ADC. IC je proizveden bipolarnom tehnologijom. Maksimalna frekvencija uzorkovanja je 20 MHz.

U serijskim ADC-ovima, ulazni napon je sekvencijalno uravnotežen skupom (zbrojem) standarda, čije su vrijednosti višestruke od koraka kvantizacije. Vrsta takvih pretvarača je ADC

DIGITALNI UREĐAJI I MIKROPROCESORI. 2. DIO

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI PRETVARAČI

sekvencijalno brojanje. Njegov rad se temelji na brojanju broja zbrajanja koraka kvantizacije potrebnih za dobivanje vrijednosti ulaznog napona. ADC krug serijskog brojanja prikazan je na sl. 7.5. Sastoji se od n-bitnog up/down brojača, komparatora i n-bita digitalno-analogni pretvarač uključen u povratni krug.

Riža. 7.5. ADC sa serijskim brojanjem

Pomoću komparatora uspoređuju se ulazni napon U I i izlazni napon DAC O. Ako je U I > U O, tada je izlaz komparatora na jediničnoj razini i brojač radi u načinu zbrajanja impulsa takta C. Zbog toga napon U O teži U I . Kada se usporede, n-bitni izlazni kod D predstavljat će ulazni napon ADC-a. Ako U I< U O то счетчик работает в вычитающем режиме. Таким образом, напряжениеU O , а следовательно, и выходной код, отслеживают выходное напряжениеU I Для того, чтобы

Kako bi se spriječilo osciliranje signala preokreta U/D nakon završetka procesa praćenja, moguće je nadopuniti ADC krug uređajem

blokiranje brojača na U I − U O< U S 2 .

Dijagram strujnog kruga ADC prikazan na sl. 7.5, vrlo jednostavno. Ali s udarima ulaznog napona, proces praćenja može potrajati do 2n ciklusa takta (periodi impulsa C). Ubrzanje pretvorbe postiže se u bit-weighted ADC. Njegov dijagram sličan je dijagramu na Sl. 7.5 samo je brojač zamijenjen registrom s upravljačkim uređajem. Rad ADC-a za vaganje po bitovima odvija se na sljedeći način. Prvo, svi bitovi registra su postavljeni na nulu. Zatim se u najvažniji bit registra upisuje 1. Istovremeno na izlazu DAC-a

postavlja se napon U O = 2n − 1 U S, jednak polovici ukupnog2 n − 2),

tada je d n − 2 = 1

Ako ne,

d n − 2 = 0 .

Nakon n

faza, proces balansiranja završava i kombinacija koda koja predstavlja ADC ulazni napon se postavlja na izlaz registra. Kako bi se osiguralo da tijekom pretvorbe napon

U I se nije promijenio; sklop za uzorkovanje pohrane instaliran je na ulazima komparatora.

Poznati su i drugi serijski ADC, na primjer, ADC koji rade pomoću metode integracije.

Primjeri IP-a:

K572PV1 - 12-bitni ADC s bit-by-bit vaganjem. IC je proizveden pomoću CMOS tehnologije. Koristi se s vanjskim operacijska pojačala i izvor referentnog napona. Tipično vrijeme pretvorbe je 110 µsec.

K1113PV1 - 10-bitni ADC s bit-by-bit vaganjem. IC je proizveden pomoću bipolarne tehnologije i sadrži sve funkcionalne komponente ADC-a, uključujući izvor referentnog napona i generator takta. Izlazni stupnjevi su projektirani prema krugu s tri stanja. Vrijeme pretvorbe - ne više od 30 μsec.

Uspoređujući paralelne i serijske ADC, može se primijetiti sljedeće. Paralelni ADC su sklopovi velike brzine, ali njihova implementacija zahtijeva velike troškove hardvera (6-bitni ADC sadrži 64 komparatora). ADC sa serijskim brojanjem imaju najjednostavniji krug, ali rade relativno s niskofrekventnim naponima. Bit-weighted ADC-ovi zauzimaju srednji položaj u smislu složenosti i performansi. Kombinacija paralelnih i serijskih ADC krugova omogućuje vam izgradnju velikog broja opcija pretvarača s različitim parametrima i raznolikom funkcionalnošću.

DIGITALNI UREĐAJI I MIKROPROCESORI. 2. DIO

KNJIŽEVNOST

KNJIŽEVNOST

1. Glassman K.F., Pokoptseva M.N. Digitalni uređaji i mikroprocesori. Udžbenik za studente specijalnosti 210312 "Audiovizualna tehnologija". Dio 1. – Sankt Peterburg: SPbGUKiT, 2008.

2. Novikov Yu.V. Osnove digitalnih sklopova. Osnovni elementi i dijagrami. Metode projektiranja. – M.: Mir, 2001.

3. Novikov Yu., Skorobogatov P. Osnove mikroprocesorske tehnologije: Tečaj predavanja. – M.: INTUIT.RU, 2003.

4. Belov A. Priručnik za samoučenje mikroprocesorske tehnike. – M.: Znanost i tehnologija, 2003.

5. Novozhilov O.P. Osnove digitalne tehnologije: Udžbenik. – M.: Radio Soft, 2004.

6. Ugryumov E. Digitalni sklopovi od logičkog elementa do naprednog LSI/VLSI s programabilnim strukturama. – St. Petersburg: BHV – Petersburg, 2004.

7. Boyko V. Projektiranje sklopova elektroničkih sustava. Digitalni uređaji.

– St. Petersburg: BHV – Petersburg, 2004.

8. Boyko V. Projektiranje sklopova elektroničkih sustava. Mikroprocesori i mikrokontroleri. – BHV – Sankt Peterburg, 2004.

9. Naryshkin A.K. Digitalni uređaji i mikroprocesori. – M.: Izdavačka kuća. Centar "Akademija", 2004.

10. Wilkinson B. Osnove projektiranja digitalnih sklopova. – Kijev: Williams, 2004.

11. Fricke K. Početni tečaj digitalne elektronike. – M.: Tekhnosfera, 2004.

12. Opadchiy Yu.A. Analogna i digitalna elektronika. Udžbenik za sveučilišta. – M.: Hotline– Telekom, 2005.

13. Tocci R. Widmer N. Digitalni sustavi. Teorija i praksa. – Kijev: Williams, 2004.

14. Alekseeva L.A., Bul M.P., Glassman K.F., Pokoptseva M.N.. Smjernice za izvođenje laboratorijskog rada za studente specijalnosti 201400 „Audiovizualna tehnologija” u kolegiju „Digitalni uređaji i mikroprocesori”. – Sankt Peterburg: SPbGUKiT, 2002.

Na ovaj članak su me natjerali moji drugovi koji se jako dobro razumiju u kontrolere (puno bolje od mene) i koriste ih svugdje gdje stignu. Međutim, postoji ogroman broj aplikacija u kojima je upotreba FPGA ne samo opravdana, već dovodi i do značajnog pojednostavljenja sustava i poboljšanja njegovih parametara. Odmah ću rezervirati: u ovom i eventualno sljedećim člancima razmatram FPGA samo iz Xilinxa, ne zato što su mi platili, pa čak ni zato što su najbolji, samo povijesno radim gotovo isključivo s njima.

Pa krenimo s malo teorije. FPGA dijele se u dvije glavne skupine: CPLD (Complex Programmed Logic Device) i FPGA (Field Programmed Gate Array). CPLD- ovo je obično FPGA "ekonomske" klase, tj. imati niska cijena i prilično oskudna količina resursa, to je posebno vidljivo na okidačima. FPGA obično skuplji, sadrže više resursa (jednostavna logika - okidači...) i, što je najvažnije, odnedavno dodatni "složeniji" blokovi, kao što su množitelji, blok memorija, hardver sučelja (Ethernet, PCI-express...) pa čak i PowerPC procesorske jezgre. Zasebno možemo spomenuti seriju Zinq iz Xilinxa - tamo su općenito stavili ARM jezgre. Glavna razlika između FPGA i CPLD je potreba za učitavanjem konfiguracije kada je napajanje uključeno i, sukladno tome, vanjski ROM s konfiguracijom. Čak i obitelj SPARTAN-3AN ima ugrađeni ROM s kojeg se pokreće.

Sada najvažnija stvar: kako se FPGA razlikuje od kontrolera i kada ih koristiti. Ovdje je sve vrlo jednostavno: FPGA (uzimamo one bez zvona i zviždaljki) je zapravo vrećica logike na jednom čipu, koja se može proizvoljno spajati: isti okidači, I, ILI i slične primitive, kao npr. , u seriji K155 ili 74NS. Kontroler je gotov procesor (iako s malim brojem naredbi), ugrađenom memorijom, podatkovnim i naredbenim sabirnicama, perifernim uređajima itd. Općenito govoreći, možete napraviti mali kontroler od velikog FPGA, ali ova ideja jest barem, glupo. Dakle, kontroler je dizajniran za izvršavanje dugih lanaca naredbi, njihovih cikličko ponavljanje, prebacivanje s jednog lanca na drugi, itd., a FPGA je dizajniran za izvođenje jednostavnih logičke operacije i, što je još važnije, veliki broj odjednom (pa čak i na različitim taktnim frekvencijama).

Prijeđimo s teorije na praksu. Za početak, trebat će nam neka vrsta CPLD čipa. Resursa je malo, ali dovoljno za razvoj. Uzet ću XC95288XL u kućištu TQ144 (opet, slučajno je bio na zalihi), općenito preporučujem da uzmete nešto svježije, na primjer, iz serije CoolRunner 2. Dobiti gotov proizvod(čak i ako minimalno treperi s LED-om), moramo: lemiti hardver (ovdje, nadam se, neće biti problema, ali ću spomenuti nijanse), "napisati" firmware (u našem slučaju, radije , nacrtajte ga) i bljeskajte firmware u mikro krug. Općenito, trebat će nam softver koji generira firmware i programator. Softver (Xilinx ISE Webpack) preuzimamo sa službene stranice (iako će vas tražiti da se registrirate), Webpack licenca je besplatna. Programator se može napraviti prema dijagramu na slici 1 (za LPT priključak) ili možete kupiti tvornički USB (našao sam ga u kineskim internetskim trgovinama za oko 50 dolara, ali nisam ga kupio sam). Više.

Riža. 1

Nakon što smo zalemili FPGA na matična ploča, zalemio ili kupio programator, skinuo i instalirao paket ISE Webpack (imam verziju 13.2), pokreni Project Navigator i izradi novi projekt. Za izradu projekta odaberite Datoteka -> Novi projekt, navedite naziv projekta i gdje ga želite spremiti, a također navedite vrstu izvora NAJVIŠA RAZINA (Sl. 2). Činjenica je da za FPGA nije potrebno crtati dijagram flip-flopova i njihovih veza; možete, na primjer, pisati na jezicima visoke razine (VHDL, Verilog) i uopće nije potrebno koristiti jednu stvar unutar istog projekta. Za sada koristimo samo Schematic na svim razinama.


Riža. 2
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

U sljedećem prozoru (slika 3) odabiremo naš mikro krug (isprva ne diramo ostatak); U prozoru koji se pojavi nakon klika na gumb "Dalje", divimo se parametrima stvorenog projekta, kliknite "Završi" - i to je to: projekt je stvoren.


Riža. 3

Sada zapravo trebamo nacrtati dijagram: desnom tipkom miša kliknite prozor s projektom i novim izvorom (slika 4), dajte ovom izvoru ime (ovo je naziv naše sheme, može ih biti mnogo u projektu), ponovno odaberite shemu, kliknite "Dalje" ", ponovno se divimo parametrima stvorena datoteka, kliknite "Završi" i dobit ćete čisti dijagram.


Riža. 4
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Zabava počinje: na ploči s lijeve strane (ne na samom rubu) kliknite gumb "dodaj simbol" (slika 5).


Riža. 5
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

I dobivamo popis simbola trenutne biblioteke još lijevo. Kasnije ćemo otkriti kako dodavati, stvarati i uređivati ​​biblioteke (prema potrebi). Sada nam je važno odabrati željeni simbol. Dakle, u gornjem prozoru vidimo određeni klasifikator - filtar, koji nije potrebno koristiti (dobro, zašto se kretati kroz sve vrste okidača i logičkih elemenata kada nam treba brojač).

Na primjer, razmislite o sljedećem zadatku: trebate odrediti što je točnije moguće vrijeme kašnjenja između vodećih rubova 2 impulsa koji se pojavljuju na različitim žicama i spojiti tu vrijednost u upravljač preko SPI sučelja. Svaka sličnost između zadatka i teme „Promocija radna frekvencija MK" na jednom od foruma o robotici je namjerno. Dakle, na ulazu uređaja postoje 2 žice za impulse i 3 žice za SPI kontroler. Dodamo još jedan ulaz takta (još ne znamo na kojoj frekvenciji, mi možemo samo pretpostaviti da je barem 70 MHz). Počnimo crtati firmware: potrebni su nam okidači koji će "hvatati" impulse, brojač vremena, registar posmaka (nema potrebe da ih stvarate, oni su iz biblioteke) .Neću opisivati ​​što su okidači i brojači, nadam se da su čitatelji “informirani” i da neće biti problema, inače ćete morati napisati još nekoliko članaka. Dobili smo takav dijagram (slika 6) , kao što vidite, nije potrebno povlačiti žicu od izlaza simbola do ulaza, dovoljno je jednostavno označiti krug. Za označavanje vanjskih ulaza i izlaza koristimo gumb " Dodaj I/O marker ".


Riža. 6
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Kada je dijagram gotov, idite na karticu Dizajn, pa dvaput kliknite na Implement Design - počinju svakakvi procesi (za početak nije bitno koji - glavno da je sve skupa proces destilacije izvorni kod u firmware). Kada sve radi, greške gledamo s upozorenjima: popravljamo sve što je bitno, a ostalo ostavljamo. Na primjer, ne trebaju nam izlazi CEO i TS brojača i preostalih 15 bita paralelnog izlaza posmačnog registra također ne treba, ali kunu se u upozorenja. Ako se s greškama kune u ono što želimo, znači da želimo nešto pogrešno. Ako smo mi (i sintesajzer) zadovoljni sa svime, nastavljamo se diviti izvješćima: koliko je resursa iskorišteno, koje su frekvencije takta dostupne... Ako je opet sve u redu, onda je vrijeme da simuliramo krug i provjerimo da zapravo radi prema zadatku. Predlažem da provedete simulaciju nakon provjere vremena jer ponekad da biste dobili potrebnu frekvenciju takta morate protresti cijeli krug, što, naravno, može utjecati na rezultat...

Dakle, simulacija: na kartici Dizajn (u lijevom panelu) odaberite simulaciju (Slika 7).


Riža. 7
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Dolje, u procesima, umjesto procesa sinteze i ožičenja, pojavio se proces Simulate Behavioral Model, dvaput kliknite na njega - pokreće se simulator u kojem vidimo naše signale (ne samo ulazno-izlazne, već i međuprocesne) (slika 8).


Riža. 8
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Pokazivačem miša prelazimo preko gumba i čitamo komentare na gumbima. Postavljamo vrijeme koraka simulacije (slika 9) i početne vrijednosti ulaznih signala, te odmah postavljamo signale sata (nećemo simulirati i mijenjati sat svakih 5 ns).


Riža. 9
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Korakom u vremenu manipulacijom ulaza i (ako je potrebno) korakom simulacije, dobivamo vremenski dijagram (slika 10).


Riža. 10
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Uvjeravamo se da sve radi kako je predviđeno (ili dalje ispravljamo pogreške u krugu) i prelazimo na sljedeći korak - distribuciju izlaza i ulaza preko pinova mikro kruga. Da biste to učinili, dodajte još jednu izvornu datoteku (Slika 11), naime datoteku s ograničenjima implementacije.


Riža. jedanaest
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Zapisujemo "pinout mikro kruga" (slika 12), a ovdje također zapisujemo zahtjeve za frekvencije takta. A sada dolazimo do nijanse povezane sa signalima sata. Činjenica je da signali sata moraju stizati na takozvane globalne linije - linije koje prolaze kroz cijeli mikro krug, a preostale linije su lokalne prirode i prolaze kroz logiku prebacivanja od bloka do bloka. Čip XC95288XL u paketu TQ144 ima 3 takve linije, a spojene su na krakove 30, 32, 38. Preostale signale moguće je spojiti na bilo koje ulazno/izlazne (I/O) krakove.


Riža. 12
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Ponovno dvaput kliknite Implement Design, pričekajte, pročitajte komentare na temu upozorenja s pogreškama i idite na izvješća o pinoutima (Slika 13) i vremenima (Slika 14); Pazimo da nam sve odgovara, a imamo sreću u obliku datoteke %project_name%.jed.


Riža. 13
(slika se može kliknuti za povećanje, otvara se u novom prozoru)


Riža. 14
(slika se može kliknuti za povećanje, otvara se u novom prozoru)

Datoteka firmvera je spremna. Recimo i uređaj. Spojimo JTAG kabel na računalo i dvaput kliknemo na Configure Target Device. Pokrenut će se uslužni program firmvera (Impact.exe); zapravo, kada proizvodite nekoliko uređaja za treptanje serije, možete se ograničiti na pokretanje samo jednog. Stvaramo novi projekt (ovo je projekt za firmware program), dopuštamo mu da automatski pronađe programator i povezani čip, prikazujemo firmware datoteku i kliknemo Program. Čekamo nekoliko desetaka sekundi, vidimo natpis da je sve u redu - uređaj je spreman.

UVOD

Obično, kad netko vidi funkcionalnu ploču, uvijek postavlja ista pitanja: - Je li ovo Arduino? - Kako radi bez Arduina?

To nije mikrokontroler, nije čak ni procesor, to je FPGA. FPGA je programabilni logički integrirani krug, takav mikro krug sastoji se od mnogo identičnih blokova ili makroćelija, svaki ih proizvođač drugačije naziva, pa su za Xilinx to Slices (kriške) za Alteru - LogicElements (logički elementi). Ovi blokovi su relativno jednostavni, mogu djelovati kao nekoliko logičkih elemenata, biti mala tablica pretraživanja (LUT), sadržavati gotov zbrajalo, množitelj, blok za digitalnu obradu signala (DSP), općenito sve što proizvođač ima na umu . Korisnik te blokove može rasporediti i konfigurirati kako želi, implementirajući tako prilično složene digitalne sklopove. Možete implementirati čak i mikrokontroler na FPGA, na primjer implementirajući isti Arduino ili procesor vaše vlastite arhitekture, na primjer, ne registarski procesor već procesor skupa; možete čak implementirati svoj vlastiti FPGA na FPGA!

Među dostupnim proračunskim FPGA-ima mogu se identificirati dva glavna proizvođača: Altera i Xilinx; s njihovim proizvodima možete započeti svoje putovanje svladavanja ovih tehnologija. Po mom mišljenju, bolje je odabrati Altera čipove, budući da se njihovo dizajnersko okruženje stalno ažurira, a ako odaberete jedan popularni Xilinx XC3S500E čip, morat ćete se zadovoljiti zastarjelim ISE 14.7 okruženjem (iako i ono ima svojih prednosti) .

U stranoj literaturi se mogu naći kratice za FPGA: FPGA i CPLD. CPLD (Complex Programmable Logic Device) - čipovi sa mali broj makroćelije, specijalizirani blokovi i niska potrošnja energije. Za ovu vrstu čipa ne može se sintetizirati veliki projekt, ali i oni se koriste u praksi, primjerice rijedak mikrokontroler ima recimo 300 nogu. Takvi se čipovi često koriste kao sustavi sučelja, predprocesori i I/O ekspanderi. FPGA (Field-Programmable Gate Array) je terenski programibilni niz vrata (FPGA), mnogo snažniji čipovi u usporedbi s CPLD-om, ali troše više energije i koštaju znatno više. Kako bi se smanjio trošak površine matrice, FPGA čipovi mogu sadržavati gotove funkcije, kao što su jedinice za digitalnu obradu signala (DSP jedinice), ugrađeni procesori i ugrađena memorija. FPGA se naširoko koriste za testiranje i provjeru dizajna, u takozvanoj prethodnoj silicijskoj validaciji, čime se smanjuju troškovi i vrijeme prije izdavanja proizvoda. FPGA čipovi mogu se rekonfigurirati gotovo u bilo kojem trenutku; trenutno su u tijeku razvoji, na primjer u Intelu, za kombiniranje arhitekture konvencionalnog procesora i FPGA čipa. Xilinx već ima takva rješenja – Zynq, ali o njima za sada nećemo.

Razgovor će biti o više jednostavne stvari, pogotovo otkad sam dobio razvojni komplet: Cyclone IV 4 FPGA Core Board i Altera USB Blaster Downloader PLD Development kit za 35 dolara, kupljen na AliExpressu.

1 Demo ploča Cyclone IV 4 FPGA Core Board, kratak opis

Riža. 1 - Demo plaćanje Cyclone IV 4 FPGA Core Board

Ploča (slika 1) ima instaliran čip EP4CE6E22C8N, njegove karakteristike:

Vrsta izvora Kratki opis Količina
Logički elementi (Les) Broj logičkih blokova - ćelija, glavna karakteristika po kojoj možemo usporediti "snagu" čipova; svaka sintetizirana logika koristit će te blokove 6,272
Ugrađena memorija (Kbits) Ugrađena memorija nam još nije bitna karakteristika 270
Ugrađeni množitelji 18x18 Ugrađeni hardverski množitelji, vrlo važan parametar u digitalnoj obradi signala, puna snaga FPGA-a otkriva se kada nekoliko množitelja radi paralelno 15
PLL-ovi opće namjene Čvorovi fazno zaključane petlje, koji još nisu važna karakteristika, pojednostavljuju sinkronizaciju uređaja koji rade na različite frekvencije 2
Globalne mreže satova Broj frekvencijskih domena još nije važna karakteristika 10
Korisničke I/O banke Broj zasebnih korisničkih I/O banaka još nije važna karakteristika 8
Maksimalni korisnički I/O Broj prilagođenih I/O pinova, možemo spojiti bilo koje uređaje, poput Arduina 91

Ploča ima:

  1. Flash memorija – Kada se uključi napajanje, FPGA će biti konfiguriran za implementaciju u flash memoriju. Možete sintetizirati svoj projekt i pisati u ovaj flash
  2. Kvarc od 25 MHz je generator referentne taktne frekvencije, na toj će frekvenciji raditi svi naši projekti, naš FPGA može podržati do 10 takvih kanala.
  3. LED diode – 10, gumbi – 2.
  4. I/O pinovi 61 + 2 uzemljenja, 1 nije spojen. Možete spojiti različite uređaje. DAC-ADC, akcelerometri i žiroskopi, simbolički i grafički prikazi, baš kao i Arduino.
  5. Napajanje preko USB-a, ili vanjskog 5V.

Komplet također uključuje JTAG programator, Altera USB Blaster.

2. Okruženje Quartus II i naš prvi projekt

Za rad s ovim FPGA moramo preuzeti službeno razvojno okruženje - Web izdanje Quartus II, slobodno je. Idemo na službenu web stranicu http://dl.altera.com/15.0/?edition=web, u vrijeme pisanja verzija 15.0 je najnovija, ako je novija, preuzmite je.

Odaberite:


Riža. 2 - odaberite potrebne Altera proizvode

I kliknite gumb za preuzimanje (Preuzmi odabrane datoteke). Nakon čega će se od nas tražiti da se registriramo, registriramo, preuzmemo i instaliramo.

Kreirajmo naš prvi projekt.

Pokrenite Quartus, odaberite glavni izbornik File -> New Project Wizard, pojavit će se uvodni prozor, kliknite Next. Zatim trebate navesti direktorij za projekt i njegov naziv, treće polje je naziv gornjeg modula, kasnije ćete vidjeti što je to. Odaberemo mapu u koju želimo spremiti projekt i smislimo naziv, imam test1.


Riža. 3 - novi prozor čarobnjaka za projekt

Kliknite Next, postavlja nam se pitanje je li to prazan projekt ili predložak projekta. Ostavite prazno, sljedeći. Zatim se od nas traži da dodamo postojeće datoteke, nemamo ništa, jer tek počinjemo naše putovanje, kliknite dalje.

Zatim moramo odabrati svoj čip; to možete učiniti bilo kada. Odaberemo kao na slici, Family – Cyclone IV E, određeni uređaj odabran u “Dostupni uređaji” i odaberemo naš EP4CE6E22C8N čip, on je na samom početku. Ako imaš drugu, nađi svoju, to je važno. Kliknite dalje.


Riža. 4 -

Pojavit će se prozor - odabir alata za dizajn, otklanjanje pogrešaka, preskočite ovo za sada, kliknite dalje i zatim završite.


Riža. 5 - Prozor "Assinments-Deice"

U prozoru odaberite stavku "Neiskorištene igle". Ova postavka određuje što će se dogoditi s nepovezanim pinovima. Ovo može biti važno; malo je vjerojatno da ćete u svom projektu koristiti sve pinove, a oni koji nisu spojeni mogu zapravo biti spojeni na uzemljenje ili napajanje (pa, nikad se ne zna tko je spojio ploču). Ako nanesete jedinicu na uzemljenu iglu, ona će izgorjeti, pa to morate pažljivo pratiti.

Prema zadanim postavkama, neiskorišteni pinovi "Kao ulazni trostruki status sa slabim povlačenjem" (ulazni pinovi su u trećem stanju s visokom impedancijom, sa slabim povlačenjem snage), možete ostaviti ili odabrati "Kao ulaz s trostrukim stanjem ”. Možete pročitati o pull-up otporniku na Wikipediji https://ru.wikipedia.org/wiki/Pull-up_resistor. U digitalna tehnologija mogu postojati tri stanja, logička jedinica je napon napajanja ili visoka razina, logička nula je kada je pin spojen na masu ili niska razina i stanje visoke impedancije. Stanje visoke impedancije- ovo je kada pin ima vrlo visok otpor i praktički ne utječe na žicu na koju je spojen; ovo je stanje potrebno, na primjer, pri organiziranju autobusa, kada je mnogo uređaja spojeno na jednu žicu, a ne aktivni uređaji ne ometati rad.


Riža. 6 - Prozor "Opcije uređaja i pinova", neiskorišteni pinovi

Sve to povezujemo u “Uređivaču zadataka”


Riža. 7 - Pozovite "Uređivač zadataka" iz izbornika ili ploče

U prozoru koji se pojavi, učinite to kao ja, ili, ako je apsolutno točno, onda prema dijagramu vaše ploče.


Riža. 8 - Urednik dodjele

U stupac “Prima” unesite naziv ulaza ili izlaza. U stupcu "Naziv zadatka" odaberite "Lokacija". U stupcu "Vrijednost" nalazi se broj pina mikro kruga, prema dijagramu ploče (imam brojeve pinova napisane izravno na ploči).

Također morate odrediti što učiniti s tipkama koje su jednom nogom spojene na masu, a drugom na ulaz čipa. Kada pritisnete nogu, bit će niska razina, ali bez pritiska, nejasno je, noga čipa će samo visjeti u zraku, što je vrlo loše. Morate spojiti ulaz čipa na napajanje ili s otpornikom na ploči ili na elegantniji način u "Assignments Editor". U stupcu "Naziv dodjele" odaberite "Weak Pull Up resistor" za skupinu ključeva* (skupina je označena zvjezdicom).


Riža. 9 - Urednik zadataka

Zatim morate stvoriti opis modula najviše razine, koji će raditi izravno s nogama čipa; svi ostali moduli će raditi samo s njim. U glavnom izborniku kliknite Novo i odaberite "Datoteke dizajna-> Blok dijagram/shematska datoteka".


Riža. 10 - Dijaloški okvir za nove datoteke

U prozoru koji se otvori odaberite “Pin Tool” i postavite ulaz i izlaz (ulazni i izlazni pinovi) na dijagram. Ulaz preimenujemo u ključ, izlaz u led i spojimo ih vodičem. Spremite i kliknite "Pokreni kompilaciju".


Riža. 11 - Prozor grafički opis, Alat za pričvršćivanje i Početak kompilacije su istaknuti

Nakon kompilacije dobili smo upozorenja, za sada ih ignoriramo, odnose se na nepovezane pinove, nedostatak signal sata i opise za "Timing Analyzer".

Povezujemo demo ploču i programator, odabiremo alat "Programer". Prozor bi trebao pisati "USB-Blaster", ako ne, kliknite "Hardware Setup" i pokušajte shvatiti zašto ne, najvjerojatnije upravljački programi nisu instalirani, pogledajte Windows uređaje, potražite neidentificirane uređaje, možda postoji problem s kabelom. Ako je sve u redu, kliknite na "Auto Detect" i odaberite naš čip.


Riža. 12 - Prozor programatora

Klik dvostruki klik mišem u polju "Datoteka" i odaberite datoteku za pisanje u FPGA (nalazi se u mapi output_files našeg projekta), označite polje "Program / Konfiguriraj" i pritisnite gumb "Start".


Riža. 13 - Prozor programatora, naš čip je već konfiguriran

Čestitamo na vašoj prvoj konfiguraciji FPGA! Dioda D1 bi trebala zasvijetliti, kad pritisnete tipku1 trebala bi se ugasiti (pošto tipka zatvara nogu na masu), onda ćemo nešto poduzeti po tom pitanju)

Programabilni logički integrirani krug (FPGA, Engleski programabilni logički uređaj, PLD) je elektronička komponenta koja se koristi za izradu digitalnih integriranih sklopova. Za razliku od konvencionalnih digitalnih mikrosklopova, logika rada FPGA nije određena tijekom proizvodnje, već je specificirana programiranjem (dizajnom). Za programiranje, programeri i okruženja za otklanjanje pogrešaka koriste se za postavljanje željene strukture digitalnog uređaja u obliku dijagrama strujnog kruga ili programa u posebnim jezicima za opis hardvera Verilog, VHDL, AHDL, itd. Alternativa FPGA su: osnovna matrica kristali koji zahtijevaju tvornicu proces proizvodnje za programiranje; ASIC - specijalizirani prilagođeni LSI (veliki integrirani krugovi), koji su u maloj i pojedinačnoj proizvodnji znatno skuplji; specijalizirana računala, procesori (kao što su procesori digitalnih signala) ili mikrokontroleri koji, zbog softverska metoda implementacije algoritama su sporije od FPGA. Neki proizvođači FPGA nude meki procesori za njihove FPGA, koji se mogu prilagoditi konkretan zadatak,a zatim ugrađen u FPGA. To osigurava smanjenje prostora na tiskanoj ploči i pojednostavljuje dizajn samog FPGA.

Programabilni logički integrirani sklopovi (FPGA) pojavili su se prije desetljeće i pol kao alternativa programabilnim sklopovima vrata (PLA). FPGA se od najnovijih razlikuju i po arhitekturi i po tehnologiji proizvodnje.

PLM je matrica višeulaznih (nekoliko desetaka ulaza) logičkih elemenata s flip-flopovima, u kojoj se skakačima programiraju sastavnice jedinica disjunktivnih normalnih oblika funkcija tih elemenata. U početku su skakači napravljeni u obliku spojenih tankih vodiča. Sada su premosnici napravljeni u obliku MOSFET-a s pomičnom kapijom, kao u električno reprogramabilnom ROM-u, tj. PLM-ovi se proizvode pomoću tehnologije flash memorije. Veliki PLD-ovi (CPLD-ovi) razlikuju se samo po tome što je nekoliko PLD-ova sastavljeno na jednom čipu i ujedinjeno programabilnim poljem veza.

FPGA je matrica niskoinputnih (od dva do pet ulaza) logičkih elemenata, flip-flopova, dijelova komunikacijskih linija povezanih kratkospojnicima iz tranzistori s efektom polja. Sudeći po englesko ime- Field Programmable Gate Array (FPGA) - FPGA se programiraju promjenom razine električnog polja (polja) u vratima ovih tranzistora. Za razliku od npr. LPGA - Laser Programmable Gate Array. Vrata svih tranzistora s efektom polja za "programiranje" spojena su na izlaze okidača jednog dugog registra posmaka, koji se puni kada se FPGA programira. Neki od odjeljaka ovog registra mogu poslužiti i kao ROM ćelije.

Firmware se obično pohranjuje u ROM-u pored FPGA i nakon uključivanja ili signala resetiranja, automatski se zapisuje u FPGA programski pomakni registar. Taj se proces naziva FPGA konfiguracija. Budući da su osnova FPGA-a flip-flopovi koji pohranjuju firmware, FPGA-i se proizvode pomoću tehnologije statičkih RAM čipova.

U usporedbi s CPLD-ovima, prednosti FPGA-a su, prvo, u neograničenom broju reprogramiranja, drugo, u logičkom kapacitetu, uključujući specifičnu kapacitivnost postotaka vrata, i treće, u niskoj potrošnji energije.

U pravilu, FPGA imaju dva do tri reda veličine veći kapacitet u broju ekvivalentnih logičkih vrata nego CPLD i, poput statičkog RAM-a, ne troše gotovo nikakvu energiju u odsutnosti prebacivanja. Osim toga, FPGA imaju red veličine veću pouzdanost (niža stopa kvarova) od CPLD-ova.

Nedostaci uključuju potrebu za vanjskim firmware ROM-om i generatorom takta. Ali 8-pinski ROM zauzima znatno manje prostora na ploči od samog FPGA sa stotinama pinova. Isto vrijedi i za generator sinkronizacije. programiranje integrirani elektronički

Korisnici imaju mnogo dvojbi oko zaštite projekta od kopiranja. Doista, FPGA firmware je pohranjen u vanjskom ROM-u, čiji se sadržaj jednostavno kopira. Ali promjena ili dešifriranje firmvera, na primjer, kako bi se sakrilo autorstvo ili obnovio sklop, gotovo je nemoguće, budući da je semantika bitova u datoteci firmvera tajna tvrtke, a nepažljivo mijenjanje može oštetiti FPGA. Ako je potrebna zaštita, program se učitava pomoću vanjskog CPLD-a, stroj u kojem osigurava zaštitu za projekt. Nove generacije FPGA omogućuju šifriranje firmvera, na primjer, korištenjem ugrađenog DES enkriptora, osiguravajući da se ključ pohranjuje pomoću baterije.

Programabilni logički integrirani sklopovi (FPGA) jedan su od elemenata digitalnih sklopova koji najviše obećavaju. FPGA je čip na kojem se nalazi veliki broj jednostavnih logičkih elemenata. U početku ti elementi nisu međusobno povezani. Povezivanje elemenata (pretvaranje različitih elemenata u električni dijagram) provodi se pomoću elektroničkih ključeva smještenih u istom kristalu. Elektronički ključevi uspio posebna memorija, u čije ćelije se upisuje konfiguracijski kod digitalni sklop. Dakle, nakon upisa u FPGA memoriju određene kodove, možete sastaviti digitalni uređaj bilo kojeg stupnja složenosti (ovo ovisi o broju elemenata na čipu i parametrima FPGA). Za razliku od mikroprocesora, FPGA mogu organizirati algoritme digitalne obrade na razini hardvera (sklopa). Istodobno se naglo povećava brzina digitalne obrade. Prednosti tehnologije dizajna uređaja temeljene na FPGA su:

  • · minimalno vrijeme razvoja sklopa (samo trebate unijeti konfiguracijski kod u FPGA memoriju);
  • · za razliku od konvencionalnih elemenata digitalnih sklopova, nema potrebe za razvojem i proizvodnjom složenih tiskane ploče;
  • · brza konverzija jedne konfiguracije digitalnog sklopa u drugu (zamjena koda konfiguracije sklopa u memoriji);
  • · za izradu uređaja temeljenih na FPGA nije potrebna složena tehnološka proizvodnja. FPGA se konfigurira pomoću osobnog računala na stolu programera. Zato se ova tehnologija ponekad naziva "tvornica na stolu".

Tipične FPGA primjene: digitalna obrada signali, elektronika po narudžbi, sustavi za prikupljanje podataka, sustavi upravljanja, telekomunikacijska oprema, sistemska oprema bežična komunikacija, računalne opreme Opća namjena.

Nastojeći postići visoke tehničke karakteristike i potrošačke kvalitete svojih proizvoda, programeri elektronički uređaji koristiti specijalizirane integrirane sklopove (SIS). Njihova uporaba daje sljedeće prednosti:

  • - smanjenje dimenzija uređaja. Korištenje FPGA omogućuje smanjenje broja IC-ova, smanjenje veličine tiskanih pločica i time smanjenje dimenzija cijelog uređaja;
  • - poboljšanje tehničkih karakteristika. Smanjenje broja IC-ova dovodi do povećanja performansi sustava i smanjene potrošnje energije;
  • - povećanje pouzdanosti. Budući da je vjerojatnost greške ili kvara uređaja izravno proporcionalna broju IC-ova, pouzdanost uređaja koji koriste FPIC-ove značajno se povećava;
  • - osiguranje razvojne zaštite. Budući da je puno teže (a ponekad i gotovo nemoguće) kopirati uređaj koji sadrži FPIC nego uređaj koji koristi standardne komponente, korištenje FPIC-a omogućuje osiguravanje autorskih prava programera;
  • - povećanje fleksibilnosti modifikacije. Budući da modifikacija SIS-a u pravilu ne zahtijeva obradu drugih komponenti, preusmjeravanje tiskanih pločica i sl., mogućnosti otklanjanja pogrešaka i modificiranja uređaja su značajno povećane.

U većini slučajeva, u literaturi se razlikuju sljedeće klase ASIC-ova:

  • - IC-ovi koje može programirati korisnik - FPGA (PLD).
  • - ICs koji se mogu programirati maskom - osnovni matrični kristali (BMK) ili nizovi vrata (Gate Arrays).
  • - IC na standardnim ćelijama (Standardne ćelije).
  • - potpuno prilagođeni IC-ovi (Full Custom).

FPGA i BMK spadaju u kategoriju poluprilagođenih IC-ova, budući da se topologija unutar kruga dijelom formira tijekom proizvodnje samih IC-ova, a dijelom programira u skladu sa zahtjevima potrošača.

Ostatak SPIS-a izrađen je po narudžbi, jer Cjelokupna topologija sklopa, uzimajući u obzir potrebne funkcije, razvija se tijekom proizvodnje čipa.

Klasifikacija FPGA je prikazana na slici, iz koje možete vidjeti koji smjer i dio FPGA zauzima FPGA:

SPIS klasifikacija

Jeste li čekali znak? Evo ga!

Godinama sam oklijevao početi programirati FPGA jer je bilo teško, skupo i bolno (kako mi se činilo). Ali dobro je imati prijatelje koji ti pomažu napraviti prvi korak. I sad mi nije jasno jedno - ZAŠTO SAM TAKO DUGO ČEKAO?

Sada ću i tebi pomoći da napraviš prvi korak!

Zašto mi to treba?

Jeste li umorni od stalnog čitanja dokumenata na svom MK ili držanja hrpe informacija u glavi. Sve ste prepisali u asm, ali brzina i dalje nije dovoljna. Spojili ste dva vanjska uređaja na svoj MK, spojite treći, ali ponestalo vam je prekida, oni moduli koji su već radili prestaju raditi. Uzmeš drugi MK, jači iz iste linije, ali opet manuali, registri zastava, bitovi... kvragu. Promijenite platformu: prebacite se na drugi MK i odbacite svoje znanje o prethodnoj platformi. Bez obzira što radite, teško je. Pronađete popularnu platformu u kojoj možete lako sastaviti projekt od komponenti, ali još uvijek ne možete preskočiti hardverska ograničenja ovog MK-a... Negdje na rubu svijesti ponekad vam se pojavi misao da na FPGA-u ovaj sigurno bi radio brzo i paralelno, što je to "točno problem koji treba riješiti, molim", ali ja sam prestar/glup/zauzet/itd da bih mogao/počeo ovo raditi.

Želite li konačno disati slobodno? Samo naprijed!

Radost razvoja na FPGA

Imao sam težak dan na poslu. S jednog sam posla došao na drugi, pa na daču, navečer sam radio zadaću, zadaću, pa obiteljski film i tek u 23 sata sam bio potpuno slobodan! Reći da sam bio umoran je ne reći ništa. Ali u ovom stanju, sjeo sam za prijenosno računalo s čvrstim ciljem: napraviti generator kvadratnog vala od 440 Hz. Prošlo je 20 minuta i već sam ga čuo u slušalicama. Nisam mogao vjerovati svojim ušima! Trebalo mi je još 15 minuta da napravim PWM i promijenim glasnoću. Do tada sam imao samo FPGA ploču oko tjedan dana, a prije toga sam pročitao samo nekoliko knjiga o Verilogu.

Te sam večeri shvatio: EVO GA! Ovo je platforma na kojoj mogu brzo i jednostavno pretvoriti svoje misli u hardver koji stvarno radi!

Zašto je to?

Opisat ću prednosti koje postoje u proučavanju i korištenju FPGA, iako ih svi već znaju:
  • Univerzalnost znanja- prilikom promjene modela MK potrebno je pročitati dokumentaciju. Kada mijenjate proizvođača MK, morate pročitati dokumentaciju. Morate stalno čitati dokumente, stalno držati puno informacija u glavi. Kada razvijate na FPGA, ako poznajete Verilog ili VHDL, tada ne samo da možete programirati bilo koji FPGA iz linije jednog proizvođača, već i, ako želite, prebaciti se na drugi (Altera, Xilinx). Iako će biti trenutaka svladavanja drugačijeg razvojnog okruženja i suptilnih problema s hardverom, sama bit pristupa projektiranju uređaja u HDL-u neće se time promijeniti.
  • Od ideje do hardvera- prilikom izrade projekta, ako vam nedostaje jedan mikrokontroler, morate odabrati drugi. U načelu, možete napraviti pretpostavke o tome hoće li se ovaj MK nositi ili neće nositi s projektom. Ili postoji određeni MK i pokušavate uklopiti projekt u njega. Najčešće je to slučaj. Malo me to podsjeća na djedov pristup, koji od onoga što ima u šupi pravi ljestve. Iako možete dizajnirati stubište, kupiti daske koje će odgovarati... Od ideje do hardvera, a ne obrnuto.
  • Jednostavnost korištenja tuđih razvoja- možete uzeti tuđi modul i primijeniti ga u svom projektu. Iz koda možete razumjeti kako to radi. Čak i ako je za Xilinx, a vi to radite pod alterom. Ponekad ovo ne funkcionira dobro, ali je lakše nego, na primjer, dodavanje binarnih biblioteka u C++/Qt projekt
  • Blokirajte neovisnost. Blokovi u HDL-u su kao čiste funkcije u jeziku. Ovisi samo o ulaznim signalima. Razvijeni i otklonjeni modul nastavit će ispravno raditi, bez obzira na to kako projekt raste. Ništa izvana neće utjecati na njegov ispravan rad iznutra. I općenito, možete zaboraviti kako to radi - to je crna kutija. Osim toga, blokovi rade paralelno.

Problem izbora

Puno je pitanja što odabrati: Altera/Xilinx, Verilog/VHDL, koju debug ploču uzeti. Ali prvo o svemu.

Proizvođač

izabrao sam Altera. Zašto? Eto, ovako smo odlučili frend i ja, iako mi je ljepši naziv Xilinx. ALI. Ako sada ne možete izabrati, ja ću to učiniti umjesto vas. Trebate Alteru! Zašto? ne znam Sada je važnije napraviti korak: napraviti izbor. Odabrala sam Alteru i za sada nisam požalila.



Jezik

Uzmimo ga Verilog - jer… Pa, razumijete.

Razvojna ploča

Najviše vremena je oduzeo odabir razvojne ploče. Jasno je da se ploče razlikuju po ugrađenom FPGA čipu. I FPGA čipovi se međusobno razlikuju po broju elemenata. Ali uopće nije jasno koliko će ih biti potrebno za vaše probne projekte. Stoga sam većinu svog vremena proveo tražeći sve vrste FPGA projekata kako bih saznao koliko troše FPGA resursa.

U obitelji Altera za razumne novce možemo kupiti ploče s CPLD MAX II s 240, 570 i 1270 elemenata ili starije FPGA čipove poput Cyclone 1, 2, 3, 4 s do 10.000 i više ćelija. Kako odabrati?

Čak i na temelju 240 ćelija, projekt Mars Rover radi samo ogroman broj projekata. Toplo preporučam da ga pročitate kako biste dobili okvirnu ideju o složenosti projekata koji mogu stati u 240 ćelija. S druge strane, postoje projekti koji su potpuno programirani za hardversku kopiju određenog računala, uključujući procesor i svu logiku oko njega (NES, Speccy, Orion, YuT-88 itd.). Za to je već potrebno pet, deset ili više tisuća stanica. Osim toga, ove ploče sadrže dodatne vanjske uređaje.

Stoga bih savjetovao uzimanje nešto između 240 i 10 000 stanica, a prednost bi trebalo imati veće ovisno o raspoloživim sredstvima. Na ploči za otklanjanje pogrešaka dodatne ćelije nisu velika stvar, ali ako ih nema dovoljno, ne možete ništa učiniti. Zatim, kada se uređaj otkloni, postat će jasno koliko je ćelija potrebno, kupiti potrebnu količinu, bez nepotrebnog "body kita", jeftinije i ostaviti ga u gotovom uređaju.

Ono što stvarno razlikuje MAX od Cyclonesa, osim broja ćelija, je:
1) MAX serija nema PLL unutra. Svaka razvojna ploča ima oscilator, obično 50 MHz. To će biti dovoljno za većinu projekata. Sva sinkronizacija će se dogoditi dijeljenjem 50 MHz s nekom vrijednošću. Ili, možete uzeti vanjski generator i spojiti ga na zasebni FPGA ulaz. Što ako trebate frekvenciju višu od 50 MHz? Nisam uspio odmah pronaći oscilatore iznad 50 MHz. Ali tu u pomoć dolazi PLL koji je ugrađen u Cyclone. Na njemu možete pomnožiti frekvenciju, na primjer, do 100 MHz.
2) Cyclone serija ima ugrađene hardverske multiplikacijske jedinice. Njihov broj ovisi o konkretnom modelu - ovdje još uvijek možete "pogledati upute" kako biste saznali koliko. Ako planirate napraviti neku vrstu DSP-a, onda će vam dobro doći: spasit će ćelije i povećati brzinu. S druge strane, ako nema množitelja, oni se mogu sintetizirati, ali mali FPGA možda neće imati dovoljno resursa za to.

U svim ostalim aspektima, imam kriterij "sposoban/nesposoban". Otklanjanje pogrešaka na ploči koja je očito veća nego što je potrebno, nakon čega slijedi punjenje minimalno potrebnim za to.

Koliko novca je potrebno?


Programer
Vjerujem da nemam vremena za lemljenje programera na veliko.

300 rubalja. Ja sam svoj nabavio na eBayu, ovako izgleda:

Razvojna ploča
Izbor je širok, ovisno o količini novca.

Prva razina 350 - 550 rubalja. To su ploče temeljene na MAX II (ili ćelijama). Može biti prikladno za početno upoznavanje i daljnju integraciju u krajnje uređaje. Ploča ima generator, par tipki, par LED dioda, a preostalih 80 pinova po vlastitom nahođenju.

jedinica za napajanje
Mora se imati, ali nije uvijek uključeno. Trebat će vam napajanje od 5 volti i struja od 2 A.

Prosječna razina od 900 do 1500 rubalja. To su ploče Cyclone 1, 2, 3, 4, koje se uglavnom razlikuju po broju ćelija.
Označavaju se otprilike ovako:
E.P. 2 C 5 T144 - Ciklon 2 približno 5k stanica
E.P. 4 n.e. 6 E22C8N - Ciklon 4 približno 6k stanica
E.P. 2 C 8 Q208C8N - Ciklon 2 približno 8k ćelija

Možda ćete primijetiti da Cyclone 3 možda ima više stanica nego Cyclone 4.

Evo nekoliko opcija:

835 rubalja.
ALTERA FPGA CycloneII EP2C5T144 Minimalna sistemska ploča za dobro učenje

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

1265 rubalja
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA evaluacijska razvojna osnovna ploča

Napredne ploče . To su ploče na koje su ugrađeni dodatni moduli (UTP, USB, AUDIO), konektori (SD, VGA), tipke, prekidači, LED diode, sedmosegmentni indikatori itd. I jedno i drugo može ići osnovna ploča, a kartice za proširenje mogu se priključiti zasebno.

Imam sljedeći set koji radi - ploča + ploča za proširenje:
Altrea EP4CE10E22 FPGA CORE ploča+ ploča uređaja USB/zvuk/Ethernet/SD kartica/VGA
2760 rubalja

Ovdje je glavna ploča. Ima 2 LED diode, 2 tipke, 4 prekidača, sedmosegmentni indikator i RAM čip.

Ploča za proširenje. Sadrži SD, VGA, kao i USB kontrolere (High Speed ​​​​USB2.0 čip: CY7C68013A), AUDIO (zvučna kartica do 96kHz/32bit ADC/DAC: WM8731S), UTP (100M Ethernet sučelje: DM9000A):

Ove ploče se jednostavno stavljaju jedna u drugu, ali to još uvijek imam u ladici. Za svoje rukotvorine imam matičnu ploču na koju se spajam kabelom koji dolazi s kompletom. Također u uključeno Napajanje od 5 volti.

Najbolji članci na temu