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

מחשב עשר ביט - VHDL: 4 שלבים
מחשב עשר ביט - VHDL: 4 שלבים

וִידֵאוֹ: מחשב עשר ביט - VHDL: 4 שלבים

וִידֵאוֹ: מחשב עשר ביט - VHDL: 4 שלבים
וִידֵאוֹ: מעבדה מס' 10: יצירת מערכת ושיטות סימולציה - חלק א 2024, נוֹבֶמבֶּר
Anonim
מחשב עשר ביט - VHDL
מחשב עשר ביט - VHDL

תוצרת: טיילר סטאר ואזזיידן גזאלי

מבוא

פרויקט זה הושלם במסגרת פרויקט הגמר עבור CPE 133 ב- Cal Poly SLO. זהו פרויקט נהדר למי שמחפש להבין כיצד מחשבים מתפקדים ברמה הנמוכה ביותר וכיצד הם משיגים את משימותיהם. הפרויקט מעוצב על פי מחשב ה- SAP של 8 סיביות המתואר בספרו של אלברט מאלווינו אלקטרוניקה ממוחשבת. עם זאת, הגדלנו את המחשב ל -10 סיביות כדי לאפשר יישום של קודי אופ יותר (קודי פעולה). המשתמש יכול לתכנת את המחשב לביצוע מערך פעולות על ידי הזנת הוראות מסוימות.

ארכיטקטורת מערכת ומעגלים:

המחשב כתוב ב- VHDL ויכלול על לוח Basys 3 מבית Digilent. הכניסות ימופו למתגים בתחתית הלוח. שני מתגי מישוש ישמשו לפונקציות האיפוס והכתיבה. הפלט יוצג בתצוגת 7 פלחי הלוח.

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

שלב 1: חומרים

חומרים
חומרים

כל מה שצריך לפרויקט זה הוא לוח Basys3 FPGA מבית Digilent וחוט מיקרו USB לחיבור הלוח למחשב שלך.

שלב 2: חסימת תרשים של מודולי מעגלים

תרשים חסימה של מודולי מעגלים
תרשים חסימה של מודולי מעגלים
תרשים חסימה של מודולי מעגלים
תרשים חסימה של מודולי מעגלים
תרשים חסימה של מודולי מעגלים
תרשים חסימה של מודולי מעגלים

תרשימי הבלוקים לעיל מציגים את מודולי המעגלים השונים המרכיבים את מחשב 10 הסיביות. להלן תיאורים של כל אחד מהחלקים/המודולים הבודדים המוצגים בתרשימים לעיל.

מונה תוכניות

תיאור כניסות: קלט הוא קלט של 5 סיביות להעלאת מספר לתוך מונה התוכניות. Cp כאשר גבוה המונה סופר על נפילת קצוות השעון. Clr מאפס את המונה ל- 0. Ep כאשר המונה גבוה פולט את הספירה הנוכחית. Sp כאשר גבוה המונה קובע את הספירה למספר הנכנס

  • תיאור הפלטים:

    פלט הוא עותק של ספירה לשימוש על LEDS 0-15. ספירה מוציאה את הספירה הנוכחית.

  • המקום הכולל במערכת: מונה זה עוקב אחר מיקום הזיכרון בו נמצאת התוכנית. כל התוכניות מתחילות בכתובת הזיכרון 00000 (0) ועולות עד 11111 (31), אלא אם נעשה שימוש בעצירה. בהצהרות קפיצה, מונה התוכנית ממשיך לספור מהכתובת שאליה קופצת התוכנית.

קלט MUX

  • תיאור כניסות: כתובת לוקחת את הקלט ממפסקים 11 עד 15. MAR לוקח את הקלט מרשם 10 הסיביות המשמש כ- MAR. התוכנית שולטת על הקלט לנתב לפלט.
  • תיאור יציאות: הפלט מנתב את הקלט הנבחר ל- RAM.
  • המקום הכולל במערכת: MUX זה קובע אם לנתב את הכתובת מהבוררים או מהאוטובוס ל- RAM. במצב התוכנית מנותבים הכתובת מהמתגים ובמצב הפעלה מנותבים הכתובת מהאוטובוס.

ramMUX

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

ramModule

  • תיאור כניסות: inputData הם הנתונים המאוחסנים ב- RAM. inputAddress הוא המיקום בו הנתונים נשמרים. התוכנית מציינת אם המחשב נמצא במצב תוכנה או הפעלה. readWrite מציין אם מתרחשת פעולת קריאה או כתיבה. notCE הוא ביט השליטה עבור מודול ה- RAM. move מציין כי מתבצעת פעולת מעבר.
  • תיאור הפלט: outputDataToBus הם הנתונים שעוברים מה- RAM לאוטובוס. outputData וכתובת פלט הם הנתונים והכתובת הנכנסים לרשם ההוראות.
  • המקום הכולל במערכת: ה- RAM מאפשר אחסון תוכנות ונתונים בזיכרון לפני הפעלת תוכנית. לאחר הפעלת התוכנית, ה- RAM מקבל כתובת מה- MAR ומוציא את הנתונים בכתובת זו לאוטובוס.

addressROM

  • תיאור כניסות: opCode היא הקלט המכיל את כתובת קוד האופן המבוצע על ידי המחשב
  • תיאור הפלט: opCodeStart היא כתובת הזיכרון המצביעה על המיקום הראשון של הוראות המיקרו של opCode המתאים.
  • המקום הכולל במערכת: מודול זה לוקח את המיקרו-הוראה הכלוא ומוציא את מיקום הזיכרון המתאים לתחילת אותו רצף מיקרו-הוראות.

ringCounter

  • תיאור כניסות: איפוס מחזיר את המונה ל -100000 ("מצב T" הראשון). Clk מגדילה את הדלפק באחד בקצה השעון הנופל. NOP מציין כי המצב/המחזור הנוכחי הוא מחזור "אין פעולה".
  • תיאור יציאות: הספירה היא הפלט של המונה.
  • המקום הכולל במערכת: מונה הטבעות שולט על המונה הניתן לתיקון מראש ומתווה את ששת המיקרו-שלבים בכל מחזור הדרכה (T1-T6).

מונה מראש

  • תיאור כניסות: opCodeStart הוא מיקום הזיכרון של הוראות המיקרו עבור opCode המתבצעות. T1 מאפס את המונה ל -0 כאשר הוא גבוה. כאשר T3 גבוה, opCodeStart נטען והספירה ממשיכה מאותו מקום במשך 3 המחזורים הנותרים (T4-T6). Clr מגדיר את הנגד ל- 0. Clk מרווח אחד על קצה נופל.
  • תיאור הפלטים: controlWordLocation פולט את מיקום הזיכרון של מילת הבקרה שיש לבצע.
  • המקום הכולל במערכת: לכל קוד אופ יש 3 הוראות מיקרו. המונה עולה ב- 1 החל מ- 0 במשך 3 המחזורים הראשונים (מחזור אחזור). המונה מופעל על ידי מונה הטבעת כדי לטעון את הכתובת ב- opCodeStart ולהגדיל ב- 1 במשך 3 המחזורים הנותרים. באופן זה שולט מראש המונה ברצף ההנחיות המיקרו שיש לבצע.

שליטהROM

  • תיאור כניסות: controlWordLocation היא הכתובת של ה- controlWord שהפקד controlROM יפיק. NOP מציין כי המיקום הוא מיקום "ללא פעולה".
  • תיאור יציאות: controlWord היא מילת הבקרה המאפשרת/משביתה את מודולי המחשב השונים לביצוע פעולה רצויה.
  • המקום הכולל במערכת: מודול זה מפענח את מיקום הזיכרון מהקונה מראש ומוציא את ה- controlWord לפעולה הרצויה.

