**العدادات المتواقتة synchronous counters**
ـ *العدادات (countees)*
يتكون العداد من صف من القلابات التي تنتقل من وضعية إلى أخرى استجابة لما يسمى بالحادثة (Event).
و هذه الحادثة يمكن أن تكون عبارة عن دور واحد للساعة أو أكثر ويستخدم العداد لإحصاء عدد هذه الحوادث.
يسمى عدد الوضعيات التي يمر بها العداد قبل أن يعود إلى الوضعية الأولى بـ(MoDulo) العداد باختصار (MOD) ويحتوي العداد المكون من (n) قلاب على MoDulo مساو إلى {\displaystyle 2^{n}} كحد أعظمي ولكن بالطبع ليس ضروريا أن يمر العداد خلال جميع الوضعيات الممكنة وفي هذه الحالة يكون MoDulo العداد أقل من {\displaystyle 2^{n}}.

العداد الحلقي (The ring counter)
--------------------------------

يظهر الشكل (1) عدادا حلقيا (Mod – 4) وهذا العداد كما يمكن ملاحظته عبارة عن مسجل إزاحة مكون من 4 قلابات من نوع (D) موصولة بطريقة تسمح بالإزاحة إلى اليمين.
يتم في البداية رفع مستوى مدخل البدء (INITIATE) إلى واحد منطقي لبرهة قصيرة وذلك لنقل القلاب (FFO) إلى الوضعية (SET) وبقية القلابات إلى الوضعية (RESET).
بعدها يتم تطبيق نبضات الساعة ويبدأ العداد بإحصائها.
تسبب كل حافة قادحة انتقال الوضعية SET من قلاب إلى آخر.
و بعد أربعة دورات متلاحقة يعود العداد إلى الوضعية الأوليّة.

إن قراءة العداد المسجل في العداد الحلقي أمر بسيط جدا فكل ما نحتاجه هو تحديد أي قلاب موجود في الوضعية SET.
لهذا الغرض نوصل مخرج كل قلاب (Q) بوحدة إظهار تقوم بإظهار الرقم المسجل عليها عندما يكون مستوى (Q) عاليا كما هو مبين في الشكل (1)
و عندما يبدأ العداد بالعد سنرى أن الأرقام ستظهر وفقا للتسلسل التالي :
0\_1\_2\_3\_0

```
 ويظهر الشكل (2) أشكال موجات الخرج والساعة للعداد الحلقي.
```

تبدأ الموجات عند لحظة اختيار يكون فيها (QO=1) و(Q2=Q3=Q4=0).
بعدها ينتقل المستوى المنطقي العالي من مخرج إلى آخر مما يعطي مجموعة من النبضات المتسلسلة التي يمكن استخدامها في ترتيب تسلسل تنفيذ مجموعة من العمليات.

العداد ذو النهاية الموصولة أو عداد جونسون
-----------------------------------------

بالرغم من بساطة العداد الحلقي فإنه لا يستخدم القلابات بشكل اقتصادي فالعداد الحلقي المحتوي على (n) قلاب له (MOD – n) بينما لـ(n) قلاب توجد({\displaystyle 2^{n}}) وضعية.
يقوم العداد ذو النهاية الموصولة والمسمى أيضا بعداد جونسون الشكل (3) بالاستفادة بشكل أفضل من القلابات وكما هو واضح من الشكل يشبه هذا العداد الحلقي مع فارق واحد وهو أن الوصلة ما بين نهاية العداد وبدايته أخذت من ('Q3) بدلاً من (Q3).

بافتراض أن جميع القلابات قد مسحت أي (Q0 = Q1= Q2 = Q3 = 0) عندما تأتي الجبهة القادحة التالية ينتقل الصفر إلى القلابات (FF3، FF2، FF1).
أما القلاب (FFO) فسينتقل إلى الوضعية (SET).
لأن المخرج (Q3)هو الموصول بمدخل القلاب (FFO).
إذا ينتقل العداد من الوضعية (0000 = Q0 Q1 Q2 Q3)
إلى الوضعية (1000 = Q0 Q1 Q2 Q3) ويظهر الشكل (4) تسلسل الوضعيات التي يمر بها العداد والتي نلاحظ بأن عددها يساوي إلى ثمانية وهو ضعف عدد القلابات الموجودة في العداد.
إذا يتميز العداد ذو النهاية الموصولة بأن له (MODULO-2n)بينما العداد الحلقي كما رأينا له (MODULO- n).
لقراءة العد الذي وصل اليه عداد جونسون هنالك حاجة إلى عدد من المخارج المنفصلة يساوي عدد الوضعيات.
بحيث يكون مخرج واحد فقط من هذه المخارج في المستوى 1 بينما البقية يكونون في المستوى (صفر).
لتحقيق ذلك نستخدم دارة فاك شيفرة (Decoder).
و يتضمن الجدول المبين في الشكل (4) العلاقات المنطقية اللازمة لتصميم الدارة المـطلوبة.

أمثلة أخرى عن العدادات المتواقتة
--------------------------------

يعتبر العداد الحلقي وعداد جونسون من العدادات المتواقتة وذلك لأن الساعة مطبقة على جميع القلابات في وقت واحد، لكن هذه العدادات تعاني من عدم استخدامها الاقتصادي للقلابات.
و مع أن عداد جونسون أفضل من العداد الحلقي من هذه الناحية إلا أنه بحاجة إلى دارة فك الشيفرة بينما لا يحتاج إلى ذلك العداد الحلقي.
سوف نستعرض الآن أنواعا أخرى من العدادات المتواقتة التي تستفيد بشكل كامل أو شبه كامل من الوضعيات المتوفرة ولنبدأ بالعدادات التي تستخدم ({\displaystyle 2^{n}}) وضعية.
إذا أعددنا جدولا محتوٍ على مجموعة من الأعداد الثنائية مرتبة وفق التسلسل العددي نلاحظ أن الـBIT ذو المرتبة الدنيا {\displaystyle 2^{0}} يتبدل مع كل خطوة عد وأن الـBIT التالي ذو المرتبة {\displaystyle 2^{1}} يتغير مع كل خطوة عد يكون فيها الـBIT ({\displaystyle 2^{0}}) مساويا للواحد.
أما الـBIT ({\displaystyle 2^{2}}) فيتغير عندما كلا ({\displaystyle 2^{1}})و ({\displaystyle 2^{0}}) BITS تساوي الواحد.
و بشكل عام نستطيع أن نقول أن الـBIT ذو المرتبة الأعلى يتبدل عندما جميع الـBIT ذات المراتب الأدنى تساوي الواحد في وقت واحد.
تؤدي بنا هذه الملاحظات إلى استنباط الطريقة التالية لتشكيل عداد يتبع تسلسل العد بشكل صحيح : من أجل الـBIT ذو المرتبة الدنيا نستخدم قلاب يبدل وضعيته مع كل دورة للساعة ومن أجل الـBIT التالي نستخدم قلاب يبدل من وضعيته عندما يكون القلاب الأولي في الوضعية SET.
و بشكل عام سيتكون العداد من عدد من القلابات مساوٍ لعدد BITS وكل قلاب سيبدل وضعيته عندما تكون جميع القلابات الممثلة للـBIT ذات المراتب الأدنى موجودة في الوضعية SET.
بهذه الطريقة نحصل على العداد المبين في الشكل (5 أ) والذي استخدمت فيه قلابات من النوع (J – K) التي تبدل من وضعيتها عندما (J = K = 1).
فمثلا يبدل القلاب FF3 من وضعيته عندما J = K3 = 1 وهذا الشرط يتحقق عندما (Q0 = Q1 = Q2 = 1) وهو المطلوب ويظهر الشكل (5 ب) موجات الخرج لهذا العداد.
كما يظهر الشكل (5 ج) دارات فك الشيفرة اللازمة للحصول على نتيجة العد.

نلاحظ من الشكل (5 أ) أن البوابة (G1) لا تفيد في شيء وإنما تمَّ استخدامها لكي يظهر الشكل متناسقا فقط.
كما نلاحظ أن عدد المداخل لبوابات AND المستخدمة يزداد مع ازدياد عدد القلابات وهذا بالطبع يؤدي إلى تعقد الدارة.
لذلك يلجأ عادة إلى طريقة أخرى لتشكيل العداد وهي مبينة في الشكل (6) وهنا أيضا يمكن التأكد من أن القلاب لن يبدل من وضعيته إلا بعد أن تكون جميع القلابات التي تسبقه موجودة في الوضعية(SET (QO = Q1 = Q2 = …=1.

سرعة العدادات المتواقتة
-----------------------

تقارن العدادات مع بعضها بالسرعة التي تعمل بها. أي بمعدل تغير الساعة التي يمكن استخدامها.
و لحساب السرعة نفترض أن الجبهة القادحة للساعة ترد في اللحظة (t = 0) ثم نحسب كم من الوقت يجب الانتظار قبل السماح بورود جبهة قادحة ثانية تؤثر على القلاب بشكل فعال.
كما هو معلوم يغير في العداد الحلقي قلاب واحد فقط من وضعيته عند كل جبهة قادحة للساعة.
فإذا افترضنا أن القلاب (FFk) هو الذي غير من وضعيته استجابة لمعطيات الدخل وأن هذا التغيير يجب نقله إلى القلاب التالي أي (FFk+1) قبل ورود جبهة قادحة ثانية فإن التردد الأعظمي للساعة المسموح به في العداد الحلقي يساوي إلى :

```
           {\displaystyle Fmax=1/(Tpd,ff+Tsetup)}
```

حيث Tbd,ff هو زمن تأخر الانتشار للقلاب FFK و Tsetup هو زمن التهيؤ.
و هو الزمن اللازم لثبات المعطيات الجديدة على الخرج (FFk).
أما بالنسبة لزمن الاستمرار فهو غير مهم هنا لأن معطيات الدخل تتغير كل (n) دور للساعة.
أما بالنسبة للعداد (MOD – {\displaystyle 2^{n}}) المبين في الشكل (5) والذي يختلف عن العداد الحلقي بوجود بوابات AND فيه فيجب إضافة زمن تأخير الانتشار لهذه البوابات لنحصل على العلاقة التالية : 

```
           {\displaystyle Fmax=1/(Tpd,ff+Tpd,gate+Tsetup)}
```

يختلف الوضع الآن في العدد المبين في الشكل (6) لأن على المستويات المنطقية أن تنتقل عبر مجموعة من بوابات AND فعندما يكون العداد في الوضعية (Q0 Q1 Q2 Q3 = 0111) تكون جميع مخارج البوابات وجميع مداخل (J) و(K) للقلابات (FFO) عند المستوى المنطقي صفر.
و عندما يصبح المخرج (QO) في الوضعية SET تمر فترة زمنية مساوية إلى زمن تأخير الانتشار للبوابة (G1) قبل أن يصبح مخرجها في المستوى (1) منطقي.
كذلك سيمر زمن تأخير ثان قبل أن يصبح مخرج البوابة (G2) في المستوى (1) منطقي وزمن تأخير ثالث قبل أن يصبح مخرج البوابة (G3) (1) منطقي.
و هكذا تمر فترة زمنية مساوية إلى مجموع أزمان التأخير للبوابات قبل أن تصبح جميع مداخل (J) و(K) للقلابات في المستوى (1) منطقي وهو الشرط اللازم لكي ينتقل العداد عند الجبهة القادحة التالية إلى الوضعية : (Q0 Q1 Q2 Q3 = 0000) وليكون عده صحيحا.
يسمى الانتقال التتابعي من بنية منطقية إلى أخرى مع التأخير المرافق بالزحف (Ripple).
فإذا وردت الجبهة القادحة للساعة قبل اكتمال الزحف فلن تكون جميع المداخل (J) و(K) في المستوى المنطقي (1).
و بالتالي لن تبدل بعض القلابات من وضعيتها وسيكون العد خاطئا بما أن العداد المكون من (n) قلاب يحتاج إلى (n-2) بوابة AND فإن التردد الأعظمي للساعة المسموح به في هذا النوع من العداد يساوي :

```
          {\displaystyle Fmax=1/(Tpd,ff+(n-2)Tpd,gate+Tsetup)}
```

تصميم العدادات المتواقتة ذات (MODULO) اختياري
---------------------------------------------

لتصميم عداد ذو (Modulo) اختياري نبدأ أولاً بتحديد عدد القلابات اللازمة لتأمين عدد الوضعيات المطلوبة أو أكثر.
فإذا أردنا مثلا تصميم عداد (MOD-5) أو (6) أو (7) نحتاج إلى ثلاث قلابات لأنها تعطي ({\displaystyle 2^{3}=8}) وضعية بينما لا يكفي قلابان لأنهما يعطيان ({\displaystyle 2^{2}=4}) وضعية فقط.
بعدها نقرر أي من الوضعيات المتوفرة سيأخذ وأي منها سيهمل ثم نقرر ترتيب الوضعيات التي سيمر بها العداد.
و أخيرا نختار الدارات المنطقية المناسبة لعمل العداد وفقا للترتيب الموضوع.
لتوضيح عملية التصميم نورد المثال التالي المتضمن تصميم العداد (MOD-5) الذي يمر بالوضعيات التالية :

```
              S3-S4-S5-S6-S7-S3
```

و ذلك باستخدام القلابات (J – K) (من الممكن أيضا استخدام القلاب RS أو
D).
تعتمد الخطوة الأولى على ترتيب وضعيات العداد في الجدول المسمى بجدول الوضعية (الجدول 1) بعدها نشكل جدول الانتقال (الجدول 2) الذي يحدد وضعية كل قلاب :

عند كل حالة عد للعداد. ويمثل الرمز (Q) وضعية القلاب قبل الاستعمال بينما الرمز (Q`) يمثل وضعية القلاب بعد الانتقال :

لكي ينتقل العداد من وضعية إلى أخرى يجب أن يزود كل قلاب فيه بالمستويات اللازمة لانتقاله إلى الوضعية المناسبة.
و بما أن جدول الحقيقة لأي قلاب يبين تصرف القلاب إذا علمت المستويات المنطقية على مداخله.
فمن الممكن الاستفادة من هذا الجدول بإعادة ترتيب المعلومات الموجودة فيه بحيث نحصل فيه على قيم المستويات اللازمة للانتقال إلى أي وضعية مباشرة.
و هكذا نشكل من جدول الحقيقة للقلاب (JK) والمبين في الشكل (7) الجدول(3) والذي نستطيع أن نقرأ منه ما يلي :
في حال كون القلاب في وضعية الـ(RESET) ونريد استمراره في هذه الوضعية يجب أن يكون (J = O) ولا يهم مستوى (K).

نقوم الآن وبالاستناد إلى الجداول (1) و(2) و(3) بتشكيل جداول كارناف لكل (J) و(K) من كل قلاب.
و بما أن لدينا ثلاث قلابات تتشكل ستة جداول يتم ملؤها بالقيم المناسبة كما يلي :
عندما يكون العداد في الوضعية (S3) مثلا يكون (O2 Q1 QO=011) وعند انتقاله إلى الوضعية (S4) يصبح (Q2Q1QO=1 00) إذا (Q2) فقط انتقل من (Q2 = O) إلى (Q2 = 1).
نستخرج الآن من الجدول (3) قيم (J) و(K) التي تسبب انتقال القلاب من الوضعية (Q1 = O) إلى الوضعية (Q2=1) ونضع هذه القيم وهي(J2 = 1) و(و غير مهم = K1 = X) في المربع (Q2 Q1 QO = 011) من جدول كارناف لـ(J2) و(K2).
بنفس الطريقة يتم إيجاد بقية القيم ووضعها في المربعات المناسبة وبذلك نحصل على الجداول المبينة في الشكل (8).

نستخرج الآن من جداول كارناف الصيغ المنطقية التالية لكل (J) و(K) :

```
J2=1        K2=Q1 Q0  
 J1=Q0        K1='Q2 
```

J0=1 K0='Q2 + 'Q1

و التي نستخدمها لرسم دارة العداد المبينة في الشكل (9) والتي تم إضافة خط عام لها لتزويد القلابات بالساعة.

بالاستناد إلى الشكل (9) يمكن الآن رسم موجات خرج العداد كما هو مبين في الشكل (10).
في حال رغبتنا في تصميم العداد السابق باستخدام القلاب (RS) نتبع نفس الخطوات السابقة مع استخدام جدول الحقيقة للقلاب (RS) عوضا عن جدول القلاب (J – K).

العدادات المتواقتة التصاعدية ـ التنازلية
----------------------------------------

Up – Down synchronous counters
كثيرا ما نحتاج إلى عداد يمكن أن نتحكم باتجاه عده هل يكون تصاعديا أو تنازليا.
لذلك سنستعرض الآن طريقة تعديل العداد (MOD – 5) الذي صممناه في الفقرة السابقة بحيث يمكن عكس اتجاه العد فيه.
يحتاج العداد لكي يعد بالاتجاهين بالإضافة إلى مدخل الساعة إلى مدخل خاص يحدد مستواه اتجاه العد ولنرمز له بالحرف (M) ولنتفق حينما يكون(M = 1) يكون العد تصاعديا أي :

```
             ....-S3-S4-S5
```

و حينما يكون (M = O) يكون العد تنازليا أي :

```
           ....-S3-S7-S6-S         
```

يبدأ تصميم العداد التصاعدي التنازلي بتشكيل جدول الانتقال (الجدول 4) الذي يحتوي على عامودين.
يخصص الأول منهما للوضعية التالية من أجل (M = 1) وهي نفس الحالة الموجودة في الجدول (2) أما الثاني فيخصص للوضعية التالية من أجل (M = O).
لاكمال تصميم العداد نتبع الخطوات التي اتبعناها عند تصميم العداد (MOD-5) مع فارق واحد وهو أننا سنحصل هنا على جداول كارناف بأربعة متحولات.
إذ أن الوضعية التالية تتحدد ليس بناء على المتحولات (QO, 'Q1، 'Q2') فقط
و إنما بناء على قيمة المتحول (M) أيضا.
و يظهر الشكل (11) جدول كارناف لـ(KO) الذي نستخرج منه الصيغة المنطقية (KO)` كما يلي :

```
                     الجدول - 4 -
```

K0='Q1 = 'M Q2+ M 'Q2
بنفس الطريقة نحصل على قيم (J0) (K2) (J2)، (K 1) (J 1) التالية :

```
 J0=1      J2=1      K2=Q1 Q0 M + 'Q1 'Q0 'M
 J1='Q0 M+ Q0       K1='Q2 M +Q0 'M
```

الانغلاق الضائع (Lock out)
--------------------------

أثناء تصميم العداد (MOD – 5) لم نستخدم ثلاث من الوضعيات الممكنة وهي: (SO، S1، S2) وهذا العدد يزداد بشكل ملحوظ في العدادات ذات (MOD) كبير فمثلا يحتاج العداد (Mod-33) إلى ستة قلابات (({\displaystyle 2^{5}=32}),({\displaystyle 2^{6}=64})).
و هذه القلابات تعطي (64) وضعية لا يستخدم منها إلا ثلاث وثلاثون.
و قد يحدث أن يجد العداد نفسه في إحدى هذه الوضعيات الغير مستخدمة نتيجة لنبضة ضجيج أو بعد وصل التغذية مباشرة.
فإذا انتقل من الوضعية الغير مستخدمة إلى الوضعية المستخدمة مباشرة أو بعد عدة خطوات فهذا لن يؤثر على عمله ولكن هناك احتمال في عدم انتقاله إلى الوضعيات المستخدمة واستمراره في الدوران ضمن حلقة من الوضعيات الغير مستخدمة.
تسمى هذه الحالة بالانغلاق الضائع Lock out ولتجنب الوقوع فيها يجب التحقق من أن جميع الوضعيات الغير مستخدمة والتي اعتبرناها سابقا غير مهمة لتبسيط دارة العداد لا تؤدي إلى حالة ضياع.
و عندما يكتشف وجود مثل هذه الوضعيات يجب تغيير الـX (غير مهم) بقيمة مناسبة في جدول كارناف وحتى إذا لم يكن متوقعا ضياع العداد فمن المفضل تغيير الـX بقيمة مناسبة وذلك للإسراع في عملية خروج العداد من الوضعيات الغير مستخدمة.

المراجع
-------

الموقع cb4a.com

الجبر المنطق "د. هيثم عرابي"

بنية الحاسب "م. فادي حجار"

نظم منطقية "د. فادي فوز"

allaboutcircuits.com

* أيقونة بوابةبوابة علم الحاسوب