بسم الله الرحمن الرحيم. اليوم، إن شاء الله، هنستكمل
في درس الـ synchronous counters. يمكن المحاضرة
السابقة، شفنا كيف نصمم بشكل مباشر وسريع، بدون الرجوع
لخطوات الـ design الموجودة في الشفرة الخامسة. كيف
نصمم عداد من 0 لـ 15 أو من 0 لـ 7 أو أكثر، بطريقة
simple، بس إضافة بلوكات من الـ flip flops. اليوم
هنبدأ نشوف درس يتقاطع مع chapter 5، واللي already
دارس chapter 5 هيكون فاهمه. مافيش فيه إشي بداية
المحاضرة اليوم، اللي هو كيف نصمم عداد يعيد من 0 إلى
9. طبعا الكل هيقول لي هذا عداد سهل، مافيش فيه مشكلة.
إذا أخدنا زيه في خمسة بالفعل، هو عداد سهل. إذا أخدنا
زيه في خمسة. لكن من باب التذكير، هتقولوا لي بدنا نعمل
zero، بودّي لواحد، بودّي لاثنين، بودّي لثلاثة، بودّي
لأربعة، بودّي لخمسة، بودّي لستة، بودّي لسبعة، بودّي
لثمانية، بودّي لتسعة، وبرجع لصفر.
الآن، إحنا أخدناه قبل هيك في chapter خمسة، يعيد
لسبعة فقط، فكانت الأمور سهلة جدا. طب شو اللي جديد
اليوم؟ اللي جديد نقطتين. النقطة الأولى أنه صار يعيد
لتسعة. فهذه التسعة معناها عندي كام input بدّي يكون
الشاطرين هيقولوا لي: طالما عندي تسعة دوائر، معناها لازم
يكون عندي أربعة flip-flops. مش هيك؟ إحنا اتفقنا قبل هيك
إنّ الثلاث flip-flops بيعملوا لي سبع دوائر، الاثنين
flip-flops بيعملوا لي أربع دوائر. صح ولا لأ؟ اليوم
إحنا رسمنا تسعة دوائر. التسعة دوائر ما بقدرش أعملهم
إلا على الأقل في أربعة flip-flops. وبالتالي، لأن
الأربعة flip-flops بيعملوا لي ستة عشر احتمال. طب في
منهم عشرة معروفين، اللي من صفر إلى تسعة. طب السؤال
الـ 6 اللي ما ذكرتمش، اللي هم 10، 11، 12، 13، اللي
هيبينوا في الجدول. شو أعمل فيهم؟ هذه النقطة الجديدة.
بدّي أحطهم don't care. بس هي النقطة الجديدة. أما
كتصميم، مش صعب. ليش؟ أنا أقول لكم ليش. إحنا لو رجلنا
شغّلنا الخمسة، ببساطة هنقول: طالما عندي 16، عندي عشرة
دوائر، عندي هيكون أربعة flip-flops. صح ولا لأ؟ طب
ممتاز. الأربعة... مافيش ولا input صريح. مش هيكونوا
نشتغل عشان أحول هاي لـ sequential circuit. مش يقولوا لنا
خطوات ثابتة وسهلة. كان أولها: عدد الـ flip-flops زاد،
عدد الـ input الصريحات، عشان أعمل كل الـ inputs اللي
في الـ state table. مش هيكونوا. نشتغل بعدين كل state
وين بتروح. مش هيك نشتغل. وبعدين أُحدد: بدّي بالـ JK ولا
الـ D ولا الـ T. مش هيكوا نسوي؟ نبدأ في الخطوة الأولى
اللي عملناها في شغلة الخمسة. الآن، هنا زي ما شايفين
عندي عشرة دوائر، ومافيش ولا input صريح. إذا الواضح
أنه عندي أربعة flip flops. إذا كام input عندي؟ أربعة.
مافيش غيرهم، اللي هم الـ flip flops. طب شو اسميهم؟
الكتاب سماهم Q8، Q4، Q2، Q1. أنا ما عندي مشكلة، أنا ممكن
اسمّيهم مثلاً A، B، C، D.
مافيش مشكلة في التسمية. اسمّيهم whatever. المهم
إنّ هدول أربعة flip flops. طبعاً، طالما عندي أربعة flip
flops، كم احتمال؟ الشاطرين هيقولوا: في ستة عشر احتمال.
بده يكون 0، 1، 0، 1، 0، 1، 0، 1، 0، 1، 0، 1، 0، 1، 0، 1...
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01
01 01 01... A,T plus one. زائد لو في عندي output صريح.
طبعاً، المفروض في المثال هذا، إحنا اشتغلنا في chapter
خمسة، مافيش output صريح. خلاص، بدي أعداد، وخلاص. اليوم
تحديداً في هذا المثال، جاي إحنا بدنا نعتبر إن في
output صريح خامس، اسمه مثلاً y، وبدنا نعتبر إن هذا الـ
y ما بيطلعش واحد إلا آخر عدّة. ليش؟ هو فرضه كماشي واحد.
هنقول ليش فرضه. لكن حتى لو مفترض موجود، يعني لو هذه
على صفر، هذه على صفر، هذه على صفر، هذه على صفر، هذه
على صفر، هذه على واحد، رقم تسعة. الآن، لو أنا شفت State
diagram زي هيك، وقالوا لي: تفضل، حولّه لـ sequential، أنا
ما عندي مشكلة في خطواتي. ليش؟ ما عندي مشكلة في خطواتي
لأنه هقول: عندي أربعة flip-flops، هدول output، وعندي
output صريح. فعندي خمسة outputs. فبسجلهم: هايهم A, B, C,
D plus one. E plus one. والـ output
الصريح y. طبعاً أنا متأكد إن البعض بيسأل: ليش
أنت حطيت الـ output الصريح؟ ما إحنا كنا نشتغل في
شغلة الخمسة بدونه؟ ما كناش نحطه. هذا كمان شوية
هنجاوبه. بس خلينا نحاول نعمل في الأول الـ design، و
نخلص من الـ design. بعدين هنقول: إيش العبرة إن إحنا
حطينا output صريح، وما بيطلعش واحد إلا فقط عند رقم
تسعة. كمان شوية حكي النقطة دي، ليش؟ بس خلينا الآن
نفترض أنه في عندي الـ State Diagram زي هيك، والمطلوب
مني أطلّع له الـ Sequential Circuit. المفروض من
معلومات Chapter 5، ما عندكم مشكلة من الـ State
Diagram تروحوا له الـ Sequential، وشرحناه، وإزاي نجيب منه
في تسجيلات قبل، تلت أربع محاضرات، تقدر ترجعوا لها،
تمام؟ بس هنا من باب التذكير، أنا عملت الـ 16 احتمال.
طبعاً الكتاب حط لغاية عشرة. ما كملش. الكتاب ما كملش 11
في أرقام من هنا لغاية 9. آخر شيء، ما كملش عشر، الكتاب
ما كملش 11، ما كملش لغاية 16. ليش ما كملش؟ لأن الكتاب
بيقول بين السطور: هدول بدنا نحطهم don't care، لأن هم
مش موجودين. يعني بمعنى آخر، أنا مش أول ما بدأت، حطيت
أربعة أصفار، صح؟ لما بكون في أربعة أصفار، وين العد اللي
بدّي أروح له بعدين؟ طبعاً الأربعة أصفار، والـ output
اللي أنا ضفته، صفر. هيك بنشتغل. وين هنروح؟ الشاطرين
اللي هيقولوا: بعد الصفر، لأن مافيش input صريح، على طول
هيرجع على رقم واحد. فهنبدأ نسجل، من باب التذكير، رقم
واحد. هنعيد. طب رقم واحد، وين رقم واحد؟ هي رقم واحد
عند الصفر. وين هيروح؟ مش هيكون صرف شغلة الخمسة.
هيروح على شغلة، على رقم اثنين. وبنكمل: اثنين على
ثلاثة، ثلاثة على أربعة، لغاية ما نوصل لتسعة. تسعة وين
بتروح؟ على صفر. مضبوط أو لا؟ طيب مش هيكوا نكون
نسوي؟ الآن السؤال: طب أنا في الـ... في الـ... في الـ
state table، لما حطّيت أربعة احتمالات، أربعة flip flop،
بيشرّق لي 16 احتمال. إيش أعمل في رقم 10؟ طبعاً 10 مش
موجودة، 11 مش موجودة، 12 مش موجودة. إيش أسوي فيهم؟
حالات ما بتيجي. زي ما بنعرف من زمان، هنحط إيش؟ don't
care. Don't care. الكتاب ما رسمهاش، لكن ذكر بين السطور
أنه بدنا نحط للحالات اللي مش موجودة don't care.
يعني حالات لا تأتي. وبالتالي، بتوقع أنه الـ 6 حالات
اللي ضالّوا تحت، للـ 10 أو للـ 11 أو للـ 12 أو للـ 13 أو
للـ 14 أو للـ 15، هحط مكانهم، أو أجبالهم، هحط don't
care. أنه مافيش مكان نروح عليه، أو مش مذكورين في
الرسمة الأساسية اللي اشتغلنا عليها. وهذا الشيء الجديد
اليوم. أنه زمان في chapter خمسة، كنت كل الأرقام ألاقيها
دوائر، وأشوف كل دوائر وين بتروح. اليوم مش كل
الأرقام موجودة هنا. مش كل الاحتمالات اللي
موجودة هنا، اللي هم دوائر. فالسياسة السهلة، قالت: اللي
إلها دوائر، سجّل وين بتروح على حسب الدوائر. واللي
مالهاش دوائر، زي الست احتمالات اللي تحت، حطّ أجبالهم
don't care. باختصار. طيب بعد هيك، خلاص خلص السؤال، ليش؟
خلص السؤال، لأنه بعد هيك بتكون تختاروا أنتم، بتكون
تحلوا بـ T، بتكون تحلوا بـ JK، بتكون تحلوا بـ D، زي ما
كنا نعمل. يعني مثلاً، هو اختار الـ T، فهنبدأ نقول: لو كنت
في صفر، عشان أروح على صفر، شو الـ T بيكون؟ no change.
صفر. وهكذا. لو كنت في صفر، وبتروح على صفر، شو الـ T
بيكون؟ صفر. لو كنت في صفر، وبتروح على صفر، شو الـ
T's؟ no change. صفر. طب لو كنت في صفر، وبدها تصير
واحد، بده يصير change. مضبوط؟ وهذا الكلام
اتعلّمناه. هنكمّل الجدول كامل، زي ما اتعلّمناه في chapter
5. وبعد هيك، بناخد الـ T على Karnaugh map، وبنبسط، و
بنجيب معادلتها، وهكذا لكل flip-flop، وبنرسم
رسمتنا. فعلياً أنا مش هاشتغل هذا الشغل، لأنه خلاص
إحنا أخدناه في chapter 5. هو أنا بس أضفت إضافتين،
مافيش غيرهم، وهأتكلم فيهم. الإضافة الأولى، اللي أضافها
أنه بيقول لك: خذ بالك إن إحنا في chapter خمسة، كنا نحطّ
لك كل الدوائر. فكل الدوائر اللي كانت في الاحتمالات
كنت تلاقيها، وإنها بتروح. لكن اليوم بيقول لك: مش بالضرورة،
ممكن بعض الدوائر ما تكونش موجودة. جا لك الحل: حطّ بلا
don't care. خلّصنا، هي النقطة الجديدة. النقطة الثانية
والمهمة، واللي بدّي أتكلم فيها بشكل مفصل، ليش هو
قال لي: حطّ output؟ يعني ليش هو الآن بدّه العداد اللي
عمله عند أعلى قيمة، اللي هي تسعة، يطلع الـ output
واحد؟ ليش عمل هذا الكلام؟ تعالوا نشوف ليش. بدّي أمسح
الآن، علشان نشوف ليش. خلينا
أحط خلفية بيضاء، عشان نقدر نخربش. الآن على فرض أنه
عملنا عداد، ويله طبعاً زي ما أنتم عارفين، count
enable، زي ما شفنا قبل شوية، تمام؟ وهي الـ clock اللي
جاب الإشارة، وهي الـ Y اللي بتوفر إشارتها، اللي ما بتطلعش
واحد إلا عند رقم 9. وهذا العداد، بيعيد من 0 لـ 9. هذا
شكل الرسمة. صندوق يمثل الرسمة اللي صممناها. عداد بيعيد
من 0 لـ 9. طبعاً، طول ما الـ count enable تبعه واحد،
وطول ما الـ clock بتيجي، هذا بيطلع واحد،
درجة من 9. ليش؟ علشان نقدر نحطّ عدادين جانب بعض، عشان
نعمل خانتين، أو تلات خانات، جانب بعض. يعني افترض إن
نعد 99. يعني لو أنا بدي أستخدم هذا العداد اللي أنا
التالت لازم أعمل and وأسحب الـ Y high مع الـ Y high
ليش؟ لأن المئات ممنوعة من العد إلا إذا أَجَت تسعة و
تسعين يعني إذا كانت الآحاد تسعة والعشرات تسعة
المئات بتزيد واحد عشان هي أنا حطيت الـ and والـ and
شو معناها؟ أنه ممنوع أنتَ اللي في خانة المئات تجلب
إلا بشرط، شو الشرط؟ أن تكون اللي في خانة العشرات
تسعة، وتكون اللي في خانة الآحاد تسعة، إذا اتحقّق الشرطان
الشرطين: الآحاد تسعة، والعشرات تسعة، أنتَ بإمكانك يا
مئات تجلب جلبها، خلاص بجلب جلبها أول ما يجي تسعة
وتسعين، كل ما يجي تسعة وتسعين خانة المئات بتعدّ خانة
زيادة، ونفس الفكرة and خلاص نفس الفكرة لو بدي أعمل
من zero لتسعة لخانة الآلاف اللي وراها إيش بقوله؟
بقوله الـ and الـ Y High مع الـ Y القديمة، يعني ممنوع
أنتَ تعدّ في الآلاف إلا إذا أَجَت 999، يعني المئات
تسعة، والعشرات تسعة، والآحاد تسعة، في الحالة دي فقط
اجلب جلب واحدة يا خانة الآلاف، إذا واضح إنه مهم جداً
موضوع الـ output اللي أنا عملته، ليش مهم جداً؟ عشان
أقدر أعمل، ما بدي عدادات كبيرة، غلط أروح أصمّم في
البيت عداد وما أعملش حساب الـ output، طب أفرض احتاجته
في المستقبل، نفس الدائرة بدي أعمل 99 أم 799، ببطّل
يفيدني هذا العداد إلا إذا عدّلته وخليته عند التسعة
يعطيني رسالة إن أنا وصلت تسعة، فهذه كانت الحكمة من
إضافة هذا الرقم، إن الـ output بيطلع واحد عند أعلى
رقم، إن هو تسعة، من أجل إنه نقدر نوصل counters مع
بعض، هذه باختصار موضوع الـ BCD، طبعاً الآن كيف بنصمّم
عداد من 0 إلى 9، بالـ output، أنا ما كملتش لأن هذا
مشروع في شُعبة الخامسة، احنا في شُعبة الخامسة خدنا
عدادات، وخدنا كل شيء، أنا بس هنا نقطتين اللي زادوا
عشان ما نتوَههش، النقطة الأولى اللي زادت، ليش أنا عملت
عند التسعة واحد، وشرحناها، النقطة الثانية اللي زادت
ماذا لو كان في أحد الـ input ما لوش دورة، كيف هتتعامل
معاه؟ جاله، حطّ الـ Xات وخلصنا، هي النقطتين الإضافيتين
ما في شيء... الباقي الخطوات سبق أخذناها في الخامسة
فمش هنعيدها، أنا بس عملت اليوم النقطتين اللي أَجَدَّدت
تمام؟ طيب خلينا الآن نكمل بنفس القاعدة الآن
شرح ليهانة زي ما شايفين، counter سماه four bit
binary counter، طبعاً تكوين الداخل اللي تحت ليهانة مش
مطلوب، ما بدنا إياه يُهيِّئ التكوين الداخلي هذا اللي تحت، ما بدنا
إشيء، تمام؟ خلينا نركز على هذا الصندوق المصمت، كيف
نتعامل معه، ومش مهم تكملوا الداخل، أنتَ هَنا شوف إيش
قصة هذا الصندوق، هذا الصندوق عبارة عن عداد جاهز IC
جاهزة، اسمها
four bit binary، إيش يعني four bit binary؟ يعني بِعِدّ
من 0 إلى 15، زي اللي كنا نشوفهم قبل شوية، 4-bit
binary counter، يعني بعيد من 0 إلى 15، 3-bit binary
counter يعني من 0 إلى 7، 5-bit binary counter يعني
من 0 إلى 31 وهكذا، فهذا المرسوم 4-bit binary
counter، طيب هذا العداد ماله؟ تعالوا ندرس الأسلاك
اللي موجودة عشان نحاول نفهمه، أول شيء طبعاً لما بيعمل
خط slash أربعة، بقصد أربع أسلاك داخلين على الدائرة
مش سلك واحد، أربع أسلاك، لكن برسمهم خط وقالي أربعة
هدول إيش مكتوب عليهم؟ Data in، يعني شو معناته data in؟
يعني أنا أحياناً بدي العداد ما يبدأش من صفر، بدي
يبدأ من خمسة، ستة، سبعة، فجأة ما في مشكلة، بتحط رقم
خمسة وبتحمله جوا، بدك يبدأ من ثمانية، بتحط ثمانية،
بتحمله جوا، المهم لازم يكون في أسلاك جاية معلومة
عشان تدخل جوا العداد، فهذا بيسموها الـ data in، هنا
هذا أول حاجة عشان نعرف إيش الأسلاك الأربعة لها، وهنا
زي ما أنتم شايفين حاطط أربعة أسلاك، الـ a count، إيش
مقصوده الـ a count؟ هذا العداد اللي بعد، مش بده أشوف
النتيجة تبعتَه، مش بده أشوف هو بعد، علشانك الأربعة
أسلاك اللي هم الـ outputs، هي يحط slash أربعة اللي هم
هشبكهم على مين؟ هشبكهم على الـ LEDs، هشبكهم على الـ
seven segment، المهم عشان أنا أشوف العدّادات اللي عدّها،
فبِلزّمني برضه أربع مخارج، يعني أربع مداخل تحطّ معلومة
لو بدي، وأربع outputs عشان أشوف العدد اللي عدّه، و
ليش هنا أربعات؟ لأن طالما four-bit binary counter
يعني بِعِدّ من 0 إلى 15، معناه جواته أربع flip-flops
وبالتالي بِلزّمني أكتب على أربع flip-flops من خلال
أربعة data in، أو أشوف النتيجة من خلال الـ outputs، فهدول
الأسلاك عشان تكونوا عارفينها، اللي علينا، الآن في عندي الـ
clock، كلنا عارفين ليش الـ clock من زمان، ليش؟ لأن كل
ما بيجي pulse بيعيد، كل ما بيجي pulse بيعيد، فهي
الـ clock، عندي الـ clear، الـ clear إيش وظيفته؟
أخذناها قبل هيك، الـ clear في الرجسترات وظيفته إن
لو بدي أصفّر الـ content بتاع العداد، يعني بدي أعمله
clearing ب... بلمس السلك هذا في صفر مؤقت، وبعدين
بشيله على واحد، ليش ما لمسته في صفر؟ لأن هيك الـ clear
بيشتغل، وأخذنا الـ clear، لمسه في صفر بيصفّر المحتوى
طب إيش هيصير لو أنتَ سِبْته في صفر؟ مش هيعدّ العداد
هيظلّ واخد قيمة clear... clear... clear... clear...
clear... clear... clear... clear... clear... clear
... clear... clear... clear... clear... clear...
clear... clear... clear... clear... clear... clear
... clear... clear... clear... clear... clear...
clear... clear... clear... clear... clear... clear
... clear... clear... clear... clear... clear...
clear... clear... clear... clear... clear... clear
... clear... clear... clear...ممكن يكون
asynchronous clear في الرجسترات، أو asynchronous
clear، أو asynchronous clear، أو asynchronous clear
أو asynchronous clear، أو asynchronous clear، أو
asynchronous clear، أو asynchronous clear، أو
asynchronous clear، اِفترِضوا هذا شغال على الـ rising و
جيت شبّكت أنتَ السلك ده في الـ clear، هو كان من
نوع synchronous، مش هتلاقي اللمبات طافت فجأة، ليش؟
هيستنى لسه الـ rising بتاع الـ clock لما يجي، يعني لو
أنا الأربع لمبات اللي هَنا ضوّيات مثلاً، والـ clock
بتاعتي بطيئة، وشَبَّكت هذا في صفر، مش حِتْلاقي على طول إنّ
الأنوار طفت، حِتْلاقي قعدت زمن بسيط، بعدين طفت، ليش
قعدت زمن بسيط؟ لأنه كان الـ clear بيستنى على بال ما
يجي الـ rising بتاع الـ clock، أول ما يجي الـ rising
بتاع الـ clock مثلاً، على طول أول four... طبعاً شغال عن
الـ rising، أول ما يجي الـ rising بتاع الـ clock بيروح
بنفّذ أمر الـ clear، فهذا بنسميه، قلنا قبل هيك
synchronous، يعني الـ clear متزامن مع الساعة، الـ
clear متزامن مع الـ clock، مش بمجرّد ما يلمس الصفر و
يسافر، لأ، بده كمان يستنى اللحظة القراءة اللي هي
rising، هذا لو كان من نوع synchronous، إحنا اللي
أخذناه واللي هناخده الآن من نوع asynchronous، اللي
لازجة في بعضها مع synchronous، إن asynchronous الآن
لو جالي هذا الـ clear asynchronous، معناه ده ما يستناش
لا clock ولا غيره، أول ما يلمس الصفر على طول
بتلاقي اللمبات مالها؟ صفرت، اجت clock ما اجتش clock
clock، انتهى، بيكون هذا معمول تصميمه إنه يصفر مباشرة
أول ما يلمس الصفر، فهذا بنسميه asynchronous
clear، يعني clear غير متزامن، غير مرتبط بساعة ولا بـ
clock، أول ما يلمس الصفر بنفّذ أمر التصفير، هذه
باختصار الـ asynchronous clear، هذا العداد اللي
موجود في المثال هذا من نوع asynchronous، إيش
يعني من نوع asynchronous؟ يعني أول ما يلمس الصفر
هيصفّر النتيجة بدون ما يستنى الـ clock، ما ننساش
المعلومة هذه، لأن هذه فيها أسئلة كتير ممكن أنا أجي
بكرا في الامتحان أسألك، أقول لك أنا بدي أغيّرها، بدي
أخليها synchronous، وأديك معلومات عنها، فبنميّز
الآن هي asynchronous، بتلمس الصفر بتصفّر على طول،
ما بتستناش clock، طيب خلّوني أكمل باقي الأسلاك، C out هذا
اللي زيه زي الـ Y قبل شوية، هذا كل ما يوصل العدد 15
بيطلع واحد، وقلنا سبب وجوده، وسبب وجوده، لو بدنا نشبِك
عددين مع بعض، إن الثاني يعدّ كل ما الأول يخلص 15
عدّة، فده واتكلمنا عن هذا الـ C out اللي هو الـ Y في
المثال اللي قبل شوية، طيب الآن ضلّ السلكين هدول
السلكين هدول، واحد اسمه load، ليش الـ load؟ لأنه لو
أنا أجى على بالي أحمّل العداد، بدي أعدّ من خمسة مثلاً،
مش بدي أروح أكتب رقم خمسة هَنا، مش بدي أحمّله، مش بدي
أخزّنه جوا، طب كيف أخزّنه جوا؟ لازم أعطي أمر loading
يعني لازم أقول له يا load واحد عشان يمسك الخمسة
ويلزقها جوا، أما بدون الـ load على الفاضي ما تنكتبش، إذا
أجيت ما بدي أكتب أرقام من خلال هذا السلك اللي
بنسميه load، طب السؤال هذا الـ load من نوع
synchronous ولا asynchronous؟ اللي موجود في الرسم
هنا، طبعاً لو أنا قلت لكم synchronous load، يعني مش
هيعمل تحميل الخمسة جوا إلا لما تيجي الـ clock
rising، لو قلت لكم asynchronous load، معناه أول ما
يلمس السلك الخمسة بتكون كتبت جوا، الآن هذا اللي
موجود عندي من نوع synchronous، إيش يعني synchronous؟
يعني الخمسة مش هتفوت حتى لو أنتَ حطيت الـ load إلا
لما يجي الـ rising، load بواحد مع rising أَجَت بيصير
يُكتب المعلومة جوا، فهذا بنسميه synchronous load، طيب
إيش ضال عندي سلك آخر لازم أعرف معناته؟ count، إيش
يعني count؟ يعني لو أنا بدي العداد يعدّ، يعني بتيجي
الـ pulse أَكْثَر على رجل بخمسة، بدي إياه يصير ستة، بدي
إياه يصير بعد الستة سبعة، بعد السبعة ثمانية، فلو أنا
بدي إياه يعدّ ما يقفش، بخلّي الـ count one، طب لو أنا
ما حطّيتش الـ count one، حطّيت الـ count zero، وصرت أعطي
clock pulses، بثبت، بظلّ على الخمسة خمسة خمسة خمسة
فأنتم أحرار، الآن هو أَدَّاكُم ثلاث أسلاك control مهمة،
أَدَّاكُم حاجة اسمها clear، وأَدَّاكُم حاجة اسمها load
التحميل، وأَدَّاكُم إنه يعدّ ولا ما يعدّش، طبعاً البعض ممكن
يسألني ويقول لي: طيب لمين القوة؟ لمين الأولوية؟ يعني
أفرض أنا حطيت clear مع load، شَبَّكت الـ clear في صفر
وفي نفس اللحظة عملت الـ load في واحد، وفي نفس اللحظة
بدل العشر مش هو بعد صفر واحد اثنين تسعة المفروض
كان ييجي عشرة أنا عايز بدل العشرة إيش بدي ييجي أنا
صفر إذا نجحت بدل العشرة أخليه يكتب صفر في اللحظة
هذه بكون أنا عملت العدالة زي ما بده لأنه بيكون
صفر صفر واحد اثنين ثلاثة تسعة بدل ما يعيد عشرة
برجع صفر برجع لتسعة بدل يعيد عشرة برجع صفر مش هيك
ولا لأ؟ فإنت إذا بدك يعيد لتسعة تعالوا نطلع على
عشرة طبعا كيف العشرة بتنكتب بالـ binary 0101 طيب
مش هنا في طالع أربع أسلاك أظبط ولا لأ؟ اللي هم الـ A
node, A1, A2, A3 سؤالي لكم لو شبكنا على end gate
وشبكت هذا على inverter وشبكت الـ A node على
inverter والـ A1 مباشر والـ A2 على inverter مثلا
والـ A3 مباشر وسألتكم سؤال هذه الـ function متى بتطلع
واحد اللي على الان الشاطرين هيقولولي بتطلع واحد
بشرط تكون الـ A0 1 وتكون الـ A1 1 وتكون الـ A2 0 وتكون
الـ A3 1 إذا تحققت الأربع شروط الـ F بتطلع 1 صح ولا
لأ؟ لأن أنا كده راسم لازم تكون هذه 0 ولازم
تكون هذه 1 ولازم تكون هذه 0 ولازم تكون هذه 1
عشان تطلع هذه 1 فأنا غيرت الـ and هي إنها عند رجل
معاشرة مظبوط تطلع لي واحد أنا هيك غيرت الـ
and عند رقم عشرة تطلع لي واحد طب السؤال إيش اللي بدي
أسويه أنا عند رقم عشرة إيش هيصير لو أنا طبعا هذا
بيشتغل عند الـ zero عشان ما ننساش هذا بيشتغل عند الـ
zero الآن لو أنا حطيت inverter هنا إيش معنى الـ
inverter هنا الشاطرين هيقولولي الـ F مستحيل يطلع
صفر إلا عند العشرة بدون الـ inverter الـ F مستحيل
يطلع واحد إلا عند العشرة لكن لما بحط الـ inverter
مستحيل يطلع صفر إلا عند العشرة صح ولا لأ؟ طب لو
أجيت شبكت هذه هنا طلعوا معايا هنا تعالوا نشوف
إيش بده يصير ركزوا معايا الآن عشان نفهم القصة
بشكل سلس انتبهوا
لما يعيد صفر إيش الـ F بتكون؟ بتكون واحد إيش الـ
clear بتكون؟ بتكون واحد يعني ما فيش عملية clearing
وأنا أصفر الـ load وأحط الـ count بـ one يعني
الأولوية للـ load فلما بكون حاطط صفر ما فيش عملية
clear ليش؟ لأن الـ end هذه ما بتطلعش صفر إلا عند
العشرة فقط بتطلع صفر يعني مش هتعطي السيجنالات للـ
clear إلا عند العشرة أنا هيك صممتها تاخد من العشرة
وبالتالي بعد الصفر هيعد طبيعي واحد هيعد طبيعي وضال
ماشي لغاية تسعة طبيعي مظبوط ولا لأ؟ الآن أول ما
تصل العد على عشرة طبعا مش اللي هيصير أول ما العد
تصير عشرة هذا إيش بيصير؟ صفر على automatic مش
هتلاحظه إشي هيجي هنا إيش؟ صفر ولأنه هذا غير
متزامن هيمسح العشرة اللي جوا automatic مش هتلحق
تشوفها ويرجعها أصفار وطالما هذا رجع أصفار برجع
الصفر بتقلب لواحد كل هذا صار في لحظة إيش معناته
الكلام إنه رقم عشرة أنا ما شفتوش ليش؟ أول ما اجت
العشرة أعطى signal بـ zero الـ zero قالت له ضيع
العشرة وصفر الـ content ضيع العشرة وصفر الـ
content رجع تهدي لواحد أنا ما بتضويش صفر اللي عند
العشرة وبالتالي هيرجع العداد يعيد صفر واحد اثنين
ثلاثة أربعة خمسة ستة تسعة أول ما يوصل عشرة check بصفر كل
ما يوصل عشرة check بصفر، إذا إيش بصفر العداد معايا؟
بصفر العداد برجع من 0 لـ 9، طب العشرة إيش صار فيها؟
العشرة ما حدش شافها، ليش؟ لأنه هو فعليا أول ما جلب
عشرة الـ end هذه طلعت صفر الصفر هذا أعطى أمر للـ
clear صفر الـ content صفر الـ content يعني العشرة
جلبت رجعت أصفار طالما جلبت أصفار بطلت هذه صفر لأن
هذه بتصير صفر عند عشرة طالما جلبت العشرة وصارت
أصفار برجع هذه واحد إيش هالرجعة واحد يعني بطل فيه
أمر clear تاني خلاص وقفت وبيصير يرجع يعد صفر واحد
اثنين ثلاثة أربعة خمسة ستة سبعة ثمانية تسعة عشرة يعني
العملية هذه ما بتصيرش إلا عند العشرة فقط عند العشرة
بياخد signal صفر بصفر خلصنا برجع عيد 0 1 2 3 9
بوصل عشرة بصفر وهكذا فصرت أنا عامل عداد بيعيد من 0
إلى 9 طب واحد ممكن يسألني ويقول لي طب أنت ليش
برمجتها عند العشرة تصفر؟ ليش ما برمجتها عند
التسعة؟ يعني ليش ما أنت عملت التسعة كأنه نكتب؟
يعني ليش ما وصلت هذه وهذه بـ inverter وهذه بـ
inverter وهذه 1 وخليتها عند التسعة تعمل
clear؟ ليش ما عملتش عند التسعة؟ لأن لو عملت الكلام
عند التسعة أنا مش هشوف لو عديت تسعة ليش مش هشوف
العدد تسعة لأنه هشوف ثمانية وأول ما تيجي فعليا
التسعة مش حال حاجة أشوفها لأنه هيصفرها هيجلبها
لصفر الـ clear لأن الـ clear غير متزامن عارفين لو الـ
clear كان متزامن مستني الـ clock مستني الـ rising
كان عمل تان تسعة بس أنا عارف الـ clear أول ما بلم
الصفر بصفر الـ content ما بستناش حد وبالتالي مش هنشوف
التسعة فإذا أنا بدي إياه يعد العداد من صفر إلى تسعة
وبدي أشوف العداد لتسعة بطلع عدد زيادة بطلع على
عشرة هي اللي تعمل الـ clear وهكذا طب لو أنا بدي
أعد لـ 13 من صفر لـ 13 بطلع على 14 تعمل الـ clear
يعني دائما لما بكون عندي إشي غير متزامن خد عدد
زيادة فهمتوا مش الفكرة؟ يعني أنا بدي أعد لـ 12، من
صفر لـ 12، بتطلع لـ 13، هي اللي تعمل الـ clear، لأن
13 مش هشوفها، فإنتوا هتفكروا العداد بعدد من صفر
لـ 12 وخلصنا، فدائما في الغير متزامن، خدوا عدد
زيادة، لكن لو أنا غيرت في السؤال وقلت لـ clear
متزامن، فترضي أنا هيك عملت التعديل في السؤال، قلت
لـ clear متزامن، ساعتها أنا مش هتطلع على عشرة، لأن
لو طلعت على عشرة، هشوف العدد عد عشرة، طب أنا ما بديش
إياه يعد عشرة، إياه يعد لتسعة، في الحالة هذه إذا متزامن
يعني بستنى الـ clock يعني بستنى الـ rising ما بروحش أسوي
بقوله عند تسعة خلاص شفتوا إيش الفيصل إني أطلع على
آخر عدد في عدادي ولا أطلع عدد زيادة الفيصل هذا الـ
clear synchronous ولا asynchronous متزامن ولا لأ؟
إذا متزامن يعني بستناك خلاص أنا بدي أعداد بيعيد
من 0 إلى 9 بتطلع عند رقم 9 يعمل clear بدي أعداد من 0
إلى 12 بتطلع 12 يعمل الـ clear خلصنا ما بزيدش عدد
زيادة لو كان متزامن لو كان غير متزامن ما بستناش حد
أنا مضطر أطلع على عدد زيادة عشان يعمل الـ clear
يعني بدي أعد من 0 إلى 9 أطلعت على 10 بدي أعد من 12
بطلع 13 وهكذا فهذا الحل الأول إذا أنا علمتكم الآن
كيف نعد من 0 إلى 9 باستخدام الـ clear طب معلومة
ثانية هل أنا أحط هنا NAND ولا AND الجواب على حسب
طبيعة الـ clear إذا الـ clear بيشتغل عند الصفر بحطها
NAND عشان يطلع صفر عند العشرة فقط إذا الـ Clear
بيشتغل عند الواحد بحطها AND عشان الواحد بطلع مرة
واحدة هو اللي يعمل عملية الـ Clearing يعني في
النهاية إحنا جاوبنا سؤالين نطلع على آخر عدد تسعة
ولا نطلع على عدد زيادة عشرة الجواب بناء على هذا
الـ Clear متزامن ولا غير متزامن؟ متزامن نطلع على
تسعة غير متزامن نطلع على عشرة السؤال الثاني طب
هذه الـ AND أعملها AND ولا NAND؟ يعني أعملها بابل
ولا بدون؟ والله إذا كان الـ clear بيشتغل عند الواحد
اعملها AND إذا كان الـ clear بيشتغل عند الصفر اعملها
NAND ليش اعملها NAND؟ لأنها تصير تطلع الصفر لمرة
واحدة عند الرقم اللي أنا حددته هنا طب الـ AND إيش
بيعمل الـ AND الـ AND بيطلعها واحد لمرة واحدة عند
الرقم اللي حددته هنا فأنا فعلا بديها واحد لمرة
واحدة ولا بديها صفر لمرة واحدة على حسب الـ clear
بيشتغل عند الواحد ولا بيشتغل عند الصفر بيشتغل عند
الواحد بعملها AND بيشتغل عند الصفر بعملها NAND
طيب هذا حل بطريقة أولى هل في حل بطريقة ثانية؟ آه
الكتاب عمل حل ثاني اللي أنا بدي أشرحه الحل الثاني
بعتمد على الـ clear عفوا على الـ load تعالوا نشوف
كيف الحل الثاني تبع الـ load بدي أمسك عشان أحل الحل
الثاني الحل الثاني يعني السؤال كمان مرة.. إيش بقول
السؤال كمان مرة؟ خلي العداد اللي هنا يعد من 0 إلى
9 واستخدم في حالتك الـ load طيب كيف نشتغل؟ نفس
الفكرة أنا الـ output هيهم مظبوط ولا لأ؟ طبعا الـ
count بدي أخليه واحد عشان دائما أعد الـ clear ما بديش
أعمل clear بدي أخليه واحد الـ clock شغالة باستمرار
الآن طالما جالي load إيش الفكرة تبعتنا إنه آخر
العدد بعد ما يخلص التسعة مش المفروض بدل ما يروح
على عشرة يروح على صفر صح لأ؟ يعني المفروض أنا أعطي
إشارة بعد التسعة أعطي إشارة حمل يا load صفر
وبالتالي لازم هنا أحط رقم صفر في الـ input هدول بس
مستني اللحظة المناسبة اللي أعمل عملية loading لهذا
الصفر متى أعمله الـ loading عند التسعة ولا عند
العشرة يعني الآن ده اللي هأعيره على تسعة ولا
أعيره على عشرة على مين أعيره إنها تعطي الـ signal
تعطي الـ load قلنا قبل شوية الإجابة حسب الـ load
إذا الـ load متزامن وبيستنى clock بتطلع على آخر عدد
في عدادي أنا بدي إياه إذا الـ Load غير متزامن بأطلع على
عدد زيادة زي ما اتكلمنا قبل شوية أنا أطلعت على عدد
زيادة في الـ Clear لأن الـ Clear غير متزامن طيب
السؤال الـ Load هذا تبعنا متزامن ولا غير متزامن؟
الطريقة اللي شرحناها قبل شوية الـ Load متزامن يعني
الـ Load هيك هيك مستني الـ clock ممتاز يبقى بدي
أطلع على رقم 9 مش على 10 لأن الـ 9 هقدر أشوفها الـ
9 بتكتب هيك يا شباب هي 1001 وبالتالي كيف أعير رقم 9
بحط هذه مباشرة هذه على bubble وهذه على bubble وهذه
هيك لما بعمل واحد inverter inverter وهذا بدون
inverter هيك أضمن إن الـ signal هاي مش هتطلع واحد
إلا عند رقم 9 فقط أي رقم ثاني بتطلع صفر طيب السؤال
الثاني أعملها AND ولا NAND على حسب الـ load الـ load
بيشتغل عند الواحد ولا الصفر إذا بيشتغل عند الصفر
بنعملها NAND إذا بيشتغل عند الواحد بعملها AND
مظبوطة ولا لأ؟ الآن الـ load اتفاقنا إنه بيشتغل عند
الواحد يعني بمجرد ما ياخد واحد بنفذ عمله بيحمل
إذا بدي أعملها AND شو يعني الـ AND؟ يعني عمرها الـ F
اللي هنا ما بتطلع واحد إلا في حالة واحدة ييجي رقم
تسعة كل ما ييجي تسعة دي بتطلع واحد طب إيش بدي أعمل
عايز؟ بدي أسحب هذا السلك وأشبكه في load تعالوا 610 00:43:46,230
استخدمها وألعب في الأسلاك اللي برا بحيث أخليها
تعدّ زي ما أنا بدي، مثلاً تعدّلي من 0 ل 6، أنا حر شو
الحل، انتبهوا معايا، أول حاجة بدي تطلع على رقم
الأخير 6. هل أنا أعمل AND للسِتّة واللي وراها عد لسبعة؟
اللي بيحكمها الـ Load اللي بتتعامل معاه أو الـ Clear
اللي بتتعامل معاه من نوع متزامن ولا غير متزامن،
سواء هذا ولا هذا اللي بتتعامل معاه، لأنه في حالتين
ممكن بهذا وممكن بهذا، إذا كان غير متزامن، باستناشي
الـ Clock ممنوع تتطلع على العدد الأخيرة، لازم تتطلع على
العدد الزيادة، يعني لازم تعاير الـ AND تبعتك أو الـ
NONE تبعتك على عدد الزيادة، لأنه غير متزامن، سواء
أنت شغال على الـ Load أو شغال على الـ Clear. طيب، في
حال كان متزامن، اللي بدي أشتغل عليه الـ Load ولا
الـ Clear؟ في حال كان متزامن، ما تطلعش على السبعة،
اطلع على آخر عدد في عدّاتك، على الستّة، لأنه متزامن
ولأنك أنت بتشوفه، وبالتالي، بدك تستخدم الـ Load و
لا تستخدم الـ Clear، طالما متزامن، اطلع على آخر
عدد عندك، مش عدد زيادة. هذه أول ملاحظة. الملاحظة
الثانية، طيب، أحطّهم في AND ولا في NAND؟ على حسب
بيشتغل عند الصفر ولا عند الواحد اللي بتتعامل معاه.
إذا بيشتغل عند الصفر، الـ Load ولا الـ Clear، بدي
أعملها NAND. إذا اللي بيشتغل عند الواحد اللي
بتتعامل معاه، الـ Load ولا الـ Clear، بدي أعملها NAND
AND هي باختصار. والنقطة الأخيرة، والثالثة، أنه لو أنا
بدّي يبدأ من صفر، بدّي يبدأ من رقم محدّد: اتنين، خمسة،
ستّة، بَطل قادر تشتغل من خلال الـ Clear، ما فيش قدامه
غير طريقة واحدة، باستخدام الـ Load، وبهيك أنا بقدر
اشتغل زي ما بدّي في العدّاد هذا، وأعيره على كل حال.
أنا حأكمل الآن في الدرس، في الجزئية اللي ضايّلة، لكن
إذا أي سؤال، بتقدروا تتواصلوا معايا مباشرة، وتسألوني عن
أي نقطة مش واضحة عليكم، إن شاء الله رب العالمين. طيب،
خلّونا نتابع طبعاً،
هنا، قبل ما نتابع الكتاب، حل السؤال، تقدروا تشوفوه
براحتكم، اللي احنا حللناه على اللوحة. الكتاب زي ما
شايفين، عامله بعيد من صفر إلى تسعة، وبالطريقتين: مرة
اشتغل بالـ Clear، ومرة اشتغل بالـ Load، بتشوفوها
براحتكم، لإنه حلّيناها على اللوح. تعالوا
نشوف موضوع الـ Other Counters، وهذا إن شاء الله ربع
ثلت ساعة، قبل كتير بنخلصه. تعالوا نشوف إيش قصد الـ
Other Counters. في عندي هنا تلت أجزاء للـ Other
Counters، خليها ده موجود، وخليني أحط خلفية بيضاء
اوو بلاش بيضاء، برّاق
كويس، الـ Ring
طيب، الآن أول Counter، هذا، هرجع له، بس خليني أشوف الـ
Counter الأول. في أنا عندي Flip Flop، Flip Flop، Flip
Flop، وهاي هذا Flip Flop، خليني بس أحط خلفية بيضاء
تمام؟ وهذا دي، وهذا دي، وهذا دي، وهذا دي، أخذناها
زمان، أيام الـ Registers، إذا بتتذكروا. الآن لو أنا
عملت حاجة زي هيك، حطيتها قيمة: One، Zero، Zero، Zero،
هذا إيش بنسميه؟ وطبعاً الـ Clock كلهم إيش؟ واحد. هذا
الـ Counter بنسميه Ring Counter. كيف بيشتغل الـ Ring
Counter؟ لاحظوا أن كل المخارج أصفار، إلا واحدة،
واحدة بتكون واحد. الأول، مثل ما بدأنا، زي كده، دوسنا
بلصة، إيش حتصير؟ حتقولوا الواحد هيجي هنا، والأصفار
هنا، يعني بعد بلصة، هيك صارت. طب كمان بلصة، حتقولوا
هيك حتصير. طب كمان بلصة، هيك حتصير. كمان بلصة، هيك
حتصير. يعني إيش بتلاحظوا في هذا العداد؟ أن الواحد
ماله، قاعد بيلف، أن الواحد قاعد بينزح، كان هنا،
صار هنا، صار هنا، ها، لو بدي أكمل، ها، بعدين بترجع
هيك، طلعوا شايفين الواحد، ها هو، الواحد كان هنا، صار هنا،
رجع من الأول، صار هنا، صار هنا، صار هنا، رجع من الأول،
وهكذا. فهذا بنسميه الحلقة، أو بنسميه Ring، ليش Ring؟
لأنه قاعد الواحد بيلف على الـ Bits، يعني لو في عندي
أربعة Bits، بلاقي قاعد بيمشي على الأولى، والكلطة فيه،
بعدين بيمشي على الثانية، والكلطة فيه، بعدين بيمشي على
الثالثة، والكلطة فيه، بعدين الرابعة، والكلطة فيه، وبيعيد
وطبعاً شغله مش صعب، لأنه كلنا أخذناه قبل هيك كـ
Register، إذا بتتذكروا، أخذناها، الشكل هذا، لكن لما
يكون كل المضمون، أو كل المحتوى، أصفار، باستثناء واحدة،
واحد، هذا على طول احنا بنسميه Ring Counter، يعني شرط
الـ Ring Counter يكون كل مخارجه أصفار، إلا واحد وحيد
ضاوي، واحد، واللي هو بقعد يلف على شكل حلقة. فهذا
بنسميه Ring Counter. طيب، إيش رأيكم عامل هو Ring
Counter بالطريقة التالية هذه؟ بيقولوا: هل هذه الطريقة
مظبوطة لإنا نعمل Ring Counter ولا لأ؟ هيا شوفوا
الرسم، هاي هو، بيقول إنه هذا عبارة عن Ring Counter.
طبعاً أنا رسمته قبل شوية بالـ Flip Flop، زي ما شايفين،
بالـ D. هو الآن رسمه بـ Decoder، وعداد. تعالوا نشوف
إيش عامل. الآن هذا Two Bit Counter، إيش أنا Two Bit
Counter؟ يعني بيعيد: صفر، واحد، اثنين، وثلاثة، وبرجع بكرّر نفسه، لإنه
Two Bit Binary Counter: صفر، واحد، اثنين، ثلاثة، صفر، واحد، اثنين، ثلاثة. هذا الـ Decoder،
الـ Decoder احنا عارفينه، الـ Decoder أحد ما خرجوا
واحد، والباقية أصفار. فتعالوا نشوف، لما كان أول ما
هذا عدّاد صفر، اثنين. يعني لما كان عدّاد صفر، إيش كان ضاوي؟ هذا
ضاوي، والباقي أصفار. بعد الصفر، إيش بتيجي العداد؟ مش
بتيجي العداد واحد، إيش يعني بتيجي واحد؟ مش بتيجي واحد
يعني إيش بيصير؟ يعني بيصير هذا طافي، وهذا ضاوي، لأن
هي كانت Decoder. مش هيك بتصير؟ لما بيصير واحد، بضوي
واحد، والباقي الطافيين. طب لما أنا عدد عدّ للاثنين، مش
بيصير كاتب هنا اثنين، إيش أنا كاتب هنا اثنين؟ يعني
صار الثاني ضاوي، والباقي طافيين. لما أنا عدّ لتلاتة،
مش بيصير هنا طلع تلاتة، واحد، والباقي أطفاء؟ ولا لأ؟
إذا لحظة، كل ما هذا بيعدّ على الـ Decoder، صفر، واحد،
اثنين، صفر، واحد، اثنين، إيش بيصير في
اللمبات، بتضوي هاي، وراها هاي، وراها هاي، وراها هاي،
بترجع هاي، وراها هاي، وراها هاي، طول ما العداد قاعد
بيلف، طول ما الـ Decoder، واحد، والباقي طافيين، واحد،
والباقي طافيين، واحد، والباقي طافيين، يعني باختصار، هذه
الرسمة تكافئ هذه الرسمة، أنه خلاص برضه Ring Counter.
ليش أنا عرفت أنه Ring Counter؟ لأن الـ Decoder، مخرج
واحد، والباقين أصفار، وكل مرة كان مثلاً الواحد في
الأول هنا، بعدين صار هنا، بعدين صار هنا، بعدين صار
هنا، لأن كل مرة في عداد قاعد تحت بيشتغل. أول شيء أنت
صفر، بعدين الـ Decoder بيعلّمنا على واحد، بعدين بيعلّمنا
على اثنين، بعدين بيعلّمنا على تلاتة، بعدين برجع على صفر،
بعدين على واحد، بعدين على اثنين، بعدين على تلاتة. فالـ
Conclusion، أن لو طلعت على أربع لمبات، برجع زي
الحلقة، وبالتالي هذه الرسمة أيضاً تعتبر Ring Counter.
طيب، تعالوا نشوف الشغلة الثانية، الشغلة الثانية،
بدي ارجع للـ Ring، وبدي أمسح، بدي أعمل تعديل طفيف،
يعني بدي أعتبر هذه صفر، وأطلع معاه إيش صار شبكته
من تحت، من معكوس اللي هنا، هذا الآن صار اسمه Johnson
Counter. تعالوا نشوف كيف الـ Johnson Counter بيشتغل.
لو كنا حاطين أربعة أصفار جواته، الـ Johnson Counter
إيش حيعمل؟ طبعاً هنا بناخد إحنا نعمل Feeding لعكس
آخر واحد. إيش عكس الصفر واحد؟ يعني اللي حيفوت من
الأول الآن إيش؟ واحد، وحينزلوا هدول. يعني بعد كل
بلصة في الـ Johnson Counter حيصير هيك. كمان بلصة،
الصفر هذا اللي حيعكسه واحد. بعد كمان Johnson
Counter حيصير هيك. كمان بلصة، الـ صفر اللي صار طبعاً
صار هنا داخل واحدين، وهنا صفرين. هاي لو بدنا نمشي
بالترتيب. لما أنا بسويه، حيصير 1100. الآن مع بلصة
جديدة، إيش حيفوت من الأول؟ عكس الصفر، فهيفوت واحد،
ثالث، فبتصير 1110. يعني بيصير إشارة وصلت هنا، وهذا
الصفر انزاح اللي كان هنا. الآن في الـ Pulse الرابع، الـ
Zero حيدخل عكسه واحد. الآن ما يحصل داخل الـ Flip Flop
ده حيصير أربعة واحد. الآن ما يحصل حيصير يفوت عكس
الواحد حيصير يفوت صفر، إذا حتصير هيك، وبعدين هيك، كل
مرة عكس هذا اللي بيفوت. بعدين إيش برجع يكرّر نفسه.
هذه الطريقة بنسميها Johnson Counter، زي ما شايفين،
بيبدأ بأربعة أصفار، لأن الأخير صفر، بيدخل من الأول
عكسه واحد، الأخير صفر، بيدخل من الأول عكسه واحد،
الأخير صفر، بيدخل من الأول عكسه واحد، صاروا كلهم
أربعة واحد. داخل الآن عكسه الواحد، صفر، بيدخل من الأول
عكسه الواحد، صفر، بيدخل من الأول. فإذا ومشينا بتلاقيها
زي هيك. طيب، لو تلاتة بتّات: هاي 000، بتصير 100، بتصير
110، بتصير 111، بتصير إيش؟ One One، sorry، بيصير Zero
One One، بعدين Zero Zero One، وبعدين بتعيد إيش
نفسها، وهكذا. فهذا بنسميه الـ Johnson Counter. طبعاً
عدد الـ States في الـ Johnson Counter بيساوي عدد
الـ Flip Flops × 2. يعني لو أنا عندي تلاتة
Flip Flop، × 2، بيطلع ستّة: هي واحد،
اثنين، تلاتة، أربعة، خمسة، ستّة، حالات مختلفة بيعملوا لها.
تعالوا، ما كنا شغالين على أربعة Flip Flop، حيعمل لي
المفروض ثمانية States مختلفين، لأنه أربعة × 2،
هيهم: واحد، اثنين، تلاتة، أربعة، خمسة، ستة، سبعة، ثمانية،
مختلفين، وبتوقع لو كان عندي خمسة Flip Flops،
حيعمل لي كم States؟ عشرة مختلفين. وين هم؟ هيهم، لو كنت
تشوف، لو عندي خمسة، حتصير: 10000، 11000، 11100، 11110،
11111، وحنكمل الخمسة التانية هاي:
01111، 00111، 00011، 00001، 00000،
وبعدين إيش بيعيد نفسه: واحد، اثنين، تلاتة، أربعة، خمسة، ستة، سبعة، ثمانية، تسعة، عشرة،
حالات. إذا، لو عرفنا عدد الـ Bits، على طول الـ Johnson
Counter، بنعرف كم الحالات اللي هي عندهم. الآن آخر نقطة
ضايّلة علينا، عشان نختم الـ Chapter، تمام، إن شاء الله.
النقطة الأخيرة، وهذه نقطة في غاية الأهمية الصراحة،
و سهلة.
بدنا نصمم عداد، بعد
زي ما شايفينها. أنا خليني الحين بس، أنا أمسك اللوح.
طب، احنا خد
اتنين أربعة خمسة ستة هي صممتها وعملتها وجهزتها
على فرض صار noise لأي سبب من الأسباب صار
distortion صار خطأ، انتقلنا بالخطأ لدائرة ثلاثة
بالخطأ بسبب noise تشويش أي شيء صار في الـ circuit
فبدلا يلف هدول طلع برا على ثلاثة، السؤال الآن من
ثلاثة، وأين بدنا نروح؟ تعالوا نشوف خريطة الـ circuit
اللي أنا صممتها، الثلاثة أنا إيش كانت بأجبالها Xات؟
طب هي فعليا ما بنروح على حسب الـ Xات هذه، إذا دخلت
في الاختصار، وأنت بتختار في الـ map يعني أنت اعتبرتها
واحد، صح ولا لأ؟ إذا ما دخلتش في الاختصار في الـ map
يعني أنت اعتبرتها صفر، لأنك أنت الـ X في لحظة الـ
design وأنت بتصمم الدائرة تبعتك، كل X لازم تحدد
قيمته يا بواحد يا بصفر اللي بتاخده في الاختصارات
تبعتك بتحدده واحد، واللي بتاخدهش في الاختصار بتحدده
صفر، طبعا احنا الآن صممنا الدائرة وخلصنا، مش عارفين
إيش فرضناهم، لكن أنا بدّي أفترض جدلا أن أنت كنت
مدخلهم في الاختصارات، يعني كانت هذه رايحة واحد وهذه
واحد بالصدفة في الاختصارات وهذه واحد، هذا شو معناه؟
أن الدائرة الثلاثة هتنتقل على دائرة سبعة لأن
الثلاثة Xات دخلوا في اختصار، فالمفروض الثلاثة
هتروح على مين؟ على دائرة سبعة اللي هي أصلا مش في
الـ system طيب، الآن وصلنا سبعة، السبعة أين هتروح؟
هتقول نفس الفكرة، السبعة على حسب Xاتها، أنت أخدتهم
في الاختصارات ولا لا؟ بالصدفة أخذنا جدلا
أن هذا واحد، هذا واحد، هذا صفر في الاختصارات،
تمام؟ أو في الـ Karnaugh map، إيش يعني السبعة أين
تترجع؟ على ثلاثة، هنا إيش الخطأ الخطير اللي صار؟ أن
دائرتي كانت شغالة سليمة، الصفر بروح على واحد زي ما
أنا معلمها، لسبب ما، لخطأ ما، لـ noise معينة، لـ
distortion معينة، طلع على ثلاثة، الثلاثة ودّته على
سبعة، السبعة رجعته على ثلاثة، الثلاثة ودّته على سبعة،
خلاص خرب الـ system ككل عندي، ليش خرب الـ system ككل؟
لأنه بالصدفة الثلاثة اللي ما كانت موجودة ودّتني على
حالة برضه ما كانت موجودة، والسبعة رجعتني على الحالة
مش موجودة، فصار الـ system اللي أنا مصممه يشتغل هان
صار distortion خفيف، خطأ خفيف صار، طلع برا الـ system
هان، صار خلص خرب كل النظام، هنا صار يعمل شيء جديد
ما بدّيش إياه، طب قالولي شو الحل الآن؟ شو الحل؟ كيف
نتغلب على هذه المشكلة؟ قال في حاجة اسمها self
correction، تصليح ذاتي، أنه تصليح الدائرة نفسها
بنفسها، كيف هذا التصليح الذاتي بيصير؟ أنك تيجي تعمل
حسابك للخطأ هذا، كيف يعني؟ يعني مثلا لو أنا شغال، و
أنا شغال مثلا، اجيت بدل ما حطيت الـ X هنا عند الحالة
اللي مش موجودة، ثلاثة مثلا، مش ثلاثة كانت مش موجودة،
ما حطيتش X، حطيت ثلاثة أصفار هنا، إيش بيصير؟ هنا بيصير
تصحيح ذاتي، لو بالصدفة صار خطأ وروحنا على ثلاثة،
ثلاثة، أنا قاعد قايللها .. إيش قايللها؟ قايللها يا
ثلاثة غصب عنك، إذا حد وصلك، روحي لصفر، وبالتالي ثلاثة
هتنفذ الأمر، فلو صرنا بالخطأ رايحين لثلاثة، الثلاثة
هترجعني وين؟ على الصفر، والصفر عاد بيكمل الدائرة
المظبوطة، يعني لو طلعنا بالغلط على ثلاثة، أنا عامل
احتياطاتي وعامل حساباتي، وجاي لأ ثلاثة، مكانك ثلاث
أصفار، طب مش ضرورة ثلاث أصفار، ممكن أي دائرة من وين
من الدوائر المرتبطة اللي في الـ system عشان يرجع
للنظام، فهذا احنا بنسميه تصليح ذاتي، تصليح ذاتي أنه
لو راح لدائرة مش من الموجودات، أنا بطلب منه يرجع
بشكل واضح وصريح لأصفار، طيب هنا شو الإيجابية وشو
السلبية لما عملت هيك؟ الإيجابية أنه أنا ضمنت لو صار
في خطأ يرجع للـ system، السلبية أنا خسرت التبسيط، مش
هذا لما كنت أنا أحط Xات، معناها في إمكانية أبسط
الدائرة تبعتي لدائرة أصغر، وتوفر عليّ في التكاليف،
وتوفر عليّ في كل شيء، فلما أنا حددت المكان اللي
أروحله، أنا عمليا خسرت التبسيط بتاع الدائرة، فممكن
تكلفني فلوس أكثر، ممكن تكلفني cost أكثر، لكن إيش
كسبت؟ الإيجابية أنه في حال صار الخطأ الدائرة بتصلح
نفسها، طب السؤال المهم الآن، طب أنا في الآخر كـ
engineer إيش أعمل؟ يعني أنا مطلوب مني أصمم دائرة،
بمين اهتم؟ اهتم أن دائرتي تكون أصغر ما يمكن، ولو
صار خطأ تروح الدائرة وتخرب ولا لأ؟ أعمل حساباتي، و
أدفع شوية فلوس زيادة وأخلّي الدائرة تصلح نفسها، طبعا
الإجابة على حسب الـ application تبعك، عندك تحط
الدائرة تبعتك، يعني على سبيل المثال بدّي أحط الدائرة
تبعتي في أعماق المحيطات مثلا، بدّي أحطها في هوائي
عالي في آخر الدنيا، فوق أماكن الوصول هنا مش سهلة،
صعبة جدا، وبالتالي أنا لأ، بقول من البداية أخسر
الفلوس الزيادة، وأصمم دائرة تصلح نفسها، وأروح أو
أديها لدّيك المكان البعيد اللي أنا ما بقدرش أوصله،
لأنه لو صار خطأ هناك واضطريت أطلع الدائرة، اللي
هيكلفني فلوس كتير أكثر بكتير، فعشان هيك الـ conclusion
تبعنا، إذا دائرتنا بنحطها في أماكن صعبة الوصول،
أماكن بعيدة جدا، لأ والله بزيادة بدفع عليها فلوس
شوية زيادة، وإيش يصير معايا؟ تصحيح ذاتي للدائرة من
نفسها، لنفسها، وهيك بنشتريها، لكن لو أنا حاطط الدائرة
متوفر الوصول إليها، يعني جنبي، ساعة أنا مصمّمها في
البيت، في الدكان، هان هان هان، سهلة الوصول، لأ والله
بروحي عليها، بسوي، بصممها، وبحط Xات، وبصغّرها أصغر ما
يمكن، ووقت ما يصير فيها خطأ بأخذها وبأعملها restart،
إيش يعني قلتلها restart؟ يعني برجع الـ system يشتغل
زي ما أنت عامله من جديد، فما عندي مشكلة، فهي المبدأ،
إذا أنت بدّك تعمل self correction ولا لا، على حسب
الدائرة تبعتي، وأين بدها تروح؟ المكان اللي بتقعد
فيه سهل الوصول، لأ، بأستفيد بحط Xات، وبستفيد بصغّر
دائرتي أكثر ما يمكن، وبتكون التكلفة قليلة جدا،
ووقت ما يصير فيها عطل، ما أنا بتدّولها على طول،
وبأعملها restart بتظبط، لكن لو في مكان بعيد، مش قادر
أروح أعمله restart، مش قادر أوصله، لأ، من الأول بأخسر
شوية فلوس زيادة، وبأعمل correction، إيش الـ self
correction يعني؟ كل دائرة مش موجودة في الـ system
تبعك، ما تحطّش بأجبالها Xات، لأن الـ Xات ما بتعرفش
إيش هتصير في المستقبل، واحد ولا صفر، بناء على
التبسيط، ما تحطّش Xات، حط بالضبط وين أنت بدّك إياها ترجع
في حالة الخطأ، أنا فرضت في سؤالي أن لو راح بالغلط
على ثلاثة يرجع لصفر، ولو راح بالغلط على سبعة،
لأن هو عداد مثلا، ممكن أرجعه لصفر، هذه الفرضية صح،
ما في عندي مشكلة، المهم أرجعه للـ system، طبعا
الكتاب .. الكتاب إيش عمل؟ الكتاب رجع السبعة لصفر،
ورجع الثلاثة لأربعة، ليش الكتاب عمل هيك؟ لأنه
الكتاب افترض أن هذا عدد بعد صفر، واحد، اتنين، ووصل
ثلاثة بالغلط، قال لك أقرب نقطة يرجع لها أربعة، بصير
يعني ما عندي مشكلة، صار ثلاثة راح لأربعة، قال لك لو
صار غلط وروحنا على سبعة، الـ 7 أقرب نقطة يرجع لها
مثلا صفر، ما منع، المهم المبدأ أنه لازم الرجوع يكون
على أحد دوائر النظام الموجودة، عند اللي بدّي إياها، والـ
correction بيسير للدوائر اللي مش موجودة في الـ
system، يعني 3 مش موجودة في الـ system، 7 مش موجودة
في الـ system، لازم أقرّر 3 أين تروح و7 أين تروح،
فأنا برجع الـ 3 لأي دائرة في الـ system، وبرجع الـ
7 لأي دائرة في الـ system، بعض الناس بيقولوا احنا
خلاص، بنحب يرجع من الأول دائما، بيصير، بعض الناس
بيقولوا ما هو عادي تخلي الـ 3 ترجع للـ 4 أو الـ 7 ترجع
للصفر، بيصير، المهم الفكرة، أنت حر وأنت رجع، أما هي
لازم تاخد بالك منها، فالكتاب الآن، عاد السؤال بالـ
correction، شايفين الكتاب إيش عامل correction؟ هي
قال هذه الدائرة اللي مش موجودة، في حال أي واحد
وصلها بخطأ، لازم أرجعها لوين؟ لصفر، هيك الكتاب عمل، إذا
هنا هشطب الثلاثة Xات، هشطبهم، وأرجع ثلاثة أصفار، لأن
بدّي أعمل self correction، والحالة الثلاثة اللي مش
في النظام برضه حأحط لها اعتبار، وقال بدّي أرجعها على
أربعة، فرجعت قدام ثلاثة، شان الـ Xات، وحطّ إيش؟ أربعة،
وبهيك أنا عملت self correction، ما بدّك تعمل self
correction؟ ما بدنا self correction، بمسح هدول، بحط
هنا except، وبحط هنا except، خلاص هيك أنا ما عملتش
self correction، هيك لو صار في خطأ يا عالم، وأين
نروح؟ طالما except مش معروف، وأين نروح مش معروف، و
أين نروح، لكن except أن دائرتي صارت إيش؟ أصغر، و
تكلفة أقل، لكن ما عملتلها self correction، بدّك تعملها
self correction، بدّك تحدد، في صار الخطأ، وأين نروح، و
نخلّص، هذه باختصار، طيب هيك احنا المساق أو الـ chapter
خلص إن شاء الله، بالنسبة لـ chapter 7، الـ chapter 7
إن شاء الله هنستكمله، لكن هيكون فيه تنزيلات فيه
تسجيلات قديمة شوية، عملتلها أنا شوية منتاج، وعليت
الصوت فيها، ف إن شاء الله في chapter 7 هو ما فيه غير
محاضرتين، اتنين ساعة، ساعة، فهنزل لكم التسجيلات هذه
القديمة، تحضروها، وأي سؤال برضه أنا موجود online،
تقدروا تسألوني، بنتمنالكوا إن شاء الله كل التوفيق،
ويعطيكم الصحة والعافية