ラッチとフリップフロップの違いは?


51

ラッチとフリップフロップの違いは何ですか?

私が考えているのは、ラッチはビットを格納するために使用され、またデータを格納するためにも使用されるレジスタと同等であるため、フリップフロップと同等です。しかし、インターネットでいくつかの記事を読んだ後、エッジトリガー機能とレベルセンシティブ機能に基づいてラッチとフリップフロップの違いを見つけましたか?

どういう意味ですか?フリップフロップはラッチと同じですか?

回答:


23

基本的な違いは、ゲーティングまたはクロッキングのメカニズムです。たとえば、SRラッチとSRフリップフロップについて話しましょう。

SRラッチは次のようになります

NANDゲートを使用したSRラッチ

この回路では、Sをアクティブに設定すると、出力Qが高くなり、Q 'が低くなります。これは他のことに関係ありません。(これはアクティブLow回路であるため、ここでアクティブはLowを意味しますが、アクティブHigh回路ではアクティブはHighを意味します)

SRフリップフロップ(ゲート付きまたはクロック式SRラッチとも呼ばれる)は次のようになります。

ここに画像の説明を入力してください

この回路では、アクティブなクロック信号を与えた場合にのみ、出力が変更されます(つまり、保存されたデータが変更されます)。それ以外の場合、SまたはRがアクティブであっても、データは変更されません。このメカニズムは、データが不必要に変更されないように、回路とレジスタを同期するために使用されます。


ラッチはレベルでトリガーされ、フリップフロップはエッジでトリガーされていると結論付けることができますか?
trapaank

5
ラッチはまったくトリガーされません。入力するとすぐに、出力がラッチになります。入力を出力に変換するためにクロックトリガーを与える必要があるため、フリップフロップがトリガーされます。
Rick_2047

1
これはSRフリップフロップではありません。それはゲーテッドSRラッチです。この回路のセットアップ時間とホールド時間は、「トランスペアレントを有効にする」ピンを備えた他のラッチと同様に機能します。フリップフロップはマスター/スレーブ構成です。このラッチでサイクルからサイクルに移行することを考えてください。できません。逆位相のクロックを持つ2つのラッチが必要です(したがって、フリップフロップ)
jbord39

19

フリップフロップは、逆極性のクロックを持つ2つのバックツーバックラッチで構成され、マスタースレーブトポロジを形成します。

ラッチのタイプはこの制約とは無関係です(JK、SR、D、T)が、透過性はピン(クロック、イネーブル、または任意のピン)で制御することが重要です。

SRラッチは、最も基本的な設計が常に透過的であるため、全員にループを投げかけます。したがって、クロックイネーブルが追加されると、人々はそれをフリップフロップと呼び始めます。そうではありません。ゲーテッドラッチです。ただし、2つのゲートSRラッチからSRフリップフロップを構築できます。

真のSRフリップフロップ

または2つのJKラッチ:

本当のjk ff

または2つのDラッチ: ここに画像の説明を入力してください

クロックピンをラッチ(SRまたはJK)に追加しても、フリップフロップにはなりません。ゲーテッドラッチになります。クロックをゲーテッドラッチにパルスしても、フリップフロップにはなりません。パルスラッチにします(パルスラッチの説明)。

フリップフロップはエッジでトリガーされ、セットアップ時間とホールド時間は両方ともこのアクティブエッジに関連しています。マスタースレーブトポロジは、アクティブクロックでハードエッジを作成するロックアンドダムシステムのように動作するため、従来のフリップフロップではサイクル境界を介した借用は許可されません。

一方、ラッチは、ラッチの透明度に合わせて設定し、ラッチが閉じるまで保持します。また、透明性フェーズ全体を通して時間を借りることができます。これは、一方の半サイクルパスが遅く、もう一方の半サイクルパスが速い場合を意味します。ラッチベースの設計では、低速パスは高速パスサイクルに時間を費やすことができます。

パスからピコ秒​​ごとに絞り出す必要がある場合の非常に一般的な設計のトリックは、フリップフロップを(2つの別々のラッチに)広げて、その間にロジックを実行することです。

基本的に、セットアップ時間とホールド時間はラッチとフリップフロップで完全に異なります。サイクルの境界がどのように処理されるかという点で。ラッチベースの設計を行う場合、区別は重要です。多くの人が(このサイトでも)2つを混同します。しかし、それらを介して計時を開始すると、違いは非常に明確になります。

参照:

ラッチとフリップフロップを説明する適切なテキスト

フリップフロップとは何ですか?

編集:

TゲートベースのDフリップフロップを示すだけです(逆位相クロックを持つ2つの連続したTゲートベースのDラッチから構築されていることに注意してください)。

Tゲートベースのd ff


こんにちは、JBは古いリバイバルバッジを求めていますか?私の本では、「ラッチ」は非同期メモリレジスタであり、「フリップフロップ」は同期メモリレジスタであり、一部はセット/リセットと呼ばれる非同期機能を備えています。事実上、すべての同期操作はエッジに敏感です。
トニースチュワートサニースキーガイEE75

