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

שעון מעורר Basys 3: 9 שלבים
שעון מעורר Basys 3: 9 שלבים

וִידֵאוֹ: שעון מעורר Basys 3: 9 שלבים

וִידֵאוֹ: שעון מעורר Basys 3: 9 שלבים
וִידֵאוֹ: חיכו הרבה??? מקלט רדיו XHDATA D-109 או עדיין TECSUN PL-320? 2024, אוֹקְטוֹבֶּר
Anonim
שעון מעורר Basys 3
שעון מעורר Basys 3

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

שלב 1: תרשים קופסה שחורה

תרשים קופסה שחורה
תרשים קופסה שחורה
תרשים קופסה שחורה
תרשים קופסה שחורה

התחלנו את הפרויקט שלנו בשרטוט תרשים של קופסה שחורה כדי לדמיין את התשומות והתפוקות הדרושות בתוכנית שלנו. הכניסות הבאות לתוכנית שלנו כגון קלט 5 סיביות (שעה_אין) אותחלו כדי לציין את משך הזמן של 24 שעות, 6 סיביות (Min_in) כדי להציג עד 60 דקות, כפתור איפוס (Rst_b) כדי לאפשר למשתמש לשנות את קלט הזמן שלהם, כניסת 1 סיביות (alm_en) אשר טוענת את קלט האזעקה, כניסת 1 סיביות (alarm_sw) כדי לכבות את השעון המעורר כאשר הוא מופעל, קלט של 1 סיביות (e_sec) השולט כאשר המונה של שניות ירוץ, קלט של 1 סיביות (Led_btn) שקובע את השעה הנוכחית, ולבסוף קלט של 1 סיביות (clk) השולט על הזמן המוצג על ידי לוח Basys 3. היציאות הן ה- (alm_on) ששולח את האות ל- Arduino, פלט ה- sseg המציג את זמן הכניסה ב- Basys 3 ופלט האנודה השולט היכן מוצגות הכניסות בתצוגת שבעת הקטעים.

שלב 2: שעון איטי

שעון איטי
שעון איטי

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

שלב 3: מונה

דֶלְפֵּק
דֶלְפֵּק
דֶלְפֵּק
דֶלְפֵּק

מונה רכיבים (דקות ושניות):

הפונקציה הבסיסית של דקות ושניות היא שהם מונים. מונה הדקות לוקח קלט (Vin) שהוא אות מכניסות (Min_in), ולאחר מכן סופר עד שמגיע לקלט המבוקש. השניות לוקחות רק קלט של מתג (e_Sec) מכיוון שלא ניתן להציג אותו בשבעת הקטע, וסופרות ברקע ברגע שהמתג גבוה '1'. שניהם מפיקים שם ערך ל (Qout), ולאחר מכן הוא מאוחסן ב- (data) ששולח אותו ל- SSEG אשר מתבצע בקובץ המקשר. כמו כן, כאשר דקות ושניות מגיעות לערכים של 59 הוא מתאפס, והפלט שלהן הוא '1' על מנת להגדיל דקות/שעה. זה גם יכול למפות עם איפוס (rst_b) לתשומות שלהם.

שלב 4: שעה נגד

שעה נגד
שעה נגד
שעה נגד
שעה נגד

שעת מונה של רכיבים

באופן דומה, אל מונה הרכיבים של הדקות והשניות רכיב השעה לוקח קלט s כגון (Vin) המהווה אות מקלט קלט קובץ (Hour_in), ויש לו יציאות המקושרות באותו אופן הדקות והשניות. כאשר ערך הספירה של השעה מגיע ל 24 00 הוא מתאפס ל 00 00.

שלב 5: אזעקה

אזעקה
אזעקה
אזעקה
אזעקה
אזעקה
אזעקה
אזעקה
אזעקה

קובץ ה- vhd אזעקה מורכב מ- d-flip-flops שהם התקני אחסון שיכולים לאחסן נתונים דיגיטליים. קובץ האזעקה משמש לאחסון השעה שבה האזעקה תופעל. כדי לאחסן את נתוני השעות (קלט של 5 סיביות) ודקות (קלט של 6 סיביות) עלינו להחתים 11 כפכפי d בתוך קובץ האזעקה שלנו. לשם כך עלינו לייבא תחילה את ההיגיון המסדיר את פעולת הכפכפים ולמפות את הרכיבים. כל אחת מ -11 כפכפי ה- d יאחסנה נתח אחד מהנתונים ותאפשר למיפוי הנתונים לפלטים של קובץ האזעקה. מכיוון ש- d-flip-flops מאחסנים נתונים, אנו יכולים להשתמש בנתונים בנקודת זמן מאוחרת יותר גם אם מתגי הכניסה שונו.

שלב 6: מנהל התצוגה של אוניברסלי שבעה קטעים

דרייבר תצוגה אוניברסלי של שבעה קטעים
דרייבר תצוגה אוניברסלי של שבעה קטעים
דרייבר תצוגה אוניברסלי של שבעה קטעים
דרייבר תצוגה אוניברסלי של שבעה קטעים
דרייבר תצוגה אוניברסלי של שבעה קטעים
דרייבר תצוגה אוניברסלי של שבעה קטעים

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

שלב 7: קישור קובץ

קובץ קישור
קובץ קישור
קובץ קישור
קובץ קישור
קובץ קישור
קובץ קישור

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

שלב 8: ארדואינו

ארדואינו
ארדואינו
ארדואינו
ארדואינו

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

שלב 9: ניתוב כבלים

ניתוב כבלים
ניתוב כבלים

לוח arduino ו- Basys 3 חייב להיות מחובר פיזית להעברת אותות בין הלוחות. הכבל הראשון לחוט יהיה מהסיכה הארקה של ה- JA PMOD של Basys 3 לסיכה הארקה של הארדואינו. לאחר מכן חבר חוט מהפין 1 של ה- JA PMOD של Basys 3 לסיכה הדיגיטלית 7 של הארדואינו. לאחר מכן, חבר שני סיכות הארקה מהארדואינו לסיכות הקרקע של מנהל הרמקול. לאחר מכן, חבר את יציאת ה -3.3 וולט של הארדואינו לפין ה- Vcc של מנהל ההתקן של הרמקול. לאחר מכן, חבר את הפין הדיגיטלי 9 של הארדואינו לפין ה- In של מנהל הרמקולים.

מוּמלָץ: