المساكات

الدوائر المنطقية نوعان، نوع توافقي وفيه تعتمد قيمة الخرج في أي لحظة على قيم الدخل للدائرة، ونوع تعاقبي وتتميز بالتخزين وفيه تعتمد قيمة الخرج على قيمة الدخل وقيمة الخرج السابق ومن أمثلة هذا النوع من الدوائر المساكات والقلابات.

المساكات Latches

من دوائر التخزين الثنائية، حيث يخزن فيها بت واحد وتحتفظ بقيمتها لأن خرج الدائرة يعود إلى مدخلاتها مرة أخرى كما في الشكل:

دائرة المساكمخطط دائرة المساك

عمل دائرة المساك

  Q R S
حالة الإمساك حيث لا تتغير القيمة السابقة Q0 0 0
reset تخزين القيمة 0 0 1 0
set تخزين القيمة 1 1 0 1
غير مسموح ? 1 1

تخيل لو أن عندنا ذاكرة تستوعب لبت واحد، نستطيع تخرين القيمة 1 فيها بإدخال القيمة 1 على الدخل S للحظة واحدة، وعندما نريد تخزين القيمة 0 فإننا ندخل القيمة 1 على الدخل R، ومادام لا توجد دخل على الدائرة فإنها ستحتفظ بآخر قيمة لها.

يمكن بناء المساك باستخدام بوابات NAND وعندها تحقق الجدول التالي

  Q R S
غير مسموح ? 0 0
set تخزين القيمة 1 1 1 0
reset تخزين القيمة 0 0 0 1
حالة الإمساك Q0 1 1

ولو قلبنا قيم الدخل كذلك سنحقق الجدول اﻷول مع استبدال الدخل S بـ 'S و R بـ 'R، وعندها تكون الدائرة كما يلي:

  Q 'R 'S
حالة الإمساك Q0 0 0
reset تخزين القيمة 0 0 1 0
set تخزين القيمة 1 1 0 1
غير مسموح ? 1 1

مساك ببوابتي NAND

الصور من wikipedia

المفسر 'فاكك الشيفرة'

من الدوائر المهمة داخل الحاسوب والتي مهمتها فك الشفرات الثنائية في دوائر التحكم، جدول الحقيقة والدائرة المنطقية موضحة في اشكل التالي:   نرى من الجدول أن الخرج يحتوي قيمة واحدة مغايرة للبقية. ويستفاد من هذه الدائرة في التحكم في تشغيل أحد الاجهزة الإلكترونية وتعطيل الأجهزة الأخرى.   الجدول السابق عرض مفسراً من نوع 2X4 (مدخلين وأربع مخارج) ويمكن بنفس الطريقة (وبمراجعة المواضيع السابقة) بناء مفسر من نوع 3X8 أو 4X16 حيث أن العلاقة بين عدد المدخلات والمخرجات nX2n.

مفسر 2 في 4

ويمكن أن يكون المفسر يخرج آحاداً وصفراً واحداً، عكس الدائرة السابقة وذلك باستبدال بوابات AND ببوابات NAND وعندها ستحقق الجدول التالي:

D0 D1 D2 D3 A0 A1
0 1 1 1 0 0
1 0 1 1 1 0
1 1 0 1 0 1
1 1 1 0 1 1

بعض المفسرات يكون لها دخل إضافي يطلق عليه Enable مهمته تشغيل دائرة المفسر أو تعطيله هذا المدخل يدخل كل بوابات المفسر، عندها ستحقق الدائرة الجدول التالي ومعنى الحرف X أن القيمة لا تهم سواءً أكانت واحداً أم صفراً:

D0 D1 D2 D3 A0 A1 ُE
0 X X 0 X X 0
1 0 0 0 0 0 1
0 1 0 0 1 0 1
0 0 1 0 0 1 1
0 0 0 1 1 1 1

 

كيف يعمل الحاسوب

هذه صفحة أضفتها إلى صفحات موقعي تجد رابطها بالأعلى، وفيها جمعت روابط الدروس التي تحدثت فيها عن تصميم دوائر الحاسوب وبعض المواضيع ذات العلاقة بالترتيب، حيث أني تخطيت بعض المواضيع التي سأعود لها لاحقاً وعندها ساضيف روابطها في مكانها المناسب على الصفحة.

دوائر الطرح المنطقية

طرح عددين ثنائيين يمكن بأن يكون حاصل جمع المطروح منه ومتمم المطروح، وبالتالي يمكننا عمل دائرة طرح منقطية بنفس طريقة دائرة الجمع، (وأيضاً يمكننا تصميم دائرة واحدة تقوم بالعمليتين كما سنرى لاحقا)، وكما كان لدينا دائرة نصف الجمع ودائرة الجمع الكامل، فلدينا دائرة نصف الطرح ودائرة الطرح الكامل.

دائرة نصف الطرح
ويتم من خلالها طرح عددين مكونين من بت لكل منهما بدون إمكانية أخذ استلاف منهما لأجل عملية سابقة، وتتم فيها عملية الطرح كما في الجدول التالي حيث يمثل B0 حالة الحاجة للاستلاف من الخانة التالية:
A B D B0
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0


من الجدول نجد أن علاقة الطرح تكون:

لاحظ أن ناتج الطرح D يشبه تماماً حاصل الجمع والاختلاف هنا في عملية الاستلاف حيث أن الدخل A للبوابة وَ يتم قلبه ببوابة النفي.
Half Subtractor                                Half Subtractor - Block Diagram

دائرة الطرح الكامل
في هذه الدائرة سنأخذ في الاعتبار إمكانية الاستلاف لأجل الخانة السابقة (في حالة بناء 4bit Full Subtractor أو أكثر) لهذه الدائرة ثلاث مدخلات هي المطروح منه والمطروح والاستلاف كما في الجدول التالي:
A B Bin D B0
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1

من الجدول نستطيع الحصول على العلاقة:

وفيما يلي الدائرة المنطقية للطرح الكامل:
Full Subtractor

تعديلات طفيفة

السلام عليكم
لقد أجريت تعديلات طفيفة على الموقع، أعد كتابة البرنامج بشكل أكثر تنظيماً، الواجهة لم تتغير كثيراً، بعض الروابط تغيرت ولم أكن أود ذلك، وأخيراً قمت بحذف المكتبة ومعرض الصور من الموقع، برنامج معرض قد أرجعه بعد التعديل بمحتويات جديدة ومتجددة بعد فترة، وحتى ذلك لكم مني أجمل تحية، قد غبت طويلاً وسأعود لغيبتي التي أرجو أن لا تطول ثم سيكون لي عودة معكم بإذن الله.

دوائر الجمع المنطقية

 السهل تصميم دائرة الجمع المنطقية، بالرجوع إلى موضوع جمع الأعداد الثنائية نجد أن حاصل جمع بتين لا يخلو من الحالات الآتية في الجدول
ABSC
0000
0110
1010
1101

حيث S هو حاصل الجمع و C هو فائض عملية الجمع Carry، السؤال الآن ما علاقة الخرج S بالدخل A, B؟ نلاحظ أن الخرج S يكون صفراً في حالة كون الدخل A, B غير متشابهين، أي أن العلاقة XOR (أحدهما وليس كليهما)، أما علاقة C بالمدخلات فمن الواضح أنها علاقة وَ AND. حيث يصبح واحداً إذا كان الدخلان مساويين للواحد، وبناء على ذلك يمكن بناء الدائرة باستخدام بوابة XOR وبوابة AND كما في الشكل التالي:

دائرة نصف الجمع

وهذه الدائرة تسمي دائرة نصف الجمع (Half Adder) ويرمز لها أحيانا بالرمز التالي:
رمز دائرة نصف الجمع
لجمع عددين مكونين من 4 بتات (أو من أي عدد من البتات، 4 هنا مجرد مثال) فإننا نحتاج إلى 4 دوائر جمع على التوازي، كما يجب إضافة الفائض من ناتج جمع أول خانة إلى الخانة  التالية، أي عمليتي جمع، لذلك يمكننا تصميم دائرة أخرى تقوم بجمع بتين مع فائض العملية السابقة إن وجد، هذه الدائرة تسمى دائرة الجمع الكامل (Full Adder). سنعتمد على الجدول التالي، حيث Cin هو فائض الجمع السابق الداخل للدائرة و Cout هو فائض عملية الجمع الحالية.
ABCinSCout
00000
00110
01010
01101
10000
10111
11011
11101

والآن نحسب الدالة S من الجدول:

أما قيمة الدالة Cout

وفيما يلي الدائرة المنطقية للجمع الكامل (Full Adder):

دائرة الجمع الكامل

ويمكن بناء دائرة الجمع الكامل باستخدام دائرتي نصف الجمع مع بوابة OR كما يلي:
دائرة الجمع الكامل باستخدام دائرتي نصف الجمع وبوابة أو
كما يمكن بناء دائرة لجمع عددين من 4 بتات (4bit Adder)، بإدخال فائض كل خانة إلى التي تليها وأما فائض الخانة الأخيرة فتعتبر فائض عملية الجمع كاملا، كما يمكن بنفس الطريقة بناء 32bit Adder وهو الموجود في معالجات حواسيب 32bit.
دائرة الجمع لـ 4bit

أمثلة على قانوني دي مورجان

يستخدم قانوني ديمورجان لاختصار الدوال المنطقية، وفيما يلي مثال على ذلك، ولك أن ترسم الدائرتين لتعرف كم بوابة اختصرنا.
مثال
طبعاً استخدمنا هنا بعض قواعد الجبر المنطقي ففي السطر الثالث نفي النفي إثبات، وفي السطر السابع استخدمنا القانون A.A' = 0 أي قيمة مضروب منطقياً في عسكه يصبح صفراً.
وفيما يلي مثال آخر بسيط

مثال آخر بسيط

لاحظ لو كنت تستخدم بوابات NAND, NOR ليس فرقاً في عدد البوابات المنطقية في الدالتين، ولكن لو كنت تستخدم AND, OR, NOT فقد اختصرت بوابات NOT، وهذا المثال يقودني للحديث عن خصائص البوابتين NAND, NOR لكن هذا الموضوع سأؤجله قليلاً، موضوعنا القادم سيكون أول موضوع في تصميم دوائر الحاسوب، تصميم دائرة الجمع، جزء مهم من وحدة الحساب والمنطق ALU داخل المعالج.

قانونا دي مورجان

دي مورجان عالم رياضيات ومنطق ساهم في وضع القوانين المنطقية بهذين القانونين
القانون الأول
إن مكمل المجموع (لمتغرات منطقية) يساوي حاصل ضرب مكملات المتغيرات. أي أن:
(A+B+C+D)` = A`.B`.C`.D`
طبعا يمكن كتابة هذا التعبير باستخدام خطوط فوق المتغرات للدلالة على النفي، يسهل هذا بالقلم، ولكن بما أن لغة HTML لا توفر خاصية وضع خطاً فوق الحروف فأستخدم الخط السفلي، واعذروني على هذا التغيير
A+B+C+D = A . B . C . D
لاحظ أننا يمكننا اختصار خمس بوابات منطقية إلى بوابة منطقية واحدة، أي حولنا أربع بوابات نفي وبوابة وَ إلى بوابة أو المنفية، وهنا تكمن أهمية قانوني دي مورجان.
ويمكن إثبات هذا القانون بالجدول التالي:
ABCA+B+CA+B+CABCA.B.C
000011111
001101100
010101010
011101000
100100110
101100100
110100010
111100000

يلاحظ من الجدول أن قيم العمود الخامس مساوٍ لقيم العمود الأخير.
القانون الثاني
إن مكمل حاصل الضرب المنطقي للمتغيرات يساوي مجموع مكملات المتغيرات
A.B.C = A + B + C
وفيما يلي إثبات هذا القانون
ABCABCABCABCA+B+C
000011111
001011101
010011011
011011001
100010111
101010101
110010011
111100000


لاحظ أننا يمكننا اختصار ثلاث بوابات منطقية إلى بوابة منطقية واحدة، بقي علي أن أضع مثالين على هذا الموضوع في الموضوع القادم
للمزيد :
http://en.wikipedia.org/wiki/De_Morgan's_laws

لا أنسى أن أبارك لسردال على كتابه الأول تطوير المواقع للمبتدئين كما يمكنكم قراءته والاستفادة منه.

تمثيل الأعداد الثنائية السالبة

في الأعداد العشرية نستخدم اﻹشارة ( - ) للدلالة على الرقم السالب، والإشارة ( + ) للدلالة على الرقم الموجب، أما داخل الحاسوب فهناك طريقتان لتمثيل اﻷعداد السالبة:

1) التمثيل بواسطة الإشارة والمقدار
لتمثيل الأعداد الثنائية داخل الحاسوب اصطلح على استخدام الرقم 0 للدلالة على العدد الموجب، كما يستخدم الرقم 1 للدلالة على العدد السالب، ويتم تخصيص البت اﻷخير من العدد للإشارة.
إن البايت الواحد (8 بتات) يستوعب 256 قيمة عددية (2 أس 8)، فإن كنا سنضع فيها اﻷعداد الموجبة فقط فسيستوعب (0~255)، أما إذا أدرنا تمثيل الأعداد السالبة والموجبة فسيكون مجال الأعداد (-128 ~ +127) بمعني أن البت اﻷخير للإشارة ويتبقى لدينا 7 بتات تستوعب 128 عدداً (2 أس 7)،نفس الشيء إذا كان لدينا عدد مكون من 4 بت أو حتى من 64 بت نستخدم المبدأ نفسه، في الجدول التالي مجموعة من اﻷرقام الثنائية وما يعادلها في النظام العشري
العدد الثنائيقيمته بدون إشارةقيمته بإشارة
01015+5
110113-5
01117+7
111115-7
0001000117+17
10010001145-17
0001100024+24
10011000152-24

إن اﻷعداد الممثلة باﻹشارة والمقدار، لا تتم عليها علمية الحمع بشكل مباشر، إذ ينبغي العناية باﻹشارات، فإن كانت إشارتا العددين المراد جمعهما متشابهتين، فإننا نجمع العددين (بدون خانة الإشارة)، وتكون إشارة الناتج هي إشارة العددين.
أما في حال إختلاف اﻹشارتين، فإننا نطرح المقدار الأصغر (بدون خانة الإشارة) من المقدار الأكير، وتكون إشارة الناتج هي إشارة العدد اﻷكير في المقدار.

2) التمثيل بالمكمل لاثنين
ويمكن حساب المكمل لاثنين بإضافة 1 إلى المكمل لواحد، ويكون المكمل لواحد ويكون ذلك بقلب الصفر واحداً، والواحد صفراً، مثلاً المكمل لواحد للعدد 10010 هو 01101. مثال:
المكمل لواحد للعدد (5) =0101 هو 1010 وبإضافة 1 عليه نحصل على: 1011 وهو ما يعادل -5 ولو جمعنا العدد 0101+1011 لحصلنا على 10000 وبتجاهل الفيض الأخير فإننا قد حصلنا على صفر[5+(-5)=0] أليس كذلك؟ تذكر في آخر درس جمع اﻷعداد الثنائية أننا حولنا عملية الطرح إلى عملية جمع بعد تحويل المطروح منه إلى المكمل الثنائي لقد قمنا بذلك لكي نحول العدد إلى قيمة سالبة. طبعاً حتى في حالة استخدمنا المكمل لاثنيين فإن الخانة الأخيرة هي التي ستدلنا على إشارة العدد، ولذلك لو كنا تستخدم عدداً مكوناً من 4 بتات، فإنه سيستوعب للأعداد من -8 ~ +7، أي يجب أن تكون الخانة الأخيرة -قبل تحويل العدد إلى السالب- صفراً. جرب أن تحول الرقم 15 = 1111 إلى السالب، فإن المكمل لاثنين في حال التزمنا بأربع بتات هو 0001 = +1. لذلك تبقى الخانة الاخيرة تدلنا على إشارة العدد. في الجدول التالي مجموعة من اﻷرقام الثنائية وما يعادلها في النظام العشري:
العدد الثنائيقيمته بدون إشارةقيمته بإشارة
01015+5
101111-5
01117+7
10019-7
0000111115+15
11110001241-15

وبالمناسبة فإن تنفيذ هذه الطريقة بدائرة إلكترونية أسهل من الطريقة الأولى، لعدم حاجتنا إلى مقارنة إشارتي العددين وأيهما أكبر في المقدار، إذ تتم العملية الحسابية دفعة واحدة كما سنبين ذلك في حينه.

سنعود للدوائر المنطقية والموضوع القادم سيكون عن قانوني دي مورجان.

تصميم دائرة منطقية من جدول الحقيقة

البوم نصل لتصميم دائرة منطقية من جدول الحقيقة، في البداية سنستنتج الدالة المنطقية التي تحقق الجدول، ثم نطبق الدرس السابق للحصول على الدائرة المنطقية.
قد تسأل لماذا من جدول الحقيقة؟ غالباً عند تصميم الدوائر المنطقية، أنت لا تحقق دالة معروفة، وإنما تريد دائرة تعطي معطيات معنية عند مدخلات معينة، سنوضح ذلك بمثال في الدرس التالي. واﻵن نريد معرفة الدالة المنطقية التي تحقق الجدول التالي:

ABCY
0000
0010
0101
0110
1000
1010
1101
1110

الطريقة هي تحديد ما هي المدخلات التي تجعل المخرج يساوي 1، نلاحظ في الصف الثالث أن Y=1 عند A=0, B=1, C=0 فنكتب هذا الجزء من الدالة على الشكل 'A'BC حيث نضع المتغير كما هو إذا كان يساوي الواحد، وننفيه (نعكس قيمته) إذا كان يساوي الصفر.
نكرر هذه العملية مع الصف السابع حيث نجد أن Y=1 عند A=1, B=1, C=0 أي عند 'ABC، ولا توجد حالة أخرى تجعل قيمة Y يساوي الواحد، وهكذا حصلنا على حدين سنجمع بينهما ببوابة OR للحصول على الدالة النهائية كما يلي:
'Y=A'BC'+ABC
ولتنفيذ هذه الدالة نحتاج إلى بوابتي AND بثلاث مداخل، وبوابة OR وبوابتي NOT وفيما يلي رسم الدالة المنطقية:



الموضوع التالي سيكون مثال تطبيقي على هذا الدرس، أما الذي يليه فسيكون لي عودة للنظام الثنائي تلبية لطلب بعض القراء.