بسم الله الرحمن الرحيم، اليوم إن شاء الله هنستكمل
في موضوع الـ design الخاص بالـ sequential circuit
يمكن احنا في المحاضرتين السابقتين أخذنا خطوتين
رئيسيتين، الخطوة الأولى كانت عبارة عن state
reduction، والخطوة الثانية كانت state assignment
اليوم إن شاء الله هندخل في كل الخطوات من الألف إلى
الياء، كيف نقدر نصمم sequential circuit تقوم بمهمة
معينة أو بعمل شيء معين، احنا بدنا إياه، وبالتالي بدنا
نشوف الآن الخطوات بشكل عام، زي ما أنتم شايفين الآن
هنا في عندي سبع خطوات رئيسية من الـ 1 إلى الـ 7، أنا لما
أمشي في خلالها بكون صممت الدائرة الـ sequential
اللي بدي إياها، تعالوا نحاول نطلع بشكل سريع على هذه
النقاط من 1 إلى 7، وبعد هيك نقعد نفصل فيهم إن شاء
الله خطوة خطوة، رقم 1: from the where description
and specifications of the desired operation, derive
a state diagram for the circuit، ويمكن الخطوة الأولى
هي أهم خطوة وأصعب خطوة، إيش بيقول في الخطوة
الأولى؟ بيقول: أنا لما بيجيني سؤال الـ design كيف
بيجي؟ بيجي عبارة عن كلام زي هيك: صمم دائرة تقوم
بتحكم مثلاً في إشارة ضوئية بتشتغل كالتالي: واحد
اثنين، ثلاثة، صمم مثلاً Controller يتحكم بخزنة معينة
بيفتحها بعد ما نشوف مثلاً sequence 1 1 إلخ...
المهم أسئلة الـ design كتيرة، فبيجي عبارة عن كلام
المطلوب مني في أول خطوة أحاول هذا الكلام أقدر
أستنبط منه الـ state diagram، ويمكن هي هذه أصعب خطوة
إن كيف أقدر أحصل على الـ state diagram من هذا
الكلام، طبعاً ويمكن هذا شبيه شوية بالكلام اللي أخدناه
في logic one، إذا بتتذكروا في logic one عبارة
design كان عبارة عن إيش؟ أن أقدر أستنبط الـ truth
table من الكلام، كنا نقول إذا الكلام هذا المكتوب
تبع التصميم قدرت أطلع منه الـ truth table، خلاص
خلصت الخطوة الرئيسية الأولى، لأن كل الخطوات بعد هيك
من الـ truth table وصولاً للـ logic circuit خطواتها
خطوات ثابتة، ما فيش فيها شيء نتعلمها مرة واحدة
بنحلها كل مرة، فكان أصعب شيء زي ما إذا تتذكروا في
logic one كيف أستنبط هذا الـ truth table من سؤال الـ
design، وهنا في logic 2 نفس الكلام ونفس الفكرة، أنا
عندي سؤال design، كيف أقدر أستنبط الـ state diagram
من هذا الكلام، إذا أنا نجحت واستنبطت الـ state
diagram بشكل سليم، الآن أنا عديت نص السؤال، ليش؟ لأن
كل الخطوات اللي من الـ state diagram وصولاً
للـ circuit آلية، هنجيها خطوات سهلة، بتتعلمها لمرة
واحدة، بقدر أحل عليها دائماً، بس بتظهر أصعب خطوة اللي
هي الخطوة الأولى، واللي هنحاول اليوم إن شاء الله
نتكلم عنها بشكل مفصل، إني جينا نتطلع في خطوة اثنين،
خطوة اثنين اتعلمناها: reduce the number of states
of necessary، يعني...وهذه عبارة عن إيش؟ عبارة عن
درس الـ state reduction، يعني أنا بعد ما ال...أخذت
من الكلام وعملت الـ state diagram وجهزته عندي،
المطلوب أبدأ في خطوة اثنين اللي هي state reduction،
أبسط هاي الـ states، وهذا أخذنا فيه محاضرة أو
محاضرة ونص كاملات كيف نقدر نبسط، بعد هي خطوة ثلاثة،
برضه خطوة ثلاثة احنا أخذناها اللي هي الـ state
assignment، إيش الـ state assignment؟ يعني الأسماء
بتاعة الدوائر الموجودة، الـ A,B,C,D,E إلخ...هي بدي
أحاول أستبدلها بطريقة معينة بأرقام، وشوفنا المرة
اللي فاتت أنه بقدر أستبدلها بأحد الثلاث طرق سواء
الـ Binary Assignment أو الـ Gray Assignment أو
الـ One-Hot Assignment، المهم الخلاصة أن هذه
الأسماء بتبطل موجودة، ويجي مكانها أرقام، ويمكن
تكلمنا عنها وفصلناها في خطوة ثلاثة، الآن الخطوات من
أربعة إلى سبعة هي خاصة بعملية تحويل هذا الـ state
diagram إلى الـ circuit أو الـ hardware اللي أنا
بدي إياها، وهذول الخطوات من 4 إلى 7 هنتكلم عنهم كمان
شوية اليوم، بدي ارجع أحاول أفصل في الخطوة الأولى لكن
من 4 إلى 7 هيجي لهم خطوات سهلة، مرة واحدة بتعلمهم،
بصير أحل عليهم دائماً، ما فيش فيهم تفكير كثير، هي بس
أصعب خطوة فقط في كل الخطوات السبعة، كيف أنا
من سؤال مكتوب بيقول لي something كده كده كده، أقدر
أحول وأستنبط منه للـ state diagram، والهدف أنا
هابدأ فيها الآن، وأحاول في الشق الأول للمحاضرة إنه
ناخذ أمثلة عديدة في هذا الكلام، خلينا نبدأ بالمثال
الأول، السؤال بيعتبر بيقول كالتالي: صمم دائرة
sequential بتقدر تعمل detection لثلاث واحد بيجوا ورا
بعض، كيف يعني؟ يعني الآن زي ما أنتم عارفين أنا أي
sequential circuit موجود عندي، كل pulse كل clock بيقرأ
الـ input، فإذا أنا دوست مثلاً ثلاث pulses وكان الـ
input ثابت على واحد، معناه هيفوت على الـ system ثلاث
واحدات، طب دوست الـ pulse الرابع، معناه بيفوت إيش موجود
على الـ input في اللحظة الرابعة، إذا كان واحد بيفوت
واحد، إذا كان صفر بيفوت صفر، وهكذا، فالآن إيش سؤال
الـ design بيقول؟ بيقول: بدنا نحاول نصمم system
sequential circuit تقدر تتعرف إذا فات عن النظام ثلاث
واحدات متتاليين ورا بعض ولا لأ، طب إيش بده يسوي
النظام في حال إنه فات عن الـ system ثلاث واحدات ورا
بعض؟ بده يروح يطلع الـ output واحد، طبعاً هذا الـ
output إيش وظيفته؟ يفتح خزنة، يطلع signal يتحكم بشيء
معين، الآن مش موضوعنا، هو الآن بيقول: صمم دائرة تتعرف
على الثلاث واحدات، إذا دخلوا الثلاث واحدات متعاقبين و
ربط، بدي الـ output في اللحظة هذه فقط يطلع واحد، طيب
أجى الـ input الرابع بعد الثلاث واحدات، واحد، خلاص هيكمل
يطلع واحد، طيب افترضوا الـ system قرا كالتالي، افترض
قرا واحد، بعدين كمان واحد، بعدين صفر، خلاص ما ليّش
علاقة، الـ system مش هيطلع واحد، أجل واحد ثالث، لأن
الكلام واضح، لازم يكونوا الثلاث واحدات متتابعين، يعني
كمان مرة: قرأنا في الأول واحد، بعدين قرأنا كمان واحد،
بعدين قرأنا صفر، ما يطلعش الـ output واحد، بعدين واحد،
ما يطلعش الـ output واحد، واحد، صفر، صفر، صفر، لحتى الآن الـ
output ما طلع واحد على الإطلاق إلا إذا أنا بدخل
واحدات، أجى ثلاث واحدات ورا بعض، هتلاقوا الـ output اللي
هو Y اللي كان يطلع أصفار، في الحالة هذه فقط طلع
الواحد، فهيك مطلوب مننا أن نصمم دائرة، فهذه الدائرة
بيسموها الـ detector، بيروح بيتعرف على الـ sequence
أنا طالبها، قبل ما أشتغل الدائرة تبعتها، طبعاً مش
بالضرورة الـ detector يكون معمول لثلاث واحدات، ممكن
الـ detector أقول أنا والله إذا أجى 101، إذا أجى هذا
الـ code المخصص بدي أطلع الـ output 1، ممكن أجي أقول
إذا أجاني 1010 من أربع بتات، الـ code الفلاني يطلع الـ
output 1، فهذا الـ detector بيختلف من سؤال لسؤال، لكن
احنا سؤالنا اللي الآن بدنا نحله إيش بيقول؟ نعمل
detector يكتشف دخول ثلاث واحدات متعاقبين، في الحالة
هذه فقط الـ output بيطلع واحد، أو في الحالة هذه فقط
الخزنة بتفتح، أو في الحالة هذه فقط يتم تنفيذ اللي
أنا بدي إياه، الـ output، لكن فيما عدا ذلك دائماً الـ
output بصفر، هاي بدنا نصمم هذه الدائرة، وبدنا نشوف
كيف بدنا نصممها، وما ننساش كمان مرة، يعني لو أجاني
أنا بعد الـ clock البلصة الأولى أجاني واحد، بعد الـ
clock البلصة الثانية أجاني كمان واحد، بعد الـ clock
البلصة الثالثة أجاني صفر، خلاص لازم أشوف ثلاث واحدات، ده
أستنى ثلاث واحدات من جديد، بعد الـ clock البلصة
الرابعة أجاني كمان واحد، مش هيدوي الـ output، مع أنه
هيقولوا لي: فات واحد، واحد، صفر، واحد، هحكيلكم أن الثلاث
واحدات ما جاوش ورا بعض، مش متعاقبين، أنا بدي أصمم design
أنه لازم الثلاث واحدات ورا بعض، وبالتالي ما يطلعش الـ
output واحد إلا إذا دخلوا الـ input ثلاث واحدات ورا بعض،
باختصار، يعني الآن كمان مرة للتأكيد عشان نقدر نشتغل
صح، يعني لو أنا جايني 11000،
لحد الآن الـ output ما طلع واحد، اجاني 11000 ما طلع
واحد، اجاني واحد، واحد، واحد، في اللحظة هاي بدي يطلع الـ
output واحد، وبعد كل ما بيجي واحد وضل طالع واحد إلى
أن يأتي صفر، ويرجع الكرة من جديد، يرجع الـ system من
جديد، يصفر الـ output ويستنى مني الثلاث واحدات كمان
مرة ورا بعض، فتعالوا نشوف كيف نصمم هاي الـ circuit
عشان نشوف كيف نصمم هاي الـ circuit، خليني بس أعمل
الشاشة بيضاء من ورا عشان نشوف بشكل واضح، تمام، الآن
بدنا نقول: على فرض أن أنا عندي الـ state A وهي الـ
output في الأول صفر، طبعاً أول ما بنبدأ التصميم
تبعنا إيش الـ output بيكون؟ صفر، لأنه لسه ما جانيش
الثلاث واحدات، بعدين في ملاحظة مهمة ما تنسوش أنه أنا
ما بقراش الـ input إلا مع البلصة، يعني لما بتيجي
البلصة، لما بتيجي one clock، في اللحظة هذه بيقرأ
الـ input الأول لمرة واحدة، الآن لما بيجيك clock ثانية
بيقرأ الـ input اللي وراها، clock ثالثة وهكذا، بيبقى
اللي يمشي مع كل pulse بيقرأ input، فبنشوف كيف نحاول
إذا أجى ثلاثة واحدات ورا بعض متعاقبين، متتابعين، كيف
بتطلع الـ output واحد، دعونا نشوف كيف نعمل الـ state
diagram، لأن إذا أنا نجحت وعملت الـ state diagram
بشكل سليم، خلصت كل قصتي، لأن من الـ state diagram أني
أوّصل للـ sequential circuit، للـ hardware، هنلاقيها
شيء سهل، بس هي أصعب شيء: كيف من الكلام أنا أجيب الـ
state diagram، فالحين بنحاول نشتغل، يلا نرجع نكمل،
الآن افترضوا أنا في الـ state A وأجاني صفر، الكل
هيقول لي: إذا أجاك صفر، ما صار شيء جديد، ضلك لف مكانك،
طب أنا إيش بدي عشان أطلع واحد؟ بدي ثلاث واحدات
متعاقبين، يعني الآن على فرض أجاني واحد، الشاطرين إيش
هيقولوا؟ هيقولوا: أنا هروح على دائرة B، لكن الـ
output صفر، طيب أسأل السؤال بشكل عكسي: أنا متى بـ
أوّصل لـ state B؟ متى بأوّصل لدائرة B؟ الكل هيقول لي:
مستحيل أنت توصل لـ B إلا إذا قرأت input واحد على
الأقل، ليش؟ لأنه لما بأقرأ الواحد بأوصل بـ B، طيب إن
ما كانش واحد الـ input، كان صفر، بنضلنا لف A الفاضي طول
ما بيجي صفر لف A...طول ما بيجي صفر لف A، أجى input
واحد مع البلصة، معناه هنتقل من A لـ B، يعني إذا أنا
وصلت B، بكون عندي ضمانة أن الـ input قرأ واحد لمرة
واحدة، الآن احنا بنكمل بنفس الطريقة، طيب افترضوا أجى
كمان واحد، الشاطرين هيقولوا لي: هنوصل للـ state C، طب لو
سألت سؤال بالعكس: متى بنوصل احنا C؟ متى ممكن إذا
بدينا من A نوصل C؟ الشاطرين هيقولوا: مستحيل
إلا أنه يكون مر على الـ system تلات واحدات
واحد وبوصل الـ system بيطلع واحد لإني بكون أوصل الـ
D طب السؤال الآن أنا أوصل الـ D، إيش أعمل بعد هيك؟
قال طول ما بيجيك واحد، السؤال إيش بيقول لي السؤال؟
بعد التلات واحدات.. هيك.. هيك السؤال بعد التلات
واحدات اللي أنت لاقيتهم، كل ما بيجيني وراهم واحد
واحد واحد، خلاص ضلّك طلع الـ output واحد واحد واحد
عشان هيك إيش هنا سويت؟ روحت لفّتها هان، تمام؟ على
أساس إنه بعد التلات واحدات، أي واحد إضافي بيقابله
output واحد، output واحد، output واحد، طيب لإمتى؟
السؤال كان بيقول لغاية ما يجي صفر و نرجع نعيد من
الأول، لتعرف على تلات واحدات، التانين يعني لو أجى صفر
إبنات بدنا نرجع hand، إذا هذا الـ system اللي أنا
رسمته، الـ state diagram، إيش بيعمل هذا الـ state
diagram باختصار، بتعرفوا بيطلع الـ output تبعه واحد
في حال دخول تلات واحدات ورا بعض، عن نظام، وكمان مرة أنا
بدّي تفهم الصورة، أنا ما بدخلش بس رقم، ولا رقمين، ولا
تلاتة، أنا ممكن يدخل 100 قيمة على الدائرة تبعتي، طول
ما الـ clock pulse شغّالة، طول ما في قيم بتجرى من الـ
input وبتفوت على الـ system، وطالما بفوت inputs على
الـ system، طول ما بيطلع output من الـ system، لكن احنا
بدنا نصمّم إنه وجد في الـ input اللي داخلين هدول
كل ما يلاقي تلات واحدات أو أكثر ورا بعض يصير
يطلع واحد، هيك أنا مطلوب أني أصمّم الدائرة، عشان هيك
أنا إيش سويت؟ قلت له بروح على B وواحد، بروح على C
وواحد، بروح على D وواحد، الآن طالما وصلت D
خلاص، معناها الـ system عدّى عليه تلات واحدات، الآن طول ما
بيجي واحد بعد هيك، بضلّ الـ out بتطلع واحد، الـ out
بتطلع واحد، طب لإمتى هذا الكلام؟ بيستمر لغاية ما
يجي الـ 0، خلاص، بنعيد من الأول، طيب افترضوا أجى 1 1
أجى 0، خلاص، بطّلت أشوف تالت واحدة، بيرجع من جديد، فما
نفكّر إن الـ system واقف، الـ system ماشي، إيش عن الـ
system ماشي، كمان مرة، أحاول تفهم الصورة، هذا الـ
sequential circuit اللي أنا بدّي أصمّمه، هذا الـ logic
اللي أنا بدّي أصمّمه، هذا الـ input اللي داخل X، وهذا
الـ output اللي خارج Y، وهنا الـ clock اللي فايت على
النظام، الآن على فرض أنا ضغطت عشرين ضغطة، إيش يعني
فرضت عشرين ضغطة، ضغطت يعني فات عشرين X، وطلع عشرين
output، هيك معناها، طب شو الـ circuit بدها تسوي؟ بدها
تفحص العشرين X اللي فاتوا ورا بعض، هدول، هل فيهم تلات
واحدات أجَوا ورا بعض، إذا والله كان فيهم تلات واحدات ورا
بعض، بده يصير يطلع الـ output، بس في الحالة دي واحد
طب أجى الواحد الرابع، بيضل يطلع واحد، طب أجى صفر
خلاص، بنعيد من الأول، بدّه تلات واحدات، ممكن العشرين ضغطة
تدخل، العشرين X ما يكونش فيهم على الإطلاق تلات واحدات
ورا بعض، يعني يكون واحد، زيرو، واحد، واحد، زيرو،
زيرو، واحد، زيرو، وبالتالي عمره ما عمل Y في العشرين
ضغطة، ما يطلع واحد، فهذا وظيفته detection
بنسمّيه detector، إيش بيسوي؟ بيتعرّف على الـ code أنا
طالبه، فأنا قاعد بقول في السؤال، هي كان سؤالي، صمّم
دائرة detector تتعرف على الـ code اللي داخل، إذا كان
فيه تلات واحدات، بيطلع الـ output one، فصمّم ده، صمّم هذه
الدائرة، فأنا عملت الـ state diagram بناءً على هذا
السؤال، طبعًا ممكن في سؤال ثاني يجي ويقول لي
صمّم detector يتعرّف على الـ code 1010، ده كان له حل
آخر، ممكن أجيك سؤال ثالث يقول لي اعملي دائرة
بتتعرف على detector لأربع واحدات ورا بعض، هذا سؤال
آخر، فالأسئلة كثيرة في موضوع الـ detection أو الـ
detector، تمام، إحنا سؤالنا اللي حليناه، اللي رسمناه
له الـ state diagram، سؤال بسيط، إيش بيقول؟ بيقول أنا بدّي
أصمّم دائرة، sequential circuit، داخل عليها
inputs وطالع منها output، بس بدّي هذه الدائرة
تستكشف الـ inputs اللي داخلين، أول ما تلاقي تلات واحدات
ورا بعض، دخّل الـ output، طَلّع لي signal اللي هو واحد
غير كده الـ output بيطلع صفر، فإذا مش هيطلع واحد إلا
عند التلات واحدات، يعني الآن لو فرضت عشان نتأكّد من
المعلومة، لو فرضت
اعتبر إن هدول بدهم يفوتوا هنا، إيش الـ output بدّي
يطلع؟ يعني بدّي يفوت واحد ورا واحد ورا زيرو ورا
واحد ورا زيرو ورا واحد، بدّي أفترض إن كل التسلسل هذا
كل ضغطة بدّي يفوت منهم واحد، وكلهم بدّي أعدّيهم بالـ
clock pulses، سؤالي لو هذا الـ code اللي فات، إيش الـ
output حتطلع؟ الشاطرين حيقولوا لي الـ output
00000000000000000000
أول ما التلاتة هدول يدخلوا واحدات، حيطلع الـ
output واحد، ولأنه أجى 1 رابع، حيُطلع 1، بعدين حيَرجع الـ
output خلاص، أنا الجديد صفر، بعدين هنا صفر صفر
حيطلع الـ output 1 0 0، فهذا اللي أنا رسمته، هذا
الـ output اللي حيُطلع من هنا في حال هذا الـ input
اللي فات على الدائرة، فلاحظوا متى الـ output طلع 1
كل ما شاف تلات واحدات، بيطلع واحد، طب ليش هذا الواحد
الرابع طلع؟ لأنه هيك السؤال بيقول، بيقول لك بعد
التلات واحدات وطلعنا الواحد، إذا أجى كمان واحد بعد
التلاتة، كله بيطلع، أكبر الـ output واحد واحد واحد، هذا
هيك في السؤال طالب، لو هو مش طالب هيك في السؤال، كان
ما عملتش هيك، بس هو السؤال اللي جاني، اعمل الـ state
diagram هيك، بيقول لي اعمل detector بتعرف على التلات
واحدات، وأي واحد زيادة بعد هيك خليه يضل يطلع الـ
output واحد، إلى أن يتسفر ويرجع من جديد، نشتغل، عشان
هيك طلعت الواحد الرابع، بعدين لما تسفرت، سفرت وخلاص
صرت صفر صفر، من جديد، مستني تلات واحدات ثانيات ورا
بعض، فلما لاقيت تلات واحدات ثانيات ورا بعض، طلعت واحد
ولأنه جا وراهم صفر، خلاص، سفرت، فهذا وظيفة الـ
detector اللي أنا بدّي أصمّمه، وبهيك أنا عملت state
diagram لهذا السؤال، تمام، طيب الآن أنا بدّي أحاول
أسأل سؤال قريب عليه، يعني الآن لو سألنا هذه رسمة الـ
state diagram لمين؟ هنقول هذه رسمتها لـ sequential
circuit بتقوم بعمل detection للتلات واحدات ورا بعض
يعني لما بدخل النظام أو الـ system تلات واحدات ورا بعض
الـ output على طول بتطلع واحد، باختصار، أي واحد رابع
خامس، سادس، بعد التلات واحدات، برضه الـ output بتطلع واحد
لغاية ما يصير فيه صفر، بترجع خلاص الـ system
يشتغل من جديد، حيضل يطلع صفر الـ output لغاية ما يشوف
كمان مرة تلات واحدات ورا بعض، ما شافش تلات واحدات ورا بعض
طول عمره الـ system ماله؟ بيطلع output صفر، هي
باختصار الـ system اللي أنا صممته، طيب خليني أحاول
أسأل سؤال ثاني شبيه فيه، السؤال بيقول كالتالي إنه
برضه بدنا نصمّم detector يكتشف لتلات واحدات ورا بعض
لكن إيش بدّه يسوي هذا الـ detector؟ كل ما بيشوف تلات
واحدات ورا بعض بيطلع output واحد، واحد، يعني كل تلاتة
بيطلع output واحد، بنصمّم، طبعًا السؤال هنا اختلف عن هذا السؤال، وين الاختلاف؟ إنه
كان هنا يقول إن الواحد الرابع ولا الخامس
بعد التلاتة بيطلع output واحد، هيك كان هذا
يقول السؤال، السؤال اللي أنا بسأله لأ، غير، أنا
ما قاعد بقول، بقول بس كل تلات واحدات يطلع output واحد، طب أجى الواحد الرابع، ما له دعوة، أجى
الواحد الخامس، ما له دعوة، أجى الواحد السادس، اه هاي
التلات واحدات تانيات بيطلع output جديد 1 زي هيك
بيصير كل تلات واحدات يجوا مرة ورا بعض يطلعوا واحد
تعالوا طب نشوف كيف نُحلها هاي، طبعًا الحل قريب جدًّا
على هاي، بس حيختلفوا في لحظة النهاية، تعالوا نشوف
الحل الجديد، هنقول نفس الفكرة، أنا هيني في إيه؟
بطلّع صفر طول ما بيجيني صفر، على الفاضي، أجاني واحد
أجاني قيمة واحد، بروح عليه وبِطَلّع صفر، الآن أنا
عارف حالي مش هوصل له إلا أكون شُفت واحد واحد، الآن
أجاني صفر، خلاص، بنعيد من الأول لإنه بدأ نستنى تلات
واحدات، لإنه إجبار الـ system تتعرف على تلات واحدات، طيب
أجاني واحد وأجاني كمان واحد، إذا أنا رُحت على C، إذا
أنا مش هوصل C إلا إذا جاء واحد، وأعقبه كمان واحد
طب أجى بعد الـ C الـ input صفر، بنعيد من الأول، نرجع من
الجديد، لأنه لازم يشوف تلات واحدات ورا بعض، طيب السؤال
روحنا لدي، ممتاز، الآن هنطلع واحد، الكل حيقول لي مش
هوُصل دي إلا إذا جاء واحد واحد واحد، ساعتها الـ
output في الحالة دي بيطلع واحد، طب السؤال الآن لو
أجى صفر، الكل حيقول لي سهل، الصفر، بنعيد من الأول، يعني
أجاني واحد واحد واحد، الـ output بتطلع واحد، وبعدين
أجى صفر، خلاص، بنعيد من الأول، نستنى تلات واحدات جدد، طب
السؤال، لو ما جاش صفر، لو أجى واحد رابع، أيوة وين
هرجع، انتبهوا، برجعه على الدائرة هذه، ليش برجع على
الدائرة هاي؟ لإني بدّي أستنى ورا هذا واحدين كمان
عشان يطلع للـ output واحد، لأن السؤال الجديد إيش
بيقول؟ السؤال الجديد هلق بيقول كل تلات واحدات متعاقبين
بيطلع output Y واحد فقط، فلما أجى الواحد وراه
واحد وراه واحد، طلع واحد، أجى الواحد اللي وراه ما له
دعوة، بطلع صفر لإنه ما شافش كمان تلات واحدات، فلما أجى
الواحد هذا، أنا إيش قلت له؟ ما قلت له إش رجع من الأول
لإن لو رجعته من الأول غلط، أنا بدّي تلات واحدات، فأنا
وين قلت له؟ قلت له أجيك واحد، روح لـ B، فأنا هكون إني
انتقلت لـ B، عند هذا الواحد، طبعًا ورا إن أجى كمان
واحد، وأجى كمان واحد، صاروا تلات واحدات، في الحالة هذه
بروحي بطلّع إيش؟ output واحد، إذا التعديل الطفيف على
السؤال إنه في حال الواحد ما بلفّش عليا هنا كمان مرة على
الـ D، وين بروح؟ بروح على B، البعض حيُسألني كمان مرة
طب أنت ليش ما رجعت على A؟ لأنه غلط أرجع على A، لأن لو
رجعت على A، بدّي أستنى غير هذا الواحد كمان تلات واحدات
وبيصير بطلّعش الواحد إلا بعد أربع واحدات، وده غلط، إحنا
قلنا كل تلات واحدات يطلع الـ output واحد لمرة واحدة
وبالتالي هدول التلاتة خلّصوا ووصلوا لدي، طب أجى
واحد جديد، معناها أنا وصلت لـ B، فخلاص بنتقل من دي
لـ B وبستنى عليه كمان واحدين، طب السؤال، افترض بعد
هذا الواحد هنا، افترض أجى الواحد زي ما أنت عملت، وروحِت
على B، أجى صفر، خلا
أقباله واحد ما شكلوش بلاش في السؤال اختلف هنا شوية
وبالتالي الـ state diagram اختلفت شوية بدل أن الـ D
كانت تلف على نفسها، الـ D صارت بتتعدى تلات وحايد جدد
فراحت على الـ B وصار الـ output صفر عشان يرجع من
جديد يدور على تلات وحايد. طيب تعالوا نسأل في نفس
الموضوع سؤال ثالث، وقريب شوية على الكلام هذا. إيش
السؤال؟ نفس السؤال الأول لكن مش شرط أن التلات
واحد يكونوا متتابعين، يعني مسموح يفوت واحد ويجي إن
شاء الله وراه ألف صفر، بده يظل الـ system بتذكر
الواحد اللي فات في الأول، وبعدين أجى واحد ثاني
صار داخل الـ system واحدين، مش شرط ورا بعض، صار داخل
حتى الآن واحدين، وإن شاء الله يجي ألف صفر بعدين
بمجرد ما يفوت النظام الواحد الثالث، حتى لو مش
متعاقبين، بده الـ output يطلع واحد، وبعدين يعيد من
الأول على كل الأحوال. هذه كيف نصممها؟ تعالوا نشوف
كيف نصممها؟ خليني
جنب هذه، أصممها الآن. قلنا نفس السؤال هذا لكن لا
يشترط التعاقب، لا يشترط أنه لازم يكونوا ورا بعض، مش
مشترط هذا الكلام، يعني ما عنده مشكلة ييجي واحد فرق
... ييجي، وبعدين إيش ما ييجي، وبعدين ييجي الواحد
الثاني، وبعدين إيش ما يجي، المهم لما يدخل الـ system
ثلاث وحايد يفوتوا على الـ system حتى لو مش ورا بعض
بده الـ output يطلع واحد. فهنا السؤال يختلف كليا عن
هذا. فإيش الإجابة تبعته، الـ state diagram؟ طلعوا
معاها التعديل البسيط. هنقول هي الـ A؟ وهي الصفر طول
ما بيجي صفر بيظل هان. إذا أجى واحد، هيروح على B
نظرت ولا لأ؟ الآن إذا أجى صفر، إيش نعمل؟ غلط، نرجع
من الأول. بدنا نلف هان، شايفين إيش الفرق؟ إنه الآن
الأصفار بطلت ترجعني أشتغل من أول وجديد. شايفين
الأصفار إيش كانت تسوي؟ ترجعني. الآن لإني أنا قلت مش
مشكلة لو ييجي أصفار، المهم الـ system يعد ثلاث وحايد
حتى لو مش ورا بعض. اختلف الكلام، فعشان إيش أسوي أنا
مستحيل أوصل الـ B إلا إذا شفت على الأقل واحد وحيد
الآن ماشي، أجي ورا الواحد هذا أصفار أصفار أصفار
أصفار، مش مشكلة، أنا لسه عادي، الواحد لمرة واحدة. الآن
أجى كمان واحد بعد فترة، هروح لـ C. طب يعني أنا مش
هوصل لـ C إلا بواحدين. طب عند الـ C أجى صفر، برجعش
من جديد. صار الـ system فايت عليه الواحد مرتين. فإيش
بسوي عند الـ C؟ إذا أجى صفر، بلف على الـ C. جد ما يجي
أصفار، لأن أنا مش هوصل لـ C إلا إذا مر واحد، بعدين
مر كمان واحد. جد ما في أصفار، أنا واقف في مكاني
برجعش من الأول، لأن السؤال الأخير إيش طالب؟ لا
يشترط التعاقب، لا يشترط يكونوا ورا بعض. مش مشكلة يجي
واحد بعدين أصفار، بعدين واحد، بعدين أصفار، بعدين يجي
الواحد الثالث، بدي يطلع الـ output one. ف أنا ما أشترط
التعاقب. علشان هيك أنا عند الصفر ما رجعته للبداية
قلت له كمل، خلاص أنت وصلت الـ B، سيرت شايف واحد على
الأقل، فكمل... كمل... كمل... كمل... أجى واحد جديد، okay
سيرت واصل الـ C، سيرت شايف واحدين، أجى صفر، بهمش
خليك في مكانك. أجى الواحد الثالث، الآن خلاص هيروح
على D. الآن بعد D تمام، بدي أعيد من الأول، خلاص صار
شايف ثلاث واحد، الآن بدي أعيد من الأول. والله إذا أجى
صفر، ارجع هان عشان أعيد من الأول، عشان يدور على ثلاث
واحد جداد. والله إذا أجى واحد، أعيد من هان. فصار في
عندي زي ما شايفين ثلاث رسومات مختلفة، لثلاث أسئلة
مختلفة. صح؟ الاختلاف بينهم طفيف، بس أنا كنت معنى في
هذا المثال أبين لكم شيء مهم، إنه إذا تغير شيء في
سؤال الـ design، لازم تتغير معك الـ state diagram حتى
تحقق الكلام تبع الـ state diagram. ف أنا سيرت الآن
هنا سألت ثلاث أسئلة. طب الآن، هالي لو أنا صممت الـ
circuit بتاعتها، هاي الثالثة. هاي لو أنا صممت الـ
circuit بتاعتها، عشان نستوعب اللي صار. هاي صممت الـ
circuit بتاعتها اللي داخل عليها clock،وداخل عليها
الـ X والـ Y اللي بدها تطلع. وافترض أجاني input هذا
الـ X أجاني زي هيك:
100101100110100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100100
الـ output هيطلع هنا zero، بس هيظل متذكر أنه فات
الواحد الأول، بعدين zero، بعدين zero، بعدين هيطلع
zero، بس هيظل متذكر أنه فات واحدين على النظام، بعدين
zero. أيوة لما يجيني الواحد الثالث، لأنهم مش متعاقبين
هيكون واحد، ثنين، ثلاثة، هيطلع الجواب واحد. خلاص
هيوصل هنا، الآن هيرجع الـ output لصفر، هستنى مني
بستنى كمان ثلاث وحايد، فهيرجع صفر. هي الواحد الأول
بيضلوا عادوا صفر صفر. هي الواحد الثالث بيضلوا عادوا
هي الواحد الثالث، شاف ثلاث وحايد، بيطلع واحد، وهيرجع
بعد هيك يطلع صفر، يستنى ثلاث وحايد تانين. هي صفر حتى
لو أجى الواحد، هي صفر، بس بيضل متذكر أنه في واحد عدى
هي صفر، هي صفر، هي صفر، خلاص لأنه ما دخلش الثالث. لكن لو
ضفت هيك... بيضيف الواحد الثالث، ف... ف... فهذا الـ
design الثالث نفس فكرة الأولاني، بس ما بفترض
التعاقب، أنهم ورا بعض، يكونوا ملازقين في بعض
وبالتالي احنا الـ conclusion اللي أنا قلته، احنا
الآن سألنا ثلاث أسئلة مختلفين في الواقع. صح؟ يمكن
بينهم شبه بعض، لكن هم في الأصل مختلفين. ولكل سؤال
كان فيه جواب، و بدي أنا عشان ما نخربطش، بدي أقول إيش
كان السؤال الأول، اللي هو جوابه؟ إيش كان السؤال
الثاني، اللي هو جوابه؟ إيش كان السؤال الثالث اللي
هو جوابه؟ عشان نمشي عن النقطة هذه. السؤال الأول اللي
كان هو جوابه: صمم sequential circuit تعمل detection
لثلاث وحايد، لازم يكونوا ورا بعض. إذا فاتوا الـ system
ورا بعض، تعمله detection، يعني في الحالة هذه الـ
output تطلع واحد، وأي واحد بعد الثلاث وحايد ملزق
فيهم، الـ output تطلع جوابهم واحد. فهذا كان السؤال
الأول. طبعا إذا أجى صفر بعدين، خلاص بعيد من الأول
بستنى ثلاث وحايد ملزقين مع بعض، أو أكثر. فأول ما يصير
الثلاث وحايد، الـ output خلاص بتطلع واحد، وإذا في أكثر
بيظل الـ output واحد واحد واحد واحد واحد واحد واحد
واحد واحد واحد واحد واحد واحد واحد
واحد واحد واحد
واحد. والسؤال الأول. السؤال الثاني، ما ليش
علاقة في الواحد زيادة. السؤال الثاني، جالك كل ثلاث
وحايد ورا بعض، أطلع جوابهم أو أطلع واحد، ما لكش
دعوة في الواحد زيادة، ما ليش دعوة فيها. هيك السؤال
اللي وراه بيقول: كل ثلاث وحايد ورا بعض بيفوت الـ system
على جوابهم أنا بطلع واحد. وبالتالي بعد الثلاث وحايد
أجى واحد جديد رابع، ما له داعي، بيصير يعده على أمل
يدور على ثلاث وحايد تانين ورا بعض، عشان يطلع واحد
وهذه حالتها هي، شايفين؟ عشان هيك بعد الثلاث وحايد، إذا
في واحد رابع، ما له علاقة، بيرجع من جديد يدور على
ثلاث وحايد. السؤال الأخير، افرض عن السؤال الأول أو
السؤال الثاني. افرض عنه فرق واحد، أنه بدنا نطلع واحد
إذا بيمروا في الـ system ثلاث وحايد، ومش بالضرورة
يكونوا ملازقين في بعض، مش بالضرورة يكونوا ورا بعض
خلاص، المهم يكون كل ما بيفوت الـ system ثلاث وحايد، إن
شاء الله لو بعاد عن بعض، خلاص الـ output بيطلع واحد
فعشان هيك اختلف السؤال، صار الصفر ما يرجعوش، خلاص صار
شايف واحد، واجب في مكان، صار شايف واحد ثاني، واجب في
مكان، لإنه بيكمل كل مرة تكملة، لإنه صرت أنا سألت و
بقول له مش بالضرورة يكونوا ورا بعض الثلاث وحايد، عشان
هيك ما صار يرجعهم، فخلاص صار يكمل، عشان كل ما بيفوت
الـ system ثلاث وحايد بيروح، بيطلع الـ output واحد. الآن
الشكل الرئيسي، لا أريد أن أنساه، ما هو الشكل
الرئيسي؟ أن لدي Sequential Circuit موجودة، ولدي
Input يدخل بشكل متتابع، ولدي Clock بيدخل بشكل
متتابع، ولدي Clock بيدخل بشكل متتابع، ولدي الـ
Clock بيدخل بشكل متتابع، ولدي الـ Clock بيدخل بشكل
متتابع، ولدي الـ Clock بيدخل بشكل متتابع، ولدي الـ
متتابع، و على جواب هذا الـ system بيطلع الـ output
فأنا الآن فعليا العملية ماشية باستمرار، pulse input
عدى pulse input، عدى pulse input، عدى pulse input
عدى، كل مرة output طالع، output طالع، output طالع
فطبعا في أسئلتي، كل مرة الـ output دي يخليه صفر، بس
ما يطلعش واحد إلا مثلا في حالة ثلاث وحايد متعاقبين
ثلاث وحايد مش متعاقبين، حسب السؤال. فهي باختصار فما
ننساش القصة هاي، باستمرار داخل الـ input، باستمرار
فيه الـ output، و بضل الـ circuit أنا قاعد بصممها هي
اللي قاعدة تشتغل وتنفذ المهمة اللي أنا طلبتها
المهمة اللي أنا طلبتها في السؤال هذا: detection
detector، يكتشف الثلاث وحايد اللي ورا بعض، ويطلع لي
جوابهم signal تضوي مثلا، تفتح خزنة، تعمل أي شيء. أخير
الموضوع ثاني تمام. أو في هذا السؤال الأخير: يكتشف
لثلاث وحايد، ما دخلوا على الـ system، مش ضروري
يكونوا ورا بعض. في هذا السؤال الأول، تحت design، وفي
أسئلة كتير في أسلوب الكتاب بهذا الموضوع، تحت
detection. طيب، الآن أنا مش هكمل باقي الخطوات من هنا
للرسم، لإنه كمان شوية هتكلم عنهم بالتفصيل، لأن هذا
سهل من هنا للرسم الأخير، الـ sequential، من هنا لـ الـ
sequential، من هنا لـ الـ sequential هذا كله سهل في
النقطة الثالثة على المحاضرة، هتكلم عنهم بالتفصيل الآن.
أنا بس بدي أضلني مركز على أسئلة design، وكيف أستنتج
الـ state diagram تبعها. أسئلة design وكيف أستنتج الـ
state diagram تبعها، والمفترض أنكم كمان بعد ذلك
تحلوا أسئلة كتير في هذا الموضوع، لإنه هو أصعب شيء
كيف من الكلام نطلع الـ state diagram. طبعا طيب، خلينا
نشوف أسئلة ثانية غير هذا السؤال. 601 00:42:
كيف بدي أعملها التالتة؟ بقاشي بقول هي الصفر الآن أنا
في عندي input اللي هو X، يعني هل أنا أروح على واحد
ولا هل أنا أروح على سبعة؟ مين اللي هيقرر؟ الـ input
أنا قلت قبل شوية إذا الـ input صفر، عد تصاعديًا
وبالتالي ححط هنا أنه في input، فإذا الـ input اجى
zero، اطلع هيك، إذا الـ input اجى one، اطلع هيك، شايفين؟
كيف؟ طيب نفس الفكرة، أنا في واحد، إذا zero الـ input،
وين هروح؟ الـ zero هروح تصاعديًا على اتنين، طيب إذا
واحد، ارجع تنازليًا على صفر، وهكذا بنكمل دائرتنا، عند
الصفر بتصير ثلاثة، عند الصفر بتصير أربعة، عند الصفر
بتصير خمسة، عند الصفر بتصير ستة، عند الصفر بتصير
سبعة، والرجوع هيك بدي يكون، هيك الرجوع، الرجوع بيكون
بالضبط هيك، طبعًا عند الصفر بتصير، عند السبعة بترجع
صفر، المهم هيك الرجوع، شايفين؟ عند الواحد، أشماله بيرجع
كل دائرة، عند الواحد بترجع للعدد الأصغر، شايفين كيف؟
فالدائرة اللي أنا صممتها على اللوحة، كيف بتتصرف؟
بتتصرف بناءً على الـ input، إذا أنت سايب الـ input اللي
هو الـ X بصفر، فتلاقيها بتاعت تصاعديًا، لأن أنا فترضت
الـ X هنا عند الصفر، بتاعت تصاعديًا، هي طلبت في السؤال
لو عند.. حط الـ X بواحد، بتاعت تنازليًا، طب كيف أكدلي
هذا الكلام؟ تعال أنا أفحص، مثلًا للدائرة هذه، أنت في
رقم 6، الآن لو الـ X بصفر.. ايش بدنا نعد.. sorry، في
الرقم ثلاثة، لو الـ X بصفر، ايش نجد؟ عيد، تجد أربعة
اطلع السهم اللي عليه صفر، وين يأخذك؟ قال لك إذا اجت
بلصة، و الـ X بصفر، هنتقل من ثلاثة إلى أربعة، هيك أنت
هتشوف العدد أربعة، طب لو أنا الـ X كانت واحد، اطلع
السهم اللي طالع عند الواحد، يجيك ساعتها الثلاثة
هتجيلك لاتنين، لأن احنا ايش قلنا؟ مش أخذنا قبل هيك أن
كل state حسب الـ input، وين الـ state اللي بتروح
عليها؟ عند الـ zero بتروح على مكان، عند الـ واحد بتروح
على مكان، فأنت تعال تتبع، الثلاثة عند الـ zero روحت
على أربعة، بينما الثلاثة عند الواحد رجعتها اتنين، و
هيك منطقيًا، ولكل دائرة بعمل زي هيك، لكل دائرة بحط
input، الصفر للعدد الأعلى، والواحد للعدد الأقل
وبهيك أنا بضمن أن أنا صممت sequential circuit تمام،
بتعد هنا تصاعديًا أو تنازليًا بناءً على الـ X اللي أنت
حاطه، يعني مثلًا أنا حاطط الـ X بصفر، مثلًا، وعد صفر
Clock pulse، Clock pulse ثاني، عد واحد، Clock pulse
عد اثنين، Clock pulse، عد ثلاثة، بعدين رجعت الـ switch
على واحد بتاع الـ X، وضغط Clock pulse جديدة، مش هيكمل
أربعة، هيرجع تنازليًا، اثنين، واحد، صفر، سبعة، ستة، إلا إذا
أنت رجعت الـ X على صفر، فخلاص صار الـ system هيتصمم
بناءً على الـ X، أنت بتشتغل تصاعديًا أو تنازليًا، حابب
يشتغل تصاعديًا بتحط الـ X بصفر، حابب يشتغل تنازليًا بتحط الـ
X بواحد، طب ممكن واحد يسألني سؤال هيك يقول، طب لو
أنا بدي العكس، بدي عند الواحد عيد تصاعديًا، وعند
الصفر عيد تنازليًا، مافي مشكلة، اعكس، حط بدل الأصفار
اللي بتطلعك على التصاعد، حطهم واحد، وبدل الواحد اللي
بنزلك على التنازل، حطه صفر، فماعنا مشكلة في
النهاية، ماعنا مشكلة، حسب أنت ايش بدك من الـ design
تبعك، وهنا لحظة، أنا سألت نفسي ثلاثة أسئلة وحلناهم،
أسئلة design جديدة، أول سؤال، صمم state diagram بهيعد
تصاعديًا، عملته، شايفين؟ هنا ما فيش إكسات، ليش مش إكسات؟
لأن أنا أثبّت الـ system هنا أنه يعد تصاعديًا، فبدون X
عارف حالي بعد السبعة بده ييجي صفر، عارف حالي بعد
الصفر بده ييجي واحد، لأنه هيك طلب في السؤال، ما قال
تصاعديًا ولا تنازليًا، قال دائمًا عيد تصاعديًا، وبالتالي ما حطيت
إكسات، التنازلي نفس الفكرة، في التنازلي ما حطيت Xات،
لكن ايش حطيت؟ بعد الصفر يجينا رقم سبعة، بعد السبعة
يجينا رقم ستة، بعد الستة يجينا رقم خمسة، وهكذا، لأن
خلاص هنا محسومة تنازلي، لكن هنا ليش استدعى الـ X؟
لأنه بدي أعمل دائرة تعمل الشغلتين، بدي مرة تصاعديًا و
مرة تنازليًا، فجاء، خلاص إذا الـ X بصفر تصاعديًا، إذا الـ X
بواحد تنازليًا، فأصبح الحل هيو، هان، وبهيك أنا صممت
state diagram للـ circuit بتاعت تصاعدي أو تنازلي
بناءً على قيمة الـ X الموجودة عندي، باختصار طبعًا، كيف
أوّصل للـ circuit؟ كمان شوية في النص الثاني بتاعة
المحاضرة، هنتكلم بالتفصيل، كيف من الـ state diagram
هنوصل للـ circuit النهائية، كمان شوية، بس الآن أنا
أركز فقط على الـ step الأولى، كيف من الكلام، كيف من
الشرح أطلع الـ state diagram، تمام؟ طيب الآن خلوني
برضه آخذ سؤال ثالث، أخير للـ design، وبعدين نبدأ
نكمل ونفصل في الخطوات الثانية، خلّيني أمسح هذا
الكلام
السؤال الثالث بيقول، الأخير، الثالث بيقول، اعتبروا بدنا
نصمّم sequential circuit لإشارة ضوئية، تمام؟
والإشارة الضوئية لازم أكون أعرف كيف بتشتغل الإشارة
الضوئية، أول شيء بيكون مثلًا الأحمر ضاوي لحاله، تمام؟
بعدين أحمر وأصفر مع بعض، بعدين أخضر لحاله، بعدين
أصفر لحاله، وبعدين بيعيد نفسه، هيك الإشارة الضوئية
بتشتغل، فالآن قاعد بيقول لي صمم لي إشارة ضوئية، عشان
أصمم لي إشارة ضوئية، كم لمبة عندي؟ عندي ثلاثة، أحمر،
أصفر، أخضر، فأنا بقدر أقول هي عندي ثلاثة بتات، على
أساس عندي الصفر، صفر، صفر، مع نقطة، فين بس، احنا أول ما
نبدأ مش هنعمل هيك، أحمر هي، أصفر هي، أخضر مثلًا، تمام؟
أول ما بتبدأ الإشارة الضوئية بدنا نبدأ بالأحمر
ضاوي، فبنقول الـ output اللي طالع 100، فهي أول دائرة
أنا بديها الواحد عشان تضوي الحمراء، والصفرة طافية و
الخضراء طافية، الآن سؤالي، طب ايش الحالة اللي بعد
هيك؟ ايش الـ state اللي بعد هيك؟ الشطار هيقولوا
الآن الأحمر بيضوي مع الأصفر، وبالتالي هتقول لي بعد
هاي سهم على طول، لأنك عارف الحالة اللي جاية،
هتقول لي هاي أحمر، هاي أصفر ضاوين، هاي أخضر طافي، على
طول، طيب الإشارة خلصت ولا في حالة كمان؟ لأ، لسه في
حالة كمان، ايش الحالة اللي بعد هيك؟ هتقول لي بعد هيك
الأخضر لحاله ضاوي، فهتروح تقول لي 001، الأخضر
ضاوي، طيب خلصت الإشارة ولا فيه كمان؟ لأ، الأصفر
لحاله ضاوي بعد هيك، فهتقول لي بعد ما الأخضر بكون
ضاوي بفترة زمنية، هيجي الأصفر لحاله يضوي، طب بعد هيك
هتقول لي بعد هيك خلاص، هرجع من الأول، هيصير أحمر، أصفر
وهكذا، الآن أنا ايش صممت هنا زي ما شايفين على
اللوح، أنا الآن صممت الـ state diagram الخاص
بالإشارة الضوئية، كمان شوية ممكن نشوف كيف بنصمم له
الـ logic تبعه، لكن أنا بهمني كيف نصمم الـ state
diagram، فأسهل الـ design كتير، لكن الشطارة أن نحاول
نطلع الـ state diagram صح، لأن إذا الـ state diagram
طلع صح، أنا بقول كل اللي بعد هيك هتلاقوه سهل، هتوصل
للـ dialer بدون مشاكل، مرة واحد هتتعلموها سهل جدًا، هي
بس أصعب خطوة، كيف من السؤال هذا نطلع الـ design،
كيف أستنبط الـ state diagram؟ إذا تم استنباطه صح،
انتهى السؤال بيصير سهل بعد هيك، والتصميم بيصير سهل
للأخر، كل الخطوات بعدها هنجيها سهلة، هي بس أهم خطوة،
الخطوة الأولى فقط، تمام؟ طيب هي خلّصنا الـ step الأولى
في الـ design اللي هي خاصة بموضوع كيف نطلع الـ state
diagram، أخذنا يمكن هنا ثلاثة أسئلة مختلفة، تمام، سؤال
كان عن الـ detector، سؤال كان عن العدادات، سؤال
كان عن الإشارة الضوئية، طبعًا أسئلة الكتاب برضه هتزيد
الأفكار أكثر، وهنحاول يمكن خلال المحاضرة الجاية
أحل سؤال أو سؤالين أسئلة الكتاب، من باب تقوية
لهذه المعلومة، طيب خلّصنا الـ step الأولى، بس قبل ما
أبدأ أرجع لباقي الخطوات، أنا بهمني شغلة مهمة، ايش
اللي بيهمني؟ شغلة مهمة أنه نكون فاهمين أنه لو أنا
عندي دائرة، تمام، وعارف حالي طول عمري بعد هذه
الدائرة رايح على دائرة ثانية، وهاد إجبارية، خلاص
بعمل زي كده وبخلص أن الحالة هاي دائمًا بيجي وراها
هاي، طيب إذا أنا متردد أو عندي حالتين، يعني إذا أنا
مثلًا بقول أنا قاعد في حالة معينة، الأنوار ضاوية هيك
مثلًا، مثلًا، وحابب أنه أخلي عندي دائرتين مختلفتين، يعني
أطلع من هان مرة على هاي، وأطلع من هان مرة على هاي،
مرة بدي أنوار الزينة تطفي، ومرة بدي أنوار الزينة
مثلًا، بدي حاجة مختلفة، طالما أنت بتفكر تطلع دائرتين
من نفس الدائرة، أنت الآن مجبر يكون في عندك X، ليش؟
هذه الـ X عشان أنت بتحدد الـ system، والله لو الـ X ب
0 روح هنا، لو الـ X ب 1 روح هنا، فصارت الـ X إجبارية
فالـ X متى بتكون إجبارية؟ إذا أنت بدك تطلع من دائرة
لدائرتين مختلفتين، لازم تحطّ ضابط، لازم أحطّ الـ X، إن
والله عند zero روح للحالة الفلانية، عند واحد روح
للحالة الفلانية، أما إذا أنت طالع من دائرة أ، و
رايح طول عمرك لدائرة ب، وما فيش عندك خيارات ثانية،
ما فيش، دا على الـ X، فبتنتهي القصة هذه في الـ design
طيب واحد ممكن يسأل يقول، أنا حابب أنوار الزينة
تبعي الثلاثة هدول، مثلًا اللي كانوا ضاوين، مرة بدي
أياهم يكونوا طافين، مرة بدي يكون الأول ضاوي، والأخر
ضاوي، مرة بدي مثلًا يكونوا هيك، ومرة بدي أياهم مثلًا
يكونوا هيك، أنا حرّ في الزينة تبعي، ومرة بدي أياهم
يكونوا مثلًا كده، طب شوف، الحالة دي، سؤالي، أنا قاعد
بتكلم عن أربعة احتمالات ممكنة من نفس الدائرة، أنت
الآن مجبر أنك تعمل X من اثنين bit، ليش X من اثنين
bit؟ لأن اتفاقنا جايب عليك، في الـ logic، اثنين bit
بيعملوا لي أربعة احتمالات، وبهيك بصير أقول مثلًا لو 00
بدي الاحتمال هذا، لو 10 بدي الاحتمال هذا، لو 01 بدي
الاحتمال هذا، لو 11 بدي الاحتمال هذا، إذا كل ما
كثرّت الخيارات، الخروج من دائرة لدوائر أخرى، أنت مضطر
تضيف الـ input، لكن السؤال هذا الـ input بت واحد ولا
بتين؟ ولا ثلاثة ولا كم؟ هذه على حسب الدوائر اللي
بتطلع لها، إذا أنا بس بدأ أروح على واحدة من اثنتين،
خلاص بتكفيني X عشان الـ zero على الأولى، والواحدة
على الثانية، طب لو أنا بدأ أروح لواحدة من ثلاثة
وواحدة من الأربعة، معناه أنا بدي باثنين بتات، عشان
الصفرين أقول هي الخيار الأول، وواحدين هي الخيار 827 00:
الطرق اللي أخذناها؟ تمام، الآن هذا ما عملناه جاهز
State Reduction عشان ما نضيعش وقت، خلاص، هذا ما
عملناه State Reduction ما فيه تبسيط أكثر من هيك
لكن الأصل أن تجرب بيدك و تتأكد أن هي في أبسط
صورة أو لا، لأن كيف بدك تعرف؟ الأصل دائماً بعد ما
بتعمل الـ state diagram بتعمل الـ test و الفحص اللي
هو هل هي مبسطة أم لا، و تبسطها، الآن أنا
تجاوَزت هذه الخطوة، لماذا؟ لأن هي فعلاً في أبسط صورة
خلصنا، إذا الخطوة 2 خلصناها، بسطناها في أبسط صورة، طب
ما الخطوة 3 اللي مش معمولة هنا؟ الـ state assignment
لماذا أقول state assignment؟ انظر في الدوائر
الدوائر، حاطين أسماء، مش حاطين أرقام، هذه مسمّى S
note، هذه مسمّى S1، هذه مسمّى S2، هذه مسمّى S3
واتّضح لنا أننا لا نستطيع الخطوة الثالثة في التصميم، أنّه
لا نستطيع رؤية أسماء، طب ماذا أفعل الآن؟ أعمل state
assignment كما تعلمنا في المحاضرة السابقة، طب
كيف أعمل state assignment؟ إذا لم يطلب مني في
السؤال، أنتم أحرار، عندكم binary assignment، وعندكم
gray assignment، وعندكم one-hot assignment، إذا طلب
في السؤال، علينا أن نلتزم، تمام، هو لم يطلب، فأنا
سأختار binary assignment، كيف قلنا الـ binary
assignment؟ طالما أربع دوائر، كم flip-flop؟ اتّضح
أليس قلنا المرة اللي فاتت؟ طالما أربع دوائر، معناها
اثنان flip-flop، لماذا اثنان flip-flop، وليس اثنان flip
flip؟ يُعملان اثنان، أقصى اثنان، أربع دوائر، أليس هكذا؟
لما كنا زمان نحلّل في الـ analysis، لما كان عندي
اثنان flip-flop، كم دائرة كنت ترسم؟ أليست تقول
اثنان، أقصى اثنان، و ترسم أربع دوائر، الآن الموضوع
بالعكس، عندي أربع دوائر، إذاً كم flip-flop؟ نفس
الفكرة، اثنان أس اثنين، يعني عندي اثنان flip-flop
طيب لو كان عدد الدوائر سبعة، ثمانية، كم flip-flop؟
أكيد الكل يعلم أنّه ثلاثة flip-flop، لماذا؟ لأن
اثنان أس ثلاثة، ثمانية، فأنا معي ثمان دوائر، واضحة؟
لا ننسى المعلومة السابقة، إذاً طالما عندي الآن أربع
دوائر، نقول أنّه يلزمنا اثنان flip-flop، أو سيُلزِمنا
بمعنى آخر، في الـ assignment، اثنان bit، الاثنان bit
كم احتمال يُعطيني؟ يُعطيني أربع احتمالات: 00، و 01، و
10، و 11، الآن ماذا نفعل؟ نعطي كل دائرة رقماً، اتفقنا؟ ليس
هكذا اتفقنا المرة الماضية، في الـ state assignment
طب كيف آخذ الأرقام؟ كلّ شيء صحيح، يعني لو أخذتها بشكل
randomly، أخذت الصفر لهذه، و الواحد لهذه، و الاثنين
لهذه، كلّ شيء صحيح، لكن اتفقنا أن نمشي بشكل مرتّب، خلاص
الصفرين للأولى، الواحد للي جنبها، الاثنين، لأنّ اثنين
ثلاثة، ثلاثة، ونشتغل هكذا، لنتّحد بالشكل و
بالمضمون، لكن لو لم ألتزم بذلك، في النهاية، صحيح
أنّ شكل الدائرة سيختلف، لكن المضمون واحد
ستعمل نفس العمل، ستعمل detection للثلاثة متتابعين،
لن يتغير هذا الكلام، المضمون واحد، لكن
سيختلف شكل الدائرة، وحتى نحصل على نفس الشكل، نحن
ونحن نعمل معاً، خلاص سأختار الصفر صفر لهذه
سأختار 01 لهذه، سأختار 10 لهذه، سأختار 11 لهذه
لأنني قبل قليل، عملت المثال على اللوح
كنت عامل A، B، C، D، فحطيت الـ A صفرين، و حطيت الـ B
واحد، و حطيت الـ C اثنين، و حطيت الـ D ثلاثة، إذاً أنا
ماذا فعلت حتى الآن؟ أنهيت الـ step الثالثة، ما الـ
step الثالثة؟ الـ state assignment، أنهيتها، وهي أسهل، ماذا
الـ state assignment؟ طيب، سؤال على الهامش، لو أحد قال لي
نريد استخدام طريقة الـ one-hot assignment، يعني أنا
سأمسح، سأعود إليها لاحقاً، سنعمل على الـ binary، لكن
افرض السؤال يقول: اعمل state assignment باستخدام
الـ one-hot، كيف نعمل الـ one-hot؟ اتفقنا المرة
الماضية، أن طالما عندي أربع دوائر في الـ one-hot
assignment، فأنا عندي أربع خانات، سأقول الأولى: 1
ثلاثة أصفار، سأقول الثانية: 0100، سأقول الثالثة: 0010، سأقول
الرابعة: 0001، خلاص، وأعمل على هذا الأساس، سيصبح
الأسماء طبعاً، الـ slash لن يتغير، الـ slash اللي تحت
هذا، موضوع الـ output، ليس لنا علاقة به، هذا الـ output
مكتمل، وموجود، أنا أتحدث عن الأسماء، أتحدث عن
الـ label، الآن هذه الأسماء يجب أن نعطيها أرقام، سواء بالـ
one-hot assignment، سواء بالـ gray assignment، سواء
بالـ one-hot assignment، فلو لم يُحدد في السؤال
بالـ one-hot، اتضح لنا المرة الماضية أن في الـ one
-hot، عدد الخانات يساوي عدد الدوائر، وعملناها المرة
الماضية، ففي هذا المثال عندي أربع دوائر، إذاً
أنا صنعت أربع خانات، خلاص، واحد، ثم أصفار للأولى، واحد
في الثانية، ثم أصفار للثانية، واحد في الثالثة، ثم
أصفار للثالثة، واحد في الرابعة، ثم أصفار للرابعة، و
هكذا باختصار، سأعود الآن إلى الـ state assignment الـ
binary، لنحلّ عليه، لكن ليس خطأً لو حللنا هكذا أو
حتى بالـ gray assignment، ليس خطأً، كلّ شيء صحيح، سأعود لسؤالي
الآن، الذي هو بالـ binary assignment، الذي هو 00
/ 01 / 10 / 11 / ممتاز، طيب
السؤال الآن، ما الخطوة الرابعة؟ وهذا جديد علينا
الذي نفعله الآن، نرى الخطوة الرابعة، هذه الـ state
assignment، أولاً، ماذا؟ الـ state diagram موجود، تمام
تبسيط الـ state diagram، تمام، الـ state assignment
values، تمام، ما الخطوة الرابعة؟ تعالوا لنرى كيف نعمل
الخطوة الرابعة، الخطوة الرابعة تكون كالآتي:
سنعمل الـ state table الذي اعتدنا عليه
ما الـ state table؟ كيف نصنع الـ state table؟
نقول: أنا في البداية، في صفر صفر، أليس كذلك؟ و أتاني صفر، اتفقنا زمان أن كم input
عندي؟ ستقول: عندي الفليب فلوب، هذا اسمه مثلاً A،
وهذا اسمه مثلاً B، وهذا اسمه مثلاً، الذي هو X، صحيح
أم لا؟ ليست هذه ثلاثة input، أنا شخصياً أستطيع استخدام
كم input؟ أليس اتفقنا أن هذه اثنان flip-flops
صحيح أم لا؟ أليس قلنا الـ flip-flops يكون inputها زيادة على الـ
input الصريح؟ لما كنا نعمل state table زمان، في الـ
analysis، فأنا عندي اثنان flip-flops، فهي اثنان
input، اسمها A، اسمها B، مثلاً، وعندي X، أصبح عندي
فعلياً A، B، وهما الـ flip-flop بتاع، الدائرة
وعندي X، هذا نسمّيه الـ present state، الـ present
state، أليس قلنا سنعمل هنا next states check؟
أليس هذه هي التي قلنا سنعملها؟ سنضع الـ next state
وسنضع الـ output، كما كنا نعمل، فأنا أعمل بنفس
الطريقة هنا، لا نسمّيها، كي لا نخلط، A plus one، B
plus one، طب كيف عرفت أنّه فيه اثنان output؟ ليس
اتفقنا أن الـ flip-flops نعدّه مرتين، مرة في الـ
input، ومرة في الـ output، فأنا أوّلاً وضعته في الـ
input: A، B، ووضعْت معهما الـ input الصريح، طب في الـ
output، نعدّه مرة أخرى: A plus one، B plus one، والـ
output الصريح، إن وجد، هو الـ output الصريح داخل الدائرة
فلذلك أقول، وعندي Y، طبعاً حتى لو لم يكن داخل
الدائرة، حتى لو كان فيه slash هكذا، ووضع مثلاً zero
خلاص سأضع الـ output أيضاً، لأنّ هذا output صريح، فدائماً
الذي تحت الـ slash output صريح، فأنا كما كنت
أعمل زمان، الآن هنا فيه slash، وفيه output صريح
وبالتالي عرفت أنّه عندي A، و B، وهما
من flip-flop إلى flip-flop، وعندي الـ output الصريح
لأنّ لأملأ هذا الجدول بالترتيب، سأملأه
فليس صعب عليّ استنتاج هذه، هذه استنتجتها من الدائرة
أنّه عندي اثنان flip-flop، وهما في الـ
input، وفي الـ output، طب X من أين جبته؟
الـ X جبته من الـ edge، الذي هو صفر، طب الـ Y
من أين جبته؟ الـ Y دائماً آخذه من تحت الـ slash، يعني
إذا الـ slash كانت هنا أو الـ slash كانت هنا أضيفه
طيب، سؤال هكذا للأذكياء، لو فرّضاً في نفس السؤال كان فيه
هكذا، ساعتها ماذا أقول؟ أقول: عندي اثنان
output صريحين، أقول: عندي Y1، وافترض أنّها Y1، و
أقول: عندي Y2، وافترض أنّها Y2، وأبدأ أكمل
الشغل، لو كان هكذا، انتهينا، ليس هناك شيء، خلاص، هذا ليس
موجود، وبالتالي الـ Y2 ليس موجوداً، طيب سؤال آخر، افرض
كان تحت الـ slash قيمتان، نفس الفكرة، أصبح عندي
اثنان output صريحين: Y1، و Y2، أسمّي واحدة Y1، وواحدة Y2
وأكتب Y1، و Y2، وأكمل الشغل، لو كان هناك اثنتان، وليس
هنا إلا واحدة، وبالتالي سأكتفي بالـ Y
الموجودة، التي ليست غيرها، التي هي هـاية
سهل عليّ أن أعرف أنّ عندي اثنين input، واثنين output
زاد الـ output الصريح، زاد الـ input الصريح، فذهبت
سجّلت معلوماتي في الـ state table كما ترون
طيب الآن، كيف أُكمل؟ كيف أكمل الجدول؟ الجدول
آخذه من هنا، كيف؟ يعني أبدأ واحدة واحدة، آخذ
الدائرة الأولى، أنا في 00، وأتاني 0، إلى أين سأذهب؟
ستقول: إلى 00، والـ output 0، يعني هذه، كيف أسجّلها؟ سأذهب
إلى 00، والـ output هو 0، أليس كذلك؟ هذا الـ output
يعتمد على الدائرة، فطالما ستذهب إلى 00، هذا الـ
output 00، فأنا على طول في 00، وأتاني 0، عدت إلى 00
طب السؤال: لو أنا في 00، وأتى 1، إلى أين سأذهب؟ إلى
01، لذلك، ماذا أفعل؟ أنا في 00، وأتى 1، سأذهب
إلى أين؟ إلى 01، خلاص، عرفت أين سأذهب، مرة أخرى، طب الـ
output الذي هو؟ الذي أضعه؟ الخطأ الشائع
الذي يقع فيه الناس هو أن يعملوا على هذه ليضعوا الـ Y، وهذا خطأ
الـ Y يعتمد على الدائرة الحالية التي أنا فيها، على
الـ present state، وبالتالي، طالما هذه أصفار، ليس لي
دخل بهذه الـ Y هنا، أليس اتفقنا وقلنا هذه
النقطة قبل ذلك؟ أنّي طالما موجود في هذه
الدائرة، أعرف الـ output، لأنّه سيعتمد على هذه
الدائرة، سيعتمد على الـ present state، فطالما هذان
أصفار، أصفار، في هذه الدائرة، أو في هذه الدائرة، معناها
هذا الـ output، طب ما المكتوب هنا؟ هذا ما زال المكتوب
المستقبلي، إلى أين سأذهب؟ هذه الحالات لم تأت، لم تحدث
الـ state، أنا فعلياً لم أصل لهذه الدوائر، أنا فعلياً 1050 01:
بمشي الحال لو استخدمت الـ T، بمشي الحال لو استخدمت
الـ JK، بمشي الحال لو استخدمت mixing واحد من هذا
واحد من هذا برضه بمشي الحال، كله صح تمام، لكن احنا
اليوم هنشتغل عليهم بالدور، هنحل بالـ D، وانحل بالـ T
وأنحل بالـ JK، عشان نسكر الدرس من كل اتجاهاته إن شاء
الله، طيب، خلونا الآن نتابع، على فرض بدنا نختار الـ D
بدنا نختار، نرسم بالـ D، هي عندي DA وهي عندي DB، طبعاً
أنا بهمل شغل، تكونوا أنتم فاهمينها كويس، اللي هي
الرسمة النهائية، لازم أنا بعد ما بخلص الـ state table
لازم يكون في عندي تصور للرسمة الأخيرة للـ structure
تبعها، مش شرط التفاصيل، لكن الشكل العام، تعالى
أول شيء في الشكل العام، عشان نقدر ندخل في تفاصيلها
كمان شوية، الشكل العام كالتالي، خليني أتفرج، هتقول لي
بدي يكون في رسمتي، في flip-flop اتنين، هي الأول، هي
التاني، بغض النظر عن النوع، الأول، بغض النظر عن النوع
التاني، هتقول، بيكون فيه اتنين flip-flops، طب أنا من
وين عرفت أنه فيه اتنين flip-flops؟ مش قولنا قبل
شوية، أن القيمتين هدول، flip-flops، إذا في عندي اتنين
flip-flops، أكيد هتكون الـ clock معهم، لهم، مشابكات
مع بعض، لأن أنا بقعد بصمم Synchronous، إيش يعني
Synchronous؟ يعني متزامنين، يعني كلهم بيشتغلوا عند
نفس الـ clock، كلهم بيشتغلوا عند نفس النبضة، وبالتالي
أنا عندي تصور واضح، إن هدول هيكونوا مشبوكين مع بعض
وأحياناً ممكن يكون حاجة اسمها clear، إذا أنتم
متذكرين الـ clear، برضه بيكون مشبوك مع بعض، كل clear
بنشبكهم مع بعض، وكل clock بنشبكهم مع بعض، هذا كله
أنا ما بدي أكون ناسيه، وبدي أكون عارف، طبعاً أن هذا
سميناه A، واحنا سميناه 1B، بغض النظر عن نوع الـ flip
flop، هل هو D، هل هو T، هل هو JK، لكن سميناه 1A و
سميناه الثاني B، وبدي أكون عارف إنه في input صريح
جاء من برا اسمه X، داخل على الدائرة، طب من وين أنا
جبت هذا الـ X؟ ما هو مبين هنا في الرسمة، مش قولنا
على السهم، الـ X بيبين، طب لو هدول صفرين، معناها في
عندي X1، وفي عندي X2 داخلين، وهكذا طبعاً، لأنه هنا
مافيش إلا إيش؟ قيمة واحدة، معناها في داخل X في الـ
system، طيب، إيش طالع الـ output منه؟ الشاطرين
هيقولوا لي، وبرضه في output صريح، يبقى أكيد الـ system
هذا طالع منه في النهاية Y، وزي ما قلت أنا قبل شوية
لو كان في اتنين هنا، ولا كان في واحدة زيادة هنا،
بيصير يقول، طالع مني Y1 وY2، حسب الـ output اللي عندك
في رسمتي هذه تحديداً، في عندي اتنين flip-flops
رسمتهم، طالما رسمت اتنين flip-flops، دائماً الـ clock
ثابت مع بعض، دائماً الـ clear ثابت مع بعض، في عندي
input صريح، قلت لكم هي، وبدي يدخل عليّ X واحد، في
عندي output صريح، بدي يقول، بدي يطلع من الدائرة Y
فلازم أنا المخطط العام هذا، لازم أكون متخيله قبل ما
أبدأ أدخل بالتفاصيل، لازم أكون متصور القصة، لازم
أكون عارف كيف أحسبهم من الدوائر، عارفين لو كان عندي
مثلاً هذه، مش قيمتين، هذه ثلاث قيم، إيش معناه؟ هيكون
عندي ثلاث flip-flops، هيكون عندي ثلاث سنديج من هذا، لو
كان، بس أنا ما عنديش إلا إيش؟ اتنين flip-flops، عشان
أيه؟ كرسمت سندجين، طيب السؤال المهم الآن، خلاص
الكويس أنك تكون عارف الـ structure تبعك، السؤال هذا
الـ flip-flop إيه؟ شو بدك يكون نوعه؟ احنا اتفقنا
بدنا نشتغل، الـ turn نعمله D، و كنا جايين قبل
شوية، أنا قادر أشتغل بالـ T، قادر أشتغل بالـ JK، قادر
أشتغل بأي حاجة، بس عشان نتعلم اليوم الجزء الأول
فرضناه D، الآن، إيش بنتوقع، هذه ناقصها عشان تكمل؟
الشاطرين هيقولوا لي، لو أنتم عارفين معادلة الـ D، الـ logic
تبعها، ورسمتها، ولو أنتم عارفين معادلة الـ D الثانية، الـ logic
تبعها، ورسمتها، ولو أنتم عارفين معادلة الـ Y، ورسمتها
هتقول لي، خلاص، دائرتنا خلصت، بتكون أنتم وصلتوا للـ
sequential circuit بالكامل، لو أنا عارف المعادلات
لسه أنا مش عارف المعادلات، أنا شوف كده، أنا أسوي
المعادلات، أنا لحظة بس، عارف الشكل العام، كم flip-flop
كم input، كم output، نوع الـ flip-flop، لكن لسه
التوصيلات ما عملتهاش، إيش الـ logic الموجود، إيش
معادلة دي، كيف أرسمها، هذا داخلينه، بتباع شوية شوية، بس
في الأول، لازم على طول بندور، ها الـ state diagram
اللي قولنا هي الأساسية، أكون قدرت أستنبط على طول الـ
state table، وبشكل موازٍ يكون عندي تصور للرسمة اللي
بدي أوصل لها، طبعاً، طيب الآن ندخل بالتفاصيل، حبة حبة، عشان
أقدر أعبّر عن الفراغات اللي ضايلة، حتى أقدر أجيب
المعادلات، وأقدر أرسم، طبعاً، إيش التفاصيل هنا؟ احنا
اتفقنا سوا، أنه بدنا نرسم بالـ DA والـ DB، صحيح؟ صحيح
الآن سؤالي، اللي مركزوا معي، وهو عملية سهلة، مش
صعبة، لو أنا كنت الحالة السابقة صفر، والحالة الجديدة
اللي بدها تيجي صفر، إيش الـ DA لازم تكون، عشان الـ 0
تصير 0؟ الشاطرين عارفين أن الـ 0 على الـ A بتطلع 0،
الـ 1 على الـ A بتطلع 1، فالشاطرين هيقولوا لي، عشان
الحالة الجديدة تصير 0، لازم الـ D تصير 0، وهذه معلومة
من الشرح السابق، لزمان، اللي جاب للتسجيل، كيف الـ D
بتشتغل، تمام، فالشاطرين هيقولوا، طالما أنت الحالة
السابقة صفر، بدها تصير صفر، بنعرف أن الـ D لازم في
الحالة هذه تكون صفر، ممتاز، طيب نكمل الآن، طيب اللي
وراها، أنا كانت عندي صفر، وبدي الحالة الجديدة تصير
صفر، إيش دي؟ إيه؟ هيقولوا لي صفر، على طول طبعاً الشاطرين
هيقولوا لي، خلاص، ما هي نفس العمود اللي هان، زي ما
كنا نعمل زمان، بالعكس، بدك تنجله هان، الكل هيكون
فاهم، هذه القصة، لكن خليني أنا أكملها بشكل مباشر، هاي
عندي صفر، عشان يصير صفر، هنحط هنا إيش؟ صفر، الـ
صفر، عشان يصير واحد، هنحط هنا إيش؟ واحد، الواحد
عشان يصير صفر، إيش هنقول؟ صفر، الواحد عشان يصير
واحد، إيش يصير؟ واحد، المهم في الآخر صفر واحد
فالشاطرين عارفين أن الـ D هي نفسها اللي بدها تصير، هي
نفسها اللي على المدخل، فممكن ننسخ هذا مباشرة، ننسخوا
هذا، والآن لاحظوا، ما فينا نلخبط، أنا الآن قاعد بأتكلم
على flip-flop A، إيش يعني بأتكلم على flip-flop A؟
يعني بدي أشوف الـ A السابقة، وأشوف الـ A اللاحقة، عشان
أعرف، دي إيه، ما نخربط، ما ندخل في B، بي، لسه اللي تحت،
الـ B، جاي دورها، فما فينا ندخل أسلاك في بعض، خلاص، A
سابقة، A اللي هتيجي، شو الـ D لازم تكون، عشان الـ A تيجي
زي هيك، فروحنا سجلنا كل المعلومات، هنعيد الشغل الآن
لمين؟ لـ B، كيف ده؟ هعيده لـ B؟ بتطلع بنفس القيمة، إيش
كانت الـ B السابقة؟ إيش الـ B اللي بتيجي؟ عشان أعرف
الـ DB الجديدة، على طول، هنقول الـ B كانت 0، عشان تصير
0، هنخلي الـ DB صفر، الـ B كانت صفر، وهذه معلومات سابقة
قبل التسجيلات، وهذه الـ B صفر، عشان تصير واحد، واحد،
الواحد، عشان يصير صفر، صفر، فالشاطرين هيقولوا لي، اختصر
وانجل العمود هذا، زي ما اتعلمنا قبل، أنجله مباشرة،
خلاص، مش زمان كنا نعمل العكس، كنا ننجل هذا، نخلي هو الـ
بي، نرجع، برجع... الآن، هي هي، هنرجع من الـ بي للـ دي بي
عكس اللي كنا نسوي زمان، فخلاص، نفس العمود هنا
بنخليها، لأن أنا بأتكلم عن دي بس، انتبه، لو اتكلمت عن
تي ولا جيكي، هيختلف الكلام، لأ، هيصير في شيء ثاني، بس
هي الـ D، الأسهل، اللي هتأخذ نفس القيم هنا، تحطها هنا،
طبعاً، لكن أنتم بالنسبة لكم، ممكن تكملوا التكميل،
الواحد عشان يصير صفر، بدي يطلع صفر على المدخل، الـ
صفر، عشان يصير صفر، لازم يكون على المدخل صفر، وها
كذا، لغاية ما نخلص الباقي اللي موجودين عندي، طيب لحد
هنا، احنا إيش سوينا؟ لحد هنا، الـ state table جهز،
خلصناه، بدي أذكركم، في الـ analysis، في الـ analysis كان
هذا معطى، وكان هذا معطى، وكان هذا مجهول، فكنت في الـ
analysis، أكمل، وأجيب هذا، اللي بتتذكره، اليوم العملية
بالعكس، صار هذا معطى، وهذا معطى، وهذا المجهول
اللي أنا قاعد أحسبه، وحسابه مش صعب، زي ما أنتم شفتوا
سهل جداً، خلاص، نفس العمود تاع الـ B، بحطه للـ DB، نفس
العمود تاع الـ A، بحطه للـ A، ليش؟ لأن أنا عارف الـ D
كيف تشتغل، الـ D، صفر على المدخل، هي صفر على المخرج،
واحد على المدخل، هو واحد على المخرج، بعدين، حتى نديكم
تفهموها كمنطق، وركزوا شوية، عشان تفهموها كمان، مش
تحفظوها، أرجع للـ إيه؟ إيش يعني أنا صفر جبت لي
صفر؟ هذه إيش معناها؟ معناها أن الحالة السابقة
لزمان كانت صفر، هذه معناها الحالة اللي بدها تجي،
الحالة الجديدة، اللي بدها تصير من هذه، الـ D بدها
تصير صفر، هذه الحالة الجديدة، فالسؤال، إيش بدي مدخلك،
لازم يكون، عشان أنا يطلع هذا الصفر، فاحنا كلنا بنعرف،
عشان يطلع الصفر، لازم أنت يديكون صفر، عشان هذا الصفر
اللي يطلع، فخلاص بقوله صفر، عشان يطلع الصفر، شفتوا
كيف؟ نفس الفكرة هنا، لما يطلع هادي لهاديه، هذه الحالة
اللي زمان صفر، هذه الحالة اللي بدها تصير، بعد، الـ D
تصير واحد، فإيش يا مدخلك يا D، عشان هذه الجديدة تصير
واحد؟ الكل هيقول، لازم أديك الواحد، عشان تصير
الجديدة واحد، فزي هيك، فهذه لها معنى أساساً، على الـ D
اللي احنا اتعلمناه، واشتغلناه، صفر على المدخل، صفر
على المخرج، واحد على المدخل، واحد على المخرج، تمام،
فماننساش الفكرة هي، تمام، طيب الآن بدنا نكمل، ما
خلصناش لسه، احنا لحد هنا، كل اللي سويته، جبت عمود
لـ DA، جبت عمود لـ DB، طب إيش التكميل، ده كامل؟
خلوني أمسح بس هاي، أوه، هذه المفروض ما مسحتهاش، خليني
احنا مش مشكلة، وخليني أحط أبيض ورا، عشان نرسم، طيب،
الآن أنا كل اللي بدي إيّاه، اعتبروا الـ DA function 1، من
الـ Logic 1، واعتبروا الـ DB function 2، وهي المداخل
المعروفة، لو سألناكم، الـ Logic 1، بتقدروش تجيبوا
معادلة الـ DA
وين؟ خلاص عشان ما أُخبط في الأسلاك هذه
بتوصل على الـ A اللي هي هنا، وهذا بتوصل على الـ X اللي هو
وين الـ X هذه؟ خلاص تمام؟ وضال من عندنا عشان نرسم
الخلاص ضال الـ Y، الـ Y شو معدّلة T؟ A في B يعني بتعمل
and و هي الـ A، و هي الـ B، وبهيك أنا رسمت sequential
circuit. خليني أحط عليها صندوق عشان يتبين هذه الـ
sequential circuit اللي أنا رسمتها، شايفينها هذه؟
الصندوق المغلق، شايفين هذا؟ صندوق مغلق، بس فايت عليه
الـ clock، وفيت عليه الـ Xات، يعني كل نبضة بتفوت X
وطالع منه الـ output اللي هو Y. هذه باختصار، هذا اللي
جوا الصندوق هو الـ sequential circuit تاع الـ
detector. يعني هذا الآن أنا ما بهمّنيش إيش فيه جوا، لأن
للمستخدم ما بهمّنيش التصميم اللي جوا، أنا
صممته وريحته. الآن هنا حيصير في input بتدخل باستمرار
في clock pulses بتدخل باستمرار، في output رايح على
لمبة، اللمبة مستحيل تضوي إلا إذا شاف الـ system ثلاثة
وحيد متعاقبات وراء بعض. إذا شاف ثلاثة وحيد، ساعتها الـ
output بيعطي فقط في الحالة هذه الوحيدة واحد، ساعتها
الواحد هذا يضوي لمبة، يفتح خزنة، يعمل تشغيل أي شيء.
خلصنا. فهيك باختصار كل خطوات الـ design من A to Z
لسؤال الـ detector. طبعا هناخد أكثر من أسئلة كمان
شوية عشان نأكد الفكرة. ولحظة، أنا اشتغلت بس اليوم
OD، لكن كمان شوية هشتغل T، وهشتغل JK. طبعا طيب
الآن إيش اللي سوّينا في هذا السؤال؟ كمان مرة من باب
الـ conclusion، عشان ما نضيعش، ما نتوهش. أول حاجة عملنا
الـ state diagram. ما عرفش، مش هتباين من الخربشة. عملنا
الـ state diagram اللي تحت هذه، اللي هي موجودة من بينها.
الـ state diagram، من وين جبناها؟ جبناها من سؤال الـ
design. يعني كان في سؤال design في الأول بيقول يا
جماعة، بدنا نعمل circuit تعمل detection لثلاثة وحيد
وراء بعض، عشان نطلع واحد. فروحنا رسمنا الـ state
diagram بالظبط اللي هي موجودة الآن قدامي على الكتاب.
فهذا الـ state diagram كان الخطوة الأولى لتحويل
الكلام تبع الـ design لـ state diagram. الخطوة اللي
بعد هيك اشتغلنا على هذا الـ state diagram اللي
قدامكم، حاولنا نعمله state reduction. لجناه، انبسط، و
جاهز، مش هينبسط أكثر من هيك. بعد ذلك، اتطلعنا فيه،
لجينا في عندنا S node، لجينا في عندنا S1، في عندنا
S2، في عندنا S3، وقلنا، بظبط، بدنا نحاول نعمل state
assignment. إيش يعني state assignment؟ يعني نقلب
الأسماء لأرقام، وطبعا في عندنا ثلاث طرق: الـ binary، و
الـ grey، و الـ one hot. احنا اخترنا في المثال هذا الـ
binary. فاستبدلنا الـ S node بـ 00، استبدلنا الـ S1 بـ 10،
استبدلنا الـ S2 بـ 01، استبدلنا الـ S3 بـ 11. بعد ما خلصنا
واستبدلنا، انتقلنا من هذا الـ state diagram للهذه الـ
state table المرسوم الآن على اللوح. يعني أنا من الـ
state diagram روحت استنبطت منه الـ state table، وزي
ما أنتم شايفين، الـ state table مش صعب أن أطلعه من
الـ state diagram. إذا الـ state diagram موجود، سهل
جدا أعمل الـ state table، لأن الـ state diagram هذه
بِتِعرفني كم flip-flop في
الدائرة، بتعرفني إذا في output صريح ولا لأ، بتعرفني
إذا في output صريح ولا لأ. فهذه المعلومات هي
المعلومات المهمة عشان أقدر أشكّل الـ structure بتاع
الجدول. بعد ما أشكّل الـ structure بتاع الجدول، الآن
بيظل الإجابة: أنا في 00، وأجي 00، وأين بدي أروح؟ أجي
1، وأين بدي أروح؟ إيش راح يطلع؟ فبرجع، بتطلع كمان
مرة في الـ state diagram، بشوف الـ 00 عنده الـ 0، وأين
راحت؟ وإيش طلعت؟ وبروح بسجّل كل المعلومات زي ما
اتعلّمنا. فبعد ما بعمل أنا الـ state table زي ما
أنتم شايفين، ضال السؤال المهم: إيش الـ flip-flops
اللي أنت بدك تستخدمهم في الرسم؟ أنا في مثلي هذا
قلت أستخدم الـ D، والـ D هو أسهلهم. فروحت عملت اسم الـ
flip-flop الأول D، و flip-flop الثاني D، واستنبطت
هذا العمود من السابق واللاحق. استنبطت الـ D المفروض
تكون إيش؟ بعدين عدّيت الكلام للـ B، الـ B السابق والـ B
اللاحق، وعرفت إيش الـ DB الجديدة. وطلعت الـ Y، بعد هي
جاءت العملية، خلاص خلصت. بدك تجيب معادلة Y، زي ما
اتعلّمنا في Logic، Karnaugh Map. معادلة Y، Karnaugh Map،
معادلة DA، Karnaugh Map، معادلة DB. خلاص، ارسم مباشرة هيك
القصة خلصت. لسؤال الـ design... الآن سؤال: أنت عندك
الآن في النهاية رسمة circuit، hardware، بتقوم بعمل
detection لثلاثة وحيد اللي وراء بعض... كل ثلاثة وحيد
وراء بعض بتطلع لي واحد. وإذا زاد، الواحد الرابع والخمس،
بتظل تطلع لي واحد لغاية ما يجي صفر، وتعيد من جديد.
فهي كانت الـ design من A to Z. الآن تعالوا نرجع بس
نشوف الخطوات اللي كانت مكتوبة عشان نبدأ نستبدل بالـ
D, T، و J, K. الخطوات اللي كانت مكتوبة، ده بتذكروا قبل
شوية؟ وينها؟
هنصغّر بس عشان بس نقرأها ونشوف إيش اللي عملناها.
طلع خطوة واحد، رقم واحد، عملناها from the word
description and specifications of the desired
operation, derived a state diagram for the circuit.
وهذا اللي عملناه، أنه طلعنا الـ state diagram من
الخطوة واحد. بعدين روحنا عملنا reduce the number of
states if necessary. روحنا عملنا state reduction.
لجيناها مبسّطة وخلصنا. بعدين روحنا عملنا اللي هو
state assignment، يعني روحنا حطينا values للأسماء
اللي كانت موجودة عندي. وهنا في عندي أكثر من طريقة،
واحنا اخترنا الـ binary values. بعد هيك احنا عملنا
obtain the binary code state table، اللي هو سمّيناه
state table، اللي اللي عملناه على اللوح، الـ state
table. بعد ما عملنا الـ state table، قررنا نختار إيش
الـ flip-flop اللي بدنا إياه. احنا الآن في المثال، أنا
اخترت الـ D. كمان شوية هعيد السؤال بالـ T، وكمان شوية
هعيده بالـ JK. بس احنا اخترنا الـ D. طيب، بعد ما اخترنا
الـ D، إيش بيقول لي؟ قال لي: الآن ابدأ تطلع المعادلات،
derive the simplified flip-flop input equation،
يعني إيش معادلة DA؟ إيش معادلة DB؟ وتطلع
معادلات الـ output. إذا في عندي Y1، شو معادلتها؟ لو
في عندي Y2، إيش معادلتها؟ فبعد ما طلعت الـ outputs
كلهم، خلاص قال لي: أنت الآن جاهز للخطوة الأخيرة اللي
هي الرسم النهائي زي ما أنا رسمت قبل شوية. وبهيك
الخطوات خلصت. طبعا هناخد الآن أكثر من أمثلة عشان
أكد الخطوات هذه ونحاول نفهمها بشكل كويس، لكن أنا
قبل ما أغادر المثال هذا، حابب نفهم، لو اخترنا حاجة
غير الـ DA وغير الـ DB، لو اخترنا حاجة زي الـ JK، لو
اخترنا حاجة زي الـ T، ليش؟ لأنه إذا أنتم فهمتوا
عادة المثال، كيف أتعامل مع الـ D، وكيف أتعامل مع الـ T،
وكيف أتعامل مع الـ JK، هتصير الأمثلة اللي بتحكيها
بعدين سهلة، خلاص مجرد أمثلة، لأنّه فهمنا الفكرة
الأساسية. فأنا حابب أكمل على المثال، الكتاب مش مكمل
على نفس المثال، بس أنا حابب أنا أكمل على نفس المثال
عشان نفهم الفكرة. الآن إيش اللي بدي أسوي أنا بس؟
خليني أحط صفحة بيضاء. الآن أنا إيش اللي بدي أسوي؟ بدي
أمسح إنّه أنا اشتغلت بالـ D، يعني الآن هذه بدي أمسحها،
خلاص، هذه بدي أمسح هذا الكلام.
وبدي أمسح إنّي اخترت الـ D، بدي أمسح هذه، بدي أمسح
هذا. تمام.
وبدي أحافظ على هذه. طيب، أول شيء، كمان مرة،
طيب، كمان مرة، أنا بهمني لما تشوفوا... وهذه نقطة
مهمة، هي هذه اللي ممكن الواحد يخربط فيها، لكنها مش
سهلة، لكنها مش صعبة، سهلة. بمجرد ما أنا أشوف الـ
state diagram، بعد ما أعمله reduction، بعد ما أعمله
state assignment، بمجرد ما أشوف الرسمة هذه، لازم يكون
عندي قدرة لشغلتين: الشغلة الأولى، أعرف كم flip-flop في
الـ loop، وأعرف كم input صريح، وأعرف كم output صريح.
قبل ما أبدأ أشتغل هناك، لازم كل هذه المعلومات أكون
أنا عرفها من الرسمة هذه، عشان ما أستصعبش هناك بعدين.
النقطة الثانية، لازم تكون متخيّلها، لازم تتخيّل الرسمة
الأخيرة اللي بدك تشتغلها، بمجرد ما تشوفها هذه، حتى
قبل ما توصلها. يعني أنا بمجرد ما شفت الرسمة هذه،
عرفت، والله هيكون عندي اثنين flip-flop، فريحت دماغي.
خلاص، هذه flip-flop A؟ وهذه اسمها A
bar. شايفين، أنا برسم على طول، لإني عارف، بغض النظر عن
نوع الـ flip-flop، وفي عندي flip-flop ثاني اسمه B،
خلاص على طول بقول له: هذه في عندي B، بغض النظر عن نوعه،
المخرج تبعه B، المخرج تبعه B bar. على طول عارف أنه
في clock اللي مستمرة، هذه ثابتة، الـ clock للنظام،
هكون عارف أنه في عندهم الـ clear أو الـ reset أو
whatever، هي موجودين. هذا كله بكون عارفه، وبكون عارف
أنّه داخل على الدائرة input صريح، سمّيته X. هذا لازم
تكون متخيّله، وبكون عارف أنه طالع من الدائرة output
صريح، اسمه Y. فهذه كل هالشغلات لازم أنت تكون متخيّلها
قبل ما تبدأ تشتغل هناك، بمجرد بس ما تشوف هذه تعرف. طيب،
إيش بيظل هذا ناقصه عشان أخلص؟ بس بيظل أحدّد نوع
flip-flop، عشان أحدّد المعادلات وأرسم وأخلص. فأنا
ليش أنا، من وين أبدأ أجيب المعادلات، ومن وين أبدأ
أحدّد نوع flip-flop؟ الآن من هنا، فأنا بعد هيك خلاص
حدّ، انتقل من هنا إلى هنا، أحدّد نوع flip-flop وأخلص.
المعلومات اللي هنا، وأجيب المعادلات، وأرسم. فالفكرة
تبعنا أنه لازم أنت تكون متخيّل كل هذه القصة من هنا
عشان نكون فاهمين، عشان ما نتغلطش في السؤال. فأنا هطول
من هنا، نفهم شكل الرسمة وفهم كيف شكل الـ table. طيب، أنا
هذا السؤال قبل شوية حلّيته صح؟ إيش حلّيته؟ حلّيته، فرضت
هنا D وD، صح ولا لا؟ الآن هاني، بس بدي أعيد، و ما بديش
أفترض أني أشتغل D، ما بديش أشتغل D، خلاص، حلّيناها D،
وشفناها. بدي أفترض أنه بدي أستخدم الـ T flip-flop.
فالآن أنا همسح الـ D، وأقول: بدنا نشتغل T، وبدنا
اتعلمنا زمان 0, 0, 0, 1, 1, 0, 1, 0 الآن تعالوا
نختصر زي ما اتعلمنا الاختصارات هتقولولي هذا الواحد
مع هذا الواحد في مجموعة وهذا الواحد اللي حاله في
المجموعة إذا مش مشكلة الـ TA تساوي على طول A bar B
X زائد المجموعة هذه عبارة عن إيش؟ اتفقوا هنا في X
bar إذا هيك معادلة TA خلصت الآن بدي أجيب معادلة
من نفس الفكرة معادلة TB تعالوا نشتغل على معادلة
TB هاي معادلة TB هنجيب
الـ kern of map تمام، وبنقول هي A B X 0 1 0 0 1 0 1 1
0 1 وحناخد معلومات الـ T بيها، نعبّيها جوا يعني هي
الـ zero هي الـ واحد تمام؟ بعدين هي الـ واحد، بعدين هي
الـ واحد، بعدين هي الـ zero، بعدين إيش؟ واحد واحد zero
و بدنا نختصر زي ما اتعلمنا زمان الاختصارات هنقول
أن هذا الواحد مع هذه في مجموعة، وهذا الواحد مع هذه
في مجموعة، وهذا ممكن ناخده هنا أو ناخده هنا، إذا الـ
TB معدلتها B بار X زائد B X بار زائد احنا
حرين ناخد هذا مع هذا أو هذا مع هذا، الاتنين صح زائد
A بار ما بي الآن، ومعادلة الـ و حسبناها قبل شوية في
المثال اللي جابله A بي الآن، إيش ضال علينا نسوي بس
نرسم، تمام، بدنا نرسم، تعالوا نرجع لرسمتنا الأصلية
الأساسية، خلينا نرسم إيش معادلة الـ TA هتقولي هتقولي
خلاص سهلة، عبارة عن or و and x و and و خلاص هنوصلها
دي زي ما أنتم عارفين في الـ A bar اللي هي هيها و
هنوصلها دي في الـ B اللي هي هيها، و هنوصلها دي في الـ
X اللي هي هيها، و نكمل التانية A X bar هنوصلها دي
في الـ A اللي هي هيها، و نوصلها دي في inverter و الـ
X اللي هي هيها، و أكون خلصت من معادلة TA، معادلة TB
بنفس الفكرة بدنا نرسم or كبيرة مثلا تلت أنداتو
نوصل كل هدول زي ما أنتم عارفين، و هاي الـ Y عبارة
عن AB و نخلص، وهيك بنكون رسمنا المثال الآن زي ما
أنتم شايفين، احنا رسمنا الـ sequential circuit بالـ
T flip flop، و لو سألنا كمان مرة
ما ننساش أنها بتعمل detection للتلت وحيد اللي ورا
بعضكم، مابيش تلت وحيد بتطلع لي واحد، هتقولي طب أنا
اشتغلت بالـ T مش بالـ D مافي مشكلة، اشتغلت بالـ D
اشتغلت بالـ T، اشتغلت بالـ JK، اشتغلت بالـ D والـ T مافي
مشكلة، حتى لو الشكل في النهاية اتغير، في الآخر نفس
المضمون، هتعملك الـ detection اللي اتفقنا عليه، لأن
هدول كلهم منبثقين من الـ state diagram، عشانك أنا
أقول أن الـ state diagram هو الأصل اللي لازم أنت
تكون شغاله صح بكل تفاصيله، فإذا أنت شغّلتُه صح، بعدين
أي دائرة أنت بتطلعها بتختلف شكلا، لكن من ناحية
المضمون بتعمل نفس الشغل، بتطلع نفس الـ outputs اللي
أنت كنت بدّي إياهم يطلعوا، الآن مثلنا اللي أنتم
شايفينه هذا، تمام، أنا حليته لحتى الآن مرتين، مرة بالـ
D و مرة بالـ T، طيب واحد ممكن يسألني سؤال يقول طب
أنا أفرض بدي أعمل رسمة تالتة، بدّيش كلّه T و بدّيش كلّه
D، ها إيش بدّك؟ قال بدي الأولى تكون D و بدي التانية
تكون T، بيقول له مافي مشكلة، بيقول له عادي خلاص رجع هذه
D A خلاص، و اشطب هذا، و اشتغل على D الـ A اللي جديها
Zero و الـ A اللي جديها Zero، إيش لازم الـ D تكون؟
و كمل عمود الـ D اللي عملناها قبل شوية، و بدّك التاني
يكون T، وهيا عملنا عمود الـ T، خلاص جبت معادلة الـ D
برسمها، جبت معادلة الـ T برسمها، يعني ماعندي مشكلة في
الآخر، أنت حر تختار أي flip flop دكية، اختار الـ D
و التاني D، واحد D و التاني T، هذا T و هذا D زي ما
بدّك، في النهاية كل flip flop بـ flip flop، أنت حرّ خياراتك بس
لازم تشتغل عليه صح، بمعنى لما أنا اتطلعت على
السابقة و اتطلعت على الجديدة، أنا بدي D خلاص لازم
أتعامل، إيش الـ D لازم تكون؟ طب بدّيش D بدي T، خلاص إذا
كانت الجديدة Zero و الجديدة Zero، إيش الـ T لازم
تكون؟ no change مثلا، وهكذا، ممكن بدّيش T ممكن بدّي JK
نفس الفكرة، إذا كانت السابقة Zero و اللاحقة Zero شوية
J لازم تكون، شوية K لازم تكون، يعني نفس السيناريو
مش هيتغير، الآن أنا هعيد الحل المرة الأخيرة، التالتة
بالـ JK، يعني أنا حليت السؤال بالـ D، حلّيت السؤال بالـ
T، و بدي أعيد حله بالـ JK، بعد هيك احنا حرين بدنا
نحله بالـ D مع الـ T، و T مع الـ JK، كلّه بيصير، ما عنده
مشكلة، فخلّيني أشوف كيف بدنا نحله بالـ JK، و بدي أرجع
لأن كمان مرة للجدول، و نشتغل بالـ JK، طبعا مش هامسح
الرسم الأساسي، لأن الرسم الأساسي ما بتغيّرش، بس اللي
بتغيّر نوع الـ flip flop، لكن هم هيظل عددهم اتنين، هيظل
الـ X داخلة، ويظل الـ Y طالعة، فمش هيتغيروا، لكن نوعه
هو اللي هيتغيّر، فالآن تعالى نشوف لو بدنا نشتغل بالـ
JK كيف الموضوع بده يصير، بس بدي أرتّب اللوح شوية
عشان ما نلخبطش كتير، خليني بس أمسح هدول من جديد، و
أرتبهم، تمام، اللي هم 00012
تلاتة أربعة خمسة ستة، خاطر سبعة، تمام، هذه التامة
الاحتمالات، وبعدين بدنا تلت أسفار، واحد سفر، واحد
سفر، واحد تلت أسفار، تلت أسفار واحد، بعدين سفر واحد
سفر واحد، وبعدين هذا عبارة عن سفر واحد، طيب خليني
أحطها عشان ما ألاخبطشها، 01 3 أسفار، بعدين 101 101
تمام، و الـ output زي ما هو، وهذا خلاص، وهذا الـ T
بطّلناه، و بدنا نحل الآن بـ flip flop بجديد، تمام، و
خليني زي ما بنعمل السطور عشان إيش يكونوا قبل بعض
عشان ما ألاخبطش، تمام، طيب الآن بدنا نكمل المثال بآخر
طريقة حل اللي هي باستخدام الـ JK، طبعا عشان أستخدم
الـ JK خليني بس أحط فراغ هنا، تمام، الآن نفس الفكرة
أنا بدّي أختار أن الـ flip flop هذا يكون JK
وبالتالي هحط هنا JA أسمّيها، و KA، يعني صار الآن لحظة
في خطين، لأن لازم أعرف شو الـ JA و شو الـ KA بالنسبة
للتاني، أنا حرّ، بدّي JK بدّي D بدّي T، برضه من باب
التأكيد على المعلومة، بدّي أختاره JB KB تمام، يبقى
الآن إيش بدنا نعمل؟ شطارتنا الآن نحاول نجيب معادلة
JA و نرسمها، ومعادلة KA و نرسمها، ومعادلة JB و
نرسمها، ومعادلة KB و نرسمها، و نرسمها، و خلاص الرسمة
بتخلص، طب السؤال الآن كيف بدّه أجيب الـ JK؟ طب عشان
أحل الـ JK في جدول اسمه Excitation Table، بدنا نحفظه
الآن، ونستكمل المحاضرة القادمة، إيش هذا الجدول بيقول لي؟
الـ 0 للـ 0، 0، X، الـ 0 للـ 1، 1، X، الـ 1 للـ 0،
X، 1، الـ 1 للـ 1، X، 0، الآن هذا الجدول خاص بالـ J
K، خلاص، خلاص بالـ J K، الآن هذا بدّه حفظ، وحفظ
المرة الجاية هنشتقه، ونعرف كيف هنشتقه، الآن احفظ
وليه احفظ؟ تمام، تعالوا نشوف كيف بدّه نشتغل، احنا قررنا
أن الـ flip flop، ايه هي الحالة السابقة، هي الحالة
اللاحقة، إيش بدنا نختار؟ اخترنا JA KA مظبوط؟
فبدنا نحفظ، بعدين بدنا نطلع على الـ B مع الـ B عشان
نعرف مين JB KB، تمام؟ نرجع الآن للجزء الأول
يعني يلا نطلع، أنا كنت في صفر و صرت صفر، إيش الجدول
بيقول لي؟ صفر و صرت صفر، إيش نحط؟ 0X، فبقى بيجي بحط هنا
0X، خلاص من الجدول مباشرة، مافيش فيها لا لف ولا
دوران، كيف الجدول المرة الجاية بنشتقه، الآن بنتطلع
عليه، و نحفظه، الآن بس هنتطلع و نشوف 0 ل 0 0X 0 ل 0
0X
zero لواحد، اه zero لواحد، واحد X، طيب
واحد لزيرو X واحد، واحد
لواحد X zero، واحد لزيرو X واحد، 1 ل 1 X 0، طبعا خطأ
شهر البعض بيوجع فيه أنه مرات بيروح بتطلع على A مع B
هذا غلط، أنت عشان تطلع JK بتاع الـ A بس بتطلع على الـ
A السابقة و الـ A اللاحقة، ما عليك شغل في B، أنا لما بدّي
أحسب JB و KB بتطلع الـ B اللي فاتت و الـ B
اللي جاية، لكن أنا طالما بتكلم عن الـ flip flop
الأولاني بتطلع السابقة و اللاحقة تعال الـ A عشان
أعرف اللي J K الآن خلصنا الـ J K بتاع الـ flip
flop اللي فوق A، الآن بدنا نعمل نفس الفكرة لمين؟ للـ
flip flop التاني اللي هو B، يعني بدنا أطلع الآن على
B السابقة و B اللاحقة عشان أعرف الـ J K الجدد
بتاعون B، نفس الفكرة من الجدول، أنا كنت Zero و Zero
من الجدول Zero X، Zero واحد، واحد X، و بدّك تكون دقيق
لأن أي نجل غلط كلّه بعد ذلك بيصير غلط، لازم تكون
مركّز، واحد واحد لـ Zero X، واحد واحد لـ Zero X، واحد
Zero لـ Zero Zero X، Zero لواحد واحد X، هذه سهلة جدا
واحد لـ Zero X، واحد واحد لواحد X 0، الآن خلصت الخطوة
الأخيرة، السهلة، بتاعة logic one، بدي أخد هذا على الـ
map و أحله، و أجيب معادلته، بدي أخد هذا على map و
أحله، و أجيب معادلته، وهذا على map و أحله و أجيب
معادلته، وهذا على map و أحله و أجيب معادلته، و أرسم
الكل، طبعا أنا هاكتفي الآن بس أعمل اتنين و خلاص
الباقي أنت بتكمّل، لأنه خلاص صار logic one مافيش فيه
إشي، فأنا هعمل لكم الـ JA و الـ KA و أرسمهم، و أنتم
بنفس الطريقة بتعملوا الـ JB و الـ KB و ترسمهم، تعالوا
نعمل الـ JA، هتقولي الـ JA هي الـ kern of map زي
ما اتعلمنا، A B X، خد البيانات جوا، 0001
X X X X، طبعا هذه الـ don't care، هيريحني ويملي
معادلات أصغر، إذا هذه رسمناها للـ GA، إيش معادلة الـ
GA؟ يلا خد هذه مع هذه، اختصار أكثر، فبتعطيني هذه
0010001101، بتعطيني BX، طيب الآن بدنا للـ KA، يعني هذه
المعادلة الأولى، بدنا للـ KA، هتقول لي هي kern of map
تاني للـ KA، و هتقولي هاي B، عفوا A، B X، زيرو
وآن زيرو، زيرو وان، زيرو وان، وان، زيرو وان، و هتعبّي
البيانات، X X X X، واحد زيرو واحد زيرو
الشاطرين تعالوا، لـ logic one هيقولوا هدول الأربعة
مع بعض، إذا اسم المجموعة، شو اسم المجموعة؟ X bar، و
هذا الـ logic one، خلصنا من JA، خلصنا من KA، تعالوا
نرسم، هتقول الـ JA عبارة عن إيش؟ الـ JA عبارة عن AND 1710