Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Kreiranje logičkih kola na FPGA altera. Plis - moji prvi koraci

Kreiranje logičkih kola na FPGA altera. Plis - moji prvi koraci

6. PROGRAMIRAJUĆI LOGIČKI INTEGRISANI KOLO (FPGA)

Programabilni logički uređaj (PLD) je elektronska komponenta

koristi se za kreiranje digitalnih integrisanih kola. Za razliku od konvencionalnih digitalnih mikrokola, logika rada FPGA nije određena tokom proizvodnje, već se postavlja programiranjem (dizajnom).

Istorija razvoja FPGA počinje sa Programabilnom memorijom samo za čitanje (PROM). U početku su se PROM-ovi koristili isključivo za pohranjivanje podataka, kasnije su se počeli koristiti za implementaciju logičkih funkcija. Za implementaciju sistema Bulovih funkcija sa velikim brojem varijabli razvijeni su programabilni logički nizovi PLM (PLA - Programmable Logic Array) - najtradicionalniji tip FPGA, koji ima programabilne matrice "AND" i "OR". Primjeri takvih FPGA su domaća kola K556PT1, PT2, PT21.

Konstrukcija PLA bazira se na činjenici da se bilo koja funkcija kombinacije može predstaviti kao logički zbir (operacija ILI) logičkih proizvoda (operacije I). Kolo koje implementira kombinacijsku funkciju prikazano je na Sl. 6.1.

Rice. 6.1. PLA konstrukcijski dijagram

Nedostatak ove arhitekture je slaba upotreba resursa programabilne matrice "ILI", stoga su mikro kola izgrađena prema arhitekturi programabilne matrične logike (PAL - Programmable Array Logic) dalje razvijana - to su FPGA s programabilnom matricom "AND" i fiksnu matricu "OR" (sl. 6.2). Ova klasa uključuje većinu modernih FPGA sa malim stepenom integracije. Kao primjere možemo navesti domaće IC-ove KM1556KhP4, KhP6, KhP8, KhL8, rane razvojne (sredina-kasne 1980-te) FPGA kompanije INTEL, ALTERA, AMD, LATTICE, itd.

Rice. 6.2. PAL konstrukcijski dijagram

Poboljšanja u FPGA dovela su do pojave programabilne makroologije. Oni sadrže jednu programabilnu matricu "AND-NE" ili "OR-NE", ali su zbog brojnih inverznih povratnih informacija u stanju formirati složene logičke funkcije. Ova klasa uključuje, na primjer, PLHS501 i PLHS502 iz SIGNETICS-a, koji imaju matricu "AND-NOT", kao i XL78C800 kolo iz EXEL-a, zasnovano na matrici "ILI-NE".

Gore navedene FPGA arhitekture sadrže mali broj ćelija. Do danas su moralno zastarjeli i koriste se za implementaciju relativno jednostavnih uređaja za koje ne postoje gotove IC srednje integracije. Neprikladni su za implementaciju algoritama digitalne obrade signala.

Dalje unapređenje proizvodne tehnologije dovelo je do mogućnosti implementacije nekoliko PAL-ova na jednom čipu, ujedinjenih programabilnim vezama. Takve arhitekture se nazivaju složena (kompleksna) programabilna logika

PROGRAMABILNA LOGIKA

INTEGRALNI KRUGOVI

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

Rice. 6.3. CPLD makroćelijsko kolo

Mikrokrugovi ovog tipa mogu se koristiti za kreiranje nestandardnih ALU-ova, dekodera, multipleksora itd. takvi uređaji gdje su potrebne logičke funkcije mnogih varijabli i malog broja okidača. FPGA tipa CPLD, po pravilu, imaju visok stepen integracije (do 10.000 ekvivalentnih kapija, do 256 makroćelija).

Ova klasa uključuje ALTERA MAX familiju FPGA, XC9500 i CoolRunner porodice XILINX, kao i veliki broj mikro krugova drugih proizvođača (Atmel, Vantis, Lucent, itd.).

Drugi tip FPGA arhitekture je Field Programmable Gate Array Logic (FPGA), koji se sastoji od konfigurabilnih logičkih blokova (CLB) i preklopnih staza – programabilnih matrica povezivanja (slika 6.4). Konfigurabilni logički blokovi takvih FPGA sastoje se od jedne ili nekoliko relativno jednostavnih logičkih kapija zasnovanih na tabeli za pretragu (LUT), programabilnih multipleksora, okidača i kontrolnih kola. Tipični za FPGA arhitekture su ulazno/izlazni blokovi (IOB),

omogućavajući implementaciju dvosmjernog I/O, treće stanje, itd.

Rice. 6.4. FPGA struktura

Takvih jednostavnih elemenata može biti dosta, na primjer, u modernim FPGA-ima s kapacitetom od 1 milijun kapija i više, broj logičkih elemenata doseže nekoliko desetina hiljada. Zbog tako velikog broja logičkih elemenata, oni sadrže značajan broj okidača, a također neke FPGA porodice imaju ugrađene rekonfigurabilne memorijske module. Ovo čini FPGA ove arhitekture vrlo pogodnim sredstvom za implementaciju algoritama za digitalnu obradu signala, čije su glavne operacije množenje, množenje konstantom, zbrajanje i kašnjenje signala.

Klasa FPGA uključuje FPGA porodice Spartan, Virtex firme

XILINX; Fusion, M1 i M7 Fusion itd. iz ACTEL-a, kao i Cyclone, Stratix porodice iz ALTERA, FPGA iz Atmela i Vantis.

6.1. Karakteristike FPGA programiranja

Konfiguracijski podaci za CPLD pohranjeni su u nepromjenjivoj memoriji unutar FPGA, tako da nema potrebe za njima.

DIGITALNI UREĐAJI I MIKROPROCESORI. DIO 2

PROGRAMABILNA LOGIKA

INTEGRALNI KRUGOVI

reprogramirati kada je uključen. FPGA konfiguracijski program je pohranjen u distribuiranom nestabilnom RAM-u mikrokola, koji se briše kada se napajanje isključi, stoga se konfiguracijska datoteka pohranjuje u eksternu memoriju, a kada je napajanje uključeno, konfiguracijska datoteka se učitava u FPGA memorija. Za pohranjivanje konfiguracijske datoteke, u pravilu se koristi programabilni ROM.

(EPRM, EEPROM ili FLASH).

Prilikom rada u takvim sistemima, konfiguracija kola koje se mora dobiti "unutar" FPGA ili algoritam za njegov rad specificira se ili u tekstualnom jeziku opisa: VDHL (Veliko brza integrisana kolaH ardwareD escriptionL anguage - jezik za opisivanje hardvera brzih integrisanih kola), Verilog, ADHL (ALteraH ardwareD escriptionL anguage), koji podseća na programski jezik visokog nivoa (na primer, C); bilo u grafičkom uređivaču (u obliku električnog dijagrama); ili koristeći dijagrame toka ili grafikone stanja. Nadalje, sve faze rada, uključujući programiranje ili učitavanje FPGA, izvodi se pomoću automatiziranog sistema za projektovanje. Takvi sistemi se proizvode kao i svi vodeći proizvođači FPGA.

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

7. DIGITALNO-ANALOGNI I

7.1 Principi konstrukcije digitalno-analogni pretvarači

Digitalno-analogni pretvarač (DAC) je uređaj za pretvaranje numeričkih kodova u njihove ekvivalentne vrijednosti napona ili struje. DAC kola se grade pomoću digitalnih i analognih elemenata (operaciona pojačala, prekidači, otporne matrice, itd.). Većina DAC-ova u obliku integrisanih kola su paralelni uređaji. Njihov rad se zasniva na zbrajanju struja, čije su vrijednosti proporcionalne težinskim koeficijentima bitova ulaznog koda.

Šema 4-bitnog DAC-a je prikazana na Sl. 7.1.

Rice. 7.1. Princip izgradnje DAC kola

Sadrži otpornu matricu, izvor referentnog napona U R, operacioni pojačavač i prekidače S 0 - S 3.

Otpori otpornika matrice su takvi da struje koje teku kroz otpornike odgovaraju težinskim koeficijentima cifara 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 zatvorena za zajedničku žicu.

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

struje izvedene na operacionom pojačalu sa paralelnom povratnom spregom napona. Čvor za sumiranje ima praktički nulu

DIGITALNI UREĐAJI I MIKROPROCESORI. DIO 2

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI KONVERTERI

potencijal u odnosu na zajedničku žicu, pa se izlazni napon može zapisati 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).

Za povećanje cifrenog kapaciteta DAC-a potrebno je dodati odgovarajući broj otpornika i prekidača.

Proizvodnja visoko preciznih otpornika za matrice prepuna je poteškoća, posebno u slučaju višebitnih DAC-ova (vrijednosti otpornika su u širokom rasponu - od R do

R 2 n - 1, ali zahtjevi za apsolutnu tačnost utvrđivanja

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

Rice. 7.2. R-Type Matrix DAC - 2R

Faktori težine koraka se postavljaju sekvencijalnim dijeljenjem referentnog napona. Koeficijent slabljenja svake faze 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).

MOSFET-ovi se često koriste kao elektronski prekidači u DAC kolima (slika 7.3). Koriste se i strujni prekidači na bipolarnim tranzistorima.

Rice. 7.3. 4-bitni DAC:

a - fragment kola sa MOS ključevima, b - UGO

Primjeri IP-a:

K572PA1 - 10-bitni DAC. IC sadrži preciznu R-2R matricu, MOSFET prekidače, ulazna pojačala, pretvarače i otpornik za povratno kolo op-amp. Da bi se ukupna struja pretvorila u napon, mora biti spojeno operaciono pojačalo. Također je potrebna eksterna referenca napona.

DIGITALNI UREĐAJI I MIKROPROCESORI. DIO 2

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI KONVERTERI

7.2. Principi konstrukcije analogno-digitalni pretvarači

Analogno-digitalni pretvarač (ADC) je uređaj za pretvaranje napona u odgovarajući numerički kod. Operacije koje se izvode u procesu analogno-digitalne konverzije opisane su u uvodu. U nastavku razmatramo samo aspekte dizajna kola konstrukcije ADC-a.

Prema metodi konverzije, ADC se može podijeliti na paralelni

i dosljedan.

V paralelnih ADC-ova, ulazni napon se istovremeno upoređuje sa svim nivoima praga skale kvantizacije (slika B.1.). Kao rezultat poređenja, nalazi se najbliži nivo kvantizacije, čiji se broj izražava u binarnom kodu pomoću enkodera. Šema predstavljanja 3-bitni paralelni ADC, prikazan na sl. 7.4. Izvor referentnog napona i skup otpornika omogućavaju generiranje napona jednakih graničnim razinama.

Referentni napon je (2n -1) = 7 puta veći od vrijednosti koraka kvantizacije U S. Ako je, na primjer, ulazni napon in

raspon od (4+ 1 2) U S do, (5+ 1 2) U S mora biti predstavljen

nivo kvantizacije jednak 5U S, i, shodno tome, binarni kod 101. Formiranje izlaznog koda je kako slijedi. Na datu vrijednost U I, izlazi šest komparatora su podešeni

intervalu uzorkovanja, izlazni signali komparatora se zapisuju u registar. Prioritetni enkoder se koristi za generiranje koda broja nivoa kvantizacije. Izlazni kod enkodera određen je aktiviranim ulazom s najvećim brojem (u razmatranom

na primjer, ovo je X 5).

Rice. 7.4. Paralelni ADC: a - kolo, b - UGO

Primjer IP adrese:

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

U serijskim ADC-ovima, ulazni napon se sekvencijalno balansira skupom (zbirom) standarda, čije su vrijednosti višekratne koraka kvantizacije. Niz takvih pretvarača je ADC

DIGITALNI UREĐAJI I MIKROPROCESORI. DIO 2

DIGITALNO-ANALOGNI I

ANALOGNO-DIGITALNI KONVERTERI

dosledno brojanje. Njegov rad se zasniva na prebrojavanju broja koraka kvantizacije potrebnih za dobijanje vrednosti ulaznog napona. ADC kolo za sekvencijalno brojanje prikazano je na Sl. 7.5. Sastoji se od n-bitnog obrnutog brojača, komparatora i n-bitnog digitalno-analognog pretvarača uključenog u povratnu petlju.

Rice. 7.5. ADC serijskog brojanja

Koristeći komparator, upoređuju se ulazni napon U I i izlazni napon DAC U O. Ako je U I> U O, onda je izlaz komparatora na nivou jedinice i brojač radi u režimu sumiranja takta impulsa C. Zbog toga napon U O teži U I. Kada se uporede, n-bitni izlazni kod D će predstavljati ulazni napon ADC-a. Ako U I< U O то счетчик работает в вычитающем режиме. Таким образом, напряжениеU O , а следовательно, и выходной код, отслеживают выходное напряжениеU I Для того, чтобы

spriječite fluktuacije U / D signala preokreta nakon završetka procesa praćenja, možete dodati uređaj u ADC kolo

blokada brojača na U I - U O< U S 2 .

ADC kolo prikazano na sl. 7.5 je vrlo jednostavan. Ali kada ulazni napon skoči, proces praćenja može trajati do 2n ciklusa takta (periodi impulsa C). Ubrzanje konverzije se postiže u ADC-u sa bitnim ponderisanjem. Njegovo kolo je slično onom na sl. 7.5, samo brojač je zamenjen registrom sa kontrolnom jedinicom. Rad ADC vaganja po bitovima je sljedeći. Prvo, svi bitovi registra su postavljeni na nulu. Tada se u najznačajniji bit registra unosi 1. Istovremeno, na izlazu DAC-a

postavljen je napon U O = 2n - 1 U S, jednak polovini od ukupno 2 n - 2),

onda je d n - 2 = 1

Ako ne,

d n - 2 = 0.

Nakon n

fazama, proces balansiranja se završava i kombinacija kodova koja predstavlja ulazni napon ADC-a se postavlja na izlaz registra. Kako bi se tokom konverzije napon

U nisam mijenjao, na ulaze komparatora je stavljen krug za uzorkovanje memorije.

Poznati su i drugi serijski ADC-ovi, na primjer, ADC-ovi koji rade integracijskom metodom.

Primjeri IP-a:

K572PV1 - 12-bitni ADC za vaganje po bitu. IC je proizveden korištenjem CMOS tehnologije. Koristi se sa eksternim operativnim pojačalima i referentnim naponom. Tipično vrijeme konverzije je 110 µs.

K1113PV1 - 10-bitni ADC za vaganje po bitovima. IC je proizveden korištenjem bipolarne tehnologije i sadrži sve funkcionalne jedinice ADC-a, uključujući izvor referentnog napona i generator taktnih impulsa. Izlazni stupnjevi su u tri stanja. Vrijeme konverzije nije više od 30 mikrosekundi.

Upoređujući paralelne i serijske ADC, može se primijetiti sljedeće. Paralelni ADC su kola velike brzine, ali njihova implementacija zahtijeva dosta hardverskih troškova (6-bitni ADC sadrži 64 komparatora). ADC za sekvencijalno brojanje imaju najjednostavniji sklop, ali rade relativno sa niskofrekventnim naponima. ADC-ovi bitnog vaganja zauzimaju srednju poziciju u smislu složenosti i brzine. Kombinacija paralelnih i serijskih ADC kola omogućava vam da napravite veliki broj pretvarača sa različitim parametrima i različitim funkcionalnostima.

DIGITALNI UREĐAJI I MIKROPROCESORI. DIO 2

LITERATURA

LITERATURA

1. Glasman K.F., Pokoptseva M.N. Digitalni uređaji i mikroprocesori. Udžbenik za studente specijalnosti 210312 "Audiovizuelna tehnologija". Dio 1. - SPb.: SPbGUKiT, 2008.

2. Yu.V. Novikov Osnove digitalnih kola. Osnovni elementi i šeme. Metode projektovanja. - M.: Mir, 2001.

3. Novikov Yu., Skorobogatov P. Osnovi mikroprocesorske tehnologije: Kurs predavanja. - M.: INTUIT.RU, 2003.

4. Belov A. Tutorijal o mikroprocesorskoj tehnologiji. - M.: Nauka i tehnologija, 2003.

5. Novozhilov O.P. Osnove digitalne tehnologije: Vodič za učenje. - M.: Radio Soft, 2004.

6. Ugryumov E. Digitalna kola od logičkog elementa do naprednih LSI / VLSI sa programabilnim strukturama. - SPb.: BHV - Petersburg, 2004.

7. Boyko V. Kolo elektronskih sistema. Digitalni uređaji.

- SPb.: BHV - Petersburg, 2004.

8. Boyko V. Kolo elektronskih sistema. Mikroprocesori i mikrokontroleri. - BHV - Petersburg, 2004.

9. Naryshkin A.K. Digitalni uređaji i mikroprocesori. - M.: Ed. centar "Akademija", 2004.

10. Wilkinson B. Osnove dizajna digitalnih kola. - Kijev.: Williams, 2004.

11. Fricke K. Uvodni kurs u digitalnu elektroniku. - M.: Tehnosfera, 2004.

12. Opadchiy Yu.A. Analogna i digitalna elektronika. Udžbenik za univerzitete. - M.: Hot line - Telekom, 2005.

13. Tocchi R. Widmer N. Digitalni sistemi. Teorija i praksa. - Kijev.: Williams, 2004.

14. Alekseeva L.A., Bul M.P., Glasman K.F., Pokoptseva M.N. - SPb.: SPbGUKiT, 2002.

Na ovaj članak su me natjerali moji drugovi koji se jako dobro (mnogo bolje od mene) razumiju u kontrolore i koriste ih gdje god stignu. Ipak, postoji ogromna gomila aplikacija kada je upotreba FPGA ne samo opravdana, već i dovodi do značajnog pojednostavljenja sistema i poboljšanja njegovih parametara. Odmah se rezervišem: u ovom i eventualno narednim člancima razmatram samo Xilinx FPGA, ne zato što su mi platili, pa čak ni zato što su najbolji, jednostavno se istorijski desilo da radim praktički samo sa njima .

Pa počnimo s malo teorije. FPGA podijeljeni su u dvije glavne grupe: CPLD (Complex Programmed Logic Device) i FPGA (Field Programmed Gate Array). CPLD- ovo je obično FPGA "ekonomske" klase, tj. imaju nisku cijenu i prilično oskudnu količinu 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 dodatne "teške" blokove, kao što su množitelji, blok memorija, sučelje (Ethernet, PCI-express...) pa čak i PowerPC procesorska jezgra. Odvojeno, možemo spomenuti Zinq seriju iz Xilinxa - općenito, ARM jezgre su bile natrpane tamo. Glavna razlika između FPGA i CPLD je potreba da se učita konfiguracija pri uključivanju i, shodno tome, eksterni ROM sa konfiguracijom. Čak i porodica SPARTAN-3AN ima ugrađeni ROM iz kojeg se učitava.

Sada najvažnija stvar: kako se FPGA razlikuju od kontrolera i kada ih koristiti. Ovdje je sve prilično jednostavno: FPGA (uzimamo one bez zvona) je, zapravo, vreća logike na jednom čipu, koja se može proizvoljno povezati: sami okidači, I, ILI i slični primitivi, kao npr. , u seriji K155 ili 74ns. Kontroler je gotov procesor (iako sa oskudnim brojem instrukcija), ugrađena memorija, sabirnice podataka i komandi, periferije itd. Općenito, možete napraviti mali kontroler od velikog FPGA, ali ova ideja je u najmanju ruku glupa. Dakle, kontroler je izoštren za izvršavanje dugih lanaca naredbi, njihovo ciklično ponavljanje, prebacivanje s jednog lanca na drugi itd., a FPGA je izoštren za izvođenje jednostavnih logičkih operacija i, što je važno, velikog broja odjednom (i čak i na različitim taktovima) ...

Pređimo s teorije na praksu. Za početak nam je potreban CPLD čip. Resursa je malo, ali je za njihov razvoj. Uzeću XC95288XL u kućištu TQ144 (opet, slučajno je bio na lageru), generalno preporučujem da uzmete nešto svježije, na primjer, iz serije CoolRunner 2. Da bismo dobili gotov proizvod (čak i ako minimalno treperi sa LED diodom), moramo: lemiti hardver (ovdje, nadam se, neće biti problema, ali ću spomenuti nijanse), "napisati" firmver ( u našem slučaju, radije, nacrtajte) i ušijte firmver u mikrokolo. Generalno, potreban nam je softver koji generiše firmver i programator. Softver (Xilinx ISE Webpack) preuzimamo sa službene stranice (međutim, zatražit će registraciju), licenca za Webpack je besplatna. Programator se može napraviti prema shemi na slici 1 (za LPT port) ili kupiti tvornički USB-shny (u kineskim internetskim trgovinama sreo sam ga po cijeni od oko 50 dolara, ali ga nisam kupio sam) . Više.

Rice. 1

Nakon što smo zalemili FPGA na matičnu ploču, zalemili ili kupili programator, preuzeli i instalirali ISE Webpack (imam verziju 13.2), pokrenite Project Navigator i kreirajte novi projekat. Da kreirate projekat, izaberite File -> New Project, naznačite naziv projekta i gde da ga sačuvate, takođe navedite tip izvora NAJVRŠNJI NIVO (Sl. 2). Činjenica je da za FPGA nije potrebno crtati sklop iz okidača i njihovih veza, možete, na primjer, pisati na jezicima visokog nivoa (VHDL, Verilog) i uopće nije potrebno koristiti jednu stvar u okviru istog projekta. Do sada smo koristili samo Schematic na svim nivoima.


Rice. 2
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

U sljedećem prozoru (Sl. 3), odaberite naše mikrokolo (ne dirajte ostatak prvo); u prozoru koji se pojavljuje nakon klika na dugme "Dalje", divimo se parametrima kreiranog projekta, kliknemo "Završi" - i gotovi ste: projekat je kreiran.


Rice. 3

Sada trebamo, zapravo, nacrtati dijagram: desnim klikom na prozor sa projektom i novim izvorom (slika 4.), nazovimo ovaj izvorni kod (ovo je naziv naše šeme, može ih biti mnogo u projektu), ponovo odaberite Shema, kliknite "Dalje", divite se parametrima novostvorene datoteke, kliknite "Završi" i dobijte čistu shemu.


Rice. 4
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Počinje ono najzanimljivije: na panelu s lijeve strane (ne sa same ivice) pritisnite dugme "dodaj simbol" (slika 5).


Rice. 5
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

I dobijamo listu simbola trenutne biblioteke čak i sa leve strane. Kako dodati, kreirati, uređivati ​​biblioteke, shvatit ćemo kasnije (po potrebi). Sada nam je važno da odaberemo traženi simbol. Dakle, u gornjem prozoru vidimo određeni klasifikator - filter koji nije potrebno koristiti (pa, čemu skrolovati kroz sve vrste okidača i logičkih elemenata kada nam treba brojač).

Na primjer, razmotrite sljedeći problem: trebate što preciznije odrediti vrijeme kašnjenja između vodećih rubova 2 impulsa koji se pojavljuju na različitim žicama i spojiti ovu vrijednost u kontroler preko SPI sučelja. Svaka sličnost problema sa temom "Povećanje radne frekvencije MK-a" na nekom od robotskih foruma je namjerna. Dakle, na ulazu uređaja nalaze se 2 žice za impulse i 3 žice za SPI kontroler. Dodamo još jedan ulaz takta (iako ne znamo na kojoj frekvenciji, možemo samo pretpostaviti da je najmanje 70 MHz). Počinjemo crtati firmware: potrebni su nam okidači za zatvaranje koji će "hvatati" impulse, brojač vremena, registar pomaka (ne trebamo ih kreirati, oni su bibliotečki). Neću opisivati ​​šta su okidači i brojači, nadam se da su čitaoci "u temi" i da neće biti problema, inače ćete morati napisati još nekoliko članaka. Dobili smo upravo takvo kolo (slika 6), kao što vidite, nije potrebno povlačiti žicu od izlaza simbola do ulaza, samo trebate imenovati kolo. Da biste odredili eksterne ulaze i izlaze, koristite dugme "Dodaj I/O marker".


Rice. 6
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Kada je krug spreman, idite na karticu Dizajn i dvaput kliknite na Implement Design - počinju svakakvi procesi (za početak, nije važno koji - glavna stvar je da je sve zajedno proces destilacije izvor u firmver). Kada sve bude u redu, pogledamo greške sa modifikacijama: popravimo sve što je važno, ostavimo ostalo. Na primjer, ne trebaju nam izlazi SEO i TS brojača, a preostalih 15 bitova paralelnog izlaza registra pomaka također nisu potrebni, ali se kune sa varninzima. Ako se zaklinje brisanjem da mi to želimo, to znači da želimo da nešto nije u redu. Ako smo mi (i sintisajzer) sa svime zadovoljni, dalje se divimo izvještajima: koliko je resursa potrošeno, koje frekvencije takta su dostupne... Ako je sve opet u redu, onda je vrijeme da simuliramo kolo i uvjerimo se da zapravo radi u skladu sa zadatkom. Predlažem da se izvrši simulacija nakon provjere vremena zbog činjenice da se ponekad cijeli krug mora protresti kako bi se dobila željena frekvencija takta, što, naravno, može utjecati na rezultat ...

Dakle, simulacija: na kartici Dizajn (u lijevom oknu) odaberite simulaciju (slika 7).


Rice. 7
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

U nastavku, u procesima, umjesto procesa sinteze i rutiranja, 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 srednje) (Sl. 8).


Rice. osam
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Pređite kursorom miša preko dugmadi, pročitajte komentare na dugmadima. Postavljamo vrijeme koraka simulacije (slika 9) i početne vrijednosti ulaznih signala, odmah prilagođavamo signale sata (nećemo simulirati i mijenjati sat svakih 5 ns).


Rice. devet
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Korak u vremenu manipulisanjem ulazima i (ako je potrebno) korakom simulacije, dobijamo vremenski dijagram (slika 10).


Rice. deset
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Uvjeravamo se da sve radi kako je predviđeno (ili nastavljamo s otklanjanjem grešaka u krugu) i prelazimo na sljedeći korak - distribuciju izlaza i ulaza duž nogu mikro kruga. Da biste to učinili, dodajte još jednu izvornu datoteku (slika 11), odnosno datoteku s ograničenjima implementacije.


Rice. jedanaest
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Propisujemo "pinout mikrokola" (slika 12), ovdje propisujemo zahtjeve za frekvencije takta. A sada dolazimo do nijansi povezanih sa signalima sata. Činjenica je da taktni signali moraju doći na takozvane globalne linije - linije koje prolaze kroz cijeli mikro krug, ostali vodovi su lokalne prirode i od bloka do bloka prolaze kroz logiku prebacivanja. Čip XC95288XL u TQ144 paketu ima 3 takve linije, a spojene su na noge 30, 32, 38. Ostatak signala se može povezati na bilo koje I/O pinove.


Rice. 12
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Ponovo kliknite dvaput na Implement Design, sačekajte, pročitajte komentare na upozorenjima sa greškama i idite na izveštaje o pinoutu (Sl. 13) i vremenima (Slika 14); vodimo računa da nam sve odgovara, i imamo sreću u obliku file% project_name% .jed.


Rice. 13
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)


Rice. četrnaest
(na sliku je moguće kliknuti za povećanje, otvoriće se u novom prozoru)

Datoteka firmvera je spremna. Recimo da je i uređaj. Povezujemo JTAG kabl na računar i dvaput kliknemo na Configure Target Device. Uslužni program firmvera (Impact.exe) će se pokrenuti, u stvari, kada napravite nekoliko uređaja za flešovanje serije, možete se ograničiti na pokretanje samo jednog od njih. Kreiramo novi projekat (ovo je projekat za firmver program), puštamo ga da automatski pronađe programator i povezano mikrokolo, pokazujemo datoteku firmvera i kliknemo na Program. Čekamo nekoliko desetina sekundi, vidimo natpis da je sve u redu - uređaj je spreman.

UVOD

Obično, kada neko vidi funkcionalnu ploču, uvek postavlja ista pitanja: - Da li je ovo Arduino? - Kako to radi bez Arduina?

To nije mikrokontroler, čak nije ni procesor, to je FPGA. FPGA je programibilno logičko integrirano kolo, takvo mikrokolo se sastoji od mnogo identičnih blokova ili makroćelija, svaki ih proizvođač naziva na svoj način, tako da su za Xilinx to Slices, za Altera - LogicElements (logički elementi). Ovi blokovi su relativno jednostavni, mogu igrati ulogu nekoliko logičkih elemenata, biti mala tabela za pretraživanje (LUT), sadržavati gotov sabirač, množitelj, blok za digitalnu obradu signala (DSP), općenito, bez obzira na proizvođač razmišlja o. Korisnik može, po svojoj volji, rasporediti i konfigurisati ove blokove kako želi, čime se realizuju prilično složena digitalna kola. Barem se mikrokontroler može implementirati na FPGA, na primjer, implementacijom istog Arduina ili procesora vaše vlastite arhitekture, na primjer, ne procesora registra, već procesora steka, čak se i vaš vlastiti FPGA može implementirati na FPGA !

Od dostupnih budžetskih FPGA-a, mogu se izdvojiti dva glavna proizvođača, Altera i Xilinx, sa njihovim proizvodima možete započeti svoj put savladavanja ovih tehnologija. Po mom mišljenju, bolje je odabrati Altera čipove, jer se njihovo dizajnersko okruženje stalno ažurira, a odabirom jednog popularnog Xilinx XC3S500E čipa morat ćete se zadovoljiti zastarjelim ISE 14.7 okruženjem (iako i tu postoje neke prednosti).

Skraćenice za FPGA se mogu naći u stranoj literaturi: FPGA i CPLD. CPLD (Complex Programmable Logic Device) - čipovi sa malim brojem makroćelija, specijalizovanim blokovima i malom potrošnjom energije. Za ovu vrstu čipova ne može se sintetizirati veliki projekat, ali se i oni koriste u praksi, pa će rijetki mikrokontroler imati, recimo, 300 nogu. Takvi čipovi se često koriste kao sistemi interfejsa, pretprocesori i input-output ekspanderi. FPGA (Field-Programmable Gate Array) - Field-Programmable Gate Array (FPGA), znatno moćniji čipovi od CPLD-a, ali troše više energije i koštaju znatno više. Da bi se smanjila cijena površine čipa, FPGA čipovi mogu sadržavati gotove funkcije, kao što su blokovi za digitalnu obradu signala (DSP blokovi), ugrađeni procesori i ugrađena memorija. FPGA se široko koriste za validaciju i verifikaciju dizajna, u takozvanoj pre-silicijumskoj validaciji podobnosti, čime se smanjuju troškovi i vreme pre puštanja proizvoda u prodaju. FPGA čipovi se mogu rekonfigurisati gotovo u bilo koje vrijeme; sada je u toku razvoj, na primjer u Intelu, kako bi se kombinirale arhitekture konvencionalnog procesora i FPGA čipa. Xilinx već ima takva rješenja - Zynq, ali o njima još nećemo govoriti.

Razgovor će biti o jednostavnijim stvarima, pogotovo jer sam dobio u ruke programer kit: Cyclone IV 4 FPGA Core Board i Altera USB Blaster Downloader PLD Development kit za 35 dolara, kupljen na AliExpressu.

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

Rice. 1 - Demo plaćanje Cyclone IV 4 FPGA Core Board

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

Vrsta resursa Kratki opis Količina
Logički elementi (Les) Broj logičkih blokova - ćelija, glavna karakteristika po kojoj možemo uporediti "snagu" čipova, svaka sintetizovana logika će potrošiti ove blokove 6,272
Ugrađena memorija (Kbits) Ugrađena memorija, za nas još nije važna karakteristika 270
Ugrađeni množitelji 18x18 Ugrađeni hardverski množitelji, vrlo važan parametar u digitalnoj obradi signala, puna snaga FPGA se oslobađa kada nekoliko množitelja radi paralelno 15
PLL opće namjene Čvorovi frekvencije fazno zaključane petlje, iako nisu bitna karakteristika, pojednostavljuju sinhronizaciju uređaja koji rade na različitim frekvencijama 2
Global Clock Networks Broj frekvencijskih domena, još uvijek nije važna karakteristika 10
Korisničke I/O banke Broj zasebnih korisničkih I/O banaka, još uvijek nije bitna karakteristika 8
Maksimalni korisnički ulaz/izlaz Broj prilagođenih I/O pinova, možemo povezati bilo koji uređaj, kao što je Arduino 91

Tabla sadrži:

  1. Flash memorija - pri uključivanju, FPGA će biti konfigurisana za implementaciju u flash memoriju. Možete sintetizirati svoj projekat i snimati u ovaj flash
  2. Quartz 25 MHz je generator referentne frekvencije takta, na toj frekvenciji će raditi svi naši projekti, naš FPGA može podržati do 10 takvih kanala.
  3. LED dioda - 10, dugmadi - 2.
  4. I/O pinovi 61 + 2 uzemljenje, 1 nije spojen. Mogu se povezati različiti uređaji. DAC-ADC, akcelerometri i žiroskopi, karakterni i grafički displeji, kao u Arduinu.
  5. Napajanje preko USB-a, ili eksterno 5V.

U kompletu je i JTAG programator, Altera USB Blaster.

2. Okolina Quartus II i naš prvi projekat

Da bismo radili sa ovim FPGA, moramo preuzeti službeno razvojno okruženje - Quartus II Web Edition, 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.

Mi biramo:


Rice. 2 - odabir potrebnih Altera proizvoda

I kliknite na dugme Preuzmi odabrane datoteke. Nakon toga će nam biti ponuđeno da se registrujemo, registrujemo, preuzmemo i instaliramo.

Kreirajmo naš prvi projekat.

Pokrenite Quartus, izaberite glavni meni File -> New Project Wizard, pojaviće se uvodni prozor, kliknite dalje. Zatim morate navesti direktorij za projekat i njegovo ime, treće polje je naziv gornjeg modula, kasnije ćete vidjeti šta je to. Odaberemo fasciklu u koju želimo da sačuvamo projekat i smislimo ime, imam test1.


Rice. 3 - novi prozor čarobnjaka za projekat

Kliknite na dalje, pitamo se da li je prazan projekat ili predložak projekta. Ostavljamo ga praznim. Zatim se od nas traži da dodamo postojeće fajlove, nemamo ništa, pošto tek počinjemo naše putovanje, kliknite na dalje.

Zatim moramo odabrati naš čip, to se može učiniti u bilo kojem trenutku. Odabiremo kao na slici, Family - Cyclone IV E, određeni uređaj odabran u “Dostupni uređaji” i biramo naš EP4CE6E22C8N čip, on je na samom početku. Ako imaš drugu, nađi svoju, važno je... Kliknite dalje.


Rice. 4 -

Pojavit će se prozor - izbor alata za dizajn, otklanjanje grešaka, dok ovo preskočimo, kliknemo dalje i zatim završimo.


Rice. 5 - Prozor "Assinments-Deice"

U prozoru odaberite stavku "Neiskorištene igle". Ova postavka određuje šta će se dogoditi s nepovezanim pinovima. Ovo može biti važno, u vašem projektu je malo vjerovatno da ćete koristiti sve pinove, a nepovezani pinovi se zapravo mogu spojiti na uzemljenje ili napajanje (pa, nikad ne znate ko je spojio ploču). Ako ga nanesete na uzemljeni pin, on će izgorjeti, tako da to morate pažljivo pratiti.

Prema zadanim postavkama, neiskorištene pinove "Kao ulaz trostruki sa slabim povlačenjem" (pinovi za ulaz su u trećem stanju sa visokom impedancijom, sa slabim povlačenjem), možete ostaviti ili odabrati "Kao ulaz trostruki ". O pull-up otporniku možete pročitati na Wikipediji https://ru.wikipedia.org/wiki/Pull-up_resistor. U digitalnom inženjeringu mogu postojati tri stanja, logično jedno je napon napajanja ili visoko, logička nula je kada je pin spojen na uzemljenje ili stanje niske i visoke impedancije. Stanje visoke impedancije- to je kada pin ima vrlo visok otpor i praktički ne utječe na žicu na koju je spojen, takvo stanje je neophodno, na primjer, pri organiziranju autobusa, kada je mnogo uređaja povezano na jednu žicu, a neaktivni uređaji ne ometaju rad.


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

Sve ovo povezujemo u "Uređivač zadataka"


Rice. 7 - Pozivanje "Uređivača zadataka" iz menija ili panela

U prozoru koji se pojavi radimo isto što i moj, pa, ili ako je apsolutno ispravno, onda prema dijagramu vaše ploče.


Rice. 8 - Assinement Editor

U kolonu "Za" unesite naziv ulaza ili izlaza. U koloni "Naziv zadatka" odaberite "Lokacija". U koloni “Vrijednost” broj pina mikrokola, prema dijagramu ploče (imam brojeve pinova ispisane direktno na ploči).

Takođe treba da odredite šta da radite sa dugmadima, koji su jednom nogom povezani sa uzemljenjem, a drugom sa ulazom čipa. Kada pritisnete na nogu, biće nizak nivo, ali bez pritiska, nejasno je, nožica čipa će jednostavno visjeti u zraku, što je jako loše. Potrebno je povući ulaz čipa na napajanje bilo pomoću otpornika na ploči, ili na elegantniji način u "Uređivaču zadataka". U koloni "Naziv zadatka" odaberite "Slab otpornik za povlačenje" za grupu ključeva * (grupa je označena zvjezdicom).


Rice. 9 - Uređivač zadataka

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


Rice. 10 - Dijalog za nove datoteke

U prozoru koji se otvori odaberite "Pin Tool" i postavite ulaz i izlaz (ulazne i izlazne pinove) na dijagram. Preimenujte ulaz u ključ, izlaz u led i povežite ih provodnikom. Sačuvajte i kliknite na "Pokreni kompilaciju".


Rice. 11 - Prozor sa grafičkim opisom, Pin Tool i Start Compilation su istaknuti

Nakon kompilacije, dobili smo upozorenja, dok ih ignoriramo, tiču ​​se nepovezanih pinova, odsustva signala takta i opisa za "Timing Analyzer".

Povezujemo demo ploču i programator, odabiremo alat "Programer". U prozoru bi trebalo da stoji "USB-Blaster", ako nije, onda kliknite na "Hardware Setup" i pokušajte da shvatite zašto ne, najverovatnije drajveri nisu instalirani, gledamo Windows uređaje, tražimo nedefinisane uređaje, možda postoji problem sa kablom. Ako je sve u redu, pritisnite "Auto Detect" i odaberite naš čip.


Rice. 12 - Prozor programatora

Dvaput kliknite na polje "File" i odaberite datoteku za pisanje u FPGA (koja se nalazi u folderu output_files našeg projekta), označite polje "Program / Configure" i pritisnite dugme "Start".


Rice. 13 - Prozor programatora, naš čip je već konfigurisan

Čestitamo na vašoj prvoj FPGA konfiguraciji! Dioda D1 treba da zasvetli, kada se pritisne taster 1 treba da se ugasi (pošto dugme zatvara nogu za tlo), onda ćemo nešto uraditi po tom pitanju)

Programabilno logičko integrisano kolo (FPGA, eng. programabilni logički uređaj, PLD) - Elektronska komponenta koja se koristi za kreiranje digitalnih integrisanih kola. Za razliku od konvencionalnih digitalnih mikrokola, logika rada FPGA nije određena tokom proizvodnje, već se postavlja programiranjem (dizajnom). Za programiranje se koriste programeri i okruženja za otklanjanje grešaka koji vam omogućavaju da postavite željenu strukturu digitalnog uređaja u obliku dijagrama kola ili programa na posebnim jezicima za opis hardvera Verilog, VHDL, AHDL itd. Alternativni FPGA su: osnovni matrični kristali koji zahtevaju fabrički proizvodni proces za programiranje; ASIC - specijalizovani prilagođeni LSI (velika integrisana kola), koji su znatno skuplji za malu i jednodelnu proizvodnju; specijalizovani računari, procesori (npr. procesor digitalnih signala) ili mikrokontroleri, koji su zbog softverske implementacije algoritama sporiji od FPGA. Neki proizvođači FPGA nude softverske procesore za svoje FPGA, koji se mogu modificirati za određeni zadatak, a zatim ugraditi u FPGA. Ovo osigurava manje prostora na PCB-u i pojednostavljuje dizajn samog FPGA.

Programabilna logička integrisana kola (FPGA) pojavila su se pre deceniju i po kao alternativa programabilnim logičkim nizovima (PLM). FPGA se razlikuju od najnovijih i po arhitekturi i po tehnologiji proizvodnje.

PLM je matrica višeulaznih (nekoliko desetina ulaza) logičkih elemenata sa okidačima, u kojoj su skakačima programirani sastojci jedinica disjunktivnih normalnih oblika funkcija ovih elemenata. U početku su skakači napravljeni u obliku izgorjelih tankih vodiča. Sada su džamperi implementirani kao MOSFET sa plutajućim vratima, kao u električno programabilnom ROM-u, tj. PLM-ovi se proizvode pomoću tehnologije fleš memorije. Veliki PLM-ovi (CPLD) se razlikuju samo po tome što je nekoliko PLM-ova sastavljeno na jednom čipu i ujedinjeno pomoću programabilnog polja za spajanje.

FPGA je matrica niskog ulaza (od dva do pet ulaza) logičkih elemenata, trigera, segmenata komunikacionih linija povezanih džamperima sa tranzistora sa efektom polja. Sudeći po engleskom nazivu - Field Programmable Gate Array (FPGA) - FPGA se programiraju promjenom nivoa električnog polja (polja) u vratima ovih tranzistora. Za razliku od, na primjer, LPGA - Laser Programmable Gate Array. Gejtovi svih "programirajućih" tranzistora sa efektom polja su povezani na flip-flop izlaze jednog registra dugog pomaka, koji se popunjava prilikom programiranja FPGA. Neki od odjeljaka ovog registra također mogu djelovati kao ROM ćelije.

Firmver je obično pohranjen u ROM-u pored FPGA i nakon uključivanja ili nakon signala resetovanja, automatski se ponovo upisuje u programski pomak registra FPGA. Ovaj proces se zove konfigurisanje FPGA. Budući da su osnova FPGA okidači koji pohranjuju firmver, FPGA su proizvedeni korištenjem tehnologije statičkih RAM mikrokola.

U poređenju sa CPLD-ovima, FPGA pobjeđuju, prvo, u neograničenom broju reprogramiranja, drugo, u logičkom kapacitetu, uključujući specifični kapacitet gejtova, i treće, u maloj potrošnji energije.

Po pravilu, FPGA imaju dva do tri reda veličine veći kapacitet u broju ekvivalentnih logičkih kapija od CPLD-ova i, poput statičkog RAM-a, ne troše gotovo nikakvu energiju u odsustvu komutacije. Pored toga, FPGA imaju red veličine veću pouzdanost (manju stopu otkaza) od CPLD-a.

Nedostaci uključuju potrebu za eksternim ROM-om firmvera, sinhro-serijskim generatorom. Ali 8-pinski ROM zauzima znatno manje prostora na ploči od samog FPGA sa mnogo stotina pinova. Isto vrijedi i za sinhro-serijski generator. programiranje integralno elektronsko

