بانسینگ چیست؟

در بسیاری از پروژه ها لازم است از کلید، پوش باتن یا دیپ سوئیچ استفاده کنیم. در حالت ایده‌آل انتظار می‌رود با وصل و قطع این عناصر، عملیات 1 و 0 منطقی بلافاصله و بدون اختلال انجام شود. اما در واقعیت این اتفاق بروز نمیدهد. در واقع هنگام وصل یا قطع عناصر مذکور دو قطعه فلزی به یکدیگر متصل یا از هم جدا می‌شوند. از دید کاربر این اتفاق بصورت آنی و ثابت اتفاق می‌افتد. در حالت وصل کلید هنگام برخورد دو قطعه فلزی به یکدیگر، به دیلیل ضربه ممکن است چندین مرتبه قطعات از هم جدا و مجدد وصل شوند. این اتفاق تنها در عرض چند میکروثانیه اتفاق می‌افتد. به عبارتی کلید بین حالت قطع و وصل بودن در حال رفت و برگشت (بانسینگ) است. در نهایت با پایان یافتن این نوسان، کلید بطور کامل وصل می‌شود. جالب است بدانید در حالت قطع کلید نیز این اتفاق با شدت کمتری رخ می‌دهد.

انواع کلیدهای الکترونیکی

شکل 1- انواع کلیدهای الکترونیکی

امروزه معمولا سخت‌افزارها با سرعت بسیار بیشتری از این مقدار زمانی (چند میکروثانیه) کار می‌کنند. بنابراین سخت‌افزار ممکن است تصور کند کاربر چندین مرحله متوالی کلید را قطع و وصل کرده است. به یاد داشته باشید که هر کلید مشخصات مختص به خود را داراست و تعداد دفعات قطع و وصل در بانسینگ و مدت زمان آن متفاوت خواهد بود. حتی اگر دو کلید مشابه را باهم مقایسه کنید احتمال اینکه بانسینگ آن‌ها باهم متفاوت باشد بسیار زیاد است.

bouncing

شکل 2- نمایش اتفاق بانسینگ هنگام وصل یک کلید

دیبانسینگ

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

دیبانسینگ سخت‌افزاری

در اینجا قصد نداریم بطور تخصصی به روش‌های سخت‌افزاری حذف بانسینگ اشاره داشته باشیم. برای آشنایی اولیه می‌توانید در شکل 3 روش دیبانسینگ با لچ SR را مشاهده کنید. دو گیت ساده NAND و دو مقاومت پول آپ می‌توانند عملیات دیبانسینگ برای یک کلید را انجام دهند. در این پیکره‌بندی تا زمانی که کلید مشابه شکل در حالت بالا قرار دارد خروجی نیز 1 و اگر کلید به حالت پایین برود، خروجی 0 خواهد بود. لچ SR به اینگونه عمل می‌کند که اگر کلید به هیچ کدام از دو کانکتور بالا یا پایین متصل نباشد، خروجی آن بدون تغییر خواهد بود. بنابراین قطع و وصل سریع قطعات فلزی در بخش بالایی یا پایین کلید تغییری در خروجی ایجاد نخواهد کرد.

دیبانسینگ با استفاده از لچ SR

شکل 3- دیبانسینگ با استفاده از لچ SR

شکل 4 نیز نمونه دیگری از دیبانسر سخت افزاری را نشان می‌دهد که از تکنیک شارژ و دشارژ خازن استفاده می‌کند. به یاد داریم که شارژ خازن لحظه‌ای اتفاق نمی‌افتد و بصورت نمایی به آرامی (با توجه به مقدار مقاومت سری شده) زیاد می‌شود. استفاده از این تکنیک نسبت به روش قبلی این مزیت را دارد که از کلید تک حالته (بجای کلید دوحالته) که قیمت کمتری دارد استفاده می‌شود.

دیبانسینگ با استفاده از مدار RC

شکل 4- دیبانسینگ با مدار RC

دیبانسینگ نرم‌افزاری (کدهای وریلاگ)

استفاده از سخت‌افزارهای اضافی زمانی مناسب است که شما فضا کافی برای نصب آن‌ها روی برد داشته باشید. اما در مدارات مجتمع کوچک یا بردهای مدارچاپی که دارای تعداد بسیار زیادی کلید و پوش باتن هستند، این روش‌ها جوابگو نخواهند بود. در این حالت مهندسان به دنبال روش‌های نرم افزاری هستند. یک روش ساده این است که شما برنامه ای طراحی کنید که از زمانی که این باتن فشرده شد و مقادیر سیگنال را تغییر داد ، 10 تا 20 میلی ثانیه (بر حسب انتخاب) بگذرد و زمانی که به حالت پایدار یک یا صفر رسید سیستم آنرا دریافت کند.

بر فرض مثال در wave_form زیر یک پوش باتن داریم که Normally close است و در هر بار فشرده شدن صفر میشود ، دیده میشود زمانی که از یک به صفر تبدیل میشود (فشرده شدن) چندین بار تغییر حالت میدهد تا ثابت شود و از زمانی که ثابت میشود با گذشت چند کلاک set_rst_flag تغییر حالت میدهد و برنامه ست میشود .

کد وریلاگ برای دیبانسینگ

کپی کردن کدها

کد شبیه سازی دیبانسر ( Test Bench )

کپی کردن کدها

مشخص کردن پین های FPGA

کپی کردن کدها

بررسی نتیجه نهایی گرفته شده

دریافت فایل های پروژه

با تشکر از آقای محمد حسین اصفهانی

منبع: Octacore.ir