جدول المحتويات:
- الخطوة 1: قائمة المعدات (خذ صورة من المجلس وشركة Kevin's Comp)
- الخطوة 2: نظرة عامة
- الخطوة 3: ملف Wav
- الخطوة 4: بايثون- استخدامات Pylab و Scipy
- الخطوة 5: Python-Sampling و FFT (اعرض الكود ونتائجها)
- الخطوة 6: Vivado (المقارنة)
- الخطوة 7: صور BASYS 3 Board
- الخطوة 8: Vivado (وحدة فك ترميز 7 قطاعات مع مضاعفة الإرسال)
- الخطوة 9: Vivado (دمج المكونات)
فيديو: الموالف: 9 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
تم تصميم هذا المشروع لإنشاء موالف جيتار باستخدام Vivado وشاشة من 7 مقاطع. بمجرد أن يجد الموالف تردد الصوت المدخل ، سيقارن الموالف هذه القيمة بقائمة من القيم المشفرة للترددات الدقيقة المعروفة بالتردد القياسي للنغمة الصحيحة للنغمة. ثم سيعرض الموالف مدى قرب أو بعد الصوت الذي تم إدخاله من الملاحظة المرغوبة. الأمر المثير للاهتمام هو أن الموجة الصوتية هي مزيج من أشكال موجة جيبية متعددة مع مكونات حقيقية وخيالية. في حين أن هذا قد يبدو من الصعب التعامل معه لأولئك غير المألوفين ، إلا أن هناك بعض الطرق التي لا يزال بإمكاننا تحليل الموجة بقيم حقيقية وخيالية.
عرض:
الخطوة 1: قائمة المعدات (خذ صورة من المجلس وشركة Kevin's Comp)
نحتاج أولاً إلى لوحة Basys 3 وجهاز كمبيوتر يدعم البرامج التالية: Garageband / Audacity أو منصة عمل صوتية أخرى - للتسجيل من خلال ميكروفون وتصدير ملفات wavfiles
Python - قادرة على استخدام pylab و scipy لأخذ العينات و fft
Vivado - للاتصال بلوحة Basys 3 ورؤية النتائج بصريًا
الخطوة 2: نظرة عامة
يتكون الموالف من بعض المكونات المهمة: الميكروفون ، وجهاز أخذ العينات ، و FFT (تحويل فورييه السريع) ، والمقارن ، وفك التشفير ، والعرض. الغرض من الميكروفون هو التقاط شكل موجة الإدخال. يستقبل جهاز أخذ العينات إشارة خرج الميكروفون ويستخدم FFT لتحويل الإشارة إلى خرج بحجم في الترددات. ثم باستخدام خرج FFT وإيجاد الحجم الأقصى والتردد المرتبط به مقسومًا على 2 ، يمكن العثور على التردد المرتبط بخطوة شكل الموجة. يمكن أن تدخل هذه القيمة بعد ذلك في المقارنة. ثم تتم مقارنتها بجدول بحث ، والذي قام بالفعل بتعيين قيم التردد لطبقات الصوت المثالية لجميع الملاحظات. يُعطى المقارنة مدخلات للملاحظة المرغوبة ، والتي يمكنها بعد ذلك مطابقة الملاحظة المرغوبة بترددها الصحيح من جدول البحث. ثم سيختار المقارنة الملاحظة ذات التردد الأقرب إلى الحد الأقصى للتردد. سيقارن المقارن القيمتين ويرى قريبًا أن قيمة التردد هي القيمة المطلوبة ثم يضع تلك البيانات في إشارة. سيرسل المقارنة تلك الإشارة إلى وحدة فك التشفير ، حيث سيختار مفكك الشفرة مدخلات الأنودات للشاشة المكونة من 7 مقاطع لإظهار دقة الملاحظة.
الخطوة 3: ملف Wav
في هذه الخطوة ، سنأخذ ملف wav للنغمة ونحاول إخراج تردد هذه الدرجة.
تحتاج أولاً إلى ملف wav لملاحظة. في هذا المثال ، سنستخدم ملف wav ستريو 16 بت بمعدل أخذ عينات يبلغ 44.1 كيلو هرتز. يمكن إنشاء هذا إما في DAW مثل Garageband أو تنزيله. في هذا المثال ، يمكن تنزيل موجة جيبية مقاس A4 440 هرتز تم إنشاؤها من قبلنا على Garageband هنا.
الخطوة 4: بايثون- استخدامات Pylab و Scipy
استخدمنا مكتبة Python لإجراء "تحويل فورييه السريع". سمح لنا المورد عبر الإنترنت بتقليد ومعرفة ما هو مفيد في pylab و scipy.
1. إذا لم تقم بتثبيت pylab أو scipy ، فأنت بحاجة إلى القيام بذلك. أو ، لدى Pycharm ميزة جيدة جدًا ، عند محاولة استيراد pylab أو scipy ، هناك تسطير متعرج يخبرك أنك لم تقم بتثبيت المكتبة بعد. يمكنك بعد ذلك تثبيتها مباشرة بالضغط على مصباح الضوء الأحمر (سيظهر عندما تضع المؤشر بالقرب من التسطير المتعرج).
2. باستخدام وظيفة scipy.io.wavfile.read ، اقرأ واسحب البيانات من عينة ملف wav. قم بتشغيل البيانات بواسطة pylab.fft ، وسيعيد لك قائمة بحجم الطاقة.
3. ثم ابحث عن الحد الأقصى للطاقة المنبعثة من القائمة. ابحث عن فهرس القائمة حيث تحدث الطاقة القصوى لأن الطريقة الأسرع للعثور على التردد المرتبط بهذه القوة. أخيرًا ، قم بإرجاع الحد الأقصى للتردد. نظرًا لأننا نحتاج لاحقًا إلى إدخال إشارة تردد ثنائية في كود VHDL ، يمكننا تحويل التردد في الطفو إلى ثنائي ، وإعادته.
الخطوة 5: Python-Sampling و FFT (اعرض الكود ونتائجها)
في هذه الخطوة ، تذهب الاعتمادات الكاملة إلى هذا الرابط أدناه لأخذ العينات و FFT.
samcarcagno.altervista.org/blog/basic-sound … كودنا:
بعد تثبيت pylab و scipy ، يمكن استيراد ملفات wav وقراءتها.
من استيراد pylab * من ملف wavfile الاستيراد scipy.io
sampFreq، snd = wavfile.read ('440_sine.wav')
ثم يمثل snd.shape نقاط العينة وعدد القنوات. في حالتنا ، تعتمد نقاط العينة على طول ملف wavfile وعدد القنوات 2 لأنها ستريو.
ثم snd = snd / (2. ** 15) …… xlabel ("الوقت (مللي ثانية)")
ينظم إشارة الوقت في مصفوفة.
ثم ينشئ FFT مصفوفة في التردد والحجم (الطاقة)
ثم من خلال حلقة while ، تم العثور على الحد الأقصى للحجم والتردد المرتبط به ، ويمثل هذا التردد / 2 درجة صوت الملف الموجي.
ثم باستخدام الكود الخاص بنا ، تم تحويل العدد الصحيح الذي يمثل التردد إلى رقم ثنائي 12 بت وتم إنشاء ملف نصي بهذا الرقم بداخله.
الخطوة 6: Vivado (المقارنة)
في هذا الجزء من العملية ، نحتاج إلى مقارن لمقارنة ترددي إدخال.
1. إنشاء أداة مقارنة لمقارنة ما إذا كان تردد الإدخال (المستقبل) أعلى أو أقل أو ضمن الملاحظة المحددة لنطاق الهامش 2 هرتز. (يتراوح موالف الجيتار النموذجي من e2 إلى g5 ، من 82 هرتز إلى 784 هرتز).
2. عند إنشاء هامش 2 هرتز ، استخدمنا RCA لإضافة "000000000010" إلى تردد جهاز الاستقبال ، والتحقق من مكانه الذي لا يزال منخفضًا جدًا بالنسبة لإدخال المستخدم. إذا كانت هذه هي الحالة ، إشارة بت واحد "مرتفع" <= "0" ، "منخفض" <= "1". ثم نضيف "000000000010" إلى إدخال المستخدم لمعرفة ما إذا كان دخل المستقبِل أعلى من ذلك. إذا كانت هذه هي الحالة ، "مرتفع" <= "1" ، "منخفض" <= "0". لن تقوم كلتا الحالتين بإرجاع "0".
3. نظرًا لأن الجزء التالي من الوحدة يحتاج إلى بيانات محددة مكونة من 4 بتات لإخبار ماهية ملاحظة المستلم ، وليس فقط إعادة المخرجات المقارنة (منخفضة وعالية) ، فنحن بحاجة إلى إرجاع رابط الكود إلى الملاحظة ، والذي يرتبط بـ التردد. يرجى الرجوع إلى الرسم البياني أدناه:
ج | 0011
C # | 1011
د | 0100
د # | 1100
هـ | 0101
F | 0110
ف # | 1110
G | 0111
G # | 1111
أ | 0001
أ # | 1001
ب | 0010
استخدام العديد من عبارات if لتصنيفها في ملاحظة وترميزها إلى ما هو مطلوب لمفكك تشفير الأجزاء السبعة.
الخطوة 7: صور BASYS 3 Board
الخطوة 8: Vivado (وحدة فك ترميز 7 قطاعات مع مضاعفة الإرسال)
كل شيء يحتاج إلى عرض. إنه عامل مهم يحدد قيمة التصميم. لذلك ، نحتاج إلى إنشاء شاشة باستخدام وحدة فك ترميز مكونة من سبعة أجزاء ، والتي من شأنها أن تسمح لنا بإظهار قدرتنا على تصميم موالف على اللوحة B. أيضًا ، سيساعدنا في الاختبار وتصحيح الأخطاء.
يحتوي مفكك الشفرة المكون من سبعة أجزاء على مدخلات تسمى ملاحظة ، ومنخفضة ، وعالية ، و CLK ، أثناء إخراج SSEG ، و AN ، و Fiz_Hz. توجد صورة لمخطط الكتلة أعلاه لمساعدتنا على فهم التصميم.
الغرض من وجود منفصلين من المدخلات المنخفضة والعالية هو تزويد مصمم المقارنة بحرية معالجة ما إذا كان تردد الصوت (الموجة) أعلى أو أقل من تردد الإدخال (Fix_Hz) الذي يريد المستخدم مقارنته. بالإضافة إلى ذلك ، يمثل إخراج SSEG عرض الأجزاء السبعة والنقطة التالية في حين يمثل AN الأنودات التي يتم عرض مجموعة من الأجزاء السبعة لها لتضيء.
في مفكك التشفير هذا المكون من سبعة أجزاء ، تلعب الساعة (CLK) دورًا مهمًا في عرض قيمتين مختلفتين على اثنين أو أكثر من الأنودات المختلفة. نظرًا لأن اللوحة لا تسمح لنا بعرض قيمتين مختلفتين في نفس الوقت ، يتعين علينا استخدام تعدد الإرسال لعرض قيمة واحدة في كل مرة ، مع التبديل إلى قيمة أخرى بسرعة كافية بحيث لا تستطيع أعيننا التقاطها. هذا هو المكان الذي يلعب فيه إدخال CLK.
لمزيد من المعلومات ، يرجى الرجوع إلى شفرة المصدر.
الخطوة 9: Vivado (دمج المكونات)
مع اكتمال كل وحدة (مستقبل python ، مقارن ، وحدة فك ترميز سبعة مقاطع ، إلخ) ، قمنا بعد ذلك بتجميعها باستخدام وحدة أكبر. تمامًا مثل الصورة الموجودة أسفل قسم "العرض الزائد" الموضحة ، نقوم بتوصيل كل إشارة وفقًا لذلك. كمرجع ، يرجى التحقق من الكود المصدري الخاص بنا "SW_Hz.vhd".
شكرا لك. آمل أن تستمتع.
موصى به:
تصميم اللعبة في فليك في 5 خطوات: 5 خطوات
تصميم اللعبة في Flick in 5 Steps: Flick هي طريقة بسيطة حقًا لصنع لعبة ، لا سيما شيء مثل الألغاز أو الرواية المرئية أو لعبة المغامرة
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف - خطوات خطوة: 4 خطوات
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف | خطوات بخطوة: في هذا المشروع ، سأصمم دائرة مستشعر لعكس مواقف السيارات من Arduino باستخدام مستشعر الموجات فوق الصوتية Arduino UNO و HC-SR04. يمكن استخدام نظام التنبيه العكسي للسيارة المستند إلى Arduino للتنقل الذاتي ومجموعة الروبوتات وغيرها من النطاقات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: 3 خطوات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: في هذا Instructable سنقوم باكتشاف الوجه على Raspberry Pi 4 باستخدام Shunya O / S باستخدام مكتبة Shunyaface. Shunyaface هي مكتبة للتعرف على الوجوه / الكشف عنها. يهدف المشروع إلى تحقيق أسرع سرعة في الكشف والتعرف مع
كيف تصنع عداد خطوات؟: 3 خطوات (بالصور)
How to Make Step Counter؟: اعتدت أن أؤدي أداءً جيدًا في العديد من الرياضات: المشي والجري وركوب الدراجة ولعب كرة الريشة وما إلى ذلك ، أحب ركوب الخيل للسفر في وقت قريب. حسنًا ، انظر إلى بطني المنتفخ … حسنًا ، على أي حال ، قررت إعادة التمرين. ما هي المعدات التي يجب أن أحضرها؟
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): 6 خطوات
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): هل تريد تخويف أصدقائك وإحداث بعض ضوضاء الصراخ في عيد الهالوين؟ أو تريد فقط عمل مزحة جيدة؟ يمكن لشاشة الزومبي المنبثقة القيام بذلك! في هذا Instructable ، سوف أعلمك كيفية جعل زومبي القفز للخارج بسهولة باستخدام Arduino. HC-SR0