[0024] 同様の参照番号は、複数の図全体を通して対応する部分を指す。
[0025] 本実施形態は、簡略さのためだけに、データタイプのフリップフロップ回路に照らして以下に説明される。本実施形態が、他のタイプのフリップフロップ回路(例えば、セット−リセット(SR)フリップフロップ及びJKフリップフロップのような)に等しく適用可能であることは理解されるものとする。以下の説明では、本開示の完全な理解を提供するために、特定の構成要素、回路、及びプロセスの例のような、多数の特定の詳細が示される。また、以下の説明では、説明上の目的で、本実施形態の完全な理解を提供するために、特定の専門用語が示される。しかしながら、これらの特定の詳細が本実施形態を実施するのに必要とされない場合もあることは、当業者にとって明らかであろう。他の事例では、周知の回路及びデバイスは、本開示を曖昧にしないために、ブロック図形式で示される。本明細書で使用される場合、「結合された(coupled)」という用語は、直接接続されること、或いは1つ又は複数の介在構成要素又は回路を通じて接続されることを意味する。本明細書で説明される様々なバスを通して供給される信号はいずれも、他の信号と時間多重化され、1つ又は複数の共通バスを通して供給され得る。追加的に、回路素子又はソフトウェアブロック間の相互接続が、バス又は単一信号線として示され得る。これらバスの各々は代替的に単一信号線であり得、これら単一信号線の各々は代替的にバスであり得、単一の線又はバスは、構成要素間の通信のための無数の物理的又は論理的なメカニズムのうちの何れか1つ又は複数を表し得る。本実施形態は、本明細書で説明される特定の例に限定されると解釈されるべきではなく、添付の特許請求の範囲によって定義される全ての実施形態をその範囲内に含むように解釈されるべきである。
[0026] さらに、本明細書で使用される場合、「反転(された)」という用語は、信号の論理的な相補(logical complement)を生成するために信号を論理的に反転することを指し、したがって、「反転(された)」、「論理的な相補」、及び「相補(された)」という用語は、本明細書では交換して使用され得る。
[0027] 図2Aは、幾つかの実施形態に係る、データタイプのフリップフロップ回路200のブロック図を示す。フリップフロップ回路200は、第1のラッチ210及び第2のラッチ220を含むように示される。「マスタ」ラッチとして動作し得る第1のラッチ210は、ORゲートX0と、2つのNANDゲートX1及びX2とを含む。ORゲートX0は、クロック信号CLK及びデータビット(D)を受けるための入力端子を含み、信号S0を生成するための出力端子を含む。NANDゲートX1は、ノードN1において信号S1を生成するための出力端子を含み、NANDゲートX2は、ノードN2において信号S2を生成するための出力端子を含む。NANDゲートX1は、クロック信号CLKと、NANDゲートX2によって生成された信号S2とを受けるための入力端子を含み、NANDゲートX2は、NANDゲートX1によって生成された信号S1を受け、ORゲートX0から出力された信号S0を受けるための入力端子を含む。幾つかの実施形態について、第1のノードN1における信号S1は、本明細書では、「内部信号」と呼ばれ得る。より詳細に以下で説明されるように、内部信号S1は、第1のラッチ210がデータ信号Dをラッチする場合には(例えば、クロック信号CLKの第1の状態に応答して)、論理ハイ状態にドライブされ得、第1のラッチ210がデータ信号Dを第2のラッチ220にパスする場合には(例えば、クロック信号CLKの第2の状態に応答して)、データ信号Dの値にドライブされ得る。
[0028] 「スレーブ」ラッチとして動作し得る第2のラッチ220は、NANDゲートX3、ORゲートX4、並びに2つのインバータX5及びX6を含む。NANDゲートX3は、第1のラッチ210によって供給される信号S1を受けるための第1の入力端子と、ORゲートX4の出力端子に結合された第2の入力端子と、ノードN3において信号S3を生成するための出力端子とを含む。インバータX6は、信号S3を論理的に反転して、フリップフロップ回路200の出力信号(Q)を生成する。インバータX5は、信号S3を論理的に反転して、内部Q信号を生成する。ORゲートX4は、クロック信号CLKと、インバータX5によって生成されたQ信号とを受けるための入力端子を含み、信号S4を生成するための出力端子を含む。
[0029] インバータX5及びX6が、反転バッファ回路として動作し得ることに留意されたい。他の実施形態について、インバータX5及びX6は、他の適切なバッファ回路によって置き換えられ得るか、又は除去され得る。さらに、インバータX5及びX6が両方とも、ノードN3における信号S3に応答して出力信号Qを生成することに留意されたい。インバータX5は、Q信号をORゲートX4に供給し、一方で、インバータX6は、Q信号を出力信号として供給する(例えば、簡潔さのために示されない別の回路又はデバイスに)。このように、インバータX5によって供給されるQ信号は、インバータX6によって供給されるQ信号ほどノイズの影響を受け易くなく、よって、第2のラッチ220による内部論理信号としての使用により適している。他の実施形態について、インバータX5は省略され得、インバータX6によって供給されるQ信号が、ORゲートX4の入力端子に供給され得る。
[0030] フリップフロップ回路200の例示的な動作が以下で説明される。クロック信号CLKが論理ロー状態にある場合(CLK=0)、NANDゲートX1は、信号S1=1となるように、その出力端子N1を論理ハイにし、ORゲートX0は、S0=Dとなるように、Dの値をその出力信号S0としてパスする。信号S1の論理ハイ状態は、データビットDを反転し、
[0031] 信号S1の論理ハイ状態及びCLKの論理ロー値が、第2のラッチ220に供給される。CLK=0に応答して、ORゲートX4は、Qの前値(previous value)を、信号S4としてNANDゲートX3にパスする。信号S1の論理ハイ状態に応答して、NANDゲートX3は、信号S4を反転し、
インバータX6は、信号S3の値を反転して、その出力信号S6をQの値にドライブし(S6=Q)、それによって、出力信号Qの前の状態を維持する。インバータX5もまた、信号S3の値を反転して、その出力信号S5をQの値にドライブし(S5=Q)、それによって、ORゲートX4への入力信号S5を、出力信号Qの値に等しく保つ。このように、
第2のラッチ220内に形成されるNAND−INV−OR構造によってノードN3に記憶される。
[0032] クロック信号CLKが、論理ハイ状態(CLK=1)に遷移すると、第1のラッチ210は、前にラッチされたDの値を、ノードN1を介して第2のラッチ220にパスする。より具体的には、CLK=1に応答して、NANDゲートX1は、
ノードN1においてデータ信号Dを生成し、次いで、Dの値は、信号S1として第2のラッチ220に供給される。CLKの論理ハイ状態はまた、ORゲートX0に、その出力信号S0を論理ハイにドライブさせる。信号S0の論理ハイ状態は、信号S1の反転値をその出力端子N2にパスすることをNANDゲートX2に行わせ、それによって、
ノードN1においてDの値を記憶する。クロック信号CLKが論理ハイから論理ローに遷移するまで、NANDゲートX1及びX2によって形成される第1のラッチ210が、ノードN1においてDの値を、
[0033] ノードN1におけるDの値は、信号S1としてNANDゲートX3に供給される。CLKの論理ハイ状態は、出力信号S4を論理ハイにすることをORゲートX4に行わせ、これは、次に、Dの値を反転することをNANDゲートX3に行わせる。したがって、NANDゲートX3は、
インバータX6は、信号S3の値を反転し、そして、Q=Dになるように、出力信号QをDの値にドライブする。インバータX5もまた、信号S3の値を反転して、S5=D=Qとなるように、その出力信号S5をDの値にドライブし、それによって、ORゲートX4への入力信号S5を、出力信号Qの値に等しく保つ。このように、出力信号Qは、第2のラッチ220内に形成されるNAND−INV−OR構造によって入力データビットDの現在値(current value)で更新される。
[0034] 上述したように、フリップフロップ回路200は、第1のラッチ210がマスタラッチとして機能し、第2のラッチ220がスレーブラッチとして機能するデータタイプのフリップフロップとして動作し得る。より具体的には、クロック信号CLKが、論理ハイから論理ローに遷移すると、第1のラッチ210は、入力データビットDの現在値を記憶し、第2のラッチ220は、出力信号Qの前値を記憶する。クロック信号CLKが、論理ローから論理ハイに遷移すると、第1のラッチ210は、入力データビットDの現在値を第2のラッチ220にパスし(Dの値のあらゆる変化を無視しつつ)、第2のラッチ220は、Dの現在値を、出力信号Qとして供給する。
[0035] 本実施形態に従って、フリップフロップ回路200の第1のラッチ210及び第2のラッチ220は、クロック信号CLKの同じ位相上で動作し得、それによって、相補クロック信号を生成する必要性がなくなる。結果として、フリップフロップ回路200は、相補クロック信号を生成するためのクロック反転回路(例えば、図1のクロック反転回路130のような)が不要になる。クロック反転回路を除去する能力は、相補クロック信号を生成することに関連付けられた動的な電力消費を減らし得る(図1の従来のフリップフロップ回路100と比べて)。例えば、図1のインバータINV4a−INV4bは、クロック信号CLKのあらゆる状態偏移に応じて動的な電力を消費し得るが、クロック信号CLKの状態遷移は、図2Aのフリップフロップ回路200にはクロック反転回路が存在しないため、フリップフロップ回路200の同様の動的な電力消費に帰着しないだろう。さらに、図1の従来のフリップフロップ回路100とは対照的に、図2Aのフリップフロップ回路200は、ラッチ110及び120内にパスゲート及びトライステートインバータを含まないため、クロック信号CLKの状態遷移に応答したトライステートインバータ及びパスゲートの連続切替えに関連付けられた動的な電力消費を除去する。結果として、図2Aのフリップフロップ回路200は、図1の従来のフリップフロップ回路100よりも少ない動的な電力を消費し得る。
[0036] 図2Bは、図2Aのフリップフロップ回路200の一実施形態であるフリップフロップ回路250を示す。フリップフロップ回路250は、第1の論理ゲート251、第2の論理ゲート252、及び第3の論理ゲート253を含むように示される。幾つかの実施形態について、第1の論理ゲート251は、OR−AND−INVERT(OAI)ゲートとして動作し得、第2の論理ゲート252は、NANDゲートとして動作し得、第3の論理ゲート253は、OAIゲートとして動作し得る。さらに、少なくとも1つの実施形態について、図2Bの第1及び第2の論理ゲート251−252は、図2Aの第1のラッチ210を実現し得、図2BのゲートX5及びX6と組み合せられる第3の論理ゲート253は、図2Aの第2のラッチ220を実現し得る。より具体的には、第1の論理ゲート251は、図2AのORゲートX0及びNANDゲートX2を実現し得、第2の論理ゲート252は、図2AのNANDゲートX1を実現し得る。
[0037] 第1の論理ゲート251は、NMOSトランジスタMN0−MN2及びPMOSトランジスタMP0−MP2を含む。トランジスタMN1及びMN2は、ノードN2と接地電位との間で直列に結合され、トランジスタMN0は、トランジスタMN1と並列に結合される。トランジスタMN1は、入力データビットDを受けるためのゲートを有し、トランジスタMN0は、クロック信号CLKを受けるためのゲートを有し、トランジスタMN2は、ノードN1に結合されたゲートを有する。トランジスタMP0及びMP1は、ノードN2と電圧電源VDDとの間で直列に結合され、トランジスタMP2は、ノードN2とVDDとの間に結合される。トランジスタMP1は、入力データビットDを受けるためのゲートを有し、トランジスタMP0は、クロック信号CLKを受けるためのゲートを有し、トランジスタMP2は、ノードN1に結合されたゲートを有する。
[0038] 第2の論理ゲート252は、NMOSトランジスタMN3−MN4及びPMOSトランジスタMP3−MP4を含む。トランジスタMN3及びMN4は、ノードN1と接地電位との間で直列に結合される。トランジスタMN3は、クロック信号CLKを受けるためのゲートを有し、トランジスタMN4は、ノードN2に結合されたゲートを有する。トランジスタMP3及びMP4は、ノードN1とVDDとの間で並列に結合される。トランジスタMP3は、クロック信号CLKを受けるためのゲートを有し、トランジスタMP4は、ノードN2に結合されたゲートを有する。
[0039] 第3の論理ゲート253は、NMOSトランジスタMN5、MN6、及びMN8を含み、PMOSトランジスタMP5、MP6、及びMP8を含む。トランジスタMN5及びMN6は、ノードN3と接地電位との間で直列に結合され、トランジスタMN8は、トランジスタMN5と並列に結合される。トランジスタMN5は、出力信号Qを受けるためのゲートを有し、トランジスタMN6は、ノードN1に結合されたゲートを有し、トランジスタMN8は、クロック信号CLKを受けるためのゲートを有する。トランジスタMP5及びMP8は、ノードN3とVDDとの間で直列に結合され、トランジスタMP6は、ノードN3とVDDとの間に結合される。トランジスタMP5は、出力信号Qを受けるためのゲートを有し、トランジスタMP8は、クロック信号CLKを受けるためのゲートを有し、トランジスタMP6は、ノードN1に結合されたゲートを有する。
[0040] フリップフロップ回路250の例示的な動作が以下で説明される。クロック信号CLKが論理ロー状態にあるとき(CLK=0)、第1の論理ゲート251は、
入力データビットDの値をラッチし、第3の論理ゲート253は、出力信号Qの前値を維持する。より具体的には、CLK=0に応答して、トランジスタMP0、MP3、及びMP8はオンになり、トランジスタMN0、MN3、及びMN8はオフになる。導電性トランジスタMP3は、信号S1が論理ハイ状態になるようにVDDに向かってノードN1をハイに引き上げ、これは、トランジスタMN2をオンにし、トランジスタMP2をオフにする。Dの値は、トランジスタMP1及びMN1によって形成されるインバータによって反転され、それによって、
ゆえに、クロック信号CLKが論理ローである場合、論理ゲート251−252によって形成される「マスタ」ラッチは、
[0041] 信号S1の論理ハイ状態及びCLKの論理ロー状態が第3の論理ゲート253に供給される。CLK=0に応答して、トランジスタMP8はオンになり、トランジスタMN8はオフになる。ノードN1における信号S1の論理ハイ状態は、トランジスタMN6をオンにし、トランジスタMP6をオフにする。出力信号Qの前値が、トランジスタMP5及びMN5によって形成されるインバータによって反転され、それによって、
インバータX5及びX6は、ノードN3における信号S3の値を反転して、出力信号Qの前値を維持する。
[0042] クロック信号CLKが論理ハイに遷移すると(CLK=1)、第2の論理ゲート252は、第1の論理ゲート251によってラッチされたような、Dの値を、第3の論理ゲート253にパスする。次いで、第3の論理ゲート253は、ラッチされたDの値に応答して出力信号Qの値を更新し得る。より具体的には、CLK=1に応答して、トランジスタMP0、MP3、及びMP8はオフになり、トランジスタMN0、MN3、及びMN8はオンになる。導電性トランジスタMN0は、トランジスタMN2のドレインを接地電位に接続し、導電性トランジスタMN3は、トランジスタMN4のソースをノードN1に接続し、導電性トランジスタMN8は、トランジスタMN6のドレインを接地電位に接続する。非導電性トランジスタMP0は、Dに応答してトランジスタMP1がVDDに向かってノードN2をハイに引き上げることを防ぎ、それによって、CLK=1のときに、第1の論理ゲート251に供給されるDの現在値に係らず、
トランジスタMP4及びMN4によって形成されるインバータによって論理的に反転され、ノードN1においてDの値が生成される。ノードN1におけるDの値は、トランジスタMP2及びMN2によって形成されるインバータによって論理的に反転されて、
[0044] ノードN1におけるDの値もまた、トランジスタMP6及びMN6によって形成されるインバータによって論理的に反転され、
これは、インバータX5及びX6によって反転されて、出力信号QがDの値にドライブされる(Q=D)。このように、CLKの論理ハイ状態は、クロック信号CLKが論理ハイから論理ローに遷移するまで、第1の論理ゲート251が入力データビットDにおける状態遷移を無視することを可能にしつつ、Dの値を第2の論理ゲート252から第3の論理ゲート253に転送する。
[0045] 図2Aを再度参照すると、フリップフロップ回路200は、Dの次の状態と、Qの現在の状態の両方が論理ローであるとき、不必要な動的な電力を消費し得る。例えば、CLKの論理ロー状態は、ノードN1を論理ハイにドライブすることをNANDゲートX1に行わせる。同時に、ノードN0は、入力データビットD=0のとき、論理ローにドライブされ、したがって、ノードN2もまた、論理ハイにプルアップされる。次いで、CLKが論理ローから論理ハイに遷移すると、NANDゲートX1は、ノードN1を論理ハイから論理ローにドライブする。しかしながら、出力信号Qは、その状態を変更せず、論理ローで維持される。結果として、ノードN1は、Dの次の値とQの現在値の両方が0であるとき、論理状態0と1との間を不必要に遷移し得る。
[0046] この起こりうるタイミング問題を回避するために、例えば、図3で示されるように、フィードバック信号が供給され得る。図3Aは、他の実施形態に係る、データタイプのフリップフロップ回路300のブロック図を示す。フリップフロップ回路300は、第1のラッチ310、図2Aの第2のラッチ220、及びフィードバック信号FBを第1のラッチ310に供給するNORゲートX8を含む。第1のラッチ310は、図2Aの第1のラッチ210の全ての素子に加え、ORゲートX7を含む。クロック信号CLKは、ORゲートX7の第1の入力端子に供給され、フィードバック信号FBは、ORゲートX7の第2の入力端子に供給され、ORゲートX7の出力端子は、NANDゲートX1の第1の入力端子に結合される。NORゲートX8は、入力データビットDを受けるための第1の入力端子と、出力信号Qを受けるための第2の入力端子と、フィードバック信号FBを供給するための出力端子とを含む。
[0047] フィードバック信号FBは、出力信号Qの現在値とデータビットDの到来値の両方が論理ローであるとき(Q=D=0のとき)の、上述された不必要な電力消費問題を除去し得る。例えば、Q=D=0のとき、NORゲートX8は、フィードバック信号FBを論理ハイにドライブし(FB=1)、これは、クロック信号CLKとは関係なしに、ORゲートX7に、ノード7におけるその出力信号S7を論理ハイにドライブさせる。このケースについて、D=0及びQ=0に応答して生成された信号S7の論理ハイ状態は、NANDゲートX1が、
次いで、ノードN1を論理ローにドライブすること(D=0を第2のラッチ220にパスするために)を確実にする。
[0048] D及びQの全ての他のケースについて、NORゲートX8は、フィードバック信号FBを論理ローにドライブし(FB=0)、それによって、ORゲートX7が、CLKの値をNANDゲートX1にパスすることを可能にする。これら他のケースについて、第1のラッチ310は、図2Aの第1のラッチ210と同様の方法で動作し得る。
[0049] 図3Bは、図3Aのフリップフロップ回路300の一実施形態であるフリップフロップ回路350を示す。フリップフロップ回路350は、図2Bの第1の論理ゲート251、第2の論理ゲート352、及び図2Bの第3の論理ゲート253を含むように示される。幾つかの実施形態について、第1の論理ゲート251、第2の論理ゲート352、及び第3の論理ゲート253は各々、OAI回路として動作し得る。さらに、少なくとも1つの実施形態について、図3Bの第1及び第2の論理ゲート251及び352は、図3Aの第1のラッチ310を実現し得、図3BのゲートX5及びX6と組み合せられた第3の論理ゲート253は、図3Aの第2のラッチ220を実現し得る。
[0050] 第2の論理ゲート352は、NMOSトランジスタMN3、MN4、及びMN7を含み、PMOSトランジスタMP3、MP4、及びMP7を含む。トランジスタMN3及びMN4は、ノードN1と接地電位との間で直列に結合される。トランジスタMN3は、クロック信号CLKを受けるためのゲートを有し、トランジスタMN4は、ノードN2に結合されたゲートを有する。トランジスタMN7は、トランジスタMN3と並列に結合され、フィードバック信号FBを受けるためのゲートを有する。トランジスタMP3及びMP7は、ノードN1とVDDとの間で直列に結合される。トランジスタMP3は、クロック信号CLKを受けるためのゲートを有し、トランジスタMP7は、フィードバック信号FBを受けるためのゲートを有する。トランジスタMP4は、ノードN1とVDDとの間に結合され、ノードN2に結合されたゲートを有する。図3BのトランジスタMP7及びMN7が、図3AのORゲートX7を実現し得ることに留意されたい。
[0051] 図3Bのフリップフロップ回路350の例示的な動作が、入力データビットDの値及び出力信号Qの値の異なる組み合わせに関連して以下で説明される。第1のケースは、Dの次の状態が論理ローであり、Qの現在の状態が論理ハイであるときである(即ち、D=0及びQ=1)。クロック信号CLK=0のとき、トランジスタMP5及びMN5によって形成されるインバータは、Qの論理ハイ値を反転して、ノードN3を論理ローにドライブし、これは、次に、インバータX6によって反転されて、Q=1が維持される。D=0及びQ=1に応答して、NORゲートX8は、フィードバック信号FBを論理ローにドライブし、これは、トランジスタMP7をオンにし、トランジスタMN7をオフにする。結果として、ノードN1は、CLK=0に応答してトランジスタMP3によってVDDに向かってハイに引き上げられ、これは、トランジスタMN2をオンにする。ゆえに、トランジスタMP1及びMN1によって形成されるインバータは、
このように、第3の論理ゲート253は、現在値であるQ=1を維持し、第1の論理ゲート251は、D=0という値をラッチする。
[0052] CLKが論理ローから論理ハイに遷移すると、トランジスタMN3はオンになり、接地電位向かってノードN1をローに引き下げる。ノードN1の論理ロー状態は、トランジスタMP2をオンにし、これは、ノードN2をVDDに向かってハイに引き上げ、その結果、ノードN2の論理ハイ状態を維持して、
ノードN1の論理ロー状態は、トランジスタMN6をオフに、トランジスタMP6オンにし、それによって、VDDに向かってノードN3をハイに引き上げ、
これに応答して、インバータX6は、D=0に応答してQ=0を更新する。CLK=1である間、ノードN2が、導電性トランジスタMP2によって論理ハイ状態で維持され、ノードN1が、導電性トランジスタMN3及びMN4によって論理ロー状態で維持されることに留意されたい。トランジスタMP0、MP3、MP4、及びMN5は、非導電性であり、それによって、データビットDにおける後続の状態変化に関係なしに、論理ゲート251及び352においてD=0というラッチされた値を維持する。
[0053] CLKが論理ハイから論理ローに遷移すると、Qの前値が、第3の論理ゲート253においてラッチされ、第1及び第2の論理ゲート251及び352は、Dの次の値をラッチすることができる状態にある。
[0054] 第2のケースは、Dの次の状態が論理ハイであり、Qの現在の状態が論理ローであるとき(即ち、D=1及びQ=1のとき)である。クロック信号CLK=0のとき、トランジスタMP5及びMN5によって形成されるインバータは、Qの論理ロー値を反転して、ノードN3を論理ハイにドライブし、これは、次に、インバータX6によって反転されて、Q=0が維持される。D=1及びQ=0に応答して、NORゲートX8は、フィードバック信号FBを論理ローにドライブし、これは、トランジスタMP7をオンにし、トランジスタMN7をオフにする。結果として、ノードN1は、CLK=0に応答して、トランジスタMP3によってVDDに向かってハイに引き上げ、これは、MN2をオンにする。ゆえに、トランジスタMP1及びMN1によって形成されるインバータは、
このように、第3の論理ゲート253は、Q=0という現在値を維持し、第1の論理ゲート251は、D=1という値をラッチする。
[0055] CLKが論理ローから論理ハイに遷移すると、トランジスタMN3はオンになるが、トランジスタMN4は、オフのままであり、ノードN1を接地電位から分離する。ノードN1の論理ハイ状態は、トランジスタMN2をオンにし、これは、ノードN2を接地電位に向かってローに引き下げ、その結果、ノードN2の論理ロー状態を維持して、
ノードN1の論理ハイ状態は、トランジスタMN6をオンに、トランジスタMP6をオフにし、それによって、接地電位に向かってノードN3をローに引き下げ、
これに応答して、インバータX6は、D=1に応答してQ=1を更新する。CLK=1の間、ノードN2が、導電性トランジスタMN2(「キーパ」回路として機能し得る)によって論理ロー状態で維持され、ノードN1が、導電性トランジスタMP4によって論理ハイ状態で維持されることに留意されたい。トランジスタMP0、MP2、及びMN4は、非導電性であり、それによって、データビットDにおける後続の状態変化に関係なしに、論理ゲート251及び352においてD=1というラッチされた値を維持する。CLKが論理ハイから論理ローに遷移すると、Qの前値が、第3の論理ゲート253においてラッチされ、第1及び第2の論理ゲート251及び352は、Dの次の値をラッチすることができる状態にある。
[0056] 第3のケースは、Dの次の状態が論理ローであり、Qの現在の状態が論理ローであるとき(即ち、D=0及びQ=1のとき)である。クロック信号CLK=0のとき、トランジスタMP5及びMN5によって形成されるインバータは、Qの論理ロー値を反転して、ノードN3を論理ハイにドライブし、これは、次に、インバータX6によって反転されて、Q=0が維持される。D=0及びQ=0に応答して、NORゲートX8は、フィードバック信号FBを論理ハイにドライブし、これは、トランジスタMP7をオフにし、トランジスタMN7をオンにする。結果として、クロック信号CLK及びDの値における遷移とは関係なしに、ノードN1は、論理ロー状態で維持され、ノードN2は、論理ハイ状態で維持される。このように、ノードN2は、トランジスタMP1及びMN1によって形成されるインバータを使用することなく、論理ハイ状態のままであり、
このように、トランジスタMP1及びMN1が、N2を充電又は放電しないため、動的な電力消費が減らされ得る。
[0057] 第4のケースは、Dの次の状態が論理ハイであり、Qの現在の状態が論理ハイであるとき(即ち、D=1及びQ=1のとき)である。クロック信号CLK=0のとき、トランジスタMP5及びMN5によって形成されるインバータは、Qの論理ハイ値を反転して、ノードN3を論理ローにドライブし、これは、次に、インバータX6によって反転されて、Q=1が維持される。D=1及びQ=1に応答して、NORゲートX8は、フィードバック信号FBを論理ローにドライブし、これは、トランジスタMP7をオンにし、トランジスタMN7をオフにする。結果として、ノードN1は、トランジスタMP3及びMP7によって論理ハイ状態で維持され、ノードN2は、トランジスタMN1及びMN2によって接地電位に向かってローに放電される。その後、クロック信号CLK及びDの値の遷移とは関係なしに、ノードN1は、論理ハイ状態で維持され、ノードN2は、論理ロー状態で維持される。このように、動的な電力消費は減らされ得る。
[0058] 追加的に、フリップフロップ回路200は、タイミング不一致に起因する誤差に左右され得る。例えば、NANDゲートX1がORゲートX0及びNANDゲートX2よりも弱い場合、クロック信号CLKにおける遷移に応答してNANDゲートX1がノードN1の状態を遷移することに関連付けられた第1の時間遅延は、クロック信号CLKにおける遷移に応答してORゲートX0及びNANDゲートX2がノードN2の状態を遷移することに関連付けられた第2の時間遅延よりも長く、これは、次に、第1のラッチ210が、入力データビットDの不正確な値をラッチすることに帰着し得る。例えば、CLKの論理ロー状態は、ノードN1を論理ハイにドライブすることをNANDゲートX1に行わせる。データビットDの現在値が論理ローであるとき(D=0)、NANDゲートX2は、
次いで、CLKが論理ローから論理ハイに遷移すると、ORゲートX0は、ノードN0を論理ハイにドライブする。しかしながら、第1の時間遅延が第2の時間遅延よりも大きい場合、NANDゲートX2は、D=0という値を獲得するために、NANDゲートX1がノードN1を論理ローにドライブする前に、ノードN2を論理ローにドライブし得る。これが起こった場合、NANDゲートX1は、望ましくなくも、ノードN1を論理ハイ状態に維持し得、それによって、D=0という値を正確にラッチすることに失敗する。ノードN1を論理ハイ状態で維持することがDの正確な値を反映し得るため、D=1という現在値のとき、この問題は存在ない可能性があることに留意されたい。
[0059] この起こりうるタイミング問題を回避するために、図3Cに示されるように、二次クロック信号が生成され得る。フリップフロップ回路360は、図2Bの第1の論理ゲート251、第2の論理ゲート362、及び図2Bの第3の論理ゲート253を含むように示される。幾つかの実施形態について、第1の論理ゲート251、第2の論理ゲート362、及び第3の論理ゲート253は各々、OAI回路として動作し得る。さらに、少なくとも1つの実施形態について、図3のC第1及び第2の論理ゲート251及び362は、図3Aの第1のラッチ310を実現し得、図3CのゲートX5及びX6と組み合せられた第3の論理ゲート253は、図3Aの第2のラッチ220を実現し得る。
[0060] 図3Cの第2の論理ゲート362は、図3Cの実施形態では、トランジスタMN3及びMN7が、ノードN1とトランジスタMN4のドレインとの間に結合される点を除いて、図3Bの第2の論理ゲート352に類似し得る。ゆえに、トランジスタMN3及びMN7は、図3Bのフリップフロップ回路350において、接地電位とトランジスタMN4のソースとの間で並列に結合されるが、トランジスタMN3及びMN7は、図3Cのフリップフロップ回路360において、ノードN1とMN4のドレインとの間で並列に結合される。図3Cのフリップフロップ回路360について、Dの次の状態が論理ローであり、Qの現在の状態が論理ハイである場合、フィードバック信号FBは論理ローにアサートされ、トランジスタMN7はオフになり、トランジスタMP7はオンになる。結果として、ノードN1は、CLK=0に応答して、トランジスタMP3によってVDDまで充電され、これは、トランジスタMN2をオンにする。次いで、トランジスタMP1及びMN1によって形成されるインバータは、
その後、トランジスタMN4は、信号CLK_LATを論理ローにプルダウンするためにオンにされる。CLKが論理ローから論理ハイに遷移すると、ノードN1は、接地電位に向かって放電され、CLK_LATは、論理ローを維持し、それは、起こりうるタイミングレースを効率的に抑制する。
[0061] 図3Cのフリップフロップ360のこの改善の他の利点は節電である。例えば、Dの次の状態とQの現在の状態の両方は、論理ハイであり、フィードバック信号FBは、論理ローにアサートされ、トランジスタMN7はオフになり、MP7はオンになる。結果として、ノードN1は、CLK=0に応答して、トランジスタMP3によってVDDまで充電され、これは、トランジスタMN2をオンにする。結果として、トランジスタMP1及びMN1によって形成されるインバータは、
ゆえに、トランジスタMP4は、ノードN1を論理ハイで維持するためにオンにされ、トランジスタMN4は、CLK_LATを接地電位から隔離するためにオフにされる。CLKが論理ローから論理ハイに遷移すると、トランジスタMN3はオンにされ、CLK_LATは、導電性トランジスタMN3を通じてVDD−VTまで充電される。その後、CLK_LATが、第1の論理ゲート251におけるトランジスタMN0のゲートに供給され(例えば、クロック信号CLKというよりはむしろ)、これもまた、動的な電力消費を減らし得る。
[0062] 導電性トランジスタMN3が、トランジスタMN4のドレインを、VDDを下回る1つのトランジスタ閾値電圧(例えば、VDD−VT)くらいまで充電することと、それが、電力消費を減らし得ること(トランジスタMN4のドレインを、VDDくらいまで充電することと比べて)に留意されたい。
[0063] 図3Dは、図3Aのフリップフロップ回路300の別の実施形態であるフリップフロップ回路370を示す。フリップフロップ回路370は、図2Bの第1の論理ゲート251、図3Cの第2の論理ゲート362、及び第3の論理ゲート363を含むように示される。幾つかの実施形態について、第1の論理ゲート251、第2の論理ゲート362、第3の論理ゲート363は各々、OAI回路として動作し得る。さらに、少なくとも1つの実施形態について、図3Dの第1及び第2の論理ゲート251及び362は、図3Aの第1のラッチ310を実現し得、図3DのゲートX5及びX6と組み合せられた第3の論理ゲート363は、図3Aの第2のラッチ220を実現し得る。
[0064] 図3Dの第3の論理ゲート363は、図3Dの実施形態では、トランジスタMP8が除去されており、トランジスタMP5のソースが、トランジスタMP0のドレインに結合される点を除いて、図2Bの第3の論理ゲート353に類似し得る。このように、トランジスタMP0は、除外されたトランジスタMP8と同一の機能を行い得、それによって、回路エリアを減らす。
[0065] 前述の明細書では、本実施形態は、その特定の例示的な実施形態に関して説明されている。しかしながら、様々な修正及び変更が、添付の特許請求の範囲に示された本開示のより広い範囲から逸脱せずに、それに対してなされ得ることは明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味で考慮されるべきである。