شمارنده

شمارنده در منطق دیجیتال و محاسبات، دستگاهی است که تعداد دفعاتی که یک رویداد یا فرایند خاص رخ داده است را ذخیره می‌نماید (یا در برخی مواقع نمایش می‌دهد). که اغلب شمارنده در رابطه با سیگنال ساعت است.
شمارنده الکترونیکی
در الکترونیک، شمارنده‌ها می‌توانند به راحتی با استفاده از مدارهای رجیستر مانند فلیپ فلاپ، و طیف گسترده‌ای از مدارهایی که وجود دارند پیاده‌سازی شوند:
شمارنده (موج دار شدن) آسنکرون - تغییر بیت‌های وضعیت به عنوان پالس ساعت برای تغییر حالت فلیپ فلاپ‌ها استفاده می‌شود
شمارنده سنکرون (همزمان) - تمام بیت‌های وضعیت تحت کنترل یک پالس ساعت تغییر می‌کنند
شمارنده ده تایی-هر ده وضعیت در یک مرحله را شمارش می‌کند
شمارنده صعودی/نزولی- به هر دو صورت صعودی و نزولی تحت یک فرمان کنترل ورودی شمارش می‌کند
شمارنده حلقوی- توسط یک شیفت رجیستر با اتصال ابتدا به انتهای شیفت رجیستر ایجاد می‌گردد
شمارنده جانسون- یک شمارنده حلقوی دوتایی
شمارنده آبشاری
شمارنده مادوله
هر کدام از شمارنده‌ها برای برنامه‌های مختلف مفید است. معمولا، مدارهای شمارنده ذاتا دیجیتال و دودویی هستند. بسیاری از انواع مدارهای شمارنده به شکل بلوک‌های ساختمان‌های دیجیتال در دسترس هستند، به عنوان مثال تعدادی از تراشه‌ها در سری ۴۰۰۰ شمارنده‌های متفاوتی را پیاده‌سازی کرده‌اند.
گاهی مزایایی برای استفاده از یک شمارنده ترتیبی نسب به شماره بیتی معمولی وجود دارد- به عنوان نمونه شمارنده اعشاری کد باینری ، شمارنده خطی معکوس شیفت رجیستر یا شمارنده کد گری
شمارنده آسنکرون (موجی)
Asynchronous counter created from two فلیپ‌فلاپs
شمارنده آسنکرون (موجی) یک فلیپ فلاپ از نوع D ، با ورودی(داده) J که از معکوس خروجی خود تغذیه می‌نماید می‌باشد. این چرخه می‌تواند بر روی یک بیت ذخیره گردد و از این رو میتواند از صفر تا رقمی قبل از سربار (overflows) شمارش نماید.این شمارنده با هر چرخه کلاک افزایش می‌یابد و دو چرخه کلاک تا رسیدن به سربار به طول می‌انجامد ، بنابراین هر چرخه تناوب انتقال صفر به یک و از 1 به 0 می‌باشد. توجه کنید این باعث بوجود آمدن یک ساعت جدید با ظرفیت 50٪ در دقیقا نیمی از فرکانس کلاک ورودی می‌شود. اگر این خروجی به عنوان سیگنال کلاک برای یک فلیپ فلاپ D مشابه استفاده شود (خاطر نشان میگردد که خروجی به صورت معکوس به ورودی منتقل می‌شود) ، یکی از آنها، شمارنده تک بیتی دیگری خواهد بود که نیمی سریع‌تر می‌شمارد.قرار دادن اینها در کنار هم تشکیل یک شمارنده دو بیتی را میدهد :
Cycle
Q1
Q0
(Q1:Q0)dec
0
0
0
0
1
0
1
1
2
1
0
2
3
1
1
3
4
0
0
0
میتوانید با افزایش فلیپ فلاپ‌ها ادامه دهید ، همیشه خروجی معکوس را به ورودی خودش متصل نماید ، و از خروجی فلیپ فلاپ فبلی به عنوان سیگنال کلاک استفاده نمایید. نتیجه آن شمارنده موجی نامیده میشود که میتواند تا2 n - 1 بشمارد که n تعداد بیتها (مراحل فلیپ فلاپ) در شمارنده می‌باشد. شمارنده موجی دارای مشکل بی‌ثباتی خروجی به عنوان سربار موج از هر مرحله به مرحله دیگر میباشد. اما این شمارنده‌ها برنامه‌های متنوعی را به عنوان تقسیم کننده سیگنال‌های ساعت پیدا میکنند ، که در آن شمارش فوری اهمیتی نداشته ، اما تقسیم نسبی مجموع مهم می‌باشد (برای توضیح این مطلب ، یک شمارنده تک بیتی دقیقا برابر با تقسیم دو سیکل می‌باشد ، فرکانس خروجی دقیقا نیمی از ورودی است که به وسیله یک دسته کلاک پالس‌های منظم تغذیه می‌شود)
استفاده از خروجی فلیپ فلاپ به عنوان کلاک منجر به اختلال زمانی بین شمارش بیت‌ها داده می‌شود، ساخت این تکنیک موجی ناسازگار با طراحی مدار سنکرون می‌باشد.
شمارنده سنکرون
A 4-bit synchronous counter using JK flip-flops
در شمارنده‌های سنکرون ، کلاک ورودی همه فلیپ فلاپ‌ها به هم متصل می‌باشند و به وسیله پالس ورودی شروع می‌شوند. بنابراین، همه فلیپ فلاپ‌ها به طور همزمان(به صورت موازی) تغییر حالت میدهند. چرخه زیر یک شمارنده 4 بیتی سنکرون می‌باشد. ورودی J و K از FF0 به HIGH متصل شده است. FF1 ورودی j و k خودش را دارد که به خروجی FF0 متصل است. و ورودی j و k FF2 به خروجی گیت AND که از خروجی FF0 و FF1 حاصل می‌شود متصل است . یک راه ساده برای پیاده سازی منطق هر بیت شمارنده صعودی (که در شکل سمت راست نشان داده شده است) تغییر وضعیت زمانی هر بیت در لحظه‌ای که همه بیت‌های کم اهمیت در حالت منطقی بالا قرار دارند می‌باشد. به عنوان مثال ، بیت 1 در لحظه‌ای که بیت 0 در حالت منطقی بالا قرار دارد تغییر وضعیت میدهد ، بیت 2 زمانی که هر دو بیت 0 و 1 در حالت منطقی بالا می‌باشد تغییر وضعیت میدهد ، بیت 3 زمانی که بیت 2 ، بیت 1 و بیت 0 در حات منطقی بالا قرار دارند تغییر وضعیت می‌دهد و این رویه به همین صورت ادامه پیدا میکند.
شمارنده سنکرون می‌تواند به وسیله سخت افزار ماشین متناهی(finite state machine) ، که کمی پیچیده‌تر اما روان‌تر و پایدار‌تر است پیاده سازی شود. شمارنده‌های سخت افزاری از این نوع می‌باشد.
شمارنده ده دهی (decade)
شمارنده ده دهی شمارنده‌ای است که اعداد را در عوض باینری به صورت ده دهی می‌شمارد.