فهرست مطالب:
- مرحله 1: لیست تجهیزات (از هیئت مدیره و کمپ کوین عکس بگیرید)
- مرحله 2: مرور کلی
- مرحله 3: فایل Wav
- مرحله 4: پایتون- استفاده از Pylab و Scipy
- مرحله 5: نمونه برداری پایتون و FFT (نمایش کد و نتایج آن)
- مرحله 6: Vivado (مقایسه کننده)
- مرحله 7: تخته تصاویر BASYS 3
- مرحله 8: Vivado (رمزگشای 7 بخش با مالتی پلکس)
- مرحله 9: Vivado (ترکیب اجزاء)
تصویری: تیونر: 9 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این پروژه برای ایجاد تنظیم کننده گیتار با استفاده از 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 استریو 16 بیتی با نرخ نمونه گیری 44.1kHz استفاده خواهیم کرد. این را می توان در DAW مانند Garageband ایجاد کرد یا بارگیری کرد. برای این مثال ، یک موج سینوسی A4 440Hz تولید شده توسط ما در Garageband را می توانید در اینجا بارگیری کنید.
مرحله 4: پایتون- استفاده از 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
مرحله 8: 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" را بررسی کنید.
متشکرم. امیدوارم که شما لذت بردن از.
توصیه شده:
مرحله به مرحله ساخت کامپیوتر: 9 مرحله
گام به گام ساخت کامپیوتر: لوازم: سخت افزار: مادربرد CPU & amp؛ CPU coolerPSU (منبع تغذیه) ذخیره سازی (HDD/SSD) RAMGPU (لازم نیست) مورد ابزار: پیچ گوشتی دستبند ESD/خمیر ماتریسمی با اپلیکاتور
سه مدار بلندگو -- آموزش مرحله به مرحله: 3 مرحله
سه مدار بلندگو || آموزش گام به گام: مدار بلندگو سیگنال های صوتی دریافت شده از محیط را بر روی MIC تقویت می کند و از محل تولید صدای تقویت شده به بلندگو ارسال می کند. در اینجا ، من سه روش مختلف برای ساخت این مدار بلندگو با استفاده از موارد زیر را به شما نشان خواهم داد
مرحله به مرحله اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: 4 مرحله
گام به گام اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: اتوماسیون خانگی گام به گام با استفاده از Wemos D1 Mini با طراحی PCB چند هفته قبل ما آموزش "اتوماسیون خانگی با استفاده از تمشک پای" را در rootaid.com منتشر کردیم که مورد استقبال علاقه مندان و علاقه مندان قرار گرفت. دانشجو. سپس یکی از اعضای ما آمد
هک تیونر تلویزیون برای خواندن عکس های زمین از ماهواره ها: 7 مرحله (همراه با تصاویر)
هک تیونر تلویزیون برای خواندن عکس های زمین از ماهواره ها: ماهواره های زیادی در بالای سر ما وجود دارد. آیا می دانید که تنها با استفاده از رایانه ، تیونر تلویزیون و آنتن ساده DIY می توانید انتقالها را از آنها دریافت کنید؟ به عنوان مثال ، تصاویر زمین از زمان واقعی. من به شما نشان می دهم چگونه. شما نیاز دارید:- 2 هفته
نصب Smapler V0002 مرحله به مرحله: 5 مرحله
نصب Smapler V0002 گام به گام: Smapler یک مدار است که به تولید صدای مولد توسط David Cuartielles و Ino Schlaucher از BlushingBoy.org اختصاص داده شده است. Smapler v0002 - نسخه آاکا سنگاپور - چیزی نیست جز سپر آردوینو که برای بازی استری بد بو استفاده می شود