# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل >  میکروکنترلرها، طراحی و پیاده سازی - ریلیز شد!

## prpe26

قریب به دو سال هست که دارم روی معماری کامپیوتر و پیاده سازی یک کامپیوتر ساده به شکل های مختلف، تحقیق میکنم. تابستان پارسال تصمیم گرفتم که تجربیاتم رو قدم به قدم مکتوب کنم و با دیگران به اشتراک بذارم. همینطور که مطالعه میکردم، شبیه سازی میکردم و به نتیجه ای می‌رسیدم، کم کم یادداشت میکردم و در زمان هایی که پیش می اومد، با یک قالب کلی و به زبان انگلیسی، به صورت سازمان یافته و دسته‌بندی شده درشون می‌آوردم. 


سرفصل های کتاب : 

فصل اول : میکروکنترل چیست؟ 
در این فصل کلیت یک میکروکنترلر و این که چه بخش هایی درونش به کار رفته، توضیح داده شده. 

فصل دوم : چطور با کامپیوتر حرف بزنیم
در این بخش در مورد زبان های برنامه نویسی و مبناهای عددی و فضای ذخیره سازی دیتا صحبت شده. 

فصل سوم : عملیات محاسباتی 
در این فصل در مورد انجام عملیات ریاضی در مبنای دو صحبت شده. 

فصل چهارم : عملیات منطقی 
در این فصل در مورد جبر بول و نحوه انجام عملیات بولین صحبت شده. 

فصل پنجم : مدارهای منطقی 
اینجا، اومدیم و یه سری گیت های پایه رو بررسی کردیم. همینطور در مورد گیت های مادر صحبت کردیم. 

فصل ششم : مدارهای ترکیبی 
در این فصل، از ترکیب مدارهای فصل پنجم منطق های جدید ساختیم و چیزای جدید تر پیاده کردیم 

فصل هفتم : نخستین کامپیوتر 
در این فصل، هف اددر و فول اددر ساختیم، یه ماشین جمع ساده درست کردیم باهاش. 

فصل هشتم : حافظه 
اینجا رسیدیم به مدارهای ترتیبی و حافظه ای، در اینجا لچ S-R رو ساختیم، در مورد لچ Active High و Active Low توضیح دادیم. 

فصل نهم : رجیستر فایل 
اینجا چندین رجیستر رو چیدیم کنار هم و یک رجیستر فایل طراحی کردیم. 

فصل دهم : معماری کامپیوتر 
اینجا با کلیت معماری کامپیوتر و مفاهیم تئوری قضیه آشنا شدیم. چیزایی که لازمه برای یادگیری معماری بلد بود رو آوردیم اینجا. 

فصل یازدهم : طراحی، ماشین جمع کننده پیشرفته 
اینجا به کامپیوتر ساده فصل هفتم، که فقط جمع میکرد رجیستر و بلاک حافظه ای اضافه میکنیم. 

فصل دوازدهم : کامپیوتر (تئوری) 
در اینجا به صورت تئوری و روی کاغذ کامپیوتر اصل کاری طراحی شده. تصمیم گیری شده که چه کارهایی انجام بده و «سازمان کامپیوتر» در این نقطه مشخص شده. 

فصل سیزدهم : واحد محاسبه و منطق 
در این فصل، واحد محاسبه و منطقی برای کامپیوتر خودمون طراحی کردیم، و در مورد Instruction Code ها تصمیم گیری کردیم. 

فصل چهاردهم : ساختار برنامه 
اینجا برای برنامه پذیر شدن کامپیوتر خودمون تصمیم گیری کردیم و ساختار برنامه ها در زبان ماشین رو تعیین کردیم. 

فصل پانزدهم : میکروکنترلر 
اینجا بخش های لازم رو کنار هم چیدیم و در نهایت رسیدیم به یه میکروکنترلر فوق العاده ساده. 

فصل شانزدهم : برنامه نویسی و سیستم عامل 
در اینجا نگاه اجمالی داشتیم به نوشتن برنامه و سیستم عامل برای کامپیوتر خودمون. 

فصل هفدهم : نیمه تاریک ماه 
در این قسمت، وارد مباحث دیجیتالی و پیاده سازی فیزیکی کامپیوتر شدیم. چیزایی که برای دانشجوهای سخت افزار آشناس ولی نرم افزاری ها یکم در شناختش مشکل دارن. به همین خاطر هم اسمش شده این.

برای دانلود PDF هم میتونید از این لینک استفاده کنید.

----------


## prpe26

دوستان همچنان منتظر فیدبک های شما هستم :)

----------


## prpe26

آپدیت : 
سه نسخه از این داکیومنت چاپ شد، به اساتید و انجمن علمی کامپیوتر دانشگاه آزاد اسلامی واحد تهران مرکزی، تقدیم شد.

----------


## Bad Programmer

اگه بخوام رک بگم کارتون بجز سرگرمی برای خودتون هیچ سود دیگه ای نداره.
کسی که بخواد اینجور چیزا رو یاد بگیره اینقدر منبع کامل (هم فارسی هم انگلیسی) هست که نیازی به این نخواهد داشت. حتی فیلم های خیلی خوبی هم در این زمینه هست.
وقتی صحبت از میکروکنترلر و پردازنده و... میشه هدف اصلی قابلت برنامه ریزی هست (نمیدونم اصطلاح درستی به کار بردم یا نه چون من کارم زیاد سخت افزاری نیست) ولی این چیزایی که شما نوشتید هیچ اشاره ای  به همچین چیزی نداشت و یا اگر اشاره کردید کاملا سطحی و بدون استفاده است. در اصل شما مقدمات مدار منطقی رو گفتید و این با یک میکروکنترلر خیلی خیلی فاصله داره.
توصیه میکنم بجای وقت گذاشتن رو اینجور چیزا که صرفا جنبه شو آف منفی داره، بیشتر مطالعه و بخصوص تحقیق کنید. چون من خودمم جوون بودم و جویای نام  :لبخند گشاده!:  خیلی وقتا فکر میکردم که بعضی چیزا رو برای اولین بار خودم کشف، اختراع و یا درست کردم در حالی که صرفا توهم زده بودم  :لبخند گشاده!: 
موفق باشید.

----------


## prpe26

> اگه بخوام رک بگم کارتون بجز سرگرمی برای خودتون هیچ سود دیگه ای نداره.


مگر من مدعی شدم که برای کار دیگری بوده؟ :) 
البته که سرگرمی و مطالعات شخصی، اولین قدمی هست که معمولا در پروژه ها برمیدارم. حتی اگر کل سودی که از اون پروژه بهم میرسه همین باشه!




> میشه هدف اصلی قابلت برنامه ریزی هست (نمیدونم اصطلاح درستی به کار بردم یا  نه چون من کارم زیاد سخت افزاری نیست) ولی این چیزایی که شما نوشتید هیچ  اشاره ای  به همچین چیزی نداشت و یا اگر اشاره کردید کاملا سطحی و بدون  استفاده است.


خب این نشون میده شما مطلب رو نخوندید، در فصول آخر به کلی در مورد برنامه ریزی و این که چطور چیزی که طراحی شده برنامه ریزی میشه، صحبت کردم. طوری هست که اگر کسی وقت بذاره و اسمبلی بخونه میتونه اون بخش هم براحتی درک کنه ( و رفرنس هم شده به لینک های مفیدش) 




> خیلی وقتا فکر میکردم که بعضی چیزا رو برای اولین بار خودم کشف، اختراع و یا درست کردم در حالی که صرفا توهم زده بودم


ولی من هیچوقت چنین فکری نکردم :)

----------

