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

  • تشخیص فشردن کلید: تبدیل فشردن یک کلید فیزیکی به یک پالس تک سیکلی برای تریگر کردن رویدادها.
  • همگام‌سازی رویدادها: تولید پالس‌های همگام با کلاک برای شروع یا پایان عملیات‌های خاص.
  • مراکز کنترل: تشخیص تغییرات در سیگنال‌های کنترلی برای مدیریت عملیات ماشین‌های حالت.

۱. اصول عملکرد مدار تشخیص لبه

اساس کار یک مدار تشخیص لبه، مقایسه وضعیت فعلی یک سیگنال با وضعیت قبلی آن (که با تأخیر یک سیکل کلاک به دست می‌آید) است. برای این منظور، نیاز به یک یا چند فلیپ‌فلاپ (Flip-Flop) داریم تا سیگنال ورودی را به اندازه یک سیکل کلاک تأخیر دهیم.

انواع تشخیص لبه:

  1. تشخیص لبه صعودی (Rising Edge Detector): یک پالس لحظه‌ای در زمان تغییر سیگنال از 0 به 1 تولید می‌کند.
  2. تشخیص لبه نزولی (Falling Edge Detector): یک پالس لحظه‌ای در زمان تغییر سیگنال از 1 به 0 تولید می‌کند.
  3. تشخیص هر دو لبه (Both Edge Detector): یک پالس لحظه‌ای در زمان تغییر سیگنال از 0 به 1 و همچنین از 1 به 0 تولید می‌کند.

۲. پیاده‌سازی تشخیص لبه صعودی (Rising Edge Detector)

این رایج‌ترین نوع تشخیص لبه است. منطق اصلی این است:

“اگر سیگنال فعلی 1 باشد و سیگنال قبلی 0 باشد، یک لبه صعودی رخ داده است.”

۳. پیاده‌سازی تشخیص لبه نزولی (Falling Edge Detector)

منطق اصلی این است:

“اگر سیگنال فعلی 0 باشد و سیگنال قبلی 1 باشد، یک لبه نزولی رخ داده است.”

۴. پیاده‌سازی تشخیص هر دو لبه (Both Edge Detector)

برای تشخیص هر دو لبه صعودی و نزولی، کافی است خروجی‌های دو مدار بالا را با یک گیت OR ترکیب کنیم.

۵. ملاحظات طراحی و نکات مهم در FPGA

  • همگام‌سازی (Synchronization): اگر signal_in ورودی از یک کلاک دامین متفاوت یا یک سیگنال ناهمگام (مانند ورودی یک کلید فیزیکی) باشد، بسیار مهم است که آن را قبل از استفاده در مدار تشخیص لبه، همگام‌سازی کنیم. این کار معمولاً با یک زنجیره دو یا سه تایی از فلیپ‌فلاپ‌ها (Synchronizer) انجام می‌شود تا از پدیده Metastability جلوگیری شود.
  • Debouncing (برای ورودی‌های مکانیکی): اگر سیگنال ورودی (مانند یک کلید) فیزیکی باشد، به دلیل ارتعاشات مکانیکی، ممکن است نویز (bounce) تولید کند. مدار تشخیص لبه این نویزها را به عنوان لبه‌های متعدد تشخیص می‌دهد. برای حل این مشکل، قبل از مدار تشخیص لبه، باید از یک مدار Debouncer استفاده شود.
  • ریست (Reset): وجود یک سیگنال ریست برای مقداردهی اولیه فلیپ‌فلاپ‌های داخلی ضروری است تا از وضعیت‌های نامشخص در ابتدای کار جلوگیری شود.

کلیدواژه ها : Edge Detector-Rising Edge-Falling Edge-Both Edge-FPGA-D-FF-Synchronizer-Metastability-Debouncing-Verilog-Clock-Reset-XOR-Asynchronous Signal-Pulsed Output