תוכן עניינים:

מקלט: 9 שלבים
מקלט: 9 שלבים

וִידֵאוֹ: מקלט: 9 שלבים

וִידֵאוֹ: מקלט: 9 שלבים
וִידֵאוֹ: כל מה שצריך לדעת על מקלט ציבורי 2024, נוֹבֶמבֶּר
Anonim
Image
Image
רשימת ציוד (צלם את הלוח ומחברת קווין)
רשימת ציוד (צלם את הלוח ומחברת קווין)

פרויקט זה תוכנן לייצר מקלט גיטרה באמצעות Vivado ותצוגה בת 7 פלחים. לאחר שהמקלט מוצא את תדירות הצליל המוקלט, המקלט ישווה ערך זה לרשימת ערכים מקודדים לתדרים מדויקים הידועים כתדירות הסטנדרטית עבור המגרש הנכון של פתק. אז המקלט יציג עד כמה הצליל המוקלט שלך קרוב או רחוק מהפתק הרצוי. מה שמעניין הוא שגל קול הוא שילוב של צורות גל סינוסיות מרובות עם רכיבים אמיתיים ודמיוניים. למרות שזה עשוי להיראות קשה לעבודה עבור אלה שאינם מכירים, ישנן מספר דרכים שבהן נוכל לנתח גל עם ערכים אמיתיים ודמיוניים.

הַדגָמָה:

שלב 1: רשימת ציוד (צלם תמונה מהלוח ומחברת קווין)

ראשית אנו זקוקים ללוח Basys 3 ומחשב התומך בתוכניות הבאות: Garageband/Audacity או DAW אחר - להקלטה באמצעות מיקרופון וייצוא קבצי wav

Python - מסוגל להשתמש ב- pylab ו- scipy לדגימה ו- fft

Vivado - להתחבר ללוח Basys 3 ולראות חזותית את התוצאות

שלב 2: סקירה כללית

סקירה כללית
סקירה כללית

מקלט מורכב ממספר מרכיבים חשובים: מיקרופון, סמפלר, FFT (Fast Fourier Transform), משווה, מפענח ותצוגה. מטרת המיקרופון היא ללכוד את צורת גל הכניסה. הדוגם מקבל את אות הפלט של המיקרופון ומשתמש ב- FFT כדי להמיר את האות לפלט של גודל בתדרים. לאחר מכן באמצעות הפלט של ה- FFT ומציאת הגודל המרבי והתדר הקשור אליו מחולק ב -2, ניתן למצוא את התדירות הקשורה למגרש צורת הגל. ערך זה יכול להיכנס למכשיר המשווה. לאחר מכן הוא מושווה לטבלת חיפוש, שכבר קבעה ערכי תדרים עבור גובה הצלילים המושלם של כל התווים. המשווה מקבל קלט עבור הפתק הרצוי, ולאחר מכן הוא יכול להתאים את הפתק הרצוי לתדר הנכון שלו מטבלת החיפוש. אז המשווה יבחר את הפתק בעל התדר הקרוב ביותר לתדר המרבי. המשווה ישווה את שני הערכים ויראה לסגור את ערך התדירות הוא לערך הרצוי ולאחר מכן יכניס את הנתונים לאות. המשווה ישלח את האות הזה למפענח, שם המפענח יבחר את כניסות האנודות של תצוגת 7 הפלחים כדי להראות את דיוק הפתק.

שלב 3: קובץ WAV

קובץ WAV
קובץ WAV

בשלב זה ניקח קובץ wav של המגרש וננסה להוציא את התדירות של המגרש.

ראשית אתה צריך קובץ wav של פתק. בדוגמה זו נשתמש בקובץ wav סטריאו 16 ביט עם קצב דגימה של 44.1kHz. ניתן ליצור זאת ב- DAW כגון Garageband או להוריד. לדוגמא זו, ניתן להוריד כאן גל סינוס בגודל 440 הרץ שנוצר על ידינו ב- Garageband.

שלב 4: פייתון- שימושים ב- Pylab ו- Scipy

פייתון- שימושים ב- Pylab ו- Scipy
פייתון- שימושים ב- 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*מ- wipfile יבוא scipy.io

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

ואז snd.shape מייצג את נקודות המדגם ואת מספר הערוצים. במקרה שלנו, נקודות המדגם תלויות בכמה זמן קובץ ה- wav הוא ומספר הערוצים הוא 2 מכיוון שהוא סטריאו.

ואז snd = snd / (2. ** 15) …… xlabel ('זמן (ms)')

מארגן את אות הזמן למערך.

אז ה- FFT יוצר מערך בתדר וגודל (עוצמה)

ואז באמצעות לולאת זמן נמצא הגודל המקסימלי והתדר הקשור אליו. תדר/2 מייצג את המגרש של קובץ ה- wav.

לאחר מכן, באמצעות הקוד שלנו, המספר השלם המייצג את התדר הומר למספר בינארי של 12 ביט ונוצר קובץ טקסט עם מספר זה בתוכו.

שלב 6: Vivado (השוואה)

ויוואדו (משווה)
ויוואדו (משווה)

בחלק זה של התהליך, אנו צריכים משווה להשוואת שני תדרי קלט.

1. יצר משווה כדי להשוות אם תדירות הקלט (המקלט) גבוהה יותר, נמוכה יותר או בטווח השוליים המוגדר בטווח 2 הרץ. (מקלט גיטרה טיפוסי נע בין e2 ל- g5, 82 הרץ עד 784 הרץ).

2. בעת יצירת שוליים של 2 הרץ, השתמשנו ב- RCA כדי להוסיף "000000000010" לתדר המקלט, ולבדוק היכן הוא עדיין נמוך מדי עבור קלט משתמשים. אם זה המקרה, אות סיביות יחיד "גבוה" <= '0', 'נמוך' <= '1'. לאחר מכן אנו מוסיפים "000000000010" לקלט המשתמש כדי לראות אם קלט המקלט גבוה אפילו מזה. אם זה המצב, "גבוה" <= '1', "נמוך" <= '0'. שני המקרים לא היו מחזירים '0'.

3. מכיוון שהחלק הבא של המודול זקוק לנתונים ספציפיים של 4 סיביות כדי לספר מהו פתק המקלט, ולא רק להחזיר את 2 הפלטים ההשוואתיים (נמוכים וגבוהים), עלינו להחזיר את קוד השיוך לתו, המתקשר עם התדירות. אנא עיין בתרשים שלהלן:

ג | 0011

C# | 1011

D | 0100

D# | 1100

E | 0101

F | 0110

F# | 1110

G | 0111

G# | 1111

א | 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) ממלא תפקיד חשוב בהצגת שני ערכים שונים על שני אונודות שונות או יותר. מכיוון שהלוח אינו מאפשר לנו להציג שני ערכים שונים בו זמנית, עלינו להשתמש בכפל כדי להציג ערך אחד בכל פעם, תוך מעבר לערך אחר מספיק מהר כדי שהעיניים שלנו לא יוכלו ללכוד אותו. כאן נכנס לתמונה קלט ה- CLK.

למידע נוסף, עיין בקוד המקור.

שלב 9: Vivado (רכיבי שילוב)

כאשר כל המודולים (מקלט פייתון, משווה, מפענח שבעה קטעים וכו ') הושלמו, לאחר מכן חיברנו באמצעות מודול גדול יותר. בדיוק כמו התמונה שבקטע "תצוגה מקיפה" המוצגת, אנו מחברים כל אות בהתאם. לעיון, אנא בדוק את קוד המקור שלנו "SW_Hz.vhd".

תודה. מקווה שנהנת.

מוּמלָץ: