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

KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €: 13 שלבים (עם תמונות)
KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €: 13 שלבים (עם תמונות)

וִידֵאוֹ: KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €: 13 שלבים (עם תמונות)

וִידֵאוֹ: KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €: 13 שלבים (עם תמונות)
וִידֵאוֹ: The Abandoned Home of the Happiest American Family ~ Everything Left! 2024, יוני
Anonim
Image
Image
ה- KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €
ה- KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €
ה- KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €
ה- KIM Uno - אמולטור קיט מעבד מיקרו -מעבד בעלות של 5 €

KIM Uno היא ערכת התפתחות ניידת המוגדרת בתוכנה עבור מעבדים (רטרו). אבל הרשה לי להציג את הרעיון של זה על ידי חזרה אחורה בזמן:

בסוף 2018 עלה בדעתי שרציתי לבנות ערכת התקן מיקרו-מעבדים ניידת קטנה, ממש כמו ה- KIM-1 המפורסמת מבית MOS Technology, Inc, ותוכננה על ידי צ'אק פדל שהיה מעורב גם ביצירת המעבד 6502.

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

לכן, עיצבתי את KIM Uno כמכשיר נייד, שמתאים ביד אחת ומופעל על ידי שתי סוללות CR2032. הוא משתמש במיקרו -בקר ATMega328p ("Arduino") הפועל במהירות 8 מגה -הרץ כדי לחקות (או לדמות) מעבד רצוי. ארכיטקטורה זו גם מוודאת כי מעבדי החיקוי ניתנים להחלפה לכל מה שמתאים לזיכרון הבזק של הבקרה של המיקרו. אז זהו מכשיר רב תכליתי.

במקרה צפיתי מאוחר יותר בהרצאה ממש טובה - שנקראת The Ultimate Apollo Guidance Computer Talk (34C3) - ביוטיוב שם מוזכרים "מחשבי סט הדרכה אחת" או OISC. לא ידעתי עליהם ומצאתי את זה כמועמד המושלם ליישם אותו.

ה- KIM Uno מחקה מעבד עם הוראה אחת בלבד: subleq - מחסר ומסניף אם הוא פחות או שווה לאפס.

אם תעקוב אחרי איתי באמצעות הוראה זו, תוכל לבנות KIM Uno משלך תוך זמן קצר. והחלק הטוב ביותר - מלבד העובדה שאתה יכול לשנות אותו לטעמך - הוא שזה עולה רק 4, 75 € להכין (נכון לסוף 2018).

רמז אחד: יש מאגר Git המכיל את כל הקבצים המסופקים בשלבים השונים של הוראה זו. במקרה שאתה רוצה לשנות כמה משאבים ולשתף אותם איתנו כל מה שאתה יכול לעשות יחסי ציבור. אבל אתה יכול גם להוריד את כל הקבצים בו זמנית. פשוט אל https://github.com/maxstrauch/kim-uno. תודה!

יש עוד פרויקט די מעניין, הנקרא אותו (KIM Uno), שעושה העתק אמיתי של 6502 KIM Uno. בדוק את זה כאן. היוצר אפילו מוכר את הערכה. אז אם אתה מתעניין ב 6502 ואתה אוהב את הפרויקט הזה, כדאי שתסתכל שם!

שלב 1: רכישת ה- PCB

רכישת ה- PCB
רכישת ה- PCB
רכישת ה- PCB
רכישת ה- PCB

כפי שאתה יכול לראות, ניצלתי את ההזדמנות כדי לעצב PCB ולתת לו להיות עשוי באופן מקצועי. מכיוון שייצורו חיצוני ומשלוחו אליך ייקח הרבה זמן (תלוי היכן אתה נמצא בעולם;-)), הזמנתו היא השלב הראשון. לאחר מכן נוכל להמשיך עם השלבים האחרים בזמן ש- PCB מיוצר ונשלח אליך.

הזמנתי את ה- PCB שלי בסין ב- PCBWay תמורת 5 $ בלבד. אני לא מקבל שום תועלת בהצגת PCBWay כיצרנית שלי עבור PCB, זה פשוט עבד בשבילי ואולי גם יעבוד עבורך. אבל אתה יכול להזמין אותם בכל מקום אחר כמו JLCPCB, OSH Park או כל חברת PCB מקומית.

אבל אם אתה מוכן להזמין אותם ב- PCBWay תוכל להוריד את קובץ ה- ZIP המצורף "kim-uno-rev1_2018-12-12_gerbers.zip" ולהעלות אותו ישירות ל- PCBWay ללא כל שינוי. זהו הקובץ המקורי בו השתמשתי להזמנת ה- PCB שתוכלו לראות בתמונות.

אם אתה מזמין אותם מיצרן אחר, ייתכן שיהיה עליך לייצא אותם מחדש ממקורות ה- KiCad המקוריים, כי יצרתי אותם עם המפרט מ- PCBWay שתוכל למצוא כאן. למקורות KiCad המקוריים, הורד את "kim-uno-kicad-sources.zip" וחלץ אותו.

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

בכל אופן: מכיוון שה- PCB כעת בדרך, אנו יכולים להתמקד בחלקים האחרים! בוא עקוב אחריי.

שלב 2: רכישת רכיבים

רכישת רכיבים
רכישת רכיבים
רכישת רכיבים
רכישת רכיבים
רכישת רכיבים
רכישת רכיבים

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

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

בהמשך אסביר לך את כל הרכיבים הדרושים:

  • נגדים 7x1 kΩ לתצוגות שבעת הקטע. אתה יכול להפחית את הערך (למשל ל -470 Ω) כדי לגרום להם לזרוח בהיר יותר, אך להפחית אותו לא יותר מדי אחרת נוריות ה- LED ימותו או שהסוללה תתרוקן מהר מאוד. גיליתי שהערך הזה עובד בשבילי
  • 1x 10 kΩ כנגד משיכה לקו RESET של המיקרו-בקר
  • 1x קבל 100nF להחלקת כל זינוק מתח (מה שלא אמור לקרות מכיוון שאנו משתמשים בסוללות, נכון, אבל במידה טובה …)
  • 1x ATMega328P באריזה DIP-28 (בדרך כלל בשם ATMega328P-PU)
  • 1x ה- PCB הראשי - ראה את השלב הקודם; או שהזמנת או שנבנתה בעצמך
  • 2 מחזיקי סוללה CR2032
  • 1x מתג SPDT (מוט אחד, זריקה כפולה) שבעצם יש שלושה אנשי קשר ובכל שני מצביו (מופעל או כבוי) הוא מחבר שני אנשי קשר
  • 20x כפתורי לחיצה מיששים למקלדת. כדי להשתמש בחלק האחורי של הלוח השתמשתי בלחצני לחיצה מישושיים מסוג SMD (הכפתורים הסטנדרטיים של 6x6x6 מ"מ) - הם די קלים להלחמה כפי שתראה
  • אופציונלי: כותרת 1x 1x6 פינים לחיבור המתכנת, אך זה אופציונלי כפי שתראה בהמשך
  • 1 x תצוגת שבעה קטעים עם 4 ספרות ותצוגת שבעה קטעים עם 2 ספרות - הלוח ייקח רק אלמנטים בגודל 0.36 אינץ '(9, 14 מ"מ) עם חיווט אנודה משותף. שתי הדרישות חשובות על מנת לקבל יחידת עבודה. אבל גם סוג זה של תצוגת שבעה קטעים נפוץ מאוד

מצורף לשלב זה תוכל למצוא את הקובץ "component-datasheets.zip" המכיל מידע מדויק יותר על מידות וסוגי הרכיבים המשומשים. אך רוב הרכיבים סטנדרטיים מאוד וניתן להשיג אותם בקלות תמורת מעט כסף.

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

שלב 3: סקירת כלי הלחמה

סקירת כלי הלחמה
סקירת כלי הלחמה
סקירה כללית של כלי הלחמה
סקירה כללית של כלי הלחמה

לצורך הלחמה ובניית KIM Uno אתה צריך את הכלים המוצגים בתמונות:

  • חותך חוטים (לחיתוך קצה חוטי הרכיב)
  • צבת שטוחה
  • זוג פינצטה
  • הלחמה (הגונה) שאינה סמיכה - אני משתמש בהלחמה של 0.56 מ"מ
  • מגהץ הלחמה - אתה לא צריך מגהץ ברמה גבוהה (כי גם אנחנו לא עושים כאן מדעי רקטות) - אני משתמש ב- Ersa FineTip 260 כבר הרבה זמן וזה ממש טוב
  • עט שטף: הוספת שטף לרכיבים ולרפידות מקלה הרבה יותר על הלחמתם מכיוון שההלחמה "זורמת" מעצמה למקום הנכון*
  • אופציונלי: ספוג (ממתכת צמר) למגהץ ההלחמה שלך

כדי לתכנת מאוחר יותר את KIM Uno תצטרך גם:

  • מחשב עם שרשרת הכלים AVR-GCC ו- avrdude להעלאת הקושחה
  • ספק אינטרנט (מתכנת) - כפי שאתה יכול לראות בתמונה אני משתמש ב- Arduino Uno שלי כספק אינטרנט עם סקיצה מיוחדת - אז אין צורך לקנות חומרה מהודרת

* צריך קצת הדרכה של בני אדם;-)

האם אתה מוכן? בשלב הבא אנו מתחילים להרכיב את KIM Uno.

שלב 4: הלחמה מספר 1: הוספת נגדים וקבלים

הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים
הלחמה מספר 1: הוספת נגדים וקבלים

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

כמו כן, לא מוצג בתמונות, הוסף את הקבל הקטן של 100 nF באותה הדרך.

טיפ אחד: שמור את רגלי החוט בכלי קטן, לפעמים הם מועילים.

שלב 5: הלחמה מס '2: הרכבת המקלדת

הלחמה מספר 2: הרכבת המקלדת
הלחמה מספר 2: הרכבת המקלדת
הלחמה מספר 2: הרכבת המקלדת
הלחמה מספר 2: הרכבת המקלדת
הלחמה מספר 2: הרכבת המקלדת
הלחמה מספר 2: הרכבת המקלדת

השלב הבא הוא הלחמת 20 מתגי המישוש SMD. מכיוון שעבודה זו מעט מסובכת, אנו עושים זאת כעת, כאשר ה- PCB מונח על שולחן העבודה.

נעבוד מלמעלה למטה (או משמאל לימין אם ה- PCB מכוון כפי שמוצג בתמונות) ונתחיל בשורה הראשונה: בחר אחד מארבעת הרפידות לכל מתג והרטב אותו בעט השטף.

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

התמונה עם החצים מראה הגדלה כיצד בוצעה ההלחמה בדיוק.

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

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

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

שלב 6: הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה

הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה
הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה
הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה
הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה
הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה
הלחמה מס '3: תצוגת שבעה הפלגים, כותרת המתג והסיכה

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

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

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

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

שלב 7: הלחמה מס '4: הלחמת המיקרו

הלחמה מס '4: הלחמת המיקרו -בקר
הלחמה מס '4: הלחמת המיקרו -בקר

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

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

שלב 8: הלחמה מס '5: הוספת מחזיקי הסוללה (השלב האחרון)

הלחמה מספר 5: הוספת מחזיקי הסוללה (השלב האחרון)
הלחמה מספר 5: הוספת מחזיקי הסוללה (השלב האחרון)
הלחמה מס '5: הוספת מחזיקי הסוללה (השלב האחרון)
הלחמה מס '5: הוספת מחזיקי הסוללה (השלב האחרון)
הלחמה מס '5: הוספת מחזיקי הסוללה (השלב האחרון)
הלחמה מס '5: הוספת מחזיקי הסוללה (השלב האחרון)

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

שלב 9: מהבהב האמולטור

מהבהב אמולטור
מהבהב אמולטור
מהבהב אמולטור
מהבהב אמולטור
מהבהב אמולטור
מהבהב אמולטור

בארכיון ה- zip המצורף "kim-uno-firmware.zip" אתה יכול למצוא את קוד המקור של האמולטור יחד עם "main.hex" שנאסף כבר וניתן להעלות אותו ישירות למיקרו.

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

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m

אם אינך יודע avrdude: זוהי תוכנית להעלאת תוכניות למיקרו -בקר. אתה יכול ללמוד עוד על זה כאן. בעיקרון אתה מתקין אותו ואז הוא מוכן לשימוש. לצורך ההתקנה שלך ייתכן שיהיה עליך לשנות את הארגומנט של "-P" ליציאה טורית אחרת. אנא בדוק במחשב באיזו יציאה טורית משמשת (למשל בתוך ה- Arduino IDE).

לאחר מכן תוכל להבהב את הקושחה על המיקרו -בקר באמצעות פקודה זו:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U פלאש: w: main.hex

שוב: אותו דבר חל על "-P" כמו לעיל.

מכיוון שאינני מחזיק ב- ISP "מתכנת בתוך המערכת", אני תמיד משתמש ב- UND Arduino שלי (ראו תמונה) ובשרטוט שצירפתי ("arduino-isp.ino", מאת רנדל בוהן). אני יודע שיש גרסה חדשה יותר, אבל עם גרסה זו נתקלתי בבעיות בחמש השנים האחרונות, אז אני שומר אותה. זה פשוט עובד. באמצעות ההערה בכותרת הסקיצה אתה מקבל את הסיכה ב- UNO Arduino ושימוש הסכימה של KIM Uno (ראה מצורף) תוכל לקבל את pinout של הכותרת 1x6 ISP ב- KIM Uno. הסיכה המרובעת, הסמוכה לתצוגת שבעה המגזרים היא סיכה 1 (GND). הסיכות הבאות הן (בסדר הנכון): RESET, MOSI, MISO, SCK, VCC. אתה יכול לחבר VCC ל- 3V3 או ל- 5V.

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

יש לי שני מכשירים: גרסת ייצור ללא כותרות סיכות וגרסת פיתוח עם כותרות סיכה שאני משאירה מחוברת ומשתמשת בה שוב ושוב במהלך הפיתוח. זה הרבה יותר נוח.

שלב 10: סיים

גָמוּר
גָמוּר
גָמוּר
גָמוּר

עכשיו סיימת ותוכל להתחיל לכתוב תוכניות subleq משלך על נייר, להרכיב אותן ולאחר מכן להזין אותן בזיכרון.

ה- KIM Uno מגיע עם חישוב פיבונאצ'י מתוכנת מראש המתחיל במיקום הזיכרון 0x0a. הוא מוגדר כברירת מחדל ל- n = 6 ולכן אמור לגרום לערך 8. לחץ על "עבור" כדי להתחיל בחישוב.

שלב 11: ניתוח עיצוב PCB

ניתוח עיצוב PCB
ניתוח עיצוב PCB
ניתוח עיצוב PCB
ניתוח עיצוב PCB

לאחר השלמת פרויקט זה מצאתי כמה נקודות שראויות לציון ויש להתייחס אליהן בעריכה חדשה של הלוח:

  • למסך המשי של ATMega328p אין את החריץ הרגיל שבו נמצאת הסיכה הראשונה. לטביעת הרגל DIP-28 אין אפילו כרית מרובעת שבה נמצאת הסיכה הראשונה. זה בהחלט צריך להיות משופר עם מסך משי מפורט יותר למניעת בלבול
  • לכותרת ספק האינטרנט אין תוויות חיבור במסך המשי. זה מקשה על זיהוי איך לחבר אותו לספק האינטרנט
  • ניתן לשנות את הכותרת של ספק האינטרנט לכותרת 2x6 פינים עם פריסת סיכה סטנדרטית כדי למנוע בלבול

מלבד הנקודות האלה אני די שמח איך זה יצא ועבד בניסיון הראשון.

שלב 12: כיצד לתכנת SUBLEQ?

Image
Image
כיצד לתכנת SUBLEQ?
כיצד לתכנת SUBLEQ?
כיצד לתכנת SUBLEQ?
כיצד לתכנת SUBLEQ?

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

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

subleq A B C mem [B] = mem [B] - mem [A]; אם (mem [B] <= 0) עבור ל- C;

מכיוון ש- KIM Uno מחקה מכונה של 8 סיביות, כל הארגומנטים A, B ו- C הם ערכי 8 סיביות ולכן הוא יכול לטפל בזיכרון ראשי כולל של 256 בתים. ברור שניתן להרחיב את זה, על ידי ביצוע ערכים A, B ו- C מרובי בתים. אבל לעת עתה בואו נהיה פשוטים.

ל- KIM Uno יש גם "ציוד היקפי": הצג והמקלדת. הוא משתמש בארכיטקטורה ממופת זיכרון כדי להתממשק לאותם ציוד היקפי, אם כי מפת הזיכרון פשוטה מאוד:

  • 0x00 = רשם Z (אפס) וצריך להישאר אפס.
  • 0x01 - 0x06 = שישה בתים המייצגים את הערך של כל מקטעי התצוגה (מימין לשמאל). ערך 0xf - עיין בקוד המקור (main.c) לפרטים נוספים.
  • 0x07, 0x08, 0x09 = שלושה בתים כאשר כל בת מייצג שני שבעה תצוגות קטע (מימין לשמאל). מיקומי זיכרון אלה מאפשרים פשוט להציג תוצאה מבלי לפצל את התוצאה לשני נשנושים כדי למקם אותה במיקומי הזיכרון החד ספרתיים 0x01 - 0x06.
  • 0x0a+ = תוכנית מתחילה ב- 0x0a. כרגע מפתח "Go" מתבצע מ- 0x0a קבוע.

בעזרת מידע זה ניתן כעת לכתוב תוכנית ב- assembler ולהזין את ההוראות בזיכרון ולאחר מכן לבצע אותה. מכיוון שיש רק הוראה אחת, רק הארגומנטים (A, B ו- C) מוזנים. אז לאחר שלושה מיקומי זיכרון מתחילים טיעוני ההוראה הבאים וכן הלאה.

מצורף לשלב זה תוכל למצוא את הקובץ "Fibonacci.s" וגם תמונה של התוכנית בכתב יד המהווה יישום לדוגמה של פיבונאצ'י. אך המתן: ישנן שלוש הוראות המשמשות - במיוחד ADD, MOV ו- HLT - שאינן תת -תת. "מה העסקה? לא אמרת שיש רק הוראה אחת, subleq?" אתה שואל? זה מאוד קל: עם subleq אפשר לחקות את ההוראות האלה בקלות רבה:

MOV a, b - העתקת נתונים במיקום a עד b יכולה להיות מורכבת מ:

  1. תת ב, ב, 2 (הוראה הבאה)
  2. subleq a, Z, 3 (הוראה הבאה)
  3. תת Z, b, 4 (הוראה הבאה)
  4. subleq Z, Z, למשל 5 (הוראה הבאה)

באמצעות תכונת החיסור של subleq, שעושה mem - mem [a] ומחליף את mem עם התוצאה, הערך מועתק באמצעות רשם האפס. ו- "subleq Z, Z, …" פשוט מאפס את רשם האפס ל -0, ללא קשר לערכו של Z.

ADD a, b - מוסיף את הערכים a + b ושומר את הסכום ב- b יכול להיות מורכב מ:

  1. subleq a, Z, 2 (הוראה הבאה)
  2. subleq Z, b, 3 (הוראה הבאה)
  3. subleq Z, Z, למשל 4 (הוראה הבאה)

הוראה זו פשוט מחשבת את mem - (- mem [a]) שהיא mem + mem [a] על ידי שימוש גם בתכונת החיסור.

HLT - מפסיק את המעבד ומסיים את הביצוע:

בהגדרה האמולטור יודע שהמעבד רוצה לסיים אם הוא קופץ ל- 0xff (או -1 אם הוא שר). אז פשוט

תת Z, Z, -1

עושה את העבודה ומציין לאמולטור, שעליו לסיים את החיקוי.

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

מצורף לשלב זה תוכל למצוא גם את ארכיון ה- zip "kim_uno_tools.zip". הוא מכיל כמה מכלים וסימולטור בסיסי ל- KIM Uno. הם כתובים ב- NodeJS - וודא שהתקנת אותו.

הרכבת תוכניות

אם תסתכל על "Fibonacci/Fibonacci.s" תמצא שזה קוד המקור ליישום הפיבונאות שנדון. כדי להרכיב אותו ולהכין ממנו תוכנית ש- KIM Uno יכול להריץ, אתה מזין את הפקודה הבאה (בשורש הארכיון "kim_uno_tools.zip" שחולץ):

צומת assemble.js פיבונא/פיבונ.ס

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

צומת assemble.js פיבונא/פיבונ.ס> yourfile.h

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

הצומת sim.js yourfile.h

ותוצג בפניך תוצאת הסימולציה והפלט הצפוי מ- KIM Uno בתצוגה.

זו הייתה הקדמה קצרה מאוד לכלים אלה; אני ממליץ לך לשחק איתם ולראות איך הם עובדים. בדרך זו אתה מקבל ידע עמוק ולומד את עקרונות התפקוד מאחורי מעבדים, הוראות, מכלולים ואמולטורים;-)

שלב 13: Outlook

הַשׁקָפָה
הַשׁקָפָה
הַשׁקָפָה
הַשׁקָפָה
הַשׁקָפָה
הַשׁקָפָה

מזל טוב

אם קראת את זה כנראה שעברת את כל ההדרכה ובנית משלך KIM Uno משלך. זה ממש נחמד.

אבל המסע לא מסתיים כאן - יש אינסוף אפשרויות כיצד תוכל לשנות את KIM Uno ולהתאים אותו לצרכיך ולחיבוביך.

לדוגמה KIM Uno יכול להיות מצויד באמולטור מעבד רטרו "אמיתי" שעשוי לחקות את ה- MOS 6502 המפורסם או את Intel 8085, 8086 או 8088. אז זה יגיע בדרך לחזון הראשוני שלי, לפני שלמדתי על OISC.

אך ישנם שימושים אחרים, שכן עיצוב החומרה די גנרי. ניתן להשתמש ב- KIM Uno כ…

  • … שלט רחוק למשל עבור CNC או מכשירים אחרים. אולי קווי או מצויד בדיודת IR או בכל שולח אלחוטי אחר
  • … מחשבון כיס (הקסדצימלי). ניתן להתאים את הקושחה בקלות רבה ואין צורך לשנות את עיצוב הלוח במיוחד. אולי ניתן להתאים את מסך המשי בעזרת פעולות מתמטיות ולהסיר את הפער בין הקטעים. מלבד זאת, היא כבר מוכנה לשינוי הזה

אני מקווה שנהניתם לעקוב ובתקווה לבנות את ה- KIM Uno כפי שעיצבתי ותכננתי אותו. ואם תרחיב או תשנה - אנא יידע אותי. לחיים!

תחרות PCB
תחרות PCB
תחרות PCB
תחרות PCB

מקום שני בתחרות ה- PCB

מוּמלָץ: