<rss version="2.0">
	<channel>
    	<title>عزوز الحسني - المدونة</title>
		<link>http://azzozhsn.net</link> 
		<description>مدونة عزوز الحسني</description>
                		<item>
			<title>المساكات</title> 
			<pubDate>Wed, 04 Nov 2009 14:52:56 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/588</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/588</guid> 
			<description><![CDATA[<p>الدوائر المنطقية نوعان، نوع توافقي وفيه تعتمد قيمة الخرج في أي لحظة على قيم الدخل للدائرة، ونوع تعاقبي وتتميز بالتخزين وفيه تعتمد قيمة الخرج على قيمة الدخل وقيمة الخرج السابق ومن أمثلة هذا النوع من الدوائر المساكات والقلابات.</p>
<p>المساكات Latches</p>
<p>من دوائر التخزين الثنائية، حيث يخزن فيها بت واحد وتحتفظ بقيمتها لأن خرج الدائرة يعود إلى مدخلاتها مرة أخرى كما في الشكل:</p>
<p style="text-align: center;"><img title="دائرة المساك" src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/RS_Flip-flop_%28NOR%29.svg/180px-RS_Flip-flop_%28NOR%29.svg.png" alt="دائرة المساك" width="180" height="113" /><img title="مخطط دائرة المساك" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/SR_%28NAND%29_Flip-flop.svg/100px-SR_%28NAND%29_Flip-flop.svg.png" alt="مخطط دائرة المساك" width="100" height="100" /></p>
<p style="text-align: center;"><img title="عمل دائرة المساك" src="http://upload.wikimedia.org/wikipedia/commons/c/c6/R-S_mk2.gif" alt="عمل دائرة المساك" width="180" height="131" /></p>
<p>
<table style="width: 500px;" border="0" align="center">

<tr>
<td>&nbsp;</td>
<td>Q</td>
<td>R</td>
<td>S</td>
</tr>
<tr>
<td>حالة الإمساك حيث لا تتغير القيمة السابقة</td>
<td>Q<sub>0</sub></td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>reset تخزين القيمة 0</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>set تخزين القيمة 1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>غير مسموح</td>
<td>?</td>
<td>1</td>
<td>1</td>
</tr>

</table>
</p>
<p>تخيل لو أن عندنا ذاكرة تستوعب لبت واحد، نستطيع تخرين القيمة 1 فيها بإدخال القيمة 1 على الدخل S للحظة واحدة، وعندما نريد تخزين القيمة 0 فإننا ندخل القيمة 1 على الدخل R، ومادام لا توجد دخل على الدائرة فإنها ستحتفظ بآخر قيمة لها.</p>
<p>يمكن بناء المساك باستخدام بوابات NAND وعندها تحقق الجدول التالي</p>
<p>
<table style="width: 500px;" border="0" align="center">

<tr>
<td>&nbsp;</td>
<td>Q</td>
<td>R</td>
<td>S</td>
</tr>
<tr>
<td>غير مسموح</td>
<td>?</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>set تخزين القيمة 1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>reset تخزين القيمة 0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>حالة الإمساك</td>
<td>Q<sub>0</sub></td>
<td>1</td>
<td>1</td>
</tr>

</table>
</p>
<p>ولو قلبنا قيم الدخل كذلك سنحقق الجدول اﻷول مع استبدال الدخل S بـ 'S و R بـ 'R، وعندها تكون الدائرة كما يلي:</p>
<p>
<table style="width: 500px;" border="0" align="center">

<tr>
<td>&nbsp;</td>
<td>Q</td>
<td>'R</td>
<td>'S</td>
</tr>
<tr>
<td>حالة الإمساك</td>
<td>Q<sub>0</sub></td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>reset تخزين القيمة 0</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>set تخزين القيمة 1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>غير مسموح</td>
<td>?</td>
<td>1</td>
<td>1</td>
</tr>

</table>
</p>
<p style="text-align: center;"><img title="مساك ببوابتي NAND" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/SR_Flip-flop_Diagram.svg/180px-SR_Flip-flop_Diagram.svg.png" alt="مساك ببوابتي NAND" width="180" height="113" /></p>
<p>الصور من <a href="http://en.wikipedia.org/wiki/Latch_(electronics)">wikipedia</a></p>]]></description> 
		</item>
				<item>
			<title>المفسر 'فاكك الشيفرة'</title> 
			<pubDate>Wed, 03 Jun 2009 16:56:26 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/587</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/587</guid> 
			<description><![CDATA[<p style="text-align: right;" dir="rtl">من الدوائر المهمة داخل الحاسوب والتي مهمتها فك الشفرات الثنائية في دوائر التحكم، جدول الحقيقة والدائرة المنطقية موضحة في اشكل التالي: &nbsp; نرى من الجدول أن الخرج يحتوي قيمة واحدة مغايرة للبقية. ويستفاد من هذه الدائرة في التحكم في تشغيل أحد الاجهزة الإلكترونية وتعطيل الأجهزة الأخرى. &nbsp; الجدول السابق عرض مفسراً من نوع 2X4 (مدخلين وأربع مخارج) ويمكن بنفس الطريقة (وبمراجعة المواضيع السابقة) بناء مفسر من نوع 3X8 أو 4X16 حيث أن العلاقة بين عدد المدخلات والمخرجات nX2<sup>n</sup>.</p>
<p style="text-align: center;"><img title="مفسر 2 في 4" src="http://www.shaarek.com/images/1242912624/Decoder0.png" alt="مفسر 2 في 4" width="490" height="275" /></p>
<p style="text-align: justify;" dir="rtl">ويمكن أن يكون المفسر يخرج آحاداً وصفراً واحداً، عكس الدائرة السابقة وذلك باستبدال بوابات AND ببوابات NAND وعندها ستحقق الجدول التالي:</p>
<table style="text-align: center; width: 471px; height: 99px;" dir="rtl" border="0">
<tr>
<td>D<sub>0</sub></td>
<td>D<sub>1</sub></td>
<td>D<sub>2</sub></td>
<td>D<sub>3</sub></td>
<td>A<sub>0</sub></td>
<td>A<sub>1</sub></td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
</table>
<p style="text-align: justify;" dir="rtl">بعض المفسرات يكون لها دخل إضافي يطلق عليه Enable مهمته تشغيل دائرة المفسر أو تعطيله هذا المدخل يدخل كل بوابات المفسر، عندها ستحقق الدائرة الجدول التالي ومعنى الحرف X أن القيمة لا تهم سواءً أكانت واحداً أم صفراً:</p>
<table style="text-align: center; width: 471px; height: 99px;" dir="rtl" border="0">
<tr>
<td>D<sub>0</sub></td>
<td>D<sub>1</sub></td>
<td>D<sub>2</sub></td>
<td>D<sub>3</sub></td>
<td>A<sub>0</sub></td>
<td>A<sub>1</sub></td>
<td>ُE</td>
</tr>
<tr>
<td>0</td>
<td>X</td>
<td>X</td>
<td>0</td>
<td>X</td>
<td>X</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</table>
<p style="text-align: justify;">&nbsp;</p>]]></description> 
		</item>
				<item>
			<title>كيف يعمل الحاسوب</title> 
			<pubDate>Tue, 03 Feb 2009 08:49:23 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/586</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/586</guid> 
			<description><![CDATA[هذه صفحة أضفتها إلى صفحات موقعي تجد رابطها بالأعلى، وفيها جمعت روابط الدروس التي تحدثت فيها عن تصميم دوائر الحاسوب وبعض المواضيع ذات العلاقة بالترتيب، حيث أني تخطيت بعض المواضيع التي سأعود لها لاحقاً وعندها ساضيف روابطها في مكانها المناسب على الصفحة.]]></description> 
		</item>
				<item>
			<title>دوائر الطرح المنطقية</title> 
			<pubDate>Thu, 11 Dec 2008 02:06:59 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/585</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/585</guid> 
			<description><![CDATA[طرح عددين ثنائيين يمكن بأن يكون حاصل جمع المطروح منه ومتمم المطروح، وبالتالي يمكننا عمل دائرة طرح منقطية بنفس طريقة دائرة الجمع، (وأيضاً يمكننا تصميم دائرة واحدة تقوم بالعمليتين كما سنرى لاحقا)، وكما كان لدينا دائرة نصف الجمع ودائرة الجمع الكامل، فلدينا دائرة نصف الطرح ودائرة الطرح الكامل.<br />
<br />
<font size="4">دائرة نصف الطرح</font><br />
ويتم من خلالها طرح عددين مكونين من بت لكل منهما بدون إمكانية أخذ استلاف منهما لأجل عملية سابقة، وتتم فيها عملية الطرح كما في الجدول التالي حيث يمثل B0 حالة الحاجة للاستلاف من الخانة التالية:<br />
<table dir="ltr">
    
        <tr>
            <td>A</td>
            <td>B</td>
            <td>D</td>
            <td>B0</td>
        </tr>
        <tr>
            <td>0</td>
            <td>0</td>
            <td>0</td>
            <td>0</td>
        </tr>
        <tr>
            <td>0</td>
            <td>1</td>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>1</td>
            <td>0</td>
            <td>1</td>
            <td>0</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>0</td>
            <td>0</td>
        </tr>
    
</table>
<br />
<br />
من الجدول نجد أن علاقة الطرح تكون:<br />
<br />
لاحظ أن ناتج الطرح D يشبه تماماً حاصل الجمع والاختلاف هنا في عملية الاستلاف حيث أن الدخل A للبوابة وَ يتم قلبه ببوابة النفي.<br />
<img src="http://shaarek.com/images/1228989447/HS0.png" alt="Half Subtractor" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src="http://shaarek.com/images/1228989447/HS-B0.jpg" alt="Half Subtractor - Block Diagram" /><br />
<br />
<font size="4">دائرة الطرح الكامل</font><br />
في هذه الدائرة سنأخذ في الاعتبار إمكانية الاستلاف لأجل الخانة السابقة (في حالة بناء 4bit Full Subtractor أو أكثر) لهذه الدائرة ثلاث مدخلات هي المطروح منه والمطروح والاستلاف كما في الجدول التالي:<br />
<table dir="ltr">
    
        <tr>
            <td>A</td>
            <td>B</td>
            <td>Bin</td>
            <td>D</td>
            <td>B0</td>
        </tr>
        <tr>
            <td>0</td>
            <td>0</td>
            <td>0</td>
            <td>0</td>
            <td>0</td>
        </tr>
        <tr>
            <td>0</td>
            <td>0</td>
            <td>1</td>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>0</td>
            <td>1</td>
            <td>0</td>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>0</td>
            <td>1</td>
            <td>1</td>
            <td>0</td>
            <td>1</td>
        </tr>
        <tr>
            <td>1</td>
            <td>0</td>
            <td>0</td>
            <td>1</td>
            <td>0</td>
        </tr>
        <tr>
            <td>1</td>
            <td>0</td>
            <td>1</td>
            <td>0</td>
            <td>0</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>0</td>
            <td>0</td>
            <td>0</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>1</td>
            <td>1</td>
            <td>1</td>
        </tr>
    
</table>
<br />
من الجدول نستطيع الحصول على العلاقة:<br />
<br />
وفيما يلي الدائرة المنطقية للطرح الكامل:<br />
<img src="http://shaarek.com/images/1228989447/FSby2HS0.png" alt="Full Subtractor" />]]></description> 
		</item>
				<item>
			<title>تعديلات طفيفة</title> 
			<pubDate>Fri, 31 Oct 2008 04:56:50 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/584</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/584</guid> 
			<description><![CDATA[السلام عليكم<br />
لقد أجريت تعديلات طفيفة على الموقع، أعد كتابة البرنامج بشكل أكثر تنظيماً، الواجهة لم تتغير كثيراً، بعض الروابط تغيرت ولم أكن أود ذلك، وأخيراً قمت بحذف المكتبة ومعرض الصور من الموقع، برنامج معرض قد أرجعه بعد التعديل بمحتويات جديدة ومتجددة بعد فترة، وحتى ذلك لكم مني أجمل تحية، قد غبت طويلاً وسأعود لغيبتي التي أرجو أن لا تطول ثم سيكون لي عودة معكم بإذن الله.]]></description> 
		</item>
				<item>
			<title>دوائر الجمع المنطقية</title> 
			<pubDate>Sat, 28 Jun 2008 11:45:41 +0000</pubDate> 
			<author>عزوز الحسني</author> 
			<link>http://azzozhsn.net/blog/show/542</link> 
			<guid isPermaLink="true">http://azzozhsn.net/blog/show/542</guid> 
			<description><![CDATA[&nbsp;السهل تصميم دائرة الجمع المنطقية، بالرجوع إلى موضوع جمع الأعداد الثنائية نجد أن حاصل جمع بتين لا يخلو من الحالات الآتية في الجدول<br />
<table>
<tr><td>A</td><td>B</td><td>S</td><td>C</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>0</td></tr>
<tr><td>1</td><td>1</td><td>0</td><td>1</td></tr>
</table><br />
حيث S هو حاصل الجمع و C هو فائض عملية الجمع Carry، السؤال الآن ما علاقة الخرج S بالدخل A, B؟ نلاحظ أن الخرج S يكون صفراً في حالة كون الدخل A, B غير متشابهين، أي أن العلاقة XOR (أحدهما وليس كليهما)، أما علاقة C بالمدخلات فمن الواضح أنها علاقة وَ AND. حيث يصبح واحداً إذا كان الدخلان مساويين للواحد، وبناء على ذلك يمكن بناء الدائرة باستخدام بوابة XOR وبوابة AND كما في الشكل التالي:<br />
<br />
<img src="http://www.shaarek.com/images/HA0.png" alt="دائرة نصف الجمع" /><br />
<br />
وهذه الدائرة تسمي دائرة نصف الجمع (Half Adder) ويرمز لها أحيانا بالرمز التالي:<br />
<img src="http://www.shaarek.com/images/HA-B0.jpg" alt="رمز دائرة نصف الجمع" /><br />
لجمع عددين مكونين من 4 بتات (أو من أي عدد من البتات، 4 هنا مجرد مثال) فإننا نحتاج إلى 4 دوائر جمع على التوازي، كما يجب إضافة الفائض من ناتج جمع أول خانة إلى الخانة&nbsp; التالية، أي عمليتي جمع، لذلك يمكننا تصميم دائرة أخرى تقوم بجمع بتين مع فائض العملية السابقة إن وجد، هذه الدائرة تسمى دائرة الجمع الكامل (Full Adder). سنعتمد على الجدول التالي، حيث C<font size="1">in</font> هو فائض الجمع السابق الداخل للدائرة و C<font size="1">out</font> هو فائض عملية الجمع الحالية.<br />
<table>
<tr><td>A</td><td>B</td><td>C<font size="1">in</font></td><td>S</td><td>C<font size="1">out</font></td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>1</td><td>1</td><td>0</td></tr>
<tr><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td></tr>
<tr><td>0</td><td>1</td><td>1</td><td>0</td><td>1</td></tr>
<tr><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>0</td><td>1</td><td>1</td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td></tr>
</table><br />
والآن نحسب الدالة S من الجدول:<br />
<img src="http://www.shaarek.com/images/FA-S0.jpg" alt="" /><br />
أما قيمة الدالة C<font size="1">out</font><br />
<img src="http://www.shaarek.com/images/FA-C0.jpg" alt="" /><br />
وفيما يلي الدائرة المنطقية للجمع الكامل (Full Adder):<br />
<br />
<img src="http://www.shaarek.com/images/FA0.png" alt="دائرة الجمع الكامل" /><br />
<br />
ويمكن بناء دائرة الجمع الكامل باستخدام دائرتي نصف الجمع مع بوابة OR كما يلي:<br />
<img src="http://www.shaarek.com/images/FAby2HA0.png" alt="دائرة الجمع الكامل باستخدام دائرتي نصف الجمع وبوابة أو" /><br />
كما يمكن بناء دائرة لجمع عددين من 4 بتات (4bit Adder)، بإدخال فائض كل خانة إلى التي تليها وأما فائض الخانة الأخيرة فتعتبر فائض عملية الجمع كاملا، كما يمكن بنفس الطريقة بناء 32bit Adder وهو الموجود في معالجات حواسيب 32bit.<br />
<img src="http://www.shaarek.com/images/4bitAdder0.png" alt="دائرة الجمع لـ 4bit" />]]></description> 
		</item>
					</channel>
</rss>
