תוכן עניינים:
- שלב 1: תכנן את המעגל ש" FPGA "ייצג
- שלב 2: הזן את ה- FPGA
- שלב 3: מ- FPGA ל- Arduino
- שלב 4: מארדואינו ועד שבב DIP על לוח לחם
- שלב 5: מסקנה
וִידֵאוֹ: ארדואינו כ- FPGA זן קרש זול: 5 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
עיצוב מעגלי לוגיקה של חומרה יכול להיות כיף. הדרך הישנה של בית הספר לעשות זאת הייתה עם שערי NAND, על לוח לחם, מחוברים בחוטי מגשר. זה עדיין אפשרי, אך לא נדרש הרבה לפני שמספר השערים יוצא מכלל שליטה. אפשרות חדשה יותר היא להשתמש ב- FPGA (מערך שער לתכנות שדות). שבבים אלה יכולים לחבר את עצמם מחדש להפוך לכל מעגל לוגיקה דיגיטלית שתוכל לעצב, אך אינם זולים וזמינים. אני אראה כיצד ניתן להחליף את ה- FPGA הזה בשבב אטמגה זול מ- Arduino UNO, ולהכניס למעשה את המעגל הדיגיטלי לחבילת DIP, שהיא מאוד ידידותית ללוח.
שלב 1: תכנן את המעגל ש" FPGA "ייצג
אני אבנה אפרדר של 2 ביט + 2 סיביות. זה לוקח שני זוגות של סיכות קלט לוגיות, ויוצא שלישייה אחת של סיכות פלט.
כדי לעשות זאת עם שערי NAND, עיין בסכימה שבתמונה. הוא צריך 14 שערי NAND. השתמשתי בארבעה שבבי TTL שער NAND שער וחיברתי אותם על לוח הלחם.
הוספתי כמה נוריות (אל תשכח את הנגדים המגבילים הנוכחיים) כדי להראות מתי סיכות הכניסה והפלט היו דולקות (גבוהות) ומתי הן כבויות (נמוכות). כדי להניע את סיכות הכניסה, העברתי אותן למעקה הקרקע או למעקה הכוח החיובי.
מעגל זה פועל, אך הוא כבר תופס 4 שבבי TTL, והוא קן חוטים של חולדות. אם היו צריכים יותר פיסות, היו יותר לוחות לחם, ועוד קופצים. מהר מאוד גודל המעגל יצא מכלל שליטה.
הערה צדדית, כאשר עובדים עם שערים TTL, הם אינם מפלטים בדיוק 0V או 5V כפי שניתן היה לצפות. לעתים קרובות הם פלט סביב 3V עבור "גבוה", אבל המתח המדויק הוא בטווח רחב מאוד. אותו מעגל באמצעות השבבים המקבילים ל- CMOS יהיה טוב יותר בדיוק 0V עד 5V נדנדות בדיוק.
שלב 2: הזן את ה- FPGA
FPGA הוא שבב פנטסטי, שיכול ממש להפוך לכל שילוב של שערי היגיון, המחוברים יחד בכל שילוב. אחד מתכנן את "המעגל" בשפת עיצוב חומרה (HDL). ישנן מספר שפות כאלה שאחת מהן נקראת Verilog. קובץ ה-.v שבתמונה הוא המקבילה של Verilog לאפיית שני הסיביות. יש צורך גם בקובץ.pch שמתחתיו כדי להקצות את סיכות הקלט והפלט בשם בקובץ ה- verilog לפיני חומרה אמיתיים בשבב.
במקרה זה אני משתמש בלוח פיתוח iCEstick של Lattice Semiconductors (https://www.latticesemi.com/icestick). שבב ה- FPGA בפועל הוא iCE40HX-1k, עם קצת יותר מ -1000 שערים, שכל אחד מהם יכול להפוך לכל שער לוגי. כלומר כל שער יכול להיות שער NAND, או שער OR, NOT שער, NOR, XOR וכו '. בנוסף כל שער יכול להתמודד עם יותר משתי תשומות. זה ספציפי לכל יצרן, אך ב- iCE40 כל שער יכול להתמודד עם 4 כניסות. כך שכל שער מסוגל בהרבה משני שערי NAND הקלטים.
הייתי צריך להקצות את 4 אורן הכניסה ואת 3 סיכות הפלט לפינים הפיזיים 91, 90, 88, 87, 81, 80 ו- 79 בהתאמה. זה ספציפי לשבב ה- fpga ולוח הפריצה עליו הוא נמצא, וכיצד הסיכות האלה מחוברות ליציאת PMOD. זה זמין בגיליונות הנתונים של לוח FPGA זה.
Lattice מספקת שרשרת כלים משלהם לסינתזת (המקבילה ל- FPGA לאוסף עבור מעבדים) מ- Verilog, אך השתמשתי ב icestorm של שרשרת הכלים הפתוחים (https://www.clifford.at/icestorm/). הוראות ההתקנה זמינות באתר זה. עם התקנת סופת הקרח וקובץ ה- verilog ו- pcf, הפקודות לטעון מעגל זה על ה- FPGA הן:
yosys -p "synth_ice40 -blif twoBitAdder.v" twoBitAdder.blif
arachne -pnr -d 1k -p iCEstick.pcf twoBitAdder.blif -o twoBitAdder.asc
icepack twoBitAdder.asc twoBitAdder.bin
iceprog twoBitAdder.bin
זה עובד מצוין, אבל כולל משלוח iCEstick זה יעלה כ -30 $. זו לא הדרך הזולה ביותר לבנות מעגל דיגיטלי, אך היא עוצמתית. יש לו יותר מ -1000 שערים ובמעגל הזעיר הזה הוא משתמש רק בשלושה מהם. המקבילה לשער NAND השתמשה ב -14 שערים. זאת בשל העובדה שכל שער יכול להפוך לכל סוג של שער, וכל שער הוא למעשה שער קלט 4. כל שער יכול לעשות יותר. אם אתה צריך יותר שערים, ל- iCEstick יש אח גדול יותר עם 8000 שערים, זה עולה בערך כפול. ליצרנים אחרים יש הצעות אחרות אבל המחיר יכול להיות די תלול.
שלב 3: מ- FPGA ל- Arduino
FPGAs נהדרים, אך יכולים להיות יקרים, קשים להשגה ואינם ידידותיים ללוח לחם. שבב ידידותי וזול ללוח הלחם הוא ה- Atmega 328 P, המגיע באריזה DIP מסודרת, מושלמת ללוח לחם. ניתן להשיג אותו גם בסביבות 4 $. זהו ליבו של ה- UNO Arduino. אתה כמובן יכול להשתמש ב- UNO כולו, אבל תהיה זול, אנחנו יכולים למשוך את ה- Atmega 328 P מה- UNO ולהשתמש בו לבד. בכל זאת השתמשתי בלוח UNO כמתכנת עבור Atmega.
בשלב זה תצטרך
1. UNO Arduino, עם מעבד Atmega 328P הנשלף.
2. עוד אטמגה 328P עם מטען האתחול Arduino שנשרף מראש, להחליף את זה שאנו עומדים להוציא מה- UNO. (אופציונלי בהנחה שאתה עדיין רוצה לקבל UNO שמיש).
המטרה היא להמיר את קובץ ה- verilog לפרויקט ארדואינו שניתן לטעון אותו ב- 328P. Arduino מבוסס על C ++. באופן נוח יש מתרגם מ- Verilog ל- C ++, הנקרא Verilator (https://www.veripool.org/wiki/verilator). Verilator מיועדת לשימוש על ידי מעצבי חומרה שצריכים לדמות את העיצובים שלהם לפני שהם מעבירים את העיצובים האלה לחומרה יקרה. Cross Verilator אוסף את ה- verilog ל- C ++, ואז המשתמש מספק רתמת בדיקה כדי לספק אותות קלט מדומים ולהקליט את אותות הפלט. אנו הולכים להשתמש בו כדי לדחוס את עיצוב verilog לתוך Atmega 328P באמצעות שרשרת הכלים Arduino.
התקן תחילה את Verilator. עקוב אחר ההוראות בכתובת
התקן גם את ה- Arduino IDE ובדוק שהוא יכול להתחבר ל- Arduino UNO באמצעות USB.
אנו נשתמש באותו קובץ verilog כמו ל- FPGA, אלא שצריך לשנות את שמות הפינים. הוספתי קו תחתון (_) לתחילת כל אחד. זה נחוץ מכיוון שספריות הארדואינו כוללות קובץ כותרת שמתרגם דברים כמו B0, B001 וכו 'למספרים בינאריים. שמות סיכות הקלט האחרים היו תקינים כפי שהם, אך B0 ו- B1 היו גורמים לבנייה להיכשל.
בספרייה המכילה twoBitAdder.v ו- iCEstick.pcf, הפעל את הפעולות הבאות:
verilator -Wall --cc twoBitAdder.v
פעולה זו תיצור ספריית משנה בשם obj_dir המכילה מספר קבצים חדשים. אנו זקוקים רק לקבצי הכותרות וה- cpp, VtwoBitAdder.h, VtwoBitAdder.cpp, VtwoBitAdder_Syms.h ו- VtwoBitAdder_Syms.cpp.
ב- IDE של Arduino, צור סקיצה חדשה בשם twoBitAdder.ino. פעולה זו תיצור את קובץ ה- ino בספרייה חדשה הנקראת גם twoBitAdder, בתוך ספריית ספרי הסקיצות של Arduino. העתק את קבצי VtwoBitAdder.h ו- VtwoBitAdder.cpp שלך לתיקיית twoBitAdder הזו בתיקיית Arduino שלך.
כעת העתק את קבצי הכותרת מהתקנת המאמת.
cp/usr/local/share/verilator/include/verilated*.
סוף סוף העתק בספריית std c ++ מתוך https://github.com/maniacbug/StandardCplusplus. לפי הוראות ההתקנה שלהם זה מותקן בדיוק כמו ספריית ארדואינו רגילה. פרק את תכולת ההפצה לתיקיית 'הספריות' מתחת לספר הסקיצות שלך. לדוגמה, ספר הרישומים שלי נמצא ב-/home/maniacbug/Source/Arduino, כך שהספרייה הזו נמצא ב-/home/maniacbug/Source/Arduino/libraries/StandardCplusplus.
הקפד לאפס את Arduino IDE לאחר התקנתו."
כעת החלף את התוכן של twoBitAdder.ino בתוכן המופיע בשלב זה. זוהי רתמת בדיקה שהמכשיר מצפה לה, אשר מגדירה את סיכות הכניסה/הפלט, ואז בלולאה, קוראת את סיכות הקלט, מזינה אותן ל- VtwoBitAdder (הגרסה המתורגמת של המעגל שלנו), ואז קוראת את הפלט מ- VtwoBitAdder ומחילה אותם לסיכות הפלט.
תוכנית זו צריכה לאסוף ולבצע על UNO Arduino.
שלב 4: מארדואינו ועד שבב DIP על לוח לחם
כעת, כשהתוכנית פועלת ב- Arduino, איננו זקוקים עוד ללוח Arduino עצמו. כל מה שאנחנו צריכים זה המעבד.
הסר את ה- Atmega 328P בזהירות משקע ה- Arduino UNO, והכנס אותו להחלפה.
שים את ה- Atmega 328P על לוח הלחם. שים את הקצה כשהדיבו מצביע כלפי מעלה על לוח הלחם. סיכה 1 היא הסיכה השמאלית העליונה. סיכה 2 היא הבאה למטה, וכך הלאה לסיכה 14 שנמצאת בפינה השמאלית התחתונה. ואז סיכה 15 הימנית התחתונה, והסיכות 16 עד 28 סופרות בחזרה בצד ימין של השבב.
חבר את סיכות 8 ו -22 לקרקע.
חבר את סיכה 7 ל- VCC (+5V).
חבר קריסטל קוורץ 16 מגה -הרץ בין הסיכות 9 ל -10. כמו כן קבל קטן (22pF) בין סיכה 9 לקרקע, ובין סיכה 10 לקרקע. זה נותן ל- Atmega 328P את מהירות השעון של 16Mhz. יש הוראות במקומות אחרים ללמד את 328P להשתמש במקום זאת בשעון הפנימי של 8Mhz שיחסוך כמה חלקים, אבל זה יאט את המעבד.
יציאות ה- GPIO Arduino 5, 6, 7 ו- 8, בהן השתמשנו עבור סיכות הכניסה הן למעשה הפינים הפיזיים 11, 12, 13, 14 ב- Atmega 328P. אלה יהיו ארבעת הסיכות התחתונות בצד שמאל.
יציאות ה- Arduino GPIO 11, 10 ו- 9, בהן השתמשנו עבור סיכות הפלט הן למעשה הסיכות הפיזיות 17, 16, 15 ב- Atmega 328P. אלה יהיו שלושת הסיכות התחתונות מימין.
חיברתי את נוריות הלדים לסיכות האלה כמו קודם.
שלב 5: מסקנה
שבבי TTL עובדים, אבל צריך הרבה מהם כדי לבנות משהו. FPGAs עובדים ממש טוב, אבל הם לא זולים. אם אתה יכול לחיות עם פחות סיכות IO ומהירות נמוכה יותר, אז Atmega 328P עשוי להיות השבב עבורך.
כמה דברים שכדאי לזכור:
FPGA:
מִקצוֹעָן
- יכול להתמודד עם אותות במהירות גבוהה. מכיוון שאין מעבד לעיבוד צוואר בקבוק עד להוראה אחת בכל פעם, הגורם המגביל הוא עיכוב התפשטות דרך השערים במעגל הנתון. במקרים רבים זה עשוי להיות מהיר בהרבה מהשעון המסופק עם השבב. עבור העיצוב שלי, העיכוב המחושב היה מאפשר ל- twoBitAdder להגיב לכ -100 מיליון שינויים בערכי הקלט לשנייה (100Mhz) למרות שהשעון המובנה הוא קריסטל של 12Mhz בלבד.
- ככל שהעיצוב הופך מורכב יותר הביצועים של המעגלים הקיימים אינם פוגעים (הרבה). מכיוון שהוספת מעגלים למרקם היא פשוט להכניס משהו חדש לנדל ן שאינו בשימוש, זה לא משפיע על מעגלים קיימים.
- בהתאם ל- FPGA, מספר סיכות ה- IO הזמינות יכול להיות גבוה מאוד, והן בדרך כלל אינן ננעלות למטרה מסוימת.
Con
- יכול להיות יקר ו/או קשה להשגה.
- בדרך כלל מגיע בחבילת BGA הדורשת לוח פריצה כלשהו לעבודה עם השבב בכל פרויקט חובבני. אם אתה בונה אותו לעיצוב עם PCB SMT רב שכבתי מותאם אישית, זו לא בעיה.
- רוב יצרני ה- FPGA מספקים תוכנת עיצוב מקור סגור משלהם, שבמקרים מסוימים עלולה לעלות כסף או שיש להם תאריך תפוגה של רישיון.
ארדואינו כ- FPGA:
מִקצוֹעָן
- זול וקל להשגה. פשוט חפש atmega328p-pu באמזון. הם אמורים להיות בערך 4 $ ליחידה. מספר מוכרים מוכרים אותם בהרבה 3 או 4.
- זוהי חבילת DIP, כלומר מתאימה בצורה מושלמת על קרש לחם עם הסיכות החיצוניות שלו.
- זהו מכשיר 5V, שיכול להפוך את הממשק למכשירי 5V אחרים לקלים.
Con
- ל- ATMEGA328P יש מספר מוגבל של סיכות IO (23), וכמה מהן שמורות למשימות ספציפיות.
- ככל שמורכבות המעגל עולה, כמות קוד ההפעלה בשיטת לולאת Arduino עולה, כלומר משך כל מחזור ארוך יותר.
- גם אם מורכבות המעגל נמוכה, כל מחזור דורש הוראות מעבד רבות כדי להביא את ערכי סיכת הקלט ולכתוב ערכי סיכת פלט ולחזור לראש הלולאה. עם קריסטל של 16 מגה -הרץ, אפילו בהנחיה אחת לכל מחזור שעון, הלולאה לא תפעל יותר ממיליון פעמים בשנייה (1 מגה -הרץ). עבור רוב הפרויקטים האלקטרוניים החובבים זה הרבה יותר מהר ממה שצריך.
מוּמלָץ:
פאז גיטרה אקוסטית על קרש קרש: 3 שלבים
פאז של גיטרה אקוסטית בלוח הלחם: אזהרה! פרויקט זה תוכנן לשימוש עם גיטרה אקוסטית, לכן שימו לב כי יתכן שהוא אינו מתאים עם חשמל אחד. אודות הפרויקט: פרויקט הפרוטובארד הפשוט הזה של Fuzz מורכב ממעגל פשוט אך יעיל באמת. זה מוקדש להוסיף כך
מעגל מייקי מייק עם קרש קרש: 11 שלבים (עם תמונות)
מעגל Makey Makey With Breadboard: זהו פרויקט פשוט להכיר אלקטרוניקה לקבוצת סטודנטים. שלבים 1-7 - הצג מעגל פשוט עם Makey Makey. שלבים 8 - הרחבה למעגל בסדרה. שלבים 9 - הרחבה למעגל במקביל. נתחיל באיסוף התקליטורים
2 $ ארדואינו. ה- ATMEGA328 כעצמאי. קל, זול וקטנה מאוד. מדריך מלא: 6 שלבים (עם תמונות)
2 $ ארדואינו. ה- ATMEGA328 כעצמאי. קל, זול וקטנה מאוד. מדריך מלא: במדריך זה תלמד כיצד להשתמש בשבב מיקרו בקר Arduino ATMEGA328 כמיקרו-בקר עצמאי. הם עולים רק 2 דולר, יכולים לעשות את אותו הדבר כמו הארדואינו שלך ולהפוך את הפרויקטים שלך לקטנים ביותר. אנו נכסה את פריסת הסיכה
מחזיק סוללות גרילה לפרויקטים של קרש / ארדואינו: 3 שלבים
מחזיק סוללות גרילה לפרויקטים של הלוח / ארדואינו: אני מתנסה ב- DS1307 וב- Arduino, הייתי צריך למצוא דרך לחבר סוללת CR1212. חיטטתי בתיבת המחברים שלי, ולא מצאתי דבר שיכול לעזור. ואז, eur ê ka! הייתה לי תאורה
פנס חנות זול למראה, זול: 5 שלבים
פנס חנות LED זול למראה, ובכן, אם מישהו מכם הוא כמוני, רוב נורות הלד פשוט יקרות מדי. רציתי נורת LED זולה שנראתה נחמדה. אז, קניתי פנס RCA של $ 1 מ- Food City, והיה לי ראש של נורת LED שבורה. אז החלטתי לחבר את השניים. פלי