Curriculum Vitae (hebrew)

קורות חיים
(למטרת העסקה כ- freelancer)


פרטים אישיים

שם: עלי בילואר
שנת לידה: 1971
מיקום: חיפה
מצב משפחתי: רווק
דואר אלקטרוני:

השכלה:
1989-1993: B.Sc בהנדסת חשמל, הטכניון, בהצטיינות ראויה לשבח. (עתודה אקדמית)

שפות: עברית שפת אם, אנגלית ברמה גבוהה.

יכולות מקצועיות:

תכנות
  • Verilog – קוד יציב ויעיל לסימולציה ולסינתזה, בעיקר ל-FPGA של Xilinx ו-Altera, אך יש נסיון גם בכתיבה ל-ASIC. בעל מודעות גבוהה למימוש הקוד בלוגיקה של רכיב היעד, תוך הקפדה על כללי תכנון זהירים, כגון חציות clock domains אמינות.
  • Linux – כתיבה עבור הליבה (kernel) של לינוקס למטרת דרייבירם וקוד ליבה כאחד, וכמו-כן נסיון מקיף בכתיבת קוד user space. בעל נסיון עם לינוקס בתחזוקה שוטפת, תכנות ב-user space וכמו-כן עבור kernel, בין אם עבור מחשב במובן הקלאסי, ובין אם עבור סביבת embedded (כגון ARM Cortex A9 core ומעבד Microblaze של חברת Xilinx).
  • MATLAB – פונקציות מהירות בהתאם לפורמט המקובל. נסיון נרחב בסימולציות רחבות היקף, וכמו-כן תצוגה ברורה של התוצאות. היכרות מעמיקה עם מבנה השפה והפונקציות המיוחדות שלה.
  • C – כתיבה ל-UNIX (שימוש ב-gcc) וליישומי DSP ו- embedded. קוד נקי ופורטבילי. אופטימיזציה למהירות ריצה על-ידי ניתוח קוד האסמבלר המיוצר. כתב מודול ל- Linux Kernel.
  • Perl – שליטה טובה מאד בשפה למטרת scripting ולכתיבת יישומים כאחד. כתב פרויקטים גדולים ב- Perl.
  • נסיון מסוים ב- Pascal (כולל Delphi 4), ושפת מכונה (בעיקר TI 54x ו- 6502). ידע בסיסי ב- HTML, Java ו- JavaScript. ניהול בסיס נתונים MySQL ויצירת שאילתות SQL לא טריויאליות. מעט משחק עם LISP, בעיקר בשביל emacs.
  • לומד שפות חדשות במהירות

מערכות משובצות מחשב (Embedded/ARM)
  • כתיבת דרייברים ללינוקס בסביבת embedded תוך שימוש במידע מה-Flattened Device Tree.
  • העמדה של cross compiler ובניית image לאיתחול מערכת באמצעות Buildroot. קביעת תצורה של הקרנל וליישום ה-Busybox.
  • ביצוע cross compilation לקרנל וליישומי user space עבור ARM.
  • התאמה של הפצה ברמה של שולחן עבודה גרפי (כגון Ubuntu / Linaro) למערכת ARM.
  • תכנון ומימוש של IP Core עבור רכיבים משולבי לוגיקה ומעבד (Microblaze / Zynq EPP) כהתקנים על ה-bus עם חיבור AXI4/AXI3, מיפוי באמצעות Device Tree ואינטרגציה למערכת Linux כהתקן בממשק סטנדרטי.

הדרכה

מדריך מוסמך של קורסים רשמיים של Xilinx. מעביר מטעם חברת לוגטל (Logtel), שהיא בעלת הזיכיון להדרכה מטעם Xilinx בישראל, את הקורסים הבאים:
  • Fundamentals of FPGA Design
  • Designing for Performance
  • Advanced FPGA Implementation
  • Designing with the Virtex-4 Family
  • DSP Implementation Techniques for Xilinx FPGAs

עיבוד אותות
  • תכן אלגוריתמים (אותות חד-מימדים ודו-מימדים) למגוון יישומים, גם לא שגרתיים.
  • סימולציה ב- MATLAB
  • מימוש יעיל על-גבי DSP ו- FPGA/ASIC

תקשורת
  • תכן מודמים לערוצים לא שגרתיים
  • סימולציה ב- MATLAB לערוצי תקשורת
  • היכרות עם קודים לתיקון שגיאות (בעיקר FEC)
  • ידע ב- RF כנדרש להקמת מערך שידור-קליטה לבדיקה
  • שליטה בפרוטוקולים נפוצים באינטרנט, בעיקר רמה נמוכה (IP, TCP, UDP)
  • היכרות עם PCI Express ברמה המאפשרת מימוש התקן על גבי FPGA ברמת ה-TLP, וכתיבת הדרייבר עבורו כמודול ל-Linux kernel.

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

שירות צבאי/נסיון תעסוקתי

1994-1993 פיתוח מודם לקצבים נמוכים בעל מאפיינים ייחודיים (גזירת אופן הפעולה מתוך מאמרים אקדמיים, ניתוח תיאורטי, סימולציה באמצעות MATLAB). מימוש המודם באסמבלר על-גבי DSP מסידרת 56000 של מוטורולה. הקמת set-up לבדיקה, וביצוע בדיקות הסתברות שגיאה.
1994-1995 מעורבות גבוהה בניהול פרוייקט תקשורת כולל, מאנטנה ועד לממשק משתמש על-גבי מחשב. בעבודה עצמאית, פיתוח בשפת C של מנהל זיכרון לזיכרון FLASH מתוצרת אינטל, שאיפשר איחסון של מידע במנות הקטנות מגודל הבלוק של הזיכרון.
1995-1996 השתתפות בסידרה של פרוייקטים קצרי-טווח
1997-1999 ייזום, תכנון, וניהול של פרוייקט שהיקפו ממחשבי PC ורשתות TCP/IP, דרך מודמים, ציוד RF ואנטנות. הפרוייקט כלל מרכיבים ייחודיים שהיה צורך לפתח מניתוח תיאורטי, דרך סימולציה ומימוש בקוד VHDL. צוות הפרוייקט מנה 4 אנשים קבועים לכל אורכו, וכ- 10 אנשים נוספים לתקופות של חודשיים ומעלה.

פרוייקטים (ראויים לציון) כעצמאי

