بسم الله الرحمن الرحيم اليوم إن شاء الله هنستكمل
يمكن آخر المحاضرة السابقة أخذنا ال-ripple counter
أو asynchronous counter كان يعد من 0 إلى 15، و
أثبتنا أنه يعد من 0 إلى 15 من خلال ال-timing
diagram. اليوم إن شاء الله هنستكمل في موضوع
synchronous counters. طبعا ال-ripple BCD مش مطلوب
فلذلك سأدخل أنا مباشرة إن شاء الله بال-synchronous
counter. لو جئنا نطلع أنا هنا على اللوح، في موجود
عندي counter. دعونا نشوف من الكتاب أوضح، كما تشاهدون
في عندي counter، ولو طلعنا على ال-clock، سألاحظ أن
كل ال-clocks متشابكة مع بعض، ليس مثل ال-ripple
ال-ripple كان ما به؟ السابق clock لللاحق السابق clock
لللاحق، لكن هنا طلعوا في ال-clock. تشاهدون ال-clock
لهذه ال-flip-flop، و هذه ال-flip-flop، و
هذه ال-flip-flop. واحد وبالتالي هذا ال-counter الذي
موجود عندي هو عبارة عن synchronous counter. طيب
السؤال: نريد معرفة ما الذي يعده هذا ال-counter الموجود؟
طبعا، لمعرفة ما الذي يعده، قلنا إن أفضل طريقة هي استخدام
ال-timing diagram. طيب، السؤال: كم نبضة (pulse) سأستخدم؟
لعرف هذا العداد؟ طالما عددهم واحد، اثنان، ثلاثة،
أربعة، معناها أقصى عدد من العدّات الممكن أن يصل إليها هو ستة
عشر، وبالتالي طالما عندي أنا 16 عدّة، سأرسم في
ال-clock pulses، أقل شيء 16 clock pulse. طبعا هو
ممكن أن ينتهي قبل ذلك، طالما أن العدد قد ينتهي في أقل من 16
على حسب نوعه، لكن في أسوأ الاحتمالات، يجب أن يعد الـ 16
حالة مختلفة، وبالتالي يجب أن أستطيع أن أرى كل العدادات
هذا لِهذَا السبب. ما سنفعله مثل المحاضرة السابقة،
الآن، هذا سؤال: ماذا سيحدث؟ لأعرف ماذا سيحدث،
يجب أن أقوم بعمل timing diagram. لعمل ال-timing
diagram، سأرسم على اللوح على الأقل ستة عشر
clock pulses: واحد، اثنان، ثلاثة، أربعة، خمسة، ستة، سبعة،
ثمانية، تسعة، عشرة، أحد عشر، اثني عشر، ثلاثة عشر،
أربعة عشر، خمسة عشر، ستة عشر، سبعة عشر، وهي واحدة زيادة
من هنا. طبعا، لماذا رسمت على الأقل 16… 17؟ لأن
أفترض الأسوأ: أن هذا العداد يمر بكل الحالات الممكنة
التي تمر به، وبالتالي قلت هذه ستعطيني 16 حالة
مختلفة. فلنَجرّب ونعمل على الأقل 16… 17 clock
pulses، لتوضيح المعنى. طيب، الآن، كيف سنحل نحن؟
قلنا في المرة الماضية في ال-ripple، وسنكرر نفس
الكلام هنا في ال-synchronous: إذا استطعنا معرفة
قيمة ال-A0، وقيمة ال-A1، وقيمة ال-A2، وقيمة
ال-A3، وهي مخارج هذه ال-flip-flops، وإذا
استطعنا معرفة ما تساويه هذه المخارج على مدار 17-18
نبضة، هذا يعني أننا نستطيع معرفة ما يعده العداد. لأننا أول
ما يكرر العداد نفسه، نصبح نعرف ما يعده عدادنا
إذن، المطلوب منا الآن أن نحاول حساب ال-A0، نحسب
ال-A1، نحسب ال-A2، نحسب ال-A3. طيب، لحساب ال-
A0، يجب أن ننظر إلى ال-flip-flop الخاص بها، و
فلنكبّر قليلا، لنركز فقط على ال-flip-flop
الأول، لأجد قيمة ال-A0 فيه. ال-clock
طيب، أين أنظر؟ أنظر عند ال-clock. طالما لا يوجد bubble،
سأنظر عند ال-rising edge. لهذا السبب، ماذا سأفعل؟
سأنزل من لحظات القراءة التي فيها هذا ال-flip-flop
flip-flop، سأنظر إلى ال-J و ال-K، تمام، لتحديد القيمة
الجديدة لـ A0. لهذا السبب سأذهب إلى كل
rising edge في ال-clock، وأسقط منه خطا عموديا. إذا وجدت شيئا عند الـ
rising edge الأول، وال rising edge الذي يليه، وهكذا لكل
rising edge. طبعا، قد يسأل البعض: لماذا أسقطت الخط
إلى النهاية أسفل ال-rising edge؟ لماذا؟ لأن هذه ال-clock هي
لجميع ال-flip-flops، نفس ال-clock، ليس مثل الـ
ripple. هنا ال-clock واحدة للجميع، يعني كل ال-flip-flops
الأربعة في الرسمة، ستعمل في نفس الـ
rising edge. واضح لماذا؟ بينما في المثال الذي أخذناه في
المحاضرة السابقة، ال-ripple، كان لكل واحد clock
خاصة به، وبالتالي كنت أنظر إلى ال-clock الخاصة به،
وأنزل من ال-falling edge أو ال-rising edge حسب السؤال. هنا
لا، هنا ال-clock واحدة للجميع، وبالتالي أنا وفّرت
وقتًا وجهدًا، لأني أعرف أن هذا synchronous، وأعرف أن هذا
هو ال-clock للجميع، فذهبت، ونزلت من كل rising edge للجميع
لأستطيع حلها. الرسمة أيضا لـ A0، و
ال-A1، وال-A2، وال-A3، وال-A4. سأنزل من كل
rising edge، كما تشاهدون. خط
طيب، بعد أن أسقطنا خطوط ال-rising edges، الآن سنبدأ
الحل. كيف سنبدأ الحل؟ أول ما سنبدأ ال-A0، سنعطيها
قيمة ابتدائية. قلنا من قبل: إذا لم…
لم يُحدد لنا القيمة الابتدائية، نفترضها أصفار، لكي
أقول الرقم الذي بدأت العد منه، وهو الأصفار
وبالتالي، لنبدأ من صفر، وسنتوقف عند أول
rising edge. ماذا سأفعل عند أول rising edge؟ سأقرأ قيمة ال-J
وقيمة ال-K، لأعرف ما هي قيمة ال-A0 الجديدة. طبعا،
إذا كانت ال-J وال-K أصفار، لا تغيير. قلنا من قبل: إذا
كان هناك 10، أو reset، على حسب
الـJ هو الواحد، أو الـK هو الواحد. واحد عند الـK
reset، واحد عند الـJ set. لننسى المعلومات الأساسية
عن ال-flip-flop. الآن، تعالوا لنبدأ العمل. لقد وصلت
إلى أول rising edge، تمام. سأرى ما هي قيمة ال-count
enable. طبعا، لو… لو كانت قيمة ال-count enable صفر،
ستكون عندكم ال-J وال-K صفر صفر، سيكون لا تغيير، الـ
A0 لن يتغير، وبالتالي طالما ال-A0 لن يتغير،
لن يعد. لهذا السبب، لاحظوا التسمية، سمّيت…
سمّيت count enable، يعني إذا أردت أن يعد، تفضل،
ضع واحد، لكي يبدأ العداد بالعد ويشغل، لكن إذا وضعت
ال-count enable بصفر، سنلاحظ أن ال-A0 وال-A1 والـ
A2 وال-A3 ستبقى صفار، وتظل صفار حتى النهاية، يعني
العدّ صفر، لم يتغيّر. لم يتغيّر؟ لأن كل J و K، كل
J و K في الأربعة ستكون قيمتها 00000، No change، No
change، No change، وبالتالي لن أرى أي عدّ. الآن،
لكي أجعله يعد بشكل صحيح، ولكي أعرف ما الذي يعده، أنا مضطر
لجعل ال-count enable واحد. أول ما يصبح الـ
count enable واحد، الآن، من الممكن أن يعدّ العداد،
ومن الممكن أن أعرف ما الذي يعده. وبالتالي، نعود إلى ال-A0،
نحلها. الآن، عندما يكون هنا ال-count enable واحد، طبعا،
أنا أتحدث عند أول rising edge، لا ننسى. عند أول rising edge،
أتحدث عند أول rising edge، ال-count enable one، وسأثبته
على one، لكي يظلّ يعدّ العداد، ويعرف ما يعده. عندما يكون
هنا واحد وهنا واحد، الكل سيقول لي: هذا يعني تغيير،
يعني قلب قيمة ال-A0، لأن واحد وواحد في الـ
JK، يعني تغيير، يعني قلب، وبالتالي ال-A0
سأقلبها، وأمشي على واحد، حتى ال-rising edge الذي
يليه. طيب، سأعود إلى ال-rising edge الذي يليه، سأرى مرة أخرى
الـJK. طيب، أنا ثابتة ال-count enabled بـ one، لماذا؟
ثابتته بـ one، لمعرفة أنه يعد، لرؤية ما الذي يعده،
فسأجد one one، ماذا يعني one one؟ قلنا قلب،
فـ A0 ستنقلب، ستعود من واحد إلى صفر، وأمشي إلى
الـrising edge الذي يليه. عند ال-rising edge الذي يليه، أجد نفس
الكلام: واحد واحد، واحد واحد. في كل rising edge، أجد الـ
JK واحد واحد، يعني في كل rising edge، ماذا أفعل؟ أقلب
القيمة. وبالتالي تصبح هكذا حتى النهاية. طبعا، الآن، أنا
أحللها حتى النهاية.
تمام. لماذا أقلب في كل مرة؟ لأن عند كل rising edge، JK 11
والمعروف، JK 11 تعني قلب قيمة الـA
لأن تصبح الـA الجديدة. وبالتالي، إذا كانت صفر،
نقلبها إلى واحد، وإذا كانت واحد، تصبح صفر، وبالتالي
تلاحظون أننا حللنا الـA0 على مدار الفترة
الكلّ: 16 و 17 clock pulses. طيب، الآن سنفعل نفس
الشيء مع A1، سنرى ما هو الـJ والـK لـA1 عند
لحظات ال-rising edge، لأعرف ما هي القيمة الجديدة، ونحل
الـA1 حتى النهاية. تعالوا لننظر إلى الـA1، وخذوا هنا
ملاحظة صغيرة: انظروا إلى ما في الكتاب قليلاً، لتَصغِير
الرسمة. انظروا معي إلى الـJ و الـK لـA1، ال-flip-flop
الثاني. ما هي قيمة الـJ أو الـK؟ ستقولون قيمة
الـJ أو الـK هي حاصل ضرب الـcount enable بقيمة الـ
A0. هكذا تعمل الدائرة. أيضا، لنرى ما بعد ذلك.
وليس واحد فقط، سنقول: لماذا مضروبة هكذا؟ لاحظوا هي الـA
node مضروبة بال-count enable. طيب، إذا كانت نتيجة الضرب
صفر، ما هما الـJ والـK؟ صفر صفر، يعني لا تغيير، يعني
بمعنى آخر يا شباب، إذا كان ال-count enable، تخيلوا الـ
count enable صفر، إذا كان ال-count enable صفر، لأن هذه
AND gate، صفر في أي شيء، ستكون النتيجة من AND gate
صفر، وبالتالي سيصبح الـJ والـK بلا معنى، كما
قلنا من قبل، صفرين، يعني لا تغيير، يعني مرة أخرى،
طالما أن ال-count enable صفر، لا شيء يعدّ ولا
واحد. الـJ والـK دائما الـJ والـK
ستكون أصفار، لن تتغيّر للجميع. حتى لاحظوا، تعالوا،
الـflip-flop الثالث. اعتبروا ال-count enable صفر،
أنا أريد دراسة حالة ال-count enable صفر، عندما
يكون ال-count enable صفر، هذه الـAND ستكون صفر،
صحيح؟ وهذه الـAND هنا ستكون صفر، لأنها مضروبة
في الصفر القادم من هنا. والآن هذا سيصبح صفر، وهذا
سيصبح صفر، لأنها جميعها مضروبة في ال-count enable
وبالتالي، كل الـJ والـK، كل الـJ والـK للأربعة
التي عندي، ستكون صفرا، يعني لا تغيير، يعني الآن، نحن
متفقون، لكي يعد هذا العداد، يجب أن يكون ال-count enable
دائما واحد. سنثبته دائما واحد، الـcount enable،
ليرى كيف يعد. الآن، نعود ثانية إلى ال-flip-flop
الذي أريده أن أحله الآن، الـA1، هذا الذي أريده أن أحله، عند
لحظات الـrising edge. ما هي قيمة الـJ والـK؟ ستقولون
قيمة الـJ والـK هي حاصل ضرب مع ال-count enable،
وهو واحد، يعني سنضرب A0 في واحد.
النتيجة التي ستظهر، إذا كانت صفر، لا تغيير. إذا كانت النتيجة
التي ستظهر من حاصل الضرب واحد، ستحدث تغيير، لأن الـJ
والـK متصلان مع بعض. طالما الـJ والـK متصلان مع
بعض، تصبح كـT flip-flop، يا تغيير يا
تغيير، لكن دعوني أعود إلى ال
وK في الـ flip-flop الثالث المعادلة عبارة عن and
gate مضروبة في مين؟ طلعوا معايا، بدنا نضرب A1 في
القيمة اللي جاية من الـ and gate اللي فوق، إيش؟
القيمة اللي جاية من الـ and gate اللي فوق، A0 في 1
يعني المعادلة هنا عبارة عن إيش؟ هنا واحد في A node
في A2. تنسوش المعادلة بتاعة الـ J، واحد في A node في
A1، تمام؟ من وين أجوا هدول؟ هيو، الواحد مضروب في الـ
A node، طلعت النتيجة هنا مضروبة كمان مرة في الـ A1
فصفت معايا الخلاصة في الـ J والـ K الثالث، واحد في A
node في A1. الآن خلونا نعمل خلفية بيضاء عشان تشوفوا
الرسم على اللوح، ثواني.
Print، تمام. طلع على اللوح. الآن، بدنا، ننسى إن
إيش كانت المعادلة للـ J؟ دلوقتي بكتبها، أفضل، أحسن في
مكان واضح بالنسبة للـ flip-flop الثالث اللي هو
الخاص بالـ A2. إيش كانت معادلة الـ J؟ واحد في A node
في A1. وإيش كانت معادلة الـ K؟ هي نفسها، لأنهم مشبوكين
مع بعض، واحد في A node في A1. يعني بالعربي، علشان تعرفوا
إيش الـ J؟ في الـ flip-flop الثالث، بدك تضرب القيم
الثلاث دول في بعض، وتاخد النتيجة، هي نفسها هتكون للـ K
لأنهم مشبوكين مع بعض. الآن، تعالوا نشتغل. الآن، أول ما
ببدأ الـ A2، هيبدأ بـ 0، زي ما بنعمل كل مرة. القيمة
الافتراضية 0. بمشي لأول rising. الآن، عند أول rising
بدي أشوف إيش قيمة الـ A node، وإيش قيمة الـ A1، و
أضربهم في بعض، وأضربهم في واحد. إذا نتيجتهم صفر، no
change. إذا نتيجتهم واحد، نعمل الـ change. يلا نضرب في
اللحظة هاي، إيش قيمة الـ A node؟ الشاطرين هيقولون
هيها صفر. حتى قيمة الـ A1 صفر. خلاص، على طول النتيجة
الـ J والـ K بعد حاصل الضرب صفر، معناها no change.
بضلني ماشي للـ rising اللي وراه. طب في الـ rising اللي
وراة، صح؟ الـ A node صارت واحد، لكن الـ A1 صفر. فأي صفر
في الضرب الثلاث مضروبات هدول، بتصفر النتيجة، مش الـ and gate
زي هيك. وبالتالي، حاصل ضرب A node اللي هو واحد في
واحد في الـ A1 اللي هي صفر، صفر. إذا برضه no change.
لما نيجي هنا، صح؟ الـ A1 صارت one، لكن الـ A node رجعت
صفر. وبالتالي، حصل ضرب صفر، يعني JK 00، يعني no
change. الآن، أيوة. تعالوا نتطلع في الـ rising هذا، إيش
قيمة الـ A node؟ واحد. إيش قيمة الـ A1؟ واحد. إيش حصل
ضرب هاي في هاي في الواحد؟ واحد في واحد في واحد؟
واحد. إذا في اللحظة هاي، صار مدخل الـ JK في flip-flop
الثالث واحد واحد. إيش يعني واحد واحد؟ يعني change. يعني
أكس نفسك. أنت كنت صفر، ارجع واحد. الآن، سيريش؟ واحد. إذا
هيطلع زي هيك، ويمشي للـ rising اللي وراه. في الـ rising
اللي وراه، حصل ضرب صفر، إذا no change. في الـ rising
اللي وراه، حصل الضرب من هنا صفر، no change. في الـ
rising اللي وراه، حصل الضرب صفر، إذا no change. حصل
الضرب هنا واحدين، إذا change. وهكذا بنسير على
السلسلة، نعملها زي ما أنتم هيك شايفين. وهكذا بتكمل
وبهيك احنا حلّينا الـ A2. الآن، تعالوا نشوف إيش معادلة
آخر flip-flop عشان نحله بنفس الطريقة. معادلة آخر
flip-flop اللي هو عشان نحسب A3. اتطلعوا معانا الـ and
gate هذه، الـ and gate هذه، عبارة عن إيش؟ طلعوا فيها
تابعوها. A2 مضروبة في السابق، شو السابق؟ اللي هو 1 في
A0 في A1. إذا المعادلة الجديدة للـ flip-flop الأخير
خلينا نسجلها على اللوح. إذا المعادلة لـ A3 اللي
في flip-flop هذا، عشان أحله، معادلة الـ J والـ K تساوي
لأنهم مشبوكين مع بعض، هي عبارة عن واحد في A node
في A1 في A2. يعني بالضبط هدول كلهم في بعض. إذا نتيجة
ضرب هدول صفر، الـ JK صفر صفر، لا تغير. إذا نتيجة ضربهم
واحد، بدنا نعمل change، يعني بدنا نعكس حالة الـ A
اللي بنشتغلها. مثلاً في الحالة دي A3. يلا، ونبدأ في
A3. الـ A3 أول ما هتبدأ، خلّي أرجع الخلفية بيضاء هنا.
تمام. الـ A3 هتبدأ من صفر. هي بدأت من صفر، وصلنا لأول
rising. يلا ضربولي A node في A1 في A2. هتقولولي
طالما لـ A2 صفر، صفر في أي حاجة، بدون ما أكمل، فحص
صفر. إذا أمشي للي وراه، هنا صفر. إذا حصل الضرب صفر.
هنا صفر، حصل الضرب صفر. هنا صفر، أي صفر، بلا قيمة، خلاص
مكملش، لأن صفر في أي حاجة صفر. بمشي هنا، صفر. أيوة، هنا
واحد، لكن هذه صفر، إذا برضه صفر، no change. هنا واحد،
هنا صفر، هنا واحد، هنا واحد، هنا صفر. طلع يقول الـ
rising، بعمل فحص في الـ rising هذا. الـ A node قيمتها
واحد، والـ A1 قيمتها واحد، والـ A2 قيمتها واحد. واحد
في واحد في واحد، بطلع واحد. إذا الـ J والـ K واحد
واحد. إذا الـ change، وبعمل الـ change، وبضل ماشي نفس
الفكرة، لغاية ما يلاقي التلاتة إيش؟ واحد واحد واحد، و
بعكس نفسه. وبهيك احنا شوفنا، وبهيك خلصنا احنا اللي هو
حساب الـ A node، والـ A1، والـ A2، والـ A3، على مدار الـ
pulses كلهم. طب السؤال الآن، إيش بيعدّ العداد؟ تعالوا، و
رينيش، بيعدّ يلا. تعالوا نشوف إيش بيعدّ في الـ pulse
الأولى، كانت أربعة أصفار. إيش العد هذه؟ صفر. في الـ
pulse اللي وراها، صارت هذه واحد، هذه zero، هذه zero،
هذه zero. العدد واحد. في الـ pulse اللي وراها، هذا
رجع صفر، هذا رجع واحد، هذا رجع صفر، هذا رجع صفر،
هي كانت قيمهم في الـ pulse اللي وراها، هذا العدد
بالباينري شو هو؟ اثنين. في الـ pulse اللي وراها، واحد
صار، وهذا صار واحد، وهذا صفر، وهذا صفر. شو هذا
العدد؟ ثلاثة. فأنا لسه قاعد بأشوف إيش بيعدّ العداد،
ماكرّر نفسه عشان أوقفه. هذا رجع صفر، هذا رجع صفر، هذا
واحد، هذا صفر. هذا الرقم شو هو؟ اللي فيه الـ A node بصفر
و الـ A1 بصفر، و الـ A2 بواحد، و الـ A3 بصفر.
هذا رقم أربعة. من logic، 1101. هذا
رقم خمسة، 0110. رقم 6، 1110. رقم 7. هاي العداد
قاعد بيعدّ، بورينا إيش كل pulse بيعدّ. 0001. رقم 8، 1
001. رقم 9، 0101. رقم 10. رجع هذا 1، رجع هذا 1، رجع
هذا 0، رجع هذا 1، رجع هذا 1. رقم 11.
0011 12 10 11 13 0111 14 1111 15 000
one zero zero zero، رجع one. يعني لو أنا كنت مكمل
هيرجع العداد، يعيد نفسه. إذا واضح إن العداد اللي كان
مرسوم على اللوح اللي بدأنا فيه محاضرتنا، هو عداد
بيعدّ تصاعدياً من 0 إلى 15، وهو من نوع synchronous
لأن الـ clock تبعتهم كلها شبه بعض. طبعاً لاحظوا شغلة
مهمة، إنه لو أنا مش شابك الرابع، لو أنا بس على جد أول
ثلاثة اللي شابكهم بس، أول ثلاثة، تمام؟ هتلاقيه بيعدّ
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7، وهكذا. خلاص، يصير
كده نفسه. وبالتالي ما كان فيه داعي إني أعمل 17 clock
pulses. لو كانوا ثلاثة، بيكفيني كنت تسعة عشر clock
pulses، لأنه بيبين معايا الإعادة. شفتوا أنتم كيف؟
هذه باختصار العداد. طيب، الآن بدنا نفهم، لو بدنا نعدّ
عدد يعدّ لـ 31. يعني هذا بيعدّ لـ 15. لو بدنا نعدّ لـ 31،
تعالوا تطلعوا على رسمة الكتاب. فيه standard نعمله
دايماً، هاي رسمة الكتاب. تطلعوا معايا في رسمة الكتاب.
إيش بيسوي؟ كل مرة، إيش بيسوي؟ كل مرة بياخد الـ JK، مدخلها
مع مضروب الاشارة الجديدة. وبالتالي، لو أنا بدي أعمل flip
flop لـ 31، تمام؟ إيش هعمل؟ هاي هتسير to the next
stage. هتروح للـ flip-flop الجديد، للـ J والـ K الجداد،
الخامس. بتوصل في الـ J والـ K. يعني خليني ارسمها على
اللوح، كيف؟ خليني ارسمها على اللوح. طلعوا معايا هنا.
مش احنا كان عندي هدول مشبوكين مع بعض بـ and؟ مش هيك
كانوا مشبوكين مع بعض بـ and، صح ولا لأ؟ الآن إيش
هعمل؟ أنا هضيف flip-flop جديد، خامس. هوصل الـ J والـ K
مع بعض. وبعدين هحط and gate، تاخد من القديم، وتاخد الـ A
ثلاثة. خلاص. وهذه بنسميها مثلاً A4، وهي الـ clock
تبعتهم واحدة. إذا هنا نفس الفكرة، يعني اللي عملته
بين الأول والثاني، واللي عملته بين الثاني و
الثالث، واللي عملته بين الثالث والرابع، بضيف واحد
خامس، وبعمله بين الرابع والخامس. هي مجرد and gate
بتاخد من الـ JK السابق، وتاخد مخرج flip-flop
بالأخير، وتشبكهم في بعض، وتودّهم على الـ JK الخامس
المشبوكين في بعض. إذا سهل جداً إني أقدر أعمل عداد
منظم، يعدّ لـ 31، لـ 63، الأخري بزيادة flip-flop. طيب،
تعالوا نشوف نقطة مهمة، كيف هم استنبطوها القصة هاي.
تعالوا نشوف كيف استنبطوها.
طيب، خلوني أنا أحاول أمسح، عشان نفهم كيف استنبطوا
القصة هاي.
الحين، هم حاطين ليه هنا في الجدول الأعداد، خليني أكبر
شوية صغيرة، برضه، عشان برضه نكون واضحة على اللوح.
طلعوا
معايا. الآن، هو حاطين الأعداد، صفر، واحد، اثنين، ثلاثة،
أربعة، خمسة، ستة، سبعة، ثمانية. تعالوا نلاحظ أول
الـ flip-flop، ماله؟ بتلاحظوا دايماً، باستمرار، بيعكس
نفسه، 0 1 0 1 0 1 0 1 0 1، وهكذا. إذا طبيعة الـ flip
flop الأولاني، عشان نعد أعداد تصاعدية، لازم كل مرة
يعكس نفسه. علشان هيك، لو رجعتوا أنتم للرسمة اللي
اشتغلناها في بداية المحاضرة، هيا، تعالوا نشوفها.
بتلاحظوا إيش عمل الـ J والـ K؟ حاطّهم في واحد. خليني
أرجع للرسمة هذه، الرسمة 2686. خلّيني أضغط على الرسمة،
نشوفها، طبعاً.
طلعوا. إيش عمل؟ هي، إحنا عندنا الـ J والـ K، شبكهم مع
بعض، شايفين؟ وحطّهم على الـ enable تاع العداد. يعني أنتَ
بدك يعدّ، حط واحد. طول ما هذا واحد، الـ flip-flop
الأولاني، ماله؟ إيش بصير فيه؟ الـ flip-flop الأولاني
بيعكس نفسه كل مرة، كل ما بتيجي pulse، بلاقي هذا واحد،
بيعكس نفسه. كل ما بتيجي pulse، بلاقي هذا واحد، بيعكس
نفسه. إذا، جالك أول flip-flop، خليه دايماً يعكس نفسه.
إذا أنتَ بدك تعمل عدد تصاعدي من صفر، ومشي جد ما
بدك، فأول مرة، خليه دايماً يعكس نفسه. قلنا ماشي، عملنا
الـ flip-flop، ووصلناه مع بعض، ووصلناه في الـ enable.
ممتاز. طب السؤال، الـ flip-flop اللي وراه، عليه أساس، حطّ 380 00:
وحيد يعني ممنوع جلبه إلا إذا كانت الـ A1 اللي
جابلها والـ A0 اللي جابلها وحيد عشان هيك هيعطينا
بوابة and وعشان أضمن أنه الآن مش هطلع واحد إلا إذا
الـ A نود بـ one والـ A one نود بـ one عشان في اللحظة
هاي يجلب فإذا أنا عيّرت الـ A2 صح وعيّرت الـ A1 صح
وعيّرت الـ A نود صح وعيّرت الـ A3 صح بيصير عداد
عداد بيصير عداد أنا جاية أحط العداد ده طب تعالوا
شوف الـ A3 متى بتجلب الـ A3 ثابت ثابت ثابت ثابت ثابت
ثابت ثابت ثابت ثابت ثابت ثابت ثابت ثابت ثابت ثابت
ثابت ثابت ثابت ثاب
وحيد شفتوا كيف؟ فمن هنا استنبطوا معلومة أنه لو أنتَ
بدك تعدّ إن شاء الله عداد يعدّ لـ 63 دائماً الـ flip
-flop بالأخير ما بيجلبش إلا ده كل اللي جابله
ما خرجهم وحيد، وعشان هيك بتطلع في الرسم اللي هروح إليه
الرسمة كل مرة بحط بوابة and جديدة عشان يضمن أن كل
اللي قبله وحيد فلو رجعتوا على الرسم هتشوفوا أنه
بحط الـ and ليش؟ وبربطها مع كل الـ inputs اللي قبل عشان
عمراً ما تطلع الـ and هذه واحد إلا إذا كل الـ inputs
اللي قبل تكون وحيد وفي الحالة هذه فقط بيصير العداد
يعدّ صح؟ طيب تعالوا نستنبط موضوع ثاني هنا عشان نرجع
ما نرجعش لهذا الكلام متّبع تنازلي عشان أعمل تعديل
على الرسم التنازلي كيف بيبقى التنازلي؟ يعني
الأعداد هيك يعني بيكون عندي مثلاً عدد 8 بيجي وراه 7
بيجي وراه 6 يعني بالعكس هذا التصاعدي هيك التنازلي
تعالوا نتطلع الشاطرين هيقولوا بالنسبة للأولاني في
التنازلي مش فارقة ليش؟ 01 01 01 كل مرة بعكس نفسه
وأنا هيك هيك عامله في الرسم الأساسي بعكس نفسه لكن
تعالوا نتطلع هنا لما بنمشي هيك متى بيجلب؟ تطلعوا
متى بيجلب؟ لما كل اللي جابله أصفار في التنازلي
تطلعوا عليها ده لما جلب كل اللي جابله أصفار العكس
تماماً لما جلب كل اللي جابله أصفار سبّت جلب كل اللي
جابله أصفار سبّت طبعاً نتأكد من المعلومة دي من إيه؟
اتنين نتأكد من إيه اتنين؟ أنه هذا system جلب، إيش
اللي جابله؟ أصفار، الآن ثبت، ثبت، ثبت، شايفين؟
ثبت، ثبت، ثبت، الآن متى بيقلب كمان مرة؟ لما اللي
جابله أصفار؟ شايفين؟ طب تعالوا نشوف الأخيرة جلب،
متى جلب؟ لما كل اللي جابله أصفار؟ شايفين؟ يعني إيش
... إيش المعلومة اللي بنستنتجها هنا؟ إذا بدي أضمن أنه
يعدّ تصاعدي لازم أحط الـ and اللي بتضمن أنه كل اللي
جابله وحيد، وإذا بدي يعدّ تنازلي لازم أحط الـ and
اللي بتضمن أنه كل اللي جابله أصفار يعني لازم يا A
node تكون 0، يا A1 تكون 0، يا A2 تكون 0 وهكذا طبعاً
الشاطرين هيقولوا معناها أنه الفرق الوحيد بيناتهم
التصاعدي والتنازلي inverter يعني هنخلي الـ ANDs زي
ما هي لكن الفرق الوحيد inverter كيف؟ والـ inverter
تعالى أوريكم كيف
طيب ركزوا معايا هنا ركزوا معايا هنا الآن الرسم هاي
تصاعدي لو أنا بدي أخليها تنازلي في الأول في التصاعدي
ليش الـ and هذه موجودة؟ مش الـ and هذه موجودة عشان
أقول مابتطلعش واحد إلا إذا هذا واحد وهذا واحد صح؟
ولا لأ؟ مظبوط ولا لأ؟ طيب افترضوا أنا مابديش هيك
مابدي هذا ماتطلعش واحد إلا ده واحد وهذا صفر عشان
يعدّ تنازلي ولازم يكون هذا صفر؟ كيف يكون هذا صفر؟
الشاطرين هيقولوا لي بس حط إيش؟ خلاص inverter هنا و
تعال هنا حط inverter هنا شايفين كيف؟ والثالث هو راح
أحط Inverters لما بحط Inverters معناها عمرك يا and
هنا مابتطلعي واحد إلا إذا كان هذا واحد وهذا صفر
عمرك يا and مابتطلعي واحد إذا كان واحد هذا وهذا
صفر شوفتم كيف؟ وبهيك أنا بضمن أنه صار العداد
تنازلي طبعاً بعض الناس بيقولوا طيب ليش أنت تحط
inverter؟ مش هذا اللي تحت عكس اللي فوق؟ بقولهم اه
بقول طب لو أنا بدون الـ inverter خلاص سحبته من تحت
الـ bubble اللي هنا هي هي يعني لو بدل ما أسحبه من
فوق وأحط inverter سحبته من المعكوس اللي تحت هي هي
إذا الخلاصة اللي بدنا نقولها إذا أنا سحبت السلك
يعني الـ ANDs هيظل زي ما هم إذا أنا سحبت السلك من
فوق من فوق من فوق لكل الـ ANDs معناها بيعدّ تصاعدي لو
أنا سحبت السلك من معكوسه من تحت من تحت من تحت لكل
الـ ANDs بيعدّ تنازلي هي باختصار مضحك إيش بتسوّي
الآن؟ إذا أنا لو بدي يعدّ تصاعدي بوصل فوق بدي يعدّ
تنازلي بوصل تحت ليش بوصل تحت؟ لأن احنا شفنا قبل
شوية استنتجنا إيش استنتجنا؟ أنه هذا يعدّ تنازلي
إذا كل اللي قبله أصفار فلما بحطه في AND معناها عمرك
أنتَ ما بتطلع واحد إلا إذا كان هذا صفر إذا كان هذا
صفر بتطلع هذا واحد وهذا نفس الفكرة عمره بتطلع واحد
إذا كان اللي جابله كلهم أصفار لما بيكون هذا صفر ما
هو بيضرب هذا صفر صح ولا لأ؟ وبعدين هذا إيش بيكون
صفر فهمتوا أنتم كيف؟ زي هي كانت، تمام؟ طيب آخر
نقطة عشان أختم النقطة هاي أو المكان هذا إذا احنا
متّفقين الآن لو بدنا نعمل تصاعدي
هاجي للـ J والـ K اللي هان وأعمل الـ AND هاي ويصحب
من هان ويصحب من هان لو بدي أعمل تنازلي هاجي للـ J
والـ K اللي هان اللي هي الـ AND اللي هان تمام؟ وهاي
هاي اللي هم مشبوكين على الـ count enable هدول على
الـ count enable طبعاً الـ clock له محددة تمام؟ وهسحب
من هان وهسحب من هان هذه في حالة التنازلي الرسمة
وهذه في حالة التصاعدي والفرق بيناتهم بس إني سحبت
السلك في التصاعدي من فوق من الـ A وسحبته من الـ A
bar هاي الفرق طيب السؤال لو بدنا ندمجهم في رسمة
واحدة كيف ندمجهم في رسمة واحدة؟ يعني بدي أصمم عداد
يعدّ تصاعدي أو تنازلي بناء على switch درسناها
المشكلة دي قبل هيك قلنا يعني هنا خليني أوحدهم
دقيقة بس أمسح هاي اللي ورا أشيلها خليني أوحدهم كيف
أوحدهم هذا الـ flip-flop وهذا الـ flip-flop مش هنا
فيه JK مرة بياخد في الـ AND hi ومرة بياخد من الـ AND
hi هذا الـ JK كيف بنوحد؟ مش يقولنا بنوحد من خلال
multiplexer اللي هو بيختار واحد من اتنين أخدنا
المحاضرة السابقة مش يقولنا لما يكون جايين سلكين من
مصدرين مختلفين رايحين على نفس النقطة مش بقى أظبطها
بالـ multiplexer يختار hi ولا hi من خلال الـ switch
البراني صح ولا لأ؟ الآن لو اطلعت على الـ JK اللي هو
هنا هذا الـ JK مرة بياخد الـ AND اللي بتاخد من فوق و
هو نفسه مرة بياخد من AND اللي بياخد من تحت لِـ الشناعي
التنازلي طب كيف بدي أوّفق؟ على الباب هنا بقوله يا
عم هي الـ multiplexer وفي طريقين 01 وهي الـ switch
الـ controller الـ switch وبحط الطريق الأولى اللي
هي مثلاً الـ AND اللي بتاخد من فوق وبحط الطريق
الثانية الـ AND اللي بتاخد من تحت وخلاص والـ
controller هو اللي بيحدد مين اللي يفوت على كل J و
K هل طريقة التصاعدي اللي تفوت على الكل ولا هل طريقة
التنازلي اللي تفوت على الكل، هاي باختصار وهذه
النقطة اللي أنا بحكيها الآن مش نقطة صعبة لأنه
درسناها قبل هيك أنا علمت كتابة في بداية المحاضرة
كيف نعدّ تصاعدي؟ جينا أن كل الـ J والـ K هياخد ANDs
من الـ A بدون bar علمتكم كيف نحلّ التنازلي، لو جوا
نفس الـ J والـ K بياخدوا ANDs بس من الـ A bar طب
الحين قاعد أنا بقول طب كيف نعمل تصاعدي أو تنازلي؟
هتقول خلاص نجمع الاثنين في واحدة من خلال Multiplexer
هذا الـ Multiplexer بنحط على باب الـ J والـ K وبياخد
من الطريقين، بياخد من الـ A العادية في الـ ANDs
وبياخد من الـ A bar العادية في الـ ANDs وبيصير يختار
بناء على هذا الـ switch هذا الـ switch الآن الفيصل
إذا هذا الـ switch بـ zero خلاص أنتَ دخلت مثلاً طريق
التصاعدي على الـ J والـ K للجميع إذا اخترت الـ switch
بواحد أنتَ دخلت طريق التنازلي لكل الـ J والـ K فاضح
كيف؟ طبعاً لحظة لما بكون عندي أربعة flip-flops بنفعش
في الـ JK الأولاني أدخل طريق التصاعدي وفي الـ JK
الثاني أدخل طريق التنازلي، بنفعش يا كلهم بيعدّي
عليهم التصاعدي يا كلهم بيعدّي عليهم التنازلي
وبالتالي لازم الـ switch ماله يكون للكل
الـ Multiplexers اللي على الأربع flip-flops عشان
يقول للكل، يا تصاعدي بتعدّوا، يا تنازلي بتعدّوا، هاي
باختصار وهي الرسمة الكبيرة، طبعاً خلاص أنا مش هشرح
الرسمة لكن هوريكم إياها هي هي الرسمة طبعاً زي ما
شايفين الرسمة المنطقة هاي عبارة عن إيش؟ Multiplexer
وخليني أطلع أوريكم على اللوح هاي
يعني الـ Multiplexer فرطته احنا عارفين من زمان أن
الـ Multiplexer عبارة عن OR و AND ثاني أخدنا
تكوينه الداخلي في Logic One مش هرجع له الكتاب بدل
يرسم صندوق ويسميه Multiplexer الكتاب فرطها ورسمها من الداخل
أنا ما عندي مشكلة بتحبوا ترسموا Multiplexer وخلاص صندوق
مُصمّت وداخل عليه طريقين والـ switch براني مقبول
ما عندي مشكلة حبيتوا ترسموا التكوين الداخلي بالرجوع
إلى Logic One أيضاً ما عندي أي مشكلة المهم أنه لاحظوا
أنه مدخل الـ flip-flop ماله صار بياخد من Multiplexer والـ
Multiplexer بدخل عليه يا طريق ألف يا طريق باء طريق ألف اللي
هي مين؟ للتصاعدي، طريق باء اللي هي مين؟ للتنازلي طبعاً
واحد ممكن يسأل ويقول لي طب ليش هو حاطط هنا في مش JK
مش إحنا اتفقنا قبل ما نبدأ المحاضرة أن الـ J والـ K
لو توصّلوا مع بعض بالسلكين مش هي equivalent للـ T
flip-flop صح ولا لأ؟ فلو طلعنا على شرائحنا اللي قبل
شوية كان كل JK مع بعض كل JK مع بعض كل JK مع بعض
يعني هي هي T يعني للناس اللي ناسين الـ J والـ K إذا
اتشبكوا مع بعض بسلك واحد هذا الـ flip-flop صار و
كأنه T هذه معلومة سابقة فالـ J والـ K الموصلين
مدخلهم مع بعض هي T فما عندي مشكلة يرسم لي T بمدخل أو
يرسم لي الـ JK بمدخلين ومشبكوكين في بعض ما عندي مشكلة
أنا المشكلة اللي بتبهّمني هنا هذا الـ Multiplexer اللي صار
ياخد طريقة التصاعدي أو ياخد طريقة التنازلي وهو
بنظم الأمر وهي باختصار إذا الـ conclusion لأن هاختم
الآن المحاضرة الـ conclusion أخذنا إحنا في الأول
مبادئ عداد Synchronous تمام؟ وحابب أنا معلش
أخليكم تشوفوه برضه عشان أكد الـ conclusion تبعنا 609 00:46