السبت، 31 أغسطس 2019

Shift and Rotate Unit in ALU

بسم الله الرحمن الرحيم

Shift Circuit Design

اهمية عمليات ال Shift:

ال Micro Processor بيكون فيه عدة اجزاء منها جزء ال Arithmetic Logic Unit او باختصار ALU وده اللى بيعمل بعض العمليات الحسابية زى الجمع والطرح والضرب... دول ال Arithmetic 
ال Logic زى ال AND و ال OR وال NOT... بالاضافة لل Shift Left وال Shift Right وال Rotate Left وال Rotate Right
لو عندى رقم بال Binary فلنفرض رقم "8" هيكون بال Binary عبارة عن "1000" وعاوز اقسمه على "2" اللى الناتج هيكون "4" يعنى "0100" بال Binary  لو قارنت ال "8" بال "4" بالBinary هالاقى ان كأنى عملت shift لكل الارقام من الشمال لليمين ب Bit واحده, طيب لو عاوز اقسم ال "4" على "2" هاعمل Shift للارقام تانى ب Bit واحده, فانا كده ممكن استخدم ال Shift فى عملية القسمة, طبعا اقدر اعمل العكس واعمل Shift من اليمين للشمال وهابقى كأنى ضربت فى "2", وطبعا احنا عارفين ان عمليه الضرب والقسمة من اكتر العمليات اللى بتحتاج Hardware لكن بالطريقة دى اقدر استخدمها فى بعض الحالات بدون مشاكل.

شرح ال Shift Left:

احنا بالفعل شرحناه فوق لكن باختصار هو عبارة عن انى باعتبر ان عندى "0" عاوز احشرة فالرقم اللى عاوز اعمله Shift بحيث انى ادفع باقى الارقام انها تتحرك ناحية الشمال وتخرّج اخر رقم فى الشمال مثلا هاعمل SHL لل "1001":
"0" > "1001" = "0010".

شرح ال Shift Right:

نفس اللى عملته فى حالة ال Shift Left لكن هاضيف ال "0" من ناحية الشمال بحيث انى ادفع الارقام ناحية اليمين واخرج اقصى رقم على اليمين مثلا لو هاعمل SHR لل "1001":
"1001" < "0" = "0100".

شرح ال Rotate Left:

هو زى فكرة ال Shift Left لكن بدل ما بادخل "0" من ناحية اليمين باخد اخر رقم فى اقصى اليسار والففه اخليه اقصى اليمين مع ازاحة باقى الارقام لليسار مثلا لو هاعمل ROL اا "1001":
"1001" هاخد اخر رقم على الشمال اخليه اول رقم على اليمين واعمل ازاحه لباقى الارقام فالناتج هيكون:
"0011".

شرح ال Rotate Right:

عكس ال Rotate Left حيث باخد الرقم اللى فى اقصى اليمين وانقله لاقصى اليسار وازاحة كل الارقام من اليسار لليمين ب Bit واحده فمثلا لو هاعمل ROR ل "1001":
"1001
"1100"

الدائرة لعمل ال Shift وال Rotate على Proteus:

اسهل دائرة لعمل ال Shift وال Rotate هو باستخدام Multiplexers  او باختصار MUX, بيكون عدد ال MUXs على عدد ال Bits اللى هاعمل عليها ال Operations بتاعتى فلو مثلا باعمل على Four-Bits هاستخدم Four-MUXs, ومقاس ال MUX نفسه على حسب عاوز اعمل فيه كام Operation, فو هاعمل ال SHL و SHR و ROL و ROR فانا هاحتاج 4:1 MUX ... وهكذا.
هافرض ان الرقم ال Input اللى جايلى هيكون Four-Bits وعلى الشكل ده: X3 X2 X1 X0 فشكل ال Circuit هيكون:

فيديو لشرح و توضيح بصورة ادق لطريقة عمل الدائرة:


M.A MIX

Simple 2's complement circuit using Logic Gates

بسم الله الرحمن الرحيم

 Simple 2's complement circuit using Logic Gates

دائرة عمل Twos Complement باستخدام البوابات المنطقية


شرح تحويل رقم من Binary الى Twos Complement:

بيبقى عندى اى رقم عبارة عن عدد من ال Bits, لنفرض رقم مكون من Four-Bits مثلا:
  • 1110 ال Twos Complement للرقم ده هيكون: 0010
  • 1101 ال Twos Complement للرقم ده هيكون: 0011
فيه طريقة بسيطة للتحويل بسرعة بدون تفكير وهى انى ابدء من ال Least Significant Bit للرقم وهنا انا هابدء من اليمين للشمال, لو الرقم اللى موجود صفر "0" هينزل زى ما هو, وافضل ماشى ناحية الشمال لحد مالاقى رقم"1", اول ما الاقى "1" هانزله زى ما هو وهاعمل invert لاى رقم هييجى بعد كده لحد ما اوصل لل Most Significant Bit, لو عاوز اطبق حاليا على مثال ثالث فلنفرض عندى رقم مكون من Seven-Bits:
  • 0110100
عندى اول وتانى Bits اصفار هانزلهم بدون تغيير, وهانزل ال "1" معاهم وبعد كده هابدل ال "0" ب "1" والعكس, فهيبقى ال Twos Complement لرقم:
0110100 هو:
1001100.

شرح فكرة الدائرة باستخدام ال Logic Gates:

  1. اول Bit هتخرج زى ما هى سواء كانت "0" او "1" فكده ال Input هيكون متوصله بال Output على طول.
  2. ثانى Bit هتخرج هاشوف ال Bit اللى قبلها كانت اية!, فلو كان قبلها "0" هتنزل زى ما هى ولو كان قبلها "1" هاعملها Complement وال Gate اللى بتعمل كده هى ال Xor, فكده تانى Output Bit هيجيلى من Xor بين اول Two Input Bits.
  3. ثالث Bit هتخرج هاشوف كان فيه "1" فى اى Bits قبل كده وده عن طريق And بين كل ال Bits اللى فاتت, لو اه كان فيه "1" هاعمل invert, لو لا هانزل الرقم زى ما هو "زى خطوه 2", فكده ال Output Bit التالته هتكون عباره عن And داخلها كل ال Input Bits اللى قبلها وال Output بتاع ال And داخل على داخل على Xor مع ال Input Bit الثالثة.
  4. تكرار للمرحلة الثالثة لاى Bit عاوز اضيفها بعد كده.

ال Circuit على Proteus:


فيديو لشرح ال circuit:


n-Bits Twos Complement Circuit:

لاضافه Bit اخرى سيكون عليك اضافة بوابتين Two Gates واحده And وواحده Xor وهكذا.

M.A MIX

عن التقويم الهجرى ونسبته الى الهجرة النبوية

بسم الله الرحمن الرحيم

التقويم الهجرى 

مقدمة:

قبل انشاء التقويم الهجرى فى العصر الجاهلى وحتى فى بداية الاسلام كان العرب ينسبون الاحداث بالاحداث العظيمة والمهمة فى حياتهم ويجعلونها مرجعا لهم, فمثلا يقول احدهم: "لقد ولدت بعد عام الفيل باربعين عام", ويقول اخر: "لقد تزوجت بعد غزوة بدر بعام"... وهكذا.
فمن هنا كانت الحاجة الى تقويم معين او بمعنى ادق الى حدث معين ينسب له كل الناس احداثهم.

سبب اختيار هجرة الرسول ﷺ كمرجع اساسى:

اجتمع سيدنا عمر بن الخطاب -رضى الله عنه- مع بعض الصحابة لمناقشة التاريخ الذى ينسبون له كل ما هو قادم, فاقترح بعضهم ان يكون زمن ميلاد الرسول ﷺ هو بداية التقويم, واقترح اخرون ان يكون وفاته ﷺ هو البداية, لكن فى النهاية استقروا على اقتراح سيدنا على بن ابى طالب -رضى الله  عنه- فى ان تكون هجرة رسول الله ﷺ هى بداية التقويم الهجرى وذلك لانه لم يختلف عليه احد.

التقويم الهجرى وارتباطه بالتقويم القمرى الاسلامى:

التقويم الهجرى قائم على التقويم القمرى وليس التقويم الشمسى وذلك لدقة التقويم القمرى, و السنة القمرية هو الزمن الذى يحتاجه القمر للدوران حول الارض اثنى عشر "12" دوره, كل دوره منهم تمثل شهر, وطول الشهر القمرى يكون اما تسعة وعشرون "29" يوما او ثلاثون "30" يوما, لذلك فان السنه القمرية تكون فى الاجمالى حوالى "354" او "355" يوما, وهذا اقصر من العام الشمسى بحوالى عشرة "10" ايام.

الاشهر الهجرية وبداية التقويم الهجرى:

ترتيب اشهر السنه الهجرية هو:
  • محرم
  • صفر
  • ربيع الاول
  • ربيع الثانى
  • جمادى الاول
  • جمادى الاخر
  • رجب
  • شعبان
  • رمضان
  • شوال
  • ذو القاعدة
  • ذو الحجة
يعد محرم اول اشهر السنه الهجرية, لكن الهجرة نفسها لم تكن فى بداية شهر محرم, لقد كانت فى الثامن من ربيع الاول اى بعد "66" يوم من بداية السنة الهجرية وذلك لكى يتوافق مع التقويم القمرى.

M.A MIX

انشاء محفظة الكترونية "Coin Pot"

بسم الله الرحمن الرحيم انشاء محفظة الكترونية على موقع CoinPot اهمية المحفظة الالكترونية: لكى تبدء العمل على الانترنت يجب ا...