(בסדר כרונולוגי הפוך)
  1. העמדה של הפצה גרפית מלאה של לינוקס, מבוססת על Ubuntu למעבדי ARM עבור כרטיס ה-Zedboard (של חברת Xilinx, עם רכיב ה-Zynq-7000 EPP), כולל
    • העמדה של boot image ו-cross compiler באמצעות Buildroot.
    • תכנון ומימוש ב-Verilog של מתאם VGA גרפי וחיבורו ל-AXI3 bus, מיפוי על ה-Device Tree, וכמו-כן כתיבת דרייבר ללינוקס עבורו. כתוצאה מכך הלינוקס הכיר במתאם כ-frame buffer והשתמש בו בתור התצוגה הטבעית שלו להצגת טקסט ועבור X-Windows.
    • התאמה של ההפצה: הוספת תמיכה באודיו, הופסת Linux headers כדי לאפשר קומפילציה של מודולים לקרנל על-גבי המערכת, הופסת יישום לתצוגה של רמת השימוש ב-CPU על גבי תצוגת OLED שעל הכרטיס, וכדומה.
  2. תכן ומימוש של סביבה מבוססת PCI Express לתקשורת בין מחשב ל-FPGA של Xilinx. הפרוייקט נקרא Xillybus, ומימושו כלל בין השאר:
    • לוגיקה ב-FPGA בעלת יכולת לקבל מספר כלשהו של שטפי נתונים (streams) באמצעות ממשק FIFO סטנדרטי, ולחבר אותם באופן יעיל ל-IP core בתצורת Xilinx Endpoint Block Plus PCIe על ידי שליחה וקבלה של מנות Transaction Layer תקניות.
    • רגיסמטרים במיפוי BAR, מנוע DMA, מנגנון העברת הודעות, ובורר round-robin לשטפי מידע בשני הכיוונים.
    • דרייבר ג'נרי עבור לינוקס וחלונות (השני מומש לפי Windows Driver Model, WDM).
    • מימוש סקריפטים ב-Perl לייצור אוטומטי של קוד Verilog לבניית IP core לפי פרמטרים של דרישת לקוח.
  3. מימוש SPI bus master ב- Verilog בעל יכולת קריאה, מחיקה וכתיבה לזיכרון פלאש טורי, תוך שימוש בפרוטוקול מקובל בתעשיה.
  4. תכנון ומימוש של white balance משתנה מרחבית, לפיצוי על גוון משתנה, אך קבוע בזמן בתמונה. יישום שנכתב ב- C ייצר את הפרמטרים. מימוש איזון הצבע, המשתנה בצורה חלקה, על-גבי תמונת דגומת Bayer נעשה ב- Verilog לצריבה על FPGA קטן של Xilinx.
  5. מימוש סינכרוני של I2C/SMBus Slave ב- Verilog עבור FPGA במטרה לספק גישה לרגיסטרים לפי פרוטוקול מקובל בתעשיה. המימוש מאפשר גם פרצים של קריאה וכתיבה.
  6. מחקר הפיתוח של בקר התקן MEMS: פיתוח כרטיס מעבדה ייעודי, ושימוש בו לשם קבלת שליטה על ההתקן. מימוש כל מרכיבי הכרטיס, למעט ה-board design: זרימת האותות, מימוש ה-FPGA, תקשורת עם מחשב PC לשם בקרה ודגימת אותות, ובסופו של דבר חוג עקיבה למכניקה.

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

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

    • מחולל גל סינוס נומרי (NCO) עם אינטרפולציה לינארית לשם יצירת אות חלק, בתדר נמוך וברזולוציה עדינה של תדרים.
    • ממשק של רגיסטרים לשם קביעת פרמטרים של הכרטיס מתוך מחשב ה-PC, תוך שימוש ברכיב CY7C68013A של Cypress עבור ערוץ USB.
    • מנגנון לשינוע רצפים של דגימות של אותות נבחרים למחשב דרך ערוץ ה-USB.
    • בקר נעילת פאזה לינארי מסוג PI לשמירת ההתקן המכני בנידנוד בתהודה. גלאי הפאזה התבסס על תנודות בקיבול, על-ידי מדידת תדר המוצא של מתנד RC.
    בנוסף, נכתב יישום חלונות (תחת Microsoft Windows) לשם כיוונון נוח של פרמטרים תוך שימוש בערוץ ה-USB.
  7. ייצוב, תחזוקה והוספת יכולות לקוד Verilog קיים עבור רכיבי Xilinx, עבור שתי מערכות רפואיות (אנדוסקופיה) שונות של הלקוח, שתיהן בייצור שוטף:
    • שיפורי שעון: מימוש מחדש של שעונים שהיו מיוצרים בלוגיקה, תוך שימוש במשאבים של רכיבי Xilinx ו-flip-flop enables כדי להבטיח פעולה אמינה.
    • טיפול אמין ב-reset אסינכרוני בכניסה כדי להבטיח התעוררות של המערכת למצב ידוע.
    • שידרוג של ה- UCF timing constraints על-מנת להבטיח עמידה במפרט של רכיבים שסובבים את ה-FPGA, בהתאם להנחיות Xilinx. כמו-כן הקלה על כלי המימוש על-ידי הכרזה על multi-cycle paths ו-false paths במקומות המתאימים.
    • שיפור של חציות clock domains ואמינות דגימה של אותות מרכיבים חיצוניים.
    • הקשחת התיזמון עם רכיבים חיצוניים על-ידי שימוש ברגיסטרים בתוך ה-IOB באופן גורף.
    • אבטחת תאימות המערכת עם מסכי מחשב מסחריים (VGA ו-DVI) על-ידי החלת תקן VESA כמפורט במסמך ה-DMT.
    • הוספת תמיכה של יציאת HDTV בפורמטים 720p ו-1080i בהתאם למפרט של SMPTE, תוך שימוש ברכיב ייעודי במערכת אחת, ויצירת האות האנלוגי באמצעות D/A במערכת השנייה (ומכאן הצורך לממש אותות סינכרון לפרטיהם). בנוסף החלת תקן SMPTE 253M על יציאות RGsB (הידועים גם כ-Sync on Green או SOG).
    • מימוש של סיבוב, zoom והעתקה בזמן אמת באופן שמאפשר אשליה של מצלמה שמבצעת את הפעולות האלה באופן חלק. המימוש התבסס על אינטרפולציה של רביעיות פיקסלים (שניים על שניים) עבור כל פיקסל יציאה.
    • מימוש מסנן unsharp mask בזמן אמת.
  8. תכן ומימוש של מערכת עיבוד תמונה בזמן אמת לגילוי מאורעות בזמן ובמרחב, לפי אלגוריתם ייחודי של הלקוח. המערכת התבססה על רכיב Xilinx Virtex-4 לשם עיבוד של עד 100 Mpixel/sec. הפרוייקט כלל, בין השאר, את המטלות הבאות:
    • מימוש של האלגוריתם בשפת C ב-fixed point, תוך הצעות לשיפורים לפעולה מדוייקת. לאחר אישור המימוש, מומש האלגוריתם ב-Verilog, ונבדק על גבי ה-FPGA, כשהוא תואם את קוד ה-C עד הסיבית האחרונה.
    • השמשת בקר זיכרון DDR2 מבוסס MiG-1.4 בתדר 266 MHz (לפי Jedec DDR2-533) לפעולה עם זיכרון Micron SDRAM.
    • מימוש ממשק Camera Link (כל המסלול מ-LVDS ועד ל-FIFO שמוציא פיקסלים) לפי התקן הרלוונטי. התיזמון האופטימלי לדגימת קוי ה-LVDS נמצא באמצעות מכונת מצבים טרם תחילת הפעולה הרגילה, תוך העזרות ביכולות הזזת הפאזה של רכיבי Xilinx.
    • מימוש עורק high-speed USB דו כיווני (בקצב 480 Mbits/sec) בין מחשב PC ל-FPGA, תוך יצירת חיבור פשוט בין FIFOs בתוך ה-FPGA לממשק דמוי קובץ לתכנת ה-PC. העבודה כללה כתיבת ממשק בין רכיב ה-Cypress CY7C68013A ל-FPGA ב-Verilog וכמו-כן קוד firmware שירוץ על המעבד דמוי ה-8051 שעל גבי רכיב ה-Cypress. בנוסף נכתב יישום לדוגמא על-גבי ה-PC תחת Windows, תוך שימוש בדרייברים של Cypress.
  9. תכנות FPSLIC AT94K של חברת Atmel על שני מרכיביו: מרכיב ה- FPGA ב- Verilog, ומעבד ה- AVR בשפת C. ממשק ה- SRAM שימש להעברת נתונים בין שני המרכיבים.
  10. כתיבת IP core ב- Verilog למימוש מקודד Baseline JPEG (ובתוכו 2D-DCT, quantization, zigzag scanning, run-length encoding, ו- entropy coding עם יכולת restart). המקודד מייצר פלט זהה לזה של jpeglib (תוך שימוש באותם פרמטרים וטבלאות), אך מבצע את הקידוד on the fly (מקבל קלט של MCU). על רכיב Xilinx Spartan-3 מגיעים לקצב עיבוד של 90 Msample/sec בכניסה (דגימה אחת למחזור שעון).
  11. כתיבת דרייבר למדפסת צבע של HP, מ- pixel map ועד ל- PCL 3 (המרת צבעים ל-CMYK, ביצוע dithering באמצעות Floyd-Steinberg, ותרגום הפיקסלים לפורמט PCL). הדרייבר מומש ב- C על-גבי מעבד ARC תוך שימוש בזיכרון מצומצם (on the fly)
  12. תכן של מנהל זיכרון NAND flash למטרת logging עבור מערכת embedded, תוך עמידה בדרישות אמינות גבוהות בשימוש ברכיבי זיכרון בעלי סיכוי כשל גבוה.
  13. מימוש ב- C של מפענח ל- X.509 Certificates על-מסך הגדרות ASN.1.
  14. הגדרת אלגוריתמים להצפנה לשם קידוד ב- Verilog, ויצירת סדרות בדיקה: RSA, DES/3DES ו- IDEA.
  15. תכנות בשפת C ועבודה עם ICE של 8051.
  16. תכנות בשפת C של רכיב PIC 16F877: מימוש פונקציות בעלות אופי של עיבוד אות (בין השאר מימוש של המרה מהירה מקואורדינטות קרטזיות לפולריות, ולהיפך).
  17. ביצוע סימולציה ב- MATLAB של דמודולטור QAM לקצבים גבוהים מעל קוי טלפון. מרבית הקוד כבר היה כתוב, והיה צורך לבדוק את התנהגות הדמודולטור במצבים שונים ולמצוא צירוף פרמטרים שמאפשר עבודה תקינה במינימום משאבים.
  18. מימוש ב- Verilog של בלוקים לוגיים בעלי אוריינטציה של עיבוד אותות (מונים קוודרטורים, pattern generator וכדומה). אימות התכנון מול פונקציות MATLAB.
  19. תכנון מודולטור סיגמא-דלתא לאותות בתדרי שמע. בדיקת התכנון בסימולציות MATLAB. מימוש המודולטור ב- Verilog תוך התחשבות באילוצים של שטח סיליקון קטן ותדר שעון גבוה (כתיבת קוד ובדיקתו מול סדרות אימות ב- test bench).
  20. סיוע משמעותי בגיבוש אלגוריתם לעיבוד אותות מסנסורים אופטיים לצורך גילוי תנועה. בדיקת האלגוריתם ב- MATLAB ולבסוף מימושו ב- real time על-גבי מעבד C5402. מימוש ממשק חומרה של כרטיס הפיתוח עם חומרה חיצונית (שימוש בערוצים הטוריים של המעבד).
  21. ייעוץ וסיוע ל- start up שעוסק בתחום ה- Cable Modem בתקופת ההקמה.
  22. מימוש שרשרת שידור לפי תקן GSM, ממידע ספציפי לשידור ועד אות אנלוגי ב-baseband: פיתוח ומימוש מודולטור פרצים על גבי MATLAB ולאחר מכן על DSP של TI מסוג C5402, וכן bit manipulation כנדרש לפי התקן.
Last modified on Sun Aug 11 16:03:07 2013. E-mail: