(57)【要約】【課題】  ステート訂正に関する技術を提供する。【解決手段】  本発明のステート回路において、第１フリップフロップが、第２フリップフロップに接続される。第２フリップフロップの出力には、ステート訂正回路が接続される。ステート訂正回路の出力には、第３フリップフロップが接続される。第３フリップフロップの出力には第４フリップフロップが接続される。また本発明は、ステート訂正に関する技術を提供する。ステート回路における第１の値は、フリップフロップから受け取られる。受け取られた値は第２フリップフロップに送られる。第２フリップフロップ内で受け取られた値は、エラー状況が発生している場合に変更される。受け取られた値は第３フリップフロップに送られる。【選択図】  図３
2005333652.tif 000002
【特許請求の範囲】
【請求項１】
第１フリップフロップと、
第１フリップフロップに接続する第２フリップフロップと、
第２フリップフロップの出力に接続するステート訂正回路と、
ステート訂正回路の出力に接続する第３フリップフロップと、
第３フリップフロップの出力に接続する第４フリップフロップと、
を備えることを特徴とするステート回路。
【請求項２】
ステート訂正回路は、当該ステート回路が所定のステートにあるときに、第２フリップフロップの出力を反転するように構成されていることを特徴とする請求項１に記載のステート回路。
【請求項３】
当該ステート回路は、６分周訂正回路であることを特徴とする請求項１に記載のステート回路。
【請求項４】
当該ステート回路は、８分周訂正回路であることを特徴とする請求項１に記載のステート回路。
【請求項５】
少なくとも１つのフリップフロップは、Ｄ型フリップフロップであることを特徴とする請求項１に記載のステート回路。
【請求項６】
第１フリップフロップは、当該ステート回路の別のフリップフロップからの出力を受け取るように構成されていることを特徴とする請求項１に記載のステート回路。
【請求項７】
第４フリップフロップの出力が、第１フリップフロップの入力に接続されることを特徴とする請求項１に記載のステート回路。
【請求項８】
ステート訂正を行うためのコンピュータプログラム製品であって、当該コンピュータプログラム製品は、コンピュータプログラムを記憶した媒体を有し、コンピュータプログラムは、
第１フリップフロップをイネーブルにするコンピュータコードと、
第２フリップフロップを第１フリップフロップに接続させるコンピュータコードと、
ステート訂正回路を第２フリップフロップの出力に接続させるコンピュータコードと、
第３フリップフロップをステート訂正回路の出力に接続させるコンピュータコードと、
第４フリップフロップを第３フリップフロップの出力に接続させるコンピュータコードと、
を有することを特徴とするコンピュータプログラム製品。
【請求項９】
コンピュータプログラムを含んだステート訂正を行うプロセッサであって、コンピュータプログラムは、
第１フリップフロップをイネーブルにするコンピュータコードと、
第２フリップフロップを第１フリップフロップに接続させるコンピュータコードと、
ステート訂正回路を第２フリップフロップの出力に接続させるコンピュータコードと、
第３フリップフロップをステート訂正回路の出力に接続させるコンピュータコードと、
第４フリップフロップを第３フリップフロップの出力に接続させるコンピュータコードと、
を有することを特徴とするプロセッサ。
【請求項１０】
第１フリップフロップと、
第１フリップフロップに接続する第２フリップフロップと、
第２フリップフロップに接続する第３フリップフロップと、を備え、
第２フリップフロップは、第２フリップフロップの入力を、エラー信号の要素として、第２フリップフロップの出力に伝達するように構成されていることを特徴とするステート回路。
【請求項１１】
当該ステート回路は、６分周訂正回路であることを特徴とする請求項１０に記載のステート回路。
【請求項１２】
当該ステート回路は、８分周訂正回路であることを特徴とする請求項１０に記載のステート回路。
【請求項１３】
少なくとも１つのフリップフロップは、Ｄ型フリップフロップであることを特徴とする請求項１０に記載のステート回路。
【請求項１４】
エラー信号は、ＯＲ回路により生成されることを特徴とする請求項１０に記載のステート回路。
【請求項１５】
ＯＲ回路は、定められた少なくとも１つの妥当でないステートに対して、ハイからローに遷移することを特徴とする請求項１４に記載のステート回路。
【請求項１６】
第１フリップフロップは、当該ステート回路の別のフリップフロップからの出力を受け取るように構成されていることを特徴とする請求項１０に記載のステート回路。
【請求項１７】
第３フリップフロップの出力に接続する第４フリップフロップをさらに備え、
第４フリップフロップの出力が、第１フリップフロップの入力に接続されることを特徴とする請求項１０に記載のステート回路。
【請求項１８】
フリップフロップは複数のラッチを有し、
複数のラッチの少なくとも１つが、エラー信号を受け取るＸＯＲ回路に接続されたクロック入力を有することを特徴とする請求項１０に記載のステート回路。
【請求項１９】
ステート訂正を行う方法であって、
ステート回路における第１のフリップフロップから第１の値を受け取るステップと、
受け取った値を、第２のフリップフロップに送るステップと、
エラー状況が発生している場合に、第２のフリップフロップ内で受け取られた値を変更するステップと、
受け取られた値を第３のフリップフロップに送るステップと、
を備えることを特徴とするステート訂正方法。
【請求項２０】
受け取られた値を第３のフリップフロップに送るステップは、受け取られた値を変更せずに送ることを特徴とする請求項１９に記載のステート訂正方法。
【請求項２１】
受け取られた値を第３のフリップフロップに送るステップは、受け取られた値を変更して送ることを特徴とする請求項１９に記載のステート訂正方法。
【請求項２２】
ステート訂正を行うためのコンピュータプログラム製品であって、当該コンピュータプログラム製品は、コンピュータプログラムを記憶した媒体を有し、コンピュータプログラムは、
ステート回路における第１のフリップフロップから第１の値を受け取らせるコンピュータコードと、
受け取らせた値を、第２のフリップフロップに送らせるコンピュータコードと、
エラー状況が発生している場合に、第２のフリップフロップ内で受け取らせた値を変更させるコンピュータコードと、
変更させた値を第３のフリップフロップに送らせるコンピュータコードと、
を有することを特徴とするコンピュータプログラム製品。
【請求項２３】
コンピュータプログラムを含んだステート訂正を行うプロセッサであって、コンピュータプログラムは、
ステート回路における第１のフリップフロップから第１の値を受け取らせるコンピュータコードと、
受け取らせた値を、第２のフリップフロップに送らせるコンピュータコードと、
エラー状況が発生している場合に、第２のフリップフロップ内で受け取らせた値を変更させるコンピュータコードと、
変更させた値を第３のフリップフロップに送らせるコンピュータコードと、
を有することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は誤り訂正に関し、特にステートマシン回路における誤り訂正に関する。
【背景技術】
【０００２】
高周波分周器と呼ばれるタイプのインクリメンタが存在する。高周波分周器においては、インクリメンタ内の値が予め定められた方法で変化するが、必ずしも数学的な加算または減算により行われるものではない。例えば、000000が第１ステート（状態）になってもよく、000001が第２ステートに、000011が第３ステートに、000111が第４ステートに、001111が第５ステートに、011111が第６ステートに、111111が第７ステートに、011111が第８ステートになってもよい。また、その他、様々な例をあげることができる。これらの値により、方形波を表現できるが、他に利用することも可能である。ステート値からステート値への特有のインクリメントは、高周波分周器の内部ロジックの機能である。
【０００３】
しかしながら、高周波分周器に関しては問題もある。そのような問題の一つは、システムが正しくないステートで起動することである。例えば、ステート010101で開始したらどうなるであろうか。システムへの電源投入時、システム内のラッチのステートが不確定となりうるために、このことは起こりうる。あるいは、電磁パルスなどの最悪なイベントも発生しうる。これが起きると、８分周カウンタ内のステートが、不所望なステートになるおそれがある。
【０００４】
しかしながら従来の技術では、訂正しないまま放置した場合には、所望のステートにならず、そして正常に戻ることのないまま、望ましくないステートから別の望ましくないステートにサイクルすることがある。システムをリセットして、プレロードした”シード”ステートをシステムに導入すことは可能である。しかしながら、これは時間的にみてコストのかかる提案であり、また何らかの原因で最初の”シード”ステートが不正確である場合には、誤りが発生することになる。電磁パルスが、回路内のステートを正しくないステートまたはシーケンスに変化させることもある。余分な時間を浪費し、また回路領域も圧迫するため、この正しくないステートまたはシーケンスは除かれるべきであり、また、システムのリセット信号を発行することも時間の浪費である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そのため、従来技術に関連する課題の少なくとも一部を解決するべく、状態遷移をある回数行った後には、所望のステートがくることを保証する必要がある。
【課題を解決するための手段】
【０００６】
本発明は、ステート回路に関するものである。このステート回路において、第２のフリップフロップが第１のフリップフロップに接続され、ステート訂正回路が、第２のフリップフロップの出力に接続され、第３のフリップフロップが、ステート訂正回路の出力に接続され、第４のフリップフロップが、第３のフリップフロップの出力に接続される。
【０００７】
また本発明は、ステート訂正に関する技術を提供する。ステート回路における第１の値が、第１のフリップフロップから受け取られる。受け取られた値は、第２のフリップフロップに送られる。エラー状況が発生している場合、第２のフリップフロップ内で受け取られた値は変更もしくは反転される。受け取られた値は、第３のフリップフロップに送られる。一つの態様において、第３のフリップフロップに送られる値は、変更もしくは反転されない値を含んでいる。別の態様において、第３のフリップフロップに送られる値は、変更もしくは反転された値を含んでいる。
【０００８】
上記課題を解決するために、本発明のある態様のステート回路は、第１フリップフロップと、第１フリップフロップに接続する第２フリップフロップと、第２フリップフロップの出力に接続するステート訂正回路と、ステート訂正回路の出力に接続する第３フリップフロップと、第３フリップフロップの出力に接続する第４フリップフロップとを備える。
【０００９】
ステート訂正回路は、当該ステート回路が所定のステートにあるときに、第２フリップフロップの出力を反転するように構成されていてもよい。
【００１０】
当該ステート回路は、６分周訂正回路であってもよい。また当該ステート回路は、８分周訂正回路であってもよい。少なくとも１つのフリップフロップは、Ｄ型フリップフロップであってもよい。第１フリップフロップは、当該ステート回路の別のフリップフロップからの出力を受け取るように構成されていてもよい。第４フリップフロップの出力が、第１フリップフロップの入力に接続されてもよい。
【００１１】
本発明の別の態様は、コンピュータプログラム製品である。このコンピュータプログラム製品は、ステート訂正を行うためのコンピュータプログラム製品であって、当該コンピュータプログラム製品は、コンピュータプログラムを記憶した媒体を有し、コンピュータプログラムは、第１フリップフロップをイネーブルにするコンピュータコードと、第２フリップフロップを第１フリップフロップに接続させるコンピュータコードと、ステート訂正回路を第２フリップフロップの出力に接続させるコンピュータコードと、第３フリップフロップをステート訂正回路の出力に接続させるコンピュータコードと、第４フリップフロップを第３フリップフロップの出力に接続させるコンピュータコードとを有する。
【００１２】
本発明のさらに別の態様は、プロセッサである。このプロセッサは、コンピュータプログラムを含んだステート訂正を行うプロセッサであって、コンピュータプログラムは、第１フリップフロップをイネーブルにするコンピュータコードと、第２フリップフロップを第１フリップフロップに接続させるコンピュータコードと、ステート訂正回路を第２フリップフロップの出力に接続させるコンピュータコードと、第３フリップフロップをステート訂正回路の出力に接続させるコンピュータコードと、第４フリップフロップを第３フリップフロップの出力に接続させるコンピュータコードとを有する。
【００１３】
また、上記課題を解決するために、本発明の別の態様は、第１フリップフロップと、第１フリップフロップに接続する第２フリップフロップと、第２フリップフロップに接続する第３フリップフロップとを備え、第２フリップフロップは、第２フリップフロップの入力を、エラー信号の要素として、第２フリップフロップの出力に伝達するように構成されているステート回路を提供する。
【００１４】
当該ステート回路は、６分周訂正回路であってもよい。また当該ステート回路は、８分周訂正回路であってもよい。少なくとも１つのフリップフロップは、Ｄ型フリップフロップであってもよい。エラー信号は、ＯＲ（論理和）回路により生成されてもよい。このＯＲ回路は、定められた少なくとも１つの妥当でないステートに対して、ネガティブに遷移、例えばハイからローに遷移してもよい。第１フリップフロップは、当該ステート回路の別のフリップフロップからの出力を受け取るように構成されてもよい。
【００１５】
ステート回路は、第３フリップフロップの出力に接続する第４フリップフロップをさらに備え、第４フリップフロップの出力が、第１フリップフロップの入力に接続されてもよい。またフリップフロップは複数のラッチを有し、複数のラッチの少なくとも１つが、エラー信号を受け取るＸＯＲ（排他的論理和）回路に接続されたクロック入力を有してもよい。
【００１６】
本発明のさらに別の態様は、ステート訂正を行う方法であって、ステート回路における第１のフリップフロップから第１の値を受け取るステップと、受け取った値を、第２のフリップフロップに送るステップと、エラー状況が発生している場合に、第２のフリップフロップ内で受け取られた値を変更するステップと、受け取られた値を第３のフリップフロップに送るステップとを備える。受け取られた値を第３のフリップフロップに送るステップは、受け取られた値を変更せずに送ってもよい。また受け取られた値を第３のフリップフロップに送るステップは、受け取られた値を変更して送ってもよい。
【００１７】
本発明のさらに別の態様は、ステート訂正を行うためのコンピュータプログラム製品であって、当該コンピュータプログラム製品は、コンピュータプログラムを記憶した媒体を有し、コンピュータプログラムは、ステート回路における第１のフリップフロップから第１の値を受け取らせるコンピュータコードと、受け取らせた値を、第２のフリップフロップに送らせるコンピュータコードと、エラー状況が発生している場合に、第２のフリップフロップ内で受け取らせた値を変更させるコンピュータコードと、変更させた値を第３のフリップフロップに送らせるコンピュータコードとを有するコンピュータプログラム製品に関する。
【００１８】
本発明のさらに別の態様は、コンピュータプログラムを含んだステート訂正を行うプロセッサであって、コンピュータプログラムは、ステート回路における第１のフリップフロップから第１の値を受け取らせるコンピュータコードと、受け取らせた値を、第２のフリップフロップに送らせるコンピュータコードと、エラー状況が発生している場合に、第２のフリップフロップ内で受け取らせた値を変更させるコンピュータコードと、変更させた値を第３のフリップフロップに送らせるコンピュータコードとを有するプロセッサに関する。
【００１９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明を実施するための最良の形態】
【００２０】
本発明の理解および本発明の利点を完全なものとするために、添付図面に関連して、以下の詳細な説明を行う。
【００２１】
本発明の理解のために、以下にいくつかの特定の詳細例について説明するが、当業者であればこうした特定の詳細例がなくとも、本発明を実施することができる。いくつかの例では、本発明を不必要に詳細に説明することによってその主旨が不明確にならないよう、周知の構成は簡単な回路図またはブロック図で表している。さらに、本発明を十分理解するために必要ではないと思われる範囲で、以下の説明の大半において、ネットワーク通信、電磁的な信号生成技術その他について省略している。これらの詳細は、当業者には十分に理解できるところである。
【００２２】
本明細書において、処理ユニット（ＰＵ）は、デバイスにおける単独の演算処理プロセッサとして構成されてもよい。その場合、ＰＵは、典型的にはＭＰＵ（メインプロセッシングユニット）と称される。また処理ユニットは、任意の演算処理デバイス用に開発された何らかの方法論ないしはアルゴリズムにしたがって演算処理負荷を共有する複数の処理ユニットの１つであってもよい。本明細書においては、特に示さない限り、プロセッサを示すものとして、用語「ＭＰＵ」を使用し、ＭＰＵがデバイスにおいて単独の演算処理部として機能するか、または他のＭＰＵとともに演算処理部として機能するかは問わない。
【００２３】
特に示さない限り、以下の全ての機能はハードウェアまたはソフトウェアにより、さらにはそれらの組み合わせにより実施することができる。しかし、いくつかの好ましい実施形態においては、特に断らない限り、それらの機能はコンピュータプログラムやソフトウェアなどのコードにしたがって動作するコンピュータや電子データプロセッサなどのプロセッサ、またはそれらの機能を実行するようコーディングされた集積回路の少なくとも一方ないしは両方により実行される。
【００２４】
図１は、許容されるステートと許容されないステートを含んだ８分周（ディバイド）ステートフロー（状態遷移）図である。図１において、特別に定められたステートまたは一連の複数のステートが生じた後、許容されないステートフローが許容されるステートフローに遷移する。一般に、図１において、例えば00110011や00110000などの、特別に定められた許可されないステートが検出されると、高周波分周（ディバイダ）回路内で値を内部的に変化させ、これにより従来の技術では00011001または10011000となっていた内部Ｄラッチのステートを、00000001や10000000などの所望のステートに変化させる。
【００２５】
例えば、図１において、電源投入時に01100111という望ましくないステートが発生した場合について説明する。（右シフトして、最右ビットからシフトされたビット値を反転し、反転したビット値を最左ビットに回り込ませる）回路の内部ロジックによると、ステートは00110011となり、２つめの許容されないステートとなる。同様のロジックにより、続くステートは00011001となる。しかしながら、図１に示す遷移図は、この問題を解決する。
【００２６】
図２は、６分周ステートフローを示す。特別に定められたステートが生じた後、許容されないステートフローが許容されるステートフローに遷移する。図２において、特別に定められた許容されないステートが001100として検出されると、回路は、許容されないステートである100110に遷移するのではなく、許容されるステート100000に遷移する。
【００２７】
図３は、８分周ステート回路を示す。Ｄ型フリップフロップ（ＤＦＦ）１＿２１５が、クロック信号をクロック源２３５からＣ入力に入力させる。ＤＦＦ１＿２１５のＱ出力（ｑ１信号ステート）は、ＤＦＦ２＿２２０のＤ入力に接続される。ＤＦＦ１＿２２０のＱ出力（ｑ２信号ステート）は、ＤＦＦ３＿２２５のＤ入力に接続される。ＤＦＦ３＿２２５のＱ出力（ｑ３信号ステート）は、ＤＦＦ４＿２３０のＤ入力に接続される。ＤＦＦ４＿２３０の反転されたＱ出力（ｑ４信号ステート）は、ＤＦＦ１＿２１５のＤ入力に接続される。
【００２８】
ＤＦＦ１＿２１５、ＤＦＦ２＿２２０、ＤＦＦ３＿２２５、ＤＦＦ４＿２３０のＱステートは、論理演算子２１０に接続される。論理演算子２１０は、ＤＦＦ２＿２２０のゲートに接続される。別の実施例においては、フリップフロップ２１５、２２０および２２５のみが使用される。ゲートメモリ２０５は、時間遅延を導入するために利用されてもよい。そうでない場合、実質的に同時にフィードバックすることに問題が発生するかもしれず、ロジックステートが収束せずに、エラー状況が生じる可能性がある。この構成は、図１に示すように、所望でないステートから所望のステートへの状態遷移を可能とする。
【００２９】
図４は、ＤＦＦ１＿２１５、ＤＦＦ３＿２２５、ＤＦＦ４＿２３０などの従来のＤフリップフロップの内部構成３００を示す。このＤフリップフロップにおいて、データ入力用の入力１（Ｄ）とクロック入力用の入力２（Ｃ）の２つの入力が設けられる。フリップフロップは、メモリデバイスとしての用途を有している。フリップフロップＤＦＦ３＿２２５は、２つの異なるラッチ３１０と３２０を備えて構成される。
【００３０】
当業者に理解されるように、フリップフロップはクロック信号によりイネーブルにされると、入力端子における信号データの状態（ステート）を、データ出力すなわちＱラインに出力する。しかしながら、フリップフロップがクロック信号によりディスエーブルにされると、Ｄ端子における入力値は出力端子に伝えられず、前回記憶されたＤ値が、Ｄ入力の出力となる。
【００３１】
図４において、例えばＤＦＦ１＿２１５に関して、２つのＤラッチ、すなわちラッチ３１０とラッチ３２０とが直列に接続される。Ｄ端子の入力値が１であり、クロック値がイネーブルであるとき、ｑｉｎｔ１の値はＤ値と同じであり、またｑｉｎｔｂの値はｑｉｎｔ１の反転値となる。しかしながら、ＮＯＴ論理演算子３３０により、２つめのＤラッチ３２０はディスエーブルにされる。このことは、ｑｉｎｔ値がこの回路において何であろうとも、その前のｑｉｎｔ値がＱ値としての出力となることを意味している。換言すると、クロックが”ハイ”である間、ＤＦＦ１＿２１５の出力は変化することができず、前回のステートを記憶しておき、出力する。
【００３２】
しかしながら、例えば次のクロックパルスにおいて、入力されるクロックパルスが”ロー”になったとする。入力されたデータは、データ入力端子からこのフリップフロップのＱ端子すなわちｑｉｎｔ出力には伝わらず、前回のクロックサイクルにおけるｑｉｎｔ値が、最初のＤラッチ３１０により保持される。しかしながら、第２のフリップフロップにおいては、入力されるクロック値が”ハイ”に反転されるため、第２のフリップフロップは、ｑｉｎｔ値を、その出力Ｑに伝える。図４において、出力Ｑは、符号３で示している。したがって、ＤＦＦ１＿２１５が出力ステートを変化させるためには、少なくとも１回の完全なクロックサイクルを要し、交互に変化するクロックサイクルから、入力データのステートが受け入れられることになる。
【００３３】
図３に戻って、このことは、例えば値00000011を本システムにおいて使用できることを意味している。次のクロックサイクルで、この値は00000001となる。既述したように、アンダーラインを付していない内部ステート（ｑｉｎｔ１、ｑｉｎｔ２、ｑｉｎｔ３）などと、アンダーラインを付したステートｑ１、ｑ２、ｑ３などが存在している。ＤＦＦ４＿２３０の出力端子で反転が生じ、ＤＦＦ１＿２１５のＤ端子へのデータとしてフィードバックされるために、ステートが変化する。図１において所望ステートへの遷移として示されるように、ステートは本システムにおいて段階的に変化する。これは、最終段のフリップフロップが出力値を反転して、反転した値を入力に転送しているためである。
【００３４】
しかしながら、所望でないステートが発生すると、システム２００は以下のように動作する。例えば、従来の８分周システムが最初のステートを01100111として起動した場合、従来のシステムは、同じく妥当でないステートである00110011に遷移する。このとき、何の訂正もしなければ、このステートは、続いて00011001に遷移する。
【００３５】
しかしながら、図３に示すロジックは、許容されない00011001ではなく、許容されるステートである00000001に遷移するように構成される。図３において、ステート00xxxxxxの第２ビットが、このステートにおいて続く３つのビットをオーバライトするために用いられ、したがって00000xxxとなる。同様に、妥当でないステートである00110000は、10011000ではなく、10000000に遷移する。換言すると、図１に示されるように、第１の出力ステート（ｑ１）が、ｑ２内部ステート（ｑｉｎｔ２）、ｑ２出力ステート（ｑ２）、ｑ３内部ステート（ｑｉｎｔ３）となる。
【００３６】
本システム２００は、以下に示すように、妥当でないステートを検出できる。出力ｑ１、ｑ２（の反転値）およびｑ３は、ＯＲ２１０に入力される。xxxxxxxx（ｘは変数）が値x0x1x0xxをとるとき、ＯＲゲートの出力はネガティブとなり、出力ｉｎｖａｌｉｄｂはローになって、許容されないステートから許容されるステートへの遷移がイネーブルとされる。図１において、この遷移は、00110011と00110000の両方で起こり、またこの２つのステートのときに、所望のステートへの遷移が発生する。
【００３７】
図５は、論理演算子２１０が特定のエラーステートの状況を検出したときにステートの遷移を実行するフリップフロップであるＤＦＦ２２０の内部構成４００を示し、ＤＦＦ２２０はラッチ４１０、４２０を有している。図４のＮＯＴ論理演算子（インバータ）３３０は、ＸＯＲ４３０に置き換えられている。当業者に知られているように、ＸＯＲは、両方の入力値が異なるときにトルー（真）値（値１）を出力し、両方の入力値が等しいときに、フォルス値（値０）を出力する。図３において、このことは、特定の予め定められた許容されないステートに対して、ＯＲ２１０の出力が０であり、また許容されたステートないしは予め定められていない許容されないステートに対しては、ＯＲ２１０の出力が１であることを意味している。ＯＲ出力は、ＤＦＦ２＿２２０フリップフロップの”ゲート”値となる。
【００３８】
図５において、ＯＲゲート２１０により出力されたゲート値が１であって、入力されたＣ値が１であるとき、出力値は０となる。これは、フリップフロップ２２０が従来のフリップフロップと同様のふるまいを示すことを意味しており、ＸＯＲは、インバータとして機能する。同様に、ゲート値が１であり、Ｃ入力値が０であるとき、出力値は１となる。これは、ＸＯＲ論理演算子４３０がＣ値に対して、インバータとして機能することを意味している。
【００３９】
図５において、ゲート値が０であり、Ｃ入力値が１であるとき、ＸＯＲ出力値は１となる。これは、フリップフロップ２２０が従来のフリップフロップとは異なるように動作し、Ｄに対して同一の値が、Ｄラッチ１とＤラッチ２の両方に伝わっていることを意味する。同様に、ゲート値が０であり、Ｃ入力値が０であるとき、ＸＯＲ出力値は０となる。ＸＯＲの出力はＤラッチ２＿４２０に対してＣ入力として送られ、Ｄラッチ１およびＤラッチ２において前回のステートが保持される。
【００４０】
換言すると、ＯＲ２１０の出力、すなわちＸＯＲ４３０へのゲート入力が０であるとき、Ｄラッチ１＿４１０およびＤラッチ２＿４２０の両方は、ＤＦＦ２＿２２０の内部で同一のクロック値を共有することになる。図３において、図５のゲート３の入力が０であるとき、ネガティブなクロックパルスに対してｑｉｎｔの値は変化しない。しかしながら、従来技術とは異なり、Ｑ出力値も同様に変化しない。そのため、ｑｉｎｔおよびｑ値は両方ともロックされ、これは図４とは異なり、Ｑ出力値は変化しない。
【００４１】
さらに、入力クロックパルスがポジティブであり、ゲート入力が０であるとき、入力されたＤ値は、ラッチ４１０、４２０の双方に伝達され、ｑｉｎｔ２を通って、それからＱから出力される。また、ポジティブなクロックステートがＤＦＦ３＿２２５に入力されるため、３つめのフリップフロップｑｉｎｔ（ｑ３ｉｎｔ）がｑ２と等しくなる。換言すると、Ｄ値がＱとなり、これは従来の技術では実現しなかったことである。
【００４２】
言い換えると、ゲート値が０であり、ポジティブなクロックサイクルに対して、ｑ１値がｑｉｎｔ２値、ｑ２出力値、およびｑ３ｉｎｔ値に伝達される。図１において、このことは、 00110000が、許容されないステートである10011000となる代わりに、10000000となる。これにより、所望でないステートから所望のステートに強制的に変化させることができる。同様に、ｑ１値が伝達されて、ｑ３ｉｎｔまで複製することにより、従来では00110011のステートの後には00011001となっていたところを、00000001に変化させる。
【００４３】
図６は、分周回路５００の変形例を示す。Ｄ型フリップフロップ（ＤＦＦ）１＿５１０は、クロック信号を、そのＣ入力端子に入力させる。ＤＦＦ１＿５１０のＱ出力（ｑ１信号ステート）は、ＤＦＦ２＿５２０のＤ入力に接続される。ＤＦＦ２＿５２０のＱ出力（Ｑ２Ｂ信号ステート）は、回路５５０に接続される。回路５５０の出力は、ＤＦＦ３＿５３０のＤ入力に接続される。ＤＦＦ３＿５３０のＱ出力（ｑ３信号ステート）は、ＤＦＦ４＿５４０のＤ入力に接続される。出力ｑ１、ｑ２、ｑ３、ｑ４は、セレクタ５１２、５２２、５３２、５４２のそれぞれにより選択され、これにより回路５００を、２分周、４分周、６分周または８分周の訂正回路として構成できる。
【００４４】
分周器訂正回路５５０は、ＤＦＦ２＿５２０の反転された出力（ｑｂ２）と、ＤＦＦ３＿５３０へのデータ入力の間に接続される。当業者に理解されるように、ＣＭＯＳ回路のドレイン−ソース間の電圧は、ＣＭＯＳがターンオンまたはオフされる場合、ソースに接続したノードとドレイン間の電位差の関数である。訂正回路５５０は、以下の真理値表に対応するロジックの一つの例である。
【００４５】
【表１】
2005333652.tif 000003
【００４６】
この真理値表において、ｑ１ｂ（ＤＦＦ１＿５１０の反転出力）と、ｑ２ｂ（ＤＦＦ２＿５２０の反転出力）と、ｑ３ｂ（ＤＦＦ３＿５３０の反転出力）が利用される。図６において、回路５５０は、反転出力ｑ２ｂと、Ｄ３へのデータ入力との間に接続される。これにより、Ｄ３ｎｅｗ値を生成できる。回路５５０は、以下のように動作する。
【００４７】
本システム５００において、ｑ１ｂ（反転値）、ｑ２ｂ（反転値）、ｑ３ｂ（反転値）が、回路５５０に入力される。ｑ１ｂが０であるとき、Ｄ３ｎｅｗはｑ２ｂの逆の値に等しくなる。ｑ３またはｑ３ｂのステートは、上記した真理値表の要素ではない。
【００４８】
しかしながら、ｑ１ｂが１であり、ｑ２ｂが０であり、ｑ３ｂが０であるとき、Ｄ３ｎｅｗは１に等しくセットされる。したがって、エラー訂正が実現される。
【００４９】
さらに、複数の所望のステートの中で、所望でないステートにスキップするものは存在しない。例えば、ｑ１およびｑ３が所望のステートにおいて０に等しい場合、これはx0xxx0xxとなる。図６の真理値表の定義によると、これは、x0x0x0xxまたはx0x1x0xxとなる。言い換えると、ｑ１およびｑ２が０である場合、ｑ２は自動的に０となり、したがって、問題を発生するステートが存在していない。
【００５０】
当業者に理解されるように、ＣＭＯＳ回路のドレイン−ソース間の電圧は、回路全体の機能の関数であり、回路がターンオンまたはオフされる。訂正回路５５０において、示した真理値表に対応するロジックは１つの例である。真理値表は２つの状況を表現し、そこではｑ１がＤ２ｎｅｗと異なる。
【００５１】
システム５００において、ｑ１ｂ（反転）値とｑ３ｂ（反転）値とが使用されており、ｑ１ｂがＤ３ｎｅｗと等しくなるときに、ステートの実際の変化が発生する。これは、ｑ１が０であり、ｑ３が０のときである。そのため、次の値も０になってから、次段のフリップフロップに入力し、ｑ３とｑｉｎｔ３の両方が１ではなく、ｑ１の値である０となる。図１において、このことは、00011001が00000001になること、また10011000が10000000になることと相互に関係がある。言い換えると、ｑ１およびｑ３の出力値が１であるとき、ｑ３ｉｎｔは０となる。
【００５２】
さらに、複数の所望のステートの中で、所望でないステートにスキップするものは存在しない。例えば、ｑ１およびｑ３が所望のステートにおいて０に等しい場合、これはx0xxx0xxとなる。図６の真理値表の定義によると、これは、x0x0x0xxとなる。このグラフにおいて実行されるタイプの周波数分割によると、ｑ１およびｑ３が０であれば、所望のステートにおいてｑ２が０でなければならない。そのため、問題を発生するステートがない。
【００５３】
図７は、本ダイアグラムの動作をシミュレートした波形図を示す。図示されるように、ｑ１からｑ４の波形が正常でないステートにて開始した場合であっても、いくつかのクロックが遷移した後、１ｓおよび０ｓの正常なシーケンスに遷移する。
【００５４】
本発明は、いろいろな形式や実施の形態を取りうる。したがって、本発明の精神や範囲から逸脱することなく、既述した技術において種々の変形技術が存在する。ここで説明した技術的可能性の延長として、さまざまなプログラミングモデルの可能性がある。しかしながら、本開示はいずれか特定のプログラミングモデルを好んで採用するように読まれるべきではなく、そうしたプログラミングモデルが構築される基本構造を指向しているものと理解されるべきである。
【００５５】
以上、本発明をいくつかの好ましい実施の形態をもとに説明した。これらの実施の形態は、本来発明の内容を例示するものであって、限定するものではない。また、以上の開示内容から、変形例、修正例、変更または置換が考えられ、またいくつかの実施例においては、本発明のいくつかの構成要素が対応する他の構成要素を使用することなく実現可能であることも理解されるところである。そうした多くの変形例や修正例は、好ましい実施の形態の説明に鑑み、当業者によってなされることは望まれるところである。したがって、添付の特許請求の範囲は、広くかつ本発明の範囲と一貫する方法で解釈されるべきである。
【図面の簡単な説明】
【００５６】
【図１】許容されるステートと許容されないステートを含んだ８分周ステートフローを示す図である。
【図２】許容されるステートと許容されないステートを含んだ６分周ステートフローを示す図である。
【図３】ステート訂正を伴う８分周ステートフロー訂正回路を示す図である。
【図４】従来のＤフリップフロップを示す図である。
【図５】誤り訂正を行うＤフリップフロップを示す図である。
【図６】分周回路の変形例を示す図である。
【図７】図３のフリップフロップの外部ステートおよび内部ステートの様々なタイイングチャートを示す図である。
【符号の説明】
【００５７】
２１５・・・ＤＦＦ１、２２０・・・ＤＦＦ２、２２５・・・ＤＦＦ３、２３０・・・ＤＦＦ４
【図１】
2005333652.tif 000004
【図２】
2005333652.tif 000005
【図３】
2005333652.tif 000006
【図４】
2005333652.tif 000007
【図５】
2005333652.tif 000008
【図６】
2005333652.tif 000009
【図７】
2005333652.tif 000010