@ TonyStewart.EEsince'75:へー、他の誰かが私の前で答えた。はい、私はその定義に精通していますが、少し手間がかかります。フリップフロップは、逆位相のクロックを持つ2つのラッチで構成されていることを理解する方がはるかに明確だと思います。これにより、内部で何が起こっているかを正確に把握し、セットアップ時間とホールド時間をより深く理解できます。これは、スタンダードセルの特性評価やカスタムデータパス設計を行う際の重要な違いです。また、あいまいさの余地も残されています。たとえば、時間を借りるフリップフロップは、アクティブなclkエッジの周りに非同期の文字を持っています。
jbord39

異なるクロックフェーズで動作するラッチのペアでフロップを置き換えると、それらのフェーズの間にデッドタイムが含まれる可能性があります。一部のチップがクロック入力が(1/3)VDD未満の場合にのみフロントエンドラッチをアクティブにし、クロック入力が(2/3)VDDを超える場合にのみバックエンドラッチをアクティブにすると、同じクロックを共有するチップはすべてのチップが(2/3)VDDを超える前にクロックが(1/3)VDDを超えるのを確認した場合、クロックスイッチがまったく同じ瞬間に表示されない場合でも、確実に通信できます。そのようなデザインは
...-supercat

...ほぼすべての点でシュミットトリガーよりも機能的に優れています。フロントエンドとバックエンドのタイミングを分割するよりも、レジスタがシュミットトリガーを使用する方が一般的であるのはなぜでしょうか。
-supercat

1
+1。これが最良の答えです、IMO。他の方法は、何らかの方法で、エッジトリガー(FF)とゲーティング(ゲーテッドラッチ)の違いを混乱させます。実装側、特に初心者にとっては少し重いです。ちょっとした注意:エッジトリガーを実装するための唯一の手法は、マスタースレーブ構成で2つのラッチを結合することであると思われるようです。私は専門家ではありませんが、(IIRC)エッジトリガーを実装する他のトリックがあると思います。
ロレンツォドナティはモニカをサポートします

6

ラッチは、オープン状態で直接入力データを渡し、ラッチ状態で出力をフリーズします。ラッチは制御信号のレベルに応答します

フリップフロップにはさまざまな種類がありますが、基本的にこれらは制御信号のエッジで状態を変更し、場合によってはデータ入力を変更します。古典的なDフリップフリップは、クロックの特定のエッジの入力のみを確認し、残りの時間すべての出力をフリーズすることを除いて、ほとんどラッチに似ています。


ラッチとフリップフロップの間に違いはありますか?
trapaank

@ ankur.trapasiya:はい。
オリンラスロップ

うーん...ややクリア.. !! 私が理解したことは、フリップフロップはクロックを必要とし、ラッチはそれを必要としないということです。
trapaank

1
@ ankur.trapasiya:はい、ラッチにはクロック入力はありませんが、対応する入力があります。ほとんどの場合、ENABLEと呼ばれます。D-Flip-Flopのクロック入力はエッジセンシティブで、ラッチのイネーブル入力はレベルに依存します。つまり、イネーブルがアクティブで入力が変化すると出力が変化します。
カード14年

1
@Jbord:これは複雑すぎます。ラッチはレベルゲートされ、フリップフロップはエッジクロックされます。それがほとんどすべてです。
オリンラスロップ

6

ラッチは、双安定マルチバイブレーター、つまり、正確に2つの安定状態を持つデバイスの例です。
これらの状態は、高出力と低出力です。
ラッチにはフィードバックパスがあるため、デバイスは情報を保持できます。
したがって、ラッチはメモリデバイスであり、デバイスに電源が供給されている限り、1ビットのデータを格納できます。
名前が示すように、ラッチは情報を「ラッチ」して所定の位置に保持するために使用されます。
ラッチはフリップフロップに非常に似ていますが、同期デバイスではなく、フリップフロップのようにクロックエッジで動作しません。

ここに画像の説明を入力してください

フリップフロップは、2つの状態と少しの情報を格納できるフィードバックパスを備えた双安定ミューティバイターであるという点で、ラッチに非常に似たデバイスです。
ラッチとフリップフロップの違いは、ラッチが非同期であり、入力が変化するとすぐに(または少なくともわずかな伝搬遅延後)出力が変化する可能性があることです。
一方、フリップフロップはエッジでトリガーされ、制御信号がハイからローまたはローからハイになったときにのみ状態を変更します。
この区別は比較的最近のものであり、正式ではありません。多くの当局はまだフリップフロップをラッチと呼んでいますが、その逆もわかりやすくするために役立ちます。

ここに画像の説明を入力してください


ラッチは(双安定またはその他の)マルチバイブレーターではありません。
カード14年

2

ラッチとフリップフロップの違いは、イネーブル信号が存在する限り、出力は常に入力の影響を受けます。有効にすると、入力が変更されるとすぐにコンテンツが変更されます。フリップフロップでは、イネーブル信号の立ち上がりエッジまたは立ち下がりエッジでのみコンテンツが変更されます。このイネーブル信号はクロック信号を制御します。クロックの立ち上がりエッジまたは立ち下がりエッジの後、入力が変化してもフリップフロップの内容は一定のままです。


2

違いは、主に使用目的にあります。フリップフロップは一般的なアイデアであり、さまざまなバリエーションがあります-トリガー方法、JK入力またはDなど。フリップは、カウンタ、シフトレジスタ、およびフリップフロップに関するテキストやオンライン記事で見られる他のすべての用途に使用できます。

ラッチは特定の用途の1つで、フリップフロップのセット(おそらく1つだけ)にブールレベルを与え、クロックを供給し、その後、出力でこれらの値を常に保持します。いわゆるバイナリ値のスナップショット。新しい入力が入力されるか、ラッチがクリアされる場合を除き、出力値の変更は発生しません。つまり、すべての出力がゼロに設定されます。

Dタイプのフリップフロップは明らかな選択ですが、設計または使用している特定の回路またはチップで重要であっても、使用するものやトリガーする方法は、ラッチが何であるかという考えにとって重要ではありません。


2

トランスペアレントラッチは、データ入力と制御入力を備えたデバイスです。制御入力には、「トラック」と「ホールド」と呼ばれる2つの状態があります。一部のデバイスは、制御入力の「ハイ」を「トラック」と見なし、ロー入力を「ホールド」と見なします。他の人は反対のことをします。制御入力が「トラック」状態にあるときはいつでも、出力の状態はデータ入力の状態をたどり続けようとします(データ入力が変化してから出力が変化を反映するまでに短い遅延があります)。データ入力への最後の変更が出力に到達する機会があった場合、制御入力が「追跡」状態から「保持」状態になる場合、出力は制御入力が行くまでその値を保持します「トラック」状態に戻ります。

トランスペアレントラッチはさまざまな方法で使用できますが、少なくとも2つの使用シナリオを理解することが重要です。あるシナリオでは、ラッチを使用して、有効なデータを保持する場合と無効なデータを保持する場合がある信号を、常に有効なデータを保持する信号に変換します。これは、データ入力が目的の出力データと一致しない場合にラッチを「ホールド」状態に維持することにより行われます。ラッチされたデータを変更するには、目的のデータを入力に入力し、ラッチを一時的に「トラック」状態に設定してから「ホールド」状態に戻します。ホールド」信号がアクティブです。この配置は、たとえば、8つの制御信号と8つのデータ信号を使用して64の出力を制御するために使用できます。各制御信号は8つのラッチを操作し、1つは8つのデータ信号のそれぞれに配線されています。エッジトリガーフリップフロップをラッチと同じくらい簡単に使用できますが、ラッチの回路はやや単純です。このシナリオでエッジトリガーのフリップフロップは、「ホールド」から「トラック」への移行時に理想的にトリガーされることに注意してください。

2番目の使用シナリオでは、ラッチが「トランスペアレント」に切り替わる時点で入力が意味をなさない場合がありますが、ラッチが「ホールド」に切り替わる前に意味があります。出力を使用するデバイスが、ラッチが「ホールド」に切り替わってからしばらく経過するまで状態を気にしない場合、その時点でのデータ入力の状態が出力に送られます。このシナリオでは、エッジトリガーフリップフロップを使用できますが、「トラック」から「ホールド」への移行時にトリガーする必要があります。ラッチへのデータ入力が「ホールド」から「トラック」への移行のかなり前に有効になると、出力も同様になります。対照的に、フリップフロップの出力は、クロックが変更されたときにのみ有効になります。


1

主な違いは、JK-FFとT-FFにレースアラウンド状態がないため、JKラッチとTラッチでレースアラウンド状態が発生するレベルトリガーであるラッチです。 FFで。


0

ラッチとフリップフロップの主な違いは、ラッチの場合、イネーブル信号がアサートされている限り、ラッチの出力は常に入力の影響を受けることです。つまり、有効にすると、入力が変更されるとすぐにコンテンツが変更されます。一方、フリップフロップでは、イネーブル信号の立ち上がりエッジまたは立ち下がりエッジでのみコンテンツが変更されます。このイネーブル信号は通常、制御クロック信号です。クロックの立ち上がりエッジまたは立ち下がりエッジの後、入力が変化してもフリップフロップの内容は一定のままです


5
これは、2年以上前に投稿されたPrasanthの回答でまだカバーされていないものを追加するようには見えません。
PeterJ

@PeterJ:文法を修正します(元の回答には未解決の先行詞がありました)。ただし、以前の回答を編集する必要がありました。
ベンフォークト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.