‏הצגת רשומות עם תוויות Model-Based Design. הצג את כל הרשומות
‏הצגת רשומות עם תוויות Model-Based Design. הצג את כל הרשומות

יום ראשון, 30 באפריל 2017

Model-Based Design עבור מערכות Software Defined Radio

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

מערכת SDR טיפוסית מסוגלת לשדר ולקלוט (Transceiver) סיגנלים בתדרים שונים ולממש סטנדרטים שונים של תקשורת, כגון LTE ,FM ,Wi-Fi ,Bluetooth ועוד. 

מערכת מסוג זה 
כוללת מספר רכיבי חומרה:

·         RF Front-End לשידור וקליטה
·         FPGA
·         DSP


שילוב מתודולוגיית Model-Based Design בתהליך פיתוח של מערכת SDR מאפשר למהנדס הקצה Rapid Prototyping ושליטה מלאה במערכת, החל משלב המידול בסביבות MATLAB&Simulink ועד להרצה בזמן אמת על גבי כרטיס אבלואציה, כפי שיוסבר בפוסט זה.


שלב המידול
פיתוח המערכת ב-MATLAB&Simulink, הכולל מודל Analog (Radio) ומודל Digital (Baseband Processing), סימולציה ווריפיקציה בסביבת Simulink. לחומר לחצו כאן.

בדיקת האלגוריתם עם Streaming RF data
שידור/קליטה של I/Q data בזמן אמת באמצעות רדיו המחובר ל Host-PC כאשר החלק האלגורימתי רץ בסביבת MATLAB&Simulink.

ריצת Stand Alone של המערכת
ייצור אוטומטי של קוד HDL/C עבור כרטיס ZYNQ (הכולל FPGA+ARM), טעינה וריצה על גבי הכרטיס,
תוך אפשרות של שליטה על ה-
ARM ב-External Mode דרך Simulink.
כדי לתמוך במערכות מורכבות אלו היה צורך בשיתוף פעולה בין MathWorks לספקי חומרה דוגמת Avnet, Xilinx, AnalogDevices, ונכון להיום יש תמיכה במגוון רחב של חומרות כגון:
-          USRP
-          RTL-SDR
-          PicoZed-SDR
-          ZedBoard/ZC706
למידע נוסף אודות חומרות הנתמכות על ידי כלי MathWorks, לחצו כאן.

להרחבה - 
 ניתן למצוא מידע כאןניתן גם לפנות לאלי בשאלות באמצעות המייל:  elilevi@systematics.co.il

יום חמישי, 26 בנובמבר 2015

על החשיבות של גמישות בתהליך הפיתוח

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


בניהול מוצר מאוד אוהבים יכולת חיזוי, שכן היא מאפשרת תכנון מראש, אך מצד שני – בפיתוח מוצר יש גם צורך בחדשנות ויכולת תגובה מידית למגמות וצרכים בשוק.
חשוב להכניס גמישות מרבית לתהליך הפיתוח של מוצרים, כזו שתאפשר להתמודד עם שינויים בשלבים מאוחרים בצורה שלא תשבש את לוחות הזמנים ואת איכות המוצר, ולא תחייב השקעה כספית גדולה.
כלומר - המטרה היא לא לדכא את השינויים – אלא להשתמש בגישות אשר יהיו מסוגלות להכיל אותם !
ובדיוק בנושא הנ"ל, של תהליך פיתוח גמיש, קיימה החודש חברת סיסטמטיקס יום עיון בו השתתפו מובילי פיתוח מחברות שונות בישראל, מכל סוגי התעשייה, בהדרכתו של ד"ר פרסטון סמית' (Dr. Preston G. Smith) - המשמש כיועץ בתחום לחברות שונות, מחבר של שלושה ספרים בנושא תהליכי פיתוח וניהול פרויקטים, ומפעיל האתריםFlexibleDevelopment.com  ו- NewProductDynamics.com.

---

מבוא לגמישות

גמישות נחוצה כאשר הטכנולוגיה אינה ודאית (או משתנה בקצב מהיר), כאשר השוק חדש או לא מספיק ברור, כאשר סביבת השותפים לא יציבה, כאשר ייצור / הפצת / השימוש במוצר נתונים להשפעה של אירועים עולמיים, כאשר הלקוחות לא בטוח יודעים מה הם רוצים עד שהם פוגשים את המוצר, וכו'. יחד עם זאת – יש לבחור את הנקודות הספציפיות בתהליך הפיתוח בהם נדרשת גמישות, כיוון ש"גמישות אוניברסלית" הינה מאוד יקרה.
טכניקת גמישות "ותיקה" (משנת 2,000) ומוכרת היא Agile Software Development, אשר נוחלת הצלחות בפרויקטים קטנים, בעיקר בפרויקטי תוכנה.
בפיתוח מוצר (לא תוכנה) – יש צורך בטכניקה אחרת – כזו המאפשרת שילוב בין בניה מהירה של אב טיפוס (לצורך הצגתו ללקוחות וקבלת משוב מהם), מעקב אחר דרישות המתעדכנות כל הזמן ומתן מענה עליהן, ביצוע ניסויים וסימולציות לאורך כל שלבי הפיתוח (בדגש על השלבים המוקדמים בהם קל יותר וזול יותר לתקן בעיות) וגמישות מרבית. ו-Flexible Product Development היא בדיוק טכניקה שכזו !

---

לקוחות ודרישות לקוח

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

---

ביצוע ניסויים

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

---

כלי MathWorks ו- Flexible Product Development

MATLAB, Simulink וכלי MathWorks האחרים אותה מפיצה חברת סיסטמטיקס מאפשרים Flexible Product Development במספר רב של מובנים.
באמצעותם, למשל, ניתן לבצע מגוון בדיקות של what-if, ולבחור חלופת תכנון אופטימלית.
בגישת Model-Based Design, תוך שימוש בפלטפורמת Simulink – תהליך הפיתוח המסורתי הופך לתהליך איטרטיבי מהיר – המאפשר לבצע בקלות שינויים בתכנון.
ועם הכלים האוטומטים להמרת קוד MATLAB ומודלים של Simulink לקוד C / HDL – ניתן להשהות את הבחירה ב-Target ספציפי לשלבים מאוחרים מאוד בתהליך הפיתוח.
גמישות, כבר אמרנו ?

---

אז... עד כמה תהליך הפיתוח שלכם גמיש ?

המעוניינים בפגישה להערכת גמישות תהליך הפיתוח שלהם, ולבחינת התאמת כלי MathWorks לתהליך העבודה בחברה לצורך שיפור הגמישות בה – מוזמנים ליצור קשר באמצעות royf@systematics.co.il. זו גם הכתובת לאלה מכם הרוצים להשתתף בימי עיון דומים שתקיים סיסטמטיקס. 


יום שלישי, 11 באוגוסט 2015

טקסי מטלב | על ההתנסות של התעשיה האווירית בשימוש בכלי MathWorks בפיתוח ה-TaxiBot

מנועים של מטוסים מסחריים נמצאים ביעילות מקסימלית בזמן טיסה, ואינם אופטימליים בזמן הסעה (taxiing) של המטוס בשדה התעופה, בין שער העלייה למטוס לבין מסלול ההמראה. לדוגמה, בהסעה טיפוסית של 17 דקות, בואינג 747 יכול לצרוך טון דלק, ולשחרר 3.2 טון של דו-תחמוצת-הפחמן, תוך כדי גרימת רעש רב. משמע, יש לדבר משמעויות כספיות וסביבתיות, ולכן – התעשייה האווירית פיתחה את הטקסיבוט (TaxiBot) – כלי רכב חצי-רובוטי המסוגל להסיע מטוס מתודלק שמנועיו הראשיים כבויים. בזכות הפיתוח הזה – צריכת הדלק יורדת מטון ל-25-30 ליטר בלבד, ופליטת דו-תחמוצת-הפחמן פוחתת מ-3.2 טון ל-60 ק"ג בלבד. חשוב, לא ?

כדי לפתח את תוכנת מחשב המשימה של ה-TaxiBot, השתמשה התעשייה האווירית בתכנון מבוסס-מודל (Model-Based Design) באמצעות MATLAB ו-Simulink – משלב כתיבת הדרישות, דרך מידול המערכת, המרה אוטומטית שלה לקוד C, ועד שילוב הקוד הנ"ל וביצוע וריפיקציה שלו על ידי בדיקות Hardware-in-the-loop. הפרויקט, אגב, אף רושיין באמצעות כלי MathWorks לתקן ה-DO-178 - לחצו לפוסט בנושא הנ"ל בבלוג הזה מלפני שלוש וחצי שנים.

כדי לקרוא על ההתנסות של התעשיה האווירית בשימוש בכלי MathWorks בפרויקט – וכיצד הם קיצרו את זמני הפיתוח ב-50% בהשוואה להתנסות שלהם עם שיטות פיתוח מסורתיות – לחצו כאן.

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

יום ראשון, 18 ביולי 2010

שימו לינק ל-Simulink !

זו, פחות או יותר, היתה בקשה שהתקבלה באחת מהתגובות לפוסט של חודש אפריל. אז לרגל סיום המונדיאל, ולקראת שני סמינרים בנושא Simulink, הנה פוסט שבמקרה הטוב יעשיר את הידע שלכם בשימוש בתוכנה, ובמקרה הרע – רק יסייע לכם להעביר את הזמן... אז מה זה בכלל Simulink ? Simulink היא סביבה לביצוע סימולציות המשלבות מגוון תחומים (multidomain simulations) וכן לתכנון מבוסס-מודל (Model-Based Design) של מערכות דינמיות ומשובצות-מחשב. היא מספקת ממשק גרפי אינטראקטיבי ואוסף של ספריות בלוקים (הניתן להתאמה אישית), אשר יחד, מאפשרים למשתמש לתכנן, לסמלץ, לממש ולבדוק מגוון מערכות תלויות-זמן, כולל מערכות תקשורת, בקרה, עיבוד אות, עיבוד וידאו ועיבוד תמונה.
כדי לפתוח את התוכנה, יש לכתוב Simulink ב-command window של MATLAB, או פשוט ללחוץ על האייקון של Simulink:


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


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

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

ב-MATLAB, עלינו להשתמש בשורות הקוד הבאות:


ב-Simulink, לעומת זאת, אין צורך ב"כתיבת" השורה הראשונה (זו שמגדירה את וקטור הזמן) ! ראשית, יש לפתוח מודל ריק חדש (המקבילה של פתיחת m-file ריק חדש) על ידי לחיצה על New Model מתוך ה- Simulink Library Browser:

ואז, יש לגשת למחיצת sources של Simulink, לסמן את בלוק ה-Sine Wave, ולא לעזוב את לחצן העכבר עד שמביאים אותו אל מעל המודל הריק.

בצורה דומה, יש להביא למודל את בלוק ה-Scope שבמחיצת Sinks של Simulink, לקבלת:


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


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

מדוע ב-Simulink אין צורך להגדיר את וקטור הזמן? מה קורה כשלוחצים פעמיים על בלוק ה-Sine Wave? כיצד ניתן לשלב קוד MATLAB או קוד C בתוך מודל Simulink? האם ידעתם שניתן להמיר מודל Simulink לקוד C, VHDL או Verilog בצורה אוטומטית? ולמשתמשים המנוסים – מה המודל הכי גדול שיצרתם עד כה? אגב, אין צורך לספור ידנית את מספר הבלוקים, פשוט ניתן להשתמש בפקודת sldiagnostics...