جدول المحتويات:

الموالف: 9 خطوات
الموالف: 9 خطوات

فيديو: الموالف: 9 خطوات

فيديو: الموالف: 9 خطوات
فيديو: 9. خطوات البحث العلمي (الاقتباس وقواعده) 2024, يوليو
Anonim
Image
Image
قائمة المعدات (خذ صورة من المجلس وشركة Kevin Comp)
قائمة المعدات (خذ صورة من المجلس وشركة Kevin Comp)

تم تصميم هذا المشروع لإنشاء موالف جيتار باستخدام 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 للنغمة ونحاول إخراج تردد هذه الدرجة.

تحتاج أولاً إلى ملف wav لملاحظة. في هذا المثال ، سنستخدم ملف wav ستريو 16 بت بمعدل أخذ عينات يبلغ 44.1 كيلو هرتز. يمكن إنشاء هذا إما في DAW مثل Garageband أو تنزيله. في هذا المثال ، يمكن تنزيل موجة جيبية مقاس A4 440 هرتز تم إنشاؤها من قبلنا على Garageband هنا.

الخطوة 4: بايثون- استخدامات Pylab و Scipy

Python- استخدامات Pylab و Scipy
Python- استخدامات 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

صور الأساس 3 المجلس
صور الأساس 3 المجلس

الخطوة 8: Vivado (وحدة فك ترميز 7 قطاعات مع مضاعفة الإرسال)

Vivado (جهاز فك ترميز 7 قطاعات مع مضاعفة)
Vivado (جهاز فك ترميز 7 قطاعات مع مضاعفة)

كل شيء يحتاج إلى عرض. إنه عامل مهم يحدد قيمة التصميم. لذلك ، نحتاج إلى إنشاء شاشة باستخدام وحدة فك ترميز مكونة من سبعة أجزاء ، والتي من شأنها أن تسمح لنا بإظهار قدرتنا على تصميم موالف على اللوحة B. أيضًا ، سيساعدنا في الاختبار وتصحيح الأخطاء.

يحتوي مفكك الشفرة المكون من سبعة أجزاء على مدخلات تسمى ملاحظة ، ومنخفضة ، وعالية ، و CLK ، أثناء إخراج SSEG ، و AN ، و Fiz_Hz. توجد صورة لمخطط الكتلة أعلاه لمساعدتنا على فهم التصميم.

الغرض من وجود منفصلين من المدخلات المنخفضة والعالية هو تزويد مصمم المقارنة بحرية معالجة ما إذا كان تردد الصوت (الموجة) أعلى أو أقل من تردد الإدخال (Fix_Hz) الذي يريد المستخدم مقارنته. بالإضافة إلى ذلك ، يمثل إخراج SSEG عرض الأجزاء السبعة والنقطة التالية في حين يمثل AN الأنودات التي يتم عرض مجموعة من الأجزاء السبعة لها لتضيء.

في مفكك التشفير هذا المكون من سبعة أجزاء ، تلعب الساعة (CLK) دورًا مهمًا في عرض قيمتين مختلفتين على اثنين أو أكثر من الأنودات المختلفة. نظرًا لأن اللوحة لا تسمح لنا بعرض قيمتين مختلفتين في نفس الوقت ، يتعين علينا استخدام تعدد الإرسال لعرض قيمة واحدة في كل مرة ، مع التبديل إلى قيمة أخرى بسرعة كافية بحيث لا تستطيع أعيننا التقاطها. هذا هو المكان الذي يلعب فيه إدخال CLK.

لمزيد من المعلومات ، يرجى الرجوع إلى شفرة المصدر.

الخطوة 9: Vivado (دمج المكونات)

مع اكتمال كل وحدة (مستقبل python ، مقارن ، وحدة فك ترميز سبعة مقاطع ، إلخ) ، قمنا بعد ذلك بتجميعها باستخدام وحدة أكبر. تمامًا مثل الصورة الموجودة أسفل قسم "العرض الزائد" الموضحة ، نقوم بتوصيل كل إشارة وفقًا لذلك. كمرجع ، يرجى التحقق من الكود المصدري الخاص بنا "SW_Hz.vhd".

شكرا لك. آمل أن تستمتع.

موصى به: