Obsah:

Tuner: 9 kroků
Tuner: 9 kroků

Video: Tuner: 9 kroků

Video: Tuner: 9 kroků
Video: CZAS NA TUNING MADE IN POLAND #9 VW Golf IV 300HP 510NM 1 9tdi 2024, Listopad
Anonim
Image
Image
Seznam vybavení (vyfoťte tabuli a Kevinovu sestavu)
Seznam vybavení (vyfoťte tabuli a Kevinovu sestavu)

Tento projekt byl navržen tak, aby vytvořil kytarový tuner pomocí Vivado a 7segmentového displeje. Jakmile tuner najde frekvenci zadaného zvuku, tuner porovná tuto hodnotu se seznamem pevně zakódovaných hodnot pro přesné frekvence, které jsou známé jako standardní frekvence pro správnou výšku noty. Poté tuner zobrazí, jak blízko nebo daleko je váš zadaný zvuk od požadované noty. Zajímavé je, že zvuková vlna je kombinací více sinusových průběhů se skutečnými a imaginárními složkami. I když se to může zdát obtížné pracovat s neznámými, existuje několik způsobů, jak můžeme vlnu analyzovat se skutečnými a imaginárními hodnotami.

Demo:

Krok 1: Seznam vybavení (vyfoťte desku a Kevinovu Comp)

Nejprve potřebujeme desku Basys 3 a počítač, který podporuje následující programy. Garageband/Audacity nebo jiný DAW - nahrávat pomocí mikrofonu a exportovat soubory wav

Python - schopen používat pylab a scipy pro vzorkování a fft

Vivado - připojit se k desce Basys 3 a vizuálně vidět výsledky

Krok 2: Přehled

Přehled
Přehled

Tuner se skládá z několika důležitých komponent: mikrofon, sampler, FFT (Fast Fourierova transformace), komparátor, dekodér a displej. Účelem mikrofonu je zachytit vstupní průběh. Vzorkovač přijímá výstupní signál mikrofonu a pomocí FFT převádí signál na výstup velikosti ve frekvencích. Poté pomocí výstupu FFT a nalezení maximální velikosti a k ní přidružené frekvence děleno 2 lze nalézt frekvenci spojenou s výškou průběhu vlny. Tato hodnota pak může jít do komparátoru. Poté je porovnán s vyhledávací tabulkou, která již má nastavené frekvenční hodnoty pro perfektní výšky všech not. Komparátoru je zadán vstup pro požadovanou notu, kterou pak může z vyhledávací tabulky přiřadit požadované notě ke správné frekvenci. Poté komparátor vybere notu s nejbližší frekvencí k maximální frekvenci. Komparátor porovná obě hodnoty a uvidí, že hodnota frekvence je na požadované hodnotě, a poté vloží tato data do signálu. Komparátor odešle tento signál do dekodéru, kde dekodér zvolí vstupy pro anody 7segmentového displeje, aby ukázal přesnost noty.

Krok 3: Soubor Wav

Wav soubor
Wav soubor

V tomto kroku vezmeme soubor wav o výšce a pokusíme se vydat frekvenci této výšky.

Nejprve potřebujete wav soubor poznámky. V tomto příkladu použijeme 16bitový stereofonní soubor wav se vzorkovací frekvencí 44,1 kHz. To lze buď vytvořit v DAW, jako je Garageband, nebo stáhnout. V tomto případě si můžete stáhnout sinusovou vlnu A4 440 Hz, kterou jsme vytvořili na Garageband, zde.

Krok 4: Python- Použití Pylabu a Scipy

Python- použití Pylabu a Scipy
Python- použití Pylabu a Scipy

K provedení „rychlé Fourierovy transformace“jsme použili knihovnu Python. Online zdroj nám umožnil napodobit a zjistit, co je užitečné v pylabu a scipy.

1. Pokud jste nenainstalovali pylab nebo scipy, musíte to udělat. Nebo Pycharm má velmi dobrou funkci, když se pokusíte importovat pylab nebo scipy, je zde podtržené podtržení, které vám říká, že jste si knihovnu ještě nenainstalovali. Poté je můžete nainstalovat přímo stisknutím červené žárovky (objeví se, když umístíte kurzor poblíž vlnitého podtržení).

2. Pomocí funkce scipy.io.wavfile.read načtěte a vytáhněte data ze vzorového souboru wav. Projděte data pylab.fft, vrátí vám seznam velikosti síly.

3. Poté najděte maximum výkonu vyzařovaného ze seznamu. Vyhledejte index seznamu, kde dochází k maximálnímu výkonu, protože je to rychlejší způsob, jak zjistit, jaká frekvence je s tímto výkonem spojena. Nakonec vraťte maximální frekvenci. Protože později potřebujeme vložit binární frekvenční signál do kódu VHDL, můžeme frekvenci ve floatu převést na binární a vrátit ji.

Krok 5: Vzorkování Pythonu a FFT (Zobrazit kód a jeho výsledky)

V tomto kroku přejděte k odběru vzorků a FFT na tento odkaz níže.

samcarcagno.altervista.org/blog/basic-sound… Náš kód:

Po instalaci pylab a scipy je možné importovat a číst soubory wav.

z pylab import*ze scipy.io import wavfile

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

Pak snd.shape představuje ukázkové body a počet kanálů. V našem případě vzorkovací body závisí na tom, jak dlouhý je soubor wav a počet kanálů je 2, protože je stereo.

Potom snd = snd / (2. ** 15) …… xlabel ('Čas (ms)')

organizuje časový signál do pole.

Poté FFT vytvoří pole frekvence a velikosti (výkon)

Poté je pomocí smyčky while nalezena maximální velikost a frekvence s ní spojená. Tato frekvence/2 představuje výšku vlnového souboru.

Poté pomocí našeho vlastního kódu bylo celé číslo představující frekvenci převedeno na 12bitové binární číslo a byl v něm vytvořen textový soubor.

Krok 6: Vivado (komparátor)

Vivado (komparátor)
Vivado (komparátor)

V této části procesu potřebujeme komparátor pro porovnání dvou vstupních frekvencí.

1. Vytvořil komparátor pro porovnání, zda je vstupní (přijímací) frekvence vyšší, nižší nebo v rámci definovaného rozsahu rozpětí 2 Hz. (typický kytarový tuner se pohybuje od e2 do g5, 82 Hz až 784 Hz).

2. Při vytváření okraje 2 Hz jsme pomocí RCA přidali „000000000010“k frekvenci přijímače a zkontrolovali, kde je stále příliš nízká pro vstup uživatele. Pokud je tomu tak, jednobitový signál „vysoký“<= „0“, „nízký“<= „1“. Poté přidáme do uživatelského vstupu „000000000010“, abychom zjistili, zda je vstup přijímače ještě vyšší. V takovém případě „vysoká“<= „1“, „nízká“<= ‚0‘. Ani jeden případ nevrátí „0“.

3. Vzhledem k tomu, že další část modulu potřebuje konkrétní 4bitová data, aby bylo možné zjistit, co je poznámka příjemce, nejen že vrací 2 srovnávací výstupy (nízký a vysoký), musíme vrátit přidružený kód k poznámce, který je spojen s frekvence. Viz následující tabulka:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

B | 0010

Pomocí několika příkazů if je kategorizujte do poznámky a zakódujte je do toho, co je potřeba pro sedmisegmentový dekodér.

Krok 7: OBRÁZKY BASYS 3 Board

OBRÁZKY BASYS 3 Board
OBRÁZKY BASYS 3 Board

Krok 8: Vivado (7segmentový dekodér s multiplexováním)

Vivado (7segmentový dekodér s multiplexováním)
Vivado (7segmentový dekodér s multiplexováním)

Všechno potřebuje displej. Je to důležitý faktor, který určuje hodnotu designu. Proto musíme vytvořit displej pomocí sedmisegmentového dekodéru, což by nám umožnilo prokázat naši schopnost navrhnout tuner na desce B. Také by nám to pomohlo při testování a ladění.

Sedmisegmentový dekodér obsahuje vstupy pojmenované Note, low, high a CLK při výstupu SSEG, AN a Fiz_Hz. Nahoře je obrázek blokového diagramu, který nám pomáhá porozumět návrhu.

Účelem dvou oddělených nízkých a vysokých vstupů je poskytnout konstruktérovi komparátoru volnost při manipulaci s tím, zda je zvuková (vlnová) frekvence vyšší nebo nižší než vstupní frekvence (Fix_Hz), kterou chce uživatel porovnávat. Kromě toho výstupní SSEG představuje zobrazení sedmi segmentů a tečku vedle, zatímco AN představuje anody, pro které se rozsvítí sada zobrazení sedmi segmentů.

V tomto sedmisegmentovém dekodéru hrají hodiny (CLK) důležitou roli při zobrazování dvou různých hodnot na dvou nebo více různých anodách. Protože nám deska neumožňuje zobrazit dvě různé hodnoty současně, musíme použít multiplexování k zobrazení hodnoty po jedné, přičemž přepneme na jinou hodnotu dostatečně rychle, aby ji naše oči nedokázaly zachytit. Zde vstupuje do hry vstup CLK.

Další informace naleznete ve zdrojovém kódu.

Krok 9: Vivado (kombinace komponent)

Po dokončení všech modulů (přijímač pythonu, komparátor, sedmisegmentový dekodér atd.) Jsme pak dali dohromady pomocí většího modulu. Stejně jako na obrázku v sekci "Pohled" zobrazujeme každý signál odpovídajícím způsobem. Pro informaci prosím zkontrolujte náš zdrojový kód "SW_Hz.vhd".

Děkuji. Doufám, že si to užiješ.

Doporučuje: