(57)【要約】【課題】サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーを小規模な回路で訂正する。【解決手段】発振回路１は、複数のビット値において連続する０又は１のビット値により数値が表現されるサーモメータコードに基づき、出力する発振信号の発振周波数が制御される発振器１０と、制御回路２１と、記憶回路２２と、訂正回路２３とを有する。制御回路２１は、発振周波数と所定の基準周波数との比較結果に基づいて、サーモメータコードを生成する。記憶回路２２は、生成されたサーモメータコードを記憶する。訂正回路２３は、記憶されたサーモメータコードにそれぞれ含まれる各ビット値と、各ビットに隣接する第１隣接ビットの第１隣接ビット値と、各ビットに隣接する第２隣接ビットの第２隣接ビット値とに基づいて、ビット値の訂正が必要な場合、訂正が必要なビット値を訂正する。【選択図】図９
2018125724.tif 000002
【特許請求の範囲】
【請求項１】
複数のビット値において連続する０又は１のビット値により数値が表現されるサーモメータコードに基づき、出力する発振信号の発振周波数が制御される発振器と、
前記発振周波数と所定の基準周波数との比較結果に基づいて、前記サーモメータコードを生成する制御回路と、
生成された前記サーモメータコードを記憶する記憶回路と、
記憶された前記サーモメータコードにそれぞれ含まれる各ビット値と、各ビットに隣接する第１隣接ビットの第１隣接ビット値と、各ビットに隣接する第２隣接ビットの第２隣接ビット値とに基づいて、ビット値の訂正が必要な場合、訂正が必要なビット値を訂正した訂正済サーモメータコードを前記発振器に出力する訂正回路と、
を有する発振回路。
【請求項２】
前記訂正回路は、各ビット値が、前記第１隣接ビット値及び前記第２隣接ビット値の双方と一致しない場合、当該ビット値が前記第１隣接ビット値及び前記第２隣接ビット値に一致するように、前記訂正が必要なビット値を訂正する第１訂正回路を有する、請求項１に記載の発振回路。
【請求項３】
前記発振回路はさらに、前記サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成するととともに記憶する境界情報生成回路を有し、
前記訂正回路はさらに、前記境界情報に対応する境界判定ビット値に基づいて、前記サーモメータコードの境界位置を上位ビット方向又は下位ビット方向の何れか一方にシフトする第２訂正回路を有する、請求項２に記載の発振回路。
【請求項４】
複数のビット値において連続する０又は１のビット値により数値が表現されるサーモメータコードを生成する制御回路と、
生成された前記サーモメータコードを記憶する記憶回路と、
記憶された前記サーモメータコードにそれぞれ含まれる、各ビット値と、各ビットに隣接する第１隣接ビットの第１隣接ビット値と、各ビットに隣接する第２隣接ビットの第２隣接ビット値とに基づいて、ビット値の訂正が必要な場合、訂正が必要なビット値を訂正した訂正済サーモメータコードを出力する訂正回路と、
を有するサーモコード訂正回路。
【請求項５】
発振器から出力される発振信号の発振周波数と所定の基準周波数との比較結果に基づいて、複数のビット値において連続する０又は１のビット値により数値が表現され、前記発振周波数を制御するサーモメータコードを記憶する記憶回路を有するう発振器の制御方法において、
記憶されたサーモメータコードにそれぞれ含まれる、各ビット値と、各ビットに隣接する第１隣接ビットの第１隣接ビット値と、各ビットに隣接する第２隣接ビットの第２隣接ビット値に基づいて、ビット値の訂正が必要な場合、訂正が必要なビット値を訂正し、
訂正が必要なビット値を訂正した訂正済サーモメータコードを前記発振器に出力する、
発振回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、発振回路の制御方法及びサーモコード訂正回路の制御方法に関する。
【背景技術】
【０００２】
ハード故障に起因するビットエラーではなく、宇宙からの放射線等の影響を原因とするビット反転エラーであるソフトエラーがメモリ及びフリップフロップ等のデータ保持回路で発生した場合、発生したソフトエラーを訂正する種々の技術が知られている。例えば、直列接続してシフトレジスタを形成するフリップフロップの出力信号に基づいてソフトエラー等の発生を検知した場合、シフトレジスタを初期化する技術が知られている（例えば、特許文献１を参照）。また、フューズの切断の有無を示すヒューズデータを記憶する専用のラッチに記憶されるデータと、ヒューズデータを記憶するチップ内のレジスタのデータをビット毎に比較して、ソフトエラーを検出する技術が知られている（例えば、特許文献２を参照）。また、同一のデータを保持する３以上の奇数個のフリップフロップと、前記奇数個のフリップフロップの保持するデータについて多数決を取ることによって、ソフトエラーを検出する技術が知られている（例えば、特許文献３を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７―１２８６１１号公報
【特許文献２】特開２００７―５２５９６号公報
【特許文献３】特開２０１１―１７６４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーを小規模な回路で訂正することは知られていない。
【０００５】
一実施形態では、サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーを小規模な回路で訂正することができる訂正回路を有する発振回路を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、発振回路は、複数のビット値において連続する０又は１のビット値により数値が表現されるサーモメータコードに基づき、出力する発振信号の発振周波数が制御される発振器と、制御回路と、記憶回路と、訂正回路とを有する。制御回路は、発振周波数と所定の基準周波数との比較結果に基づいて、サーモメータコードを生成する。記憶回路は、生成されたサーモメータコードを記憶する。訂正回路は、記憶されたサーモメータコードにそれぞれ含まれる、各ビット値と、各ビットに隣接する第１隣接ビットの第１隣接ビット値と、各ビットに隣接する第２隣接ビットの第２隣接ビット値とに基づいて、ビット値の訂正が必要な場合、訂正が必要なビット値を訂正する。そして、訂正回路は、対象ビット値が訂正された訂正済サーモメータコードを発振器に出力する。
【発明の効果】
【０００７】
一実施形態では、サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーをより小規模な回路で訂正することができる。
【図面の簡単な説明】
【０００８】
【図１】（ａ）は関連する発振回路の回路図であり、（ｂ）は（ａ）の発振回路の制御に使用されるサーモメータコードを説明するための図である。
【図２】（ａ）は関連する発振回路の回路図であり、（ｂ）は奇数行に配置されるリング発振器の初段のインバータの内部回路図であり、（ｃ）は偶数行に配置されるリング発振器の初段のインバータの内部回路図である。
【図３】サーモメータコードを使用した発振周波数制御を説明するための図であり、（ａ）は現在のリング発振器の発振状態を示す図であり、（ｂ）は現在の分周周波数が基準クロックの基準周波数よりも高いときの発振回路による制御後のリング発振器の発振状態を示す図であり、（ｃ）は現在の分周周波数が基準クロックの基準周波数よりも低いときの発振回路による制御後のリング発振器の発振状態を示す図であり、（ｄ）は（ｃ）の状態における分周周波数が基準クロックの基準周波数よりも低いときの発振回路による制御後のリング発振器の発振状態を示す図である。
【図４】（ａ）はＲＯＷデータにバブルパターンが発生した一例を示す図であり、（ｂ）は（ａ）の状態における行選択信号及び列選択信号の信号値を示す図である。
【図５】（ａ）はＣＯＬＵＭＮデータにバブルパターンが発生した第１の状態を示す図であり、（ｂ）は（ａ）の状態における行選択信号及び列選択信号の信号値を示す図である。
【図６】（ａ）は図５に示す第１の状態からＣＯＬＵＭＮデータを上位ビット側に１ビットシフトした第２の状態を示す図であり、（ｂ）は（ａ）の状態における行選択信号及び列選択信号の信号値を示す図である。
【図７】（ａ）は図６に示す第２の状態からＣＯＬＵＭＮデータを上位ビット側に更に１ビットシフトした第３の状態を示す図であり、（ｂ）は（ａ）の状態における行選択信号及び列選択信号の信号値を示す図である。
【図８】（ａ）は実施形態に係る発振回路の動作の説明のための第１の図であり、（ｂ）は実施形態に係る発振回路の動作の説明のための第２の図である。
【図９】第１実施形態に係る発振回路の回路図である。
【図１０】（ａ）は図９に示す第１ＣＯＬＵＭＮ訂正回路が有する第１訂正回路の内部回路図であり、（ｂ）は（ａ）に示す第１訂正回路の真理値表であり、（ｃ）は（ａ）に示す第１訂正回路の動作を説明するための図である。
【図１１】図９に示す発振回路の動作を示すフローチャートである。
【図１２】第１実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。
【図１３】第２実施形態に係る発振回路の回路図である。
【図１４】ビット数が３である図１３に示す境界ビット生成回路を、ビット数がＮであると一般化したときの境界ビット生成回路の回路図である。
【図１５】（ａ）は図１３に示す第２ＣＯＬＵＭＮ訂正回路が有する第２訂正回路の内部回路図であり、（ｂ）は第２訂正回路の動作を説明するための図である。
【図１６】図１３に示す発振回路の動作を示すフローチャートである。
【図１７】第２実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。
【図１８】（ａ）は第２訂正回路の変形例の内部回路図であり、（ｂ）は（ａ）に示す第２訂正回路の動作を説明するための図である。
【図１９】第２実施形態に係る発振回路の変形例によるソフトエラーの訂正処理の処理結果の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態に係る発振回路の制御方法及びサーモコード訂正回路について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１０】
（実施形態に係る発振回路に関連する発振回路）
実施形態に係る実施形態に係る発振回路及び発振回路の制御方法について説明する前に、実施形態に係る発振回路に関連する発振回路及び発振回路の制御方法について説明する。
【００１１】
図１（ａ）は関連する発振回路の回路図であり、図１（ｂ）は図１（ａ）の発振回路の制御に使用されるサーモメータコードを説明するための図である。ここで、サーモメータコードとは、複数のビット値で表現され、複数のビット値において連続する０又は１の個数により、数値を表現する一種の数値表現形式である。言い換えると、サーモメータコードは、特定のビットを境に上位ビットと下位ビットとの間で、異なる値を示す。
【００１２】
発振回路９００は、発振器９０１と、ＣＯＬＵＭＮ回路９０２と、ＲＯＷ回路９０３と、周波数比較回路９０４とを有し、発振器９０１から出力される発振信号をクロックとして出力する。発振器９０１は、１０行３列に配置された３０個のリング発振器９１０を有する。３０個のリング発振器９１０のそれぞれは、図１（ａ）においては３段で示される複数段の直列接続されたインバータを有し、不図示の接続配線を介して互いに接続される。３０個のリング発振器９１０は互いに接続されるため、発振するリング発振器９１０の数が増加するに従って、リング発振器９１０が出力する発振信号の発振周波数は高くなる。また、発振するリング発振器９１０の数が減少するに従って、リング発振器９１０が出力する発振信号の発振周波数は低くなる。なお、リング発振器９１０のそれぞれは、３段でなくても、奇数段のインバータが直列接続されていれば良い。
【００１３】
図２（ａ）は発振器９０１の部分内部回路であり、図２（ｂ）は奇数行に配置されるリング発振器９１０の初段のインバータの内部回路図であり、図２（ｃ）は偶数行に配置されるリング発振器９１０の初段のインバータの内部回路図である。
【００１４】
３０個のリング発振器９１０のそれぞれは、最終段である３段目のインバータの出力端子が互いに接続されると共に、出力端子ＯＵＴに接続される。リング発振器９１０は、発振しているときは発振器として機能し、発振を停止しているときは負荷として機能する。発振しているリング発振器９１０の数が増加して発振器として機能するリング発振器９１０の数が増加し且つ負荷として機能するリング発振器９１０の数が減少することで、発振器９０１の周波数は高くなる。一方、発振しているリング発振器９１０の数が減少して発振器として機能するリング発振器９１０の数が減少し且つ負荷として機能するリング発振器９１０の数が増加することで、発振器９０１の周波数は低くなる。
【００１５】
奇数行に配置されるリング発振器９１０は、初段に第１スイッチ付インバータ９１１が配置される。第１スイッチ付インバータ９１１は、一対の論理トランジスタ９１３及び９１４と、一対の制御トランジスタ９１５及び９１６と、ＯＲ素子９１７と、ＡＮＤ素子９１８とを有する。
【００１６】
一対の論理トランジスタ９１３及び９１４は、一対の論理トランジスタ９１３及び９１４の双方がオンしているときに、３段目のインバータから出力される信号を反転して２段目のインバータに入力する。
【００１７】
一対の制御トランジスタ９１５及び９１６は、ＯＲ素子９１７から入力される信号に対応する信号値が「０」であるときに同時にオフし、ＯＲ素子９１７から入力される信号に対応する信号値が「１」であるときに同時にオンする。
【００１８】
ＯＲ素子９１７の一方の入力端子には（ｉ＋１）行を選択することを示す（ｉ＋１）行選択信号が入力され、ＯＲ素子９１７の他方の入力端子にはＡＮＤ素子９１８の出力信号が入力される。ＡＮＤ素子９１８の一方の入力端子にはｉ行を選択することを示すｉ行選択信号が入力され、ＡＮＤ素子９１８の他方の入力端子にはｊ列を選択することを示すｊ列選択信号が入力される。
【００１９】
第１行及び第９行等の奇数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「０」であり且つ（ｉ＋１）行選択信号に対応する信号値が「０」であるときにオフする。奇数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であるときに、ｊ列選択信号に対応する信号値に応じてオンオフする。奇数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であり且つｊ列選択信号に対応する信号値が「０」のときオフする。奇数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であり且つｊ列選択信号に対応する信号値が「１」のときオンする。奇数行であるｉ行に配置されるリング発振器９１０は、（ｉ＋１）行選択信号に対応する信号値が「１」であるときにオンする。
【００２０】
第８行等の偶数行に配置されるリング発振器９１０は、初段に第２スイッチ付インバータ９１２が配置される。第１スイッチ付インバータ９１１は、ｊ列選択信号が入力され且つＡＮＤ素子９１８の他方の入力端子に出力端子が接続されインバータ９１９を有することが第１スイッチ付インバータ９１１と相違する。
【００２１】
偶数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「０」であり且つ（ｉ＋１）行選択信号に対応する信号値が「０」であるときにオフする。偶数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であるときに、ｊ列選択信号に対応する信号値に応じてオンオフする。偶数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であり且つｊ列選択信号に対応する信号値が「１」のときオフする。偶数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であり、（ｉ＋１）行選択信号に対応する信号値が「０」であり且つｊ列選択信号に対応する信号値が「０」のときオンする。偶数行であるｉ行に配置されるリング発振器９１０は、ｉ行選択信号に対応する信号値が「１」であるときにオンする。
【００２２】
ＣＯＬＵＭＮ回路９０２は、ＣＯＬＵＭＮシフト制御回路９２１と、３個のフリップフロップを有するＣＯＬＵＭＮデータフリップフロップ９２２とを有し、３行に配置されるリング発振器を選択するＣＯＬＵＭＮデータを出力する。ＣＯＬＵＭＮ回路９０２は、周波数比較回路９０４から入力されるＣＯＬＵＭＮシフト制御信号に基づいて、発振するリング発振器９１０を選択するためにＣＯＬＵＭＮデータを生成する。ＣＯＬＵＭＮシフト制御回路９２１は、ＣＯＬＵＭＮシフト制御信号に応じたサーモメータコードをＣＯＬＵＭＮデータとして生成し、生成したＣＯＬＵＭＮデータをＣＯＬＵＭＮデータフリップフロップ９２２に出力する。ＣＯＬＵＭＮシフト制御回路９２１は、サーモメータコードのビット値「０」と「１」との間の境界位置が最下位ビット又は最上位ビットから第２ビットにシフトするとき、ＣＯＬＭＵＮデータのみをシフトする。すなわち、ＣＯＬＵＭＮシフト制御回路９２１は、サーモメータコードの境界位置が最下位ビット又は最上位ビットから中間ビットにシフトするとき、ＣＯＬＭＵＮデータのみをシフトする。一方、ＣＯＬＵＭＮシフト制御回路９２１は、サーモメータコードの境界位置が中間ビットから最下位ビット又は最上位ビットにシフトするとき、「ＯＮ」及び「ＯＦＦ」を示すビット値を反転する。また、ＣＯＬＵＭＮ回路９０２は、サーモメータコードの境界位置が行方向に亘ってシフトするとき、ＣＯＬＭＵＮデータをシフトすると共に、行の増加又は減少を示すＲＯＷシフト制御信号をＲＯＷ回路９０３に出力する。ＣＯＬＵＭＮデータフリップフロップ９２２は、ＣＯＬＵＭＮシフト制御回路９２１から入力されたＣＯＬＭＵＮデータを記憶すると共に、記憶したＣＯＬＭＵＮデータを発振器９０１に出力する。
【００２３】
ＲＯＷ回路９０３は、ＲＯＷシフト制御回路９３１と、１０個のフリップフロップを有するＲＯＷデータフリップフロップ９３２とを有し、１０列に配置されるリング発振器を選択するＲＯＷデータを出力する。ＲＯＷ回路９０３は、ＣＯＬＵＭＮ回路９０２から入力されるＲＯＷシフト制御信号に基づいて、発振するリング発振器９１０を選択するためにＲＯＷデータを生成する。ＲＯＷシフト制御回路９３１は、入力されたＲＯＷシフト制御信号に応じたサーモメータコードをＲＯＷデータとしてＲＯＷデータフリップフロップ９３２に出力する。ＲＯＷデータフリップフロップ９３２は、ＲＯＷシフト制御回路９３１から入力されたＲＯＷデータを記憶すると共に、記憶したＲＯＷデータを発振器９０１に出力する。
【００２４】
ＣＯＬＵＭＮデータ及びＲＯＷデータのそれぞれは、発振するリング発振器を決定するためのサーモメータコードを示す。図１（ｂ）に示す例では、最下位ビットから８ビットまでの間がリング発振器９１０を「ＯＮ」して発振させることを示すビット値であり、９ビットから最上位ビットまでの間がリング発振器９１０を「ＯＦＦ」して発振させないことを示すビット値である。ＣＯＬＵＭＮデータ及びＲＯＷデータは、ビット値が「０」のとき「ＯＮ」を示し且つビット値が「１」のとき「ＯＦＦ」を示してもよく、ビット値が「１」のとき「ＯＮ」を示し且つビット値が「０」のとき「ＯＦＦ」を示してもよい。ＣＯＬＵＭＮデータ及びＲＯＷデータは、全てのリング発振器９１０を「ＯＮ」することを示す状態、及び全てのリング発振器９１０を「ＯＦＦ」することを示す状態にシフトするときに、ビット値と「ＯＮ」及び「ＯＦＦ」との対応関係を反転させてもよい。例えば、ＣＯＬＵＭＮシフト制御回路９２１は、ビット値「０」が「ＯＮ」を示す状態で、全てのリング発振器９１０を「ＯＮ」することを示す状態にシフトするときに、ビット値「１」が「ＯＮ」を示すように対応関係を反転させる。また、ＣＯＬＵＭＮシフト制御回路９２１は、ビット値「１」が「ＯＮ」を示す状態で、全てのリング発振器９１０を「ＯＮ」することを示す状態にシフトするときに、ビット値「０」が「ＯＮ」を示すように対応関係を反転させる。同様に、ＣＯＬＵＭＮシフト制御回路９２１は、ビット値「０」が「ＯＮ」を示す状態で、全てのリング発振器９１０を「ＯＦＦ」することを示す状態にシフトするときに、ビット値「１」が「ＯＮ」を示すように対応関係を反転させる。また、ＣＯＬＵＭＮシフト制御回路９２１は、ビット値「１」が「ＯＮ」を示す状態で、全てのリング発振器９１０を「ＯＦＦ」することを示す状態にシフトするときに、ビット値「０」が「ＯＮ」を示すように対応関係を反転させる。すなわち、ＣＯＬＵＭＮシフト制御回路９２１は、サーモメータコードの境界位置を第２ビットから最下位ビット又は最上位ビットにシフトするとき、「ＯＮ」及び「ＯＦＦ」を示すビット値を反転する。
【００２５】
周波数比較回路９０４は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して、発振信号の発振周波数を制御する。周波数比較回路９０４は、分周周波数が基準周波数よりも低かったとき、周波数を高くするために、発振するリング発振器９１０が１つ増加することを示すＣＯＬＵＭＮシフト制御信号を出力する。周波数比較回路９０４は、分周周波数が基準周波数よりも高かったとき、周波数を低くするために、発振するリング発振器９１０が１つ減少することを示すＣＯＬＵＭＮシフト制御信号を出力する。
【００２６】
図３は、サーモメータコードを使用した発振周波数制御を説明するための図であり、図３（ａ）は現在のリング発振器９１０の発振状態を示す図である。図３（ｂ）は現在の分周周波数が基準クロックの基準周波数よりも高いときの発振回路９００による制御後のリング発振器９１０の発振状態を示す図である。図３（ｃ）は現在の分周周波数が基準クロックの基準周波数よりも低いときの発振回路９００による制御後のリング発振器９１０の発振状態を示す図である。図３（ｄ）は図３（ｃ）の状態における分周周波数が基準クロックの基準周波数よりも低いときの発振回路９００による制御後のリング発振器９１０の発振状態を示す図である。
【００２７】
図３（ａ）において、ＣＯＬＵＭＮデータは、最下位ビット及び第２ビットのビット値が「ＯＮ」を示し、最上位ビットのビット値が「ＯＦＦ」を示す。また、ＲＯＷデータは、最下位ビットから第７ビットまでのビット値が「ＯＮ」を示し、第８ビットから最上位ビットまでのビット値が「ＯＦＦ」を示す。図３（ａ）において、ＲＯＷデータのビット値が「ＯＮ」を示す第１行から第７行までのリング発振器９１０と、第８行のＣＯＬＵＭＮデータのビット値が「ＯＮ」を示す第１列から第２列までのリング発振器９１０とが「ＯＮ」する。図３（ａ）において、２３個のリング発振器９１０とが「ＯＮ」する。
【００２８】
現在の発振周波数が基準クロックの基準周波数よりも高いとき、周波数比較回路９０４は、発振するリング発振器９１０の数を１つ減少させることを示すＣＯＬＵＭＮシフト制御信号をＣＯＬＵＭＮシフト制御回路２１にを出力する。ＣＯＬＵＭＮシフト制御回路２１は、発振するリング発振器９１０の数を１つ減少させることを示すＣＯＬＵＭＮシフト制御信号が入力されると、ビット値が「ＯＮ」を示すビットを１つ減少させたＣＯＬＵＭＮデータを生成する。すなわち、ＣＯＬＵＭＮシフト制御回路２１は、最下位ビットのビット値が「ＯＮ」を示し、第２ビット及び最上位ビットのビット値が「ＯＦＦ」を示すＣＯＬＵＭＮデータを生成する。ＣＯＬＵＭＮシフト制御回路２１は、生成したＣＯＬＵＭＮデータをＣＯＬＵＭＮデータフリップフロップ９２２に出力する。ＣＯＬＵＭＮデータフリップフロップ９２２は、入力されたＣＯＬＵＭＮデータを記憶すると共に、発振器９０１に出力する。発振器９０１にビット値が「ＯＮ」を示すビットを１つ減少させたＣＯＬＵＭＮデータが入力されることで、図３（ｂ）に示すように、発振するリング発振器９１０の数が１つ減少して２２個になる。
【００２９】
現在の発振周波数が基準クロックの基準周波数よりも低いとき、周波数比較回路９０４は、発振するリング発振器９１０の数を１つ増加させることを示すＣＯＬＵＭＮシフト制御信号を出力する。ＣＯＬＵＭＮシフト制御回路２１は、発振するリング発振器９１０の数を１つ増加させることを示すＣＯＬＵＭＮシフト制御信号が入力されると、ビット値が「ＯＮ」を示すビットを１つ増加させたＣＯＬＵＭＮデータを生成出力する。すなわち、ＣＯＬＵＭＮシフト制御回路２１は、最下位ビットから最上位ビットまでのビット値が「ＯＮ」を示すＣＯＬＵＭＮデータを生成する。ＣＯＬＵＭＮシフト制御回路２１は、生成したＣＯＬＵＭＮデータをＣＯＬＵＭＮデータフリップフロップ９２２に出力する。ＣＯＬＵＭＮデータフリップフロップ９２２は、入力されたＣＯＬＵＭＮデータを記憶すると共に、発振器９０１に出力する。発振器９０１にビット値が「ＯＮ」を示すビットを１つ増加させたＣＯＬＵＭＮデータが入力されることで、図３（ｃ）に示すように、発振するリング発振器９１０の数が１つ増加して２４個になる。
【００３０】
図３（ｃ）の状態における発振周波数が基準クロックの基準周波数よりも低いとき、周波数比較回路９０４は、発振するリング発振器９１０の数を更に１つ増加させることを示すＣＯＬＵＭＮシフト制御信号を出力する。ＣＯＬＵＭＮシフト制御回路２１は、発振するリング発振器９１０の数を１つ増加させることを示すＣＯＬＵＭＮシフト制御信号が入力されると、ビット値が「ＯＮ」を示すビットを１つ増加させることを示すＲＯＷシフト制御信号を生成する。ＣＯＬＵＭＮシフト制御回路２１は、生成したＲＯＷシフト制御信号をＲＯＷシフト制御回路９３１に出力する。ＲＯＷシフト制御回路９３１は、ビット値が「ＯＮ」を示すビットを１つ増加させることを示すＲＯＷシフト制御信号が入力されると、ビット値が「ＯＮ」を示すビットを１つ増加させたＲＯＷデータを生成する。すなわち、ＲＯＷシフト制御回路９３１は、最下位ビットから第８ビットまでのビット値が「ＯＮ」を示し、第９ビットから最上位ビットまでのビット値が「ＯＦＦ」を示すＲＯＷデータを生成する。ＲＯＷシフト制御回路９３１は、生成したＲＯＷデータをＲＯＷデータフリップフロップ９３２に出力する。ＲＯＷデータフリップフロップ９３２は、入力されたＲＯＷデータを記憶すると共に、発振器９０１に出力する。発振器９０１にビット値が「ＯＮ」を示すビットを１つ増加させたＲＯＷデータが入力されることで、図３（ｄ）に示すように、発振するリング発振器９１０の数が１つ増加して２５個になる。
【００３１】
他方、半導体素子で形成されるフリッププロップでは、ソフトエラーの発生が問題になっている。ソフトエラーは、外部からのα線や中性子線が回路周辺にあたることで値が反転してしまうエラーである。発振回路９００では、ＣＯＬＵＭＮデータフリップフロップ９２２及びＲＯＷデータフリップフロップ９３２に含まれるフリップフロップでソフトエラーが発生した場合、発生したソフトエラーは訂正されることはない。フリップフロップでソフトエラーが発生すると、「０１０」及び「１０１」という通常のサーモメータコードでは発生しないイレギュラーなパターンが発生する。ここでは、「０１０」及び「１０１」等のビット列に含まれるビット値が第１ビット値から第１ビット値と相違する第２ビット値に遷移した後に第１ビットに戻る通常のサーモメータコードでは発生しないイレギュラーなパターンをバブルパターンと称する。
【００３２】
発振回路９００においてバブルパターンが発生すると、発生したバブルパターンは、検出されることはないため、訂正されない。発振回路９００では、発生したバブルパターンは、ＣＯＬＵＭＮデータ及びＲＯＷデータがリセットされるまで訂正されることなくＣＯＬＵＭＮデータ及びＲＯＷデータに含まれる。
【００３３】
図４（ａ）はＲＯＷデータにバブルパターンが発生した一例を示す図であり、図４（ｂ）は図４（ａ）の状態における行選択信号及び列選択信号の信号値を示す図である。図４（ｂ）において、実線で示される信号線は印加される行選択信号又は列選択信号が選択状態であることを示し、破線で示される信号線は印加される行選択信号又は列選択信号が非選択状態であることを示す。
【００３４】
図４に示す例では、ＣＯＬＵＭＮデータに対応するサーモメータコードは最下位ビット及び第２ビットのビット値が「ＯＮ」を示し、最上位ビットのビット値が「ＯＦＦ」を示す。また、ＲＯＷデータに対応するサーモメータコードは最下位ビットから第４ビットまでのビット値が「ＯＮ」を示し、第５ビットから最上位ビットまでのビット値が「ＯＦＦ」を示す。ＲＯＷデータに対応するサーモメータコードの第８ビットのビット値は、ソフトエラーにより「ＯＮ」から「ＯＦＦ」に反転している。ＲＯＷデータに対応するサーモメータコードの第８ビットのビット値が反転することで、発振回路９００は、本来は「ＯＦＦ」である５個のリング発振器９１０が「ＯＮ」する。本来は「ＯＦＦ」である５個のリング発振器９１０が「ＯＮ」することで、発振信号の発振周波数は、所望の発振周波数よりも高くなり、発振信号をクロックとして使用する不図示の論理回路において誤動作が発生するおそれがある。
【００３５】
図５〜７は、ＣＯＬＵＭＮデータにバブルパターンが発生した一例を示す図である。図５（ａ）はＣＯＬＵＭＮデータにバブルパターンが発生した第１の状態を示し、図５（ｂ）は図５（ａ）の状態における行選択信号及び列選択信号の信号値を示す。図６（ａ）は図５に示す第１の状態からＣＯＬＵＭＮデータを上位ビット側に１ビットシフトした第２の状態を示し、図６（ｂ）は図６（ａ）の状態における行選択信号及び列選択信号の信号値を示す。図７（ａ）は図６に示す第２の状態からＣＯＬＵＭＮデータを上位ビット側に更に１ビットシフトした第３の状態を示し、図７（ｂ）は図７（ａ）の状態における行選択信号及び列選択信号の信号値を示す。図５（ｂ）、６（ｂ）、７（ｂ）において、実線で示される信号線は印加される行選択信号又は列選択信号が選択状態であることを示し、破線で示される信号線は印加される行選択信号又は列選択信号が非選択状態であることを示す。図５〜７において、リング発振器は行方向に６個配置されるので、ＣＯＬＵＭＮデータのビット数は、６ビットである。
【００３６】
図５において、ビット値「０」が「ＯＮ」を示し、ビット値「１」が「ＯＦＦ」を示す。図５では、ＣＯＬＵＭＮデータの第５ビットにソフトエラーが発生し、第５ビットのビット値が「ＯＦＦ」から「ＯＮ」に反転する。すなわち、図５に示す第１の状態では、「０００１１１」であるＣＯＬＵＭＮデータは、「０００１０１」となりＣＯＬＵＭＮデータの第４ビットから第６ビットまでの間にバブルデータが発生する。
【００３７】
図６では、図５に示す第１の状態からＣＯＬＵＭＮデータが上位ビット側に１ビットシフトして、ソフトエラーにより反転して「ＯＮ」を示す第５ビットのビット値が最上位ビットである第６ビットに達する。第６ビットのビット値が「ＯＮ」を示すとき、サーモメータコードであるＣＯＬＵＭＮデータは、第１ビットから第６ビットまでの全てのビット値が「ＯＮ」を示すと判断される。ＣＯＬＵＭＮデータが全てのビット値が「ＯＮ」を示すと判断されると、「ＯＮ」を示すビット値が「０」から「１」に反転される。図５に示す第１の状態では「０００１０１」であったＣＯＬＵＭＮデータは、上位ビットに１ビットすることで「００００１０」となった後に、「ＯＮ」を示すビット値が反転することでビット値が「１」である第５ビットが「ＯＮ」となる。図６に示す第２の状態では、ＣＯＬＵＭＮデータは、第４ビットから第６ビットまでの間に「０１０」で示されるバブルデータが発生する。
【００３８】
図７では、図６に示す第２の状態からＣＯＬＵＭＮデータが上位ビット側に更に１ビットシフトして、バブルデータに含まれる「ＯＮ」を示す第５ビットのビット値が最上位ビットである第６ビットに達する。第６ビットのビット値が「ＯＮ」を示すとき、図６に示す第２の状態と同様に、ＣＯＬＵＭＮデータは、第１ビットから第６ビットまでの全てのビット値が「ＯＮ」を示すと判断される。ＣＯＬＵＭＮデータが全てのビット値が「ＯＮ」を示すと判断されると、「ＯＮ」を示すビット値が「１」から「０」に反転される。図６に示す第２の状態では「００００１０」であったＣＯＬＵＭＮデータは、上位ビットに１ビットシフトすることで「１００００１」となる。そして、上位ビットに１ビットシフトすることで「１００００１」となったＣＯＬＵＭＮデータは、「ＯＮ」を示すビット値が反転することでビット値が「１」である第２ビットから第５ビットまでのビットが「ＯＮ」となる。
【００３９】
図６に示す第２の状態と、図７に示す第３の状態との間では、「ＯＮ」するリング発振器の数が９個異なるので、第２の状態の発振信号の周波数と第３の状態の発振信号の周波数との間で発振信号の周波数が大きく飛ぶことになる。ＣＯＬＵＭＮデータでソフトエラーが発生すると、バブルパターンがシフトされて最下位ビット及び最上位ビットを通過する度にＲＯＷデータをシフトするＲＯＷシフト制御信号が立て続けにアサートされる。ＲＯＷデータが短期間に繰り返しシフトすることで発振信号の発振周波数が大きく飛ぶ問題が発生する。
【００４０】
フリップフロップでのソフトエラーの発生を防止するために、フリップフロップ内部のラッチ回路等に容量を付加する等のソフトエラーへの耐性を向上させる回路構成が採用されている。しかしながら、半導体集積回路の微細化の進行に従って、フリップフロップのソフトエラーへの耐性が低下しており、α線に加えて従来は問題にならなかった中性子によるソフトエラーが発生するようになってきている。このため、回路構成による対策だけで、フリップフロップのソフトエラーの発生を防止することは、容易ではない。
【００４１】
特許文献３に記載される方法によって、ソフトエラーにより反転したフリップフロップに記憶されるビット値を訂正することができる。しかしながら、特許文献３に記載される方法では、リップフロップを３重化する多数決回路を使用するため、フリップフロップの個数が３倍に増加するため、回路規模的にデジタル制御発振器（DigitalControledOscrator、ＤＣＯ）での使用には適さない。また、誤り検出訂正（error detection and correction、ＥＣＣ）コードを付加して訂正を行うＥＣＣ制御方式を採用することで、ソフトエラーにより反転したフリップフロップに記憶されるビット値を訂正することができる。しかしながら、ＥＣＣ制御方式では、ソフトエラーの検出に時間が掛かり高速に検出できるソフトエラー訂正方法が実現されれず、動作速度の点で高速に動作することが望ましいＤＣＯには適用することは容易ではない。さらに、ＥＣＣ制御方式によりソフトエラーを検出する場合、特別なコードを付加するエンコード／デコード回路とそのコードを使用する検出回路が付加されるため、回路規模が大きくなり、ＤＣＯに実装することは容易ではない。
【００４２】
（実施形態に係る発振回路の概要）
実施形態に係る発振回路は、サーモメータコードで制御される発振器において、フリップフロップが記憶するサーモメータコードを示すビット値の中で、ソフトエラーにより反転したビット値を自動的に検出して訂正することを目的とする回路である。実施形態に係る発振回路は、サーモメータコードに含まれる対象ビットの対象ビット値と、対象ビットに隣接する隣接ビットの隣接ビット値に基づいて、対象ビット値が誤りであると判定したときに、対象ビット値を訂正する。
【００４３】
（実施形態に係る発振回路の概要）
図８（ａ）は実施形態に係る発振回路の動作の説明のための第１の図であり、図８（ｂ）は実施形態に係る発振回路の動作の説明のための第２の図である。
【００４４】
図８（ａ）に示すように、実施形態に係る発振回路は、サーモメータコードをビット値「１」が連続する区間、ビット値「０」が連続する区間、ビット値「０」と「１」との境界位置の３種類の領域に大別する。図８（ｂ）に示すように、実施形態に係る発振回路は、着目する対象ビット、対象ビットの１ビット上位の第１隣接ビット及び対象ビットの１ビット下位の第２隣接ビットの３ビットの区間毎に判定する。実施形態に係る発振回路は、判定した区間がビット値「１」が連続する区間である１連続領域、ビット値「０」が連続する区間である０連続領域、及びビット値「０」と「１」の境界位置である境界領域のいずれかであるかを判定する。
【００４５】
実施形態に係る発振回路は、判定した区間のビット値が「１１１」及び「１０１」であるとき、１連続領域であると判定する。実施形態に係る発振回路は、判定した区間のビット値が「１０１」であるとき、対象ビットのビット値「０」はソフトエラーによって「１」から「０」に反転したと判断して、対象ビットのビット値を「０」から「１」に訂正する。また、実施形態に係る発振回路は、判定した区間のビット値が「１１１」であるとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【００４６】
実施形態に係る発振回路は、判定した区間のビット値が「０００」及び「０１０」であるとき、０連続領域であると判定する。実施形態に係る発振回路は、判定した区間のビット値が「０１０」であるとき、対象ビットのビット値「１」はソフトエラーによって「０」から「１」に反転したと判断して、対象ビットのビット値を「１」から「０」に訂正する。また、実施形態に係る発振回路は、判定した区間のビット値が「０００」であるとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【００４７】
実施形態に係る発振回路は、判定した区間のビット値が「１１０」、「０１１」、「１００」及び「００１」であるとき、境界領域であると判定する。また、第１実施形態に係る発振回路は、判定した区間が境界領域であると判定したとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【００４８】
実施形態に係る発振回路は、図８を参照して説明された処理を実行する訂正回路を有する。すなわち、訂正回路は、サーモメータコードに含まれる対象ビットの対象ビット値、対象ビットに隣接する第１隣接ビットの第１隣接ビット値及び第２隣接ビットの第２隣接ビット値に基づいて、対象ビット値を訂正する。訂正回路は、対象ビット値を訂正したサーモメータコードを発振器に出力する。
【００４９】
（第１実施形態に係る発振回路の構成及び機能）
図９は、第１実施形態に係る発振回路の回路図である。
【００５０】
発振回路１は、発振器１０と、ＣＯＬＵＭＮ回路２０と、ＲＯＷ回路３０と、周波数比較回路４０とを有し、発振器１０から出力される発振信号をクロックとして出力する。発振器１０は、１０行３列に配置された３０個のリング発振器１１を有する。発振回路１は、完全デジタル位相同期回路（All Digital Phase-locked loop、ＡＤＰＬＬ）の発振回路であるＤＣＯである。発振器１０は、発振器９０１と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。
【００５１】
ＣＯＬＵＭＮ回路２０は、ＣＯＬＵＭＮシフト制御回路２１と、３個のフリップフロップを有するＣＯＬＵＭＮデータフリップフロップ２２と、第１ＣＯＬＵＭＮ訂正回路２３とを有する。ＣＯＬＵＭＮシフト制御回路２１及びＣＯＬＵＭＮデータフリップフロップ２２は、ＣＯＬＵＭＮシフト制御回路９２１及びＣＯＬＵＭＮデータフリップフロップ９２２と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。ＣＯＬＵＭＮシフト制御回路２１は、発振器１０から出力される発振信号を分周した分周周波数と基準クロックの基準周波数との比較結果に基づいて、サーモメータコードであるＣＯＬＵＭＮデータを生成する。ＣＯＬＵＭＮデータフリップフロップ２２は、ＣＯＬＵＭＮシフト制御回路２１によって生成されたＣＯＬＵＭＮデータを記憶する。第１ＣＯＬＵＭＮ訂正回路２３は、第１訂正回路２４をリング発振器１１の列の数と同一数である３個有する。
【００５２】
図１０（ａ）は第１ＣＯＬＵＭＮ訂正回路２３が有する第１訂正回路２４の内部回路図であり、図１０（ｂ）は第１訂正回路２４の真理値表であり、図１０（ｃ）は第１訂正回路２４の動作を説明するための図である。
【００５３】
第１訂正回路２４は、ＥＯＲ素子２５と、第１ＡＮＤ素子２６と、第２ＡＮＤ素子２７と、ＯＲ素子２８とを有する。ＥＯＲ素子２５は、対象ビットのビット値Ｆと対象ビットの１ビット上位の第１隣接ビットのビット値Ａとの排他的論理和を第２ＡＮＤ素子２７に出力する。第１ＡＮＤ素子２６は、対象ビットの１ビット上位の第１隣接ビットのビット値Ａと対象ビットの１ビット下位の第２隣接ビットのビット値Ｂとの論理積をＯＲ素子２８に出力する。第２ＡＮＤ素子２７は、対象ビットのビット値Ｆと、対象ビットのビット値Ｆと対象ビットの１ビット上位の第１隣接ビットのビット値Ａとの排他的論理和との論理積をＯＲ素子２８に出力する。ＯＲ素子２８は、第１ＡＮＤ素子２６の出力と、第２ＡＮＤ素子２７の出力との論理和を訂正済データＡＦとして出力する。
【００５４】
第１訂正回路２４は、対象ビットのビット値Ｆ、第１隣接ビットのビット値Ａ及び第２隣接ビットのビット値Ｂが何れも「０」であるときに、境界位置の可能性がないと判断して、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「０」とする。第１訂正回路２４は、対象ビットのビット値Ｆ、第１隣接ビットのビット値Ａが「１」であり且つ対象ビットのビット値Ｆ及び第２隣接ビットのビット値Ｂが「０」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Ｆを変更しない。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「０」とする。第１訂正回路２４は、対象ビットのビット値Ｆが「１」であり且つ第１隣接ビットのビット値Ａ及び第２隣接ビットのビット値Ｂが「０」であるときに、バブルパターンであると判断して、対象ビットのビット値Ｆを変更する。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａである「１」と反対の「０」とする。
【００５５】
第１訂正回路２４は、対象ビットのビット値Ｆ及び第１隣接ビットのビット値Ａが「１」であり且つ第２隣接ビットのビット値Ｂが「０」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Ｆを変更しない。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「１」とする。第１訂正回路２４は、対象ビットのビット値Ｆ及び第１隣接ビットのビット値Ａが「０」であり且つ第２隣接ビットのビット値Ｂが「１」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Ｆを変更しない。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「０」とする。第１訂正回路２４は、対象ビットのビット値Ｆが「０」であり且つ第１隣接ビットのビット値Ａ及び第２隣接ビットのビット値Ｂが「１」であるときに、バブルパターンであると判断して、対象ビットのビット値Ｆを変更する。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａである「０」と反対の「１」とする。
【００５６】
第１訂正回路２４は、対象ビットのビット値Ｆ及び第２隣接ビットのビット値Ｂが「１」であり且つ第１隣接ビットのビット値Ａが「０」であるときに、境界の可能性があると判断して、対象ビットのビット値Ｆを変更しない。すなわち、第１訂正回路２４は、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「１」とする。第１訂正回路２４は、対象ビットのビット値Ｆ、第１隣接ビットのビット値Ａ及び第２隣接ビットのビット値Ｂが何れも「１」であるときに、境界位置の可能性がないと判断して、訂正済データＡＦを第１隣接ビットのビット値Ａと同じ「１」とする。第１訂正回路２４は、対象ビット値Ｆが、第１隣接ビット値Ａ及び第２隣接ビット値Ｂの双方と一致しないときに、対象ビット値Ｆが第１隣接ビット値Ａ及び第２隣接ビット値Ｂに一致するように、対象ビット値Ｆを訂正する。
【００５７】
第１ＣＯＬＵＭＮ訂正回路２３は、最上位ビットから最下位ビットまで第１訂正回路２４から訂正済データＡＦを順次出力させてもよく、最下位ビットから最上位ビットまで第１訂正回路２４から訂正済データＡＦを順次出力させてもよい。また、第１ＣＯＬＵＭＮ訂正回路２３は、最下位ビットから最上位ビットまで第１訂正回路２４から訂正済データＡＦを同時に出力させてもよい。
【００５８】
ＲＯＷ回路３０は、ＲＯＷシフト制御回路３１と、１０個のフリップフロップを有するＲＯＷデータフリップフロップ３２と、第１ＲＯＷ訂正回路３３とを有する。ＲＯＷシフト制御回路３１及びＲＯＷデータフリップフロップ３２は、ＲＯＷシフト制御回路９３１及びＲＯＷデータフリップフロップ９３２と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。第１ＲＯＷ訂正回路３３は、第１訂正回路２４をリング発振器１１の行の数と同一数である１０個有する。
【００５９】
第１ＲＯＷ訂正回路３３は、最上位ビットから最下位ビットまで第１訂正回路２４から訂正済データＡＦを順次出力させてもよく、最下位ビットから最上位ビットまで第１訂正回路２４から訂正済データＡＦを順次出力させてもよい。また、第１ＲＯＷ訂正回路３３は、最下位ビットから最上位ビットまで第１訂正回路２４から訂正済データＡＦを同時に出力させてもよい。
【００６０】
周波数比較回路４０は、周波数比較回路９０４の構成及び機能と同様な機能及び機能を有するので、ここでは詳細な説明は省略する。
【００６１】
（第１実施形態に係る発振回路の動作）
図１１は、発振回路１の動作を示すフローチャートである。
【００６２】
まず、周波数比較回路４０は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して（Ｓ１０１）、比較結果に応じたＣＯＬＵＭＮシフト制御信号をＣＯＬＵＭＮシフト制御回路２１に出力する。周波数比較回路４０は、分周周波数が基準周波数よりも低かったとき、周波数を高くするために、発振するリング発振器１１が１つ増加することを示すＣＯＬＵＭＮシフト制御信号をＣＯＬＵＭＮシフト制御回路２１に出力する。周波数比較回路４０は、分周周波数が基準周波数よりも高かったとき、周波数を低くするために、発振するリング発振器１１が１つ減少することを示すＣＯＬＵＭＮシフト制御信号をＣＯＬＵＭＮシフト制御回路２１に出力する。
【００６３】
次いで、ＣＯＬＵＭＮシフト制御回路２１及びＲＯＷシフト制御回路３１は、入力されたＣＯＬＵＭＮシフト制御信号及びＲＯＷシフト制御信号に応じたＣＯＬＵＭＮデータ及びＲＯＷデータを生成する（Ｓ１０２）。ＣＯＬＵＭＮシフト制御回路２１は生成したＣＯＬＵＭＮデータをＣＯＬＵＭＮデータフリップフロップ２２に出力し、ＲＯＷシフト制御回路３１は生成したＲＯＷデータをＲＯＷデータフリップフロップ３２に出力する。
【００６４】
次いで、ＣＯＬＵＭＮデータフリップフロップ２２及びＲＯＷデータフリップフロップ３２は、入力されたＣＯＬＵＭＮデータ及びＲＯＷデータをそれぞれ記憶する（Ｓ１０３）。ＣＯＬＵＭＮデータフリップフロップ２２は記憶したＣＯＬＵＭＮデータを第１ＣＯＬＵＭＮ訂正回路２３に出力し、ＲＯＷデータフリップフロップ３２は記憶したＲＯＷデータを第１ＲＯＷ訂正回路３３に出力する。
【００６５】
次いで、第１ＣＯＬＵＭＮ訂正回路２３及び第１ＲＯＷ訂正回路３３は、入力されたＣＯＬＵＭＮデータ及びＲＯＷデータに含まれるソフトエラーを検出し、訂正する（Ｓ１０４）。第１ＣＯＬＵＭＮ訂正回路２３は訂正したＣＯＬＵＭＮデータを発振器１０及びにＣＯＬＵＭＮシフト制御回路２１に出力し、第１ＲＯＷ訂正回路３３は訂正したＲＯＷデータを発振器１０及びにＲＯＷシフト制御回路３１に出力する。
【００６６】
そして、発振器１０は、訂正したＣＯＬＵＭＮデータ及びＲＯＷデータに応じた数のリング発振器１１を発振する（Ｓ１０５）。以降、Ｓ１０１〜Ｓ１０５の処理が順次繰り返される。
【００６７】
（第１実施形態に係る発振回路の作用効果）
第１実施形態に係る発振回路は、サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーを、第１訂正回路のような小規模な回路で訂正することができる。
【００６８】
図１２は、第１実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。図１２に示すサーモメータコードのビット長は１３ビットであり、正常な状態では最下位ビットから第６ビットまでのデータ値が「１」であり、第７ビットから第１３ビットまでのビット値が「０」である。
【００６９】
図１２に示す第１の誤りパターンでは、第２ビットのビット値がソフトエラーにより「０」から「１」に反転している。図１２に示す第１の誤りパターンでは、第１実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値を正常なビット値に訂正している。図１２に示す第２の誤りパターンでは、第１０ビットのビット値がソフトエラーにより「１」から「０」に反転している。図１２に示す第２の誤りパターンでは、第１実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値を正常なビット値に訂正している。第１実施形態に係る発振回路は、第１及び第２の誤りパターンのように、サーモメータコードのビット値「０」と「１」との間の境界位置から３ビット以上離れたビットで発生したソフトエラーを正常なビット値に訂正することができる。
【００７０】
図１２に示す第３の誤りパターンでは、第５ビットのビット値がソフトエラーにより「０」から「１」に反転している。図１２に示す第３の誤りパターンでは、第１実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値の１ビット下位のビットのビット値に訂正している。図１２に示す第３の誤りパターンでは、第１実施形態に係る発振回路は、サーモメータコードのビット値「０」と「１」との間の境界位置が１ビット下位にシフトするように訂正する。図１２に示す第４の誤りパターンでは、第１実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値の１ビット上位のビットのビット値に訂正している。図１２に示す第４の誤りパターンでは、第１実施形態に係る発振回路は、サーモメータコードのビット値「０」と「１」との間の境界位置が１ビット上位にシフトするように訂正する。第１実施形態に係る発振回路は、第３及び第４の誤りパターンのように、サーモメータコードのビット値「０」と「１」との間の境界位置から１ビット離れたビットで発生したソフトエラーを、サーモメータコードの境界位置を１ビットシフトして訂正する。しかしながら、第１実施形態に係る発振回路は、第３及び第４の誤りパターンで発生したバブルバターンを解消することができるので、第１実施形態に係る発振回路がＤＣＯとして動作することで、サーモメータコードの境界位置を自動的に修正できる。
【００７１】
図１２に示す第５の誤りパターンでは、第６ビットのビット値がソフトエラーにより「０」から「１」に反転している。図１２に示す第５の誤りパターンでは、第１実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することはない。図１２に示す第６の誤りパターンでは、第７ビットのビット値がソフトエラーにより「１」から「０」に反転している。図１２に示す第６の誤りパターンでは、第１実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することはない。第１実施形態に係る発振回路は、第５及び第６の誤りパターンで発生した場合、ソフトエラーの訂正処理を実行することはない。しかしながら、第１実施形態に係る発振回路は、第５及び第６の誤りパターンではバブルバターンは発生していないので、第１実施形態に係る発振回路がＤＣＯとして動作することで、サーモメータコードの境界位置を自動的に修正できる。
【００７２】
（第２実施形態に係る発振回路の構成及び機能）
図１３は、第２実施形態に係る発振回路の回路図である。
【００７３】
発振回路２は、ＣＯＬＵＭＮ回路５０及びＲＯＷ回路６０をＣＯＬＵＭＮ回路２０及びＲＯＷ回路３０の代わりに有することが発振回路１と相違する。ＣＯＬＵＭＮ回路５０及びＲＯＷ回路６０以外の発振回路２の構成素子の構成及び機能は、同一符号が付された発振回路１の構成要素の構成及び機能と同様なので、ここでは詳細な説明は省略する。
【００７４】
ＣＯＬＵＭＮ回路５０は、ＣＯＬＵＭＮシフト制御回路５１と、ＣＯＬＵＭＮデータフリップフロップ５２と、第１ＣＯＬＵＭＮ訂正回路５３と、境界ビット生成回路５４と、境界データフリップフロップ５５と、第２ＣＯＬＵＭＮ訂正回路５６を有する。ＣＯＬＵＭＮシフト制御回路５１〜第１ＣＯＬＵＭＮ訂正回路５３は、ＣＯＬＵＭＮシフト制御回路２１〜第１ＣＯＬＵＭＮ訂正回路２３と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。
【００７５】
境界ビット生成回路５４は、サーモメータコードのビット値「０」と「１」との間の境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成する。
【００７６】
図１４は、ビット数が３である境界ビット生成回路５４を、ビット数がＮであると一般化したときの境界ビット生成回路５４０の回路図である。境界ビット生成回路５４０では、ビット数ｎは偶数である。
【００７７】
境界ビット生成回路５４０は、（ｎ／２）個のＥＯＲ素子５４１と、ＯＲ素子５４２とを有する。（ｎ／２）個のＥＯＲ素子５４１のそれぞれは、一方の入力端子に奇数ビットのビット値が入力され且つ他方の入力端子に隣接する偶数ビットのビット値が入力される。具体的には、第１のＥＯＲ素子５４１は、一方の入力端子に最下位ビットのビット値が入力され且つ他方の入力端子に最下位ビットに隣接する第２ビットのビット値が入力される。また、第２のＥＯＲ素子５４１は、一方の入力端子に第３ビットのビット値が入力され且つ他方の入力端子に第３ビットに隣接する第４ビットのビット値が入力される。以降、ｍを偶数として、ＥＯＲ素子５４１は、一方の入力端子に第（ｍ−１）ビットのビット値が入力され且つ他方の入力端子に第（ｍ−１）ビットに隣接する第ｍビットのビット値が入力される。なお、ｎが奇数の場合、一方に最上位ビットのビット値が入力され、且つ他方は仮想的に最下位ビットの値を反転した値を第（ｎ＋１）ビットのビット値としてＥＯＲ素子５４１の入力端子に入力し、最下位ビットから第（ｎ＋１）ビットのビット値が何れかのＥＯＲ素子５４１の入力端子に入力される。
【００７８】
ＯＲ素子５４２は、（ｎ／２）個のＥＯＲ素子５４１の出力端子が接続され、（ｎ／２）個のＥＯＲ素子５４１の出力信号に応じた境界情報を出力する。ＯＲ素子５４２は、（ｎ／２）個のＥＯＲ素子５４１の出力信号の何れか１つが「１」であるとき、すなわちサーモメータコードの境界位置が奇数であるときにビット値「１」を示す境界情報を出力する。また、ＯＲ素子５４２は、（ｎ／２）個のＥＯＲ素子５４１の出力信号の何れもが「０」であるとき、すなわちサーモメータコードの境界位置が偶数であるときにビット値「０」を示す境界情報を出力する。
【００７９】
境界データフリップフロップ５５は、境界ビット生成回路５４から出力される境界情報を記憶し、記憶した境界情報を第２ＣＯＬＵＭＮ訂正回路５６に出力する。境界ビット生成回路５４及び境界データフリップフロップ５５は、ＣＯＬＵＭＮデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。境界ビット生成回路５４及び境界データフリップフロップ５５は、境界情報生成回路を形成する。
【００８０】
第２ＣＯＬＵＭＮ訂正回路５６は、第２訂正回路７０を３個有する。第２ＣＯＬＵＭＮ訂正回路５６は、境界情報に対応する境界判定ビット値に基づいて、サーモメータコードの境界位置を下位ビット方向にシフトする。
【００８１】
図１５（ａ）は第２訂正回路７０の内部回路図であり、図１５（ｂ）は第２訂正回路７０の動作を説明するための図である。
【００８２】
第２訂正回路７０は、第１ＡＮＤ素子７１と、第１ＥＯＲ素子７２と、第２ＥＯＲ素子７３と、第２ＡＮＤ素子７４と、ＯＲ素子７５とを有する。第１ＡＮＤ素子７１は、第１ＣＯＬＵＭＮ訂正回路５３によって訂正された対象ビット及び対象ビットの１ビット上位の第１隣接ビットのビット値（訂正Ｆ及び訂正Ａ）の論理積を出力する。第１ＥＯＲ素子７２は、第１ＣＯＬＵＭＮ訂正回路５３によって訂正された対象ビット及び対象ビットの１ビット上位の第１隣接ビットのビット値（訂正Ｆ及び訂正Ａ）の排他的論理和を出力する。第１ＣＯＬＵＭＮ訂正回路５３によって訂正された第１隣接ビット（訂正Ａ）と、第２ＣＯＬＵＭＮ訂正回路５６から入力される境界情報に対応する境界判定ビット値（Ｋ）との排他的論理和を出力する。第２ＡＮＤ素子７４は、第１ＥＯＲ素子７２及び第２ＥＯＲ素子７３の出力信号に対応するビット値の論理積を出力する。ＯＲ素子７５は、第１ＡＮＤ素子７１及び第２ＡＮＤ素子７４の出力信号の論理和を訂正済データ（ＳＦ）として出力する。
【００８３】
第２訂正回路７０は、訂正された対象ビット及び第１隣接ビットのビット値（訂正Ｆ及び訂正Ａ）が同一のとき、境界位置がないと判断して、対象ビットのビット値を訂正しない。また、第２訂正回路７０は、訂正された対象ビット及び第１隣接ビットのビット値（訂正Ｆ及び訂正Ａ）が相違し且つ境界情報に対応する境界判定ビット値（Ｋ）が「１」のとき、境界位置があると判断して対象ビットのビット値を訂正しない。一方、第２訂正回路７０は、訂正された対象ビット及び第１隣接ビットのビット値（訂正Ｆ及び訂正Ａ）が相違し且つ境界情報に対応する境界判定ビット値（Ｋ）が「０」のとき、対象ビットのビット値を訂正する。
【００８４】
ＲＯＷ回路６０は、ＲＯＷシフト制御回路６１と、ＲＯＷデータフリップフロップ６２と、第１ＲＯＷ訂正回路６３と、境界ビット生成回路６４と、境界データフリップフロップ６５と、第２ＲＯＷ訂正回路６６を有する。ＲＯＷシフト制御回路６１〜第１ＲＯＷ訂正回路６３は、ＲＯＷシフト制御回路３１〜第１ＲＯＷ訂正回路３３と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。また、境界ビット生成回路６４及び境界データフリップフロップ６５は、境界ビット生成回路５４及び境界データフリップフロップ５５と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。第２ＲＯＷ訂正回路６６は、第２訂正回路７０をリング発振器１１の行の数と同一数である１０個有する。
【００８５】
（第２実施形態に係る発振回路の動作）
図１６は、発振回路２の動作を示すフローチャートである。
【００８６】
まず、周波数比較回路４０は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して（Ｓ２０１）、比較結果に応じたＣＯＬＵＭＮシフト制御信号をＣＯＬＵＭＮシフト制御回路５１に出力する。次いで、ＣＯＬＵＭＮシフト制御回路５１及びＲＯＷシフト制御回路６１は、入力されたＣＯＬＵＭＮシフト制御信号及びＲＯＷシフト制御信号に応じたＣＯＬＵＭＮデータ及びＲＯＷデータを生成する（Ｓ２０２）。次いで、ＣＯＬＵＭＮデータフリップフロップ５２及びＲＯＷデータフリップフロップ６２は、入力されたＣＯＬＵＭＮデータ及びＲＯＷデータをそれぞれ記憶する（Ｓ２０３）。
【００８７】
次いで、境界情報生成回路は、ＣＯＬＵＭＮデータ及びＲＯＷデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する（Ｓ２０４）。具体的には、境界ビット生成回路５４及び境界データフリップフロップ５５は、ＣＯＬＵＭＮデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。また、境界ビット生成回路６４及び境界データフリップフロップ６５は、ＲＯＷデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。
【００８８】
次いで、第１ＣＯＬＵＭＮ訂正回路５３及び第１ＲＯＷ訂正回路６３は、入力されたＣＯＬＵＭＮデータ及びＲＯＷデータに含まれるソフトエラーを検出し、訂正する（Ｓ２０５）。次いで、第２ＣＯＬＵＭＮ訂正回路５６及び第２ＲＯＷ訂正回路６６は、境界情報及び訂正されたＣＯＬＵＭＮデータ及びＲＯＷデータに基づいて、サーモメータコードの境界位置を下位ビット方向にシフトする（Ｓ２０６）。
【００８９】
そして、発振器１０は、訂正したＣＯＬＵＭＮデータ及びＲＯＷデータに応じた数のリング発振器１１を発振する（Ｓ２０７）。以降、Ｓ２０１〜Ｓ２０７の処理が順次繰り返される。
【００９０】
（第２実施形態に係る発振回路の作用効果）
第２実施形態に係る発振回路は、ソフトエラーの訂正により上位ビット側にシフトしたサーモメータコードの境界位置を下位ビット側にシフトすることができる。第２実施形態に係る発振回路は、サーモメータコードの境界位置を下位ビット側にシフトすることで、第２実施形態に係る発振回路から出力されるクロックを使用して動作する回路の動作速度が高速になり動作エラーを生じることを防止することができる。
【００９１】
図１７は、第２実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。図１７に示すサーモメータコードのビット長は１３ビットであり、正常な状態では最下位ビットから第６ビットまでのデータ値が「１」であり、第７ビットから第１３ビットまでのビット値が「０」である。図１７に示す第１誤りパターン〜第６誤りパターンのそれぞれは、図１２に示す第１誤りパターン〜第６誤りパターンと同一のエラーである。図１７に示す第１の誤りパターン及び第２の誤りパターンでの第２実施形態に係る発振回路の動作は、第１実施形態に係る発振回路の動作と同様なので、ここでは詳細な説明は省略する。
【００９２】
図１７に示す第３の誤りパターンでは、第２実施形態に係る発振回路は、発生したソフトエラーの訂正により１ビット下位にシフトしたサーモメータコードの境界位置を更に１ビット下位にシフトしている。図１７に示す第４の誤りパターンでは、第２実施形態に係る発振回路は、発生したソフトエラーの訂正により１ビット上位にシフトしたサーモメータコードの境界位置を更に１ビット下位にシフトしている。第２実施形態に係る発振回路は、第３及び第４の誤りパターンのように、サーモメータコードの境界位置から１ビット離れたビットで発生したソフトエラーを、サーモメータコードの境界位置が上位側にシフトしないように訂正することができる。
【００９３】
図１７に示す第５の誤りパターン及び第６の誤りパターンでは、第２実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することなく、サーモメータコードの境界位置を１ビット下位にシフトしている。第２実施形態に係る発振回路は、第５及び第６の誤りパターンで発生した場合、サーモメータコードの境界位置が上位側にシフトしないように訂正することができる。
【００９４】
（実施形態の変形例）
発振回路１及び２は、アレイ状に配置されたリング発振器の発振を制御するために、ＣＯＬＵＭＮ回路及びＲＯＷ回路を有するが、実施形態に係る発振回路は、行方向及び列方向の何れか一方向に延伸するように配列されたリング発振器を発振させてもよい。一方向に延伸するように配列されたリング発振器を発振させるとき、実施形態に係る発振回路は、ＣＯＬＵＭＮ回路及びＲＯＷ回路に何れか一方のみを有する構成にすることができる。また、発振回路１及び２は、リング発振器を使用して発振信号を生成するが、実施形態に係る発振回路は、発振信号が生成可能な発振回路を有すればよい。また、発振回路１及び２は、サーモメータコードを使用して発振するリング発振器の数を制御するが、実施形態では、リング発振器以外の電子回路を制御する構成としてもよい。
【００９５】
また、発振回路２は、ＣＯＬＵＭＮデータ及びＲＯＷデータにおいてサーモメータコードの境界位置を下位ビット方向にシフトするが、実施形態に係る発振回路は、サーモメータコードの境界位置を上位ビット方向にシフトしてもよい。
【００９６】
図１８（ａ）は第２訂正回路７０の変形例の内部回路図であり、図１８（ｂ）は図１７（ａ）に示す第２訂正回路の動作を説明するための図である。実施形態に係る発振回路は、第２訂正回路７０の代わりに図１８（ａ）に示す第２訂正回路を配置することにより、サーモメータコードの境界位置を上位ビット方向にシフトすることができる。
【００９７】
第２訂正回路８０は、第１ＡＮＤ素子８１と、第１ＥＯＲ素子８２と、第２ＥＯＲ素子８３と、第２ＡＮＤ素子８４と、ＯＲ素子８５とを有する。第１ＡＮＤ素子８１〜ＯＲ素子８５は、対象ビットの１ビット上位の第１隣接ビットのビット値の代わりに対象ビットの１ビット下位の第２隣接ビットのビット値が入力されることが、第１ＡＮＤ素子７１〜ＯＲ素子７５と相違する。第２隣接ビットのビット値が入力されること以外は、第１ＡＮＤ素子８１〜ＯＲ素子８５の構成及び機能は、第１ＡＮＤ素子７１〜ＯＲ素子７５の構成及び機能と同様なので、ここでは詳細な説明は省略する。
【００９８】
図１９は、第２実施形態に係る発振回路の変形例によるソフトエラーの訂正処理の処理結果の一例を示す図である。図１９に示すサーモメータコードのビット長は１３ビットであり、正常な状態では最下位ビットから第６ビットまでのデータ値が「１」であり、第７ビットから第１３ビットまでのビット値が「０」である。図１９に示す第１誤りパターン〜第６誤りパターンのそれぞれは、図１２に示す第１誤りパターン〜第６誤りパターンと同一のエラーである。図１９に示す第１の誤りパターン〜第６の誤りパターンでの動作は、サーモメータコードの境界位置が上位ビット方向にシフトすること以外は、第２実施形態に係る発振回路の動作と同様なので、ここでは詳細な説明は省略する。
【００９９】
また、説明された第１訂正回路２４及び第２訂正回路等の内部回路は、これらの内部回路の一例を示すものであり、これらの回路構成に限定して解釈されるものではない。また、これらの内部回路の構成は、実施形態の変形例に応じて変更されてもよい。
【符号の説明】
【０１００】
１、２    発振回路
１０    発振器
１１    リング発振器
２０、５０    ＣＯＬＵＭＮ回路
２１、５１    ＣＯＬＵＭＮシフト制御回路（制御回路）
２２、５２    ＣＯＬＵＭＮデータフリップフロップ（記憶回路）
２３、５３    第１ＣＯＬＵＭＮ訂正回路（第１訂正回路）
３０、６０    ＲＯＷ回路
３１、６１    ＲＯＷシフト制御回路（制御回路）
３２、６２    ＲＯＷデータフリップフロップ（記憶回路）
３３、６３    第１ＲＯＷ訂正回路（第１訂正回路）
５４、６４    境界ビット生成回路
５５、６５    境界データフリップフロップ
５６    第２ＣＯＬＵＭＮ訂正回路（第２訂正回路）
６６    第２ＲＯＷ訂正回路
【図１】
2018125724.tif 000003
【図２】
2018125724.tif 000004
【図３】
2018125724.tif 000005
【図４】
2018125724.tif 000006
【図５】
2018125724.tif 000007
【図６】
2018125724.tif 000008
【図７】
2018125724.tif 000009
【図８】
2018125724.tif 000010
【図９】
2018125724.tif 000011
【図１０】
2018125724.tif 000012
【図１１】
2018125724.tif 000013
【図１２】
2018125724.tif 000014
【図１３】
2018125724.tif 000015
【図１４】
2018125724.tif 000016
【図１５】
2018125724.tif 000017
【図１６】
2018125724.tif 000018
【図１７】
2018125724.tif 000019
【図１８】
2018125724.tif 000020
【図１９】
2018125724.tif 000021