مدار تشخیص لبه (Edge Detector) یکی از بلوک‌های بنیادین در طراحی سیستم‌های دیجیتال، به ویژه در بستر FPGA، است. این مدار وظیفه شناسایی تغییرات لحظه‌ای در وضعیت یک سیگنال دیجیتال را بر عهده دارد و به طراحان اجازه می‌دهد تا رویدادهای خاصی را در زمان دقیق وقوعشان رصد و بر اساس آن‌ها واکنش نشان دهند. در واقع، یک مدار تشخیص لبه، پالس‌های بسیار کوتاهی را تولید می‌کند که نشان‌دهنده یک تغییر مشخص در ورودی سیگنال است. این قابلیت در بسیاری از کاربردها، از جمله شمارش رویدادها، فعال‌سازی ماشین‌های حالت (FSM)، و همگام‌سازی عملیات‌ها، ضروری است. طراحی بهینه این مدار در FPGA مستلزم درک صحیح از مفاهیم زمان‌بندی و پدیده‌های مرتبط مانند متالابیلیتی است.

مفاهیم پایه: لبه‌های سیگنال دیجیتال

سیگنال‌های دیجیتال بین دو سطح منطقی “۰” (پایین) و “۱” (بالا) تغییر می‌کنند. این تغییرات می‌توانند به یکی از اشکال زیر باشند:

لبه صعودی (Rising Edge)

هنگامی که یک سیگنال دیجیتال از سطح منطقی “۰” به سطح منطقی “۱” تغییر می‌کند، به آن “لبه صعودی” گفته می‌شود. این لحظه نشان‌دهنده شروع یک رویداد یا فعال شدن یک سیگنال است. بسیاری از مدارهای منطقی در FPGAها برای فعال شدن در لبه صعودی کلاک طراحی شده‌اند.

لبه نزولی (Falling Edge)

در مقابل، “لبه نزولی” زمانی رخ می‌دهد که سیگنال از سطح منطقی “۱” به سطح منطقی “۰” تغییر وضعیت دهد. این لبه می‌تواند نشان‌دهنده پایان یک رویداد یا غیرفعال شدن یک سیگنال باشد.

تشخیص هر دو لبه (Both Edge)

در برخی از کاربردها، نیاز است که به هر دو نوع تغییر، یعنی هم صعودی و هم نزولی، واکنش نشان داده شود. مدارهای تشخیص هر دو لبه برای شناسایی هر گونه تغییر وضعیت سیگنال، بدون توجه به جهت آن، به کار می‌روند. این نوع تشخیص به ویژه در سیستم‌هایی که به سرعت پاسخگویی به هر جابجایی سیگنال نیاز دارند، حائز اهمیت است.

مکانیزم پیاده‌سازی مدار تشخیص لبه در FPGA

اساس پیاده‌سازی یک مدار تشخیص لبه در FPGA بر مبنای مقایسه وضعیت فعلی سیگنال ورودی با وضعیت آن در یک سیکل کلاک قبلی است. این کار به سادگی با استفاده از یک فلیپ‌فلاپ نوع D (D-Type Flip-Flop) قابل انجام است:

  1. ایجاد تأخیر: سیگنال ورودی مورد نظر به ورودی D یک فلیپ‌فلاپ D متصل می‌شود. با هر پالس کلاک، مقدار سیگنال ورودی به خروجی Q فلیپ‌فلاپ منتقل می‌شود. این یعنی خروجی Q همیشه یک سیکل کلاک از ورودی D عقب‌تر است.

  2. مقایسه منطقی:

  • برای لبه صعودی: اگر در سیکل کلاک فعلی، سیگنال ورودی “۱” باشد و خروجی فلیپ‌فلاپ (که سیگنال ورودی سیکل قبل را نشان می‌دهد) “۰” باشد، یک لبه صعودی رخ داده است. این منطق را می‌توان با Input_Signal AND (NOT Delayed_Input_Signal) پیاده‌سازی کرد.
  • برای لبه نزولی: اگر در سیکل کلاک فعلی، سیگنال ورودی “۰” باشد و خروجی فلیپ‌فلاپ “۱” باشد، یک لبه نزولی رخ داده است. این منطق را می‌توان با (NOT Input_Signal) AND Delayed_Input_Signal پیاده‌سازی کرد.
  • برای هر دو لبه: اگر سیگنال ورودی فعلی با خروجی فلیپ‌فلاپ متفاوت باشد، به این معنی است که یک تغییر (صعودی یا نزولی) رخ داده است. این منطق با یک دروازه XOR بین سیگنال ورودی و خروجی فلیپ‌فلاپ به دست می‌آید: Input_Signal XOR Delayed_Input_Signal.

