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

רצף דיגיטלי 4 שלבים: 19 שלבים (עם תמונות)
רצף דיגיטלי 4 שלבים: 19 שלבים (עם תמונות)

וִידֵאוֹ: רצף דיגיטלי 4 שלבים: 19 שלבים (עם תמונות)

וִידֵאוֹ: רצף דיגיטלי 4 שלבים: 19 שלבים (עם תמונות)
וִידֵאוֹ: אני רוצה שווארמה 🌯 2024, יולי
Anonim
רצף דיגיטלי בעל 4 שלבים
רצף דיגיטלי בעל 4 שלבים
רצף דיגיטלי בעל 4 שלבים
רצף דיגיטלי בעל 4 שלבים

CPE 133, Cal Poly San Luis Obispo

יוצרי הפרויקטים: ג'ייסון ג'ונסטון וביורן נלסון

בתעשיית המוזיקה של היום, אחד ה"מכשירים "הנפוצים ביותר הוא הסינתיסייזר הדיגיטלי. כל ז'אנר מוזיקה, מהיפ הופ ועד פופ ואפילו קאנטרי, משתמש בסינתיסייזר דיגיטלי באולפן כדי ליצור את הביטים והצלילים הדרושים להם כדי להביא את המוזיקה שלהם לחיים. במדריך זה ניצור סינתיסייזר פשוט מאוד עם לוח FPGA Basys 3.

הסינתיסייזר יוכל לנגן ארבע תווי רבע נבחרים במספר קבוע של פעימות לדקה. משתמשים ישתמשו במתגים כדי להקצות כל תו רבע למגרש מוזיקלי. עבור פרויקט זה אנו משתמשים בממיר דיגיטלי לאנלוגי (4 סיביות) (DAC) כדי לקחת את הפלט מהלוח ולהמיר אותו לאות אנלוגי. הפלט מה- DAC יוזן לאחר מכן לרמקול מחשב רגיל ויוצר את המוזיקה שלנו. 16 מגרשים נפרדים אפשריים. אנו נגביל את הסינתיסייזר שלנו לאוקטבה אחת בת 12 תווים, הנמצאים בין אמצע C (261.6 הרץ) לבין B4 (493.9 הרץ). למשתמש תהיה גם אפשרות להקצות מספר פתקים בו זמנית, כמו גם להקצות מנוחה על ידי לחיצה על הקצאה מבלי שאף אחד ממתגי המגרש יופעל כלפי מעלה. כאשר כל תו נבחר ומתנגן, תו האות מוצג בתצוגה של 7 פלחים. כמו כן, נשתמש בשלושה מכפתורי הלוח, אחד לנגן ולהשהות את המוזיקה, אחד לאיפוס הסינתיסייזר ולהכניס אותו למצב "בחירה", והשלישי להקצאת כל צליל במגרש כשהוא במצב בחירה.

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

להלן רשימת הציוד הנדרש:

  • Vivado (או כל חלל עבודה VHDL)
  • לוח FPGA Basys 3 או דומה
  • ממיר דיגיטלי לאנלוגי (מינימום 4 סיביות)
  • רמקול עם שקע לאוזניות
  • חוטים מובילים

שלב 1: הפעלת משתמשים של סדרת דיגיטלים

הפעלת משתמשים של רצף דיגיטלי
הפעלת משתמשים של רצף דיגיטלי

השלבים הבאים הם הפעלת הרצף הדיגיטלי. הרצף הדיגיטלי תומך בהפעלה של 12 צלילים נפרדים (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B), הנעים בין 261.6 הרץ ל 493.9 הרץ.

1. לחץ על הלחצן השמאלי כדי להכניס את הלוח למצב בחירה. כאשר במצב זה, כל 4 המתגים השמאליים ביותר (מתגים 13 עד 16) ישמשו לאחסון ערך מובהק.

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

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

4. כעת, כאשר כל המגרשים של ההערות הוקצו, הרצף הדיגיטלי מוכן למשחק. כדי להשמיע את ההערות ברמקול, פשוט לחץ על כפתור ההפעלה/השהה הימני כדי להתחיל לנגן את המוזיקה. סדר רצף ההפעלה משקף את המגרשים המשויכים למתגים השמאליים, משמאל לימין. התווים ינוגנו במספר פעימות בדקה, בסדר 1, 2, 3, 4, 1, 2…. התצוגה תציג את הפתק המתנגן כרגע כשהרמקולים מנגנים את המוסיקה. כדי להשהות את השמעת המוסיקה, פשוט לחץ על הכפתור הימני ואז המוזיקה תפסיק לנגן וסמל השהיה יוצג בתצוגה. לחיצה נוספת על הכפתור הימני תחדש את ההפעלה.

שלב 2: פרטים טכניים

פרטים טכניים
פרטים טכניים

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

נדון בכל מודול על ידי תיאור התשומות והתפוקות, פירוק מרכיביו והסבר ייעודו בעיצוב הכולל. בתחתית קובץ ה- ZIP כלול קובץ ZIP, המכיל כל קובץ קוד VHDL המשמש בפרויקט.

תשומות

  • Clk (אות שעון מקורי)
  • PP (הפעלה/השהה)
  • Sel (שים את הסינתיסייזר במצב בחירה)
  • הקצה (הקצה שלב למגרש)
  • שלב (הערות המיקום)
  • Freq (המתגים שיוצרים את המגרש הרצוי)

יציאות

  • אנודה (אנודות עם 7 קטעים)
  • קתודה (קתודות עם 7 קטעים)
  • DAC (4 סיביות המניעות את ה- DAC)

שלב 3: פרטים טכניים

פרטים טכניים
פרטים טכניים

שלב 4: מחלק שעון בן 7 קטעים

מחלק שעון בעל 7 קטעים
מחלק שעון בעל 7 קטעים

הסינתיסייזר שלנו משתמש בשלושה מחיצות שעונים, כולן מייצרות אותות המשרתים מטרה אחרת בפרויקט שלנו. מחלק שעונים לוקח אות שעון מקורי ומייצר אות משתנה שיש לו תדר שהוא פחות מאות השעון המקורי. השעון המקורי של Basys 3 הוא 100 מגה -הרץ. זו התדירות בה מחלקי השעון שלנו מנצלים. אם אתה משתמש בלוח FPGA אחר עם תדר שעון מקורי שונה, ייתכן שיהיה עליך לשנות את הקוד.

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

כדי להשיג זאת, המחלק לוקח את האות המקורי של 100 מגה -הרץ וסופר על כל קצה עולה. כאשר המונה יגיע ל 416667, הפלט יעבור מנמוך לגבוה, או להיפך.

תשומות

Clk (אות שעון מקורי)

יציאות

Clk_7seg (ל- seg_display)

רכיבים

  • D הרשמה
  • MUX
  • ממיר מתח
  • פֶּתֶן

שלב 5: מחלק שעון לדקה

מחלק שעון לדקה
מחלק שעון לדקה

מחלק השעונים BPM פועל באופן דומה. מחלק זה מייצר את תדר השעון המניע את המעבר בין ארבעת השלבים בעת הפקת צלילים במצב ההפעלה. החלטנו לעבור בין הערות ב -100 BPM. במהירות של 100 BPM, כל תו ינוגן במשך 3/5 שנייה. האות המתקבל יהיה בעל תדר של 1.67 הרץ.

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

תשומות

Clk (תדר שעון מקורי)

יציאות

Clk_BPM (אל output_FSM)

רכיבים

  • D הרשמה
  • MUX
  • ממיר מתח
  • פֶּתֶן

שלב 6: מחלק שעון המגרשים

מחלק שעון המגרשים
מחלק שעון המגרשים

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

אותה מערכת ספירה משמשת כאן. לערכים הספציפיים שאליהם ספרנו, עיין בקובץ שכותרתו Clk_div_pitches.

תשומות

Clk (תדר שעון מקורי)

יציאות

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (אל output_select)

רכיבים

  • D הרשמה
  • MUX
  • ממיר מתח
  • פֶּתֶן

שלב 7: הפעל/השהה/בחר מכונת מדינה

הפעל/השהה/בחר מכונת מדינה
הפעל/השהה/בחר מכונת מדינה

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

מכונת המדינה PPS היא ה- FSM הראשון במעגל שלנו. יש שלוש מדינות ב- FSM זה; מצב הפעלה, השהה ובחירה. כדי לעבור בין המצבים השונים, השתמשנו בכפתורי PP ו- Selection. עיין בתרשים המצב למעלה כדי לראות כיצד מתרחשים מעברים בין מצבים. עשינו את המעבר הזה FSM בקצה העולה של שעון 100 מגה -הרץ המקורי, כך שלא יהיה אפשרי למכונה שלא לעבור כאשר נלחץ על אחד הכפתורים, אפילו לפרק זמן קצר מאוד. המצב הנוכחי (P_state) הוא הפלט היחיד ממודול זה.

תשומות

  • Clk (תדר שעון מקורי)
  • Sel (כפתור שמאלי)
  • PP (כפתור ימני)

יציאות

P_state (מצב נוכחי, ל- output_FSM, note_assign, seg_dsiplay, final_select)

רכיבים

  • MUX
  • D הרשמה

שלב 8: הפעל/השהה/בחר מכונת מדינה

הפעל/השהה/בחר מכונת מדינה
הפעל/השהה/בחר מכונת מדינה

שלב 9: פלט FSM

פלט FSM
פלט FSM

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

פלט FSM פועל רק אם המצב הנוכחי מה- FSM הראשון הוא "01" (מצב ההפעלה). בעיקרו של דבר, זהו הפעלת המודול. אם המצב הוא "01", אז ה- FSM עומד לעבור בין מצבים בקצה העולה של אות שעון BPM. אנו עושים זאת מכיוון ש- output_FSM שולט באיזה מספר בינארי למגרש הנבחר נשלח למודולי output_select ו- seg_display. ל- FSM יש קלט של 16 סיביות שמגיע ממודול הקצאת ההערות, אשר יכוסה בהמשך. במצב "00" עבור output_FSM, המודול יפיק "xxxx" עבור ההערה הראשונה שהוקצתה. ואז ב "01", הוא יפיק "yyyy" עבור הפתק השני וכן הלאה עבור כל פתק לפני שיחזור חזרה אל הפתק הראשון. עיין בתרשים המדינה למעלה.

FSM זה שונה מהראשון מכיוון שאין לוגיקת קלט לשליטה במעבר בין מצבים. במקום זאת, ה- FSM יפעל רק כאשר המדינה מה- FSM הראשון היא "01", ואז ה- FSM הזה יעבור בין מצבים רק בקצה העולה של אות השעון. הבדל נוסף הוא שלמודול זה יש לוגיקת פלט, כלומר הוא אינו פולט את המצב הנוכחי, הוא מוציא את המספר הבינארי עבור המגרש במצב זה.

תשומות

  • Clk_BPM (אות שעון BPM ממחלק השעונים)
  • FSM1_state (PS מ- PPS FSM)
  • Pitch_in (פיצ'ים מתוך note_assign)

יציאות

Pitch_out (נתיב אחד בכל פעם, לבחירת פלט ולהצגת תצוגה)

רכיבים

  • MUX
  • D הרשמה

שלב 10: פלט FSM

פלט FSM
פלט FSM

שלב 11: הערה הקצה

הערה הקצה
הערה הקצה

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

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

תשומות

  • P_state (המצב הנוכחי מ- PPS FSM)
  • Sel (כפתור שמאלי)
  • מתג (מתג שלב אחד)
  • Freq (בוררי ימין קיצוני למגרש)
  • הקצה (כפתור תחתון, הקצה פתק)

יציאות

Pitch (מספר בינארי, ל- output_FSM)

רכיבים

  • MUX
  • D resgister

שלב 12: בחר פלט

בחר פלט
בחר פלט

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

אנו מתנצלים על הניתוב המוזר, ויוואדו ארגן את אותות המגרש באופן אלפביתי לקובץ clk_div_pitches, אך עבור קובץ זה הוא אירגן אותם במספר בינארי עולה, וגרם למגרשים להיות בסדר אחר. שים לב גם שאם המספר הבינארי מה- output_FSM היה "0000" או משהו גדול מ- "1100", אז ה- MUX נשלח באמצעות אות '0' שטוח.

קֶלֶט

  • Pitch (מתוך output_FSM);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (אותות שעון גובה)

תְפוּקָה

צליל (ביט בודד התואם את אות השעון שנבחר, ל square_wave)

רכיבים

MUX

שלב 13: Wave Square Gen

Wave Square Gen
Wave Square Gen

מודול square_wave הוא הגנרטור לגל המרובע שמוצא מהלוח ל- DAC. באמצעות אות הטון מהקובץ הקודם, Wave_wave זה הופך את מספר 4 הסיביות בין "0000" ל- "1111" בקצה העולה של Tone. צליל הוא תדר גובה ספציפי, ולכן square_wave מייצר גל עם תדר שונה כאשר output_FSM עובר למצב אחר. הפלט של 4 סיביות ממודול זה עובר למודול fin_sel, שם ההיגיון מכתיב אם האוטובוס הזה ייצא על בסיס המצב מ- PPS FSM.

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

תשומות

צליל (סיטואציה מתנדנדת מתוך output_select)

יציאות

DAC_input (אוטובוס מתנודד של 4 סיביות שמשתנה באותה תדירות הטון)

רכיבים

  • ממיר מתח
  • D הרשמה

שלב 14: תצוגה בת 7 פלחים

תצוגה בת 7 פלחים
תצוגה בת 7 פלחים

מודול seg_display שולט בתצוגה בת 7 הפלחים בלוח הבסיס שלנו. בתוך המודול מתרחשים שני תהליכים. התהליך הראשון מפענח את Freq כאשר הוא נמצא במצב "בחירה" או Pitch כשהוא במצב "הפעלה". במצב "הפסקה", המודול מפענח להצגת סמל ההשהיה. במבט על קוד VHDL, ניתן לראות כי המפענח הבינארי למעשה מפענח את הקלט לשני אותות שונים, cathode1 ו- cathode2. קתודה 1 מייצגת את האות המתאימה לגובה הצג, וקתודה 2 מייצגת את הסמל השטוח (ב) אם יש כזו. הסיבה לכך מתייחסת לתהליך השני שנעשה על ידי מודול seg_display.

על לוח basys3, לתצוגת הקטע יש קתודות נפוצות. בעוד האנודות קובעות איזו ספרה מופעלת, הקתודות שולטות באילו מקטעים מופעלים. מכיוון שהתצוגה כוללת קתודות משותפות, פירוש הדבר שאתה יכול להציג רק קבוצה אחת של קטעים בכל פעם. זה מהווה בעיה לפרויקט הזה מכיוון שאנו רוצים להציג אות בספרה הראשונה ואת הסמל השטוח, במידת הצורך, בעת ובעונה אחת. עכשיו זוכר את אות השעון של 7 שניות? כדי לעקוף בעיה זו, אנו משנים את האנודות והקטודות הלוך ושוב על אות השעון של 7 שניות. מכיוון שאות השעון הוא 240 הרץ ואנו משתמשים בשתי ספרות, כל ספרה תתנדנד ב -60 הרץ. בעיני האדם, זה ייראה כאילו הספרות אינן מתנודדות כלל.

שים לב גם שתצוגת הלוח basys3 משתמשת בהיגיון שלילי. המשמעות היא שאם אנודה או קתודה מוגדרים ל- '0', הספרה או הקטע יופעלו ולהיפך.

תשומות

  • Pitch (מספר בינארי לפתק, בשימוש במצב משחק)
  • Freq (מתגי תדר, בשימוש במצב בחירה)
  • P_state (המצב הנוכחי מ- PPS FSM)
  • Clk_240Hz (אות שעון מ- Clk_div_7seg, כפול 120 מכיוון שאנו משתמשים רק בקצה העולה)

יציאות

  • קתודה (אוטובוס השולט בקטעים בתצוגה, פלט סופי)
  • אנודה (אוטובוס השולט בספרות בתצוגה, פלט סופי)

רכיבים

  • בְּרִיחַ
  • MUX
  • D הרשמה

שלב 15: בחירה סופית

בחירה סופית
בחירה סופית

הבחירה הסופית היא המודול האחרון המשמש בפרויקט זה. מודול פשוט נוסף, מודול זה שולט על הפלט הסופי שיגיע ל- DAC. כאשר הוא נמצא במצב "בחירה" או "השהה", המודול יפיק פלט סטטי של "0000" כך שלא תישמע מוזיקה מהרמקולים. במצב "הפעלה", המודול יפיק את 4 הסיביות המתנדנדות כפי שנקבע על ידי square_wave.

תשומות

  • P_state (המצב הנוכחי מ- PPS FSM)
  • DAC_input (4 הסיביות המתנדנדות מ- square_wave)

יציאות

DAC (שווה ל- DAC_input במצב משחק, פלט סופי)

רכיבים

MUX

שלב 16: התקנים חיצוניים: DAC

התקנים חיצוניים: DAC
התקנים חיצוניים: DAC

ממיר דיגיטלי לאנלוגי (DAC) לוקח אות בדיד וממיר אותו לאות רציף. ל- DAC שלנו יש ארבע סיביות והוא עשוי ממגבר סיכום. באמצעות יחס של נגדים בלולאת האספקה והמשוב, הצלחנו ליצור מערכת שמפיקה ב -16 רמות שונות שנוצרות על ידי "סיכום" כל ענף. Bit0, הענף העליון, נושא את הפחות משקל ותורם את הפוטנציאל הקטן ביותר כשהוא גבוה בגלל זה מסניף עמידות גבוהה יותר. המשקל עולה ככל שאתה יורד מהענפים. אם היית סופר בינארית למעלה ואז אחורה כלפי מטה באמצעות כניסות הסיביות, מתח המוצא היה נראה כמו גל סינוס צעד חכם. הקלט ל- DAC היה מחובר לאחד ממסדי ה- PMOD בלוח להעברת האות של 4 סיביות.

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

שלב 17: התקנים חיצוניים: רמקול

מכשירים חיצוניים: רמקול
מכשירים חיצוניים: רמקול

עבור הפרויקט הזה, אתה לא מתכוון לקנות זוג רמקולים סופר נחמדים. כפי שאתה יכול לדעת, הצליל די בסיסי. הלכנו וקנינו סט רמקולים ממוחשבים של $ 8 מ- Best Buy. כל דבר עם שקע לאוזניות עובד מצוין. מונוטוני עובד טוב גם כן. אתה יכול אפילו להשתמש באוזניות, אבל אתה עלול לפוצץ אותן!

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

עבור הרמקולים שלנו, הפנו אותם להגדרה הגבוהה ביותר וקיבלנו רעש חזק למדי.

וזה השלב האחרון ליצירת רצף דיגיטלי מלוח FPGA! עבור לשני הסעיפים הבאים כדי להוריד את כל קוד ה- VHDL שלנו ולראות את הרצף בפעולה.

שלב 18: הדגמת וידאו

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

שלב 19: קוד VHDL

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

מוּמלָץ: