Daftar Isi:
- Langkah 1: Daftar Peralatan (ambil Gambar Papan dan Comp Kevin)
- Langkah 2: Ikhtisar
- Langkah 3: File Wav
- Langkah 4: Python- Penggunaan Pylab dan Scipy
- Langkah 5: Python-Sampling dan FFT (Tampilkan Kode dan Hasilnya)
- Langkah 6: Vivado (Pembanding)
- Langkah 7: GAMBAR-GAMBAR Papan BASYS 3
- Langkah 8: Vivado (7 Segmen Decoder Dengan Multiplexing)
- Langkah 9: Vivado (Menggabungkan Komponen)
Video: Penyetel: 9 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Proyek ini dirancang untuk membuat tuner gitar menggunakan Vivado dan tampilan 7-segmen. Setelah tuner menemukan frekuensi suara yang dimasukkan, tuner akan membandingkan nilai tersebut dengan daftar nilai hard-code untuk frekuensi tepat yang dikenal sebagai frekuensi standar untuk nada nada yang benar. Kemudian tuner akan menampilkan seberapa dekat atau jauh suara yang Anda masukkan dari nada yang Anda inginkan. Yang menarik adalah bahwa gelombang suara adalah kombinasi dari beberapa bentuk gelombang sinusoidal dengan komponen nyata dan imajiner. Meskipun ini mungkin tampak sulit untuk dikerjakan bagi mereka yang tidak terbiasa, ada beberapa cara agar kita masih dapat menganalisis gelombang dengan nilai nyata dan imajiner.
Demo:
Langkah 1: Daftar Peralatan (ambil Gambar Papan dan Comp Kevin)
Pertama kita membutuhkan papan Basys 3 dan komputer yang mendukung program berikut. Garageband/Audacity atau DAW lain - untuk merekam melalui mikrofon dan mengekspor file wav
Python - dapat menggunakan pylab dan scipy untuk pengambilan sampel dan fft
Vivado - untuk menyambungkan ke papan Basys 3 dan melihat hasilnya secara visual
Langkah 2: Ikhtisar
Tuner terdiri dari beberapa komponen penting: mikrofon, sampler, FFT (Fast Fourier Transform), komparator, dekoder, dan tampilan. Tujuan dari mikrofon adalah untuk menangkap bentuk gelombang input. Sampler menerima sinyal keluaran mikrofon dan menggunakan FFT untuk mengubah sinyal menjadi keluaran dalam frekuensi yang besar. Kemudian dengan menggunakan output dari FFT dan menemukan magnitudo maksimum dan frekuensi yang terkait dengannya dibagi 2, frekuensi yang terkait dengan nada bentuk gelombang dapat ditemukan. Nilai itu kemudian bisa masuk ke komparator. Kemudian dibandingkan dengan tabel pencarian, yang telah menetapkan nilai frekuensi untuk nada sempurna dari semua nada. Komparator diberi masukan untuk nada yang diinginkan, yang kemudian dapat mencocokkan nada yang diinginkan dengan frekuensi yang benar dari tabel pencarian. Kemudian komparator akan memilih nada dengan frekuensi terdekat dengan frekuensi maksimum. Komparator akan membandingkan dua nilai dan melihat dari dekat nilai frekuensi dengan yang diinginkan dan kemudian memasukkan data tersebut ke dalam sinyal. Komparator akan mengirimkan sinyal itu ke dekoder, di mana dekoder akan memilih input untuk anoda dari tampilan 7-segmen untuk menunjukkan keakuratan catatan.
Langkah 3: File Wav
Pada langkah ini, kita akan mengambil file wav dari sebuah pitch dan mencoba mengeluarkan frekuensi dari pitch tersebut.
Pertama, Anda memerlukan file wav dari sebuah catatan. Dalam contoh ini kita akan menggunakan file wav stereo 16 bit dengan sampling rate 44.1kHz. Ini dapat dibuat dalam DAW seperti Garageband atau diunduh. Untuk contoh ini, gelombang sinus A4 440Hz yang kami hasilkan di Garageband dapat diunduh di sini.
Langkah 4: Python- Penggunaan Pylab dan Scipy
Kami menggunakan pustaka Python untuk melakukan "transformasi Fast Fourier". Sumber daya online memungkinkan kami untuk meniru dan melihat apa yang berguna di pylab dan scipy.
1. Jika Anda belum menginstal pylab atau scipy, Anda harus melakukannya. Atau, Pycharm memiliki fitur yang sangat bagus, ketika mencoba mengimpor pylab atau scipy, ada garis bawah berlekuk yang memberi tahu Anda bahwa Anda belum menginstal perpustakaan. Anda kemudian dapat menginstalnya secara langsung dengan menekan bola lampu merah (ini akan muncul ketika Anda meletakkan kursor di dekat garis bawah yang berlekuk-lekuk).
2. Menggunakan fungsi scipy.io.wavfile.read, membaca dan mengeluarkan data dari sampel file wav. Jalankan melalui data oleh pylab.fft, itu akan mengembalikan Anda daftar besarnya daya.
3. Kemudian temukan daya maksimum yang dipancarkan dari daftar. Cari indeks daftar di mana kekuatan maksimum terjadi karena cara yang lebih cepat untuk menemukan frekuensi apa yang terkait dengan kekuatan itu. Akhirnya kembalikan frekuensi maks. Karena nanti kita perlu memasukkan sinyal frekuensi biner ke dalam kode VHDL, kita dapat mengubah frekuensi dalam float menjadi biner, dan mengembalikannya.
Langkah 5: Python-Sampling dan FFT (Tampilkan Kode dan Hasilnya)
Pada langkah ini, kredit penuh pergi ke tautan di bawah ini untuk pengambilan sampel dan FFT.
samcarcagno.altervista.org/blog/basic-sound…Kode Kami:
Setelah pylab dan scipy diinstal, file wav dapat diimpor dan dibaca.
dari impor pylab * dari scipy.io impor wavfile
sampFreq, snd = wavfile.read('440_sine.wav')
Kemudian snd.shape mewakili titik sampel dan jumlah saluran. Dalam kasus kami, titik sampel tergantung pada berapa lama file wav dan # saluran adalah 2 karena stereo.
Kemudian snd = snd / (2.**15)…… xlabel('Waktu (md)')
mengatur sinyal waktu ke dalam array.
Kemudian FFT membuat array dalam frekuensi dan besarnya (Power)
Kemudian melalui loop sementara, magnitudo maksimum dan frekuensi yang terkait dengannya ditemukan. Frekuensi/2 itu mewakili nada dari file wav.
Kemudian menggunakan kode kita sendiri, bilangan bulat yang mewakili frekuensi diubah menjadi bilangan biner 12 bit dan file teks dibuat dengan nomor itu di dalamnya.
Langkah 6: Vivado (Pembanding)
Pada bagian proses ini, kita membutuhkan komparator untuk membandingkan dua frekuensi input.
1. Membuat komparator untuk membandingkan apakah frekuensi input (penerima) lebih tinggi, lebih rendah atau dalam rentang margin 2 Hz yang ditentukan. (tuner gitar tipikal berkisar dari e2 hingga g5, 82 Hz hingga 784 Hz).
2. Saat membuat margin 2 Hz, kami menggunakan RCA untuk menambahkan “000000000010” ke frekuensi penerima, dan memeriksa di mana masih terlalu rendah untuk input pengguna. Jika demikian, sinyal bit tunggal “tinggi” <= ‘0’, “rendah” <= ‘1’. Kemudian kami menambahkan "000000000010" ke input pengguna untuk melihat apakah input penerima lebih tinggi dari itu. Jika demikian, “tinggi” <= ‘1’, “rendah” <= ‘0’. Kasus keduanya tidak akan mengembalikan '0'.
3. Karena bagian selanjutnya dari modul membutuhkan data 4-bit khusus untuk memberi tahu apa catatan penerima, tidak hanya mengembalikan 2 output komparatif (rendah dan tinggi), kita perlu mengembalikan kode yang dikaitkan dengan catatan, yang terkait dengan frekuensi. Silakan lihat grafik di bawah ini:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
Sebuah | 0001
A# | 1001
B | 0010
Menggunakan beberapa pernyataan if untuk mengkategorikannya menjadi catatan dan mengkodekannya ke dalam apa yang dibutuhkan untuk dekoder tujuh segmen.
Langkah 7: GAMBAR-GAMBAR Papan BASYS 3
Langkah 8: Vivado (7 Segmen Decoder Dengan Multiplexing)
Semuanya membutuhkan tampilan. Ini adalah faktor penting yang menentukan nilai sebuah desain. Oleh karena itu, kita perlu membuat tampilan menggunakan dekoder tujuh segmen, yang memungkinkan kita menunjukkan kemampuan kita dalam mendesain tuner pada Papan B. Juga, itu akan membantu kami dalam pengujian dan debugging.
Dekoder tujuh segmen berisi input bernama Note, rendah, tinggi, dan CLK, saat mengeluarkan SSEG, AN, dan Fiz_Hz. Ada gambar diagram blok di atas untuk membantu kita memahami desain.
Tujuan memiliki dua input rendah dan tinggi yang terpisah adalah untuk memberikan kebebasan kepada perancang komparator untuk memanipulasi apakah frekuensi suara (gelombang) lebih tinggi atau lebih rendah dari frekuensi input (Fix_Hz) yang ingin dibandingkan oleh pengguna. Selain itu, output SSEG mewakili tampilan tujuh segmen dan titik di sebelahnya, sedangkan AN mewakili anoda yang menampilkan rangkaian tujuh segmen untuk menyala.
Dalam dekoder tujuh segmen ini, jam (CLK) memainkan peran penting dalam menampilkan dua nilai yang berbeda pada dua atau lebih anoda yang berbeda. Karena Board tidak mengizinkan kita untuk menampilkan dua nilai yang berbeda secara bersamaan, kita harus menggunakan multiplexing untuk menampilkan nilai satu per satu, sementara beralih ke nilai lain dengan cukup cepat sehingga mata kita tidak dapat menangkapnya. Di sinilah input CLK berperan.
Untuk informasi lebih lanjut, silakan merujuk ke kode sumber.
Langkah 9: Vivado (Menggabungkan Komponen)
Dengan setiap modul (penerima python, komparator, dekoder tujuh segmen, dll.) selesai, kami kemudian menyatukannya menggunakan modul yang lebih besar. Sama seperti gambar di bawah bagian "Over view" yang ditampilkan, kami menghubungkan setiap sinyal sesuai dengan itu. Untuk referensi, silakan periksa kode sumber kami "SW_Hz.vhd".
Terima kasih. Semoga kamu menikmati.
Direkomendasikan:
Sistem Peringatan Parkir Terbalik Mobil Arduino - Langkah demi Langkah: 4 Langkah
Sistem Peringatan Parkir Mundur Mobil Arduino | Langkah demi Langkah: Pada proyek kali ini, saya akan merancang Rangkaian Sensor Parkir Mundur Mobil Arduino sederhana menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem peringatan mundur mobil berbasis Arduino ini dapat digunakan untuk Navigasi Otonom, Jarak Robot, dan r
Langkah demi Langkah Membangun PC: 9 Langkah
Langkah demi Langkah Membangun PC: Perlengkapan: Perangkat Keras: MotherboardCPU & Pendingin CPUPSU (Unit catu daya)Penyimpanan (HDD/SSD)RAMGPU (tidak diperlukan)Kasing Alat: Obeng Gelang ESD/pasta matstermal dengan aplikator
Tiga Sirkuit Loudspeaker -- Tutorial Langkah-demi-Langkah: 3 Langkah
Tiga Sirkuit Loudspeaker || Tutorial Langkah-demi-Langkah: Sirkuit Loudspeaker memperkuat sinyal audio yang diterima dari lingkungan ke MIC dan mengirimkannya ke Speaker dari mana audio yang diperkuat diproduksi. Di sini, saya akan menunjukkan kepada Anda tiga cara berbeda untuk membuat Sirkuit Loudspeaker ini menggunakan:
Pendidikan Langkah demi Langkah dalam Robotika Dengan Kit: 6 Langkah
Pendidikan Selangkah demi Selangkah dalam Robotika Dengan Kit: Setelah beberapa bulan membuat robot saya sendiri (silakan lihat semua ini), dan setelah dua kali mengalami bagian yang gagal, saya memutuskan untuk mengambil langkah mundur dan memikirkan kembali strategi dan arahan. Pengalaman beberapa bulan terkadang sangat bermanfaat, dan
Levitasi Akustik Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): 8 Langkah
Akustik Levitation Dengan Arduino Uno Langkah-demi-Langkah (8-langkah): transduser suara ultrasonik L298N Dc female adapter power supply dengan pin dc laki-laki Arduino UNOBreadboardCara kerjanya: Pertama, Anda mengunggah kode ke Arduino Uno (ini adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk mengonversi kode (C++)