فلیپ‌فلاپ

بندانگشتی|''R1, R2'' = 10 k&Omega; ''R3, R4'' = 1 kΩ
مدار یک فلیپ‌فلاپ که از دو گیت NOR ساخته شده‌است|انگشتی|چپ

در الکترونیک دیجیتال **فلیپ‌فلاپ**  یا **لچ**  نوعی مدار است که داری دو حالت پایدار است و می‌تواند ۱ بیت (که شامل حالت فلیپ‌فلاپ است) را در خود ذخیره کند. یک فلیپ‌فلاپ یک «مدار نوسان ساز بای-استیبل» است. مدار می‌تواند به شکلی ساخته شده باشد، که به وسیله سیگنال‌های گرفته شده از یک یا چند ورودی، یک یا چند خروجی را تولید کند. یک فلیپ‌فلاپ یکی از حافظه‌های ابتدایی در مدارهای ترتیبی می‌باشد. فلیپ‌فلاپ‌ها از بلاک‌های اصلی مدارهای دیجیتال هستند و استفاده‌های فراوانی در رایانه و طراحی مدارهای مخابراتی دارند.

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

فلیپ‌فلاپ می‌تواند به شکل ساده (شفاف یا غیر شفاف) یا همراه با سیگنال ساعت (هم‌گاه سازی شده یا لبه سیگنال) باشد. اگر چه کلمه فلیپ‌فلاپ به شکل کلی به هر دو نوع ساده و همراه با سیگنال ساعت اشاره دارد، اما امروزه، فلیپ‌فلاپ را برای مدارهای دارای سیگنال ساعت استفاده می‌کنند و برای شکل ساده آن از کلمه لچ استفاده می‌کنند.

در اصطلاح علمی، لچ حساس به سطح است، و فلیپ‌فلاپ حساس به لبه. به همین دلیل زمانی که لچ فعال می‌شود، وضعیت آن روشن است در حالی که یک فلیپ‌فلاپ تنها با تغییر حالت ساعت، حالتش تغییر می‌کند.

## تاریخچه
نخستین فیلیپ فلاپها در سال ۱۹۱۸ میلادی توسط ویلیام اکلز و فرانک ویلفرد جوردن اختراع گردید. در ابتدا نام آن مدار تریگر اکلز-جوردن بود و شامل دو عنصر فعال (لامپ خلأ) بود. طراحی آن در سال ۱۹۴۳ در کامپیوترهای کدشکن کلوسوس استفاده شد و این مدارها و گونه‌های ترانزیستوری شده آن‌ها در کامپیوترها حتی پس از معرفی مدار مجتمع متداول بودند. با اینکه الان  فلیپ فلاپ‌های ساخته شده از دروازه منطقی متداول هستند، فلیپ فلاپ‌های اولیه به مدارهای تریگر یا مدار نوسان‌ساز معروف بودند.

بنا به پ.ل.لیندلی، مهندسی در آزمایشگاه پیش‌رانش جت موسوم به جی‌پی‌ال، انواع مخلتف فلیپ فلاپ ابتدا در سال ۱۹۵۴ در درس طراحی کامپیوتر دانشگاه کالیفرنیا، لس آنجلس تدریس شده توسط مانتگامری فستر مطرح شدند و سپس در کتاب او، طراحی منطقی کامپیوترهای دیجیتال، ظاهر شدند. در آن زمان لیندلی در شرکت هواپیماسازی هیوز زیر نظر الدرید نلسون کار می‌کرد. نلسون اصطلاح جی-کی برای فلیپ فلاپی که وقتی هر دو ورودی آن برابر 1 منطقی هستند، تغییر حالت می‌دهد، ابداع کرده بود و بقیه اسم‌ها توسط فیستر ابداع شده بودند. لیندلی توضیح داده است که داستان فلیپ فلاپ جی-کی را از نلسون که خود مسئول ابداع این اصطلاح است، هنگامی که در هواپیماسازی هیوز کار می‌کرده، شنیده است. فلیپ فلاپ‌هایی که در هیوز استفاده می‌شدند، همه از نوعی بودند که بعدا به فلیپ فلاپ‌های جی-کی معروف شدند.