Korisnici imaju mnogo nedoumica u vezi zaštite od kopiranja projekta. Zaista, FPGA firmver je pohranjen u eksternom ROM-u, čiji se sadržaj jednostavno kopira. Ali promjena ili dešifriranje firmvera, na primjer, da bi se sakrilo autorstvo ili obnovilo kolo, gotovo je nemoguće, budući da je semantika bitova u datoteci firmvera tajna kompanije, a nepažljiva promjena može onemogućiti FPGA. Ako je potrebna zaštita, program se učitava pomoću eksternog CPLD-a, u kojem mašina pruža zaštitu za projekat. Nova generacija FPGA omogućava šifriranje firmvera, na primjer, korištenjem ugrađenog DES enkriptora sa zadržavanjem ključa uz pomoć baterije.

Programabilna logička integrisana kola - FPGA su jedan od najperspektivnijih elemenata digitalnih kola. FPGA je kristal na kojem se nalazi veliki broj jednostavnih logičkih kapija. U početku, ovi elementi nisu međusobno povezani. Povezivanje elemenata (transformacija različitih elemenata u električni krug) vrši se pomoću elektroničkih ključeva smještenih u istom kristalu. Elektroničkim ključevima upravlja posebna memorija, u čije se ćelije unosi konfiguracijski kod digitalnog kola. Dakle, upisivanjem određenih kodova u FPGA memoriju, moguće je sastaviti digitalni uređaj bilo kojeg stepena složenosti (zavisi od broja elemenata na čipu i FPGA parametara). Za razliku od mikroprocesora, FPGA mogu organizovati algoritme digitalne obrade na nivou hardvera (kola). Istovremeno, brzina digitalne obrade se dramatično povećava. Prednosti tehnologije dizajna uređaja zasnovane na FPGA su:

  • · Minimalno vreme razvoja kola (samo treba da unesete konfiguracioni kod u FPGA memoriju);
  • · Za razliku od konvencionalnih elemenata digitalnih kola, nema potrebe za razvojem i proizvodnjom složenih štampanih ploča;
  • · Brza konverzija jedne konfiguracije digitalnog kola u drugu (zamena koda konfiguracije kola u memoriji);
  • · Za kreiranje uređaja na bazi FPGA nije potrebna složena tehnološka proizvodnja. FPGA se konfiguriše pomoću personalnog računara na stolu programera. Zbog toga se ova tehnologija ponekad naziva "fabrika na stolu".

Tipične FPGA aplikacije: digitalna obrada signala, korisnička elektronika, sistemi za prikupljanje podataka, kontrolni sistemi, telekomunikaciona oprema, oprema za bežične komunikacije, opšta računarska oprema.

U nastojanju da postignu visoke tehničke karakteristike i potrošačke kvalitete svojih proizvoda, programeri elektronskih uređaja koriste specijalizirane IC-ove (SPIS). Njihova upotreba pruža sljedeće prednosti:

  • - smanjenje veličine uređaja. Upotreba LIS-a omogućava smanjenje broja IC-a, smanjenje veličine štampanih ploča i time smanjenje ukupnih dimenzija uređaja;
  • - poboljšanje tehničkih karakteristika. Smanjenje broja IC-a dovodi do povećanja performansi sistema i smanjenja potrošnje energije;
  • - povećana pouzdanost. Budući da je vjerovatnoća greške ili kvara uređaja direktno proporcionalna broju IC-a, pouzdanost uređaja koji koriste LIS značajno se povećava;
  • - osiguranje zaštite razvoja. Pošto je kopiranje uređaja koji sadrži LIS mnogo teže (a ponekad i gotovo nemoguće) od uređaja zasnovanog na standardnim komponentama, upotreba LIS-a omogućava osiguranje autorskih prava programera;
  • - povećanje fleksibilnosti modifikacije. Budući da modifikacija LIS-a po pravilu ne zahtijeva preradu ostalih jedinica, preusmjeravanje štampanih ploča i sl., mogućnosti otklanjanja grešaka i modifikacije uređaja su značajno povećane.

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

  • - korisnički programabilni IC - FPGA (PLD).
  • - IC-ovi koji se mogu programirati maskom - osnovni matrični kristali (BMC) ili nizovi kapija (Gate Arrays).
  • - IC na standardnim ćelijama (Standard Cells).
  • - potpuno prilagođene IC-ove (Full Custom).

FPGA i BMK spadaju u kategoriju poluprilagođenih IC-a, budući da se topologija unutar kola djelimično formira tokom proizvodnje samih IC-a, a djelimično programira u skladu sa zahtjevima potrošača.

Ostatak LIS-a se izrađuje po narudžbi, jer cjelokupna topologija kola, uzimajući u obzir potrebne funkcije, razvija se tokom proizvodnje kristala.

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

SPIS klasifikacija

Jeste li čekali znak? Evo ga!

Dugi niz godina nisam se usuđivao početi programirati FPGA, jer je to teško, skupo i bolno (kako mi se činilo). Ali dobro je kada postoje prijatelji koji ti pomažu da napraviš prvi korak. I sad ne razumem jednu stvar - ZAŠTO DA ČEKAM TAKO DUGO?

Sada ću i vama pomoći da napravite prvi korak!

Zašto mi treba?

Jeste li umorni od stalnog čitanja dokova na svom MK-u ili od gomile informacija u glavi. Sve si prepisao u asm-u, ali brzina i dalje nije dovoljna. Priključili ste dva eksterna uređaja na svoj MK, priključili treći, ali vam je ponestalo prekida, oni moduli koji su već radili prestaju da rade. Uzmite još jedan MK, moćniji iz iste linije, ali opet priručnike, flag registre, bitove... pakao. Mijenjate platformu: prelazite na drugi MK i bacate svoje znanje o prethodnoj platformi u smeće. Šta god da radite, teško je. Nađete popularnu platformu u kojoj možete lako sastaviti projekat od komponenti, ali još uvijek ne možete preskočiti hardverska ograničenja ovog MC-a... Negdje na rubu svijesti ponekad skoči misao da bi na FPGA sigurno brzo funkcionirao i uporedo da je to "Upravo zadatak koji treba riješiti na plisu", ali ja sam star/glup/zauzet/itd da mogu/da počnem ovo raditi.

Želite li konačno slobodno disati? Pomakni se!

Radost razvoja FPGA

Imao sam naporan dan na poslu. Iz jednog posla sam došao na drugi posao, pa na daču, uveče kućni poslovi, domaći, pa porodica gledajući film, i tek u 23 sata sam bio potpuno slobodan! Reći da sam bio umoran znači ne reći ništa. Ali u ovom stanju, sjeo sam za laptop sa čvrstim ciljem: da napravim generator pravougaonog talasa na 440 Hz. Trajalo je 20 minuta i već sam to čuo u slušalicama. Nisam mogao vjerovati svojim ušima! Trebalo mi je još 15 minuta da napravim PWM i promijenim jačinu zvuka. Do tada sam imao ploču sa FPGA samo nedelju dana, a pre toga sam prelistao samo nekoliko knjiga o Verilogu.

Te večeri sam shvatio: EVO GA! Ovo je platforma na kojoj mogu brzo i lako svoje misli pretvoriti u pravi radni hardver!

Žašto je to?

