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

لغة تبادل البيانات بين المسجلات (بالإنجليزية: Register transfer language)‏ هي نوع من اللغات الوسيطة وهي العمليات المكروية (الأعمال التي تقوم بها وحدة المعالجة المركزية عند تنفيذها لدورة الأمر) وهي أساس معظم الأنظمة الرقمية التسلسلية، وتعتبر العمليات المكروية أكثر بساطة من لغة التجميع ( 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