1 هندسة النظم الحاسوبية الجزء 1. بوابات المنطق

العناصر المنطقية


يوم جيد ، أبدأ سلسلة من المقالات حول كتابة جهاز افتراضي بلغة جولانج. لقد اخترت هذه اللغة لأنها سهلة القراءة ولديها الوظائف اللازمة في المكتبة القياسية التي ستكون مفيدة في المستقبل.

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

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

بما أننا سنعمل مع Golang ، يمكن تمثيل كل عنصر كدالة.
في Go ، تبدو الوظيفة كما يلي:

func (   )    {     //     return    } 

عازلة


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

لBUF أ
00
11

في حالة المخزن المؤقت ، ستبدو وظيفتنا كما يلي:

 func Buf(v bool) bool {    return v } 

العاكس


المخزن المؤقت نفسه ، فقط الإخراج عكس الإشارة.

لليس
01
10

في حالة وجود العاكس ، ستبدو الوظيفة كما يلي:

 func Inv(v bool) bool {    return !v } 

OR


يحتاج هذا العنصر إلى إشارة واحدة على الأقل تساوي 1 من أجل الحصول على 1 في الإخراج.

لبأو ب
000
011
101
111

 func Or(v, s bool) bool {    return v || s } 

و


يتم إرجاعه دائمًا 1 ، عندما يتم توفير 1 لجميع مدخلاته ، في جميع الحالات الأخرى يتم إرجاع 0.

لبأ و ب
000
010
100
111

 func And(v, s bool) bool {    return v && s } 

حصري أو


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

لبو xor ب
000
011
101
110

 func Xor(v, s bool) bool { //  (v ^ s)    ,   bool     ,       return (v || s) && !(v && s) } 

ام لا


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

لبولا ب
001
010
100
110

 func Nor(v, s bool) bool {    return !(v || s) } 

و لا


يعمل العنصر تمامًا مثل العنصر And ، فقط الإشارة مقلوبة عند الإخراج.

لبناند ب
001
011
101
110

 func Nand(v, s bool) bool {    return !(v && s) } 

حصري أو مع انعكاس


يعمل العنصر بنفس الطريقة التي يعمل بها عنصر OR ، فقط الإشارة مقلوبة عند الإخراج.

لبXNOR ب
001
010
100
111

 func Xnor(v, s bool) bool { //       return !((v || s) && !(v && s)) } 

الآن وبعد كتابة الوظائف ، يمكنك تجميعها في حزمة Gate ، والتي على أساسها سننفذ أشياء أكثر تعقيدًا. سيكون تسلسل هرمي الحزمة لدينا مشابهًا للتسلسل الهرمي لتجريد الكمبيوتر الحقيقي. شفرة المصدر يمكن العثور عليها هنا .

Source: https://habr.com/ru/post/ar476100/


All Articles