## پیاده سازی
[جایگزین=|بندانگشتی|یک مدار لچ شفاف مبتنی بر [ترانزیستور پیوندی دوقطبی|ترانزیستور های پیوندی دو قطبی]]
لچ های شفاف یا آسنکرون(غیر همزمان) را میتوان با یک جفت اینورتر متقاطع ساخت. لامپ های خلاء، ترانزیستور های پیوندی دو قطبی، ترانزیستور های اثر میدانی، اینورتر ها و گیت های معکوس کننده همگی در مدار های عملی مورد استفاده قرار گرفته اند.

فلیپ فلاپ های کلاک دار به طور ویژه برای سیستم های سنکرون(همزمان) طراحی شده اند؛ این دستگاه ها ورودی را تا آمدن پالس ساعت نادیده میگیرند. پالس ساعت باعث میشود که فلیپ فلاپ خروجی خود را براساس مقادیر سیگنال های ورودی تغییر داده یا حفظ کند. برخی فلیپ فلاپ ها خروجی را در لبه بالا رونده کلاک یا لبه مثبت پالس ساعت و برخی در لبه پایین رونده کلاک یا لبه منفی پالس ساعت تغییر حالت میدهند.

## انواع فیلیپ فلاپ‌ها
فیلیپ فلاپها انواع مختلفی دارند که عبارتند از:
* فلیپ فلاپ SR
* فلیپ فلاپ JK
* فلیپ فلاپ T
* فلیپ فلاپ D

### فلیپ فلاپ SR
بندانگشتی|چپ|سمبل لچ SR
فلیپ فلاپ SR مداری با دو گیت NAND یا NOR است که به‌طور متقاطع به هم وصل گردیده‌اند. این مدار دو ورودی Set و Reset دارد. لچ دارای دو حالت مفید است. وقتی خروجی Q=۱ و Q'=۰ لچ در حالت نشانده (منطق ۱) است و اگر Q=۰ و Q'=۱ باشد، در حالت بازنشانی است. خروجی‌های Q و 'Q متمم هستند؛ با این وجود وقتی هر دوی آن‌ها یک شوند، حالت تعریف نشده داریم.
:Q_{next} = S + \overline{R}Q

*X* در جدول نشان دهنده حالت بی‌اهمیت است.

### فلیپ فلاپ JK
بندانگشتی|چپ|سمبل فیلیپ فلاپ JK با کلاک
فلیپ فلاپ JK نسخه تقویت شده فلیپ فلاپ SR میباشد، به طوری که ترکیب J = K = 1 به صورت دستور تغییر وضعیت فلیپ فلاپ عمل میکند یعنی مقدار فعلی خود را مکمل میکند برخلاف SR  که S = R = 1  در آن تعریف نشده بود. همچنین مشابه SR ترکیب J = 1, K = 0 باعث ست شدن فلیپ فلاپ میشود و J = 0, K = 1  باعث ریست شدن(بازنشانی) فلیپ فلاپ میشود در حالی که J = K = 0 حالت قبلی فلیپ فلاپ را حفظ میکند. برای ساخت فلیپ فلاپ D با استفاده از JK میتوان مکمل J را به ورودی K متصل کرد. همچنین برای ساخت فلیپ فلاپ T میتوان J را به ورودی K متصل کرد. فلیپ فلاپ JK  به عنوان فلیپ فلاپ همه کاره شناخته میشود چون با استفاده از آن میتوان سه نوع فلیپ فلاپ SR, D , T  را ساخت.

بندانگشتی|دیاگرام زمانی فلیپ فلاپ JK
معادله مشخصه فلیپ فلاپ JK  به صورت زیر است:

Q_{next} = J\overline Q + \overline KQ

و جدول درستی متناظر با آن:

### فلیپ فلاپ T
بندانگشتی|چپ|سمبل فیلیپ فلاپ T
فلیپ فلاپ T فلیپ‌فلاپی است که از آن برای تاگل (Toggle) کردن استفاده می‌شود. (اگر T=۰ باشد با آمدن کلاک، خروجی همان وضعیت قبلی خواهد بود یعنی اگر صفر باشد خروجی صفر و اگر یک باشد خروجی یک خواهد بود؛ و اگر T=۱ باشد با آمدن کلاک، خروجی معکوس وضعیت قبلی خواهد بود)
:Q_{next} = T \oplus Q = T\overline{Q} + \overline{T}Q

