בקר ה SDRAM
הבקר הוא החולייה המקשרת בין ה SDRAM לבין המשתמש (Host) המבקש לקרוא או לכתוב ל SDRAM.
בדרך כלל הוא ממומש בקוד כמכונת מצבים. הבקר מוכרח לעקוב אחר ה SDRAM במטרה לטפל בבקשות המשתמש, המעקב כולל :
א. שורה נוכחית המופעלת בבנק ב SDRAM.
ב. כל פעולות שה SDRAM לא סיים ומספר מחזורי השעון שנותר לסיומן.
ג. המצב הנוכחי של ה SDRAM (בתהליכי איתחול, ממתין להגדרות מצב, מרענן שורה .....)
כל בקשה של המשתמש מתקבלת על-ידי הבקר. הבקר קובע האם ה SDRAM יכול כעת לטפל בבקשה ופועל בהתאם. הבקר מתרגם כל בקשה לפקודות הדרושות כדי שהSDRAM hypk בבקשה ושולח את אותות הבקרה המתאימים, הבקר ממתין במידת הצורך בין פקודות למספר המחזורים הדרוש.
הבקר מחובר למשתמש ול SDRAM באותות הבאים :
טיפול הבקר בכתיבה ללא Pipeline
דוגמה לבקשת כתיבה בה השורה והבנק כבר מופעלים וה SDRAM לא מטפל בבקשה קודמת.
מחזור 1 : המשתמש שולח לבקר אות WR היות שמדובר בבקשת כתיבה, את הכתובת הכוללת שורה וטור ב Haddr ואת המידע לכתיבה ב Hdin.
מחזור 2 : הבקר שולח ל SDRAM את הכתובת ב Saddr, את המידע ב Sdata ואת אותות הבקרה הדרושים לביצוע כתיבה (CS='0' RAS='1' CAS='0',WE='0' ו A10 הקובע האם יבוצע precharge או לא)
היות שחלקו של הבקר בכתיבה הסתיים הוא שולח אות Done למשתמש המבשר לו שהפקודה הועברה בהצלחה.
מחזורים 3-5 : ה SDRAM מקבל את פקודת הכתיבה וכותב את המידע.
אם הנתונים של הבקר היו מראים שהשורה הפעילה בבנק שונה מזו שהמשתמש ביקש , הבקר היא שולח פקודת Precharge, ממתין מספר המחזורים הנדרש לסיומה, שולח פקודת Activate מחכה שנית, ולאחר מכן מתחיל את תהליך הכתיבה משלב 1.
בדומה אם ה SDRAM היה לפי נתוני הבקר באמצע תהליך (למשל רענון) הבקר היה ממתין מספר המחזורים הדרוש לסיום התהליך לפני העברת בקשה הכתיבה.
טיפול הבקר בקריאה ללא Pipeline
דוגמה לבקשת קריאה בה השורה והבנק כבר מופעלים וה SDRAM לא מטפל בבקשה קודמת.
מחזור 1 : המשתמש שולח לבקר אות RDהיות שמדובר בבקשת קריאה ואת הכתובת הכוללת שורה וטור ב Haddr
מחזור 2 : הבקר שולח ל SDRAM את הכתובת ב Saddr ואת אותות הבקרה הדרושים לביצוע קריאה(ראה בעמוד המידע הטכני)
מחזור 3 : ה SDRAM מקבל את פקודת הקריאה ומתחיל בתהליך הקריאה.
מחזור 4 : ה SDRAM ממתין לתוצאות הקריאה.
מחזור 5 : המידע מה SDRAM מגיע לבקר ב Sdata.
מחזור 6 : הבקר שולח את המידע למשתמש ב Hdout ואות המודיע לו שהקריאה הושלמה והמידע מוכן (אות Done).
אם המשתמש לא משנה את אות RD ל '0' במחזור השעון הבא תחל קריאה נוספת.
אם הנתונים של הבקר היו מראים שהשורה הפעילה בבנק שונה מזו שהמשתמש ביקש , הבקר היא שולח פקודת Precharge, ממתין מספר המחזורים הנדרש לסיומה, שולח פקודת Activate מחכה שנית, ולאחר מכן מתחיל את תהליך הכתיבה משלב 1.
בדומה אם ה SDRAM היה לפי נתוני הבקר באמצע תהליך (למשל רענון) הבקר היה ממתין מספר המחזורים הדרוש לסיום התהליך לפני העברת בקשה הכתיבה.
היות שבזמן זה לא מתקבל Done המשתמש אמור לשלוח שנית בקשת קריאה.
טיפול הבקר בכתיבה וקריאה עם Pipeline
כפי שצויין קודם לכן ה SDRAM תומך ב Pipelining ועל-כן אם הבקר מתוכנת לתמוך ב Pipeline ניתן לשלוח בקשות קריאה או כתיבה עוקבות בצורה הבאה :
דיאגרמות הזמן נלקחו מה Application note של Xess ל Xsa SDRAM.
בנוסף לתרגום בקשות המשתמש הבקר מטפל גם ברענון של ה SDRAM על ידי שליחת פקודות רענון במרווחים קבועים מראש
ובאתחולו של ה SDRAM כאשר הוא מופעל , אתחול הכולל ביצוע Precharge וקביעת מצב עבודה ( ראה מידע טכני למצבי העבודה האפשריים).
לאחר הקריאה מהם ה SDRAM והבקר וכיצד הם עובדים, אתם יכולים לראות כיצד הכול מתחבר בסימולצייה האינטרקטיבית, הסימולצייה מבוססת על קוד הבקר ל XSA SDRAM אשר מסופק על ידי היצרנים (Xess) באתר שלהם.