Turinys:

Derintuvas: 9 žingsniai
Derintuvas: 9 žingsniai

Video: Derintuvas: 9 žingsniai

Video: Derintuvas: 9 žingsniai
Video: SANTYKIAI: NEPASITIKIU VYRAIS! 9 žingsniai link pasitikėjimo kitais atstatymo po Toksiško Santykio 2024, Rugsėjis
Anonim
Image
Image
Įrangos sąrašas (nufotografuokite lentą ir „Kevin's Comp“)
Įrangos sąrašas (nufotografuokite lentą ir „Kevin's Comp“)

Šis projektas buvo sukurtas gitaros derinimui gaminti naudojant „Vivado“ir 7 segmentų ekraną. Kai imtuvas suras įvesto garso dažnį, imtuvas palygins šią vertę su tiksliai užkoduotų verčių sąrašu, tiksliai žinomu dažniu, žinomu kaip standartinis teisingos natos aukščio dažnis. Tada imtuvas parodys, kiek artimas ar toli įvestas garsas yra nuo norimos natos. Įdomu tai, kad garso banga yra kelių sinusoidinių bangų formų derinys su tikrais ir įsivaizduojamais komponentais. Nepažįstamiems žmonėms tai gali atrodyti sunku, tačiau yra keletas būdų, kaip vis tiek galime išanalizuoti bangą su tikromis ir įsivaizduojamomis vertybėmis.

Demonstracija:

1 žingsnis: įrangos sąrašas (nufotografuokite lentą ir Kevino kompą)

Pirmiausia mums reikia „Basys 3“plokštės ir kompiuterio, palaikančio šias programas. „Garageband“/„Audacity“ar kitas DAW - įrašyti per mikrofoną ir eksportuoti „wavfiles“

„Python“- gali naudoti „pylab“ir „scipy“mėginių ėmimui ir fft

„Vivado“- prisijungti prie „Basys 3“plokštės ir vizualiai pamatyti rezultatus

2 žingsnis: apžvalga

Apžvalga
Apžvalga

Imtuvą sudaro keli svarbūs komponentai: mikrofonas, mėginių ėmiklis, FFT (greitas Furjė transformacija), lygintuvas, dekoderis ir ekranas. Mikrofono paskirtis yra užfiksuoti įvesties bangos formą. Mėginių ėmiklis gauna mikrofono išvesties signalą ir naudoja FFT signalą paversti dažnio išvestimi. Tada, naudojant FFT išvestį ir suradus maksimalų dydį ir su juo susijusį dažnį, padalytą iš 2, galima rasti dažnį, susijusį su bangos formos žingsniu. Tada ši vertė gali patekti į palyginamąjį. Tada jis lyginamas su peržiūros lentele, kurioje jau yra nustatytos dažnio vertės tobulai visų natų aukščiams. Lygintojui pateikiama norimo užrašo įvestis, kurią jis iš paieškos lentelės gali suderinti norimą natą su teisingu dažniu. Tada lygintojas pasirinks natą, kurios dažnis yra arčiausiai maksimalaus dažnio. Lygintojas palygins dvi vertes ir pamatys, kad dažnio vertė yra artima norimai, o tada sudeda tuos duomenis į signalą. Lygintojas tą signalą nusiųs dekoderiui, kur dekoderis parinks 7 segmentų ekrano anodų įvestis, kad parodytų natos tikslumą.

3 žingsnis: Wav failas

Wav failas
Wav failas

Šiame žingsnyje mes paimsime žingsnio wav failą ir bandysime išvesti to žingsnio dažnį.

Pirmiausia jums reikia pastabos wav failo. Šiame pavyzdyje naudosime 16 bitų stereo wav failą, kurio atrankos dažnis yra 44,1 kHz. Tai galima sukurti DAW, pvz., „Garageband“, arba atsisiųsti. Šiame pavyzdyje „Garageband“sukurtą A4 formato 440 Hz sinusinę bangą galite atsisiųsti čia.

4 žingsnis: „Python“- „Pylab“ir „Scipy“naudojimas

„Python“- „Pylab“ir „Scipy“naudojimo būdai
„Python“- „Pylab“ir „Scipy“naudojimo būdai

„Greitajam Furjė transformacijai“atlikti naudojome „Python“biblioteką. Internetinis šaltinis leido mums mėgdžioti ir pamatyti, kas naudinga „pylab“ir „scipy“.

1. Jei neįdiegėte „pylab“ar „scipy“, turite tai padaryti. Arba „Pycharm“turi labai gerą savybę, kai bandant importuoti „pylab“ar „scipy“, yra neryškus pabraukimas, nurodantis, kad bibliotekos dar neįdiegėte. Tada galite juos įdiegti tiesiogiai, paspausdami raudoną lemputę (ji pasirodys, kai žymeklį priartinsite prie stačiakampio pabraukimo).

2. Naudodami funkciją scipy.io.wavfile.read, perskaitykite ir ištraukite duomenis iš pavyzdinio wav failo. Vykdykite „pylab.fft“duomenis, jums bus pateiktas galios dydžio sąrašas.

3. Tada suraskite iš sąrašo skleidžiamos galios maksimumą. Ieškokite sąrašo indekso, kuriame atsiranda maksimali galia, nes greitesnis būdas sužinoti, koks dažnis yra susijęs su ta galia. Galiausiai grąžinkite maksimalų dažnį. Kadangi vėliau turime įvesti dvejetainį dažnio signalą į VHDL kodą, mes galime konvertuoti plūdės dažnį į dvejetainį ir grąžinti.

5 veiksmas: „Python“atranka ir FFT (rodyti kodą ir jo rezultatus)

Šiame etape visi kreditai pateikiami žemiau esančioje nuorodoje, skirtoje atrankai ir FFT.

samcarcagno.altervista.org/blog/basic-sound…Mūsų kodas:

Įdiegus „pylab“ir „scipy“, „wav“failus galima importuoti ir skaityti.

iš „pylab import“*iš „scipy.io“importo „wavfile“

sampFreq, snd = wavfile.read ('440_sine.wav')

Tada snd.shape parodo mėginių taškus ir kanalų skaičių. Mūsų atveju imties taškai priklauso nuo to, kiek laiko yra „wavfile“, o kanalų skaičius yra 2, nes jis yra stereofoninis.

Tada snd = snd / (2. ** 15) …… xlabel ('Laikas (ms)')

laiko signalą organizuoja į masyvą.

Tada FFT sukuria dažnio ir dydžio (galios) masyvą

Tada per tam tikrą ciklą randamas maksimalus dydis ir su juo susijęs dažnis. Šis dažnis/2 reiškia „wavfile“žingsnį.

Tada, naudojant mūsų pačių kodą, sveikasis skaičius, reiškiantis dažnį, buvo paverstas 12 bitų dvejetainiu skaičiumi ir sukurtas teksto failas su tuo skaičiumi.

6 žingsnis: „Vivado“(lygintuvas)

Vivado (lygintuvas)
Vivado (lygintuvas)

Šioje proceso dalyje mums reikia lygintuvo, kad galėtume palyginti du įvesties dažnius.

1. Sukūrė lyginamąjį prietaisą, kad palygintų, ar įvesties (imtuvo) dažnis yra didesnis, mažesnis, ar neviršija 2 Hz ribos. (tipiškas gitaros derintuvas svyruoja nuo e2 iki g5, 82 Hz - 784 Hz).

2. Kurdami 2 Hz maržą, mes panaudojome RCA, kad prie imtuvo dažnio pridėtume „000000000010“ir patikrintume, kur jis vis dar per mažas vartotojo įvedimui. Tokiu atveju vieno bito signalas „didelis“<= ‘0’, “žemas” <= ‘1’. Tada prie vartotojo įvesties pridedame „000000000010“, kad pamatytumėte, ar imtuvo įvestis yra dar didesnė. Tokiu atveju „didelis“<= „1“, „žemas“<= „0“. Nei vienas, nei kitas atvejis negrąžintų „0“.

3. Kadangi kitai modulio daliai reikalingi konkretūs 4 bitų duomenys, kad būtų galima pasakyti, kas yra imtuvo užrašas, o ne tik grąžinami 2 lyginamieji išėjimai (žemas ir aukštas), turime grąžinti pažymėtam kodui susietą kodą dažnis. Žiūrėkite žemiau pateiktą diagramą:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

B | 0010

Naudojant kelis, jei teiginius, jie skirstomi į pastabas ir koduojami pagal tai, ko reikia septynių segmentų dekoderiui.

7 žingsnis: BASYS 3 PAVADINIMAI Lenta

BASYS NUOTRAUKOS 3 Lenta
BASYS NUOTRAUKOS 3 Lenta

8 veiksmas: „Vivado“(7 segmentų dekoderis su multipleksavimu)

„Vivado“(7 segmentų dekoderis su multipleksavimu)
„Vivado“(7 segmentų dekoderis su multipleksavimu)

Viskam reikia ekrano. Tai svarbus veiksnys, lemiantis dizaino vertę. Todėl turime sukurti ekraną, naudodamiesi septynių segmentų dekoderiu, kuris leistų mums parodyti savo sugebėjimą suprojektuoti imtuvą B plokštėje. Be to, tai padėtų mums atlikti bandymus ir derinimą.

Septynių segmentų dekoderis turi įvestis, pavadintas „Note“, žemas, aukštas ir „CLK“, o išvedamas SSEG, AN ir „Fiz_Hz“. Aukščiau pateiktas blokinės diagramos paveikslėlis, padedantis mums suprasti dizainą.

Dviejų žemų ir aukštų įėjimų tikslas yra suteikti palyginimo priemonės kūrėjui laisvę manipuliuoti, ar garso (bangos) dažnis yra didesnis ar mažesnis už įvesties dažnį („Fix_Hz“), kurį vartotojas nori palyginti. Be to, išvesties SSEG žymi septynių segmentų ekraną ir tašką šalia, o AN - anodus, kuriems užsidegti septynių segmentų ekranas.

Šiame septynių segmentų dekoderyje laikrodis (CLK) vaidina svarbų vaidmenį rodant dvi skirtingas vertes dviejuose ar daugiau skirtingų anodų. Kadangi lenta neleidžia mums vienu metu rodyti dviejų skirtingų verčių, turime naudoti multipleksavimą, kad reikšmė būtų rodoma po vieną, o perjungti į kitą vertę pakankamai greitai, kad mūsų akys negalėtų jos užfiksuoti. Čia atsiranda CLK įvestis.

Norėdami gauti daugiau informacijos, žr. Šaltinio kodą.

9 žingsnis: „Vivado“(komponentų derinimas)

Kai visi moduliai („python“imtuvas, lygintuvas, septynių segmentų dekoderis ir kt.) Yra baigti, mes surenkame naudodami didesnį modulį. Kaip ir paveikslėlyje, esančiame skyriuje „Peržiūra“, mes atitinkamai sujungiame kiekvieną signalą. Norėdami sužinoti, patikrinkite mūsų šaltinio kodą „SW_Hz.vhd“.

Ačiū. Tikiuosi patiks.

Rekomenduojamas: