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

لغة تبادل البيانات بين المسجلات  هي نوع من اللغات الوسيطة وهي العمليات المكروية (الأعمال التي تقوم بها وحدة المعالجة المركزية عند تنفيذها لدورة الأمر) وهي أساس معظم الأنظمة الرقمية التسلسلية، وتعتبر العمليات المكروية أكثر بساطة من لغة التجميع ( Assembly Language) ومن الأمثلة على العمليات المكروية نذكر :
 نقل البيانات - وعادة يكون النسخ - من مسجل أو من موقع ذاكري أو من جهاز دخل/خرج إلى آخر
 تعديل قيمة مخزنة كزيادة أو مسح قيمة مسجل
 أداء وظائف منطقية أو حسابية : مثل جمع قيمتين وتخزين الناتج في مسجل وإلا تعديل القيمة المخزنة ككتابة القيمة في مسجل مع قيمة ثابتة

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

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

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

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

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

عند تصميم النظم الرقمية التسلسية فإن المصمم يمكن أن يحدد أولا كيفية تصرف النظام باستخدام التعليمات المكروية ومن ثم يصمم البنية الصلبة للنظام ويصل بين هذه العمليات والبنية التي قام بتصميمها.

لنكون تصورا عن هيكلية العمليات المكروية نفترض نظاما رقميا مكونا من مسجلين كل منهما بطول واحد بت 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-------الشرط--------------الحالة

0	0	1	لا يوجد سيارة في الحجرة Snocar

0	0	1	يوجد سيارة وتم دفع 0 سنتا	S0

0	0	1	يوجد سيارة وتم دفع 5 سنتا	S5

0	0	1	يوجد سيارة وتم دفع 10 سنتا	S10

0	0	1	يوجد سيارة وتم دفع 15 سنتا	S15

0	0	1	يوجد سيارة وتم دفع 20 سنتا	S20

0	0	1	يوجد سيارة وتم دفع 25 سنتا	S25

0	0	1	يوجد سيارة وتم دفع 30 سنتا	S30

0	1	0	يوجد سيارة وتم دفع 35 سنتا	Spaid

1	0	1	غادرت السيارة دون دفع كامل القيمة	Scheat

/*الجدول التالي يوضح*/

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

R—G—A—الحالات الآنية—C---I1I0---الحالات التالية

0	0	1	S0		xx	1	Snocar

0	0	1	Snocar		xx	0	Spaid

0	0	1	S0		xx	1	Scheat

1	0	1	Scheat		xx	0	S0

0	0	1	S5		01	1	S0

0	0	1	S10		10	1	S0

0	0	1	S25		11	1	S0

1	0	1	Scheat		xx	0	S5

0	0	1	S10		01	1	S5

0	0	1	S15		10	1	S5

0	0	1	S30		11	1	S5

1	0	1	Scheat		xx	0	S10

0	0	1	S15		01	1	S10

0	0	1	S20		10	1	S10

0	1	0	Spaid		11	1	S10

1	0	1	Scheat		xx	0	S15

0	0	1	S20		01	1	S15

0	0	1	S25		10	1	S15

0	1	0	Spaid		11	1	S15

1	0	1	Scheat		xx	0	S20

0	0	1	S25		01	1	S20

0	0	1	S30		10	1	S20

0	1	0	Spaid		11	1	S20

1	0	1	Scheat		xx	0	S25

0	0	1	S30		01	1	S25

0	1	0	Spaid		10	1	S25

0	1	0	Spaid		11	1	S25

1	0	1	Scheat		xx	0	S30

0	1	0	Spaid		01	1	S30

0	1	0	Spaid		10	1	S30

0	1	0	Spaid		11	1	S30

و الشكل التالي يبين مخطط الحالات بدو إظهار شروط الانتقال والتي بيناها في الجدول السابق

بما أن الآلة تملك 10 حالات، نحتاج إلى 4 بتات لتشفير هذه الحالات، لذلك سنستخدم المسجل T الذي سيحوي قيمة البتات الأربعة و

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

T-----R—G—A----الحالة

0	0	1	0000	Snocar

0	0	1	0001	S0

0	0	1	0010	S5

0	0	1	0011	S10

0	0	1	0100	S15

0	0	1	0101	S20

0	0	1	0110	S25

0	0	1	0111	S30

0	1	0	1000	Spaid

1	0	1	1001	Scheat

0	0	1	1010—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

\\\\\\\\\\\
\\\\\\\\\\\

وصلات خارجية 

Official Site 2

international

RTL Group4

المراجع 
 كتاب Architecture1
 animedigital
 schnittberichte

بنية الحاسوب
حواسيب