Opisat ću prednosti koje postoje u proučavanju i primjeni FPGA, iako ih svi već znaju:
  • Univerzalnost znanja- kada mijenjate MK model, potrebno je pročitati dokove. Prilikom promjene proizvođača MK-a potrebno je pročitati dokumentaciju. Morate stalno čitati dokove, stalno držati puno informacija u svojoj glavi. Prilikom razvoja na FPGA, ako poznajete Verilog ili VHDL, onda ne možete samo programirati bilo koji FPGA iz linije jednog proizvođača, već i ako želite da se prebacite na drugog (Altera, Xilinx). Iako će biti trenutaka sa razvojem drugačijeg razvojnog okruženja, suptilnih hardverskih problema, sama suština pristupa dizajnu HDL uređaja neće se promeniti od ovoga.
  • Od ideje do hardvera- kada razvijate projekat, ako vam jedan mikron nije dovoljan, onda morate izabrati drugi. U principu, možete pretpostaviti da li će se ovaj MC nositi sa projektom ili neće. Ili postoji neki specifičan MK i pokušavate tamo uklopiti projekat. To je najčešće slučaj. Meni ovo pomalo podsjeća na pristup mog djeda koji pravi ljestve od onoga što je u šupi. Iako možete dizajnirati stepenište, kupite daske koje odgovaraju... Od ideje do pegle, a ne obrnuto.
  • Lakoća primjene razvoja drugih ljudi- možete uzeti tuđi modul i primijeniti ga u svom projektu. Možete razumjeti kako to funkcionira iz koda. Čak i ako je za xilinx, a vi to radite pod altera. Ponekad ovo ne uspije sarzu, ali je lakše nego, na primjer, dodavanje binarnih datoteka u c ++ / Qt projekat
  • Blokira nezavisnost. Blokovi u HDL-u, kao čiste funkcije u JP-u. Zavise samo od ulaznih signala. Razvijeni i otklonjeni moduli će nastaviti da rade ispravno, bez obzira na to kako projekat raste. Ništa izvana neće ometati kako funkcionira iznutra. U svakom slučaju, možete zaboraviti kako to funkcionira - to je crna kutija. Osim toga, blokovi rade paralelno.

Problem izbora

Pitanja šta odabrati: Altera / Xilinx, Verilog / VHDL, koju ploču za otklanjanje grešaka uzeti. Ali prvo stvari.

Proizvođač

ja biram Altera... Zašto? Pa, moj prijatelj i ja smo to odlučili, iako mi je ime Xilinx ljepše. ALI. Ako sada ne možete birati, ja ću to učiniti umjesto vas. Treba ti Altera! Zašto? Ne znam. Sada je važnije napraviti korak: napraviti izbor. Odabrao sam Alteru i još nisam požalio.



Jezik

Mi uzimamo Verilog - jer… Pa, razumete.

Ploča za otklanjanje grešaka

Trebalo je najduže vrijeme za odabir ploče za otklanjanje grešaka. Jasno je da se ploče razlikuju po instaliranom FPGA mikrokolu. A FPGA čipovi se međusobno razlikuju po broju elemenata. Ali uopće nije jasno koliko će biti potrebno za vaše testne projekte. Stoga sam većinu vremena proveo tražeći sve vrste FPGA projekata kako bih saznao koliko oni troše FPGA resurse.

U porodici Altera po razumnoj cijeni možemo kupiti ploče sa CPLD MAX II za 240, 570 i 1270 elemenata ili starije FPGA čipove, a to su Cyclone 1, 2, 3, 4 sa do 10.000 ili više ćelija. Kako birate?

Čak i na bazi 240 ćelija, projekat Mars Rover radi samo ogroman broj projekata. Toplo preporučujem da se upoznate kako biste imali grubu predstavu o složenosti projekata koji mogu stati u 240 ćelija. S druge strane, postoje projekti koji su u potpunosti programirani za hardversku kopiju određenog računara, uključujući procesor i svu logiku oko njega (NES, Speccy, Orion, UT-88, itd.). Za to je već potrebno pet, deset ili više hiljada ćelija. Osim toga, ove ploče sadrže dodatne vanjske uređaje.

Stoga bih vam savjetovao da uzmete nešto u sredini između 240 i 10.000 ćelija, s tim da preferirate povećanje, ovisno o raspoloživim sredstvima. Na ploči za otklanjanje grešaka, dodatne ćelije nisu velika stvar, a ako nisu dovoljne, ništa se ne može učiniti povodom toga. Zatim, kada se uređaj otkloni greške, postat će jasno koliko je ćelija potrebno, kupiti za potrebnu količinu, bez nepotrebnog "body kita", jeftinije i ostaviti u gotovom uređaju.

Razlika između MAX i Cyclones, osim u broju ćelija, je:
1) MAX serija nema PLL unutra. Svaka razvojna ploča ima generator, obično 50 MHz. Ovo će biti dovoljno za većinu projekata. Sve sinhronizacije će se obaviti dijeljenjem 50 MHz sa nekom vrijednošću. Ili, možete uzeti eksterni generator i primijeniti ga na poseban FPGA ulaz. Šta ako vam treba frekvencija veća od 50 MHz? Nisam mogao da nađem generatore iznad 50 MHz u hodu. Ali ovdje u pomoć dolazi PLL, koji je ugrađen u Cyclones. Može pomnožiti frekvenciju, na primjer, do 100 MHz.
2) Cyclone serija ima ugrađene hardverske jedinice za množenje. Njihov broj ovisi o konkretnom modelu - ovdje možete "svejedno pogledati upute" da saznate koliko ih ima. Ako namjeravate napraviti neku vrstu DSP-a, onda će vam dobro doći: sačuvat će ćelije, 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, moj kriterijum je „pristajem/ne odgovara“. Otklanjanje grešaka na ploči koja je očigledno veća nego što je potrebno, praćeno ulivanjem u minimum potreban za ovo.

Koliko novca je potrebno?


Programer
Vjerujem da nemam vremena za lemljenje labavih programera.

300 rubalja. Ja sam svoju uzeo na ebee, izgleda ovako:

Ploča za otklanjanje grešaka
Izbor je širok, ovisno o iznosu novca.

Prvi nivo 350 - 550 rubalja. Ovo su ploče na MAX II (ili ćelijama). Mogu biti prikladni za početno upoznavanje i dalje pričvršćivanje na krajnje uređaje. Ploča ima generator, par dugmadi, par LED dioda, preostalih 80 pinova je po Vašem nahođenju.

Napajanje
Mora biti, ali nije uvijek uključeno. Trebat će vam PSU od 5 volti i struja od 2 A.

Prosječan nivo od 900 do 1500 rubalja. To su Cyclone ploče 1, 2, 3, 4 koje se razlikuju uglavnom po broju ćelija.
Označeno ovako:
EP 2 C 5 T144 - Cyclone 2 cca 5k ćelija
EP 4 CE 6 E22C8N - Ciklon 4 približno 6k ćelija
EP 2 C 8 Q208C8N - Ciklon 2 približno 8k ćelija

Možda ćete primijetiti da Ciklon 3 može imati više ćelija od Ciklona 4.

Evo nekoliko opcija:

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

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

1265 rubalja
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA Evaluation Development Core Board

Napredne ploče ... To su ploče na kojima su ugrađeni dodatni moduli (UTP, USB, AUDIO), konektori (SD, VGA), dugmad, prekidači, LED diode, sedmosegmentni indikatori itd. Ili može postojati osnovna ploča, a može doći sa pločama za proširenje zasebno.

Imam sljedeći set radni - 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 dugmeta, 4 prekidača, sedmosegmentni indikator i RAM čip.

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

Ove kartice se jednostavno umetnu jedna u drugu, ali je još uvijek imam u kutiji. Za svoje rukotvorine, imam ploču za izradu sa kojom povezujem petlju koja dolazi u kompletu. Uključeno je i napajanje od 5 volti.

Top srodni članci