شمارنده در منطق
دیجیتال و محاسبات، دستگاهی است که تعداد دفعاتی که یک رویداد یا فرایند خاص رخ داده است را ذخیره می کند ( یا در برخی مواقع نمایش می دهد ) . که اغلب شمارنده در رابطه با
سیگنال ساعت است.
در الکترونیک، شمارنده ها می توانند به راحتی با استفاده از مدارهای رجیستر مانند فلیپ فلاپ، و طیف گسترده ای از
مدارهایی که وجود دارند پیاده سازی شوند:
شمارنده ( موج دار شدن ) آسنکرون - تغییر بیت های وضعیت به عنوان
پالس ساعت برای تغییر حالت
فلیپ فلاپ ها استفاده می شودشمارنده سنکرون ( همزمان ) - تمام بیت های وضعیت تحت کنترل یک
پالس ساعت تغییر می کنند
شمارنده ده تایی - هر ده وضعیت در یک مرحله را شمارش می کند
شمارنده صعودی/نزولی - به هر دو صورت صعودی و نزولی تحت یک فرمان کنترل ورودی شمارش می کند
شمارنده حلقوی - توسط یک
شیفت رجیستر با اتصال ابتدا به انتهای شیفت رجیستر ایجاد می گردد
شمارنده جانسون - یک شمارنده حلقوی دوتاییشمارنده آبشاریشمارنده مادوله هر کدام از شمارنده ها برای برنامه های مختلف مفید است. معمولاً، مدارهای شمارنده ذاتاً دیجیتال و دودویی هستند. بسیاری از انواع مدارهای شمارنده به شکل بلوک های ساختمان های دیجیتال در دسترس هستند، به عنوان مثال تعدادی از تراشه ها در سری ۴۰۰۰ شمارنده های متفاوتی را پیاده سازی کرده اند. گاهی مزایایی برای استفاده از یک شمارنده ترتیبی نسب به شماره بیتی معمولی وجود دارد - به عنوان نمونه شمارنده اعشاری کد باینری، شمارنده خطی معکوس شیفت رجیستر یا شمارنده کد گری
شمارنده آسنکرون ( موجی ) یک فلیپ فلاپ از نوع D، با ورودی ( داده ) J که از معکوس خروجی خود تغذیه می نماید می باشد . این چرخه می تواند بر روی یک بیت ذخیره گردد و از این رو می تواند از صفر تا رقمی قبل از سربار ( overflows ) شمارش نماید. این شمارنده با هر چرخه کلاک افزایش می یابد و دو چرخه کلاک تا رسیدن به سربار به طول می انجامد، بنابراین هر چرخه تناوب انتقال صفر به یک و از 1 به 0 می باشد . توجه کنید این باعث به وجود آمدن یک ساعت جدید با ظرفیت 50٪ در دقیقاً نیمی از فرکانس کلاک ورودی می شود. اگر این خروجی به عنوان سیگنال کلاک برای یک فلیپ فلاپ D مشابه استفاده شود ( خاطر نشان میگردد که خروجی به صورت معکوس به ورودی منتقل می شود ) ، یکی از آنها، شمارنده تک بیتی دیگری خواهد بود که نیمی سریع تر می شمارد. قرار دادن این ها در کنار هم تشکیل یک شمارنده دو بیتی را میدهد :