Sadržaj:
- Korak 1: Zahtjevi 1/3 - Hardver
- Korak 2: Zahtjevi 2/3 - Komponente za vaš krug
- Korak 3: Zahtjevi 3/3 - Softver
- Korak 4: Ulazni krug
- Korak 5: Izlazni krug
- Korak 6: [NEOBVEZNO] Kreiranje Borad -a za štampanje i komponenti za lemljenje
- Korak 7: SoC podešavanje
- Korak 8: Programiranje C HPS
- Korak 9: Digitalno preuzimanje ADC -a sa kartice
- Korak 10: Proračun FFT -a
- Korak 11: Prikaz FFT -a
- Korak 12: Montaža
- Korak 13: Zvučni efekti
- Korak 14: [OPCIONALNO] Izrada kacige
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Zdravo! Mi smo tim od 4 učenika sa Politehničke škole Univerziteta Sorbonne:
- Louis Buchert
- Bilal Melehi
- Bao Tinh Piot
- Marco Longépé
Ovaj projekt je realiziran kao dio naših studija i ima za cilj uzeti u obzir brojne alate, kao i pokazati naša teorijska dostignuća.
Čuveni objekt poprima izgled kacige koja liči na junaka određene video igre čije će ime biti izgubljeno. Što se tiče dizajna, imamo i ekran koji prikazuje Fourierovu transformaciju audio signala koji izlazi iz zvučnika. Svrha ovih slušalica je promijeniti glas mobilnog operatera u stvarnom vremenu koristeći brojne efekte koji se mogu birati.
Obrazovni ciljevi:
- Snimite zvuk sa mikrofona
- Pojačajte, filtrirajte, digitalizirajte signal
- Ostvarite FFT signala
- Prikažite ovaj FFT na ekranu
- Sinteza signala
- Izvucite zvuk iz zvučnika
- Ostvarite efekte na audio zvuk (odjek, eho itd …)
Sada kada smo stavili pozadinu i predstavili projekt, vrijeme je da ga uzmete u ruke!
Korak 1: Zahtjevi 1/3 - Hardver
Da bismo uspješno izgradili vašu kacigu, trebat će nam neki hardver za pokretanje uređaja.
- DE0-Nano-SoC razvojna ploča kompanije Terasic + Adafruit TFT LCD ekran (Arduino)
- Pristup 3D štampaču za izradu kacige (Ako ste student koji se približava vašem univerzitetu, neki imaju laboratorije dostupne studentima)
- Računalo s internetskom vezom i minimalnim povezivanjem (USB, Ethernet). Vaše računalo također mora imati snažan procesor jer sastavljanje programa na Qsys -u oduzima puno vremena.
- (Nije potrebno) Štampač koji izrađuje štampane ploče (PCB) od Gerber datoteka radi smanjivanja veličine kola + lemilice za stavljanje komponenti na PCB.
- (Snažno preporučeno): Dobra kava za uživanje u poslu s našim Instructable:)
Korak 2: Zahtjevi 2/3 - Komponente za vaš krug
Evo komponenti potrebnih za vaš krug:
- Audio pojačalo klase AB Texas Instrument LM386 AB
- BreadBoard
- Set muško-muških, muško-ženskih kabela
- LM358P digitalno-analogni pretvarač (DAC)
- Zvučnik
- Mali mikrofon koji se koristi u analognom krugu
- Igrački skup otpornika od 1kOhm do 220kOhm
- Kondenzator 1.5nF
- Kondenzator 50nF
- Kondenzator 100nF
- Kondenzator 100uF
- Kondenzator 220uF
- x4 Kondenzatori 10uF
Korak 3: Zahtjevi 3/3 - Softver
Na kraju, ali ne i najmanje važno, trebat će vam softver:
- Quartus 15.1: Lite verzija
- C kompajler (gcc na primjer)
- Altium za dizajn PCB -a
-
Alterin SoC ugrađeni paket za komunikaciju sa SoC kartom
- Git
Korak 4: Ulazni krug
Izgradimo kolo. Upotrijebite gornju sliku kola kako biste je sastavili na matičnoj ploči. Također ćete vidjeti sliku BreadBoarda i unutrašnje kolo da vidite kako su pinovi povezani. Cijeli krug napaja se istosmjernom strujom (DC) od 5 V. Za to možete koristiti 5V bateriju s USB-B pretvaračem ili generator funkcija.
Neki podsjetnici:
- Napajanje 5V i uzemljenje povezani su na odvojenim vodoravnim vodovima ploče
- Ako želite spojiti 2 komponente paralelno, stavite ih u zajedničku liniju ploče
- Ako želite spojiti 2 serijske komponente, komponente moraju imati samo jedan pin u zajedničkoj liniji matične ploče.
Ne ustručavajte se pogledati namjenski vodič o korištenju matične ploče i povezivanju kola na njoj. Takođe ne zaboravite pažljivo pročitati položaj pina audio pojačala LM358P (pogledajte gornju sliku)
Korak 5: Izlazni krug
Potpuno iste upute kao i korak 4. Četiri ulaza: SDI, a ne CS, SCK, a ne LDAC, dolaze s vaše ploče DE0-Nano-Soc. Kasnije ćemo vidjeti kako ih generirati.
Ne zaboravite pažljivo pročitati položaje pinova audio pojačala LM386 (pogledajte gornju sliku)
Korak 6: [NEOBVEZNO] Kreiranje Borad -a za štampanje i komponenti za lemljenje
Ako imate sreće da posjedujete štampač na ploči ili ga možete koristiti, stvorit ćemo vlastitu štampanu ploču (PCB). Imajte na umu da je ovaj korak opcionalan. Ovaj korak sastoji se samo od premještanja vašeg kruga s matične ploče na PCB.
Trebat će vam ove 2 GERBER datoteke.
Ove datoteke su napravljene na Altiumu. Koristite ih na softveru štampača za PCB da biste odštampali PCB. Nakon što nabavite PCB, provjerite je li PCB čist i jesu li pjesme ispravno ispisane.
Sada dolazi prava stvar: lemljenje. Gornje 2 slike su mape kola na PCB -u. Svaka komponenta ima nazive (R6, C4, MK1 itd.). Slike u koraku 4 i 5 prikazuju parametre komponenti (otpor, vodljivost..). Postavite svaku komponentu s matične ploče na tiskanu ploču prema njihovim nazivima.
Nakon što sve zalemite lemilicom, ispitajte sve komponente voltmetrom da biste provjerili ima li kratkog spoja.
Korak 7: SoC podešavanje
Što se tiče postavljanja SoC -a, morat ćete pokrenuti neke naredbe i skripte uključene u SoC ugrađeni paket unutar terminala. Da biste to učinili, morate dodati nekih $ PATH. PATH se unutar terminala koristi za traženje datoteke u direktorijima koje daje putanja prilikom izvođenja naredbe. Da biste to učinili, upišite sljedeću naredbenu liniju:
izvoz PATH =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH
Zatim upišite naredbenu liniju za generiranje zaglavlja iz sof datoteke. Soft datoteku dobijate sastavljanjem svog projekta na Quartusu. Da biste to učinili, upišite:./generate_header.
Korak 8: Programiranje C HPS
Moramo shvatiti 2 stvari u ovom dijelu, naime pročitati pročitati vrijednost ADC -a i upisati je u SPI.
1. Očitajte vrijednost ADC -a
Adresa memorije u kojoj se nalazi ADC nije izravno dostupna, zapravo linux sustav prisutan na kartici postavlja apstrakciju memorije. Za stvarno pristupanje ADC adresi koristit ćemo funkciju mmap.
"h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK));"
Ova instrukcija dopušta da se na početku osnovne adrese doda pomak kako bi se došlo do adrese memorije dodijeljene za ADC, te da se na rezultirajućoj adresi izvede logika I da se uzme u obzir maskiranje.
Nakon toga, bit će potrebno samo dereferencirati pokazivač u programu da bi se dobila njegova vrijednost.
2. Upišite vrijednost ADC -a u SPI
Manipulacija je identična, ovaj put mmapi dajemo pomak da sleti na adresu dodijeljenu od SPI. Dok pišete u SPI, tehnička dokumentacija navodi da morate na adresu + 1 upisati vrijednost adc -a.
"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"
Ovo uputstvo vam omogućava da pišete na SPI. Zaista bit 4, dakle 1 << 12, je bit koji omogućava aktiviranje SPI -a. S logičkim ILI, stoga dajemo i aktivacijski bit i vrijednost ADC -a SPI -ju.
Korak 9: Digitalno preuzimanje ADC -a sa kartice
Prije svega, morat ćete postaviti Ethernet IP adresu svog računara putem Kontrolne ploče -> Mreža -> Parmesals kartice. Odaberite ethernet sučelje kartice, svojstvo, ipv4 adresu i unesite fiksni IP, masku itd …
Zatim povežite karticu sa strane utičnice za napajanje pomoću mikro USB kabela. Otvorite Quartus programator i pokrenite izvoz. Ova manipulacija će se ponoviti nakon svakog isključivanja kartice.
Promenite utikač mikro USB kabla, da biste se ovaj put povezali pored Ethernet priključka. Sada će s Puttyjem biti potrebno povezati se na karticu putem serijske veze. Konfiguracija je vidljiva na fotografijama, a ideja je da se COM5 zamijeni COM -om nakon čega slijedi broj koji možete pronaći u upravitelju uređaja (desnom tipkom miša kliknite logotip Windowsa da biste ga otvorili).
Pritisnite enter, povezani ste.
Podaci za ponovno pokretanje projekta: - Popravite ethernet ip koji odgovara kartici - Uključite karticu, svaki put kada uključite napajanje, potrebno je sa "program" staviti pod quartus projekt sastavljen na kartici. To se radi putem mikro -USB priključka - Da bismo mogli prikazati rezultat programa, koristimo više mikro USB -a, ali UART - Sa kitom konfiguriranim za serijski COM5 (ili periferiju sa 6 gledatelja) Povežite se na karticu. - Postavite lozinku (passwd) - Postavite IP adresu ifconfig ethxx IPchoice (IP nedaleko od one za eth računala) - Generirajte zaglavlje prema Qsys -u s ugrađenim terminalom (izvoz PATH) - napravite - scp l exec u map - izvršava prog pod kitom
Korak 10: Proračun FFT -a
Da bismo dobili brzu Fourierovu transformaciju u naš C program, koristit ćemo biblioteku koju je napisao Mark Borgerding: Kiss FFT. Biblioteku možete preuzeti ovdje: https://kissfft.sourceforge.net/. Primjena FFT -a na signal neophodna je za izmjenu i primjenu efekata signala. Može poslužiti i za prikaz spektra signala.
Prvi korak u vašem C programu sastoji se u dodjeljivanju memorije za spremanje rezultata FFT -a. Veličina memorije ovisi o broju točaka korištenih za izračunavanje FFT -a. Što više imate bodova, FFT će biti tačniji. Međutim, program će raditi sporije i koristit će više memorije. Imajte na umu da ćete od funkcije kiss_fft dobiti dva niza: ulaz i izlaz funkcije (cx_in i cx_out)
Kada se naš niz napuni novim FFT vrijednostima, tj. Kada je r = Win - 1, obrađujemo FFT. Što se tiče prikaza, mi prikazujemo samo pozitivni dio spektra, jer postoji simetrija između negativnog i pozitivnog dijela.
Što se tiče horizontalne osi, smanjujemo vršne vrijednosti za 100*visinu/(visinu²) kako bismo razlikovali vrhove glavnih frekvencija.
Koristimo sistemski poziv usleep kako bismo definirali frekvenciju čitanja za ADC vrijednosti. Ova frekvencija je trenutno postavljena na 1,5 Hz.
Korak 11: Prikaz FFT -a
Na osnovu primjera danog na Adafruit TFT LCD ekranu dostupnom ovdje: https://www.terasic.com/downloads/cd-rom/de0-nano-s… programirali smo NIOS našeg odbora tako da može čitati ADC vrijednost.
Dakle, ADC registar se dijeli između NIOS -a i HPS -a jer će se vrijednosti ADC -a koristiti za prikaz FFT -a na ekranu NIOS -a, a te iste vrijednosti bit će zapisane na SPI -u kako bi se izbacile s ploče i na kraju pretvorile preko DAC -a za dobivanje analognog signala.
Korak 12: Montaža
Skoro smo gotovi! Morat ćete sastaviti svaki dio projekta (ulazni krug, izlazni krug i ploča). Obavezno spojite dijelove na ispravne pinove prema Quartus projektu.
- Ulazni krug će poslati audio signal snimljen mikrofonom, pojačan, filtriran i pomaknut.
- Program C koji je prisutan na kartici očitavat će vrijednosti ADC -a kao što smo ranije vidjeli i upisat će ih na SPI tako da možemo vratiti vrijednost na GPIO kartice.
- Zatim će izlazni GPIO SPI -a prenijeti informacije koje će dekodirati naš DAC i pojačati trčanjem do zvučnika.
Korak 13: Zvučni efekti
Jedini preostali korak su zvučni efekti.
Dostupni efekti su:
- Filter visoke frekvencije
- Filter niske frekvencije
- …
Pomoću dugmeta možete prebacivati između efekata. Ovo dugme će promijeniti varijablu u našem C programu, tako da može primijeniti pravi efekt.
Korak 14: [OPCIONALNO] Izrada kacige
Ovdje smo u najručnijem koraku projekta:
- Prvo smo zalijepili različite 3D ispisane dijelove kacige.
- Kako bismo popunili praznine između zalijepljenih komada, dodali smo završnu obradu pomoću 3D olovke.
- Općenito smo polirali međuprostore ispunjene olovkom i kacigom tako da slika nakon toga dobro ostane.
- Obojili smo kacigu u 2 sloja: prvi u antracitno -crnoj boji izbliza, a drugi primarno zelene od dalje kako bismo dobili nijanse tamnije zelene.
- Na kraju smo odštampali logo naše škole sa strane kacige