این فلیپ فلاپ به عنوان ذخیره‌کننده یک بیت دیتا بسیار پرکاربرد است و از نظر تأخیر نیز شبیه به یک عنصر تأخیر دهنده ساعت عمل می‌کند به این ترتیب که هر ورودی به آن می‌دهیم در یک فاصله زمانی مشخصی که به اندازه یک کلاک پالس (پالس ساعت) است همان ورودی را در خروجی دریافت می‌کنیم.
از این رو این فلیپ فلاپ را فلیپ فلاپ تأخیر (Delay) می‌نامند. این فلیپ فلاپ یک ورودی به نام D دارد.
فلیپ فلاپ T همانند فلیپ فلاپ JK است که دو ورودی آن از یک متغیر مقدار می‌گیرد یعنی یا هر دو J و K مقدار صفر یا هر دو مقدار یک دارند. به این ترتیب در مواقعی یک است، ایجاد جهش می‌کند.

### فلیپ فلاپ D
بندانگشتی|چپ|سمبل DFF
یکی از حالت‌های حذف حالت نامطلوب در فلیپ‌فلاپ SR این است که مطمئن شویم هیچگاه آن دو با هم یک نخواهند شد؛ چرا که در فلیپ‌فلاپ‌ها، ورودی از خروجی قبلی نیز متأثر می‌شود و وقتی ورودی‌ها هر دو یک باشند، پیش‌بینی خروجی جدید ممکن نیست. این کار با لچ D میسر است؛ زیرا یک ورودی می‌پذیرد و در ساختار داخلی آن از خود ورودی و عکس (NOT) آن استفاده می‌شود.

X حالت بی اهمیت را نشان میدهد به این معنی که سیگنال ورودی تاثیری در خروجی ندارد.

## ملاحظات زمانی

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

**زمان راه اندازی (Setup time)** حداقل مدت زمانی است که ورودی داده باید قبل از کلاک ساعت ثابت بماند، به طوری که داده ها به طور قابل اعتمادی توسط کلاک نمونه برداری شود.

**زمان نگه داری (Hold time)** حداقل مدت زمانی است که ورودی داده باید بعد از کلاک ساعت ثابت بماند، به طوری که داده به طور قابل اعتمادی توسط کلاک نمونه برداری شود.

**پنجره نمونه برداری (Aperture)** مجموع زمان راه اندازی و نگه داری است. ورودی داده باید در طول این دوره زمانی ثابت بماند.

**زمان بازیابی (Recovery time)** حداقل مدت زمانی است که ورودی تنظیم (SET) یا تنظیم مجدد (RESET) آسنکرون (ناهمزمان) باید قبل از کلاک ساعت غیرفعال باشند، به طوری که داده ها به طور قابل اعتمادی توسط کلاک نمونه برداری شود. بنابراین، زمان بازیابی برای ورودی ست یا ریست آسنکرون مشابه زمان راه اندازی برای ورودی داده است.

**زمان حذف (Removal time)** حداقل مدت زمانی است که که ورودی تنظیم (SET) یا تنظیم مجدد (RESET) آسنکرون (ناهمزمان) باید پس از کلاک ساعت غیرفعال باشند، به طوری که داده ها به طور قابل اعتمادی توسط کلاک نمونه برداری شود. بنابراین، زمان بازیابی برای ورودی ست یا ریست آسنکرون مشابه زمان نگه داری برای ورودی داده است.

## کاربرد
از فلیپ‌فلاپ‌ها می‌توان در شمارنده‌ها، ذخیره‌سازی اطلاعات و … استفاده نمود.

## جستارهای وابسته
* رجیستر
* شیفت رجیستر

## منابع

* Digital_logic_circuit_analysis_and_design Nelson
* Fundamental of digital ligic with verilog design by Brown
* Digital_logic_circuit_analysis_and_design by Mano

رده:الکترونیک دیجیتال
رده:حافظه رایانه
رده:دروازه‌های منطقی
رده:سامانه‌های دیجیتال
رده:معرفی‌شده‌های مرتبط با رایانه در ۱۹۱۸ (میلادی)
رده:مهندسی الکترونیک