خلاصه اینه که نشستم یه جمع کننده / منها کننده ساختم. توی برنامه LOGISIM.
برای دیدن سریع نتیجه، برید پایین پست. (فایل مدار + عکس مدار)
از دنیای آدما، یکی از منطقی ترین چیزاشون، همونطور که از اسمش پیداست، مدار های منطقی هست.
(همون سیم کشی ها و AND و OR و NOT و XOR و اینا...)
ماشین حساب های کوچولویی که توی جیبشون جا میشه، دنیای خیلی بزرگی دارن.
نیاز به یه سرگرمی داشتم، گفتم بخش خیلی کوچیکی از یه ماشین حساب رو رسم کنم. یکم از دنیا دور شم و برم توی دنیای کامپیوتر و ۰ و ۱.
هدف ساختن: یه جمع کننده و تفریق کننده ۴ بیتی دارای دکمه. که کاربر بتونه با کلیک روی دکمه ها، عدد ورودی رو اضافه کنه یا ۰ کنه.
با این شرط که حق استفاده از هیچی بجز گیت های پایه رو نداشته باشم. اولش نشستم چند تا مدار ساده رو ساختم تا دستم گرم شه. ولی خب ظاهرا با این برنامه ای که داشتم باهاش کار میکردم،(اسمش هست logisim) نمیشه فلیپ فلاپ ساخت (نوعی حافظه)... مجبور شدم از یه چیز آماده ای که تو خود برنامه بود استفاده کنم: (دی فلیپ فلاپ)
چیزی که قراره ساخته شه یه ماشین حساب ساده جمع کننده و تفریق کننده است که از عدد ۰ تا عدد ۱۵ رو به عنوان ورودی میگیره (۲ تا ورودی) و به عنوان خروجی هم از عدد منفی ۱۵ تا عدد مثبت ۳۰ رو میتونه حساب کنه و نمایش بده.
مدار های اولیه:
۱. فول ادر
کارش چیه؟ ۳ تا ورودی میگیره. a و b و cin. یا ۰ یا ۱
چیکار میکنه؟ جمع میکنه.(به صورت باینری (۰ و ۱ ( در مبنای ۲)))
مثلا
۰ و ۰ و ۱ میشه همون ۱
۱ و ۱ و ۰ میشه: ۱۰
۱ و ۱ و ۱ میشه ۱۱
سمت چپ این اعداد هرچی ۰ بنویسی فرقی نمیکنه: مثلا ۰۰۰۰۰۱ با ۱ برابره
عکسش:

۲. فول ادر ۴ بیتی
همون فول ادر ساده رو اگه ۴ بار بچسبونیم به همدیگه، میشه فول ادر ۴ بیتی

۳. جمع کننده و تفریق کننده ۴ بیتی
قلب ماشین حساب ما اینجاست. کار اصلی رو این میکنه.
جمع کردن که آسونه. ۱و۱ میشه ۱۰
ولی تفریق کردن رو کامپیوتر نمیفهمه. کامپیوتر فقط جمع رو میفهمه. پس چجوری منفی میکنیم؟
خیلی باحاله
ببینین عدد پنج و سه رو در نظر بگیرید
پنج: ۱۰۱
سه: ۰۱۱
برای اینکه پنج منهای سه رو حساب کنیم باید چی کنیم؟ باید عدد دوم رو (که میشه سه) not کنیم. بعد یدونه بهش اضافه کنیم
یعنی این:
نات یعنی هرچی ۰ دیدی بکن ۱ و هرچی ۱ دیدی بکن ۰
۰۱۱ میشه ۱۰۰ و حالا اگه یدونه بهش اضافه کنیم میشه: ۱۰۱
حالا عدد جدیدی که به دست آوردیم رو جمع میکنیم با عدد اولی که داشتیم:
۱۰۱ با ۱۰۱ جمع میشه: ۱۰۱۰
اون یه بیت سمت چپ رو میندازیم دور. چون ورودی های ما ۳ بیت هستن، فقط سه بیت سمت راست رو میخونیم: میشه: ۰۱۰ که یعنی عدد دو
که دقیقا چیزی بود که ما میخوایم: پنج منهای سه میشه دو. هورا.
ما هم دقیقا همین منطق رو پیاده میکنیم. یه سوییچ میذاریم اگه ۱ بشه، عدد دوم رو نات میکنیم و به اضافه یک میکنیم و با عدد قبلی جمع میکنیم.
اگرم ۰ باشه که خیلی راحت ۲ تا عدد رو با هم جمع میکنم و تمام.
عکس مدار:

۴. مقایسه کننده ۲ بیت
کارمون با قلب ماشین حساب تموم شد. بقیه مدار ها برای نمایش دادن ورودی و خروجی به کاربر هست. که بتونه راحت استفاده اش کنه
این مدار کارش اینه که از بین ۲ تا ورودی بگه کی از کی بزرگ تر یا کوچیکتره یا حتی مساوی هستن یا نه
عکس مدار:
۵. مقایسه کننده ۵ بیتی
چون خروجی ما ۵ بیت هست، پس نیاز به یه مقایسه کننده ۵ بیتی هم داری. چرا؟ که ببینیم یکان خروجی چنده. ببینیم دهگان خروجی چنده. که توی نمایشگر دیجیتالی نشونش بدیم(7-segmet)
یکم دنگ و فنگ داشت:

۶. بی سی دی به سون سگمنت
بی سی دی چیه؟ یه قانون خودمونی برای نمایش اعداد
مثلا ۱۲ میشه:
0001 0010
یعنی ۴ بیت ۴ بیت جدا میکنیم و هر ۴ بیت هم از ۰ تا ۹ رو نشون میدن. برای اینه که کار ما توی خوندنش راحت شه
حالا
چرا؟
چون خروجی ما ۵ بیتی هست. باید تبدیلش کنیم ۲ تا ۴ بیتی. یعنی ۴ بیتی سمت چپ: دهگان و ۴ بیتی سمت راست: یکان
چجوری بدستش میاریم؟ اول باید ببینیم عدد ۵ بیتی از چه عددی بزرگ تره
اگه از ۳۰ بزرگ تر بود، عدد ۵ بیتی رو از عدد ۳۰ کم میکنیم تا یکان بدست بیاد
اگه از ۲۰ بزرگ تر بود . // // // عدد ۳۰ کم میکنیم // //
اگه از ۱۰ // //. // // عدد ۱۰ کم // //
حالا ما وقتی این کار رو کردیم، بعدش باید ببینیم این اعداد باید هرکدوم چه چراغی از چراغ های نمایشگر دیجیتال رو روشن کنن؟ (همون عددایی که توی ساعت ها دیجیتالتون وجود داره، هفت تا لامپ دارن و هر کدومشون سر عددای خاصی روشن میشن. هرکدومشونم یه اسم دارن از ای انگلیسی تا جی انگلیسی)
عکس مدار:

۷. کانتر ها
۲ تا کانتر استفاده میکنیم برای شمارش. از ۰ تا ۹ برای اینکه کاربر راحت باشه.
از ۰ تا ۱۵ برای اینکه کامپیوتر راحت باشه.
اینجا همونجاییه که نیاز به حافظه داریم ( فلیپ فلاپ) همونی که نمیشد توی این برنامه به صورت دستی ساختش... مجبور شدیم از چیزی که خودش ساخته بود استفاده کنیم یعنی دی فلیپ فلاپ
مدارمون ۲ تا دکمه داره
یکیش رو که روشن کنی، یدونه عدد اضافه میکنه
اون یکی رو که روشن کنی همه رو صفر میکنه
عکس مدار ها:


۸. مقایسه کننده اعداد ۰ و ۱۰ و ۲۰ و ۳۰
عکسش:

۹. آماده کردن ماشین حساب
مثل جورچین کافیه مدار ها رو به هم وصل کنیم. خیلی حال میده واقعا خوشحالم میکنه اینکار
توی یه نگاه بخواید بهش نگاه کنید:

این میشه...
قسمت سمت راست بالا رو که ببینین، پنل کاربری ماست... همون UI کار هست. بقیه اش میشه BACK-END کار...
واقعا ماشین حساب هایی که ضرب و تقسیم و جذر و ... فلان میکنن داخلشون چی میگذره؟ کامیپوتر ها چی؟ خیلی قشنگه خیلی...
۱۰. تست کردن
دو تا تست:


تمام شد. رسیدیم به قسمت دانلود
برای دانلود عکس مدار به صورت کامل و با کیفیت بیشتر:
دانلود عکس با کیفیت مدار جمع کننده و تفریق کننده ۴ بیتی
برای فایل خود مدار تا توی LOGISIM بازش کنین و خودتون باهاش کارکنین:
دانلود فایل جمع کنند و تفریق کننده ۴ بیتی
برای خود برنامه LogiSim-evolution هم:
دانلود پارت اول LogiSim
دانلود پارت دوم LogiSim
دانلود پارت سوم LogiSim
هر سه تا پارت رو دانلود کنین و بعد اکسترکت کنید.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.