ایجاد یک پردازنده با استفاده از ترانزیستور و گیت های منطقی
درباره دوره
هدف ما از ایجاد این دوره، ساخت یک کامپیوتر از ابتدا است. این بخش را با طرح چند سؤال آغاز میکنیم:چرا با استفاده از یک کامپیوتر میتوانیم عکس و فیلم ببینیم، بازی کنیم و بازی طراحی کنیم، دادههای مختلف را تحلیل و آنالیز کن...
ایجاد یک پردازنده با استفاده از ترانزیستور و گیت های منطقی
درباره دوره
هدف ما از ایجاد این دوره، ساخت یک کامپیوتر از ابتدا است. این بخش را با طرح چند سؤال آغاز میکنیم:چرا با استفاده از یک کامپیوتر میتوانیم عکس و فیلم ببینیم، بازی کنیم و بازی طراحی کنیم، دادههای مختلف را تحلیل و آنالیز کنیم، قیمت سهام بورس را پیشبینی کنیم، با یکدیگر ارتباط متنی، صوتی یا تصویری برقرار کنیم و بهطور کلی، چرا توانایی برنامهنویسی کامپیوتر را داریم؟برای پاسخ به این سؤالها ابتدا باید بفهمیم «کامپیوتر چیست؟»سؤالی که پاسخ آن میتواند در سطوح مختلفی داده شود. هرچه عمق بیشتری برای پاسخ به این سؤال در نظر بگیریم و با جزئیات بیشتری به آن پاسخ دهیم، درک ما از کامپیوتر بیشتر میشود. اما بهترین روش برای یادگیری سختافزار کامپیوتر، ساخت یک کامپیوتر است.بهطور کلی، یک کامپیوتر را میتوان به ۳ بخش تقسیم کرد:پردازندهحافظهوسایل ورودی و خروجیپردازنده بهعنوان مغز کامپیوتر وظیفه «یادگیری» و «اجرای» دستورات را دارد. یعنی در فرایند ساخت پردازنده، ابتدا باید یک سری دستورات را به پردازنده یاد بدهیم که به آن Instruction Set Architecture یا ISA میگوییم. سپس برنامهنویس، برنامه خود را در قالب این مجموعه دستوراتی که به پردازنده یاد دادهایم، مینویسد و وارد حافظه میکند. پس از آن، پردازنده از طریق سیمهایی که بهعنوان رابط بین پردازنده و حافظه طراحی و تعبیه کردهایم، این دستورات را یکییکی میآورد (fetch)، متوجه میشود که چگونه باید آنها را اجرا کند (decode) و سپس آنها را اجرا میکند (execute).دقت کنید که تمامی این مراحل را پیادهسازی میکنیم. یعنی در حال حاضر چیزی به نام پردازنده نداریم، بلکه ابتدا باید آن را ایجاد کنیم.ما سعی کردهایم این دوره را بدون نیاز به هیچ پیشنیازی طراحی کنیم و همهچیز از ابتدا انجام خواهد شد. پیش از ایجاد هر چیز، ابتدا «احساس نیاز» را مطرح میکنیم؛ اینکه «چرا» به چنین المانی نیاز داریم و سپس آن را طراحی و ایجاد خواهیم کرد.اولویت ما در این دوره، طرح و پاسخ به سؤالهای «چرا» است، نه «چطور». دقت کنید که عمده تفاوت یک برنامهنویس حرفهای با دیگری، دانش سختافزاری او است و منظور از دانش سختافزار، آگاهی از جریان اطلاعات و دستورات است؛ اینکه وقتی یک خط کد، حتی در زبانهای سطح بالا، مینویسیم، کامپیوتر چگونه آن را اجرا میکند. ممکن است یک خط کد در زبانهای سطح بالا حاصل اجرای صدها و حتی هزاران دستور سطح پایین باشد که ما آنها را به پردازنده یاد دادهایم. یعنی این دوره فقط مختص افرادی نیست که میخواهند وارد حوزه سختافزار شوند، بلکه برای همه برنامهنویسانی است که میخواهند بدانند در «پشت پرده» چه میگذرد.
هدف ما از ایجاد این دوره، ساخت یک کامپیوتر از ابتدا است. این بخش را با طرح چند سؤال آغاز میکنیم:
چرا با استفاده از یک کامپیوتر میتوانیم عکس و فیلم ببینیم، بازی کنیم و بازی طراحی کنیم، دادههای مختلف را تحلیل و آنالیز کنیم، قیمت سهام بورس را پیشبینی کنیم، با یکدیگر ارتباط متنی، صوتی یا تصویری برقرار کنیم و بهطور کلی، چرا توانایی برنامهنویسی کامپیوتر را داریم؟
برای پاسخ به این سؤالها ابتدا باید بفهمیم «کامپیوتر چیست؟»
سؤالی که پاسخ آن میتواند در سطوح مختلفی داده شود. هرچه عمق بیشتری برای پاسخ به این سؤال در نظر بگیریم و با جزئیات بیشتری به آن پاسخ دهیم، درک ما از کامپیوتر بیشتر میشود. اما بهترین روش برای یادگیری سختافزار کامپیوتر، ساخت یک کامپیوتر است.
بهطور کلی، یک کامپیوتر را میتوان به ۳ بخش تقسیم کرد:
پردازنده
حافظه
وسایل ورودی و خروجی
پردازنده بهعنوان مغز کامپیوتر وظیفه «یادگیری» و «اجرای» دستورات را دارد. یعنی در فرایند ساخت پردازنده، ابتدا باید یک سری دستورات را به پردازنده یاد بدهیم که به آن Instruction Set Architecture یا ISA میگوییم. سپس برنامهنویس، برنامه خود را در قالب این مجموعه دستوراتی که به پردازنده یاد دادهایم، مینویسد و وارد حافظه میکند. پس از آن، پردازنده از طریق سیمهایی که بهعنوان رابط بین پردازنده و حافظه طراحی و تعبیه کردهایم، این دستورات را یکییکی میآورد (fetch)، متوجه میشود که چگونه باید آنها را اجرا کند (decode) و سپس آنها را اجرا میکند (execute).
دقت کنید که تمامی این مراحل را پیادهسازی میکنیم. یعنی در حال حاضر چیزی به نام پردازنده نداریم، بلکه ابتدا باید آن را ایجاد کنیم.
ما سعی کردهایم این دوره را بدون نیاز به هیچ پیشنیازی طراحی کنیم و همهچیز از ابتدا انجام خواهد شد. پیش از ایجاد هر چیز، ابتدا «احساس نیاز» را مطرح میکنیم؛ اینکه «چرا» به چنین المانی نیاز داریم و سپس آن را طراحی و ایجاد خواهیم کرد.
اولویت ما در این دوره، طرح و پاسخ به سؤالهای «چرا» است، نه «چطور». دقت کنید که عمده تفاوت یک برنامهنویس حرفهای با دیگری، دانش سختافزاری او است و منظور از دانش سختافزار، آگاهی از جریان اطلاعات و دستورات است؛ اینکه وقتی یک خط کد، حتی در زبانهای سطح بالا، مینویسیم، کامپیوتر چگونه آن را اجرا میکند. ممکن است یک خط کد در زبانهای سطح بالا حاصل اجرای صدها و حتی هزاران دستور سطح پایین باشد که ما آنها را به پردازنده یاد دادهایم. یعنی این دوره فقط مختص افرادی نیست که میخواهند وارد حوزه سختافزار شوند، بلکه برای همه برنامهنویسانی است که میخواهند بدانند در «پشت پرده» چه میگذرد.
محتوای دوره
شماره
عنوان فصل
تعداد جلسات
مدت زمان
1
مقدمه
1 جلسه
00:03 ساعت
2
روند کورس و چگونگی مطالعه آن (Course outline and how to approach the course)
1 جلسه
00:11 ساعت
3
اعداد و اطلاعات در کامپیوتر
6 جلسه
01:05 ساعت
4
مبانی الکترونیک
3 جلسه
00:18 ساعت
5
رجیسترها ، حافظه رم و باس (registers , ram and bus)
8 جلسه
01:18 ساعت
6
واحد انجام عملیات منطقی و محاسباتی (ALU : Arithmetic and Logic Unit)