شمارنده سنکرون – راهنمای جامع


شمارنده سنکرون (Synchronous Counter) را میتوان جزو پرکاربردترین مدارات منطقی به حساب آورد. در یک شمارنده سنکرون ورودی کلاک تمام فلیپ فلاپها در یک لحظه زمانی و توسط یک سیگنال کلاک یکسان تغذیه میشوند. در این مطلب به بیان نحوه کار شمارندههای سنکرون میپردازیم.
در مطالب قبلی مجله فرادرس دیدیم که در شمارندههای باینری آسنکرون، خروجی یک طبقه از شمارنده مستقیما به ورودی کلاک طبقه بعدی شمارنده متصل میشود و این روند در تمام طول زنجیره شمارنده ادامه مییابد. چنین پیکربندی باعث میشود که در این نوع از شمارندهها مشکلی به نام تاخیر انتشاری (Propagation Delay) به وجود آید. تاخیر انتشاری در واقع به این صورت بیان میشود که سیگنال زمانبندی در طول گذر از هر فلیپ فلاپ دچار مقداری تاخیر میشود.
در شمارندههای سنکرون، سیگنال کلاک خارجی به ورودی کلاک همه فلیپ فلاپهای مدار متصل میشود. بنابراین تمام فلیپ فلاپهای شمارنده در یک لحظه و به صورت همزمان و موازی با یکدیگر کلاک میشوند و یک رابطه زمانی ثابت وجود دارد. به عبارت دیگر، تغییر در سیگنال خروجی به صورت همگام با سیگنال کلاک تفاق میافتد.
نتیجه این همگامسازی این است که تمام بیتهای تکی خروجی دقیقا در یک زمان یکسان در پاسخ به سیگنال کلاک عمومی تغییر حالت میدهند و هیچ حالت موجی وجود نخواهد داشت، دقیقا به همین دلیل است که در مدار تاخیر انتشار نیز از بین میرود.
در شکل زیر نمایی از نحوه اتصال فلیپ فلاپهای JK برای تشکیل یک شمارنده سنکرون باینری چهار بیتی نشان داده شده است.

از روی شکل هم میتوان دید که که پالس کلاک خارجی (پالسی که موجب شمارش میشود.) مستقیما به تمام فلیپ فلاپهای JK در زنجیره شمارنده وارد شده است و ورودیهای J و K به یکدیگر متصل شدهاند. اما ورودیهای J و K فقط در فلیپ فلاپ اول به ولتاژ سطح HIGH یا یک منطقی متصل شدهاند. این فلیپ فلاپ (FFA) کم ارزشترین بیت (LSB) را دارد و به دلیل اتصال به ولتاژ یک منطقی میتواند در هر پالس کلاک تغییر وضعیت دهد. بنابراین یک شمارنده سنکرون، دنباله از پیش تعیین شدهای را در پاسخ به سیگنال کلاک دنبال میکند و برای هر پالس یک حالت به جلو میرود.
ورودیهای J و K در فلیپ فلاپ دوم یا FFB مستقیما به خروجی مربوط به فلیپ فلاپ FFA متصل شدهاند. اما ورودیهای J و K در فلیپ فلاپهای FFC و FFD از خروجی گیتهای AND جداگانهای تغذیه میشوند که خود گیتهای AND نیز از پالسهای ورودی و خروجی طبقات قبلی ورودی دریافت میکنند. بنابراین گیتهای AND که به مدار اضافه شدهاند، سطح منطقی مورد نیاز برای ورودیهای J و K طبقه بعدی را فراهم میکنند.
اگر فلیپ فلاپهای JK را طوری برنامهریزی کنیم که تغییر وضعیت آنها بر مبنای خروجی فلیپفلاپهای قبلی رخ بدهد که در حالت HIGH یا LOW قرار دارند، در این صورت به دنباله شمارشی دست مییابیم که با آنچه در شمارندههای آسنکرون تولید میشود، مشابه است؛ اما این بار اثر موجی در مدار وجود ندارد، زیرا در شمارنده سنکرون هر فلیپ فلاپ از یک پالس کلاک خارجی و در یک زمان تغذیه میشود.
بنابراین در مدار ذاتا هیچ گونه تاخیر انتشاری وجود ندارد و تمام طبقات فلیپ فلاپ در شمارنده در یک زمان یکسان به صورت موازی تغییر حالت میدهند. به همین دلیل است که بیشینه فرکانس کاری در این مدارات شمارنده فرکانسی بسیار بالاتر از نوع مشابه، یعنی شمارندههای فرکانسی آسنکرون است. در تصویر زیر شکل موج دیاگرام زمانبندی متعلق به یک شمارنده چهار بیتی باینری سنکرون دیده میشود.

به دلیل اینکه یک شمارنده سنکرون ۴ بیتی در هر پالس ساعت شمارش را انجام میدهد، در نتیجه شمارنده، شمارش را به سمت بالا و از ۰ (۰۰۰۰) تا ۱۵ (۱۱۱۱) انجام میدهد. به همین علت است که این نوع از شمارندهها را شمارنده سنکرون ۴ بیتی بالا شمار (4Bit Synchronous Up Counter) نیز میگویند. یک شمارنده سنکرون ۴ بیتی پایین شمار را نیز میتوان به راحتی پیادهسازی کرد. توجه کنید که این بار گیت AND به خروجی فلیپ فلاپها متصل میشود. تصویر زیر نمایی از چنین مداری را نشان میدهد. در این حالت شکل موج دیاگرام زمانبندی دقیقا معکوس دیاگرام زمانبندی شمارنده آسنکرون ۴ بیتی بالا شمار است.

در این مدار، شمارنده از حالتی شروع به شمارش میکند که در آن تمام خروجیها در سطح یک منطقی هستند (۱۱۱۱) و شمارش را با استفاده از پالسهای کلاک به سمت پایین تا مقدار صفر (۰۰۰۰) ادامه میدهد و سپس این فرایند مجددا تکرار میشود.
یک شمارنده سنکرون معمولا از طریق اتصال فلیپ فلاپها به یکدیگر ایجاد میشوند. در واقع هر تعداد فلیپ فلاپ میتوانند به صورت آبشاری به یکدیگر متصل شوند تا یک مدار شمارنده باینری مقسم بر n تشکیل شود. عدد MOD برای این نوع از شمارندهها هم قابل استعمال است. البته شمارندههای ده دهی یا BCD که از صفر تا میشمارند و نیز شمارندههای منقطع را نیز میتوان با این روش ایجاد کرد. برای افزایش عدد MOD یک شمارنده سنکرون بالا شمار و یا پایین شمار فقط تعداد گیتهای AND و فلیپ فلاپهای بیشتری مورد نیاز است.
شمارنده سنکرون ده دهی چهار بیتی
یک شمارنده سنکرون ده دهی چهار بیتی نیز میتواند با استفاده از شمارنده باینری سنکرون برای تولید دنباله شمارش اعداد از ۰ تا ۹ ساخته شود. به کمک چند وسیله منطقی اضافی (برای پیادهسازی دنباله حالتهای مطلوب)، میتوان یک شمارنده باینری استاندارد را به یک شمارنده ده دهی تبدیل کرد. در این شمارنده، بعد از این که شمارنده به عدد 1001 برسد، شمارنده به مقدار ۰۰۰۰ ریست میشود. در تصویر زیر مدار یک شمارنده سنکرون ده دهی چهار بیتی دیده می شود.

گیتهای AND و OR اضافی این امر را تشخیص میدهند که دنباله شمارش چه زمانی به مقدار ۱۰۰۱ (۱۰ باینری) میرسد. با وقوع این حالت، فلیپ فلاپ چهارم (FFD) در پالس کلاک بعدی مجبور میشود که تغییر حالت دهد. در نتیجه شمارنده ریست میشود و دوباره شمارش را از ۰۰۰۰ شروع میکند. به این نکته توجه کنید که فلیپ فلاپ اول (FFA) در هر پالس کلاک تغییر حالت میدهد. بنابراین یک مدار شمارنده سنکرون ده دهی به این صورت ایجاد میشود.
در مدار بالا میتوان گیتهای AND اضافی را به سادگی سازمان دهی کرد تا نوع دیگر از شمارندهها با عدد MOD برابر با ۱۲ ایجاد شود. این شمارنده قادر خواهد بود تا ۱۲ حالت یعنی از ۰۰۰۰ تا ۱۰۱۱ (۰ تا ۱۱) را بشمارد و سپس آنها را تکرار کند، به همین دلیل برای کلاک بسیار مناسب هستند.
تغییر وضعیت در شمارنده سنکرون
شمارندههای سنکرون از فلیپ فلاپهای حساس به لبه (در لبهها تغییر وضعیت میدهند.) استفاده میکنند. این فلیپ فلاپها میتوانند یا در لبههای بالا رونده و یا در لبههای پایین رونده پالس کلاک در ورودی کنترلی، وضعیت خود را تغییر دهند. در نتیجه تغییر حالت سیگنال کلاک ورودی، منجر به شمارش یک عدد میشود.
در حالت کلی، شمارندههای سنکرون در لبه بالا رونده سیگنال کلاک (گذار سیگنال کلاک از وضعیت LOW به وضعیت HIGH) و شمارندههای موجی آسنکرون در لبه پایین رونده سیگنال کلاک (گذرا سیگنال کلاک از وضعیت HIGH به LOW) شمارش را انجام میدهند. تصویر زیر نمایی از تفاوت این لبهها را نشان میدهد.

ممکن است این مسئله غیر معمول به نظر برسد که شمارندههای موجی آسنکرون در لبه پایین رونده پالس کلاک تغییر وضعیت میدهند، اما این حالت ارتباط شمارندهها با یکدیگر را بسیار آسانتر میکند؛ زیرا با ارزشترین بیت (MSB) شمارنده میتواند ورودی کلاک را به مرحله بعدی ببرد. این روش به این دلیل موثر است که هنگامی که یک بیت از حالت HIGH به حالت LOW تغییر پیدا میکند، بیت بعدی هم حتما باید تغییر کند. در شمارندههای سنکرون همیشه دو پین Carry-Out و Carry-In وجود دارند تا شمارندهها را بدون ایجاد تاخیر انتشاری به یکدیگر لینک کنند.
خلاصه
حال اگر بخواهیم مهمترین مطالب مربوط به شمارندههای سنکرون را خلاصه کنیم، باید به نکات زیر اشاره کنیم:
- شمارندههای سنکرون میتوانند از فلیپ فلاپهای نوع T و یا فلیپ فلاپهای نوع D ساخته شوند.
- طراحی شمارندههای سنکرون از شمارندههای آسنکرون بسیار سادهتر است.
- این شمارندهها به این دلیل سنکرون نامیده میشوند که ورودی کلاک فلیپ فلاپها همگی با هم در یک لحظه و با یک پالس کلاک تغذیه میشوند.
- به دلیل این پالس کلاک مشترک تمام حالتهای خروجی همزمان با یکدیگر تغییر وضعیت میدهند.
- به دلیل این که همه فلیپ فلاپها به صورت جداگانه از پالس کلاک مشترکی تغذیه میشوند، بر خلاف شمارندههای آسنکرون، هیچ تاخیر انتشاری در شمارنده های سنکرون وجود ندارد.
- شمارندههای سنکرون گاهی با نام شمارندههای موازی هم شناخته میشوند؛ زیرا در این شمارندهها پالس کلاک به صورت موازی به تمام فلیپ فلاپها وارد میشود.
- دنباله شمارش با استفاده از یک گیت منطقی کنترل میشود.
- در مقایسه با یک شمارنده آسنکرون، شمارندههای سنکرون دارای سرعت عملکرد بسیار بالاتری هستند.
اگر علاقهمند به یادگیری مباحث مشابه مطلب بالا هستید، آموزشهایی که در ادامه آمدهاند نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای مهندسی الکترونیک
- آموزش مدارهای منطقی (طراحی دیجیتال)
- مجموعه آموزشهای نرمافزارهای مهندسی برق و الکترونیک
- آموزش مدار منطقی (مرور – تست کنکور ارشد)
- منطق دیجیتال — از صفر تا صد
- آموزش سیستمهای باینری — مجموعه مقالات جامع وبلاگ فرادرس
- شیفت رجیستر — از صفر تا صد
^^