Sadržaj:
- Korak 1: Dizajnirajte krug koji će predstavljati "FPGA"
- Korak 2: Unesite FPGA
- Korak 3: Od FPGA do Arduina
- Korak 4: Od Arduina do DIP čipa na ploči za kruh
- Korak 5: Zaključak
Video: Arduino kao jeftina FPGA ploča: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Dizajniranje hardverskih logičkih sklopova može biti zabavno. Stari način da se to učini bilo je s vratima NAND, na ploči za kruh, ožičenim kratkospojnicima. To je još uvijek moguće, ali ne treba puno prije nego što se broj vrata izmakne kontroli. Novija je mogućnost korištenje FPGA (Field Programmable Gate Array) polja. Ti se čipovi mogu preurediti u bilo koje digitalno logičko kolo koje možete dizajnirati, ali nisu jeftini i lako dostupni. Pokazat ću kako se ova FPGA može zamijeniti jeftinim čipom Atmega iz Arduino UNO -a, učinkovito stavljajući digitalni krug u DIP paket, koji je vrlo prilagođen matičnoj ploči.
Korak 1: Dizajnirajte krug koji će predstavljati "FPGA"
Napravit ću 2 -bitni + 2 -bitni zbrajač. Potrebna su dva para logičkih ulaznih pinova, a izlazi jedan triplet izlaznih pinova.
Da biste to učinili s NAND vratima, pogledajte shemu na slici. Treba 14 NAND vrata. Koristio sam 4 quad NAND gate TTL čipova i ožičio ih na ploči za kruh.
Dodao sam neke LED diode (ne zaboravite na otpornike koji ograničavaju struju) da pokažu kada su ulazni i izlazni pinovi bili uključeni (visoko), a kada isključeni (nisko). Da bih pokrenuo ulazne pinove, ili sam ih spojio na uzemljenje ili na pozitivnu vodilicu.
Ovaj krug radi, ali već zauzima 4 TTL čipa i gnijezdo je žica štakora. Da je potrebno više komada, bilo bi više ploča za kruh i više skakača. Vrlo brzo veličina kruga bi izmakla kontroli.
S druge strane, pri radu s TTL vratima, oni ne emitiraju točno 0V ili 5V kako bi se očekivalo. Često daju izlaz oko 3V za "visoku" vrijednost, ali točan napon je u vrlo širokom rasponu. Isti krug koji koristi CMOS ekvivalentne čipove imao bi bolje točno 0V do točno 5V zamaha.
Korak 2: Unesite FPGA
FPGA je fantastičan čip, koji doslovno može postati bilo koja kombinacija logičkih vrata, ožičenih u bilo kojoj kombinaciji. Jedan dizajnira "sklop" u jeziku hardverskog dizajna (HDL). Postoji više takvih jezika, od kojih se jedan zove Verilog.. V datoteka na slici je Verilog ekvivalent dvobitnog sabirača. Datoteka.pch ispod nje također je potrebna za dodjelu ulaznih i izlaznih pinova navedenih u verilog datoteci stvarnim hardverskim pinovima na čipu.
U ovom slučaju koristim iCEstick razvojnu ploču Lattice Semiconductors (https://www.latticesemi.com/icestick). Stvarni FPGA čip je iCE40HX-1k, s nešto više od 1000 vrata, od kojih svaki može postati bilo koji logički ulaz. To znači da svaka vrata mogu biti vrata NAND ili vrata ILI, a ne vrata, NOR, XOR itd. Osim toga, svaka vrata mogu rukovati s više od dva ulaza. To je specifično za svakog proizvođača, ali na iCE40 -ima svaki ulaz može rukovati s 4 ulaza. Tako su svaka vrata znatno sposobnija od 2 ulazna NAND vrata.
Morao sam dodijeliti 4 ulazna bora i 3 izlazna pina fizičkim pinovima 91, 90, 88, 87, 81, 80 i 79. To je specifično za fpga čip i probojnu ploču na kojoj se nalazi te kako su te pinove spojene na PMOD priključak. To je dostupno u podatkovnim tablicama za ovu FPGA ploču.
Lattice pruža vlastiti lanac alata za sintetiziranje (FPGA ekvivalent kompilaciji za CPU -ove) sklopova iz Veriloga, ali ja sam koristio besplatni open source lanac alata icestorm (https://www.clifford.at/icestorm/). Upute za instalaciju dostupne su na tom mjestu. S instaliranom ledenom olujom, datotekom verilog i pcf, naredbe za učitavanje ovog kruga na FPGA su:
yosys -p "synth_ice40 -blif twoBitAdder.v" twoBitAdder.blif
arachne -pnr -d 1k -p iCEstick.pcf twoBitAdder.blif -o twoBitAdder.asc
ledeni paket twoBitAdder.asc twoBitAdder.bin
iceprog twoBitAdder.bin
Ovo odlično funkcionira, ali isporuka ovog iCEstick -a koštat će oko 30 USD. Ovo nije najjeftiniji način za izgradnju digitalnog sklopa, ali je moćan. Ima preko 1000 vrata, a za ovaj mali krug koristi samo 3 od njih. Ekvivalent vrata NAND koristio je 14 vrata. To je zbog činjenice da svaka vrata mogu postati bilo koja vrata, a svaka vrata su zapravo 4 ulazna vrata. Svaka vrata mogu učiniti više. Ako trebate više vrata, iCEstick ima većeg brata s 8000 vrata, što košta otprilike dvostruko. Drugi proizvođači imaju i drugu ponudu, ali cijena može biti prilično visoka.
Korak 3: Od FPGA do Arduina
FPGA -i su odlični, ali mogu biti skupi, teško ih je pronaći i nisu baš prijateljski nastrojeni. Jeftin i jeftin čip prilagođen matičnoj ploči je Atmega 328 P, koji dolazi u urednom DIP paketu, savršen za izradu matičnih ploča. Također se može kupiti za oko 4 USD. Ovo je srce Arduino UNO -a. Naravno, mogli biste koristiti cijeli UNO, ali ako ste jeftini, možemo povući Atmegu 328 P s UNO -a i koristiti je sami. Koristio sam UNO ploču kao programer za Atmegu.
U ovom trenutku trebat će vam
1. Arduino UNO, sa uklonjivim Atmega 328P CPU -om.
2. Još jedna Atmega 328P s unaprijed spaljenim Arduino pokretačkim programom, kako bi zamijenila onu koju ćemo izvaditi iz UNO-a. (Neobavezno pod pretpostavkom da i dalje želite imati upotrebljiv UNO).
Cilj je pretvoriti datoteku verilog u arduino projekt koji se može učitati u 328P. Arduino se temelji na C ++. Zgodno postoji prevoditelj s Veriloga na C ++, nazvan Verilator (https://www.veripool.org/wiki/verilator). Verilator je namijenjen dizajnerima hardvera koji trebaju simulirati svoje dizajne prije nego što te dizajne predaju skupom hardveru. Verilator cross kompilira verilog u C ++, zatim korisnik pruža testni pojas za pružanje simuliranih ulaznih signala i snimanje izlaznih signala. Koristit ćemo ga za uguravanje verilog dizajna u Atmegu 328P pomoću lanca alata Arduino.
Prvo instalirajte Verilator. Slijedite upute na
Također instalirajte Arduino IDE i provjerite može li se povezati s Arduino UNO putem USB -a.
Koristit ćemo istu verilog datoteku kao i za FPGA, samo što je potrebno promijeniti nazive pinova. Na početak svakog dodao sam podvlaku (_). To je potrebno jer arduino knjižnice uključuju datoteku zaglavlja koja prevode stvari poput B0, B001 itd. U binarne brojeve. Ostali nazivi ulaznih pin-ova bili bi u redu, ali B0 i B1 bi uzrokovali neuspjeh sastavljanja.
U direktoriju koji sadrži twoBitAdder.v i iCEstick.pcf pokrenite sljedeće:
verilator -Wall --cc twoBitAdder.v
Ovo će stvoriti poddirektorij pod nazivom obj_dir koji sadrži nekoliko novih datoteka. Potrebne su nam samo datoteke zaglavlja i cpp, VtwoBitAdder.h, VtwoBitAdder.cpp, VtwoBitAdder_Syms.h i VtwoBitAdder_Syms.cpp.
U Arduino IDE -u stvorite novu skicu pod nazivom twoBitAdder.ino. Ovo će stvoriti ino datoteku u novom direktoriju koji se također naziva twoBitAdder, unutar vašeg Arduino imenika skica. Kopirajte datoteke VtwoBitAdder.h i VtwoBitAdder.cpp u ovu datoteku twoBitAdder u mapi Arduino.
Sada kopirajte datoteke zaglavlja iz instalacije verifikatora.
cp/usr/local/share/verilator/include/verified*.
konačno kopirajte u std c ++ knjižnicu s https://github.com/maniacbug/StandardCplusplus. Prema njihovim uputama za instalaciju "Ovo je instalirano baš kao i obična Arduino knjižnica. Raspakirajte sadržaj distribucije u mapu" knjižnice "ispod svoje skice. Na primjer, moja skica je na/home/maniacbug/Source/Arduino, pa je ova knjižnica je u/home/maniacbug/Source/Arduino/libraries/StandardCplusplus.
Obavezno resetirajte svoj Arduino IDE nakon instalacije."
Sada zamijenite sadržaj twoBitAdder.ino onim koji je naveden u ovom koraku. Ovo je ispitni pojas koji verilator očekuje, koji postavlja ulazno/izlazne pinove, zatim u petlji, čita ulazne pinove, šalje ih u VtwoBitAdder (prevedena verzija našeg kruga), zatim čita izlaze iz VtwoBitAddera i primjenjuje ih na izlazne pinove.
Ovaj program trebao bi se sastaviti i izvršiti na Arduino UNO -u.
Korak 4: Od Arduina do DIP čipa na ploči za kruh
Sada kada se program izvodi na Arduinu, više nam ne treba sama ploča Arduino. Sve što nam treba je CPU.
Pažljivo uklonite Atmegu 328P iz utičnice Arduino UNO i po želji umetnite zamjenu.
Stavite Atmegu 328P na ploču. Stavite kraj tako da okretnica bude okrenuta prema gore na ploči za kruh. Pin 1 je gornji lijevi pin. Pin 2 je sljedeći dolje, pa na pin 14 koji se nalazi dolje lijevo. Zatim je pin 15 donji desni donji dio, a pinovi 16 do 28 broje unatrag desnu stranu čipa.
Spojite pinove 8 i 22 na masu.
Spojite pin 7 na VCC (+5V).
Spojite kvarcni kristal od 16 Mhz između pinova 9 i 10. Također mali kondenzator (22pF) između pina 9 i mase, te između pina 10 i mase. To Atmegi 328P daje taktu od 16 Mhz. Na drugim mjestima postoje upute o poučavanju 328P -a da umjesto toga koristi svoj unutarnji sat od 8 MHz koji bi uštedio nekoliko dijelova, ali bi to usporilo procesor.
Arduino GPIO portovi 5, 6, 7 i 8, koje smo koristili za ulazne pinove, zapravo su fizički pinovi 11, 12, 13, 14 na Atmegi 328P. To bi bile četiri donje igle s lijeve strane.
Arduino GPIO portovi 11, 10 i 9, koje smo koristili za izlazne pinove, zapravo su fizički pinovi 17, 16, 15 na Atmegi 328P. To bi bile tri donje igle s desne strane.
Priključio sam LED diode na ove pinove kao i prije.
Korak 5: Zaključak
TTL čipovi djeluju, ali potrebno je mnogo njih da se bilo što izgradi. FPGA rade jako dobro, ali nisu jeftine. Ako možete živjeti s manje IO pinova i nižom brzinom, onda bi vam Atmega 328P mogao biti čip.
Neke stvari koje treba imati na umu:
FPGA:
Za
- Može podnijeti signale velike brzine. Budući da ne postoji CPU za uska grla u obradi sve do jedne instrukcije odjednom, ograničavajući faktor je kašnjenje prostiranja kroz vrata na danom krugu. U mnogim slučajevima to može biti mnogo brže od sata koji je isporučen s čipom. Za moj dizajn, izračunato kašnjenje omogućilo bi twoBitAdder-u da odgovori na oko 100 milijuna promjena ulaznih vrijednosti u sekundi (100Mhz) iako je ugrađeni sat samo kristal od 12Mhz.
- Kako dizajn postaje sve složeniji, performanse postojećih krugova se ne degradiraju (mnogo). Budući da dodavanje sklopova u tkaninu jednostavno stavlja nešto novo u neiskorištene nekretnine, to ne utječe na postojeća kola.
- Ovisno o FPGA -i, broj dostupnih IO pinova može biti vrlo velik i općenito nisu zaključani u bilo koju određenu svrhu.
Kon
- Može biti skupo i/ili teško doći do njega.
- Obično dolazi u BGA paketu koji zahtijeva neku vrstu ploče za rad s čipom u bilo kojem amaterskom projektu. Ako ga ugrađujete u dizajn s prilagođenom višeslojnom SMT PCB-om, to nije problem.
- Većina proizvođača FPGA -a nudi vlastiti softver za dizajn zatvorenog koda, koji u nekim slučajevima može koštati novca ili imati datum isteka licence.
Arduino kao FPGA:
Za
- Jeftino, a lako ga je nabaviti. Samo potražite atmega328p-pu na Amazonu. Oni bi trebali iznositi oko 4 USD po komadu. Nekoliko ih prodavača prodaje u lotovima od 3 ili 4 komada.
- Ovo je DIP paket, što znači da savršeno pristaje na ploču s vanjskim iglama.
- Ovo je 5V uređaj koji može olakšati povezivanje s drugim 5V uređajima.
Kon
- ATMEGA328P ima ograničen broj IO pinova (23), a nekoliko njih je rezervirano za određene zadatke.
- S povećanjem složenosti kola povećava se količina koda pokrenutog u metodi Arduino petlje, što znači da je trajanje svakog ciklusa duže.
- Čak i ako je složenost kruga niska, svaki ciklus zahtijeva mnogo CPU uputa za dohvaćanje vrijednosti ulaznog pina, zapisivanje vrijednosti izlaznog pina i povratak na vrh petlje. S kristalom od 16 MHz, čak i pri jednoj instrukciji po ciklusu takta, petlja neće raditi više od možda milijun puta u sekundi (1 MHz). Za većinu elektroničkih amaterskih projekata to je ipak brže nego što je potrebno.
Preporučeni:
NodeMCU Lua Jeftina ploča od 6 USD s zapisom o temperaturi i vlažnosti MicroPythona, Wifi i mobilnom statistikom: 4 koraka
NodeMCU Lua Jeftina ploča od 6 USD s zapisom o temperaturi i vlažnosti zraka MicroPython, Wifi i mobilnom statistikom: Ovo je u osnovi vremenska stanica u oblaku, možete provjeriti podatke na svom telefonu ili koristiti neki telefon kao prikaz uživo S NodeMCU uređajem možete bilježiti podatke o temperaturi i vlažnosti vani , u sobi, stakleniku, laboratoriju, rashladnoj prostoriji ili na bilo kojem drugom mjestu kompletno
Jeftina, dvostrana, rešetkasta ploča organizatora: 4 koraka
Jeftina, dvostrana, Grid-it Style Organizer Board: ovo je jednostavna i jeftina verzija poliranih, jačih i općenito boljih mrežnih organizatora koje možete kupiti. Koštao sam izradu slične izrade kao izvornik i odlučio da se ne isplati, međutim ova verzija nije koštala baš ništa (
SOLARNA PLOČA KAO TRAKER SJENA: 7 koraka (sa slikama)
SOLARNA PLOČA KAO TRAKER SJENA: Temeljna veličina koja se koristi u fizici i drugim znanostima za opis mehaničkog kretanja je brzina. Mjerenje je ponavljajuća aktivnost u eksperimentalnim razredima. Obično koristim video kameru i softver TRACKER za proučavanje kretanja certe
Zidni nosač za IPad Kao upravljačka ploča kućne automatizacije, pomoću servo upravljanog magneta za aktiviranje zaslona: 4 koraka (sa slikama)
Zidni nosač za IPad Kao upravljačka ploča kućne automatizacije, pomoću servo upravljanog magneta za aktiviranje zaslona: U posljednje vrijeme dosta sam vremena proveo automatizirajući stvari u svojoj kući i oko nje. Koristim Domoticz kao aplikaciju za kućnu automatizaciju, za detalje pogledajte www.domoticz.com. U potrazi za aplikacijom nadzorne ploče koja prikazuje sve informacije o Domoticzu
Jeftina i laka robot ploča sa serijskim kabelom: 12 koraka (sa slikama)
JEFTINA I LAGANA PICAXE ROBOTSKA PLOČA SA SERIJSKIM KABLOM: Evo uputa kako izgraditi laku, jednostavnu i jeftinu PICAXE PLOČU za upravljanje SUMO ROBOTOM ili za upotrebu na bilo kojem broju drugih PICAXE 18M2+ projekata