以下、本発明の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、素子又は部位等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、素子又は部位等の名称を省略又は略記することがある。例えば、後述の“111”によって参照されるマスタラッチ回路は(図1参照)、マスタラッチ回路111と表記されることもあるし、ラッチ回路111と略記されることもあり得るが、それらは全て同じものを指す。
まず、本発明の実施形態の記述にて用いられる幾つかの用語について説明を設ける。レベルとは電位のレベルを指し、任意の信号又は電圧についてハイレベルはローレベルよりも高い電位を有する。任意の信号又は電圧について、信号又は電圧がハイレベルにあるとは信号又は電圧のレベルがハイレベルにあることを意味し、信号又は電圧がローレベルにあるとは信号又は電圧のレベルがローレベルにあることを意味する。信号についてのレベルは信号レベルと表現されることがあり、電圧についてのレベルは電圧レベルと表現されることがある。
或る任意の注目した信号について、注目した信号がハイレベルであるとき、当該注目した信号の反転信号はローレベルをとり、注目した信号がローレベルであるとき、当該注目した信号の反転信号はハイレベルをとる。
任意の信号又は電圧において、ローレベルからハイレベルへの切り替わりをアップエッジと称し、ローレベルからハイレベルへの切り替わりのタイミングをアップエッジタイミングと称する。同様に、任意の信号又は電圧において、ハイレベルからローレベルへの切り替わりをダウンエッジと称し、ハイレベルからローレベルへの切り替わりのタイミングをダウンエッジタイミングと称する。
ハイレベル又はローレベルの信号レベルをとる任意の信号について、当該信号のレベルがハイレベルとなる区間をハイレベル区間と称し、当該信号のレベルがローレベルとなる区間をローレベル区間と称する。ハイレベル又はローレベルの電圧レベルをとる任意の電圧についても同様である。
<<第1実施形態>>
本発明の第1実施形態を説明する。図1は第1実施形態に係るデータ記憶回路100の構成図である。第1実施形態に係るデータ記憶回路100は、フリップフロップ回路110と、クロック制御回路120と、クロック有効制御回路130と、セレクタ140と、を備える。以下、フリップフロップ回路を“FF”と称することがある。データ記憶回路100は、主として、一旦FF110に必要なデータを書き込んだ後はデータの書き換えが不要となる用途で用いられる。
FF110は、マスタラッチ回路111、スレーブラッチ回路112及びエラー検出回路113と、データ入力端子110IN及びデータ出力端子110OUTを備える。データ入力端子110INに対して入力されるデータを入力データDINと称する。データ出力端子110OUTから出力されるデータを出力データQOUTと称する。図1のデータ記憶回路100は、FF110の機能により、データ入力端子110INに入力される入力データDIN(対象入力データ)を記憶して記憶データをデータ出力端子110OUTから出力データQOUT(対象出力データ)として出力することができる。
クロック制御回路120には基準クロック信号CLKINが入力される。クロック制御回路120は、基準クロック信号CLKINに基づきマスタクロック信号CLKM及びスレーブクロック信号CLKSを生成して、マスタクロック信号CLKM及びスレーブクロック信号CLKSをFF110に供給する。クロック制御回路120には、基準クロック信号CLKINとは別に、クロック有効制御回路130からクロック有効制御信号CLKCNTが入力されている。信号CLKCNTは“1”又は“0”の値をとる二値化信号であり、クロック制御回路120は、信号CLKCNTの値に応じてクロック信号CLKM及びCLKSを生成する。
図2に、信号CLKCNTの値が“1”である状態でのクロック信号CLKIN、CLKM及びCLKSの関係を示す。クロック信号CLKIN、CLKM及びCLKSは何れもローレベル又はハイレベルをとる二値化信号である。基準クロック信号CLKINは所定周波数を有する矩形波信号であって、図示されないクロック生成回路にて生成される。信号CLKCNTの値が“1”であるとき、スレーブクロック信号CLKSは基準クロック信号CLKINと同じ信号とされ、マスタクロック信号CLKMは基準クロック信号CLKINの反転信号とされるものとする。故に、信号CLKCNTの値が“1”であるとき、クロック信号CLKIN、CLKM及びCLKSの周波数は共通となる。但し、クロック信号CLKINとクロック信号CLKM及びCLKSとの関係を上述したものから逆にする変形や、クロック信号CLKM及びCLKSの周波数をクロック信号CLKINの周波数と異ならせる変形も可能である。
信号CLKCNTの値が“1”から“0”に切り替わると、クロック信号CLKM及びCLKSの信号レベルが共にローレベルで固定される状態(以下、クロック停止状態と称する)に移行するが、この移行の詳細については後述される。
クロック有効制御回路130は、書き込み制御信号CNTWRに基づいてクロック有効制御CLKCNTを生成し、クロック制御回路120に供給する。
セレクタ140は、第1入力端、第2入力端及び制御端を有する。セレクタ140において、第1入力端にはデータ出力端子110OUTからの出力データQOUTが入力され、第2入力端にはデータDDが入力され、制御端には、図示されない書き込み制御回路からの書き込み制御信号CNTWRが入力される。セレクタ140の第2入力端には、図示されないデータ提供部からの書き込み対象データDWRがデータDDとして入力されることもあるし、有意な値を持たない不定データがデータDDとして入力されることもある。セレクタ140は、制御端に加わる書き込み制御信号CNTWRに応じて、第1入力端及び第2入力端の何れかに入力されるデータを選択し、選択したデータを出力する。セレクタ140の出力データは入力データDINとしてデータ入力端子110INに供給される。書き込み制御信号CNTWRは“1”又は“0”の値をとる二値化信号であり、書き込み制御信号CNTWRの値が“0”、“1”であるときに、セレクタ140は、夫々、第1選択状態、第2選択状態となるものとする。セレクタ140において、第1選択状態では、第1入力端に入力されるデータ(出力データQOUT)が選択されて入力データDINとしてデータ入力端子110INに入力される。セレクタ140において、第2選択状態では、第2入力端に入力されるデータDDが選択されて入力データDINとしてデータ入力端子110INに入力される。
マスタラッチ回路111には、データ入力端子110INに対する入力データDINがマスタ入力データDMとして入力される。マスタラッチ回路111は、クロック制御回路120からのマスタクロック信号CLKMに基づいてマスタ入力データDM(即ち入力データDIN)を取り込み、取り込んだデータを保持するとともにマスタ出力データQMとして出力する。
スレーブラッチ回路112には、マスタラッチ回路111からのマスタ出力データQMがスレーブ入力データDSとして入力される。スレーブラッチ回路112は、クロック制御回路120からのスレーブクロック信号CLKSに基づいてスレーブ入力データDS(即ちマスタ出力データQM)を取り込み、取り込んだデータを保持するとともにスレーブ出力データQSとして出力する。FF110では、スレーブラッチ回路112からのスレーブ出力データQSが出力データQOUTとしてデータ出力端子110OUTから出力されることになる。
データDIN、DM、QM、DS、QS及びQOUTを示す信号は、夫々に、ローレベル又はハイレベルの信号レベルをとる1ビットのデジタル信号である。
図3に、マスタラッチ回路111として利用可能なマスタラッチ回路の一例としてマスタラッチ回路160を示す。マスタラッチ回路160は、スイッチ161及び162と、インバータ回路163及び164と、を備える。スイッチ161及び162並びに後述のスイッチ171及び172を含む任意のスイッチは、双方向スイッチとしてのアナログスイッチであり、例えば、CMOS(Complementary Metal-Oxide-Semiconductor)の電界効果トランジスタを用いて構成されたトランスミッションゲートであって良い。スイッチ161及び162並びに後述のスイッチ171及び172を含む任意のスイッチは、第1端、第2端及び制御端を有し、制御端に供給される信号のレベルに応じて、第1端及び第2端が導通状態又は非導通状態(遮断状態)となる。第1端及び第2端が導通状態となることをオン状態と称し、第1端及び第2端が非導通状態(遮断状態)となることをオフ状態と称する。ここでは、スイッチ161及び162並びに後述のスイッチ171及び172を含む任意のスイッチについて、制御端への信号のレベルがハイレベルであるときに当該スイッチはオン状態となり、制御端への信号のレベルがローレベルであるときに当該スイッチはオフ状態となるものとする。尚、オン状態、オフ状態は、夫々、オン、オフと略記されることもある。
スイッチ161の第1端にはマスタ入力データDMを示す信号が入力され、スイッチ161の第2端はノード165に接続される。インバータ回路163の入力端はノード165に接続される。インバータ回路163は自身の入力端に加わる信号の反転信号を自身の出力端から出力する。インバータ回路163の出力信号がマスタ出力データQMを示す信号となる。インバータ回路163の出力端はインバータ回路164の入力端に接続される。インバータ回路164は自身の入力端に加わる信号の反転信号を自身の出力端から出力する。故に、マスタ出力データQMを示す信号の反転信号がインバータ回路164の出力端から出力される。スイッチ162の第1端はインバータ回路164の出力端に接続され、スイッチ162の第2端はノード165に接続される。
スイッチ161の制御端にはマスタクロック信号CLKMが入力され、スイッチ162の制御端にはマスタクロック信号CLKMの反転信号CLKM_Bが入力される。このため、マスタクロック信号CLKMがハイレベルであるときには、スイッチ161がオン状態且つスイッチ162がオフ状態となることでマスタラッチ回路160はデータ透過状態となり、マスタクロック信号CLKMがローレベルであるときには、スイッチ161がオフ状態且つスイッチ162がオン状態となることでマスタラッチ回路160はデータ保持状態となる。図4(a)、(b)に、マスタラッチ回路160のデータ透過状態、データ保持状態を模式的に示す。
マスタラッチ回路160において、データ透過状態では、現在のマスタ入力データDMがそのままマスタ出力データQMとして出力される。尚、マスタラッチ回路160において、データ透過状態では、データDMを示す信号レベルとデータQMを示す信号レベルとが反転することになるが、後述されるようにデータDMは正論理にて定義され且つデータQMは負論理にて定義される。このため、マスタラッチ回路160において、データ透過状態では、データDMが持つ論理値とデータQMが持つ論理値は同じとなる。これを、“現在のマスタ入力データDMがそのままマスタ出力データQMとして出力される”と表現している。マスタラッチ回路160において、データ保持状態では、現在のマスタ入力データDMに関係なくインバータ回路164によりノード165に保持されたデータがマスタ出力データQMとして出力される。つまり、マスタラッチ回路160では、マスタクロック信号CLKMのアップエッジに同期してマスタ入力データDMがマスタラッチ回路160に取り込まれ、取り込まれたデータがマスタクロック信号CLKMのダウンエッジに同期してマスタラッチ回路160にラッチ(保持)される。マスタクロック信号CLKMのアップエッジ及びダウンエッジを経て、マスタクロック信号CLKMがローレベルで固定されたならば、マスタラッチ回路160に取り込まれたデータがマスタラッチ回路160にて保持されるデータ保持状態が継続する。
図5に、スレーブラッチ回路112として利用可能なスレーブラッチ回路の一例としてスレーブラッチ回路170を示す。スレーブラッチ回路170は、スイッチ171及び172と、インバータ回路173及び174と、を備える。
スイッチ171の第1端にはスレーブ入力データDSを示す信号が入力され、スイッチ171の第2端はノード175に接続される。インバータ回路173の入力端はノード175に接続される。インバータ回路173は自身の入力端に加わる信号の反転信号を自身の出力端から出力する。インバータ回路173の出力信号がスレーブ出力データQSを示す信号となる。インバータ回路173の出力端はインバータ回路174の入力端に接続される。インバータ回路174は自身の入力端に加わる信号の反転信号を自身の出力端から出力する。故に、スレーブ出力データQSを示す信号の反転信号がインバータ回路174の出力端から出力される。スイッチ172の第1端はインバータ回路174の出力端に接続され、スイッチ172の第2端はノード175に接続される。
スイッチ171の制御端にはスレーブクロック信号CLKSが入力され、スイッチ172の制御端にはスレーブクロック信号CLKSの反転信号CLKS_Bが入力される。このため、スレーブクロック信号CLKSがハイレベルであるときには、スイッチ171がオン状態且つスイッチ172がオフ状態となることでスレーブラッチ回路170はデータ透過状態となり、スレーブクロック信号CLKSがローレベルであるときには、スイッチ171がオフ状態且つスイッチ172がオン状態となることでスレーブラッチ回路170はデータ保持状態となる。図6(a)、(b)に、スレーブラッチ回路170のデータ透過状態、データ保持状態を模式的に示す。
スレーブラッチ回路170において、データ透過状態では、現在のスレーブ入力データDSがそのままスレーブ出力データQSとして出力される。尚、スレーブラッチ回路170において、データ透過状態では、データDSを示す信号レベルとデータQSを示す信号レベルとが反転することになるが、後述されるようにデータDSは負論理にて定義され且つデータQSは正論理にて定義される。このため、スレーブラッチ回路170において、データ透過状態では、データDSが持つ論理値とデータQSが持つ論理値は同じとなる。これを、“現在のスレーブ入力データDSがそのままスレーブ出力データQSとして出力される”と表現している。スレーブラッチ回路170において、データ保持状態では、現在のスレーブ入力データDSに関係なくインバータ回路174によりノード175に保持されたデータがスレーブ出力データQSとして出力される。つまり、スレーブラッチ回路170では、スレーブクロック信号CLKSのアップエッジに同期してスレーブ入力データDSがスレーブラッチ回路170に取り込まれ、取り込まれたデータがスレーブクロック信号CLKSのダウンエッジに同期してスレーブラッチ回路170にラッチ(保持)される。スレーブクロック信号CLKSのアップエッジ及びダウンエッジを経て、スレーブクロック信号CLKSがローレベルで固定されたならば、スレーブラッチ回路170に取り込まれたデータがスレーブラッチ回路170にて保持されるデータ保持状態が継続する。
図1のマスタラッチ回路111及びスレーブラッチ回路112の具体的な構成は任意であるが、ここでは、図3のマスタラッチ回路160がマスタラッチ回路111として且つ図5のスレーブラッチ回路170がスレーブラッチ回路112として用いられるものとする。そうすると、データDIN、DM、QS及びQOUTは正論理にて定義され、データQM及びDSは負論理にて定義されることになる。即ち、データDIN、DM、QS又はQOUTである注目データを示す信号の信号レベルがハイレベル、ローレベルであるとき、当該注目データは、夫々、“1”、“0”の論理値を有する。逆に、データQM又はDSである注目データを示す信号の信号レベルがハイレベル、ローレベルであるとき、当該注目データは、夫々、“0”、“1”の論理値を有する。但し、正論理及び負論理の定め方は任意に変更可能である。
尚、任意のラッチ回路について、或るデータを示す信号の当該ラッチ回路への入力は、或るデータの当該ラッチ回路への入力と同義であり、或るデータを示す信号の当該ラッチ回路からの出力は、或るデータの当該ラッチ回路からの出力と同義である。故に例えば、マスタラッチ回路に対してマスタ入力データDMを示す信号が入力されることを、マスタラッチ回路に対するマスタ入力データDMの入力と表現したり、マスタラッチ回路からマスタ出力データQMを示す信号が出力されることを、マスタラッチ回路からのマスタ出力データQMの出力と表現したりすることがある。これはラッチ回路に限らず、セレクタ等でも同様であり、また後述の他の実施形態においても同様である。
図7はデータ記憶回路100のタイミングチャートである。タイミングT1にて基準クロック信号CLKINにアップエッジが生じるものとする。また、任意の整数iに関して、タイミングTi+1はタイミングTiよりも基準クロック信号CLKINの周期の半分だけ後のタイミングであるものとし、基準クロック信号CLKINのデューティは50%であるとする。そうすると、タイミングT1、T3及びT5は、基準クロック信号CLKINにおける3つの連続するアップエッジタイミングであり、タイミングT2、T4及びT6は、基準クロック信号CLKINにおける3つの連続するダウンエッジタイミングである。
書き込み制御信号CNTWRの値は原則として“0”とされており、書き込み対象データDWRをFF110に書き込むのに必要な区間においてのみ書き込み制御信号CNTWRの値が“1”とされる。図7の例において、書き込み制御信号CNTWRの値は、タイミングT1及びT3間においてのみ“1”とされ、それ以外では“0”とされる。タイミングT1及びT3間において、FF110に書き込まれるべきデータ(換言すればFF110にて記憶及び保持されるべきデータ)が書き込み対象データDWRとしてセレクタ140の第2入力端に入力される。故に、タイミングT1及びT3間において、入力データDINはセレクタ140の第2入力端への入力データである書き込み対象データDWRと一致する。タイミングT1及びT3間以外においてセレクタ140の第2入力端に入力されるデータDDは不定データとなりうる。
図7の例において、タイミングT5に至るまではクロック有効制御信号CLKCNTは“1”の値を有しており、故に、少なくともタイミングT5に至るまでは基準クロック信号CLKINのレベル変化に同期してクロック信号CLKM及びCLKSにもレベル変化が生じる。
結果、タイミングT2におけるマスタクロック信号CLKMのアップエッジに同期して書き込み対象データDWRがマスタラッチ回路111に取り込まれ且つマスタ出力データQMが書き込み対象データDWRと一致する。続くタイミングT3におけるスレーブクロック信号CLKSのアップエッジに同期して書き込み対象データDWRと一致するマスタ出力データQMがスレーブラッチ回路112に取り込まれ且つスレーブ出力データQS及び出力データQOUTが書き込み対象データDWRと一致する(即ちスレーブ出力データQS及び出力データQOUTの各値は書き込み対象データDWRの値と一致する)。
図7の例では、タイミングT3を境に書き込み制御信号CNTWRの値が“1”から“0”に変化しているが、タイミングT3以降は書き込み対象データDWRの値と同じ値を有するデータが出力データQOUTとして現れるので、タイミングT1から続いてタイミングT3以降も書き込み対象データDWRの値と同じ値を有するデータが入力データDINであり続ける。
クロック制御回路120は、セレクタ140を通じ入力データDINとしてデータ入力端子110INに入力された書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112の双方に取り込まれた後、クロック信号CLKM及びCLKSのレベル変化を停止させてクロック信号CLKM及びCLKSの信号レベルをローレベルで固定するクロック停止状態に移行する。クロック停止状態では、マスタラッチ回路111及びスレーブラッチ回路112の双方がデータ保持状態となる。
クロック有効制御回路130は、書き込み制御信号CNTWRの値が“1”から“0”に変化するまではクロック有効制御信号CLKCNTの値を“1”とし、書き込み制御信号CNTWRの値が“1”から“0”に変化した後、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させ、以後、信号CLKCNTの値を“0”で固定して良い。但し、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させるタイミングは、書き込み対象データDWRがスレーブ出力データQSに現れた後のタイミングとされる。
クロック制御回路120は、信号CLKCNTの値が“1”から“0”に変化した後、マスタクロック信号CLKMの信号レベルがローレベルで固定されるようにマスタクロック信号CLKMのレベル変化を停止させ、スレーブクロック信号CLKSの信号レベルがローレベルで固定されるようにスレーブクロック信号CLKSのレベル変化を停止させる。以下、“マスタクロック信号CLKMの信号レベルがローレベルで固定されるようにマスタクロック信号CLKMのレベル変化を停止させる”ことをマスタクロックの停止と称することがあり、“スレーブクロック信号CLKSの信号レベルがローレベルで固定されるようにスレーブクロック信号CLKSのレベル変化を停止させる”ことをスレーブクロックの停止と称することがある(後述の他の実施形態でも同様)。
図7の例では、タイミングT5にて信号CLKCNTの値が“1”から“0”に変化しているため、タイミングT5又はタイミングT5より後にマスタクロック及びスレーブクロックが停止されているが、書き込み対象データDWRがスレーブ出力データQSに現れた後であれば、任意のタイミングでマスタクロックを停止させて良く、任意のタイミングでスレーブクロックを停止させて良い。マスタクロックを停止させてからスレーブクロックを停止させても良いし、その逆でも良い。
但し、マスタクロック信号CLKMがハイレベルとなった直後にマスタクロックが停止されると、マスタラッチ回路111の動作が不安定となる可能性もあるので、マスタクロック信号CLKMがローレベルであるときにマスタクロックを停止させると良い。同様に、スレーブクロック信号CLKSがローレベルであるときにスレーブクロックを停止させると良い。しかしながら例えば、タイミングT5及びT6間のちょうど中央のタイミングにてマスタクロックとスレーブクロックを同時に停止するといったことも可能である。
尚、図1では、クロック制御回路120とクロック有効制御回路130が別々の回路として示されているが、回路130は回路120に内包されると考えても良い。
マスタクロック及びスレーブクロックの停止にて実現されるクロック停止状態では、マスタラッチ回路111及びスレーブラッチ回路112がともに書き込み対象データDWRを保持しているはずである。しかしながら、放射線等の影響によりラッチ回路111又は112の保持データが“1”から“0”へ又は“0”から“1”へ反転することがあり、この反転はエラーと称される。エラーとして、物理的な故障によるハードエラーと、放射線等の影響により一時的に誤動作が発生するソフトエラーとがあるが、ここでは、主としてソフトエラーに注目する。
エラー検出回路113は、クロック停止状態においてマスタ出力データQM及びスレーブ出力データQSを比較し、データQM及びQSの値が一致しておれば“0”の値を有する信号SERRを出力し、データQM及びQSの値が不一致であれば“1”の値を有する信号SERRを出力する。“1”の値を有する信号SERRはエラーが発生していることを示す所定のエラー検出信号として機能する。“0”の値を有する信号SERRはエラー検出信号として機能しない。また、FF110がクロック停止状態とされていないときの信号SERRは無効である。排他的論理和回路などの簡素な比較回路でエラー検出回路113を構成することができる。
信号SERRは図示されない上位制御回路に供給される。上位制御回路は、クロック停止状態において“1”の値を有する信号SERR(即ちエラー検出信号)を受けると所定のエラー対応処理を実行する。エラー対応処理では、例えば、データ記憶回路100及び上位制御回路を備える装置全体にリセットをかける、データ記憶回路100の出力データQOUTを利用して動作する回路の動作を停止させる、書き込み対象データDWRを再度FF110に書き込む、といったことが考えられる。
以上の如く、データ記憶回路100によれば、フリップフロップ回路110に本来備えられているマスタラッチ回路111とスレーブラッチ回路112の出力を用いて、ソフトエラーの検出が可能となる。この検出のために追加される回路は、簡素な比較回路で構成可能なエラー検出回路113とクロック制御回路120のみであり、オーバーヘッドも少なくて済む。尚、放射線に起因するソフトエラーだけでなく、ノイズ又はクロストーク等に起因するソフトエラーも検出可能となる。
また、上述の構成では、第2選択状態のセレクタ140により書き込み対象データDWRがデータ入力端子110INに供給されて書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112にて取り込まれた後、セレクタ140は第2選択状態から第1選択状態に移行する、即ち書き込み対象データDWRと一致するはずの出力データQOUTを継続的にデータ入力端子110INに供給する状態(この状態をフィードバック状態と称する)に移行し、一方で、クロック制御回路120はクロック停止状態に移行する。
これにより、書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112に取り込まれた後でありさえすれば、任意のタイミング且つ任意の順序でマスタクロック及びスレーブクロックを停止すれば良いことになるので、クロック制御回路120に複雑な構成は不要であり、タイミングに関わる煩雑な調整も不要となる。これは、ソフトエラー対策に関わるオーバーヘッドの抑制に繋がる。
尚、図1ではエラー検出回路113がFF110の内部に設けられているが、エラー検出回路113をFF110の外部に設けるようにしても良い。何れの場合であってもエラー検出回路113自体の回路面積に差は無い。但し、配線長を短くして配線による占有率の増加を抑えるためには、エラー検出回路113をFF110の内部に設け、回路111~113をまとめてコンパクトに定義したライブラリを形成することが好ましい。
第1実施形態は、以下の実施例EX1_1~EX1_4を含む。第1実施形態にて上述した事項は、特に記述無き限り且つ矛盾無き限り、以下の実施例EX1_1~EX1_4に適用され、各実施例において、第1実施形態で上述した事項と矛盾する事項については各実施例での記載が優先されて良い。また矛盾無き限り、実施例EX1_1~EX1_4の内、任意の実施例に記載した事項を、他の任意の実施例に適用することもできる(即ち複数の実施例の内の任意の2以上の実施例を組み合わせることも可能である)。
[実施例EX1_1]
実施例EX1_1を説明する。図1のデータ記憶回路100においてセレクタ140は必須ではない。この場合、データ入力端子110INに対してデータDDが直接入力される。そしてこの場合、クロック有効制御信号CLKCNTの値は原則“1”とされ、データDDとしてデータ入力端子110INに入力された書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112の双方に取り込まれた後に信号CLKCNTの値が“1”から“0”に切り替えられる。そして、マスタラッチ回路111及びスレーブラッチ回路112の双方にて書き込み対象データDWRが保持されている状態で、まずマスタクロックを停止し、その後にスレーブクロックを停止すれば良い。
[実施例EX1_2]
実施例EX1_2を説明する。図1にはFF110が1つしか示されていないが、データ記憶回路100においてFF110は複数設けられていても良い。そして、共通のクロックで動作可能なFF110に対して1つのクロック制御回路120を割り当てておけば、クロック制御回路120の設置によるオーバーヘッドは最小化される。特に、共通のクロックで動作可能なFF110が多数存在する場合にあっては、クロック制御回路120の設置によるオーバーヘッドは無視できる程度に小さくなる。
単純な例として、共通のクロックで動作可能な2つのFF110に注目し、2つのFF110を備えたデータ記憶回路100であるデータ記憶回路100’の構成を図8に示す。データ記憶回路100’はFF110及びセレクタ140から成るブロックを2つ分備え、各ブロックにおいてFF110及びセレクタ140の構成及び接続関係並びに入出力データは上述した通りである。実施例EX1_2において、第1ブロックとは1つのFF110と1つのセレクタ140とから成るブロックを指し、第2ブロックとは他の1つのFF110と他の1つのセレクタ140とから成るブロックを指す。
データ記憶回路100’には、第1及び第2ブロックに共通して割り当てられる回路として、単一のクロック制御回路120と単一のクロック有効制御回路130が設けられる。
データ記憶回路100’におけるクロック有効制御回路130は、各ブロックのセレクタ140に供給される書き込み制御信号CNTWRの値が“1”から“0”に変化するまではクロック有効制御信号CLKCNTの値を“1”とし、各ブロックのセレクタ140に供給される書き込み制御信号CNTWRの値が“1”から“0”に変化した後、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させ、以後、信号CLKCNTの値を“0”で固定して良い。但し、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させるタイミングは、各FF110において書き込み対象データDWRがスレーブ出力データQSに現れた後のタイミングとされる。
第1及び第2ブロックのセレクタ140に供給される書き込み制御信号CNTWRは、第1及び第2ブロックに対して共通に供給される単一の書き込み制御信号CNTWRであっても良い。この場合、データDDとして供給される書き込み対象データDWRがFF110に書き込まれるタイミング(FF110のマスタラッチ回路111及びスレーブラッチ回路112に取り込まれるタイミング)は、第1及び第2ブロック間で共通となる。第1ブロックと第2ブロックに対して互いに異なる書き込み制御信号CNTWRが供給されても良い。この場合、データDDとして供給される書き込み対象データDWRがFF110に書き込まれるタイミング(FF110のマスタラッチ回路111及びスレーブラッチ回路112に取り込まれるタイミング)は、第1及び第2ブロック間で相違する。
クロック制御回路120の動作は上述した通りである。クロック制御回路120は、第1及び第2ブロックのFF110において書き込み対象データDWRの書き込みが完了した後(即ち、第1及び第2ブロックの夫々において書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112の双方に取り込まれた後)、マスタクロック及びスレーブクロックを停止させることで上記クロック停止状態に移行することになる。
各ブロックからの信号SERRは図示されない上位制御回路に供給される。上位制御回路は、クロック停止状態において、第1又は第2ブロックから“1”の値を有する信号SERR(即ちエラー検出信号)を受けると所定のエラー対応処理を実行する。
第1及び第2ブロックを有するデータ記憶回路100’を説明したが、3以上のブロックが存在する場合も同様であって良い。
またここでは、各ブロックにセレクタ140が含まれる構成を説明したが、各ブロックからセレクタ140が削除されても良い。この場合、クロック有効制御信号CLKCNTの値は原則“1”とされ、データDDとしてデータ入力端子110INに入力された書き込み対象データDWRがマスタラッチ回路111及びスレーブラッチ回路112の双方に取り込まれるという書き込み動作が全ブロックにて行われた後に信号CLKCNTの値が“1”から“0”に切り替えられる。そして、クロック制御回路120は、全ブロックにおいてマスタラッチ回路111及びスレーブラッチ回路112の双方にて書き込み対象データDWRが保持されている状態で、まずマスタクロックを停止し、その後にスレーブクロックを停止すれば良い。
[実施例EX1_3]
実施例EX1_3を説明する。実施例EX1_2において単一のクロック制御回路120を複数のFF110にて共用する技術を説明したが、1つのFF110に対して1つのクロック制御回路120を割り当てても良く、この場合、各FF110にクロック制御回路120を内蔵させても良い。クロック有効制御回路130についても同様であって良い。
[実施例EX1_4]
実施例EX1_4を説明する。クロック制御回路120の設置によるオーバーヘッドを低減するためには実施例EX1_2に示す如く単一のクロック制御回路120を複数のFF110にて共用することが望ましい。しかしながら、そのような共用を行うと、クロック信号CLKM及びCLKSを伝搬する配線の引き延ばしに伴い、クロック信号CLKM及びCLKS間でスキュー(伝搬遅延のばらつき)が大きくなり易い。スキューの影響により、1つのFF110においてマスタラッチ回路111及びスレーブラッチ回路112が同時にデータ透過状態となるオーバーラップ時間が発生することがあるが(図9参照)、オーバーラップ時間の大きさによっては誤動作が発生しうる。
そこで、実施例EX1_2に示す如く単一のクロック制御回路120を複数のFF110にて共用する場合にあっては、各FF110においてマスタラッチ回路111及びスレーブラッチ回路112が同時にデータ透過状態とならないように、スキューを制御するか、或いは、クロック幅調整等によりノンオーバーラップ時間の確保を行うと良い。ノンオーバーラップ時間とは、図10に示す如く、マスタクロック信号CLKM及びスレーブクロック信号CLKSが共にローレベルとなる時間を指す。
ノンオーバーラップ時間を確保すべく、クロック制御回路120は、クロック停止状態でないときにおいて、マスタクロック信号CLKMのデューティとスレーブクロック信号CLKSのデューティとの和を100%よりも小さくした上で、マスタクロック信号CLKMのローレベル区間の中央とスレーブクロック信号CLKSのハイレベル区間の中央とを一致させると良い(図10参照)。任意のクロック信号に関し、クロック信号のデューティとは、クロック信号のハイレベル区間とローレベル区間との和に対する、ハイレベル区間の割合を指す。
必要なノンオーバーラップ時間の確保が難しい場合にあっては、実施例EX1_3の方法を採用することが可能である。
<<第2実施形態>>
本発明の第2実施形態を説明する。第2実施形態及び後述の第3実施形態は第1実施形態を基礎とする実施形態であり、第2及び第3実施形態において特に述べない事項に関しては、矛盾の無い限り、第1実施形態の記載が第2及び第3実施形態にも適用される。第2実施形態の記載を解釈するにあたり、第1及び第2実施形態間で矛盾する事項については第2実施形態の記載が優先されて良い(後述の第3実施形態についても同様)。
図11は第2実施形態に係るデータ記憶回路200の構成図である。第2実施形態に係るデータ記憶回路200は、フリップフロップ回路210と、クロック制御回路220と、クロック有効制御回路230と、セレクタ240と、を備える。上述したように、フリップフロップ回路は“FF”と称されることがある。データ記憶回路200は、主として、一旦FF210に必要なデータを書き込んだ後はデータの書き換えが不要となる用途で用いられる。
FF210はデータ入力端子210IN及びデータ出力端子210OUTを備える。第2実施形態において、入力データDINはデータ入力端子210INに対して入力されるデータを指し、出力データQOUTはデータ出力端子210OUTから出力されるデータを指す。図11のデータ記憶回路200は、FF210の機能により、データ入力端子210INに入力される入力データDIN(対象入力データ)を記憶して記憶データをデータ出力端子210OUTから出力データQOUT(対象出力データ)として出力することができる。
クロック制御回路220には基準クロック信号CLKINが入力される。クロック制御回路220は、基準クロック信号CLKINに基づきマスタクロック信号CLKM及びスレーブクロック信号CLKSを生成して、マスタクロック信号CLKM及びスレーブクロック信号CLKSをFF210に供給する。クロック制御回路220には、基準クロック信号CLKINとは別に、クロック有効制御回路230からクロック有効制御信号CLKCNTが入力されている。信号CLKCNTは“1”又は“0”の値をとる二値化信号であり、クロック制御回路220は、信号CLKCNTの値に応じてクロック信号CLKM及びCLKSを生成する。
信号CLKCNTに応じたクロック信号CLKM及びCLKSの生成方法、並びに、クロック信号CLKIN、CLKM及びCLKS間の関係を含むクロック信号CLKIN、CLKM及びCLKSの詳細は、第1実施形態で示した通りである(図2参照)。クロック制御回路220は図1のクロック制御回路120と同じものであって良い。
クロック有効制御回路230は、書き込み制御信号CNTWRに基づいてクロック有効制御CLKCNTを生成し、クロック制御回路220に供給する。
セレクタ240は、第1入力端、第2入力端及び制御端を有する。セレクタ240において、第1入力端にはデータ出力端子210OUTからの出力データQOUTが入力され、第2入力端にはデータDDが入力され、制御端には、図示されない書き込み制御回路からの書き込み制御信号CNTWRが入力される。セレクタ240の第2入力端には、図示されないデータ提供部からの書き込み対象データDWRがデータDDとして入力されることもあるし、有意な値を持たない不定データがデータDDとして入力されることもある。セレクタ240は、制御端に加わる書き込み制御信号CNTWRに応じて、第1入力端及び第2入力端の何れかに入力されるデータを選択し、選択したデータを出力する。セレクタ240の出力データは入力データDINとしてデータ入力端子210INに供給される。書き込み制御信号CNTWRは“1”又は“0”の値をとる二値化信号であり、書き込み制御信号CNTWRの値が“0”、“1”であるときに、セレクタ240は、夫々、第1選択状態、第2選択状態となるものとする。セレクタ240において、第1選択状態では、第1入力端に入力されるデータ(出力データQOUT)が選択されて入力データDINとしてデータ入力端子210INに入力される。セレクタ240において、第2選択状態では、第2入力端に入力されるデータDDが選択されて入力データDINとしてデータ入力端子210INに入力される。
FF210は、マスタラッチ回路とスレーブラッチ回路を備えたマスタ-スレーブ方式のフリップフロップ回路であるが、マスタラッチ回路又はスレーブラッチ回路を多重化することで、内部で発生したエラーを訂正することができる。
第2実施形態は、以下の実施例EX2_1~EX2_8を含む。第2実施形態にて上述した事項は、特に記述無き限り且つ矛盾無き限り、以下の実施例EX2_1~EX2_8に適用され、各実施例において、第2実施形態で上述した事項と矛盾する事項については各実施例での記載が優先されて良い。また矛盾無き限り、実施例EX2_1~EX2_8の内、任意の実施例に記載した事項を、他の任意の実施例に適用することもできる(即ち複数の実施例の内の任意の2以上の実施例を組み合わせることも可能である)。
[実施例EX2_1]
実施例EX2_1を説明する。図12に実施例EX2_1に係るフリップフロップ回路210a(FF210a)の構成を示す。実施例EX2_1では、図11のFF210としてFF210aが用いられる。FF210aは、1つのマスタラッチ回路211aと、2つのスレーブラッチ回路212aと、出力データ生成回路213aと、を備える。実施例EX2_1では、1つのマスタラッチ回路211a及び2つのスレーブラッチ回路212aを、3つのラッチ回路(211a、212a)と称することがある。
マスタラッチ回路211aには、データ入力端子210INに対する入力データDINがマスタ入力データDMとして入力される。マスタラッチ回路211aは、クロック制御回路220からのマスタクロック信号CLKMに基づいてマスタ入力データDM(即ち入力データDIN)を取り込み、取り込んだデータを保持するとともにマスタ出力データQMとして出力する。
各スレーブラッチ回路212aには、マスタラッチ回路211aからのマスタ出力データQMがスレーブ入力データDSとして入力される。各スレーブラッチ回路212aは、クロック制御回路220からのスレーブクロック信号CLKSに基づいてスレーブ入力データDS(即ちマスタ出力データQM)を取り込み、取り込んだデータを保持するとともにスレーブ出力データQSとして出力する。
出力データ生成回路213aは、マスタラッチ回路211aから供給されるマスタ出力データQMと、2つのスレーブラッチ回路212aから供給される2つのスレーブ出力データQSとに基づいて出力データQOUTを生成し、生成した出力データQOUTをデータ出力端子210OUTから出力する。
第1実施形態で述べたように、データDIN、DM、QM、DS、QS及びQOUTを示す信号は、夫々に、ローレベル又はハイレベルの信号レベルをとる1ビットのデジタル信号である。図12のマスタラッチ回路211a及び各スレーブラッチ回路212aの具体的な構成は任意であるが、ここでは、図3のマスタラッチ回路160がマスタラッチ回路211aとして且つ図5のスレーブラッチ回路170が各スレーブラッチ回路212aとして用いられるものとする。そうすると、データDIN、DM及びQSは正論理にて定義され、データQM及びDSは負論理にて定義されることになる。また、出力データQOUTは正論理にて定義されるものとする。但し、正論理及び負論理の定め方は任意に変更可能である。
出力データ生成回路213aは、1つのマスタ出力データQM及び2つのスレーブ出力データQSに基づき多数決で出力データQOUTを生成する。即ち、出力データ生成回路213aは、1つのマスタ出力データQM及び2つのスレーブ出力データQSの値が全て“1”となる状態a1では出力データQOUTの値も“1”とし、1つのマスタ出力データQM及び2つのスレーブ出力データQSの値が全て“0”となる状態a2では出力データQOUTの値も“0”とする。出力データ生成回路213aは、1つのマスタ出力データQM及び2つのスレーブ出力データQSの値の内、任意の2つのデータの値が“1”であって且つ残りの1つのデータの値が“0”となる状態a3では出力データQOUTの値を“1”とする。出力データ生成回路213aは、1つのマスタ出力データQM及び2つのスレーブ出力データQSの値の内、任意の2つのデータの値が“0”であって且つ残りの1つのデータの値が“1”となる状態a4では出力データQOUTの値を“0”とする。
3つのラッチ回路(211a、212a)におけるラッチを通じFF210aへの書き込み対象データDWRの書き込みが完了した後、マスタクロック及びスレーブクロックが停止されるクロック停止状態に移行するが、クロック停止状態とされる前の出力データQOUTは無効であって、データ書き込み完了後の出力データQOUTは有効であると解して良い。そして、出力データ生成回路213aは、クロック停止状態において、1つのマスタ出力データQM及び2つのスレーブ出力データQSに基づき多数決で有効な出力データQOUTを生成することになる。これにより、放射線等の影響により何れか1つのラッチ回路でエラーが発生したとしても、エラーが訂正されたデータを出力データQOUTとすることができる。
クロック停止状態において、上述の状態a1及びa2は正常状態に属し、上述の状態a3及びa4はエラー状態に属する。実施例EX2_1においてエラー状態とは、3つのラッチ回路(211a、212a)の内、何れか1つのラッチ回路にてエラーが発生している状態を指し、この状態は、1つのマスタ出力データQM及び2つのスレーブ出力データQSの内、何れか1つのデータの値が他の2つのデータの値と異なる状態に相当する。正常状態は、3つのラッチ回路(211a、212a)にてエラーが1つも発生していない状態を指す。
図13は実施例EX2_1に係るデータ記憶回路200のタイミングチャートである。タイミングTA1にて基準クロック信号CLKINにアップエッジが生じるものとする。また、任意の整数iに関して、タイミングTAi+1はタイミングTAiよりも基準クロック信号CLKINの周期の半分だけ後のタイミングであるものとし、基準クロック信号CLKINのデューティは50%であるとする。そうすると、タイミングTA1、TA3及びTA5は、基準クロック信号CLKINにおける3つの連続するアップエッジタイミングであり、タイミングTA2、TA4及びTA6は、基準クロック信号CLKINにおける3つの連続するダウンエッジタイミングである。
書き込み制御信号CNTWRの値は原則として“0”とされており、書き込み対象データDWRをFF210aに書き込むのに必要な区間においてのみ書き込み制御信号CNTWRの値が“1”とされる。図13の例において、書き込み制御信号CNTWRの値は、タイミングTA1及びTA3間においてのみ“1”とされ、それ以外では“0”とされる。タイミングTA1及びTA3間において、FF210aに書き込まれるべきデータ(換言すればFF210aにて記憶及び保持されるべきデータ)が書き込み対象データDWRとしてセレクタ240の第2入力端に入力される。故に、タイミングTA1及びTA3間において、入力データDINはセレクタ240の第2入力端への入力データである書き込み対象データDWRと一致する。タイミングTA1及びTA3間以外においてセレクタ240の第2入力端に入力されるデータDDは不定データとなりうる。
図13の例において、タイミングTA5に至るまではクロック有効制御信号CLKCNTは“1”の値を有しており、故に、少なくともタイミングTA5に至るまでは基準クロック信号CLKINのレベル変化に同期してクロック信号CLKM及びCLKSにもレベル変化が生じる。
結果、タイミングTA2におけるマスタクロック信号CLKMのアップエッジに同期して書き込み対象データDWRがマスタラッチ回路211aに取り込まれ且つマスタ出力データQMが書き込み対象データDWRと一致する。続くタイミングTA3におけるスレーブクロック信号CLKSのアップエッジに同期して書き込み対象データDWRと一致するマスタ出力データQMが各スレーブラッチ回路212aに取り込まれ且つ2つのスレーブ出力データQSは書き込み対象データDWRと一致する。結果、タイミングTA3以降、出力データ生成回路213aからの出力データQOUTは書き込み対象データDWRと一致する(即ち出力データQOUTの値は書き込み対象データDWRの値と一致する)。
図13の例では、タイミングTA3を境に書き込み制御信号CNTWRの値が“1”から“0”に変化しているが、タイミングTA3以降は書き込み対象データDWRの値と同じ値を有するデータが出力データQOUTとして現れるので、タイミングTA1から続いてタイミングTA3以降も書き込み対象データDWRの値と同じ値を有するデータが入力データDINであり続ける。
クロック制御回路220は、セレクタ240を通じ入力データDINとしてデータ入力端子210INに入力された書き込み対象データDWRがマスタラッチ回路211a及び2つのスレーブラッチ回路212aの全てに取り込まれた後、クロック信号CLKM及びCLKSのレベル変化を停止させてクロック信号CLKM及びCLKSの信号レベルをローレベルで固定するクロック停止状態に移行する。クロック停止状態では、3つのラッチ回路(211a、212a)の全てがデータ保持状態となる。
クロック有効制御回路230は、書き込み制御信号CNTWRの値が“1”から“0”に変化するまではクロック有効制御信号CLKCNTの値を“1”とし、書き込み制御信号CNTWRの値が“1”から“0”に変化した後、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させ、以後、信号CLKCNTの値を“0”で固定して良い。但し、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させるタイミングは、書き込み対象データDWRが各スレーブ出力データQSに現れた後のタイミングとされる。
クロック制御回路220は、信号CLKCNTの値が“1”から“0”に変化した後、マスタクロックを停止し(即ち、マスタクロック信号CLKMの信号レベルがローレベルで固定されるようにマスタクロック信号CLKMのレベル変化を停止させ)、且つ、スレーブクロックを停止する(即ち、スレーブクロック信号CLKSの信号レベルがローレベルで固定されるようにスレーブクロック信号CLKSのレベル変化を停止させる)。
図13の例では、タイミングTA5にて信号CLKCNTの値が“1”から“0”に変化しているため、タイミングTA5又はタイミングTA5より後にマスタクロック及びスレーブクロックが停止されているが、書き込み対象データDWRが各スレーブ出力データQSに現れた後であれば、任意のタイミングでマスタクロックを停止させて良く、任意のタイミングでスレーブクロックを停止させて良い。マスタクロックを停止させてからスレーブクロックを停止させても良いし、その逆でも良い。
但し、マスタクロック信号CLKMがハイレベルとなった直後にマスタクロックが停止されると、マスタラッチ回路211aの動作が不安定となる可能性もあるので、マスタクロック信号CLKMがローレベルであるときにマスタクロックを停止させると良い。同様に、スレーブクロック信号CLKSがローレベルであるときにスレーブクロックを停止させると良い。しかしながら例えば、タイミングTA5及びTA6間のちょうど中央のタイミングにてマスタクロックとスレーブクロックを同時に停止するといったことも可能である。
尚、図11では、クロック制御回路220とクロック有効制御回路230が別々の回路として示されているが、回路230は回路220に内包されると考えても良い。
マスタクロック及びスレーブクロックの停止にて実現されるクロック停止状態では、3つのラッチ回路(211a、212a)の全てにおいて書き込み対象データDWRが保持されているはずである。しかしながら、放射線等の影響によりラッチ回路211a又は212aの保持データが“1”から“0”へ又は“0”から“1”へ反転することがあり、この反転はエラーと称される。エラーとして、物理的な故障によるハードエラーと、放射線等の影響により一時的に誤動作が発生するソフトエラーとがあるが、ここでは、主としてソフトエラーに注目する。
クロック停止状態において、出力データ生成回路213aは、上述したように1つのマスタ出力データQM及び2つのスレーブ出力データQSに基づき多数決で出力データQOUTを生成する。
これにより、放射線等の影響により何れか1つのラッチ回路でエラーが発生したとしても、当該エラーは出力データQOUTに反映されない。即ち、エラーが訂正されたデータを出力データQOUTとすることができる。この訂正のために追加される回路は、1つのスレーブラッチ回路212aと、出力データ生成回路213aと、クロック制御回路220のみであり、TMR(Triple Modular Redundancy)などと比べて、遥かに少ないオーバーヘッドで訂正が可能となる。尚、放射線に起因するソフトエラーだけでなく、ノイズ又はクロストーク等に起因するソフトエラーも訂正可能となる。
また、上述の構成では、第2選択状態のセレクタ240により書き込み対象データDWRがデータ入力端子210INに供給されて書き込み対象データDWRが3つのラッチ回路(211a、212a)の全てに取り込まれた後、セレクタ240は第2選択状態から第1選択状態に移行する、即ち書き込み対象データDWRと一致するはずの出力データQOUTを継続的にデータ入力端子210INに供給する状態(この状態をフィードバック状態と称する)に移行し、一方で、クロック制御回路220はクロック停止状態に移行する。
これにより、書き込み対象データDWRが3つのラッチ回路(211a、212a)に取り込まれた後でありさえすれば、任意のタイミング且つ任意の順序でマスタクロック及びスレーブクロックを停止すれば良いことになるので、クロック制御回路220に複雑な構成は不要であり、タイミングに関わる煩雑な調整も不要となる。
尚、図12では出力データ生成回路213aがFF210aの内部に設けられているが、出力データ生成回路213aをFF210aの外部に設けるようにしても良い。何れの場合であっても出力データ生成回路213a自体の回路面積に差は無い。但し、配線長を短くして配線による占有率の増加を抑えるためには、出力データ生成回路213aをFF210aの内部に設け、回路211a~213aをまとめてコンパクトに定義したライブラリを形成することが好ましい。
3つのラッチ回路(211a、212a)の内、1つのラッチ回路にてエラー(主としてソフトエラー)が発生して保持データの反転が起こったとしても、多数決により出力データQOUTに影響は出ないが、仮に、その後、他のラッチ回路でもエラーが発生すると、出力データQOUTにもエラーが発生する。これを防ぐべく、エラーが発生したラッチ回路の保持データを本来のデータに戻す正常状態復帰処理を行っても良い。
出力データ生成回路213aは、クロック停止状態において、1つのマスタ出力データQM及び2つのスレーブ出力データQSに基づき3つのラッチ回路(211a、212a)の何れかにエラーが発生しているか否かを検出できる。ここで検出されるエラーは、1つのマスタ出力データQM及び2つのスレーブ出力データQSの内、何れか1つのデータの値が他の2つのデータの値と異なる状態を指し、出力データ生成回路213aは、クロック停止状態において上述の状態a3又はa4が観測されたとき、エラーが発生したと判断して所定のエラー検出信号を出力する。エラー検出信号の出力先にクロック制御回路220が含まれて良い。
図14を参照して、クロック制御回路220により実現される正常状態復帰処理PRaを説明する。FF210aにて記憶されるべき書き込み対象データDWRの値を正常値と称する。図13のタイミングTA1からタイミングTA6までの動作を経てデータ記憶回路200はフィードバック状態及びクロック停止状態となっており、フィードバック状態及びクロック停止状態となっている或るタイミングにおいて、出力データ生成回路213aからクロック制御回路220に対しエラー検出信号が出力されたことを想定する。このエラー検出信号を受けて、クロック制御回路220は、クロック停止状態の一時的な解除による正常状態復帰処理PRaを行う。
正常状態復帰処理PRaでは、まずマスタクロックの停止を解除することで基準クロック信号CLKINのレベル変化に同期してマスタクロック信号CLKMにレベル変化を発生させる処理PRa1を行う。これにより、セレクタ240を通じてデータ入力端子210INに入力される、正常値を持った出力データQOUTがマスタラッチ回路211aに取り込まれ、マスタ出力データQMの値は正常値となる。仮にマスタラッチ回路211aにエラーが発生していたのであれば、この段階でエラーが解消されることになる。
正常状態復帰処理では、処理PRa1の後、スレーブクロックの停止を解除することで基準クロック信号CLKINのレベル変化に同期してスレーブクロック信号CLKSにレベル変化を発生させる処理PRa2を行う。これにより、正常値を持ったマスタ出力データQMが各スレーブラッチ回路212aに取り込まれ、各スレーブ出力データQSの値も正常値となる。仮に一方のスレーブラッチ回路212aにエラーが発生していたのであれば、この段階でエラーが解消されることになる。
クロック制御回路220は、処理PRa1及びPRa2から成る正常状態復帰処理PRaにより、マスタ出力データQM及び各スレーブ出力データQSの値を正常値に戻した後、マスタクロック及びスレーブクロックを停止させるクロック停止状態に戻る。
図14に示される正常状態復帰処理PRaの例では、エラー検出信号を受け、タイミングTC1及びTC2間の区間だけマスタクロックの停止を解除することで処理PRa1を実現し、タイミングTC2及びTC3間の区間だけスレーブクロックの停止を解除することで処理PRa2を実現している。タイミングTC1は基準クロック信号CLKINにおける或る1つのダウンエッジタイミングであり、タイミングTC3は基準クロック信号CLKINにおける次のダウンエッジタイミングである。タイミングTC2は、タイミングTC1及びTC3間における、基準クロック信号CLKINのアップエッジタイミングである。故に、図14の例では、タイミングTC1、TC2にて、夫々、マスタクロック信号CLKMにアップエッジ、ダウンエッジが生じ、タイミングTC2、TC3にて、夫々、スレーブクロック信号CLKSにアップエッジ、ダウンエッジが生じる。結果、タイミングTC1におけるマスタクロック信号CLKMのアップエッジに同期して正常値のデータがマスタラッチ回路211aに取り込まれ、タイミングTC2におけるスレーブクロック信号CLKSのアップエッジに同期して正常値のデータが各スレーブラッチ回路212aに取り込まれる。
このように、フィードバック状態且つクロック停止状態への移行後、出力データ生成回路213aからエラー検出信号が出力されたとき、即ちマスタ出力データQM及び2つのスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、クロック制御回路220は正常状態復帰処理PRaを行うことができる。正常状態復帰処理PRaにおいて、クロック制御回路220は、クロック停止状態を一時的に解除することで、セレクタ240を通じデータ入力端子210INに供給される出力データQOUT(正常値を持つと期待される出力データQOUT)にて3つのラッチ回路(211a、212a)の保持データを更新させ、その後、クロック停止状態に戻す。
これにより、エラーの発生により値が反転したデータの値を容易に正常値に戻すことができる。
[実施例EX2_2]
実施例EX2_2を説明する。実施例EX2_2では実施例EX2_1に対する変形技術を説明する。
実施例EX2_1に係るデータ記憶回路200においてセレクタ240は必須ではない。この場合、データ入力端子210INに対してデータDDが直接入力される。そしてこの場合、クロック有効制御信号CLKCNTの値は原則“1”とされ、データDDとしてデータ入力端子210INに入力された書き込み対象データDWRが3つのラッチ回路(211a、212a)の全てに取り込まれた後に信号CLKCNTの値が“1”から“0”に切り替えられる。そして、3つのラッチ回路(211a、212a)の全てにおいて書き込み対象データDWRが保持されている状態で、まずマスタクロックを停止し、その後にスレーブクロックを停止すれば良い。
セレクタ240が存在しない場合においても、エラーが発生したラッチ回路の保持データを本来のデータに戻す正常状態復帰処理を実行可能である。これを実現するには、クロック停止状態への移行後、出力データ生成回路213aからエラー検出信号が出力されたとき、即ちマスタ出力データQM及び2つのスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、多数決により生成された出力データQOUTを用いて3つのラッチ回路(211a、212a)の保持データを更新すれば良く、この更新を行うための更新回路214aをFF210aに別途に設けておけば良い(図15参照)。
更新回路214aは、上記のエラー検出信号を受けると、その時点における出力データQOUT(多数決により生成された出力データQOUT)を入力データDINとしてFF210aのデータ入力端子210INに入力する。そして、更新回路214aは、その入力が行われている状態で、クロック停止状態を一時的に解除することでクロック信号CLKM及びCLKSをマスタラッチ回路211a及び各スレーブラッチ回路212aに供給し、これによって上記更新を実現すれば良い。更新回路214aは、上記更新を実現するために、クロック有効制御信号CLKCNTの値を一時的に“0”から“1”に切り替えることで、クロック停止状態を一時的に解除することができて良い。
[実施例EX2_3]
実施例EX2_3を説明する。図16に実施例EX2_3に係るフリップフロップ回路210b(FF210b)の構成を示す。実施例EX2_3では、図11のFF210としてFF210bが用いられる。FF210bは、2つのマスタラッチ回路211bと、1つのスレーブラッチ回路212bと、出力データ生成回路213bと、を備える。実施例EX2_3では、2つのマスタラッチ回路211b及び1つのスレーブラッチ回路212bを、3つのラッチ回路(211b、212b)と称することがある。
各マスタラッチ回路211bには、データ入力端子210INに対する入力データDINがマスタ入力データDMとして入力される。各マスタラッチ回路211bは、クロック制御回路220からのマスタクロック信号CLKMに基づいてマスタ入力データDM(即ち入力データDIN)を取り込み、取り込んだデータを保持するとともにマスタ出力データQMとして出力する。
スレーブラッチ回路212bには、2つのマスタラッチ回路211bの内、一方のマスタラッチ回路211bからのマスタ出力データQMがスレーブ入力データDSとして入力される。スレーブラッチ回路212bは、クロック制御回路220からのスレーブクロック信号CLKSに基づいてスレーブ入力データDS(即ち一方のマスタラッチ回路211bからのマスタ出力データQM)を取り込み、取り込んだデータを保持するとともにスレーブ出力データQSとして出力する。
出力データ生成回路213bは、2つのマスタラッチ回路211bから供給される2つのマスタ出力データQMと、1つのスレーブラッチ回路212bから供給される1つのスレーブ出力データQSとに基づいて出力データQOUTを生成し、生成した出力データQOUTをデータ出力端子210OUTから出力する。
第1実施形態で述べたように、データDIN、DM、QM、DS、QS及びQOUTを示す信号は、夫々に、ローレベル又はハイレベルの信号レベルをとる1ビットのデジタル信号である。図16の各マスタラッチ回路211b及びスレーブラッチ回路212bの具体的な構成は任意であるが、ここでは、図3のマスタラッチ回路160が各マスタラッチ回路211bとして且つ図5のスレーブラッチ回路170がスレーブラッチ回路212bとして用いられるものとする。そうすると、データDIN、DM及びQSは正論理にて定義され、データQM及びDSは負論理にて定義されることになる。また、出力データQOUTは正論理にて定義されるものとする。但し、正論理及び負論理の定め方は任意に変更可能である。
出力データ生成回路213bは、2つのマスタ出力データQM及び1つのスレーブ出力データQSに基づき多数決で出力データQOUTを生成する。即ち、出力データ生成回路213bは、2つのマスタ出力データQM及び1つのスレーブ出力データQSの値が全て“1”となる状態b1では出力データQOUTの値も“1”とし、2つのマスタ出力データQM及び1つのスレーブ出力データQSの値が全て“0”となる状態b2では出力データQOUTの値も“0”とする。出力データ生成回路213bは、2つのマスタ出力データQM及び1つのスレーブ出力データQSの値の内、任意の2つのデータの値が“1”であって且つ残りの1つのデータの値が“0”となる状態b3では出力データQOUTの値を“1”とする。出力データ生成回路213bは、2つのマスタ出力データQM及び1つのスレーブ出力データQSの値の内、任意の2つのデータの値が“0”であって且つ残りの1つのデータの値が“1”となる状態b4では出力データQOUTの値を“0”とする。
3つのラッチ回路(211b、212b)におけるラッチを通じFF210bへの書き込み対象データDWRの書き込みが完了した後、マスタクロック及びスレーブクロックが停止されるクロック停止状態に移行するが、クロック停止状態とされる前の出力データQOUTは無効であって、データ書き込み完了後の出力データQOUTは有効であると解して良い。そして、出力データ生成回路213bは、クロック停止状態において、2つのマスタ出力データQM及び1つのスレーブ出力データQSに基づき多数決で有効な出力データQOUTを生成することになる。これにより、放射線等の影響により何れか1つのラッチ回路でエラーが発生したとしても、エラーが訂正されたデータを出力データQOUTとすることができる。
クロック停止状態において、上述の状態b1及びb2は正常状態に属し、上述の状態b3及びb4はエラー状態に属する。実施例EX2_3においてエラー状態とは、3つのラッチ回路(211b、212b)の内、何れか1つのラッチ回路にてエラーが発生している状態を指し、この状態は、2つのマスタ出力データQM及び1つのスレーブ出力データQSの内、何れか1つのデータの値が他の2つのデータの値と異なる状態に相当する。正常状態は、3つのラッチ回路(211b、212b)にてエラーが1つも発生していない状態を指す。
図17は実施例EX2_3に係るデータ記憶回路200のタイミングチャートである。タイミングTB1にて基準クロック信号CLKINにアップエッジが生じるものとする。また、任意の整数iに関して、タイミングTBi+1はタイミングTBiよりも基準クロック信号CLKINの周期の半分だけ後のタイミングであるものとし、基準クロック信号CLKINのデューティは50%であるとする。そうすると、タイミングTB1、TB3及びTB5は、基準クロック信号CLKINにおける3つの連続するアップエッジタイミングであり、タイミングTB2、TB4及びTB6は、基準クロック信号CLKINにおける3つの連続するダウンエッジタイミングである。
書き込み制御信号CNTWRの値は原則として“0”とされており、書き込み対象データDWRをFF210bに書き込むのに必要な区間においてのみ書き込み制御信号CNTWRの値が“1”とされる。図17の例において、書き込み制御信号CNTWRの値は、タイミングTB1及びTB3間においてのみ“1”とされ、それ以外では“0”とされる。タイミングTB1及びTB3間において、FF210bに書き込まれるべきデータ(換言すればFF210bにて記憶及び保持されるべきデータ)が書き込み対象データDWRとしてセレクタ240の第2入力端に入力される。故に、タイミングTB1及びTB3間において、入力データDINはセレクタ240の第2入力端への入力データである書き込み対象データDWRと一致する。タイミングTB1及びTB3間以外においてセレクタ240の第2入力端に入力されるデータDDは不定データとなりうる。
図17の例において、タイミングTB5に至るまではクロック有効制御信号CLKCNTは“1”の値を有しており、故に、少なくともタイミングTB5に至るまでは基準クロック信号CLKINのレベル変化に同期してクロック信号CLKM及びCLKSにもレベル変化が生じる。
結果、タイミングTB2におけるマスタクロック信号CLKMのアップエッジに同期して書き込み対象データDWRが2つのマスタラッチ回路211bに取り込まれ且つ2つのマスタ出力データQMが書き込み対象データDWRと一致する。続くタイミングTB3におけるスレーブクロック信号CLKSのアップエッジに同期して書き込み対象データDWRと一致するマスタ出力データQMがスレーブラッチ回路212bに取り込まれ且つスレーブ出力データQSは書き込み対象データDWRと一致する。結果、タイミングTB3以降、出力データ生成回路213bからの出力データQOUTは書き込み対象データDWRと一致する(即ち出力データQOUTの値は書き込み対象データDWRの値と一致する)。
図17の例では、タイミングTB3を境に書き込み制御信号CNTWRの値が“1”から“0”に変化しているが、タイミングTB3以降は書き込み対象データDWRの値と同じ値を有するデータが出力データQOUTとして現れるので、タイミングTB1から続いてタイミングTB3以降も書き込み対象データDWRの値と同じ値を有するデータが入力データDINであり続ける。
クロック制御回路220は、セレクタ240を通じ入力データDINとしてデータ入力端子210INに入力された書き込み対象データDWRが2つのマスタラッチ回路211b及び1つのスレーブラッチ回路212bの全てに取り込まれた後、クロック信号CLKM及びCLKSのレベル変化を停止させてクロック信号CLKM及びCLKSの信号レベルをローレベルで固定するクロック停止状態に移行する。クロック停止状態では、3つのラッチ回路(211b、212b)の全てがデータ保持状態となる。
クロック有効制御回路230は、書き込み制御信号CNTWRの値が“1”から“0”に変化するまではクロック有効制御信号CLKCNTの値を“1”とし、書き込み制御信号CNTWRの値が“1”から“0”に変化した後、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させ、以後、信号CLKCNTの値を“0”で固定して良い。但し、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させるタイミングは、書き込み対象データDWRがスレーブ出力データQSに現れた後のタイミングとされる。
クロック制御回路220は、信号CLKCNTの値が“1”から“0”に変化した後、マスタクロックを停止し(即ち、マスタクロック信号CLKMの信号レベルがローレベルで固定されるようにマスタクロック信号CLKMのレベル変化を停止させ)、且つ、スレーブクロックを停止する(即ち、スレーブクロック信号CLKSの信号レベルがローレベルで固定されるようにスレーブクロック信号CLKSのレベル変化を停止させる)。
図17の例では、タイミングTB5にて信号CLKCNTの値が“1”から“0”に変化しているため、タイミングTB5又はタイミングTB5より後にマスタクロック及びスレーブクロックが停止されているが、書き込み対象データDWRがスレーブ出力データQSに現れた後であれば、任意のタイミングでマスタクロックを停止させて良く、任意のタイミングでスレーブクロックを停止させて良い。マスタクロックを停止させてからスレーブクロックを停止させても良いし、その逆でも良い。
但し、マスタクロック信号CLKMがハイレベルとなった直後にマスタクロックが停止されると、各マスタラッチ回路211bの動作が不安定となる可能性もあるので、マスタクロック信号CLKMがローレベルであるときにマスタクロックを停止させると良い。同様に、スレーブクロック信号CLKSがローレベルであるときにスレーブクロックを停止させると良い。しかしながら例えば、タイミングTB5及びTB6間のちょうど中央のタイミングにてマスタクロックとスレーブクロックを同時に停止するといったことも可能である。
尚、図11では、クロック制御回路220とクロック有効制御回路230が別々の回路として示されているが、回路230は回路220に内包されると考えても良い。
マスタクロック及びスレーブクロックの停止にて実現されるクロック停止状態では、3つのラッチ回路(211b、212b)の全てにおいて書き込み対象データDWRが保持されているはずである。しかしながら、放射線等の影響によりラッチ回路211b又は212bの保持データが“1”から“0”へ又は“0”から“1”へ反転することがあり、この反転はエラーと称される。エラーとして、物理的な故障によるハードエラーと、放射線等の影響により一時的に誤動作が発生するソフトエラーとがあるが、ここでは、主としてソフトエラーに注目する。
クロック停止状態において、出力データ生成回路213bは、上述したように2つのマスタ出力データQM及び1つのスレーブ出力データQSに基づき多数決で出力データQOUTを生成する。
これにより、放射線等の影響により何れか1つのラッチ回路でエラーが発生したとしても、当該エラーは出力データQOUTに反映されない。即ち、エラーが訂正されたデータを出力データQOUTとすることができる。この訂正のために追加される回路は、1つのマスタラッチ回路211bと、出力データ生成回路213bと、クロック制御回路220のみであり、TMR(Triple Modular Redundancy)などと比べて、遥かに少ないオーバーヘッドで訂正が可能となる。尚、放射線に起因するソフトエラーだけでなく、ノイズ又はクロストーク等に起因するソフトエラーも訂正可能となる。
また、上述の構成では、第2選択状態のセレクタ240により書き込み対象データDWRがデータ入力端子210INに供給されて書き込み対象データDWRが3つのラッチ回路(211b、212b)の全てに取り込まれた後、セレクタ240は第2選択状態から第1選択状態に移行する、即ち書き込み対象データDWRと一致するはずの出力データQOUTを継続的にデータ入力端子210INに供給する状態(この状態をフィードバック状態と称する)に移行し、一方で、クロック制御回路220はクロック停止状態に移行する。
これにより、書き込み対象データDWRが3つのラッチ回路(211b、212b)に取り込まれた後でありさえすれば、任意のタイミング且つ任意の順序でマスタクロック及びスレーブクロックを停止すれば良いことになるので、クロック制御回路220に複雑な構成は不要であり、タイミングに関わる煩雑な調整も不要となる。
尚、図16では出力データ生成回路213bがFF210bの内部に設けられているが、出力データ生成回路213bをFF210bの外部に設けるようにしても良い。何れの場合であっても出力データ生成回路213b自体の回路面積に差は無い。但し、配線長を短くして配線による占有率の増加を抑えるためには、出力データ生成回路213bをFF210bの内部に設け、回路211b~213bをまとめてコンパクトに定義したライブラリを形成することが好ましい。
3つのラッチ回路(211b、212b)の内、1つのラッチ回路にてエラー(主としてソフトエラー)が発生して保持データの反転が起こったとしても、多数決により出力データQOUTに影響は出ないが、仮に、その後、他のラッチ回路でもエラーが発生すると、出力データQOUTにもエラーが発生する。これを防ぐべく、エラーが発生したラッチ回路の保持データを本来のデータに戻す正常状態復帰処理を行っても良い。
出力データ生成回路213bは、クロック停止状態において、2つのマスタ出力データQM及び1つのスレーブ出力データQSに基づき3つのラッチ回路(211b、212b)の何れかにエラーが発生しているか否かを検出できる。ここで検出されるエラーは、2つのマスタ出力データQM及び1つのスレーブ出力データQSの内、何れか1つのデータの値が他の2つのデータの値と異なる状態を指し、出力データ生成回路213bは、クロック停止状態において上述の状態b3又はb4が観測されたとき、エラーが発生したと判断して所定のエラー検出信号を出力する。エラー検出信号の出力先にクロック制御回路220が含まれて良い。
図18を参照して、クロック制御回路220により実現される正常状態復帰処理PRbを説明する。FF210bにて記憶されるべき書き込み対象データDWRの値を正常値と称する。図17のタイミングTB1からタイミングTB6までの動作を経てデータ記憶回路200はフィードバック状態及びクロック停止状態となっており、フィードバック状態及びクロック停止状態となっている或るタイミングにおいて、出力データ生成回路213bからクロック制御回路220に対しエラー検出信号が出力されたことを想定する。このエラー検出信号を受けて、クロック制御回路220は、クロック停止状態の一時的な解除による正常状態復帰処理PRbを行う。
正常状態復帰処理PRbでは、まずマスタクロックの停止を解除することで基準クロック信号CLKINのレベル変化に同期してマスタクロック信号CLKMにレベル変化を発生させる処理PRb1を行う。これにより、セレクタ240を通じてデータ入力端子210INに入力される、正常値を持った出力データQOUTが各マスタラッチ回路211bに取り込まれ、2つのマスタ出力データQMの値は正常値となる。仮に一方のマスタラッチ回路211bにエラーが発生していたのであれば、この段階でエラーが解消されることになる。
正常状態復帰処理では、処理PRb1の後、スレーブクロックの停止を解除することで基準クロック信号CLKINのレベル変化に同期してスレーブクロック信号CLKSにレベル変化を発生させる処理PRb2を行う。これにより、正常値を持ったマスタ出力データQMがスレーブラッチ回路212bに取り込まれ、スレーブ出力データQSの値も正常値となる。仮にスレーブラッチ回路212bにエラーが発生していたのであれば、この段階でエラーが解消されることになる。
クロック制御回路220は、処理PRb1及びPRb2から成る正常状態復帰処理PRbにより、各マスタ出力データQM及びスレーブ出力データQSの値を正常値に戻した後、マスタクロック及びスレーブクロックを停止させるクロック停止状態に戻る。
図18に示される正常状態復帰処理PRbの例では、エラー検出信号を受け、タイミングTD1及びTD2間の区間だけマスタクロックの停止を解除することで処理PRb1を実現し、タイミングTD2及びTD3間の区間だけスレーブクロックの停止を解除することで処理PRb2を実現している。タイミングTD1は基準クロック信号CLKINにおける或る1つのダウンエッジタイミングであり、タイミングTD3は基準クロック信号CLKINにおける次のダウンエッジタイミングである。タイミングTD2は、タイミングTD1及びTD3間における、基準クロック信号CLKINのアップエッジタイミングである。故に、図18の例では、タイミングTD1、TD2にて、夫々、マスタクロック信号CLKMにアップエッジ、ダウンエッジが生じ、タイミングTD2、TD3にて、夫々、スレーブクロック信号CLKSにアップエッジ、ダウンエッジが生じる。結果、タイミングTD1におけるマスタクロック信号CLKMのアップエッジに同期して正常値のデータが各マスタラッチ回路211bに取り込まれ、タイミングTD2におけるスレーブクロック信号CLKSのアップエッジに同期して正常値のデータがスレーブラッチ回路212bに取り込まれる。
このように、フィードバック状態且つクロック停止状態への移行後、出力データ生成回路213bからエラー検出信号が出力されたとき、即ち2つのマスタ出力データQM及び1つのスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、クロック制御回路220は正常状態復帰処理PRbを行うことができる。正常状態復帰処理PRbにおいて、クロック制御回路220は、クロック停止状態を一時的に解除することで、セレクタ240を通じデータ入力端子210INに供給される出力データQOUT(正常値を持つと期待される出力データQOUT)にて3つのラッチ回路(211b、212b)の保持データを更新させ、その後、クロック停止状態に戻す。
これにより、エラーの発生により値が反転したデータの値を容易に正常値に戻すことができる。
[実施例EX2_4]
実施例EX2_4を説明する。実施例EX2_4では実施例EX2_3に対する変形技術を説明する。
実施例EX2_3に係るデータ記憶回路200においてセレクタ240は必須ではない。この場合、データ入力端子210INに対してデータDDが直接入力される。そしてこの場合、クロック有効制御信号CLKCNTの値は原則“1”とされ、データDDとしてデータ入力端子210INに入力された書き込み対象データDWRが3つのラッチ回路(211b、212b)の全てに取り込まれた後に信号CLKCNTの値が“1”から“0”に切り替えられる。そして、3つのラッチ回路(211b、212b)の全てにおいて書き込み対象データDWRが保持されている状態で、まずマスタクロックを停止し、その後にスレーブクロックを停止すれば良い。
セレクタ240が存在しない場合においても、エラーが発生したラッチ回路の保持データを本来のデータに戻す正常状態復帰処理を実行可能である。これを実現するには、クロック停止状態への移行後、出力データ生成回路213bからエラー検出信号が出力されたとき、即ち2つのマスタ出力データQM及びスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、多数決により生成された出力データQOUTを用いて3つのラッチ回路(211b、212b)の保持データを更新すれば良く、この更新を行うための更新回路214bをFF210bに別途に設けておけば良い(図19参照)。
更新回路214bは、上記のエラー検出信号を受けると、その時点における出力データQOUT(多数決により生成された出力データQOUT)を入力データDINとしてFF210bのデータ入力端子210INに入力する。そして、更新回路214bは、その入力が行われている状態で、クロック停止状態を一時的に解除することでクロック信号CLKM及びCLKSを各マスタラッチ回路211b及びスレーブラッチ回路212bに供給し、これによって上記更新を実現すれば良い。更新回路214bは、上記更新を実現するために、クロック有効制御信号CLKCNTの値を一時的に“0”から“1”に切り替えることで、クロック停止状態を一時的に解除することができて良い。
[実施例EX2_5]
実施例EX2_5を説明する。図11にはFF210が1つしか示されていないが、データ記憶回路200においてFF210は複数設けられていても良い。そして、共通のクロックで動作可能なFF210に対して1つのクロック制御回路220を割り当てておけば、クロック制御回路220の設置によるオーバーヘッドは最小化される。特に、共通のクロックで動作可能なFF210が多数存在する場合にあっては、クロック制御回路220の設置によるオーバーヘッドは無視できる程度に小さくなる。
単純な例として、共通のクロックで動作可能な2つのFF210に注目し、2つのFF210を備えたデータ記憶回路200であるデータ記憶回路200’の構成を図20に示す。データ記憶回路200’はFF210及びセレクタ240から成るブロックを2つ分備え、各ブロックにおいてFF210及びセレクタ240の構成及び接続関係並びに入出力データは上述した通りである。実施例EX2_5において、第1ブロックとは1つのFF210と1つのセレクタ240とから成るブロックを指し、第2ブロックとは他の1つのFF210と他の1つのセレクタ240とから成るブロックを指す。
尚、データ記憶回路200’に設けられる2つのFF210を含め、実施例EX2_5における各FF210は、実施例EX2_1又はEX2_2に係るFF210a(図12参照)でも良いし、実施例EX2_3又はEX2_4に係るFF210b(図16参照)でも良い。各FF210がFF210aである場合、以下の3つのラッチ回路とは、FF210aにおける1つのマスタラッチ回路211aと2つのスレーブラッチ回路212aを指し、各FF210がFF210bである場合、以下の3つのラッチ回路とは、FF210bにおける2つのマスタラッチ回路211bと1つのスレーブラッチ回路212bを指す(後述の他の実施例及び後述の他の実施形態でも同様)。
データ記憶回路200’には、第1及び第2ブロックに共通して割り当てられる回路として、単一のクロック制御回路220と単一のクロック有効制御回路230が設けられる。
データ記憶回路200’におけるクロック有効制御回路230は、各ブロックのセレクタ240に供給される書き込み制御信号CNTWRの値が“1”から“0”に変化するまではクロック有効制御信号CLKCNTの値を“1”とし、各ブロックのセレクタ240に供給される書き込み制御信号CNTWRの値が“1”から“0”に変化した後、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させ、以後、信号CLKCNTの値を“0”で固定して良い。但し、クロック有効制御信号CLKCNTの値を“1”から“0”に変化させるタイミングは、各FF210において書き込み対象データDWRがスレーブ出力データQSに現れた後のタイミングとされる。
第1及び第2ブロックのセレクタ240に供給される書き込み制御信号CNTWRは、第1及び第2ブロックに対して共通に供給される単一の書き込み制御信号CNTWRであっても良い。この場合、データDDとして供給される書き込み対象データDWRがFF210に書き込まれるタイミング(FF210の3つのラッチ回路に取り込まれるタイミング)は、第1及び第2ブロック間で共通となる。第1ブロックと第2ブロックに対して互いに異なる書き込み制御信号CNTWRが供給されても良い。この場合、データDDとして供給される書き込み対象データDWRがFF210に書き込まれるタイミング(FF210の3つのラッチ回路に取り込まれるタイミング)は、第1及び第2ブロック間で相違する。
クロック制御回路220の動作は上述した通りである。クロック制御回路220は、第1及び第2ブロックのFF210において書き込み対象データDWRの書き込みが完了した後(即ち、第1及び第2ブロックの夫々において書き込み対象データDWRが3つのラッチ回路の全てに取り込まれた後)、マスタクロック及びスレーブクロックを停止させることで上記クロック停止状態に移行することになる。
一方で、第1及び第2ブロックのFF210において書き込み対象データDWRの書き込みが完了した後(即ち、第1及び第2ブロックの夫々において書き込み対象データDWRが3つのラッチ回路の全てに取り込まれた後)、各ブロックでの書き込み制御信号CNTWRの値が“0”となることでフィードバック状態となる。
フィードバック状態且つクロック停止状態への移行後、何れかのブロックにてエラーが検出されたとき、即ち実施例EX2_1又はEX2_3に示す方法に従い、何れかのブロックのFF210に設けられた出力データ生成回路(213a又は213b)からエラー検出信号が出力されたとき、クロック制御回路220は正常状態復帰処理を行うことができる。
データ記憶回路200’における各FF210がFF210aであるならば正常状態復帰処理として実施例EX2_1に示した正常状態復帰処理PRa(図14参照)を行えば良く、データ記憶回路200’における各FF210がFF210bであるならば正常状態復帰処理として実施例EX2_3に示した正常状態復帰処理PRb(図18参照)を行えば良い。
クロック制御回路220にて生成されるクロック信号CLKM及びCLKSは各ブロックのFF210に対し共通に供給されるので、各ブロックに対し共通に正常状態復帰処理PRa又はPRbが実行されることになる。
データ記憶回路200’における各FF210がFF210aである場合において、フィードバック状態且つクロック停止状態へ移行した後、何れかのブロック(何れかのFF210a)の出力データ生成回路213aからエラー検出信号が出力されたとき、即ち何れかのFF210aにおける1つのマスタ出力データQM及び2つのスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、クロック制御回路220は正常状態復帰処理PRaを行うことができる。正常状態復帰処理PRaにおいて、クロック制御回路220は、クロック停止状態を一時的に解除することで、セレクタ240を通じデータ入力端子210INに供給される出力データQOUT(正常値を持つと期待される出力データQOUT)にて3つのラッチ回路(211a、212a)の保持データを更新させる。この更新は各ブロックにて実行される。その後、クロック制御回路220はクロック信号CLKM及びCLKSの状態をクロック停止状態に戻す。
データ記憶回路200’における各FF210がFF210bである場合において、フィードバック状態且つクロック停止状態へ移行した後、何れかのブロック(何れかのFF210b)の出力データ生成回路213bからエラー検出信号が出力されたとき、即ち何れかのFF210bにおける2つのマスタ出力データQM及び1つのスレーブ出力データQSの内、何れかのデータの値が他のデータの値と異なるエラーが検出されたとき、クロック制御回路220は正常状態復帰処理PRbを行うことができる。正常状態復帰処理PRbにおいて、クロック制御回路220は、クロック停止状態を一時的に解除することで、セレクタ240を通じデータ入力端子210INに供給される出力データQOUT(正常値を持つと期待される出力データQOUT)にて3つのラッチ回路(211b、212b)の保持データを更新させる。この更新は各ブロックにて実行される。その後、クロック制御回路220はクロック信号CLKM及びCLKSの状態をクロック停止状態に戻す。
これにより、エラーの発生により値が反転したデータの値を容易に正常値に戻すことができる。
第1及び第2ブロックを有するデータ記憶回路200’を説明したが、3以上のブロックが存在する場合も同様であって良い。
またここでは、各ブロックにセレクタ240が含まれる構成を説明したが、各ブロックからセレクタ240が削除されても良い。この場合、クロック有効制御信号CLKCNTの値は原則“1”とされ、データDDとしてデータ入力端子210INに入力された書き込み対象データDWRが3つのラッチ回路の全てに取り込まれるという書き込み動作が全ブロックにて行われた後に信号CLKCNTの値が“1”から“0”に切り替えられる。そして、クロック制御回路220は、全ブロックにおいて3つのラッチ回路の全てにて書き込み対象データDWRが保持されている状態で、まずマスタクロックを停止し、その後にスレーブクロックを停止すれば良い。
[実施例EX2_6]
実施例EX2_6を説明する。実施例EX2_5において単一のクロック制御回路220を複数のFF210にて共用する技術を説明したが、1つのFF210に対して1つのクロック制御回路220を割り当てても良く、この場合、各FF210にクロック制御回路220を内蔵させても良い。クロック有効制御回路230についても同様であって良い。
[実施例EX2_7]
実施例EX2_7を説明する。クロック制御回路220の設置によるオーバーヘッドを低減するためには実施例EX2_5に示す如く単一のクロック制御回路220を複数のFF210にて共用することが望ましい。しかしながら、そのような共用を行うと、クロック信号CLKM及びCLKSを伝搬する配線の引き延ばしに伴い、クロック信号CLKM及びCLKS間でスキュー(伝搬遅延のばらつき)が大きくなり易い。スキューの影響により、1つのFF210においてマスタラッチ回路及びスレーブラッチ回路が同時にデータ透過状態となるオーバーラップ時間が発生することがあるが(図9参照)、オーバーラップ時間の大きさによっては誤動作が発生しうる。
そこで、実施例EX2_5に示す如く単一のクロック制御回路220を複数のFF210にて共用する場合にあっては、各FF210においてマスタラッチ回路及びスレーブラッチ回路が同時にデータ透過状態とならないように、スキューを制御するか、或いは、クロック幅調整等によりノンオーバーラップ時間の確保を行うと良い。ノンオーバーラップ時間とは、図10に示す如く、マスタクロック信号CLKM及びスレーブクロック信号CLKSが共にローレベルとなる時間を指す。
ノンオーバーラップ時間を確保すべく、クロック制御回路220は、クロック停止状態でないときにおいて、マスタクロック信号CLKMのデューティとスレーブクロック信号CLKSのデューティとの和を100%よりも小さくした上で、マスタクロック信号CLKMのローレベル区間の中央とスレーブクロック信号CLKSのハイレベル区間の中央とを一致させると良い(図10参照)。任意のクロック信号に関し、クロック信号のデューティとは、クロック信号のハイレベル区間とローレベル区間との和に対する、ハイレベル区間の割合を指す。
必要なノンオーバーラップ時間の確保が難しい場合にあっては、実施例EX2_6の方法を採用することが可能である。
[実施例EX2_8]
実施例EX2_8を説明する。
実施例EX2_1等に示したようにスレーブラッチ回路を多重化する際、1つのFFの中にスレーブラッチ回路を3以上含めるようにしても良い。つまり、2以上の任意の整数mを用いて一般化すると、上述のFF210a(図12参照)においてスレーブラッチ回路212aをm個設け、出力データ生成回路213aは、1つのマスタラッチ回路211aからの1つのマスタ出力データQMと、m個のスレーブラッチ回路212aからのm個のスレーブ出力データQSとに基づき、多数決で出力データQOUTを生成しても良い。この際、1つのデータQMの値とm個のデータQSの内、“(1+m)/2”個以上のデータが“1”の値を有しておれば出力データQOUTの値も“1”とされ、そうでなければ出力データQOUTの値は“0”とされる。多数決の観点からすれば整数mは偶数であることが望ましい。
実施例EX2_3等に示したようにマスタラッチ回路を多重化する際、1つのFFの中にマスタラッチ回路を3以上含めるようにしても良い。つまり、2以上の任意の整数mを用いて一般化すると、上述のFF210b(図16参照)においてマスタラッチ回路211bをm個設け、出力データ生成回路213bは、m個のマスタラッチ回路211bからのm個のマスタ出力データQMと、1つのスレーブラッチ回路212bからの1つのスレーブ出力データQSとに基づき、多数決で出力データQOUTを生成しても良い。この際、m個のデータQMの値と1つのデータQSの内、“(1+m)/2”個以上のデータが“1”の値を有しておれば出力データQOUTの値も“1”とされ、そうでなければ出力データQOUTの値は“0”とされる。多数決の観点からすれば整数mは偶数であることが望ましい。
<<第3実施形態>>
本発明の第3実施形態を説明する。第3実施形態では、第1又は第2実施形態にて示したデータ記憶回路の利用形態などを説明する。
図21に第3実施形態に係る電子機器310の構成を示す。電子機器310は、データ提供部311、データ記憶回路312及びデータ利用部313を備える。データ記憶回路312として第1及び第2実施形態に示した任意のデータ記憶回路を利用でき、従って例えば、データ記憶回路312は、上述のデータ記憶回路100、100’、200及び200’の何れかであって良い。電子機器310としては、ノート型パーソナルコンピュータ、情報端末機、デジタルカメラ、デジタルビデオカメラ、携帯電話機(スマートフォンに分類されるものを含む)、携帯オーディオプレイヤ、センサ機器などが例示される。
データ提供部311はデータ記憶回路312に対してデータDDを供給する。データ記憶回路312が上述のデータ記憶回路100’又は200’である場合など、複数のフリップフロップ回路を備えている場合には、データ提供部311は、複数のフリップフロップ回路に対する複数のデータDDをデータ記憶回路312に供給する。データ提供部311はデータDDとして書き込み対象データDWRをデータ記憶回路312に供給することができる。
データ記憶回路312からの出力データQOUTはデータ利用部313に供給される。データ記憶回路312が上述のデータ記憶回路100’又は200’である場合など、複数のフリップフロップ回路を備えている場合には、複数のフリップフロップ回路からの出力データQOUTがデータ利用部313に供給される。
データ利用部313は、データ記憶回路312から供給される1つの出力データQOUT又は複数の出力データQOUTを用いて動作する任意の装置である。
電子機器310では、データ記憶回路312に対するデータの書き込みが必要となる書き込み必要区間とは別に、データ記憶回路312にて記憶データの書き換えが不要となる書き換え不要区間が存在し、データ記憶回路312におけるクロック制御回路(120又は220)は、書き換え不要区間においてクロック停止状態となる。データ記憶回路312に対するデータの書き込みとは、データ記憶回路312に設けられたフリップフロップ回路に対するデータの書き込みを指す。データ記憶回路312にて記憶データの書き換えとは、データ記憶回路312に設けられたフリップフロップ回路の記憶データの書き換えを指す。
第3実施形態は、以下の実施例EX3_1~EX3_2を含む。第3実施形態にて上述した事項は、特に記述無き限り且つ矛盾無き限り、以下の実施例EX3_1~EX3_2に適用され、各実施例において、第3実施形態で上述した事項と矛盾する事項については各実施例での記載が優先されて良い。また矛盾無き限り、実施例EX3_1~EX3_2の内、任意の実施例に記載した事項を、他の任意の実施例に適用することもできる(即ち複数の実施例の内の任意の2以上の実施例を組み合わせることも可能である)。
尚、第3実施形態における以下の説明において、書き込み対象データDWR、出力データQOUTなどの任意のデータは1ビット又は複数ビット分のデータであると解して良い。書き込み対象データDWRや出力データQOUTが1ビットのデータであるときには、データ記憶回路312はフリップフロップ回路を1つだけ備えたデータ記憶回路(例えば上述のデータ記憶回路100又は200)であると解され、書き込み対象データDWRや出力データQOUTが複数ビット分のデータであるときには、データ記憶回路312は複数のフリップフロップ回路を備えたデータ記憶回路(例えば上述のデータ記憶回路100’又は200’)であると解される。
[実施例EX3_1]
実施例EX3_1を説明する。実施例EX3_1では、データ記憶回路312の出力データQOUTがデータ利用部313のコンフィグレーションデータとして利用される。電子機器310の起動後、データ利用部313のコンフィグレーションデータは不変である。
例えば、データ利用部313が入力電圧から所望の電圧値を有する出力電圧を生成する電源回路である場合、製造上のばらつきに抗して出力電圧に所望の電圧値を持たせるためのパラメータデータが事前に設定され、パラメータデータが書き込み対象データDWRとしてデータ提供部311に保存される。また例えば、データ利用部313が照度を検出するための照度センサである場合、製造上のばらつきに抗して照度の検出精度を仕様範囲内に収めるためのパラメータデータが事前に設定され、パラメータデータが書き込み対象データDWRとしてデータ提供部311に保存される。この種のパラメータデータはトリミングデータと称されることもある。また例えば、データ利用部313がモータを駆動制御するためのモータドライバである場合、使用するモータに応じ適切なパラメータデータを設定する必要がある。
データ提供部311は、不揮発性メモリ(例えばOTPROM(one time programmable read only memory))、ツェナーザップ法、ポリシリコンフューズ法、又は、レーザーカット法など、周知の手法を用いてパラメータデータを不揮発的に保持し、電子機器310の起動後、所定のタイミングにてパラメータデータを書き込み対象データDWRとしてデータ記憶回路312に供給する。
データ記憶回路312は、書き込み対象データDWRを一旦記憶すると(即ちマスタラッチ回路及びスレーブラッチ回路で保持すると)、その記憶データを保持し続け、記憶データの書き換えは行われない。つまり、実施例EX3_1では、書き込み必要区間にて書き込み対象データDWRがデータ記憶回路312に記憶された後は、全て書き換え不要区間に属する。よって、図7、図13又は図17の例であれば、タイミングT3、TA3又はTB3以降の区間は全て書き換え不要区間に属すると言える。
パラメータデータのようなコンフィグレーションデータの値が放射線等に起因するソフトエラーで反転すると、データ利用部313の動作が好ましくない動作となる。第1実施形態のデータ記憶回路を用いれば、ソフトエラーの検出を通じて所定のエラー対応処理を実行することができる。第2実施形態のデータ記憶回路を用いれば、ソフトエラーを訂正することができる。
[実施例EX3_2]
実施例EX3_2を説明する。実施例EX3_2では、電子機器310の起動後、図22に示す如く、互いに分離した複数の書き換え不要区間が発生するものとする。初回の書き換え不要区間の前の区間と、互いに隣接する任意の2つの書き換え不要区間の間の区間は、夫々に、書き込み必要区間である。
各書き込み必要区間において、データ記憶回路312におけるクロック有効制御回路(130、230)はクロック有効制御信号CNTCLKの値を“1”とし、データ提供部311はデータDDとして書き込み対象データDWRをデータ記憶回路312に与える。また、データ記憶回路312に上述のセレクタ(140、240)が設けられる場合にあっては、書き込み対象データDWRがデータ記憶回路312に与えられるべき区間(書き込み必要区間)において書き込み制御信号CNTWRの値が“1”とされる。これにより、各書き込み必要区間において、書き込み対象データDWRがデータ記憶回路312のFF(110、210)に書き込まれる(即ち取り込まれて保持される)。尚、データ記憶回路312に上述のセレクタ(140、240)が設けられる場合にあっては、書き込み対象データDWRがデータ記憶回路312のFF(110、210)に書き込まれた後、書き込み制御信号CNTWRの値が“0”とされることでフィードバック状態となる。
或る1つの書き込み必要区間において、書き込み対象データDWRがデータ記憶回路312のFFに書き込まれると、書き換え不要区間に移行する。書き込み対象データDWRのデータ記憶回路312のFFに対する書き込みは、例えば、図7のタイミングT1~T3間の動作、図13のタイミングTA1~TA3間の動作、又は、図17のタイミングTB1~TB3間の動作により実現される。
各書き換え不要区間において、データ記憶回路312におけるクロック有効制御回路(130、230)はクロック有効制御信号CNTCLKの値を“0”とし、データ記憶回路312におけるクロック制御回路(120、220)はクロック信号CLKM及びCLKSの状態をクロック停止状態とする。尚、データ記憶回路312に上述のセレクタ(140、240)が設けられる場合、書き換え不要区間では常にフィードバック状態とされる。
上述のようにしておくことで、第1実施形態のデータ記憶回路100又は100’ をデータ記憶回路312として用いた場合には、各書き換え不要区間において、データ記憶回路312中のFF110にてソフトエラーが発生しているか否かを検出できる。第2実施形態のデータ記憶回路200又は200’をデータ記憶回路312として用いた場合には、各書き換え不要区間において、データ記憶回路312中のFF210にてソフトエラーが発生したとしてもソフトエラーが訂正された出力データQOUTをデータ利用部313に出力できる。
実施例EX3_2に示した上述の方法は、データの書き換えを頻繁に行う必要のないケースに好適である。データ提供部311、データ記憶回路312及びデータ利用部313から成る組がn組分設けられた電子機器310を想定して利用形態の例を説明する(nは2以上の任意の整数)。
例えば、各組において、データ記憶回路312のFF(110、210)はステートマシンであり、データ提供部311はステートマシンに対して値を書き込むステート制御部であり、データ利用部313はスレートマシンの値に応じた処理を行う処理部である。
第1の組~第nの組は同時には動作せず、或る1つのタイミングには、第1の組~第nの組の内、1つの組だけが動作する。第1の組のみが動作すべき第1の区間と、第2の組のみが動作すべき第2の区間と、・・・、第nの組のみが動作すべき第nの区間とが、この順番で交互に繰り返し訪れるとする。この場合、第1の組にとっては、第1の区間のみが書き込み必要区間となり、第2~第nの区間は書き換え不要区間となる。第2の組にとっては、第2の区間のみが書き込み必要区間となり、第1の区間及び第3~第nの区間は書き換え不要区間となる。他の組も同様である。このようなデータの書き換えを頻繁に行う必要のないケース(換言すれば、複数の書き込み必要区間が分散して訪れるケース)において、実施例EX3_2に示した方法は有益である。
尚、第1~第3実施形態で述べた任意のデータ記憶回路(100、100’、200、200’、312)は半導体集積回路の形態で形成されて良い。データ記憶回路を含む半導体集積回路と半導体集積回路を収容する筐体とを備えた半導体装置を構成できる。
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。