وحدة تحكم المقاطعة القابلة للبرمجة 8259 Programmable Interrupt Controller
الكاتب:
سامي
-
"ما هي وحدة تحكم المقاطعة القابلة للبرمجة 8259؟ الحاجة إلى وحدة تحكم المقاطعة القابلة للبرمجة: خصائص وحدة تحكم المقاطعة القابلة للبرمجة 8259: معمارية وحدة تحكم المقاطعة القابلة للبرمجة 8259: مخزن البيانات المؤقت Data Bus Buffer: منطق القراءة/الكتابة Read/Write Logic: منطق التحكم Control Logic: سجل طلب المقاطعة Interrupt request register (IRR): محلل الأولوية Priority Resolver: سجل أثناء الخدمة In-service register: سجل قناع المقاطعة Interrupt mask register: المخزن المؤقت المتتالي / المقارنة Cascade buffer/comparator:
تُستخدم وحدات التحكم في المقاطعة القابلة للبرمجة لتحسين عدد المقاطعات للمعالج الدقيق، (8259) عبارة عن وحدة تحكم قابلة للبرمجة في المقاطعة تظهر التوافق مع المعالج الدقيق (8085).
ما هي وحدة تحكم المقاطعة القابلة للبرمجة 8259؟
وحدة تحكم المقاطعة القابلة للبرمجة (8259)، تُعرف أيضًا باسم “وحدة التحكم في المقاطعة ذات الأولوية” (a priority interrupt controller)، وقد تمّ تصميمها بواسطة (Intel) لزيادة قدرة معالجة المقاطعة للمعالج الدقيق، (8259 PIC) لا تقدم أي مقاطعة؛ تقوم ببساطة بإعادة توجيه المقاطعة إلى المعالج لتنفيذ روتين خدمة المقاطعة (interrupt service routine).
الحاجة إلى وحدة تحكم المقاطعة القابلة للبرمجة:
نعلم أنّه عند حدوث مقاطعة، يقوم المعالج الدقيق بتعليق البرنامج الحالي والتحول إلى روتين خدمة المقاطعة (ISR)، نعلم أنّ (8085) يحتوي على (5) مقاطعات، وهي: (Trap وRST7.5 وRST6.5 وRST5.5 وINTR)، من بين كل هذه، (INTR) هو نوع غير متجه من المقاطعة (non-vectored type of interrupt)، والباقي عبارة عن مقاطعات متجهة (vectored interrupts).
نعلم أنّ المقاطعات الموجهة هي تلك المقاطعات التي يعرف المعالج عنوان (ISR) الخاص بها، أو يمكننا القول في حالة المقاطعات الموجهة، يحتفظ المعالج بعنوان موقع الذاكرة حيث يتم تخزين (ISR)، ولكن في حالة المقاطعات غير الموجهة، يجب أن يصل المعالج إلى (ISR)، ولكنّه لا يحمل عنوان (ISR)، لذلك، في هذه الحالة، يوفر جهاز توليد المقاطعة عنوان (ISR) للمعالج الدقيق.
يحتوي المعالج الدقيق (8085) على (5) مقاطعات رئيسية، يوجد بها عدد ثابت من الخطوط في الشريحة، ولكن هناك العديد من الأجهزة المتصلة بالمعالج، لذلك، في مثل هذه الحالة، يجب أن يحتوي المعالج على عدد أكبر من الخطوط للتعامل مع مجموعة المقاطعات، لكن ليس من الممكن عمليًا زيادة عدد الخطوط في كل مرة مع زيادة عدد المقاطعات.
لذلك، للتغلب على هذه المشكلة، يتم استخدام شريحة (PIC) (8259 PIC chip)، يسمح (8259) بدمج المقاطعات المتعددة وتوفيرها للمعالج بناءً على الأولوية من خلال خط مشترك، كما ناقشنا بالفعل أنّ المعالج يحمل عنوان (ISR) في حالة المقاطعات المتجهة، لذلك، لا يمكن الجمع بين مقاطعة غير متجهة مع مقاطعة متجهة، لذلك، يتم استخدام (8259) لدمج المقاطعات المختلفة غير الموجهة بطبيعتها.
لنفترض أيضًا، بطريقة أو بأخرى، أنّ جهازين يولدان مقاطعة في وقت واحد من خلال خط مشترك دون تدخل (8259)، سوف يحصل المعالج على إشارتين (INTR) في نفس الوقت، ولكن كيف يعرف المعالج ذلك من حيث تولد المقاطعة ومن أين يرسل (INTA) للحصول على عنوان (ISR)، يوضح هذا ضرورة (8259)، تخبر وحدة التحكم في المقاطعة القابلة للبرمجة المعالج الدقيق بالمقاطعة، بشكل أساسي، تقاطع الأجهزة الخارجية في البداية (8259) ثمّ يقاطع (8259) المعالج الدقيق.
خصائص وحدة تحكم المقاطعة القابلة للبرمجة 8259:
تحتوي وحدة تحكم المقاطعة القابلة للبرمجة (8259) على (8) دبابيس للمقاطعة، وبالتالي يمكنها التعامل مع (8) مدخلات للمقاطعة.
يمكن برمجة أولوية المقاطعات في (8259)، يتم تحديد أولوية المقاطعات بواسطة أوضاع التشغيل المختلفة.
نحن نعلم أنّ (8259) واحد يمكنه التعامل مع (8) مدخلات للمقاطعة، ولكن من خلال تعاقبات متعددة ل (8259) (cascading multiple)، يمكنه التعامل مع (64) مدخلات مقاطعة كحد أقصى.
(8259) يسمح بإخفاء كل مقاطعة تمّ إنشاؤها باستخدام سجل قناع المقاطعة (interrupt mask register).
تمت برمجة (8259) بطريقة يمكنها التعامل مع طلب المقاطعة المشغّل على مستوى الحافة (edge-triggered) أو المشغّل بمستوى (level-triggered) في وقت واحد.
إذا تمّ إنشاء عدة مقاطعات، فإنّ (8259) يحمل حالة المقاطعات المقنعة (masked)، وداخل الخدمة (in-service) والمعلقة (pending).
إنّه يقلل من البرمجيات والتكاليف الزائدة في الوقت الفعلي الناتجة عن التعامل مع المقاطعات ذات الأولوية متعددة المستويات.
معمارية وحدة تحكم المقاطعة القابلة للبرمجة 8259:
في التمثيل المعماري لوحدة تحكم المقاطعة القابلة للبرمجة (8259)، سنرى التالي:
يحتوي على ناقل بيانات (8) بت، كما ناقشنا بالفعل أنّ (8259) لا يخدم المقاطعة أبدًا، فهو ببساطة يعيد توجيه المقاطعات إلى المعالج الدقيق، وبالتالي، تحتوي البنية على وحدات مختلفة تعمل مجتمعة لزيادة المقاطعات التي يتعامل معها المعالج، دعونا نفهم العملية التي تقوم بها كل وحدة بالتفصيل:
مخزن البيانات المؤقت Data Bus Buffer:
مخزن البيانات المؤقت: يحتوي (8259) على مخزن مؤقت ناقل بيانات ثلاثي الاتجاه ثنائي الاتجاه (8) بت، على سبيل المثال، (D0 إلى D7)، والذي يتداخل مع الناقل الداخلي للمعالج، يقوم المعالج الدقيق (8085) بإرسال / استقبال كلمات التحكم أو الحالة إلى / من (8259) باستخدام المخزن المؤقت لناقل البيانات.
منطق القراءة/الكتابة Read/Write Logic:
منطق القراءة / الكتابة: هذه الوحدة مسؤولة عن التحكم في عمليات القراءة والكتابة الداخلية للنظام، يحتوي على سجل كلمة أمر التهيئة وسجل كلمة أمر التشغيل الذي توجد بداخله تنسيقات التحكم المختلفة اللازمة لتشغيل الجهاز.
(RD وWR وA0 وCS) هي الدبابيس المرتبطة بهذه الوحدة، بشكل أساسي، يتم استخدام هذه الدبابيس (pins) بواسطة المعالج لعمليات القراءة والكتابة، تشير الإشارة المنخفضة في (CS)، أي “تحديد الشريحة” (chip select)، إلى أنّه تمّ الآن إعداد الاتصال بين المعالج و(8259).
منطق التحكم Control Logic:
منطق التحكم: هذه الوحدة هي قلب بنية (8259)، تتحكم في التشغيل الكلي للنظام عن طريق إرسال إشارة (INTR) إلى المعالج كلما تمّ إنشاء طلب مقاطعة، أيضًا، يتلقى إشارة (INTA) بواسطة المعالج عندما يطلب المعالج الدقيق عنوان روتين خدمة المقاطعة، منطق التحكم مسؤول عن إرسال عنوان روتين خدمة المقاطعة المطلوب عبر ناقل البيانات.
سجل طلب المقاطعة Interrupt request register (IRR):
سجل طلب المقاطعة (IRR): تخزن هذه الوحدة طلبات المقاطعة التي تمّ إنشاؤها بواسطة الأجهزة الطرفية، نحن نعلم أنّ (8259) يحتوي على (8) دبابيس لطلب المقاطعة، على سبيل المثال، من (IR0 إلى IR7). لذلك، يمكن للوحدة تخزين (8) طلبات مقاطعة تطلب الخدمة من المعالج.
محلل الأولوية Priority Resolver:
محلل الأولوية: هذه الوحدة المنطقية تحدد من هو ذو الأولوية من بين جميع طلبات المقاطعة الموجودة في (IRR)، والتي لها الأولوية القصوى ويجب تنفيذها أولاً، افترض أنّه في وقت خدمة المقاطعة، يتم إنشاء طلب مقاطعة وارد آخر، ثمّ سوف يتم تجاهل هذا الطلب لأنّ الموجود في الخدمة يحتفظ بالأولوية القصوى.
ولكن في حال كان للطلب الوارد أولوية أكبر من الطلب الجاري تنفيذه، فسيتم تعيين البت المعني في (ISR) ويتم إرسال إشارة (INTR) إلى المعالج الدقيق، هذا يعني ببساطة أنّه سيتم إعادة توجيه المقاطعة التي تحمل الأولوية القصوى فقط بواسطة (8259) إلى المعالج.
سجل أثناء الخدمة In-service register:
سجل أثناء الخدمة: هنا يشير اسم الوحدة نفسه إلى العملية التي تقوم بها، تخزن وحدة السجل هذه المقاطعات التي يتم تنفيذها حاليًا بواسطة المعالج، يقوم محلل الأولوية بتعيين كل بت من (ISR) وبعد الحصول على أمر كلمة المقاطعة بواسطة المعالج، تتم إعادة تعيين البتات، حيث أنّ المعالج لديه القدرة على قراءة حالة السجل في الخدمة مباشرة.
سجل قناع المقاطعة Interrupt mask register:
سجل قناع المقاطعة: تحتوي وحدة التسجيل هذه على بت إخفاء المقاطعات التي يجب إخفاؤها، من خلال كلمة أمر التشغيل (OCW) يقوم المعالج بإرسال المعلومات والبرامج المطلوبة إلى سجل قناع المقاطعة.
المخزن المؤقت المتتالي / المقارنة: كما ناقشنا بالفعل أنّه من خلال التتابع المتعدد (8259)، يمكن زيادة عدد المقاطعات التي تمّ التعامل معها بواسطة (8259) حتى (64)، تسمح الوحدة بمقارنة (IDs) ل (8259) المختلفة المتتالية معًا، يسمح بتشغيل النظام في وضعين: الوضع الرئيسي (master mode) ووضع الخادم (slave mode).
في الوضع الرئيسي للعملية، يعمل كمخزن مؤقت متتالي، بينما في وضع الخادم، تعمل هذه الوحدة كمقارن، من بين (8259) المتتالية المختلفة، تتعامل (8259) مباشرة مع المقاطعات عن طريق تكوين اتصال مع المعالج ومن المعروف أنّ (8259) هي (master)، بينما تُعرف (8259) الأخرى التي تقاطع الماستر (8259) (slave 8259).
يمكن برمجة كل من (8259s) بشكل منفصل حيث أنّ جميعها تحمل عنوانًا محددًا، دبابيس متتالية من (8259) الرئيسية، (CAS0 وCAS1 وCAS2) أشكال الاتصال مع الدبابيس المقابلة ل (slave 8259s)، بالنسبة للأجهزة (slave devices)، تعمل هذه، كدبابيس إدخال بينما تعمل هذه الدبابيس بالنسبة للجهاز الرئيسي كدبابيس إخراج، تشير الإشارة النشطة-المنخفضة في (SP / EN) لجهاز ما إلى أنّه يعمل في وضع (slave mode).
نحن نستخدم ملفات تعريف الارتباط (كوكيز) لفهم كيفية استخدامك لموقعنا ولتحسين تجربتك. من خلال الاستمرار في استخدام موقعنا ، فإنك توافق على استخدامنا لملفات تعريف الارتباط.