ALU

  • תיאור כניסות: A ו- B הן התשומות מרשם א 'ומרשם ב' שבהן ALU מבצע את פעולות החשבון וההיגיון. כאשר חיסור פעיל, זה מצביע על כך ש- B מופחתת מ- A.
  • תיאור התפוקות: התוצאה היא תוצאה של הוספת A ו- B, או הפחתת B מ- A. התפוקות moreThan, lessThan ו- שווה כדי לציין אם (AB, או A = B) והן משמשות במודול הקפיצה המותנה. שגיאה מצביעה על הצפה או תת זרימה כשהיא פעילה.
  • המקום הכולל במערכת: ה- ALU מכיל את ההיגיון לפעולות החשבון וההיגיון המבוצע על ידי המחשב. מודול זה יכול להוסיף ולהחסיר שני מספרים בינאריים של 10 סיביות. ALU יכול גם לקבוע אם A> B, A

מותנה Jmp

  • Descriptoin של כניסות: inputCount משמש כדי לנעול את הספירה הנוכחית. inputAddress משמש לנעילת הכתובת שאליה יקפצו. loadFromRegister כאשר קלט תפס נמוך כתובת. loadCount כאשר תפס נמוך inputCount. כאשר outputEnable נמוך הפלט מוגדר לכתובת לקפוץ אל. gt, iT ו- eQ קובעים איזה מצב נבדק. largeThan, lessThan ו- equalTo הם התשומות מ- ALU המצביעות על תוצאת ההשוואה בין A ו- B. בקצה השעון העולה של Clk הקלט inputCount ו- inputAddress נקרא לרשמים.
  • תיאור הפלט: outputJmp היא הכתובת בה מונה התוכנית יקרא.
  • המקום הכולל במערכת: מודול זה מטפל בקפיצות מותנות ולא מותנות עבור המחשב. בהתבסס על כניסות gT, iT ו- eQ, המודול קובע איזה תנאי לבדוק ואם תנאי זה נכון או לא נכון. אם התנאי נכון, הוא יפיק את כתובת ההוראה שאליה יש לקפוץ, אחרת היא תוציא את ספירת ההוראה הבאה.

binToBCD

  • תיאור כניסות: מספר את מספר 10 הסיביות להמרה לעשרוני המקודד בינארי.
  • תיאור הפלט: מאות הספרות במקומות מאות של המספר הבינארי. מעשר את הספרה במקום העשרות של המספר הבינארי. אלה הספרה במקומות אלה של המספר הבינארי.
  • המקום הכולל במערכת: מודול זה ממיר את מספר 10 הסיביות מרשם הפלט ל- BCD על מנת שדרייבר התצוגה בן ארבע הספרות שלנו יציג את המספר בעשרוני בתצוגת 7 הקטע.

fourDigitDriver

  • תיאור כניסות: מספר הוא הקלט הבינארי של 16 סיביות שמונע למפענח. inClk הוא השעון הפנימי של לוחות Basys ומשמש למחלק שעונים. RST מאפס את השעון המשמש להנעת הספרות.
  • תיאור יציאות: האנודה קובעת איזה מקום ספרה יואר. הספרה היא מספר הכניסה למפענח.
  • המקום הכולל במערכת: מודול זה מניע את המפענח להוציא את מספר ה- BCD לתצוגה.

מפענח

  • תיאור כניסות: inputNumber היא הספרה שמגיעה מהנהג ואשר תתפענח.
  • תיאור יציאות: קתודות קובעות אילו קטודות יופעלו להצגת הספרה הרצויה.
  • המקום הכולל במערכת: מודול זה מפענח את הספרה שיש להציג בתצוגת 7 הקטעים.

fourDigitDisplay

  • תיאור הכניסות: המספר הוא המספר שיוצג בתצוגת 7 הקטעים. שגיאה מציינת מתי אמור לקרוא בתצוגה "שגיאה". Clk הוא אות השעון שהמסך פועל. אות זה חייב להיות סביב 60 הרץ כדי שהתצוגה תוכל להציג את כל המקומות בני ארבע הספרות בו זמנית.
  • תיאור יציאות: האנודה קובעת איזה מקום ספרתי מופעל. קתודה קובעת אילו קתודות מופעלות להצגת הספרה הרצויה.
  • המקום הכולל במערכת: מודול זה מציג מספר בתצוגת 7 הקטעים. עיין במדריך ההוראות של לוח Basys 3 למידע על אילו קטודות ואנודות מופעלות לשימוש בתצוגה. כאשר סיביות השגיאה גבוהות, התצוגה מראה "שגיאה".

פלט MUX

  • תיאור כניסות: progModeInput קובע אילו לדלקות מופעלות במהלך מצב התכנות. runModeInput קובע אילו לדלקות מופעלות במהלך מצב ההפעלה. modeSelect הוא ביט הבחירה או השליטה עבור ה- MUX.
  • תיאור הפלטים: ledOutput מציין אילו הלדים יופעלו.
  • המקום הכולל במערכת: בהתאם למצב בו המחשב נמצא (תוכנית או רום), ה- MUX יפעיל את הלדים השונים. במצב תכנית (modeSelect הוא '0'), ה- MUX מדליק את הלדים כדי להידמות למיקום הזיכרון בו נמצא המחשב ומה הוא מכיל. במצב הפעלה (modeSelect הוא '1'), ה- MUX משמש לניפוי באגים אך ניתן להגדירו להציג כל דבר אחר.

שעון מחלק

  • תיאור כניסות: עצירה קוראת את חמשת סיביות ה- MSB מהאוטובוס כדי לזהות פקודת עצירה ('11111') ועוצרת את השעון. inputClk הוא אות השעון הפנימי של לוח Basys 3.
  • תיאור הפלט: ouputClk הוא השעון החדש שהואט.
  • המקום הכולל במערכת: שעון זה משמש להאטת המחשב כדי לאפשר למשתמש לקבוע מה קורה. השעון יכול לפעול הרבה יותר מהר, אולם כרגע הוא מוגדר ל -2 הרץ.

triStateBuffer

  • תיאור כניסות: דין הוא קלט 5 סיביות הנכנס למאגר. Ep הוא ביט השליטה.
  • תיאור הפלט: Dout הוא הפלט של 5 סיביות של המאגר
  • המקום הכולל במערכת: כאשר סיבי הבקרה Ep פעילים, המאגר פולט את הקלט. כאשר ביט הביקורת אינו פעיל, המאגר אינו פולט כלום.

tenBitDRegister

  • תיאור הכניסות: Dbus הוא הקלט שאליו יש לרשום. Clk מאפשר לרשום לקרוא נתונים בקצה שעון עולה. ARST מגדיר את הרישום ל- 0 באופן אסינכרוני. כאשר outputEnable נמוך, תוכן הרשומה הוא הפלט. כאשר readIn נמוך, הרישום נועל את Dbus בקצה השעון העולה.
  • תיאור הפלט: Qbus הוא הפלט של הרשומה
  • המקום הכולל במערכת: הרשמה משמשת מספר פעמים ברחבי המחשב ומשמשת לאחסון מידע בעת ביצוע פעולות.

fiveBitDRegister

  • תיאור כניסות: Dbus הוא הקלט שאליו יש לרשום. Clk מאפשר לרשם לקרוא נתונים בקצה שעון עולה. ARST מגדיר את הרישום ל- 0 באופן אסינכרוני. כאשר outputEnable נמוך, תוכן הרשומה הוא הפלט. כאשר readIn נמוך, הרישום נועל את Dbus בקצה השעון העולה.
  • תיאור הפלט: Qbus הוא הפלט של הרשומה.
  • המקום הכולל במערכת: הרשמה משמשת מספר פעמים ברחבי המחשב ומשמשת לאחסון מידע בעת ביצוע פעולות.

שלב 3: קוד

להלן תיקייה המכילה את קובצי האילוץ ומקור המחשב של 10 סיביות.

שלב 4: הדגמה וקוד לדוגמא

הסרטון למעלה מדגים כיצד לתכנת את המחשב 10 סיביות על לוח ה- FPGA של Basys 3. להלן מצורף קובץ pdf הכולל את קודים ותוכנית לדוגמא.

מוּמלָץ: