حمیدرضا کلباسی
حمیدرضا کلباسی
خواندن ۳ دقیقه·۵ سال پیش

بیایید یک کامپیوتر بسازیم ( قسمت دوم: نگهداری وضعیت )

در قسمت اول با طرح کلی کامپیوترمان آشنا شدیم. در این قسمت مستقیما قسمتی از کامپیوتر را طراحی نمی کنیم. بلکه با مدار هایی آشنا می شویم که می توانند برحسب ورودی هایشان، وضعیت خود را تغییر دهند.

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

یک مثال ساده

یک نگهدارنده ساده وضعیت با استفاده از گیت یا
یک نگهدارنده ساده وضعیت با استفاده از گیت یا

در ابتدا کلید باز و چراغ، خاموش است. اگر کلید را ببندیم، چون یکی از پایه های گیت یا ۱ می شود، خروجی نیز ۱ می شود و در نتیجه، چراغ روشن می شود. حال اگر کلید را مجددا باز کنیم، چه اتفاقی می افتد؟ چراغ هم چنان روشن می ماند! چون خروجی ۱ بوده پس ورودی دیگر گیت یا ۱ می شود. در نتیجه از این به بعد مستقل از این که ورودی ای که با کلید تعیین می شود چه باشد، خروجی ما یک خواهد بود. یعنی ما می توانیم یک شدن ورودی در گذشته را ذخیره کنیم و ۱ شدن ورودی، وضعیت درونی مدار را تغییر می دهد. اگرچه این مدار به نوعی یک حافظه یکبار مصرف است و عملا کاربرد خاصی ندارد، اما یک شروع خوب است!

وصل کردن خروجی به ورودی بی معنی نیست؟

نباید به گیت های منطقی به چشم توابع در ریاضی نگاه کنید که باید تمام ورودی ها معین باشند تا عبارت ریاضی ما معنی دار شود. گیت های منطقی، در عمل متشکل از یک سری شئ فیزیکی مانند سیم و ترانزیستور هستند و این اشیاء خود در مدار ما نقش یک خازن را بازی می کنند؛ یعنی باعث تاخیر در اتفاقات می شوند ( تاخیری در حد نانو ثانیه ). یعنی بعد این که ورودی گیت ۱ شد، مدت زمان ناصفری زمان بعد هنوز خروجی گیت ۰ است و بعد از چند نانو ثانیه این خروجی یک می شود. از این موضوع می توانیم استفاده کنیم و بگوییم مثلا ورودی اول ۱ می شود، سپس خروجی ۱ می شود، سپس ورودی دوم ۱ می شود و ... . اگر با این دید به گیت های منطقی نگاه کنیم، دیگر مشکلی با وصل کردن ورودی به خروجی نخواهیم داشت.

ذخیره یک بیت

یک SR-latch تشکیل شده از دو گیت NOR
یک SR-latch تشکیل شده از دو گیت NOR

اگر در مدار بالا، کلید بالا را ببندیم، چراغ پایین روشن می شود و اگر کلید پایین را ببندیم و کلید بالا را باز بگذاریم برعکس، اما اگر هر دو کلید را باز بگذاریم، مدار وضعیت قبلی خود را حفظ می کند. ( چرا ؟ )

از این مدار می توانیم برای ذخیره یک بیت استفاده کنیم. اگر پین بالا را یک کنیم، مقدار حافظه مان ست شده و ۱ می‌شود و اگر پین پایین را یک کنیم، مقدار آن ریست شده و ۰ می شود. به همین دلیل به این مدار، یک SR-latch یعنی latch با قابلیت set و reset می گویند.

از این مدار می توان به صورت زیر نیز استفاده کرد:


در این جا اگر کلید پایین بسته باشد، وضعیت خروجی ( چراغ ) برابر وضعیت کلید بالا می شود، اما اگر کلید پایین را باز کنیم، مستقل از این که کلید بالا چه باشد، مدار وضعیت قبلی خود را حفظ خواهد کرد. به این مدار یک D-latch یعنی latch که می تواند یک بیت داده ( Data ) را نگه دارد.

مثلا می توان برای نگهداری یک عدد 8 بیتی، ۸ تا از این D-latch ها را کنار هم بگذاریم، پین پایینشان را به یک ورودی با نام WE یا حالت نوشتن فعال، وصل کنیم، سپس ۸ سیم را به ۸ پین بالا وصل کنیم. حال هر وقت که بخواهیم می توانیم WE را یک کنیم و یک عدد دلخواه را در حافظه مان ذخیره کنیم. و هر وقت که WE را ۰ کنیم، حافظه مان وضعیت قبلی خودش را حفظ می کند.

در قسمت بعد با همین مدار ها رجیستر های کامپیوترمان را می سازیم. پس این سری را دنبال کنید.

الکترونیکمعماری کامپیوترترانزیستورکامپیوترحافظه
شاید از این پست‌ها خوشتان بیاید