بناء معالج بسيط – 16 بت – استكمال بيئة العمل

بناء معالج بسيط – 16 بت – استكمال بيئة العمل

استكمالاً لما بدأناه في الدرس 12 سنقوم بتزويد المعالج بذاكرة معطيات نربطها مع مدخل البيانات DIN، جدير بالتنويه هنا إلى أن البنية التي نعمل عليها هي بنية هارفارد Harvard Architecture و التي تقوم على وجود ذاكرة للمعطيات و ذاكرة منفصلة للتعليمات(كما في المتحكمات المصغرة) و ذلك على خلاف بنية نويمن Neumann Architecture التي تقوم على وجود ذاكرة واحدة تحتوي على المعطيات و التعليمات منظمة معاً(كما في الحواسيب الشخصية).

إضافة ذاكرة معطيات

بأسلوب بسيط مشابه لما تم عند إضافة ذاكرة التعليمات سنقوم بإضافة ذاكرة قراءة فقط و إن كان هذا الأمر قاصر و لا يرتقي لاعتبار هذه الذاكرة على أنها ذاكرة معطيات فذاكرة المعطيات يجب أن تسمح للمعالج بتخزين المعطيات عليها إلا أن هذه المهمة لا تتوافق مع البنية المبسطة للمعالج الذي تم بناءه في التدوينات الماضية.

توصيف الذاكرة مطابق تماماً لتوصيف ذاكرة التعليمات مع اختلاف المحتوى الذي سيخزن داخل حجرات الذاكرة

mem(1) <= X”00FF”;

 mem(2) <= X”00FE”;

و هي البيانات التي تمت قراءتها خلال مثالنا من الدخل DIN.

لكن علينا أن نبحث عن آلية للتحكم بالقراءة من هذه الذاكرة أي ما هي الإشارة التي ستمثل دخل للعداد الذي يزود ذاكرة المعطيات بالعناوين (التي ستكون تسلسلية كما في ذاكرة التعليمات).

يمكن ملاحظة أننا نقرأ المعطيات فقط عند وجود تعليمة mvi  التي تقوم بإدخال قيمة إلى أحد المسجلات عبر المدخل DIN، إذا العملية مرتبطة بتعليمة mvi و بالتالي يجب الاستفادة من إشارات التحكم التي تتولد لأجل تنفيذ هذه التعليمة.

يمكن ملاحظة أن إشارة DINout هي إشارة فريدة لا يتم توليدها إلا أثناء تنفيذ عملية mvi  و بالتالي يمكن الاستفادة منها من خلال جعلها إشارة خرج من المعالج و دخل للعداد الذي سيقوم بتزويد العناوين لذاكرة المعطيات.

عند اختيارنا لإشارة DINout كإشارة تحكم خارجية يجب الانتباه إلى ضرورة تصفيرها قبل الانتقال إلى تعليمة mvi جديدة و إلا فلن يستجيب العداد. ولذلك سنراجع المرحلة T0  و لنتأكد هل راعينا هذه النقطة عند تصميمنا للمعالج سنجد:

CASE Tstep IS

WHEN “00” => — T0

                IRin <= ‘1’; Done <= ‘0’; Rin <= X”00″; Rout <= X”00″;

نجد أننا أغفلنا تصفير DINout في بداية تنفيذ كل تعليمة، لكن ما ضرورة ذلك؟

عند وجود تعليمتي mvi  متتاليتين يجب أن تنتقل قيمة DINout  في بداية كل منهما حتى يتحسس العداد الذي يتحكم بذاكرة المعطيات مما يسمح بالحصول على القيمة الصحيحة المطلوبة، لذلك يجب تصحيح هذا السطر:

IRin <= ‘1’; Done <= ‘0’; Rin <= X”00″; Rout <= X”00″;

ليصبح:

IRin <= ‘1’; Done <= ‘0’; Rin <= X”00″; Rout <= X”00″; DINout <= ‘0’;

و سنعدل توصيف المعالج من خلال إضافة الإشارة RDM

RDM : OUT STD_LOGIC;

RDM <= DINout;

بذلك تكون البنية النهائية كما في الشكل:

بذلك نكون أنهينا بناء هذا التصور المبسط للمعالج وفق بنية هارفارد Harvard.

About زين العابدين

مهندس حواسيب - معهد IDA - جامعة Braunshweig التقنية.
هذا المنشور نشر في دروس تعليمية وكلماته الدلالية , , , . حفظ الرابط الثابت.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s