310 likes | 469 Views
הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל. Line Work. מגישים : נעם ארנוב : 029675113 סימון עמר : 033108390 מנחה : ארז סבג. תוכן:. רקע כללי מבואות מוצאים ומה שבניהם שעונים ... מטרת הפרוייקט הבעייתיות של קוד Huffman
E N D
הטכניון - מכון טכנולוגי לישראל המעבדה למערכות ספרתיות מהירות הפקולטה להנדסת חשמל LineWork מגישים :נעםארנוב : 029675113סימוןעמר : 033108390 מנחה :ארזסבג
תוכן: • רקע כללי • מבואות מוצאים ומה שבניהם • שעונים ... • מטרת הפרוייקט • הבעייתיות של קודHuffman • הפתרון • דיאגרמת בלוקים כללית • פרוט קצר לגבי הבלוקים העיקריים • סיכום ומסקנות
רקע כללי • הפרוייקט הוא פרוייקט המשך של פרוייקט במעבדה לעיבוד אותות. • מה זה Line Work? • מהו קוד Huffman?
מטרות הפרוייקט • מימוש בחומרה של אלגוריתם פריסה ללא עיוות של תמונות Line Work . • פענוח רצף של ביטים דחוסים בקוד Huffman בקצב גבוה – 70 Mpxl/sec. • פתרון בעיית המקום הרב וזמן הגישה הארוך הנדרשים בד”כ במימוש מפענח Huffman . • מציאת חומרה מתאימה לדרישות
Color Pixel B PUSH ME!!! C Clk_140 RESET מבואות מוצאים ומה שבניהם
מבואות מוצאים ומה שבניהם(2) • בכניסה מתקבל זרם נתונים המורכב משלושה שדות: • Color - ערך הפיקסל בקובץ שגיאות החיזוי. • C - אורך הרצף של הפיקסל המתקבל. • B - מספר הסיביות של אורך הרצף. • השדות Color ו- B דחוסים בקוד Huffman ושדה C לא דחוס. • הכניסות מוכנסות לתוך FIFO לאחסון עד שיגיע זמן הטיפול בהם
מבואות מוצאים ומה שבניהם(3) • מוצא המערכת הוא רצף של פיקסלים אמיתיים המתקבלים באופן טורי. ניתן לבנות ממשק חיצוני שיהפוך את המוצא למקבילי (למשל עבור מדפסת) • קצב יציאת הנתונים קבוע – 70 Mpxl/sec
שעונים... • השעון שנכנס למערכת הוא שעון של 140 MHz אותו אנו גוזרים להפקת שעונים של 70 ו- 35 מגה הרץ. • קצב יחידת החיזוי כמו גם קצב המוצא – 70 MHz. • קצב מכונת ה- Huffman הוא 35 MHz.
הבעייתיות של קוד Huffman • הבעיה המרכזית בה עסקנו הייתה מציאת אלגוריתם מהיר לפריסת קוד Huffman. • הקושי בפענוח קוד Huffman הוא בכך שאורך המילים משתנה ולכן צריך לבנות חומרה חכמה שתדע להתגבר על בעיה זו. • למה אורך משתנה זה בעיה? אז מה, האורך כן קובע?
הפתרון • במהלך הפרוייקט בחנו מספר פתרונות והחלטנו שהדרך המהירה ביותר עבור הפענוח היא ע" שימוש בטבלאות תרגום שישבו בזיכרון בתוך ה- FPGA. • כמן כן החלטנו שהקלט צריך להגיע בפורמט הבא: • Color – דחוס ומוגבל לאורך של 16 סיביות • B – דחוס ומוגבל לאורך של 8 סיביות • C – אינו דחוס כל אחד מהקלטים הנ"ל מגיע בנפרד!! הערה: הגבלת האורך מביאה לפגיעה מסוימת ביחס הדחיסה אבל באורכי המילים הנ”ל הפגיעה מינימלית.
הפתרון(2) • איך התמודדנו עם אורך הקוד המשתנה? • ניהול זיכרון חכם (פרטים יבואו...) • תכנון Barrel-Shifter לבניית כתובת גישה לזיכרון • פתרון בעיית הקצבים ע"י שימוש ב- FIFO-ים לתאום קצבים והגדלת התפוקה. • הנחנו הנחת יסוד חשובה – "הסבירות לקבלת רצף באורך קטן מ- 2 שואפת ל- 0”אנו הנחנו שהיא אפס ממש.
B UnDecoded דיאגרמת מלבנים של הפרויקט RAM Neighbors PREDICTOR Color InStreamFIFOs HUFFMAN Prediction B Enable ANALYZER C “Color” Translated True Color Inputs Encoded
Over_Flow Color_FIFO Color Color_From_InStream B_FIFO B B_Over_Flow B_From_InStream C_From_InStream B_unDecoded C_FIFO C B_Ready InStreamFifos
(InStreamFifos (cont. • זרם הנתונים בכניסה נשמר ב- FIFO עבור כל אחד מהשדות בקלט. • רוחב C ו Color הוא 16 סיביות ו- B 8 סיביות. • רוחב המוצא מה FIFO-ים בהתאמה. • השדות B ו Color מועברים ליחידות ה- Huffman לפענוחע"פ בקשה של המפענחים והשדה C מועבר לשמירה ביחידת RegForHuffman (לא עובר תרגום – רק מיסוך באפסים)
InStreamFifos (cont.) • ע"מ שנוכל לדעת כמה סיביות יש לקרוא מתוך C יש צורך ראשית לפענח את B ולכן נעשה שימוש בסיגנל bUnDecoded שהוא בעצם תוצאת התרגום של B וערכו הוא מס' הסיביות המדויק שאורךC.
ColorFromInStream TrsnsColor ColorHuffUnit ColorFromHuffman TransFifo Clk_140 CFromHuffman Clk_35 load bHuffUnit bReady cFromInStream bFromInStram bUnDecoded Huffman Unit Clk_70 enHuff
Length Translation Huffman Unit (cont.) • שימוש בזיכרון RAM לאחסון מילות הקוד. • שימוש ב- Barrel Shifter לבניית כתובת עדכנית לזכרון. • מבנה שורת זכרון (עבור Color Huffman): • אורך מילות הקוד הוגבל ל – 10 סיביות עבור Color ו-8 סיביות עבור B. • C אינו דחוס ואורכו נקבע ע”י B. 4 bit 8 bit
Huffman Unit (cont.) • יש יחידת Huffman נפרדת ל- Color ול-B העובדות במקביל. • במוצא המפענח יש זכרון FIFO ל- Color ו- Bשמאפשר אחסון תוצאות הפענוח בזמן שיחידת החיזוי עסוקה בפענוחים קודמים. • קצב עבודה של יח' ה- Huffman- 35 MHz • קצב עבודה של יח' ה- Trans_FIFO- 70 MHz • ההנחה היא שצבע נשאר זהה על פני שני פיקסלים לפחות וכך נקבל שהקצב במוצא יהיה בכ”ז 70MHz
Predictor & Line RAM • חוזה את צבע הפיקסל הבא ע”פ שלושת שכניו. • על השכנים להיות צבעים אמיתיים ניתן לחזות רק ערך אחד בכל פעם וע"פ הערך האחרון שתורגם. • ב- RAM נשמר התרגום של שורה מהתמונה כך שתמיד יהיו לנו את כל השכנים לחיזוי הבא. • כל נתון חדש שמתורגם נכתב במקום הנתון האחרון שנקרא – הזיכרון בעצם ציקלי.
C_in B_in A_in Reg_out Predictor & Line RAM (cont.) • פונקצית החיזוי: • כאשר תמונת השכנים:
בדיקתיות... • על מנת לפשט ולהפוך את מנגנון הבדיקהלאוטומטי הוכנסו יחידות שיודעות לקרוא נתונים מקובץ וכאלה שיודעות לכתוב לקובץ. • היחידות האלו גנריות ובצורה פשוטה ניתן למקמם בכל סיגנל שרוצים לבדוק ואת התוצאות להשוות לקובץ המכיל וקטורי בדיקה מתאימים.
1 1 1 1 • 1 1 1 1 • 1 1 1 1 • 1 1 1 1 • 2 2 2 2 • 2 2 2 2 • 2 2 2 2 • 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Example • תמונה לדוגמא:
1 1 1 0 • 1 1 1 1 • 1 1 1 1 • 1 1 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 1 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 Example (cont.) • חיזוי התמונה:
0 0 0 1 • 0 0 0 0 • 0 0 0 0 • 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Example (cont.) • תמונת שגיאת החזאי:
'0' – 60/64 0 11 10 '2' – 1/64 '1' – 3/64 Example (cont.) • עץ Huffman של השגיאות:
Example (cont.) • מסקנות מהקידוד – תמונת הזיכרון- Color: • כתובות 0-32767 : אורך מילה – 1 , תוכן – 0 • כתובות 32768-49151: אורך מילה – 2 , תוכן – 10 • כתובות 49152-65336: אורך מילה – 2 , תוכן - 11 • מסקנות מהקידוד – תמונת הזיכרון- B: • כתובות 1-127: אורך מילה – 1, תוכן – 0 • כתובות 128-191: אורך מילה – 2, תוכן 10 • כתובות 192-255: אורך מילה – 2, תוכן 11
Example (cont.) • פלט ריצה:
סיכום ומסקנות • סיימנו לממש את כל הפרוייקט . • ביצענו בהצלחה סימולציה לוגית מלאה. • הקוד עובר סינתזה בלאונרדו וע"פ הערכת הזמנים שלו עומד באילוצי הזמנים של הפרוייקט. • לא ביצענו סימולצית זמנים ולכן אנו לא יודעים בוודאות שהזמנים שקיבלנו מלאונרדו מדויקים.