شمارنده MOD — از صفر تا صد (+ دانلود فیلم آموزش رایگان)
شمارنده MOD یا Modulus Counter یک مدار شمارنده آبشاری است که قبل از ریست شدن، تا یک مقدار تنظیم شده میشمارد. در این آموزش قصد داریم این نوع از شمارندهها را بررسی کنیم.
وظیفه یک شمارنده این است که با هر پالس کلاک، در دنباله اعداد از پیش تعیین شده پیشروی کند، تا شمارش انجام گیرد. شمارندههایی که دنباله اعداد یا حالتهای شمارش خود را با ورود هر پالس ساعت افزایش میدهند، در اصطلاح شمارنده بالا شمار (Up Counter) یا صعودی نام دارند. به طریق مشابه، شمارندههایی که با ورود پالس کلاک به آنها، دنباله اعداد یا حالتهای شمارش خود را کاهش میدهند، شمارنده پایین شمار (Down Counting) یا نزولی گفته میشوند. شمارندههایی که این قابلیت را دارند تا در هر دو مود بالا شمار و پایین شمار عمل کنند، شمارندههای دو جهته (Bidirectional Counters) نام دارند.
در حالت کلی میتوان گفت که شمارندهها، مدارات منطقی ترتیبی (Sequential Logic Circuit) هستند که توسط یک سیگنال خارجی به نام سیگنال کلاک، تریگر یا فعالسازی میشوند. یک شمارنده میتواند به نحوی ساخته شود تا به عنوان یک مدار سنکرون و یا یک مدار آسنکرون عمل کند. در شمارندههای سنکرون، تمام بیتهای شمارش به صورت همزمان و با اعمال سیگنال کلاک تغییر میکنند. در حالی که در یک شمارنده آسنکرون، مدار از سیگنال کلاک ورودی مستقل است و به همین دلیل بیتهای داده، حالت خود را در زمانهای مختلف یکی پس از دیگری تغییر میدهد.
پس شمارندهها مدرات ترتیبی هستند که دنباله از پیش تعیین شدهای از حالتهای شمارش را دنبال میکنند و با سیگنال کلاک خارجی تریگر میشوند. تعداد حالتها یا دنباله شمارشی که یک شمارنده، قبل از بازگشت به حالت اصلی خود، طی میکند را پیمانه (Modulus) آن شمارنده میگویند و با MOD نشان داده میشود. به عبارت دیگر میتوان گفت که پیمانه هر شمارنده، تعداد اعدادی است که یک شمارنده میشمارد و برابر با عدد مقسم شمارنده است.
شمارندههای پیمانهای یا منقطع یا MOD بر اساس تعداد حالاتی که شمارنده در هر تکرار طی میکند، تعریف میشوند. به عنوان مثال، یک شمارنده دو بیتی که از ۰۰ تا ۱۱ در مبنای باینری میشمارد، دارای مقدار پیمانهای یا MOD برابر با ۴ است. مقادیر شمارش این شمارنده در مبنای ده دهی از ۰ تا ۳ است و حالتهایی که در طول شمارش آنها را طی میکند، برابر با ۰۰، ۰۱، ۱۰ و ۱۱ هستند. بعد از طی کردن این 4 حالت در دنباله شمارشی، شمارنده به حالت اصلی خود یعنی ۰۰ باز میگردد. بر اساس این توضیحات، چنین شمارندهای را شمارنده MOD-4 میگویند. به این نکته مهم نیز توجه کنید که این شمارنده برای طی کردن یک دنباله از ۰۰ تا ۱۱ به چهار پالس کلاک در ورودی خود احتیاج دارد.
همان طور که در مثال ساده بالا دیدیم، این شمارنده فقط دو بیت (n=2) دارد، بنابراین بیشینه تعداد حالتهای ممکن در خروجی برای این شمارنده برابر با است. اما نکته مهمی که وجود دارد، این است که میتوان شمارندهها را به نحوی طراحی کرد که شمارش را نه به صورت کامل، بلکه تا هر عدد دلخواهی از حالت ممکن، انجام دهند. این کار را با اتصال آبشاری چندین طبقه شمارنده به یکدیگر و تولید یک شمارنده MOD-N امکانپذیر میشود.
بنابراین یک شمارنده MOD-n، به n عدد فلیپ فلاپ که به یکدیگر متصل شده باشند، نیاز دارد تا یک بیت داده را بشمارد و حالت مختلف را در خروجی تولید کنند. n برابر با تعداد بیتها است. همچنین به این نکته باید توجه کرد که n همیشه یک عدد صحیح است.
دیدیم که یک شمارنده MOD دارای مقدار پیمانهای است که توان صحیحی از عدد ۲ مانند ۲، ۴، ۸ و ... در نظر گرفته میشود. بنابراین در تولید یک شمارنده n بیتی، بسته به تعداد فلیپ فلاپهای مورد استفاده و نیز نحوه اتصال آنها، نوع شمارنده و مقدار MOD آن تعیین میشود.
شمارنده MOD با فلیپ فلاپ نوع D
شمارندههای MOD با استفاده از فلیپ فلاپها ساخته میشوند. یک فلیپ فلاپ به تنهایی، میتواند دنباله شمارش متشکل از ۰ و ۱ را تولید کند و به عبارت دیگر دارای بیشینه شمارش برابر با ۲ است. انواع مختلفی از فلیپ فلاپها با طراحیهای متفاوتی وجود دارند که با استفاده از آنها میتوان یک شمارنده را ایجاد کرد. فلیپ فلاپهای SR، فلیپ فلاپهای JK، فلیپ فلاپهای JK Master-slave فلیپ فلاپهای نوع D و در نهایت فلیپ فلاپهای نوع T را میتوان به عنوان فلیپ فلاپهای مورد استفاده در ساخت شمارندهها نام برد. اما برای ساختار سادهتر میتوان این شمارندهها را با استفاده از فلیپ فلاپ نوع D ایجاد کرد. این فلیپ فلاپ را لچ داده نیز میگویند.
فلیپ فلاپ نوع D، فقط یک داده ورودی تکی و سیگنال کلاک خارجی را مورد استفاده قرار میدهد و همچنین این فلیپ فلاپ، حساس به لبه مثبت یا بالا رونده است.
فلیپ فلاپهای نوع D، مانند آیسی TTL 74LS74 را میتوان با استفاده از فلیپ فلاپهای حساس به لبه نوع JK و یا فلیپ فلاپهای SR ایجاد کرد. انتخاب فلیپ فلاپها به این موضوع بستگی دارد که طراح بخواهد که فلیپ فلاپ در لبه مثبت یا بالا رونده (تغییر سطح از ۰ به ۱) پالس کلاک تغییر حالت بدهد یا این کار را در لبه پایین رونده یا منفی (تغییر سطح از ۱ به ۰) پالس کلاک انجام دهد. در این مقاله فرض میکنیم که طراح بخواهد در لبه پایین رونده یا منفی پالس کلاک تغییر حالت دهد.
نماد مداری و جدول درستی فلیپ فلاپ نوع D در شکل زیر نشان داده شده است.
عملکرد فلیپ فلاپ نوع D بسیار ساده است؛ زیرا این نوع فلیپ فلاپ فقط یک ورودی داده D و یک ورودی اضافی پالس کلاک CLK دارد. این ساختار اجازه میدهد که یک بیت داده تکی (۰ یا ۱) تحت کنترل سیگنال کلاک فلیپ فلاپ ذخیرهسازی شود. به همین دلیل میتوان گفت که فلیپ فلاپ نوع D یک وسیله سنکرون است؛ زیرا دادهای که در ورودی آن باشد، فقط در لبه تریگر کننده پالس کلاک به خروجی فلیپ فلاپ منتقل میشود.
با توجه به جدول درستی فلیپ فلاپ نوع D، اگر یک سطح منطقی ۱ یا HIGH در ورودی داده فلیپ فلاپ قرار داشته باشد، با اعمال پالس کلاک مثبت، فلیپ فلاپ ست (Set) میشود و سطح منطقی یک را در خروجی Q ذخیره میکند. همچنین در خروجی مکمل فلیپ فلاپ یعنی ، مقدار صفر منطقی ذخیره میشود. به طریق مشابه، اگر یک سطح ۰ منطقی در ورودی D فلیپ فلاپ قرار بگیرد، با اعمال پالس کلاک مثبت بعدی، فلیپ فلاپ ریست میشود و سطح صفر منطقی را در خروجی Q خود ذخیره میکند و مقدار به سطح یک منطقی تغییر مییابد.
بنابراین هنگام HIGH بودن ورودی کلاک، خروجی Q فلیپ فلاپ نوع D، به مقدار ورودی D پاسخ میدهد. زمانی که ورودی کلاک در سطح LOW منطقی قرار داشته باشد، حالت در خروجی Q هر مقداری که باشد (۰ یا ۱ منطقی)، تا زمان ورود پالس کلاک سطح HIGH بعدی، در همان مقدار نگه داشته میشود. بنابراین خروجی Q فقط زمانی تغییر حالت میدهد که ورودی پالس کلاک از سطح LOW یا صفر منطقی به HIGH یا یک منطقی تغییر یابد. به همین دلیل این فلیپ فلاپ نوع D، یک فلیپ فلاپ حساس به لبه مثبت است. به یاد داشته باشید که فلیپ فلاپ حساس به لبه منفی بسیار شبیه به همین نوع از فلیپ فلاپها کار میکند و تفاوت آنها در این است که این بار فلیپ فلاپ در لبه منفی یا پایین رونده پالس کلاک تریگر میشود. حال که با اصول کاری یک فلیپ فلاپ نوع D آشنا شدیم، به نحوه اتصال این فلیپ فلاپها جهت تشکیل یک شمارنده MOD میپردازیم.
شمارنده مقسم بر دو
فلیپ فلاپ نوع D حساس به لبه، یک بلوک پایهای و تطبیق پذیر برای ایجاد شمارندههای MOD و یا هر نوع دیگر از مدارات منطقی ترتیبی است. اگر مطابق شکل زیر، خروجی هر فلیپ فلاپ را به ورودی D آن متصل کنیم و یک حلقه فیدبک در مدار ایجاد کنیم، آنگاه میتوانیم فلیپ فلاپ را به یک شمارنده مقسم بر دو تبدیل کنیم. توجه کنید که خروجی فلیپ فلاپ دقیقا مکمل خروجی Q است.
مدار و نیز دیاگرام زمانبندی یک شمارنده مقسم بر دو را در تصویر زیر میتوان مشاهده کرد.
بر اساس دیاگرام زمانبندی این شمارنده، که در تصویر بالا دیده میشود، شکل موج خروجی Q دارای فرکانسی دقیقا برابر با نصف فرکانس کلاک ورودی است. بنابراین میتوان گفت که مدار مانند یک مقسم فرکانسی عمل میکند. اگر یک فلیپ فلاپ D دیگر را به مدار اضافه کنیم، به نحوی که خروجی Q فلیپ فلاپ اول را به ورودی فلیپ فلاپ دوم متصل کنیم، آنگاه فرکانس سیگنال خروجی فلیپ فلاپ دوم، برابر با یک چهارم فرکانس پالس کلاک ورودی خواهد بود. این روال را میتوان با اضافه کردن تعداد بیشتری فلیپ فلاپ به زنجیره ادامه داد. پس برای n عدد از فلیپ فلاپها که با روش بالا به یکدیگر متصل شده باشند، فرکانس خروجی در اثر تقسیمات متوالی بر ۲، نهایتا بر 2n تقسیم میشود.
به یاد داشته باشید که این روش تقسیم فرکانسی، برای استفاده در مدارات شمارنده بسیار مفید و ساده است. به عنوان مثال، اگر یک سیگنال ۶۰ هرتز به عنوان ورودی اصلی مدار در نظر گرفته شود، در نهایت با استفاده از مدار مقسم بر ۶۰ میتوانیم آن را به سیگنال زمانبندی با فرکانس ۱ هرتز تبدیل کنیم. ابتدا با استفاده از یک مقسم بر ۶ میتوانیم فرکانس ۶۰ هرتز ورودی را به ۱۰ هرتز کاهش دهیم و سپس از یک مقسم بر ۱۰ استفاده کنیم و خروجی را به فرکانس ۱ هرتز کاهش دهیم.
شمارنده MOD-4
به لحاظ تکنیکی، میتوان یک فلیپ فلاپ تکی را علاوه بر المان حافظه یک بیتی، یک شمارنده MOD-2 نیز در نظر گرفت. چون این المان فقط یک خروجی دارد، بنابراین با بهره گرفتن از پالس کلاک، منجر به شمارش دو حالت ۰ و ۱ میشود. یک فلیپ فلاپ تکی میتواند دنباله محدودی را شمارش کند، اما اگر تعداد بیشتری فلیپ فلاپ را به صورت زنجیری به هم متصل کنیم، میتوانیم ظرفیت شمارش را بالا ببریم و شمارندههای MOD با مقادیر مختلف را ایجاد کنیم.
اگر یک فلیپ فلاپ تکی را به عنوان شمارنده MOD-2 در نظر بگیریم، آنگاه با اضافه کردن فلیپ فلاپ دوم، شمارنده MOD-4 را خواهیم داشت که قادر است ۴ حالت گسسته را شمارش کند. عملکرد کلی این شمارنده این است که فرکانس سیگنال کلاک ورودی را بر ۴ تقسیم میکند. بنابراین دنباله شمارش برای این شمارنده دو بیتی MOD-4، متشکل از اعداد ۰۰، ۰۱، ۱۰ و ۱۱ است. دیاگرام زمانبندی و مدار شمارنده MOD-4 در شکل زیر نشان داده شده است.
به یاد داشته باشید که در دیاگرام زمانبندی بالا برای سادگی، گذارهای سوئیچینگ در و و CLK، به صورت همزمان نشان داده شدهاند. اگرچه این اتصالات نشاندهنده یک مدار شمارنده آسنکرون (Asynchronous) هستند، اما در عمل یک زمان تاخیر سوئیچینگ بسیار کوچک بین اعمال سیگنال کلاک با لبه مثبت یا بالا رونده و خروجیهای و وجود دارد. عملکرد این شمارنده آسنکرون دو بیتی را میتوان به کمک جدول درستی و دیاگرام حالت، به صورت تصویری نشان داد.
از جدول درستی بالا و با خواندن مقادیر و ، میتوانیم به این نکته پی ببریم که زمانی که و باشند، شمارش برابر با ۰۰ خواهد بود. بعد از اعمال پالس کلاک، مقادیر برابر با و خواهند شد و در نتیجه مقدار شمارش ۰۱ میشود.
اعمال پالس کلاکهای سوم و چهارم نیز باعث میشود که خروجی شمارنده به ۱۰ و ۱۱ تغییر یابد. حال پالس کلاک پنجم، شمارش را به مقدار اصلی ۰۰ ریست میکند. شمارنده پس از این حالت، تا زمانی که پالس کلاک دریافت کند، به صورت صعودی دنباله ۰۰، ۰۱، ۱۰، ۱۱ را تکرار میکند.
بنابراین دیدیم که یک شمارنده MOD-2 از یک فلیپ فلاپ تشکیل شده است و برای ساخت شمارنده MOD-4 به دو فلیپ فلاپ جهت شمارش ۴ حالت گسسته نیاز داریم. میتوانیم به سادگی فلیپ فلاپ دیگری را به انتهای زنجیره شمارنده MOD-4 اضافه کنیم تا یک شمارنده MOD-8 ایجاد شود. شمارنده MOD-8 دنبالهای متشکل از حالت باینری، از ۰۰۰ تا ۱۱۱ را در خروجی برای کاربر ایجاد میکند و سپس به مقدار ۰۰۰ ریست میشود. این روند میتواند همچنان ادامه داشته باشد. مثلا ۴ فلیپ فلاپ قادر هستند که یک شمارنده MOD-16 را ایجاد کنند. مدار و دیاگرام حالت یک شمارنده MOD-8 در تصویر زیر نشان داده شده است.
بنابراین، میتوان شمارندههای MOD را برای ایجاد شمارشی طبیعی متشکل از حالت ایجاد کرد و سپس شمارنده به مقدار اولیه خود بازگشته و دنباله مجددا تکرار میشود. اما گاهی لازم است که یک شمارنده MOD ایجاد شود که در طول فرایند طبیعی شمارش، ریست شود و به حالت صفر اولیه بازگردد. به عبارت دیگر، عدد MOD شمارنده، توان کاملی از ۲ نباشد، بلکه اعدادی مانند ۳، ۵، ۶ یا ۱۰ باشد.
شمارنده MOD-m
شمارندهها (سنکرون و آسنکرون) در هر لحظه یک شمارش را در مجموعه اعداد باینری انجام میدهند. یک شمارنده n بیتی در حالت طبیعی به عنوان شمارنده با پیمانه عمل میکند. اما این امکان وجود دارد که شمارنده MOD را برای شمارش تا هر عدد دلخواه ایجاد کرد. برای این کار لازم است که از یک یا دو گیت منطقی خارجی اضافه در مدار شمارنده استفاده کنیم. این گیتهای منطقی باعث میشوند که شمارنده از بعضی از حالتهای خروجی صرف نظر کند و شمارش را در عدد دلخواه مورد نظر کاربر به پایان برساند و سپس به حالت صفر ریست شود. در حالت اول، خروجی Q تمام فلیپ فلاپها صفر است.
در این حالت شمارندهای که ایجاد میشود، یک شمارنده MOD-m است. این شمارنده تمام حالتهای ممکن را شمارش نمیکند، بلکه شمارش را تا حالت mام انجام داده و به صفر باز میگردد. واضح است که در اینجا m باید عددی کوچکتر از باشد. حال چگونه باید چنین شمارندهای را به وجود بیاوریم.