(58)【調査した分野】(Int.Cl.,DB名)
発振器から出力される発振信号の発振周波数と所定の基準周波数との比較結果に基づいて、複数のビット値において連続する0又は1のビット値により数値が表現され、前記発振周波数を制御するサーモメータコードを記憶する記憶回路を有する発振器の制御方法において、
記憶されたサーモメータコードにそれぞれ含まれる、各ビット値と、各ビットに隣接する第1隣接ビットの第1隣接ビット値と、各ビットに隣接する第2隣接ビットの第2隣接ビット値に基づいて、ビット値の訂正が必要な場合、各ビット値が、前記第1隣接ビット値及び前記第2隣接ビット値の双方と一致しない場合、当該ビット値が前記第1隣接ビット値及び前記第2隣接ビット値に一致するように、前記訂正が必要なビット値を訂正し、
訂正が必要なビット値を訂正した訂正済サーモメータコードを前記発振器に出力する、
発振回路の制御方法。
【発明を実施するための形態】
【0009】
以下図面を参照して、実施形態に係る発振回路の制御方法及びサーモコード訂正回路について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【0010】
(実施形態に係る発振回路に関連する発振回路)
実施形態に係る実施形態に係る発振回路及び発振回路の制御方法について説明する前に、実施形態に係る発振回路に関連する発振回路及び発振回路の制御方法について説明する。
【0011】
図1(a)は関連する発振回路の回路図であり、
図1(b)は
図1(a)の発振回路の制御に使用されるサーモメータコードを説明するための図である。ここで、サーモメータコードとは、複数のビット値で表現され、複数のビット値において連続する0又は1の個数により、数値を表現する一種の数値表現形式である。言い換えると、サーモメータコードは、特定のビットを境に上位ビットと下位ビットとの間で、異なる値を示す。
【0012】
発振回路900は、発振器901と、COLUMN回路902と、ROW回路903と、周波数比較回路904とを有し、発振器901から出力される発振信号をクロックとして出力する。発振器901は、10行3列に配置された30個のリング発振器910を有する。30個のリング発振器910のそれぞれは、
図1(a)においては3段で示される複数段の直列接続されたインバータを有し、不図示の接続配線を介して互いに接続される。30個のリング発振器910は互いに接続されるため、発振するリング発振器910の数が増加するに従って、リング発振器910が出力する発振信号の発振周波数は高くなる。また、発振するリング発振器910の数が減少するに従って、リング発振器910が出力する発振信号の発振周波数は低くなる。なお、リング発振器910のそれぞれは、3段でなくても、奇数段のインバータが直列接続されていれば良い。
【0013】
図2(a)は発振器901の部分内部回路であり、
図2(b)は奇数行に配置されるリング発振器910の初段のインバータの内部回路図であり、
図2(c)は偶数行に配置されるリング発振器910の初段のインバータの内部回路図である。
【0014】
30個のリング発振器910のそれぞれは、最終段である3段目のインバータの出力端子が互いに接続されると共に、出力端子OUTに接続される。リング発振器910は、発振しているときは発振器として機能し、発振を停止しているときは負荷として機能する。発振しているリング発振器910の数が増加して発振器として機能するリング発振器910の数が増加し且つ負荷として機能するリング発振器910の数が減少することで、発振器901の周波数は高くなる。一方、発振しているリング発振器910の数が減少して発振器として機能するリング発振器910の数が減少し且つ負荷として機能するリング発振器910の数が増加することで、発振器901の周波数は低くなる。
【0015】
奇数行に配置されるリング発振器910は、初段に第1スイッチ付インバータ911が配置される。第1スイッチ付インバータ911は、一対の論理トランジスタ913及び914と、一対の制御トランジスタ915及び916と、OR素子917と、AND素子918とを有する。
【0016】
一対の論理トランジスタ913及び914は、一対の論理トランジスタ913及び914の双方がオンしているときに、3段目のインバータから出力される信号を反転して2段目のインバータに入力する。
【0017】
一対の制御トランジスタ915及び916は、OR素子917から入力される信号に対応する信号値が「0」であるときに同時にオフし、OR素子917から入力される信号に対応する信号値が「1」であるときに同時にオンする。
【0018】
OR素子917の一方の入力端子には(i+1)行を選択することを示す(i+1)行選択信号が入力され、OR素子917の他方の入力端子にはAND素子918の出力信号が入力される。AND素子918の一方の入力端子にはi行を選択することを示すi行選択信号が入力され、AND素子918の他方の入力端子にはj列を選択することを示すj列選択信号が入力される。
【0019】
第1行及び第9行等の奇数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「0」であり且つ(i+1)行選択信号に対応する信号値が「0」であるときにオフする。奇数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であるときに、j列選択信号に対応する信号値に応じてオンオフする。奇数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であり且つj列選択信号に対応する信号値が「0」のときオフする。奇数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であり且つj列選択信号に対応する信号値が「1」のときオンする。奇数行であるi行に配置されるリング発振器910は、(i+1)行選択信号に対応する信号値が「1」であるときにオンする。
【0020】
第8行等の偶数行に配置されるリング発振器910は、初段に第2スイッチ付インバータ912が配置される。第1スイッチ付インバータ911は、j列選択信号が入力され且つAND素子918の他方の入力端子に出力端子が接続されインバータ919を有することが第1スイッチ付インバータ911と相違する。
【0021】
偶数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「0」であり且つ(i+1)行選択信号に対応する信号値が「0」であるときにオフする。偶数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であるときに、j列選択信号に対応する信号値に応じてオンオフする。偶数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であり且つj列選択信号に対応する信号値が「1」のときオフする。偶数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であり、(i+1)行選択信号に対応する信号値が「0」であり且つj列選択信号に対応する信号値が「0」のときオンする。偶数行であるi行に配置されるリング発振器910は、i行選択信号に対応する信号値が「1」であるときにオンする。
【0022】
COLUMN回路902は、COLUMNシフト制御回路921と、3個のフリップフロップを有するCOLUMNデータフリップフロップ922とを有し、3行に配置されるリング発振器を選択するCOLUMNデータを出力する。COLUMN回路902は、周波数比較回路904から入力されるCOLUMNシフト制御信号に基づいて、発振するリング発振器910を選択するためにCOLUMNデータを生成する。COLUMNシフト制御回路921は、COLUMNシフト制御信号に応じたサーモメータコードをCOLUMNデータとして生成し、生成したCOLUMNデータをCOLUMNデータフリップフロップ922に出力する。COLUMNシフト制御回路921は、サーモメータコードのビット値「0」と「1」との間の境界位置が最下位ビット又は最上位ビットから第2ビットにシフトするとき、COLMUNデータのみをシフトする。すなわち、COLUMNシフト制御回路921は、サーモメータコードの境界位置が最下位ビット又は最上位ビットから中間ビットにシフトするとき、COLMUNデータのみをシフトする。一方、COLUMNシフト制御回路921は、サーモメータコードの境界位置が中間ビットから最下位ビット又は最上位ビットにシフトするとき、「ON」及び「OFF」を示すビット値を反転する。また、COLUMN回路902は、サーモメータコードの境界位置が行方向に亘ってシフトするとき、COLMUNデータをシフトすると共に、行の増加又は減少を示すROWシフト制御信号をROW回路903に出力する。COLUMNデータフリップフロップ922は、COLUMNシフト制御回路921から入力されたCOLMUNデータを記憶すると共に、記憶したCOLMUNデータを発振器901に出力する。
【0023】
ROW回路903は、ROWシフト制御回路931と、10個のフリップフロップを有するROWデータフリップフロップ932とを有し、10列に配置されるリング発振器を選択するROWデータを出力する。ROW回路903は、COLUMN回路902から入力されるROWシフト制御信号に基づいて、発振するリング発振器910を選択するためにROWデータを生成する。ROWシフト制御回路931は、入力されたROWシフト制御信号に応じたサーモメータコードをROWデータとしてROWデータフリップフロップ932に出力する。ROWデータフリップフロップ932は、ROWシフト制御回路931から入力されたROWデータを記憶すると共に、記憶したROWデータを発振器901に出力する。
【0024】
COLUMNデータ及びROWデータのそれぞれは、発振するリング発振器を決定するためのサーモメータコードを示す。
図1(b)に示す例では、最下位ビットから8ビットまでの間がリング発振器910を「ON」して発振させることを示すビット値であり、9ビットから最上位ビットまでの間がリング発振器910を「OFF」して発振させないことを示すビット値である。COLUMNデータ及びROWデータは、ビット値が「0」のとき「ON」を示し且つビット値が「1」のとき「OFF」を示してもよく、ビット値が「1」のとき「ON」を示し且つビット値が「0」のとき「OFF」を示してもよい。COLUMNデータ及びROWデータは、全てのリング発振器910を「ON」することを示す状態、及び全てのリング発振器910を「OFF」することを示す状態にシフトするときに、ビット値と「ON」及び「OFF」との対応関係を反転させてもよい。例えば、COLUMNシフト制御回路921は、ビット値「0」が「ON」を示す状態で、全てのリング発振器910を「ON」することを示す状態にシフトするときに、ビット値「1」が「ON」を示すように対応関係を反転させる。また、COLUMNシフト制御回路921は、ビット値「1」が「ON」を示す状態で、全てのリング発振器910を「ON」することを示す状態にシフトするときに、ビット値「0」が「ON」を示すように対応関係を反転させる。同様に、COLUMNシフト制御回路921は、ビット値「0」が「ON」を示す状態で、全てのリング発振器910を「OFF」することを示す状態にシフトするときに、ビット値「1」が「ON」を示すように対応関係を反転させる。また、COLUMNシフト制御回路921は、ビット値「1」が「ON」を示す状態で、全てのリング発振器910を「OFF」することを示す状態にシフトするときに、ビット値「0」が「ON」を示すように対応関係を反転させる。すなわち、COLUMNシフト制御回路921は、サーモメータコードの境界位置を第2ビットから最下位ビット又は最上位ビットにシフトするとき、「ON」及び「OFF」を示すビット値を反転する。
【0025】
周波数比較回路904は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して、発振信号の発振周波数を制御する。周波数比較回路904は、分周周波数が基準周波数よりも低かったとき、周波数を高くするために、発振するリング発振器910が1つ増加することを示すCOLUMNシフト制御信号を出力する。周波数比較回路904は、分周周波数が基準周波数よりも高かったとき、周波数を低くするために、発振するリング発振器910が1つ減少することを示すCOLUMNシフト制御信号を出力する。
【0026】
図3は、サーモメータコードを使用した発振周波数制御を説明するための図であり、
図3(a)は現在のリング発振器910の発振状態を示す図である。
図3(b)は現在の分周周波数が基準クロックの基準周波数よりも高いときの発振回路900による制御後のリング発振器910の発振状態を示す図である。
図3(c)は現在の分周周波数が基準クロックの基準周波数よりも低いときの発振回路900による制御後のリング発振器910の発振状態を示す図である。
図3(d)は
図3(c)の状態における分周周波数が基準クロックの基準周波数よりも低いときの発振回路900による制御後のリング発振器910の発振状態を示す図である。
【0027】
図3(a)において、COLUMNデータは、最下位ビット及び第2ビットのビット値が「ON」を示し、最上位ビットのビット値が「OFF」を示す。また、ROWデータは、最下位ビットから第7ビットまでのビット値が「ON」を示し、第8ビットから最上位ビットまでのビット値が「OFF」を示す。
図3(a)において、ROWデータのビット値が「ON」を示す第1行から第7行までのリング発振器910と、第8行のCOLUMNデータのビット値が「ON」を示す第1列から第2列までのリング発振器910とが「ON」する。
図3(a)において、23個のリング発振器910とが「ON」する。
【0028】
現在の発振周波数が基準クロックの基準周波数よりも高いとき、周波数比較回路904は、発振するリング発振器910の数を1つ減少させることを示すCOLUMNシフト制御信号をCOLUMNシフト制御回路21にを出力する。COLUMNシフト制御回路21は、発振するリング発振器910の数を1つ減少させることを示すCOLUMNシフト制御信号が入力されると、ビット値が「ON」を示すビットを1つ減少させたCOLUMNデータを生成する。すなわち、COLUMNシフト制御回路21は、最下位ビットのビット値が「ON」を示し、第2ビット及び最上位ビットのビット値が「OFF」を示すCOLUMNデータを生成する。COLUMNシフト制御回路21は、生成したCOLUMNデータをCOLUMNデータフリップフロップ922に出力する。COLUMNデータフリップフロップ922は、入力されたCOLUMNデータを記憶すると共に、発振器901に出力する。発振器901にビット値が「ON」を示すビットを1つ減少させたCOLUMNデータが入力されることで、
図3(b)に示すように、発振するリング発振器910の数が1つ減少して22個になる。
【0029】
現在の発振周波数が基準クロックの基準周波数よりも低いとき、周波数比較回路904は、発振するリング発振器910の数を1つ増加させることを示すCOLUMNシフト制御信号を出力する。COLUMNシフト制御回路21は、発振するリング発振器910の数を1つ増加させることを示すCOLUMNシフト制御信号が入力されると、ビット値が「ON」を示すビットを1つ増加させたCOLUMNデータを生成出力する。すなわち、COLUMNシフト制御回路21は、最下位ビットから最上位ビットまでのビット値が「ON」を示すCOLUMNデータを生成する。COLUMNシフト制御回路21は、生成したCOLUMNデータをCOLUMNデータフリップフロップ922に出力する。COLUMNデータフリップフロップ922は、入力されたCOLUMNデータを記憶すると共に、発振器901に出力する。発振器901にビット値が「ON」を示すビットを1つ増加させたCOLUMNデータが入力されることで、
図3(c)に示すように、発振するリング発振器910の数が1つ増加して24個になる。
【0030】
図3(c)の状態における発振周波数が基準クロックの基準周波数よりも低いとき、周波数比較回路904は、発振するリング発振器910の数を更に1つ増加させることを示すCOLUMNシフト制御信号を出力する。COLUMNシフト制御回路21は、発振するリング発振器910の数を1つ増加させることを示すCOLUMNシフト制御信号が入力されると、ビット値が「ON」を示すビットを1つ増加させることを示すROWシフト制御信号を生成する。COLUMNシフト制御回路21は、生成したROWシフト制御信号をROWシフト制御回路931に出力する。ROWシフト制御回路931は、ビット値が「ON」を示すビットを1つ増加させることを示すROWシフト制御信号が入力されると、ビット値が「ON」を示すビットを1つ増加させたROWデータを生成する。すなわち、ROWシフト制御回路931は、最下位ビットから第8ビットまでのビット値が「ON」を示し、第9ビットから最上位ビットまでのビット値が「OFF」を示すROWデータを生成する。ROWシフト制御回路931は、生成したROWデータをROWデータフリップフロップ932に出力する。ROWデータフリップフロップ932は、入力されたROWデータを記憶すると共に、発振器901に出力する。発振器901にビット値が「ON」を示すビットを1つ増加させたROWデータが入力されることで、
図3(d)に示すように、発振するリング発振器910の数が1つ増加して25個になる。
【0031】
他方、半導体素子で形成されるフリッププロップでは、ソフトエラーの発生が問題になっている。ソフトエラーは、外部からのα線や中性子線が回路周辺にあたることで値が反転してしまうエラーである。発振回路900では、COLUMNデータフリップフロップ922及びROWデータフリップフロップ932に含まれるフリップフロップでソフトエラーが発生した場合、発生したソフトエラーは訂正されることはない。フリップフロップでソフトエラーが発生すると、「010」及び「101」という通常のサーモメータコードでは発生しないイレギュラーなパターンが発生する。ここでは、「010」及び「101」等のビット列に含まれるビット値が第1ビット値から第1ビット値と相違する第2ビット値に遷移した後に第1ビットに戻る通常のサーモメータコードでは発生しないイレギュラーなパターンをバブルパターンと称する。
【0032】
発振回路900においてバブルパターンが発生すると、発生したバブルパターンは、検出されることはないため、訂正されない。発振回路900では、発生したバブルパターンは、COLUMNデータ及びROWデータがリセットされるまで訂正されることなくCOLUMNデータ及びROWデータに含まれる。
【0033】
図4(a)はROWデータにバブルパターンが発生した一例を示す図であり、
図4(b)は
図4(a)の状態における行選択信号及び列選択信号の信号値を示す図である。
図4(b)において、実線で示される信号線は印加される行選択信号又は列選択信号が選択状態であることを示し、破線で示される信号線は印加される行選択信号又は列選択信号が非選択状態であることを示す。
【0034】
図4に示す例では、COLUMNデータに対応するサーモメータコードは最下位ビット及び第2ビットのビット値が「ON」を示し、最上位ビットのビット値が「OFF」を示す。また、ROWデータに対応するサーモメータコードは最下位ビットから第4ビットまでのビット値が「ON」を示し、第5ビットから最上位ビットまでのビット値が「OFF」を示す。ROWデータに対応するサーモメータコードの第8ビットのビット値は、ソフトエラーにより「ON」から「OFF」に反転している。ROWデータに対応するサーモメータコードの第8ビットのビット値が反転することで、発振回路900は、本来は「OFF」である5個のリング発振器910が「ON」する。本来は「OFF」である5個のリング発振器910が「ON」することで、発振信号の発振周波数は、所望の発振周波数よりも高くなり、発振信号をクロックとして使用する不図示の論理回路において誤動作が発生するおそれがある。
【0035】
図5〜7は、COLUMNデータにバブルパターンが発生した一例を示す図である。
図5(a)はCOLUMNデータにバブルパターンが発生した第1の状態を示し、
図5(b)は
図5(a)の状態における行選択信号及び列選択信号の信号値を示す。
図6(a)は
図5に示す第1の状態からCOLUMNデータを上位ビット側に1ビットシフトした第2の状態を示し、
図6(b)は
図6(a)の状態における行選択信号及び列選択信号の信号値を示す。
図7(a)は
図6に示す第2の状態からCOLUMNデータを上位ビット側に更に1ビットシフトした第3の状態を示し、
図7(b)は
図7(a)の状態における行選択信号及び列選択信号の信号値を示す。
図5(b)、6(b)、7(b)において、実線で示される信号線は印加される行選択信号又は列選択信号が選択状態であることを示し、破線で示される信号線は印加される行選択信号又は列選択信号が非選択状態であることを示す。
図5〜7において、リング発振器は行方向に6個配置されるので、COLUMNデータのビット数は、6ビットである。
【0036】
図5において、ビット値「0」が「ON」を示し、ビット値「1」が「OFF」を示す。
図5では、COLUMNデータの第5ビットにソフトエラーが発生し、第5ビットのビット値が「OFF」から「ON」に反転する。すなわち、
図5に示す第1の状態では、「000111」であるCOLUMNデータは、「000101」となりCOLUMNデータの第4ビットから第6ビットまでの間にバブルデータが発生する。
【0037】
図6では、
図5に示す第1の状態からCOLUMNデータが上位ビット側に1ビットシフトして、ソフトエラーにより反転して「ON」を示す第5ビットのビット値が最上位ビットである第6ビットに達する。第6ビットのビット値が「ON」を示すとき、サーモメータコードであるCOLUMNデータは、第1ビットから第6ビットまでの全てのビット値が「ON」を示すと判断される。COLUMNデータが全てのビット値が「ON」を示すと判断されると、「ON」を示すビット値が「0」から「1」に反転される。
図5に示す第1の状態では「000101」であったCOLUMNデータは、上位ビットに1ビットすることで「000010」となった後に、「ON」を示すビット値が反転することでビット値が「1」である第5ビットが「ON」となる。
図6に示す第2の状態では、COLUMNデータは、第4ビットから第6ビットまでの間に「010」で示されるバブルデータが発生する。
【0038】
図7では、
図6に示す第2の状態からCOLUMNデータが上位ビット側に更に1ビットシフトして、バブルデータに含まれる「ON」を示す第5ビットのビット値が最上位ビットである第6ビットに達する。第6ビットのビット値が「ON」を示すとき、
図6に示す第2の状態と同様に、COLUMNデータは、第1ビットから第6ビットまでの全てのビット値が「ON」を示すと判断される。COLUMNデータが全てのビット値が「ON」を示すと判断されると、「ON」を示すビット値が「1」から「0」に反転される。
図6に示す第2の状態では「000010」であったCOLUMNデータは、上位ビットに1ビットシフトすることで「100001」となる。そして、上位ビットに1ビットシフトすることで「100001」となったCOLUMNデータは、「ON」を示すビット値が反転することでビット値が「1」である第2ビットから第5ビットまでのビットが「ON」となる。
【0039】
図6に示す第2の状態と、
図7に示す第3の状態との間では、「ON」するリング発振器の数が9個異なるので、第2の状態の発振信号の周波数と第3の状態の発振信号の周波数との間で発振信号の周波数が大きく飛ぶことになる。COLUMNデータでソフトエラーが発生すると、バブルパターンがシフトされて最下位ビット及び最上位ビットを通過する度にROWデータをシフトするROWシフト制御信号が立て続けにアサートされる。ROWデータが短期間に繰り返しシフトすることで発振信号の発振周波数が大きく飛ぶ問題が発生する。
【0040】
フリップフロップでのソフトエラーの発生を防止するために、フリップフロップ内部のラッチ回路等に容量を付加する等のソフトエラーへの耐性を向上させる回路構成が採用されている。しかしながら、半導体集積回路の微細化の進行に従って、フリップフロップのソフトエラーへの耐性が低下しており、α線に加えて従来は問題にならなかった中性子によるソフトエラーが発生するようになってきている。このため、回路構成による対策だけで、フリップフロップのソフトエラーの発生を防止することは、容易ではない。
【0041】
特許文献3に記載される方法によって、ソフトエラーにより反転したフリップフロップに記憶されるビット値を訂正することができる。しかしながら、特許文献3に記載される方法では、リップフロップを3重化する多数決回路を使用するため、フリップフロップの個数が3倍に増加するため、回路規模的にデジタル制御発振器(DigitalControledOscrator、DCO)での使用には適さない。また、誤り検出訂正(error detection and correction、ECC)コードを付加して訂正を行うECC制御方式を採用することで、ソフトエラーにより反転したフリップフロップに記憶されるビット値を訂正することができる。しかしながら、ECC制御方式では、ソフトエラーの検出に時間が掛かり高速に検出できるソフトエラー訂正方法が実現されれず、動作速度の点で高速に動作することが望ましいDCOには適用することは容易ではない。さらに、ECC制御方式によりソフトエラーを検出する場合、特別なコードを付加するエンコード/デコード回路とそのコードを使用する検出回路が付加されるため、回路規模が大きくなり、DCOに実装することは容易ではない。
【0042】
(実施形態に係る発振回路の概要)
実施形態に係る発振回路は、サーモメータコードで制御される発振器において、フリップフロップが記憶するサーモメータコードを示すビット値の中で、ソフトエラーにより反転したビット値を自動的に検出して訂正することを目的とする回路である。実施形態に係る発振回路は、サーモメータコードに含まれる対象ビットの対象ビット値と、対象ビットに隣接する隣接ビットの隣接ビット値に基づいて、対象ビット値が誤りであると判定したときに、対象ビット値を訂正する。
【0043】
(実施形態に係る発振回路の概要)
図8(a)は実施形態に係る発振回路の動作の説明のための第1の図であり、
図8(b)は実施形態に係る発振回路の動作の説明のための第2の図である。
【0044】
図8(a)に示すように、実施形態に係る発振回路は、サーモメータコードをビット値「1」が連続する区間、ビット値「0」が連続する区間、ビット値「0」と「1」との境界位置の3種類の領域に大別する。
図8(b)に示すように、実施形態に係る発振回路は、着目する対象ビット、対象ビットの1ビット上位の第1隣接ビット及び対象ビットの1ビット下位の第2隣接ビットの3ビットの区間毎に判定する。実施形態に係る発振回路は、判定した区間がビット値「1」が連続する区間である1連続領域、ビット値「0」が連続する区間である0連続領域、及びビット値「0」と「1」の境界位置である境界領域のいずれかであるかを判定する。
【0045】
実施形態に係る発振回路は、判定した区間のビット値が「111」及び「101」であるとき、1連続領域であると判定する。実施形態に係る発振回路は、判定した区間のビット値が「101」であるとき、対象ビットのビット値「0」はソフトエラーによって「1」から「0」に反転したと判断して、対象ビットのビット値を「0」から「1」に訂正する。また、実施形態に係る発振回路は、判定した区間のビット値が「111」であるとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【0046】
実施形態に係る発振回路は、判定した区間のビット値が「000」及び「010」であるとき、0連続領域であると判定する。実施形態に係る発振回路は、判定した区間のビット値が「010」であるとき、対象ビットのビット値「1」はソフトエラーによって「0」から「1」に反転したと判断して、対象ビットのビット値を「1」から「0」に訂正する。また、実施形態に係る発振回路は、判定した区間のビット値が「000」であるとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【0047】
実施形態に係る発振回路は、判定した区間のビット値が「110」、「011」、「100」及び「001」であるとき、境界領域であると判定する。また、第1実施形態に係る発振回路は、判定した区間が境界領域であると判定したとき、ソフトエラーは対象ビットに発生していないと判断して、訂正処理を実行しない。
【0048】
実施形態に係る発振回路は、
図8を参照して説明された処理を実行する訂正回路を有する。すなわち、訂正回路は、サーモメータコードに含まれる対象ビットの対象ビット値、対象ビットに隣接する第1隣接ビットの第1隣接ビット値及び第2隣接ビットの第2隣接ビット値に基づいて、対象ビット値を訂正する。訂正回路は、対象ビット値を訂正したサーモメータコードを発振器に出力する。
【0049】
(第1実施形態に係る発振回路の構成及び機能)
図9は、第1実施形態に係る発振回路の回路図である。
【0050】
発振回路1は、発振器10と、COLUMN回路20と、ROW回路30と、周波数比較回路40とを有し、発振器10から出力される発振信号をクロックとして出力する。発振器10は、10行3列に配置された30個のリング発振器11を有する。発振回路1は、完全デジタル位相同期回路(All Digital Phase-locked loop、ADPLL)の発振回路であるDCOである。発振器10は、発振器901と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。
【0051】
COLUMN回路20は、COLUMNシフト制御回路21と、3個のフリップフロップを有するCOLUMNデータフリップフロップ22と、第1COLUMN訂正回路23とを有する。COLUMNシフト制御回路21及びCOLUMNデータフリップフロップ22は、COLUMNシフト制御回路921及びCOLUMNデータフリップフロップ922と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。COLUMNシフト制御回路21は、発振器10から出力される発振信号を分周した分周周波数と基準クロックの基準周波数との比較結果に基づいて、サーモメータコードであるCOLUMNデータを生成する。COLUMNデータフリップフロップ22は、COLUMNシフト制御回路21によって生成されたCOLUMNデータを記憶する。第1COLUMN訂正回路23は、第1訂正回路24をリング発振器11の列の数と同一数である3個有する。
【0052】
図10(a)は第1COLUMN訂正回路23が有する第1訂正回路24の内部回路図であり、
図10(b)は第1訂正回路24の真理値表であり、
図10(c)は第1訂正回路24の動作を説明するための図である。
【0053】
第1訂正回路24は、EOR素子25と、第1AND素子26と、第2AND素子27と、OR素子28とを有する。EOR素子25は、対象ビットのビット値Fと対象ビットの1ビット上位の第1隣接ビットのビット値Aとの排他的論理和を第2AND素子27に出力する。第1AND素子26は、対象ビットの1ビット上位の第1隣接ビットのビット値Aと対象ビットの1ビット下位の第2隣接ビットのビット値Bとの論理積をOR素子28に出力する。第2AND素子27は、対象ビットのビット値Fと、対象ビットのビット値Fと対象ビットの1ビット上位の第1隣接ビットのビット値Aとの排他的論理和との論理積をOR素子28に出力する。OR素子28は、第1AND素子26の出力と、第2AND素子27の出力との論理和を訂正済データAFとして出力する。
【0054】
第1訂正回路24は、対象ビットのビット値F、第1隣接ビットのビット値A及び第2隣接ビットのビット値Bが何れも「0」であるときに、境界位置の可能性がないと判断して、訂正済データAFを第1隣接ビットのビット値Aと同じ「0」とする。第1訂正回路24は、対象ビットのビット値F、第1隣接ビットのビット値Aが「1」であり且つ対象ビットのビット値F及び第2隣接ビットのビット値Bが「0」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Fを変更しない。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aと同じ「0」とする。第1訂正回路24は、対象ビットのビット値Fが「1」であり且つ第1隣接ビットのビット値A及び第2隣接ビットのビット値Bが「0」であるときに、バブルパターンであると判断して、対象ビットのビット値Fを変更する。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aである「1」と反対の「0」とする。
【0055】
第1訂正回路24は、対象ビットのビット値F及び第1隣接ビットのビット値Aが「1」であり且つ第2隣接ビットのビット値Bが「0」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Fを変更しない。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aと同じ「1」とする。第1訂正回路24は、対象ビットのビット値F及び第1隣接ビットのビット値Aが「0」であり且つ第2隣接ビットのビット値Bが「1」であるときに、境界位置の可能性があると判断して、対象ビットのビット値Fを変更しない。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aと同じ「0」とする。第1訂正回路24は、対象ビットのビット値Fが「0」であり且つ第1隣接ビットのビット値A及び第2隣接ビットのビット値Bが「1」であるときに、バブルパターンであると判断して、対象ビットのビット値Fを変更する。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aである「0」と反対の「1」とする。
【0056】
第1訂正回路24は、対象ビットのビット値F及び第2隣接ビットのビット値Bが「1」であり且つ第1隣接ビットのビット値Aが「0」であるときに、境界の可能性があると判断して、対象ビットのビット値Fを変更しない。すなわち、第1訂正回路24は、訂正済データAFを第1隣接ビットのビット値Aと同じ「1」とする。第1訂正回路24は、対象ビットのビット値F、第1隣接ビットのビット値A及び第2隣接ビットのビット値Bが何れも「1」であるときに、境界位置の可能性がないと判断して、訂正済データAFを第1隣接ビットのビット値Aと同じ「1」とする。第1訂正回路24は、対象ビット値Fが、第1隣接ビット値A及び第2隣接ビット値Bの双方と一致しないときに、対象ビット値Fが第1隣接ビット値A及び第2隣接ビット値Bに一致するように、対象ビット値Fを訂正する。
【0057】
第1COLUMN訂正回路23は、最上位ビットから最下位ビットまで第1訂正回路24から訂正済データAFを順次出力させてもよく、最下位ビットから最上位ビットまで第1訂正回路24から訂正済データAFを順次出力させてもよい。また、第1COLUMN訂正回路23は、最下位ビットから最上位ビットまで第1訂正回路24から訂正済データAFを同時に出力させてもよい。
【0058】
ROW回路30は、ROWシフト制御回路31と、10個のフリップフロップを有するROWデータフリップフロップ32と、第1ROW訂正回路33とを有する。ROWシフト制御回路31及びROWデータフリップフロップ32は、ROWシフト制御回路931及びROWデータフリップフロップ932と同様な構成及び機能を有するので、ここでは詳細な説明を省略する。第1ROW訂正回路33は、第1訂正回路24をリング発振器11の行の数と同一数である10個有する。
【0059】
第1ROW訂正回路33は、最上位ビットから最下位ビットまで第1訂正回路24から訂正済データAFを順次出力させてもよく、最下位ビットから最上位ビットまで第1訂正回路24から訂正済データAFを順次出力させてもよい。また、第1ROW訂正回路33は、最下位ビットから最上位ビットまで第1訂正回路24から訂正済データAFを同時に出力させてもよい。
【0060】
周波数比較回路40は、周波数比較回路904の構成及び機能と同様な機能及び機能を有するので、ここでは詳細な説明は省略する。
【0061】
(第1実施形態に係る発振回路の動作)
図11は、発振回路1の動作を示すフローチャートである。
【0062】
まず、周波数比較回路40は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して(S101)、比較結果に応じたCOLUMNシフト制御信号をCOLUMNシフト制御回路21に出力する。周波数比較回路40は、分周周波数が基準周波数よりも低かったとき、周波数を高くするために、発振するリング発振器11が1つ増加することを示すCOLUMNシフト制御信号をCOLUMNシフト制御回路21に出力する。周波数比較回路40は、分周周波数が基準周波数よりも高かったとき、周波数を低くするために、発振するリング発振器11が1つ減少することを示すCOLUMNシフト制御信号をCOLUMNシフト制御回路21に出力する。
【0063】
次いで、COLUMNシフト制御回路21及びROWシフト制御回路31は、入力されたCOLUMNシフト制御信号及びROWシフト制御信号に応じたCOLUMNデータ及びROWデータを生成する(S102)。COLUMNシフト制御回路21は生成したCOLUMNデータをCOLUMNデータフリップフロップ22に出力し、ROWシフト制御回路31は生成したROWデータをROWデータフリップフロップ32に出力する。
【0064】
次いで、COLUMNデータフリップフロップ22及びROWデータフリップフロップ32は、入力されたCOLUMNデータ及びROWデータをそれぞれ記憶する(S103)。COLUMNデータフリップフロップ22は記憶したCOLUMNデータを第1COLUMN訂正回路23に出力し、ROWデータフリップフロップ32は記憶したROWデータを第1ROW訂正回路33に出力する。
【0065】
次いで、第1COLUMN訂正回路23及び第1ROW訂正回路33は、入力されたCOLUMNデータ及びROWデータに含まれるソフトエラーを検出し、訂正する(S104)。第1COLUMN訂正回路23は訂正したCOLUMNデータを発振器10及びにCOLUMNシフト制御回路21に出力し、第1ROW訂正回路33は訂正したROWデータを発振器10及びにROWシフト制御回路31に出力する。
【0066】
そして、発振器10は、訂正したCOLUMNデータ及びROWデータに応じた数のリング発振器11を発振する(S105)。以降、S101〜S105の処理が順次繰り返される。
【0067】
(第1実施形態に係る発振回路の作用効果)
第1実施形態に係る発振回路は、サーモメータコードを記憶するフリップフロップ等の記憶素子で発生したソフトエラーを、第1訂正回路のような小規模な回路で訂正することができる。
【0068】
図12は、第1実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。
図12に示すサーモメータコードのビット長は13ビットであり、正常な状態では最下位ビットから第6ビットまでのデータ値が「1」であり、第7ビットから第13ビットまでのビット値が「0」である。
【0069】
図12に示す第1の誤りパターンでは、第2ビットのビット値がソフトエラーにより「0」から「1」に反転している。
図12に示す第1の誤りパターンでは、第1実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値を正常なビット値に訂正している。
図12に示す第2の誤りパターンでは、第10ビットのビット値がソフトエラーにより「1」から「0」に反転している。
図12に示す第2の誤りパターンでは、第1実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値を正常なビット値に訂正している。第1実施形態に係る発振回路は、第1及び第2の誤りパターンのように、サーモメータコードのビット値「0」と「1」との間の境界位置から3ビット以上離れたビットで発生したソフトエラーを正常なビット値に訂正することができる。
【0070】
図12に示す第3の誤りパターンでは、第5ビットのビット値がソフトエラーにより「0」から「1」に反転している。
図12に示す第3の誤りパターンでは、第1実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値の1ビット下位のビットのビット値に訂正している。
図12に示す第3の誤りパターンでは、第1実施形態に係る発振回路は、サーモメータコードのビット値「0」と「1」との間の境界位置が1ビット下位にシフトするように訂正する。
図12に示す第4の誤りパターンでは、第1実施形態に係る発振回路は、ソフトエラーの訂正処理を実行することにより、発生したソフトエラーにより反転したビット値の1ビット上位のビットのビット値に訂正している。
図12に示す第4の誤りパターンでは、第1実施形態に係る発振回路は、サーモメータコードのビット値「0」と「1」との間の境界位置が1ビット上位にシフトするように訂正する。第1実施形態に係る発振回路は、第3及び第4の誤りパターンのように、サーモメータコードのビット値「0」と「1」との間の境界位置から1ビット離れたビットで発生したソフトエラーを、サーモメータコードの境界位置を1ビットシフトして訂正する。しかしながら、第1実施形態に係る発振回路は、第3及び第4の誤りパターンで発生したバブルバターンを解消することができるので、第1実施形態に係る発振回路がDCOとして動作することで、サーモメータコードの境界位置を自動的に修正できる。
【0071】
図12に示す第5の誤りパターンでは、第6ビットのビット値がソフトエラーにより「0」から「1」に反転している。
図12に示す第5の誤りパターンでは、第1実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することはない。
図12に示す第6の誤りパターンでは、第7ビットのビット値がソフトエラーにより「1」から「0」に反転している。
図12に示す第6の誤りパターンでは、第1実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することはない。第1実施形態に係る発振回路は、第5及び第6の誤りパターンで発生した場合、ソフトエラーの訂正処理を実行することはない。しかしながら、第1実施形態に係る発振回路は、第5及び第6の誤りパターンではバブルバターンは発生していないので、第1実施形態に係る発振回路がDCOとして動作することで、サーモメータコードの境界位置を自動的に修正できる。
【0072】
(第2実施形態に係る発振回路の構成及び機能)
図13は、第2実施形態に係る発振回路の回路図である。
【0073】
発振回路2は、COLUMN回路50及びROW回路60をCOLUMN回路20及びROW回路30の代わりに有することが発振回路1と相違する。COLUMN回路50及びROW回路60以外の発振回路2の構成素子の構成及び機能は、同一符号が付された発振回路1の構成要素の構成及び機能と同様なので、ここでは詳細な説明は省略する。
【0074】
COLUMN回路50は、COLUMNシフト制御回路51と、COLUMNデータフリップフロップ52と、第1COLUMN訂正回路53と、境界ビット生成回路54と、境界データフリップフロップ55と、第2COLUMN訂正回路56を有する。COLUMNシフト制御回路51〜第1COLUMN訂正回路53は、COLUMNシフト制御回路21〜第1COLUMN訂正回路23と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。
【0075】
境界ビット生成回路54は、サーモメータコードのビット値「0」と「1」との間の境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成する。
【0076】
図14は、ビット数が3である境界ビット生成回路54を、ビット数がNであると一般化したときの境界ビット生成回路540の回路図である。境界ビット生成回路540では、ビット数nは偶数である。
【0077】
境界ビット生成回路540は、(n/2)個のEOR素子541と、OR素子542とを有する。(n/2)個のEOR素子541のそれぞれは、一方の入力端子に奇数ビットのビット値が入力され且つ他方の入力端子に隣接する偶数ビットのビット値が入力される。具体的には、第1のEOR素子541は、一方の入力端子に最下位ビットのビット値が入力され且つ他方の入力端子に最下位ビットに隣接する第2ビットのビット値が入力される。また、第2のEOR素子541は、一方の入力端子に第3ビットのビット値が入力され且つ他方の入力端子に第3ビットに隣接する第4ビットのビット値が入力される。以降、mを偶数として、EOR素子541は、一方の入力端子に第(m−1)ビットのビット値が入力され且つ他方の入力端子に第(m−1)ビットに隣接する第mビットのビット値が入力される。なお、nが奇数の場合、一方に最上位ビットのビット値が入力され、且つ他方は仮想的に最下位ビットの値を反転した値を第(n+1)ビットのビット値としてEOR素子541の入力端子に入力し、最下位ビットから第(n+1)ビットのビット値が何れかのEOR素子541の入力端子に入力される。
【0078】
OR素子542は、(n/2)個のEOR素子541の出力端子が接続され、(n/2)個のEOR素子541の出力信号に応じた境界情報を出力する。OR素子542は、(n/2)個のEOR素子541の出力信号の何れか1つが「1」であるとき、すなわちサーモメータコードの境界位置が奇数であるときにビット値「1」を示す境界情報を出力する。また、OR素子542は、(n/2)個のEOR素子541の出力信号の何れもが「0」であるとき、すなわちサーモメータコードの境界位置が偶数であるときにビット値「0」を示す境界情報を出力する。
【0079】
境界データフリップフロップ55は、境界ビット生成回路54から出力される境界情報を記憶し、記憶した境界情報を第2COLUMN訂正回路56に出力する。境界ビット生成回路54及び境界データフリップフロップ55は、COLUMNデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。境界ビット生成回路54及び境界データフリップフロップ55は、境界情報生成回路を形成する。
【0080】
第2COLUMN訂正回路56は、第2訂正回路70を3個有する。第2COLUMN訂正回路56は、境界情報に対応する境界判定ビット値に基づいて、サーモメータコードの境界位置を下位ビット方向にシフトする。
【0081】
図15(a)は第2訂正回路70の内部回路図であり、
図15(b)は第2訂正回路70の動作を説明するための図である。
【0082】
第2訂正回路70は、第1AND素子71と、第1EOR素子72と、第2EOR素子73と、第2AND素子74と、OR素子75とを有する。第1AND素子71は、第1COLUMN訂正回路53によって訂正された対象ビット及び対象ビットの1ビット上位の第1隣接ビットのビット値(訂正F及び訂正A)の論理積を出力する。第1EOR素子72は、第1COLUMN訂正回路53によって訂正された対象ビット及び対象ビットの1ビット上位の第1隣接ビットのビット値(訂正F及び訂正A)の排他的論理和を出力する。第1COLUMN訂正回路53によって訂正された第1隣接ビット(訂正A)と、第2COLUMN訂正回路56から入力される境界情報に対応する境界判定ビット値(K)との排他的論理和を出力する。第2AND素子74は、第1EOR素子72及び第2EOR素子73の出力信号に対応するビット値の論理積を出力する。OR素子75は、第1AND素子71及び第2AND素子74の出力信号の論理和を訂正済データ(SF)として出力する。
【0083】
第2訂正回路70は、訂正された対象ビット及び第1隣接ビットのビット値(訂正F及び訂正A)が同一のとき、境界位置がないと判断して、対象ビットのビット値を訂正しない。また、第2訂正回路70は、訂正された対象ビット及び第1隣接ビットのビット値(訂正F及び訂正A)が相違し且つ境界情報に対応する境界判定ビット値(K)が「1」のとき、境界位置があると判断して対象ビットのビット値を訂正しない。一方、第2訂正回路70は、訂正された対象ビット及び第1隣接ビットのビット値(訂正F及び訂正A)が相違し且つ境界情報に対応する境界判定ビット値(K)が「0」のとき、対象ビットのビット値を訂正する。
【0084】
ROW回路60は、ROWシフト制御回路61と、ROWデータフリップフロップ62と、第1ROW訂正回路63と、境界ビット生成回路64と、境界データフリップフロップ65と、第2ROW訂正回路66を有する。ROWシフト制御回路61〜第1ROW訂正回路63は、ROWシフト制御回路31〜第1ROW訂正回路33と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。また、境界ビット生成回路64及び境界データフリップフロップ65は、境界ビット生成回路54及び境界データフリップフロップ55と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。第2ROW訂正回路66は、第2訂正回路70をリング発振器11の行の数と同一数である10個有する。
【0085】
(第2実施形態に係る発振回路の動作)
図16は、発振回路2の動作を示すフローチャートである。
【0086】
まず、周波数比較回路40は、発振信号を逓倍設定に従って分周した分周周波数と、基準クロックの基準周波数を比較して(S201)、比較結果に応じたCOLUMNシフト制御信号をCOLUMNシフト制御回路51に出力する。次いで、COLUMNシフト制御回路51及びROWシフト制御回路61は、入力されたCOLUMNシフト制御信号及びROWシフト制御信号に応じたCOLUMNデータ及びROWデータを生成する(S202)。次いで、COLUMNデータフリップフロップ52及びROWデータフリップフロップ62は、入力されたCOLUMNデータ及びROWデータをそれぞれ記憶する(S203)。
【0087】
次いで、境界情報生成回路は、COLUMNデータ及びROWデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する(S204)。具体的には、境界ビット生成回路54及び境界データフリップフロップ55は、COLUMNデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。また、境界ビット生成回路64及び境界データフリップフロップ65は、ROWデータにおいて、サーモメータコードの境界位置を示す境界ビットが奇数ビットであるか偶数ビットであるかを示す境界情報を生成し、記憶する。
【0088】
次いで、第1COLUMN訂正回路53及び第1ROW訂正回路63は、入力されたCOLUMNデータ及びROWデータに含まれるソフトエラーを検出し、訂正する(S205)。次いで、第2COLUMN訂正回路56及び第2ROW訂正回路66は、境界情報及び訂正されたCOLUMNデータ及びROWデータに基づいて、サーモメータコードの境界位置を下位ビット方向にシフトする(S206)。
【0089】
そして、発振器10は、訂正したCOLUMNデータ及びROWデータに応じた数のリング発振器11を発振する(S207)。以降、S201〜S207の処理が順次繰り返される。
【0090】
(第2実施形態に係る発振回路の作用効果)
第2実施形態に係る発振回路は、ソフトエラーの訂正により上位ビット側にシフトしたサーモメータコードの境界位置を下位ビット側にシフトすることができる。第2実施形態に係る発振回路は、サーモメータコードの境界位置を下位ビット側にシフトすることで、第2実施形態に係る発振回路から出力されるクロックを使用して動作する回路の動作速度が高速になり動作エラーを生じることを防止することができる。
【0091】
図17は、第2実施形態に係る発振回路によるソフトエラーの訂正処理の処理結果の一例を示す図である。
図17に示すサーモメータコードのビット長は13ビットであり、正常な状態では最下位ビットから第6ビットまでのデータ値が「1」であり、第7ビットから第13ビットまでのビット値が「0」である。
図17に示す第1誤りパターン〜第6誤りパターンのそれぞれは、
図12に示す第1誤りパターン〜第6誤りパターンと同一のエラーである。
図17に示す第1の誤りパターン及び第2の誤りパターンでの第2実施形態に係る発振回路の動作は、第1実施形態に係る発振回路の動作と同様なので、ここでは詳細な説明は省略する。
【0092】
図17に示す第3の誤りパターンでは、第2実施形態に係る発振回路は、発生したソフトエラーの訂正により1ビット下位にシフトしたサーモメータコードの境界位置を更に1ビット下位にシフトしている。
図17に示す第4の誤りパターンでは、第2実施形態に係る発振回路は、発生したソフトエラーの訂正により1ビット上位にシフトしたサーモメータコードの境界位置を更に1ビット下位にシフトしている。第2実施形態に係る発振回路は、第3及び第4の誤りパターンのように、サーモメータコードの境界位置から1ビット離れたビットで発生したソフトエラーを、サーモメータコードの境界位置が上位側にシフトしないように訂正することができる。
【0093】
図17に示す第5の誤りパターン及び第6の誤りパターンでは、第2実施形態に係る発振回路は、バブルパターンが発生していないので、ソフトエラーの訂正処理を実行することなく、サーモメータコードの境界位置を1ビット下位にシフトしている。第2実施形態に係る発振回路は、第5及び第6の誤りパターンで発生した場合、サーモメータコードの境界位置が上位側にシフトしないように訂正することができる。
【0094】
(実施形態の変形例)
発振回路1及び2は、アレイ状に配置されたリング発振器の発振を制御するために、COLUMN回路及びROW回路を有するが、実施形態に係る発振回路は、行方向及び列方向の何れか一方向に延伸するように配列されたリング発振器を発振させてもよい。一方向に延伸するように配列されたリング発振器を発振させるとき、実施形態に係る発振回路は、COLUMN回路及びROW回路に何れか一方のみを有する構成にすることができる。また、発振回路1及び2は、リング発振器を使用して発振信号を生成するが、実施形態に係る発振回路は、発振信号が生成可能な発振回路を有すればよい。また、発振回路1及び2は、サーモメータコードを使用して発振するリング発振器の数を制御するが、実施形態では、リング発振器以外の電子回路を制御する構成としてもよい。
【0095】
また、発振回路2は、COLUMNデータ及びROWデータにおいてサーモメータコードの境界位置を下位ビット方向にシフトするが、実施形態に係る発振回路は、サーモメータコードの境界位置を上位ビット方向にシフトしてもよい。
【0096】
図18(a)は第2訂正回路70の変形例の内部回路図であり、
図18(b)は
図17(a)に示す第2訂正回路の動作を説明するための図である。実施形態に係る発振回路は、第2訂正回路70の代わりに
図18(a)に示す第2訂正回路を配置することにより、サーモメータコードの境界位置を上位ビット方向にシフトすることができる。
【0097】
第2訂正回路80は、第1AND素子81と、第1EOR素子82と、第2EOR素子83と、第2AND素子84と、OR素子85とを有する。第1AND素子81〜OR素子85は、対象ビットの1ビット上位の第1隣接ビットのビット値の代わりに対象ビットの1ビット下位の第2隣接ビットのビット値が入力されることが、第1AND素子71〜OR素子75と相違する。第2隣接ビットのビット値が入力されること以外は、第1AND素子81〜OR素子85の構成及び機能は、第1AND素子71〜OR素子75の構成及び機能と同様なので、ここでは詳細な説明は省略する。
【0098】
図19は、第2実施形態に係る発振回路の変形例によるソフトエラーの訂正処理の処理結果の一例を示す図である。
図19に示すサーモメータコードのビット長は13ビットであり、正常な状態では最下位ビットから第6ビットまでのデータ値が「1」であり、第7ビットから第13ビットまでのビット値が「0」である。
図19に示す第1誤りパターン〜第6誤りパターンのそれぞれは、
図12に示す第1誤りパターン〜第6誤りパターンと同一のエラーである。
図19に示す第1の誤りパターン〜第6の誤りパターンでの動作は、サーモメータコードの境界位置が上位ビット方向にシフトすること以外は、第2実施形態に係る発振回路の動作と同様なので、ここでは詳細な説明は省略する。
【0099】
また、説明された第1訂正回路24及び第2訂正回路等の内部回路は、これらの内部回路の一例を示すものであり、これらの回路構成に限定して解釈されるものではない。また、これらの内部回路の構成は、実施形態の変形例に応じて変更されてもよい。