لغة تبادل المسجلات

العمليات المكروية ولغة تبادل المسجلات

العملية المكروية هي بالتحديد العملية التي تكون نتيجتها مخزنة في مسجل ما أو في موقع ذاكري ويمكن أن تكون العملية بسيطة كنسخ مسجل إلى مسجل آخر أو موقع ذاكري أو معقدة كجمع قيمتي مسجلين وتخزين الناتج في مسجل ثالث.
عند تصميم النظم الرقمية التسلسية فإن المصمم يمكن أن يحدد أولا كيفية تصرف النظام باستخدام التعليمات المكروية ومن ثم يصمم البنية الصلبة للنظام ويصل بين هذه العمليات والبنية التي قام بتصميمها.
لنكون تصورا عن هيكلية العمليات المكروية نفترض نظاما رقميا مكونا من مسجلين كل منهما بطول واحد بت X & Y إن العملية المكروية التي تنسخ محتويات المسجل Y إلى المسجل X يمكن أن توصف كما يلي X<--Y وأحيانا توصف كما يلي Y<--X وسنستخدم الصغة الأولى في هذه المقالة.
إن العملية المكروية لا تحدد كيفية نسخ المسجل Y إلى المسجل X ولكنها تحدد فقط أنه يجب أن تتم عملية النسخ فالعملية المكروية ربما تطبق عن طريق اتصال مباشر كما في الشكل
أو عن طريق ممر كما في الشكل
إن كلا التطبيقين صحيح لتأدية العملية المكروية ولكن المصمم يختار الطريقة الأنسب لنظامه الذي قام بتصميمه
إن مجموعة العمليات المكروية غالبا ما تكون كافية لتصميم ممر بياناتها، كما أن الارتباطات بين المكونات يستخدم لنقل البيانات، هذه المجموعة لا تحدد الشروط التي سيتم من خلالها نقل البيانات.
لنفترض أن عملية نقل البيانات يجب أن تحدث عندما يكون مدخل التحكم a في الجهد العالي (واحد منطقي)، عندها يمكن أن نعبر عن عملية النقل هذه كما يلي
IF a THEN X<--Y
إن لغة تبادل المسجلات ولغة وصف البنية الصلبة غالبا ما تستخدم الترقيم المضغوط بالشكل التالي :
Condition : Micro-Oporation     عملية مكروية :  شرط
البنية الصلبة لنقل البيانات المشروطة موضحة بالشكلين التاليين
النقل المباشر
النقل عبر الممر
إن أحد أهم طرق تحسين النظام هي تنفيد أكثر من عملية مكروية في نفس اللحظة وعندها نفصل بين العمليات بفواصل غير منقوطة، فعلى سبيل المثال إذا أردنا نقل محتوى المسجل Z إلى Y ونقل محتوى المسجلY إلى X
نكتب السطر التالي 
a : X<--Y,Y<--Z         أو       a : Y<--Z ،X<--Y
ونعبر عنه كبنية صلبة بالشكل التالي
عندما يكتب الدكتور عبارة على السبورة فإنه من الممكن للعديد من الطلاب أن يقرؤوا تلك العبارة بنفس اللحظة، كذلك الأمر بالنسبة للمسجلات فإنه بإمكاننا نقل بيانات المصدر إلى أكثر من هدف في نفس اللحظة، من جهة أخرى فإننا من الخطأ أن نكتب العبارة التالية
a : X<--Z، X<--Y
وهذا شيء بديهي لن أعقب عليه
تمكننا لغة تبادل المسجلات من نقل مجموعات من المسجلات إلى مسجلات مقابلة بتعليمة واحدة فإذا أردنا مثلا نقل 
المسجلات Y0,Y1,Y2,Y3 إلى المسجلات X0,X1,X2,X3 على الترتيب نكتب السكر التالي
(a : X(3-0)<-- Y(3-0

العمليات المكروية المنطقية والرياضية

الجمع X<--X+Y
الطرح X<--X-Y أو X<--Y -X
الزيادة X<--X+1
الانقاص X<--X-1
و المنطقية X<--X ^ Y أو X<--Y ^ X
أو المنطقية X<--X v Y أو X<--Y v X
عدم التماثل X<--X (+)Y
النفي المنطقي X<--/X أو 'X<--X

عمليات الإزاحة المكروية

إزاحة خطية لليسار (shl(x
إزاحة خطية لليمين (shr(x
إزاحة دائرية لليسار (cil(x
إزاحة دائرية لليمين (cir(x
إزاحة رياضية لليسار (ashl(x
إزاحة رياضية لليمين (ashr(x
إزاحة عشرية لليسار (dshl(x
إزاحة عشرية لليمين (dshr(x
في الإزاحة الخطية لليسار نهمل البت الأخير من اليسار ونزيح البتات خانة واحدة لليسار ثم نضع في اليمين صفرا
مثال : 0110 --> 1011
في الإزاحة الخطية لليمين نهمل البت الأخير من اليمين ونزيح البتات خانة واحدة لليمين ثم نضع في اليسار صفرا
مثال : 0101 --> 1011
في الإزاحة الدائرية لليسار ننقل البت الأخير من اليسار ونضعه في اليمين
مثال : 0111 --> 1101
في الإزاحة الدائرية لليمين ننقل البت الأخير من اليسار ونضعه في اليسار
مثال : 1101 --> 1011
في الإزاحة الرياضية ننفذ نفس عملية الإزاحة الخطية إلا أننا نترك الخانة اليسرى على حالها باعتيارها خانة إشارة
مثال : 1110 --> 1011
وتستخدم الإزاحة العشرية عند الترميز الثنائي بالصيغة المجمعة BCD

مثال تطبيقي : (((تصميم متحكم حجرة الهاتف)))

كا الأسهم يجب أن تكون من اليمين إلى اليسار ة إذا صادفت سهما من اليسار إلى اليمين فتجاهل الاتجاه واعتبره نحو اليسار (((-->)))
يملك متحكم مخزن الهاتف حساسين خارجيين، الأول : C يحدد فيما إذا كانت السيارة موجودة في
الحجرة C=1 عندما تكون السيارة موجودة وإلا فإن C=0
الحساس الثاني يحدد فيما إذا كانت العملة النقدية مودعة في الحجرة أم لا وله الحالات التالية :
I1I0 = 00 العملة النقدية مودعة بالحجرة
I1I0 = 01 العملة من مادة النيكل
I1I0 = 10 العملة من مادة النحاس
I1I0 = 11 العملة من مادة الفضة
كما تملك الحجرة خرجين ضوئيين وخرج منبه :
عندما تدخل سيارة حجرة الأدوات يضيء الضوء الأحمر (R) ويبقى مضيئا حتى يودع السائق على الأقل 35 سنتا 
وعندها ينطفئ الضوء الأحمر ويضيء الضوء الأخضر (G) ويبقى الضوء الأخضر مضيئا حتى تغادر السيارة الحجرة
وعندها يضيى الضوء الأحمر مرة أخرى، إذا غادرت السيارة حجرة الهاتف دون أن تدفع كامل الرسوم يبقى الضوء الأحمر مضيئا ويبدء المنبه بإصدار صوت الإنذار ويبقى صوت الإنذار إلى أن تدخل سيارة أخرى الحجرة.
نلاحظ أن

لدينا عشر حالات، هذه الحالات ومخارجها موضحة بالجدول التالي

R-------G-----A-------الشرط--------------الحالة
001لا يوجد سيارة في الحجرة Snocar
001يوجد سيارة وتم دفع 0 سنتاS0
001يوجد سيارة وتم دفع 5 سنتاS5
001يوجد سيارة وتم دفع 10 سنتاS10
001يوجد سيارة وتم دفع 15 سنتاS15
001يوجد سيارة وتم دفع 20 سنتاS20
001يوجد سيارة وتم دفع 25 سنتاS25
001يوجد سيارة وتم دفع 30 سنتاS30
010يوجد سيارة وتم دفع 35 سنتاSpaid
101غادرت السيارة دون دفع كامل القيمةScheat
/*الجدول التالي يوضح*/

جدول الحالة لمتحكم حجرة الهاتف

R—G—A—الحالات الآنية—C---I1I0---الحالات التالية
001S0xx1Snocar
001Snocarxx0Spaid
001S0xx1Scheat
101Scheatxx0S0
001S5011S0
001S10101S0
001S25111S0
101Scheatxx0S5
001S10011S5
001S15101S5
001S30111S5
101Scheatxx0S10
001S15011S10
001S20101S10
010Spaid111S10
101Scheatxx0S15
001S20011S15
001S25101S15
010Spaid111S15
101Scheatxx0S20
001S25011S20
001S30101S20
010Spaid111S20
101Scheatxx0S25
001S30011S25
010Spaid101S25
010Spaid111S25
101Scheatxx0S30
010Spaid011S30
010Spaid101S30
010Spaid111S30
و الشكل التالي يبين مخطط الحالات بدو إظهار شروط الانتقال والتي بيناها في الجدول السابق
بما أن الآلة تملك 10 حالات، نحتاج إلى 4 بتات لتشفير هذه الحالات، لذلك سنستخدم المسجل T الذي سيحوي قيمة البتات الأربعة و

الجدول التالي يوضح تشفير البتات الأربعة

T-----R—G—A----الحالة
0010000Snocar
0010001S0
0010010S5
0010011S10
0010100S15
0010101S20
0010110S25
0010111S30
0101000Spaid
1011001Scheat
0011010—1111غير مستتخدمة
من شروط المسألة ومن مخطط الحالة أصبح بإمكاننا كتابة

برنامج لفة تبادل المسجلات لحجرة الهاتف باستثناء المخارج

يكون على الشكل التالي :
1. Snocar C: T<--0001
2. Spaid C': T<--0000
3. ScheatC: T<--0001
4. S0 C': T<--1001
5. S0 CI1'I0: T<--0010
6. S0 CI1I0': T<--0011
7. S0 CI1I0: T<--0110
8. S5 C': T<--1001
9. S5 CI1'I0: T<--0011
10. S5 CI1I0': T<--0100
11. S5 CI1I0: T<--0111
12. S10 C': T<--1001
13. S10 CI1'I0: T<--0100
14. S10 CI1'I0: T<--0101
15. S10 CI1I0: T<--1000
16. S15 C': T<--1001
17.S15 CI1'I0: T<--0101
18.S15 CI1I0': T<--0110
19.S15 CI1I0: T<--1000
20. S20 C': T<--1001
21.S20 CI1'I0: T<--0110
22.S20 CI1I0': T<--0111
23.S20 CI1I0: T<--1000
24.S25 C': T<--1001
25.S25 CI1'I0: T<--0111
26.S25 CI1I0': T<--1000
27.S25 CI1I0: T<--1000
28.S30 C': T<--1001
29.S30 CI1'I0: T<--1000
30.S30 CI1I0': T<--1000
31.S30 CI1I0: T<--1000
32.T3(T2+T1): T<--0000
كما أن

برنامج لفة تبادل المسجلات لحجرة الهاتف /* للمخارج*/ يكتب على الشكل التالي =

1.Spaid C': R<--1, G<--0
2.ScheatC: R<--1, G<--0, A<--0
3.SnocarC: R<--1, G<--0, A<--0
4.S0C': A<--1
5.S5C': A<--1
6.S10C': A<--1
7.S10CI1I0: R<--0, G<--1
8.S15C': A<--1
9.S15CI1I0: R<--0, G<--1
10.S20C': A<--1
11.S20CI1I0: R<--0, G<--1
12.S25C': A<--1
13.S25CI1I0': R<--0, G<--1
14.S25CI1I0: R<--0, G<--1
15.S30C': A<--1
16.S30CI1'I0: R<--0, G<--1
17.S30CI1I0': R<--0, G<--1
18.S30CI1I0: R<--0, G<--1
19.T3(T2+T1) : R<--1, G<--0, A<--0
و بالتالي يكون

البرنامج النهائي للحجرة كما يلي

1. (S0+S5+S10+S15+S20+S25+S30)C': T<--1001
2.SpaidC': T<--0000
3. (Snocar+Scheat)C: T<--0000
4.S0 CI1'I0: T<--0010
5.S0 CI1I0': T<--0011
6.S0 CI1I0: T<--0110
7.S5 CI1'I0: T<--0011
8.S5 CI1I0': T<--0100
9.S5 CI1I0: T<--0111
10.S10 CI1'I0: T<--0100
11.S10CI1I0': T<--0101
12.S10 CI1I0: T<--1000
13.S15 CI1'I0: T<--0101
14.S15 CI1I0': T<--0110
15.S15 CI1I0: T<--1000
16.S20 CI1'I0: T<--0110
17.S20 CI1I0': T<--0111
18.S20 CI1I0: T<--1000
19.S25 CI1'I0: T<--0111
20.S25 CI1: T<--1000
21.S30C(I1+I0): T<--1000
22.T3(T2+T1) : T<--0000
23.Spaid C': R<--1, G<--0
24. (Snocar+Scheat)C: R<--1, G<--0, A<--0
25. (S0+S5+S10+S15+S20+S25+S30)C': A<--1
26. (S10+S15+S20+S25+S30)CI1I0: R<--0, G<--1
27. (S25+S30)CI1I0': R<--0, G<--1
28.S30CI1'I0: R<--0, G<--1
29.T3(T2+T1) : R<--1, G<--0, A<--0
\\\\\\\\\\\
\\\\\\\\\\\