خروجی این منطق، یک پالس بسیار کوتاه (به اندازه طول یک سیکل کلاک) خواهد بود که دقیقاً در لحظه شناسایی لبه تولید می‌شود. این پالس می‌تواند برای فعال‌سازی سایر ماژول‌ها یا رویدادها در طراحی شما استفاده شود.

ملاحظات حیاتی در طراحی: همگام‌سازی و دیباونسینگ

هنگام کار با سیگنال‌هایی که از خارج FPGA وارد می‌شوند و کلاک متفاوتی با کلاک داخلی سیستم دارند (یا اصلاً کلاک ندارند)، رعایت نکات زیر برای اطمینان از عملکرد صحیح و پایدار مدار تشخیص لبه حیاتی است:

  • همگام‌سازی (Synchronizer): اگر سیگنالی ناهمگام (Asynchronous Signal) مستقیماً به فلیپ‌فلاپ‌های داخلی FPGA متصل شود، ممکن است باعث پدیده متالابیلیتی (Metastability) شود. متالابیلیتی وضعیتی است که در آن خروجی فلیپ‌فلاپ برای مدت زمانی نامشخص در حالت میانی (نه “۰” و نه “۱” پایدار) قرار می‌گیرد که می‌تواند منجر به انتشار مقادیر نامشخص و خطاهای سیستمی شود. برای جلوگیری از این پدیده، هر سیگنال ناهمگام ورودی باید قبل از استفاده در منطق همزمان داخلی، از طریق یک همگام‌ساز (معمولاً متشکل از دو یا چند فلیپ‌فلاپ D پشت سر هم) به دامنه کلاک داخلی FPGA آورده شود.

  • دیباونسینگ (Debouncing): برای سیگنال‌هایی که از منابع مکانیکی (مانند دکمه‌ها یا سوئیچ‌ها) می‌آیند، پدیده “bounce” یا ارتعاش مکانیکی وجود دارد. این ارتعاشات می‌توانند باعث شوند که یک فشار دکمه واحد، به صورت چندین لبه صعودی و نزولی کاذب تشخیص داده شود. اگرچه دیباونسینگ مستقیماً بخشی از مدار تشخیص لبه نیست، اما در سیستم‌هایی که با ورودی‌های مکانیکی سروکار دارند، اعمال یک مکانیزم دیباونس (سخت‌افزاری یا نرم‌افزاری) به سیگنال ورودی قبل از رسیدن به مدار تشخیص لبه ضروری است تا از شمارش اشتباه لبه‌ها جلوگیری شود.

در نهایت، طراحی موفق مدار تشخیص لبه در FPGA نیازمند توجه به جزئیات زمان‌بندی، اصول همگام‌سازی، و پیاده‌سازی دقیق منطق در زبان‌های توصیف سخت‌افزار مانند وریلاگ (Verilog) است.

کلیدواژه ها : طراحی-در-FPGA-مدار-تشخیص-لبه-Edge Detector-FPGA-اف‌پی‌جی‌ای-Rising Edge-لبه صعودی-Falling Edge-لبه نزولی-Both Edge-هر دو لبه-D-FF-فلیپ‌فلاپ-D-Synchronizer-همگام‌سازی-Metastability-متالابیلیتی-Asynchronous Signal-سیگنال ناهمگام-Debouncing-دیباونسینگ-Verilog-وریلاگ-Clock-کلاک-Reset-ریست-XOR-ایکس اور-Pulsed Output-پالس خروجی-Digital Design-طراحی دیجیتال-Sequential Logic-منطق ترتیبی-Timing-زمان‌بندی-Synchronization-اصول همگام‌سازی-Hardware Description Language-زبان توصیف سخت‌افزار-