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

6502 מחשב מינימלי (עם Arduino MEGA) חלק 1: 7 שלבים
6502 מחשב מינימלי (עם Arduino MEGA) חלק 1: 7 שלבים

וִידֵאוֹ: 6502 מחשב מינימלי (עם Arduino MEGA) חלק 1: 7 שלבים

וִידֵאוֹ: 6502 מחשב מינימלי (עם Arduino MEGA) חלק 1: 7 שלבים
וִידֵאוֹ: Asus Zenbook Fold | מה עושים עם לפטופ מתקפל? 2024, יולי
Anonim
6502 מחשב מינימלי (עם Arduino MEGA) חלק 1
6502 מחשב מינימלי (עם Arduino MEGA) חלק 1

המעבד 6502 הופיע לראשונה בשנת 1975 ותוכנן על ידי צוות קטן בראשות צ'אק פדל עבור טכנולוגיית MOS. אז הוא שימש בקונסולות וידאו ובמחשבים ביתיים כולל Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 ו- 64. באותה תקופה הוא היה אחד הזולים בשוק. זה מעולם לא באמת נעלם ועכשיו הוא משמש חובבים ואנשי מקצוע ליישומים רבים.

הגרסה שאני משתמש בה היא W65C02S6TPG-14 אשר מיוצרת על ידי Western Design Center ומשתמשת בהספק גדול פי עשרה מהמקור. זה מיוחד בכך שהוא לא חייב לפעול במהירות של 1 מגה -הרץ כמו השבב המקורי. הוא יכול לפעול הרבה יותר לאט או לשמש לשלב אחד בתוכנית ואפילו לעלות עד 14 מגה -הרץ. גליון הנתונים של השבב מסביר את יכולותיו. ל 6502 שבבים אחרים אין את היכולת הזו ולא יפעלו בצורה זו. השבבים זמינים כעת ב- eBay וכן במקורות אחרים.

אספקה

כל החלקים המשמשים זמינים כעת ב- eBay, AliExpress ואחרים.

שלב 1: הרעיון

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

כמו בן, אני משתמש ב- MEGA Arduino כדי לפקח על 6502. אני משתמש גם ב- MEGA כדי לספק את אות השעון בניגוד לבן. כרגע אני גם לא משתמש בשום EEPROM או RAM.

שלב 2: דרישות

דרישות
דרישות

לבניית "מחשב" זה רשימת הפריטים היא כדלקמן:

1 x Arduino MEGA

1 x מרכז העיצוב המערבי W65C02S6TPG-14

1 x 74HC00N IC (שער NAND מרובע 2 כניסות) או דומה

1 x 74HC373N IC (תפס שקוף מסוג אוקטל D) או דומה

2 x 830 לוחות לחם (1 בקמצוץ)

דופונט זכר - מוביל זכר וחוטי קישור

2 x נוריות (השתמשתי בכחול 5 מ מ מכיוון שאתה יכול לברוח ללא נגדים)

1 x 12 מ מ מתג לחצן מישוש רגעי לחיצה על לוח PCB רכוב SPST או דומה

נגד 1K 1K

2 x 0.1 קבלים קרמיקה uF

1 x 8 Way Water Light Marquee LED 5 מ מ אדום (כמו לעיל) או 8 נוריות נגדים

הערה: אם אתה מקבל את הערכה הלא מולחנת, אתה יכול להכניס את נוריות ה- LED בצורה לא נכונה כך שיהיו קתודה נפוצה. אני מחבר מוביל זבוב (במקום הסיכה) כך שהוא יכול להתחבר בקלות למקום אחר. VCC הופך כעת ל- Ground. אתה כמובן יכול להפוך את הלדים (על פריט מורכב) ולהלחם אותם מחדש, אבל זה הרבה פאפ! ערכות זמינות כעת ב- AliExpress.

שלב 3: חיבור זה יחד

לשים את זה ביחד
לשים את זה ביחד
לשים את זה ביחד
לשים את זה ביחד

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

חבר את פין 9 (A0) של 6502 לסיכה 52 של ה- MEGA, סיכה 10 (A1) של 6502 לסיכה 50 וכו '…

עד

חבר את סיכה 25 (A15) של 6502 לסיכה 22 של ה- MEGA.

16 חיבורים עד כה.

כְּמוֹ כֵן

חבר את סיכה 26 (D7) של 6502 לסיכה 39 של ה- MEGA, סיכה 27 (D6) של 6502 לסיכה 41 וכו '…

עד

חבר את סיכה 33 (D0) של 6502 לסיכה 53 של ה- MEGA.

8 חיבורים נוספים.

חבר את פין 8 (VDD) ל- 5v ב- MEGA.

קבל 0.1uF המחובר מסיכה 8 ל- Gnd של לוח הלחם עשוי להיות שימושי כאן אך לא הכרחי.

חבר את סיכה 21 (VSS) ל- Gnd ב- MEGA.

ניתן לקשור את סיכות 2, 4, 6, 36 ו -38 ל- 5V

חבר את סיכה 37 (שעון) לסיכה 2 ולסיכה 7 של ה- MEGA.

חבר את סיכה 34 (RWB) לפין 3 של ה- MEGA.

חבר את סיכה 40 (איפוס) כפי שתרשים למעלה.

שלב 4: בדיקת המעגל

בדיקת המעגל
בדיקת המעגל

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

בשלב זה יהיה טוב גם להגדיר את העיכובים בלולאה () ל -500 או יותר, לעקוב אחר המתרחש.

אתה אמור לקבל פלט דומה במסך הסידורי כמו זה למעלה. כאשר לוחצים על איפוס, המעבד עובר 7 מחזורים ואז הוא מחפש את תחילת התוכנית במיקומים $ FFFC ו- $ FFFD. מכיוון שאין כתובות פיזיות לקריאת ה- 6502, עלינו לספק אותן מה- MEGA.

בפלט הנ ל, 6502 קורא $ FFFC ו- $ FFFD ומקבל $ 00 ו -10 $ (בתים נמוכים, בתים גבוהים) שהם תחילת התוכנית ב -1000 $. לאחר מכן המעבד מתחיל להפעיל את התוכנית במיקום של $ 1000 (כאמור לעיל). במקרה זה הוא קורא A9 ו- $ 55, כלומר LDA#$ 55 (טען 85 במצבר). שוב מכיוון שאין מיקום זיכרון פיזי, ה- MEGA מדמה את הנקרא מאוטובוס הנתונים.

55 $ (85) נותן את הדפוס הבינארי 01010101 וכאשר מסובבים סיבוב אחד שמאלה נותן $ AA (170) 10101010.

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

שלב 5: השלב הבא

השלב הבא
השלב הבא
השלב הבא
השלב הבא

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

בשלב הבא עליך להוסיף את מחשבי ה- IC 74HC373N ו- 74HC00N ללוח הלחם.

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

חבר 5v לפין 20.

חבר את הקרקע לסיכה 10.

חבר את סיכה 33 (D0) של 6502 לסיכה 3 (D0) של ה- 74HC373N

וכמו כן עם סיכות D1 עד D7.

Q0 עד Q7 הם הפלט ואלו יצטרכו חיבור למרכב ה- LED או נוריות בודדות ונגדים.

עם 74HC00 יש צורך רק בשני שערים שלו

חבר 5v לסיכה 14.

חבר את הקרקע לסיכה 7.

חבר את סיכה 17 (A8) של 6502 לפין 1 (1A) של 74HC00

חבר את פין 25 (A15) של 6502 לסיכה 2 (1B) של 74HC00

חבר את סיכה 34 (R/W) של 6502 לסיכה 5 (2B) של ה- 74HC00

חבר את פין 3 (1Y) של 74HC00 לסיכה 4 (2A) של ה- 74HC00

חבר את פין 6 (2Y) של 74HC00 לסיכה 11 (LE) של 74HC373N

חבר את פין 11 (LE) של 74HC373N לסיכה 1 (OE) של 74HC373N

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

לבסוף שנה את השורה בהליך onClock מתוכנית 1 לתוכנית 2

setDataPins (program2 [offset]);

שלב 6: התוכנית

התכנית
התכנית
התכנית
התכנית

תוכנית 6502-Monitor מכילה את שתי השגרות של 6502 שתוארו לעיל.

התוכנית עדיין בפיתוח והיא מעט מסודרת.

בעת הפעלת program2, העיכובים בלולאה () יכולים להיות 50 או פחות ואף להסיר לגמרי. התייחסות לשורות Serial.print () גורמת גם ל 6502 לרוץ מהר יותר. ניתוק סיכה 1 (OE) של 373 מהסיכה 11 (LE) מניב תוצאות שונות. ניתוק סיכה 1 וסיכה 11 של 373 משערי NAND מאפשרת לך לראות מה יש באפיק הנתונים בכל מחזור שעון.

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

ניסיתי לשמור על התוכנית פשוטה ככל האפשר כדי להקל על ההבנה.

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

להלן שתי התוכניות (שתיהן פועלות בכתובת $ 1000) ב- 6502 Assembler:

תוכנית 1

LDA#55 $

NOP

ROL

STA 1010 $

JMP 1000 $

ה- ROL מסובב את תכולת המצבר לביט אחד שנותר, כלומר 55 $ הופך כעת ל- $ AA.

בקוד מכונה (hex): A9 55 EA 2A 8D 10 10 4C 00 10

תוכנית 2

LDA#$ 01

STA 8100 $

ADC#03 $

STA 8100 $

JMP 1005 $

בקוד מכונה (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

ב- program2 קיימת כעת כתובת פיזית $ 8100, שם נמצא 74HC373 באוטובוס הכתובות.

כלומר A15 מתוך 6502 הוא 32768 ($ 8000) ו- A8 הוא 256 ($ 0100) = 33024 ($ 8100).

אז כאשר 6502 כותב ל- $ 8100 (STA $ 8100) R/W של 6502 נמוך והנתונים על אוטובוס הנתונים 6502 ננעלים כאשר ה- 373 LE יורד. בגלל שער NAND 74HC00, האותות הפוכים.

בהדפסת המסך לעיל הכתיבה השנייה עלתה ב- 3 (ADC#$ 03) - עברה מ -7 $ ל -82 $.

במציאות, יותר משני קווים של אוטובוס הכתובות ישמשו למיקום הספציפי של 373. מכיוון שזוהי הכתובת הפיזית היחידה מתוך 65536 האפשרית, היא מדגימה את אופן הפעולה של אוטובוס הכתובות. תוכל להתנסות בסיכות כתובת שונות ולמקם אותה במיקום אחר. כמובן שתצטרך לשנות את אופרנדות STA למיקום החדש. לְמָשָׁל אם השתמשת בשורות כתובת A15 ו- A9 הכתובת תהיה 8200 $ (32768 + 512).

שלב 7: סיכום

סיכום
סיכום

ניסיתי להדגים כמה קל להריץ 6502.

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

אתה מוזמן לפתח זאת הלאה ואני מעוניין במה שעשית.

בכוונתי להוסיף לפרויקט EEPROM, SRAM ו- 6522 וכן לשים אותו על לוח חשפנות בעתיד.

מוּמלָץ: