התקן לוגי מתוכנת מורכב (CPLD) הוא פריט חומרה חיוני ברפרטואר שלך. כפי שהשם מרמז, אתה יכול לתכנת את השבבים הללו כדי לספק את פונקציות הלוגיקה שאתה צריך. זה יכול להיות החלפת שבבים מיושנים, או סתם דרך ללמוד ולנסות טכנולוגיות שונות. איזו דרך טובה יותר ללמוד מאשר להשתמש ב-CPLD ולנסות אותו?
יצרתי מודול CPLD כדי שאוכל לחבר אותו לדברים רבים, כולל לוחות ניסוי ללא הלחמה, אבל פישלתי. נראה ששטח החיבור הפנוי על לוח הניסוי ללא הלחמה הוא 1.1 אינץ'. עיצבתי את השטח ברוחב 1 אינץ', מבלי להשאיר מקום לשורת חוטים משני הצדדים. אה.
אבל הרשו לי לחזור ולהראות עוד על מה שאני עושה, אני רוצה ליצור לוגיקה ניתנת לתכנות שניתן לבנות אותה כערכה, שניתן להלחים אותה בקלות בבית, שניתן לתכנת אותה במעגל, ויכולה לעבוד ב-3.3 או 5 וולט.
על מנת לממש ערכת הלחמה קלה, השתמשתי ברכיב CPLD ישן, הזמין גם בגרסאות 3.3 וולט ו-5 וולט, וישמור על התכנות שלו ללא קשר לספק הכוח. הלוגיקה עצמה היא מעגל משולב CPLD מסדרת Altera Max, הזמין בשתי גרסאות, המתאים למעגלים עם 32 או 64 תאי מאקרו. תאי מאקרו הם אבני הבניין הלוגיות הבסיסיות המתוכנתות באמצעות "מונחים" לוגיים ולאחר מכן מחוברות עם תאי מאקרו אחרים באמצעות חיבורים ניתנים לתכנות.
כשמסתכלים על הסכימה, אפשר לראות שאין בה הרבה תוכן: בעיקרון ה-CPLD, מעגל התכנות בתוך המעגל והמתנד שמניע את לוגיקת ה-CPLD.
חלק זה נקרא EPM7032 ו-EPM7064, ומשתמש בנשא שבב פלסטיק (PLCC) בעל 44 פינים, המכונה לעיתים מוליך J בגלל צורת ה-J של המוליך. ניתן להכניס חבילה זו לשקע חור-עובר או להלחים אותה ישירות למעגל המודפס.
מכיל מתנד מובנה, כך שה-CPLD יכול לבצע פעולות באופן סטטיסטי וליצור מונים מהירים בעצמו ללא צורך בשעון חיצוני. אם שעון חיצוני זמין, ניתן להשתמש בשעון המהיר במודול כדי ליצור אירוע שעון על כל קצה עולה או יורד של השעון החיצוני, ועדיין לפעול לפי הנחיות CPLD/FPGA, כלומר, כדאי להשתמש ברשת השעון הגלובלית הפנימית במקום בהנעות "אסינכרוניות" לכניסת השעון. מתח אספקת החשמל המדורג של מתנד זה הוא בין 1.8 ל-5.5 וולט.
אם תצפו בסרטון, תראו שאני דן בהעדפה האישית שלי לגבי איך לטפל בפין "INH" על המתנד; במילים פשוטות, אחרי שאני בודק שגיליון המפרט חוקי, אני נוטה לתת לזה לצוף.
כשאני עוסק בפונקציות כאלה, הסיבות שעלו במוחי כללו את סלידתי מחיבור פיני הקלט ישירות לפסי החשמל (אם אפשר). כלומר, אני מעדיף להשתמש בנגדים טוריים כדי להגביל את הזרם במהלך תנועות מעבר, גם אם זה לא אמור להיות נחוץ.
במהלך השנים, נתקלתי בכמה בעיות בייצור (אצוות גדולות), ולעיתים דברים כמו מחזורי הפעלה וכיבוי (power clearance) היו מאפשרים לפינים המחוברים ישירות לפס החשמל להיות בעלי מתח גבוה יותר מאשר השבב עצמו, וזה רע. לבסוף, חברו את הפין לפס החשמל דרך נגד (בין אם חשמל או הארקה), ואנשים יוכלו לשנות את דעתם ולהשתמש בפין מאוחר יותר. זה נכון במיוחד מניסיוני עם דלתות שאינן בשימוש, אתם בטח יודעים שאסור להשאיר דלתות אלו צפות או לא מחוברות. באמצעות נגד Pull-Up, ניתן לחבר את האות ולהשתמש בשער מבלי לחתוך עקבות נחושת.
מחבר 10 פינים וכמה נגדים יוצרים את מעגל התכנות. אם כל הנגדים הם נגדי Pull-Up, הייתי משתמש ברשת נגדים, אבל אבוי, אחד מהם מחובר להארקה.
כדי לתכנת CPLD עצמאי שכזה, נדרש מתכנת ייעודי. קל לי לומר זאת, כי בדרך כלל יש לי כמה כאלה לידי, אבל אם אין לכם אחד, לא יהיה כואב מדי להיכנס למשחק. ה-"Altera USB Blaster" המאושר נמכר ב-50 דולר וניתן לרכוש אותו מ-Digikey וממקומות אחרים. יש לי כמה שיבוטים מאיביי, אחד מהם הוא שיבוט שתומך ב-Altera, Xilinx ו-Lattice בו זמנית. יש פרויקט וקוד באינטרנט שניתן להשתמש בהם כדי ליצור שיבוט משלכם, אני אפרט אותם ברשימת הסרטונים האפשריים שלי לפרויקט של יצירת שיבוטים של מתכנתים. אני גם אראה עיצוב מגן שבו ניתן לתכנת את לוח האם, ארדואינו, PIC וכו'.
התוכנה הנדרשת לקמפל ולתכנות ה-CPLD זמינה בחינם מ-Altera, אך חלק ישן זה דורש את גרסה 9.1 הישנה. החדשות הטובות הן שזו הייתה הגרסה הישנה והאהובה עליי. היה לה מנתח תזמון אינטואיטיבי, אך הוא הוסר בגרסה מאוחרת יותר.
המעגל המודפס הוא עיצוב דו-צדדי פשוט, כל עוד לוח המעגלים מתאים לו, אני נוטה להשתמש בנחושת להארקה ולפעמים גם באספקת חשמל. לפעמים היציקה הופכת כל כך שבורה שהיא עלולה לגרום לבעיות או לתוצאות סופיות רשלניות, כך שיציקת נחושת שוב היא כלי, אבל צריך לנהל אותה.
כיום, חבילות תוכנה רבות (אם לא רובן) של CAD מכילות תצוגות תלת-ממדיות של המוצר הסופי, אם כי דיוק התמונות מדויק רק כמו המודלים התלת-ממדיים המשמשים לייצוג החלקים. כאן תוכלו לראות היכן בחרתי את המודל התלת-ממדי עבור שקע 44 פינים, מחבר תכנות ומתנד. הנה כמה חבילות תלת-ממד שאני אוהב להשתמש בהן:
לחברות רבות יש גם מודלים תלת-ממדיים של הרכיבים שלהן. מולקס היא רק דוגמה אחת לחברה שעשתה עבודה טובה בתחום זה.
הטעות שעשיתי לא משפיעה על התפקוד כמו על האסתטיקה, וזו לא הבעיה העיקרית, כלומר, זה לא מתאים ללוח לחם יחיד ללא הלחמה.
ברגע שחשבתי שאוכל לשתף את העיצוב עם מישהו, מיד לא הייתי מרוצה מהסמלים הסכימטיים של ה-CPLD ומהפינים של מחבר ה-40 פינים, שהוא השטח הכולל שלו. לקחתי סמל מחבר דו-שורתי בן 40 פינים והתאמתי אותו לשטח של אינץ' אחד, אבל מספרי הפינים אינם 1, 2, 3, 4... אלא ממוספרים 1 בצד כמו חבילת DIP 3, 5, 7... בדיוק כמו מחברי כבל סרט. לכן, זהו שטח לא אינטואיטיבי לקביעת אופן החיבור למודול ולפתרון בעיות.
באופן דומה, הקצאות הפינים של CPLD מעט מבלבלות, והשתמשתי בקבוצת כלים שמסתמכים על Boundary Scan Description Language (BSDL) כדי ליצור סמלים. לרוב הספקים הגדולים יש קבצי BSDL זמינים עבור הרכיבים המרכזיים שלהם, המאפשרים ליצור סמלים וחבילות באופן (חצי) אוטומטי. כמו כל אוטומציה, יש לראות אותה ככלי ועשויה לדרוש טיפול נוסף לקבלת התוצאות הטובות ביותר. במקרה זה, נתתי לה לרשום את הפינים בסדר אלפביתי, וזה כמעט אקראי כשעוקבים אחר הפינים על הלוח. אני יכול רק לומר שהייתי מאוד חרד באותו יום.
אתם משלמים על קיצורי הדרך האלה מתישהו בדרך. כשאני אלך לשנות את המודול הזה, אני אקבע ואציין לו מיקום פינים שמתאים לחלק עצמו, כך שידיעה היכן למקם את גלאי האוסילוסקופ שלך תהיה קלה כמו מבט בסמל הסכימה.
בעת שימוש בלוחות מעגלים, ישנם שיפורים נוספים שהם בעיקר אסתטיים או שימושיים. מחוון פין 1 צריך להיות נפוץ יותר בכמה מארזים, ואני תמיד מעדיף נקודת הארקה פשוטה לחיבור הארקת האוסילוסקופ או חוט ה-VOM. אני יכול להוסיף זאת על ידי הוספת מחבר דו-פינים כך שניתן יהיה להחיל את החשמל וההארקה ישירות על הלוח במקום להיות מהודקים לפינים התחתונים.
לפני שאני משנה את לוח המעגלים, אני רוצה לוודא שהוא פועל כראוי תחת בעיות פיזיות ואסתטיות. לאחר שהפעלתי את המעגל ואישרתי שהמתנד פועל כראוי, חיברתי את המתכנת. למרות שגרסת ה-3.3 וולט חדשה יותר מתוכנת התכנות, היא זיהתה את ה-CPLD והציגה אותו כהתקן "לא ידוע".
לאחר מכן, יצרתי מונה ב-Quartus והקצתי מספרי PIN. הקומפילציה וההורדה המהירים ופונקציית המונה שנראית על ידי האוסילוסקופ מאשרים שהתכנון בר ביצוע.
מעגל הבדיקה המהיר ב-Verilog הוא פשוט מאוד. הקוד מופיע למטה. ניתן להוריד קובץ ZIP המכיל את הסכימה ואת מעגל הבדיקה של Verilog כפרויקט Quartus II (דורש גרסה 9.1).
כפי שציינתי, תבצע תיקון שני של לוח המעגלים כדי לשים לב יותר לפרטים הנדרשים בעת שיתוף העיצוב או ביצוע מספר פעולות לפתרון בעיות. מכיוון שאני צריך להגדיר את רוחב המחבר התחתון ל-0.9 אינץ' או פחות, אני יכול להמשיך להגדיר אותו ל-0.6 אינץ', שהוא מארז DIP "רחב" סטנדרטי. פעולה זו פירושה לאפשר לפינים התחתונים לבלוט מטביעת הרגל של שקע ה-CPLD. לא הייתי עושה זאת במצב ייצור מכיוון שהוא הורכב ידנית באותה תקופה, אבל אחת המטרות הייתה ליצור ערכת הלחמה ידנית. הפשרה של הלחמה ידנית היא שהמתנד אכן צריך להיות בתוך מארז הרכבה משטחית SMD, גרסת החור העובר גדולה מאוד ובדרך כלל אינה תומכת בטווח המתחים שאני רוצה.
האם ניתן להשתמש במודולים האלה כדי לבנות מחשב פשוט לחלוטין? אני חושב שאני צריך להוסיף זיכרון.
חחח... כן, זה תלוי איזה סוג מחשב. עם זאת, מיקרו-בקרים/מיקרו-מחשבים "אמיתיים" מושפעים מ"חיבור הפינים" של המודול, מה שאומר שאי אפשר לקבל מספיק טרמינולוגיה מהמודול כדי לעשות משהו מועיל מדי.
הכנתי בקר תזמון ומצב שלם למצלמה NTSC בגודל 64, כך שאין צורך במעבד.
הורילוג המבני וה-HDL המשמשים בספר Nand לטטריס זהים פחות או יותר.
למה חלקים עוברים? ריתוך 0805 זה קל! עכשיו זה הזמן שכל מתחנן ילמד את המיומנות הזו.
אם אגרום לשקע העליון לחפוף את הפינים המולחמים מלמטה, אז אוכל להשתמש ב-"6 מרכזים" (מדמים שבב בעל 40 פינים) או באלכסון וכו'. זה יהיה הלחמה ידנית בלבד של רכיבים להלחמת חוטים תחתונים. השקע העליון מאחורי הרגליים.
אבל קשה למתחילים להלחים את זה מלמטה. כשאני מלחים ראשי חיבורים ללוח המעגלים המודפס של לוח החימום (לוחות מתאם SMD זולים אלה שניתן להשתמש בהם באיביי יכולים לשמש לאב טיפוס), אני מכניס את הראשים ללוח החימום, ואז מניח עליו את הלוח המודפס, ואז אני יכול להלחים בקלות. זה מאוד מתאים ללוחות חימום. אם צריך להלחים את זה מלמטה, זה אפילו יותר קשה.
אם ה-CPLD נמצא באמצע (ייתכן שקל יותר לחווט), ניתן להתקין אותו באלכסון ללא חפיפה, ישנן 4 שורות, או שה-CPLD יכול להיות בצד אחד:
תודה על הטיפ להכניס את המחבר ללוח החיתוך לפני ההלחמה. שלי קצת לא יציב.
מה לגבי פיני לוח הניסוי בפורמט DIP בקצה אחד וסוג ה"דונגל" של שקע השבב עצמו בקצה השני? ניתן לתלות את השבב על קצה לוח הניסוי. הניתוב יהיה צפוף.
|####### ******************** |. כן, החלטתי להשתמש בגרסה ה"חינמית" של אלטרה, בדיוק כמו של-Xilinx ול-Lattice יש גרסאות "חינמיות". אני צריך לסיים את המעגל עם אל וויליאמס כדי להבין מה כל התמיכה הפתוחה תומכת, שחייבת לכלול את המאפיינים הספציפיים של סדרת המכשירים. עם זאת, עשיתי הרבה עם הגרסה החינמית.
כן, אתה מראה ש-CPLD חופף לפינים, אני מאמין. אם אני מבין נכון, זה עשוי להיראות כמו גרסה 2. כשאני מתכנן לייצור (המוני), אני תמיד אלרגי לשלב "הרכבת ההלחמה הידנית" כי הם חופפים (למעשה פיני ההלחמה בצד שאינו הרכיב). ) שכבר מדובר ברכיב מולחם ידנית) אבל זו רק ערכה קטנה, לא עיצוב מכוון ייצור. יש לי פשוט כמה הרגלים שקשה להיפטר מהם בגילי. 
אני חושב שמעגל מודפס בצורת T עם CPLD ורכיבים פסיביים עם חלק רחב בצורת T יהיה שימושי מאוד כאשר הוא תלוי על קצה לוח הניסוי. משהו דומה ל-Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). זה יפנה את רוב שטח לוח הניסוי.
לרוע המזל, הפסקת השימוש בו תגביל מאוד את השימוש בו בפרויקטים צדדיים, בדיוק כמו כל אותם מחוללי פונקציות המבוססים על XR2206 ו-ICL8038.
רעיון מעניין. אני אוהב את שני השבבים האלה. CPLD לא מיושן, זו פשוט דרך זולה יותר לקנות אותו ב-3.3 וולט.
לגבי ה"שטויות" שלך... באמת לא עשית פריסה חדשה כדי לשים את זה על לוח החיתוך. פשוט שים את החוט קודם על לוח החיתוך, ואז שים את ה-CPLD על החוט. או, אם אתה יכול לנתק את פסי החשמל וההארקה מאחד מהם, השתמש ב-2 לוחות חיתוך.
לגבי Altium ו-Eagle. שקלתם את KiCad? אין לו שום מגבלות שאתם מעדיפים את Altium על פני Eagle, וכברירת מחדל הוא מייצר שגיאות DRC עבור כל הפינים שאינם מחוברים. אם אתם באמת רוצים לפתוח פין, אתם צריכים לספר לו. (אולי רק עבור קלט, לא עבור פלט, וזה עדיין לא נבדק). תכונה נהדרת נוספת היא שקל מאוד ללמוד אותו. זה לקח רק אחר צהריים, והמדריך המבוא המצוין גרם לי להתחיל.
אני מעדיף את ה-SMD (החלק הגדול יותר) מעל החור העובר. הם קלים יותר לשימוש. לא צריך לסובב את המעגל המודפס כל הזמן. (נעשו כמה טעויות טיפשיות בגלל שיקוף...). וגם לא צריך לחתוך את המוליך של הנגד. כשחולקים עיצוב, ניתן להניח בנוחות מספר חבילות על גבי מעגל מודפס או על חלק בודד. נגד SMD TH. (זה אכן הופך את הפריסה לקצת יותר מסובכת).
השתמשתי ב-"KiCad Getting Started" בפורמט PDF. הגרסה הישנה בה השתמשתי היא בת 29 עמודים, והגרסה האחרונה כוללת 52 עמודים. ניתן למצוא אותה במדריכים אחרים (כולל קישורי וידאו): http://kicad-pcb.org/help/tutorials/
אני יודע ש[כריס גמל] מ-Hackaday ו-The Amp Hour יצר סדרה על Kicad http://kicad-pcb.org/help/tutorials/
Kicad עשוי להיות שימושי, תן לי לראות מה קורה בגרסה 2. תודה על ההצעות שלך. כניסות לא מחוברות הן דבר טוב עבור DRC (ERC), ועבור מחברים ודברים אחרים ששומרים עליהם רכים או IO, בדרך כלל ניתן להימנע מרוב הודעות הניתוק של CAD.
הרץ בדיקה מהירה והשליך את המחבר לטבלה ריקה, הרץ הערות ו-DRC. זה נתן לי שגיאות drc עבור כל פין. עם זאת, סימון פינים לא מחוברים ידועים הוא פשוט מאוד.
מוגדר לפסיבי. אני צריך לחפש (עריכת רכיב -> עריכה באמצעות עורך הספרייה). עורך הספרייה נפתח וטוען את הרכיב שלך בחלון נפרד, אתה יכול לבדוק או לשנות כל חלק של הרכיב. ניתן לשמור או לעדכן את הרכיב שהשתנה בסכימה שלך. זה מקל מאוד על שינוי רכיבים. לא ממש אכפת לי מהספרייה. לדוגמה, אם אתה משתמש ב- cpld, אתה רוצה להקצות שמות משמעותיים לפינים. וחשוב מכך, יש ממשק טוב לעיצוב רכיבים משלך.
ב-ERC של KiCad, פינים "לא מחוברים" הם סוג שונה של פינים מפינים "פאסיביים", וכל הפינים "הלא מחוברים" ייצרו שגיאות. ניתן להתאים בקלות את אופן הפעולה של ERC להעדפותיך: כלים -> בודק חוקי חשמל -> אפשרויות.
זמן פרסום: 18 בנובמבר 2021





