فهرست مطالب:

تیونر: 9 مرحله
تیونر: 9 مرحله

تصویری: تیونر: 9 مرحله

تصویری: تیونر: 9 مرحله
تصویری: Beat #9 Tuner Production بیت شماره 9 تیونر پروداکشن 2024, نوامبر
Anonim
Image
Image
لیست تجهیزات (از هیئت مدیره و کمپ کوین عکس بگیرید)
لیست تجهیزات (از هیئت مدیره و کمپ کوین عکس بگیرید)

این پروژه برای ایجاد تنظیم کننده گیتار با استفاده از Vivado و صفحه نمایش 7 قسمتی طراحی شده است. هنگامی که تیونر فرکانس صدای ورودی را پیدا می کند ، تیونر این مقدار را با لیستی از مقادیر سخت کد شده برای فرکانس های دقیق که به عنوان فرکانس استاندارد برای ارتفاع صحیح یک نت شناخته می شوند ، مقایسه می کند. سپس تیونر نشان می دهد که صدای ورودی شما چقدر نزدیک یا دور از یادداشت مورد نظر شما است. آنچه جالب است این است که موج صوتی ترکیبی از چند شکل موج سینوسی با اجزای واقعی و خیالی است. در حالی که کار با این افراد برای افراد ناآشنا دشوار به نظر می رسد ، چند راه وجود دارد که ما هنوز می توانیم موجی با ارزشهای واقعی و تخیلی را تجزیه و تحلیل کنیم.

نسخه ی نمایشی:

مرحله 1: لیست تجهیزات (از هیئت مدیره و کمپ کوین عکس بگیرید)

ابتدا به یک برد Basys 3 و رایانه ای نیاز داریم که از برنامه های زیر پشتیبانی کند. Garageband/Audacity یا DAW دیگر - برای ضبط از طریق میکروفون و صادر کردن wavfiles

پایتون - قادر است از pylab و scipy برای نمونه برداری و fft استفاده کند

Vivado - برای اتصال به برد Basys 3 و مشاهده نتایج بصری

مرحله 2: مرور کلی

بررسی اجمالی
بررسی اجمالی

تیونر از چند جزء مهم تشکیل شده است: میکروفون ، نمونه گیر ، FFT (تغییر سریع فوریه) ، مقایسه ، رمزگشایی و صفحه نمایش. هدف میکروفون گرفتن شکل موج ورودی است. نمونه گیر سیگنال خروجی میکروفون را دریافت می کند و از FFT برای تبدیل سیگنال به خروجی قدر در فرکانس ها استفاده می کند. سپس با استفاده از خروجی FFT و یافتن حداکثر اندازه و فرکانس مربوط به آن تقسیم بر 2 ، فرکانس مربوط به گام شکل موج را می توان یافت. سپس این مقدار می تواند وارد مقایسه شود. سپس با یک جدول جستجو مقایسه می شود ، که قبلاً مقادیر فرکانس را برای تنظیمات کامل همه نت ها تعیین کرده است. به مقایسه کننده ورودی برای نت مورد نظر داده می شود که می تواند نت مورد نظر را با فرکانس صحیح آن از جدول جستجو مطابقت دهد. سپس مقایسه کننده نت را با نزدیکترین فرکانس به حداکثر فرکانس انتخاب می کند. مقایسه کننده دو مقدار را مقایسه می کند و می بیند که مقدار فرکانس نزدیک به مقدار مورد نظر است و سپس این داده ها را در سیگنال قرار می دهد. مقایسه کننده آن سیگنال را به رمزگشایی ارسال می کند ، جایی که رمزگذار ورودی های آندهای صفحه 7 بخش را برای نشان دادن دقت یادداشت انتخاب می کند.

مرحله 3: فایل Wav

فایل Wav
فایل Wav

در این مرحله ، ما یک فایل wav از یک گام را گرفته و سعی می کنیم فرکانس آن گام را خروجی دهیم.

ابتدا به فایل wav یک یادداشت نیاز دارید. در این مثال ما از یک فایل wav استریو 16 بیتی با نرخ نمونه گیری 44.1kHz استفاده خواهیم کرد. این را می توان در DAW مانند Garageband ایجاد کرد یا بارگیری کرد. برای این مثال ، یک موج سینوسی A4 440Hz تولید شده توسط ما در Garageband را می توانید در اینجا بارگیری کنید.

مرحله 4: پایتون- استفاده از Pylab و Scipy

پایتون- استفاده از Pylab و Scipy
پایتون- استفاده از Pylab و Scipy

ما از کتابخانه پایتون برای انجام "تبدیل سریع فوریه" استفاده کردیم. منابع آنلاین به ما این امکان را می دهند که تقلید کنیم و ببینیم چه چیزی در pylab و scipy مفید است.

1. اگر pylab یا scipy را نصب نکرده اید ، باید این کار را انجام دهید. یا اینکه Pycharm ویژگی بسیار خوبی دارد ، وقتی سعی می کنید pylab یا scipy را وارد کنید ، یک خط زیر خطی وجود دارد که به شما می گوید هنوز کتابخانه را نصب نکرده اید. سپس می توانید آنها را مستقیماً با فشار دادن لامپ قرمز نصب کنید (هنگامی که مکان نما را در نزدیک خط زیر خطی قرار می دهید ظاهر می شود).

2. با استفاده از تابع scipy.io.wavfile.read ، داده های نمونه فایل wav را بخوانید و بیرون بیاورید. داده ها را توسط pylab.fft اجرا کنید ، لیستی از قدرت را به شما باز می گرداند.

3. سپس حداکثر توان خروجی از لیست را پیدا کنید. به دنبال فهرست فهرست جایی باشید که حداکثر توان در آن رخ می دهد زیرا راه سریعتر برای پیدا کردن فرکانس مرتبط با آن قدرت است. در نهایت حداکثر فرکانس را برگردانید. از آنجا که بعداً نیاز داریم یک سیگنال فرکانس دوتایی را به کد VHDL وارد کنیم ، می توانیم فرکانس در float را به باینری تبدیل کرده و آن را برگردانیم.

مرحله 5: نمونه برداری پایتون و FFT (نمایش کد و نتایج آن)

در این مرحله ، اعتبار کامل برای این نمونه و FFT به این لینک زیر می رود.

samcarcagno.altervista.org/blog/basic-sound… کد ما:

پس از نصب pylab و scipy ، فایل های wav قابل وارد کردن و خواندن هستند.

از pylab import*از scipy.io import wavfile

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

سپس snd.shape نقاط نمونه و تعداد کانال ها را نشان می دهد. در مورد ما ، نقاط نمونه بستگی به طول فایل wavfile و تعداد کانال ها 2 دارد زیرا استریو است.

سپس snd = snd / (2. ** 15) …… xlabel ('زمان (ms)')

سیگنال زمان را در یک آرایه سازماندهی می کند.

سپس FFT یک آرایه در فرکانس و اندازه ایجاد می کند (قدرت)

سپس از طریق حلقه while حداکثر اندازه و فرکانس مربوط به آن را پیدا کنید. این فرکانس/2 نشان دهنده گام wavfile است.

سپس با استفاده از کد خود ، عدد صحیحی که فرکانس را نشان می دهد به یک عدد باینری 12 بیتی تبدیل شد و یک فایل متنی با آن شماره در آن ایجاد شد.

مرحله 6: Vivado (مقایسه کننده)

ویوادو (مقایسه کننده)
ویوادو (مقایسه کننده)

در این قسمت از فرآیند ، ما به یک مقایسه کننده برای مقایسه دو فرکانس ورودی نیاز داریم.

1. یک مقایسه کننده برای مقایسه اینکه آیا فرکانس ورودی (گیرنده) بیشتر ، پایین تر یا در محدوده حاشیه 2 هرتز است ، ایجاد کرده است. (تیونر معمولی گیتار از e2 تا g5 ، 82 هرتز تا 784 هرتز متغیر است).

2. هنگام ایجاد حاشیه 2 هرتز ، ما از RCA برای افزودن "000000000010" به فرکانس گیرنده استفاده کردیم و بررسی کردیم که هنوز کجا برای ورودی کاربر بسیار کم است. در این صورت ، سیگنال تک بیتی "بالا" <= "0" ، "کم" <= '1'. سپس "000000000010" را به ورودی کاربر اضافه می کنیم تا ببینیم آیا ورودی گیرنده حتی بالاتر از آن است. اگر چنین باشد ، "زیاد" <= "1" ، "کم" <= "0". هیچ کدام از این دو مورد "0" را بر نمی گردانند.

3. از آنجا که قسمت بعدی ماژول به یک داده 4 بیتی خاص نیاز دارد تا مشخص کند که یادداشت گیرنده چیست ، نه تنها 2 خروجی مقایسه ای (کم و زیاد) را برمی گردانیم ، ما باید کد همراه را به یادداشت برگردانیم ، که با فرکانس. لطفاً به نمودار زیر مراجعه کنید:

C | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

A | 0001

A# | 1001

ب | 0010

استفاده از چندین دستور if برای طبقه بندی آنها در یادداشت و کدگذاری آنها در آنچه برای رمزگشای هفت بخش مورد نیاز است.

مرحله 7: تخته تصاویر BASYS 3

تصاویر BASYS 3 تخته
تصاویر BASYS 3 تخته

مرحله 8: Vivado (رمزگشای 7 بخش با مالتی پلکس)

Vivado (رمزگشای 7 بخش با مالتی پلکس)
Vivado (رمزگشای 7 بخش با مالتی پلکس)

همه چیز نیاز به صفحه نمایش دارد. این یک عامل مهم است که ارزش یک طرح را تعیین می کند. بنابراین ، ما باید یک صفحه نمایش با استفاده از رمزگشای هفت بخش ایجاد کنیم ، که به ما امکان می دهد توانایی خود را در طراحی تیونر در برد B نشان دهیم. همچنین ، در آزمایش و اشکال زدایی به ما کمک می کند.

رمزگشای هفت بخش شامل ورودی هایی با نام Note ، low ، high و CLK است ، در حالی که SSEG ، AN و Fiz_Hz را خروجی می دهد. در بالا تصویری از بلوک دیاگرام وجود دارد که به ما در درک طرح کمک می کند.

هدف از داشتن دو ورودی جداگانه کم و زیاد این است که به طراح مقایسه کننده آزادی دستکاری در فرکانس صدا (موج) بالاتر یا پایین تر از فرکانس ورودی (Fix_Hz) را که کاربر می خواهد مقایسه کند ، بدهد. علاوه بر این ، SSEG خروجی نشان دهنده نمایش هفت قسمت و نقطه بعدی است در حالی که AN نشان دهنده آندهایی است که مجموعه هفت قسمت برای آنها روشن می شود.

در این رمزگشای هفت قسمتی ، ساعت (CLK) نقش مهمی در نمایش دو مقدار متفاوت بر روی دو یا چند آند متفاوت دارد. از آنجا که برد به ما اجازه نمی دهد دو مقدار مختلف را به طور همزمان نمایش دهیم ، باید از multiplexing برای نشان دادن یک مقدار در یک زمان استفاده کنیم ، در حالی که به سرعت آنقدر سریع به مقداری دیگر تغییر می دهیم که چشم های ما قادر به ضبط آن نیستند. اینجاست که ورودی CLK مطرح می شود.

برای اطلاعات بیشتر ، لطفاً به کد منبع مراجعه کنید.

مرحله 9: Vivado (ترکیب اجزاء)

با تکمیل هر ماژول (گیرنده پایتون ، مقایسه ، رمزگشای هفت بخش و غیره) ، سپس ماژول بزرگتر را کنار هم قرار می دهیم. درست مانند تصویر زیر "Over view" نشان داده شده ، ما هر سیگنال را مطابق آن متصل می کنیم. برای مرجع ، لطفاً کد منبع ما "SW_Hz.vhd" را بررسی کنید.

متشکرم. امیدوارم که شما لذت بردن از.

توصیه شده: