回答:
基本的な違いは、ゲーティングまたはクロッキングのメカニズムです。たとえば、SRラッチとSRフリップフロップについて話しましょう。
SRラッチは次のようになります
この回路では、Sをアクティブに設定すると、出力Qが高くなり、Q 'が低くなります。これは他のことに関係ありません。(これはアクティブLow回路であるため、ここでアクティブはLowを意味しますが、アクティブHigh回路ではアクティブはHighを意味します)
SRフリップフロップ(ゲート付きまたはクロック式SRラッチとも呼ばれる)は次のようになります。
この回路では、アクティブなクロック信号を与えた場合にのみ、出力が変更されます(つまり、保存されたデータが変更されます)。それ以外の場合、SまたはRがアクティブであっても、データは変更されません。このメカニズムは、データが不必要に変更されないように、回路とレジスタを同期するために使用されます。
フリップフロップは、逆極性のクロックを持つ2つのバックツーバックラッチで構成され、マスタースレーブトポロジを形成します。
ラッチのタイプはこの制約とは無関係です(JK、SR、D、T)が、透過性はピン(クロック、イネーブル、または任意のピン)で制御することが重要です。
SRラッチは、最も基本的な設計が常に透過的であるため、全員にループを投げかけます。したがって、クロックイネーブルが追加されると、人々はそれをフリップフロップと呼び始めます。そうではありません。ゲーテッドラッチです。ただし、2つのゲートSRラッチからSRフリップフロップを構築できます。
または2つのJKラッチ:
クロックピンをラッチ(SRまたはJK)に追加しても、フリップフロップにはなりません。ゲーテッドラッチになります。クロックをゲーテッドラッチにパルスしても、フリップフロップにはなりません。パルスラッチにします(パルスラッチの説明)。
フリップフロップはエッジでトリガーされ、セットアップ時間とホールド時間は両方ともこのアクティブエッジに関連しています。マスタースレーブトポロジは、アクティブクロックでハードエッジを作成するロックアンドダムシステムのように動作するため、従来のフリップフロップではサイクル境界を介した借用は許可されません。
一方、ラッチは、ラッチの透明度に合わせて設定し、ラッチが閉じるまで保持します。また、透明性フェーズ全体を通して時間を借りることができます。これは、一方の半サイクルパスが遅く、もう一方の半サイクルパスが速い場合を意味します。ラッチベースの設計では、低速パスは高速パスサイクルに時間を費やすことができます。
パスからピコ秒ごとに絞り出す必要がある場合の非常に一般的な設計のトリックは、フリップフロップを(2つの別々のラッチに)広げて、その間にロジックを実行することです。
基本的に、セットアップ時間とホールド時間はラッチとフリップフロップで完全に異なります。サイクルの境界がどのように処理されるかという点で。ラッチベースの設計を行う場合、区別は重要です。多くの人が(このサイトでも)2つを混同します。しかし、それらを介して計時を開始すると、違いは非常に明確になります。
参照:
編集:
TゲートベースのDフリップフロップを示すだけです(逆位相クロックを持つ2つの連続したTゲートベースのDラッチから構築されていることに注意してください)。
ラッチは、オープン状態で直接入力データを渡し、ラッチ状態で出力をフリーズします。ラッチは制御信号のレベルに応答します。
フリップフロップにはさまざまな種類がありますが、基本的にこれらは制御信号のエッジで状態を変更し、場合によってはデータ入力を変更します。古典的なDフリップフリップは、クロックの特定のエッジの入力のみを確認し、残りの時間すべての出力をフリーズすることを除いて、ほとんどラッチに似ています。
ラッチは、双安定マルチバイブレーター、つまり、正確に2つの安定状態を持つデバイスの例です。
これらの状態は、高出力と低出力です。
ラッチにはフィードバックパスがあるため、デバイスは情報を保持できます。
したがって、ラッチはメモリデバイスであり、デバイスに電源が供給されている限り、1ビットのデータを格納できます。
名前が示すように、ラッチは情報を「ラッチ」して所定の位置に保持するために使用されます。
ラッチはフリップフロップに非常に似ていますが、同期デバイスではなく、フリップフロップのようにクロックエッジで動作しません。
フリップフロップは、2つの状態と少しの情報を格納できるフィードバックパスを備えた双安定ミューティバイターであるという点で、ラッチに非常に似たデバイスです。
ラッチとフリップフロップの違いは、ラッチが非同期であり、入力が変化するとすぐに(または少なくともわずかな伝搬遅延後)出力が変化する可能性があることです。
一方、フリップフロップはエッジでトリガーされ、制御信号がハイからローまたはローからハイになったときにのみ状態を変更します。
この区別は比較的最近のものであり、正式ではありません。多くの当局はまだフリップフロップをラッチと呼んでいますが、その逆もわかりやすくするために役立ちます。
違いは、主に使用目的にあります。フリップフロップは一般的なアイデアであり、さまざまなバリエーションがあります-トリガー方法、JK入力またはDなど。フリップは、カウンタ、シフトレジスタ、およびフリップフロップに関するテキストやオンライン記事で見られる他のすべての用途に使用できます。
ラッチは特定の用途の1つで、フリップフロップのセット(おそらく1つだけ)にブールレベルを与え、クロックを供給し、その後、出力でこれらの値を常に保持します。いわゆるバイナリ値のスナップショット。新しい入力が入力されるか、ラッチがクリアされる場合を除き、出力値の変更は発生しません。つまり、すべての出力がゼロに設定されます。
Dタイプのフリップフロップは明らかな選択ですが、設計または使用している特定の回路またはチップで重要であっても、使用するものやトリガーする方法は、ラッチが何であるかという考えにとって重要ではありません。
トランスペアレントラッチは、データ入力と制御入力を備えたデバイスです。制御入力には、「トラック」と「ホールド」と呼ばれる2つの状態があります。一部のデバイスは、制御入力の「ハイ」を「トラック」と見なし、ロー入力を「ホールド」と見なします。他の人は反対のことをします。制御入力が「トラック」状態にあるときはいつでも、出力の状態はデータ入力の状態をたどり続けようとします(データ入力が変化してから出力が変化を反映するまでに短い遅延があります)。データ入力への最後の変更が出力に到達する機会があった場合、制御入力が「追跡」状態から「保持」状態になる場合、出力は制御入力が行くまでその値を保持します「トラック」状態に戻ります。
トランスペアレントラッチはさまざまな方法で使用できますが、少なくとも2つの使用シナリオを理解することが重要です。あるシナリオでは、ラッチを使用して、有効なデータを保持する場合と無効なデータを保持する場合がある信号を、常に有効なデータを保持する信号に変換します。これは、データ入力が目的の出力データと一致しない場合にラッチを「ホールド」状態に維持することにより行われます。ラッチされたデータを変更するには、目的のデータを入力に入力し、ラッチを一時的に「トラック」状態に設定してから「ホールド」状態に戻します。ホールド」信号がアクティブです。この配置は、たとえば、8つの制御信号と8つのデータ信号を使用して64の出力を制御するために使用できます。各制御信号は8つのラッチを操作し、1つは8つのデータ信号のそれぞれに配線されています。エッジトリガーフリップフロップをラッチと同じくらい簡単に使用できますが、ラッチの回路はやや単純です。このシナリオでエッジトリガーのフリップフロップは、「ホールド」から「トラック」への移行時に理想的にトリガーされることに注意してください。
2番目の使用シナリオでは、ラッチが「トランスペアレント」に切り替わる時点で入力が意味をなさない場合がありますが、ラッチが「ホールド」に切り替わる前に意味があります。出力を使用するデバイスが、ラッチが「ホールド」に切り替わってからしばらく経過するまで状態を気にしない場合、その時点でのデータ入力の状態が出力に送られます。このシナリオでは、エッジトリガーフリップフロップを使用できますが、「トラック」から「ホールド」への移行時にトリガーする必要があります。ラッチへのデータ入力が「ホールド」から「トラック」への移行のかなり前に有効になると、出力も同様になります。対照的に、フリップフロップの出力は、クロックが変更されたときにのみ有効になります。
ラッチとフリップフロップの主な違いは、ラッチの場合、イネーブル信号がアサートされている限り、ラッチの出力は常に入力の影響を受けることです。つまり、有効にすると、入力が変更されるとすぐにコンテンツが変更されます。一方、フリップフロップでは、イネーブル信号の立ち上がりエッジまたは立ち下がりエッジでのみコンテンツが変更されます。このイネーブル信号は通常、制御クロック信号です。クロックの立ち上がりエッジまたは立ち下がりエッジの後、入力が変化してもフリップフロップの内容は一定のままです