以下、本発明の実施例について図面を参照して説明する。
図1は、本発明の一実施例の移動平均値算出回路の構成を示したブロック図である。
図1において、移動平均値算出回路は、入力端子10aと、出力端子10bと、入力デ−タ記憶回路11と、計数回路12と、減算器13と、2分の1演算器14と、演算器15と、選択器16と、平均値記憶回路17および18と、生成回路19とを含む。
入力端子10aは、入力デ−タを受け付ける。なお、入力デ−タは、デジタル信号である。
入力デ−タ(以下、測定値と称する)は、例えば、半導体集積回路の内部温度である。なお、測定値は、半導体集積回路の内部温度に限らず適宜変更可能である。測定値が半導体集積回路の内部温度の場合、入力端子10aは、その内部温度を測定するセンサ(図示せず)から内部温度を受け付ける。
出力端子10bは、平均値記憶回路18が記憶している過去の測定値の移動平均値を出力する。以下、移動平均値を、単に平均値と称する。
入力デ−タ記憶回路11は、入力端子10aが受け付けた測定値を定期的にサンプルし、最後にサンプルした測定値を記憶することで、最新の測定値を記憶する。
計数回路12は、入力デ−タ記憶回路11が過去に測定値を記憶した回数(以下、記憶回数と称する)を計数する。具体的には、計数回路12は、その記憶回数を2になるまで計数する。
減算器13は、入力デ−タ記憶回路11が記憶した測定値および平均値記憶回路17が記憶した平均値の差分を算出する。具体的には、減算器13は、その測定値からその平均値を減算して、その測定値およびと平均値の差分を算出する。
2分の1演算器14は、減算器13が算出した差分の2分の1の値(以下、半数と称する)を算出する。
演算器15は、その半数に平均値記憶回路17が記憶した平均値を加算して、新しい平均値を算出する。
選択器16は、計数回路12が計数した記憶回数が2未満であると、入力デ−タ記憶回路11が記憶した最新の測定値を、平均値記憶回路17および18に記憶する。
また、選択器16は、計数回路12が計数した記憶回数が2以上であると、生成回路19による新しい平均値が有効か否かの判定に応じて、平均値記憶回路17が記憶した平均値をその新しい平均値に更新するか否かを判定する。
具体的には、生成回路19にて新しい平均値が有効と判定されると、選択器16は、その新しい平均値に平均値記憶回路17および18に記憶した平均値を更新する。
一方、生成回路19にて新しい平均値が無効と判定されると、選択器16は、その新しい平均値に平均値記憶回路17および18に記憶した平均値を更新せずに、平均値記憶回路17および18による平均値の記憶を保持する。
生成回路19は、新しい平均値が有効か否かを判定する。
生成回路19は、符号抽出器20と、局面管理回路21と、符号動向管理回路22と、絶対値演算器23と、しきい値記憶回路24と、超過回数管理回路25と、選択信号生成器26とを含む。
符号抽出器20は、抽出器の一例である。符号抽出器20は、減算器13が算出した差分から、その差分の符号を抽出する。差分の符号は、最新の測定値の増減方向を示す。また、差分の符号は、正であると、最新の測定値の増加方向を示し、負であると、最新の測定値の減少方向を示す。なお、本実施例では、差分が0の場合、その差分の符号は、正とする。
局面管理回路21は、生成回路19の動作を制御するための状態値を記憶する。
符号動向管理回路22は、増減値を記憶する。増減値は、過去の測定値の増減方向および増減度合を示す数値である。増減値は、正であると、過去の測定値が増加傾向であることを示し、負であると、過去の測定値が減少傾向であることを示す。また、増減値は、所定の数値範囲に含まれることが望ましい。
絶対値演算器23は、減算器13が算出した差分の絶対値を算出する。
しきい値記憶回路24は、新しい平均値が有効か否かを判定するためのしきい値を記憶する。
また、しきい値記憶回路24は、絶対値演算器23が算出した絶対値に基づいて、そのしきい値を更新する。
具体的には、先ず、しきい値記憶回路24は、減算器13が算出した差分の絶対値に所定の数を乗算して新しいしきい値を生成する。続いて、しきい値記憶回路24は、選択信号生成器26にて新しい平均値が有効と判定されると、記憶しているしきい値をその新しいしきい値に更新する。以下、所定の数は、4とする。なお、所定の数は、4に限らず適宜変更可能である。また、所定の数は、正の整数であることが望ましい。
超過回数管理回路25は、管理回路の一例である。
超過回数管理回路25は、絶対値演算器23が算出した絶対値と、しきい値記憶回路24が記憶しているしきい値とを比較して、その絶対値がそのしきい値より大きいか否かを判定する。また、超過回数管理回路25は、その絶対値がそのしきい値より大きいと判定すると、その絶対値がそのしきい値より大きいと連続して判定した判定回数を計数し、その判定回数を記憶する。
なお、超過回数管理回路25は、その判定回数が予め定められた最大回数になり、続いて、その絶対値がそのしきい値より大きいと判定すると、その判定回数を1にすることが望ましい。
選択信号生成器26は、判定器の一例である。
選択信号生成器26は、演算器15が算出した新しい平均値が有効か否かを判定する。
具体的には、先ず、選択信号生成器26は、符号抽出器20が抽出した差分の符号が示す増減方向が、符号動向管理回路22が記憶している増減値が示す増減方向と異なるか否かを判定する。
選択信号生成器26は、その差分の符号が示す増減方向が、その増減値が示す増減方向と異なると、新しい平均値を無効と判定する。
一方、選択信号生成器26は、その差分の符号が示す増減方向が、その増減値が示す増減方向と同じであると、以下の条件に応じて、新しい平均値が有効か否かを判定する。
具体的には、選択信号生成器26は、超過回数管理回路25がその絶対値はそのしきい値より小さいと判定すると、新しい平均値を有効と判定する。
また、選択信号生成器26は、超過回数管理回路25がその絶対値はそのしきい値より大きいと判定し、かつ、超過回数管理回路25にて計数された判定回数がその最大回数であると、新しい平均値を有効と判定する。
さらに、選択信号生成器26は、超過回数管理回路25がその絶対値はそのしきい値より大きいと判定し、かつ、超過回数管理回路25にて計数された判定回数がその最大回数より小さいと、新しい平均値を無効と判定する。
次に、動作を説明する。
図2aないし図3bは、平均値算出回路の動作の一例を説明するためのプログラムを示した説明図である。図2bは、図2aで示したプログラムの続きであり、図3bは、図3aで示したプログラムの続きである。なお、各行の左端に記載された数字は、プログラムの行番号を示す。
このプログラムは、VerilogHDLで記載されている。なお、VerilogHDLの言語仕様は、当業者には自明であるため、詳細な説明は省略する。
本実施例では、各種の値をVerilogHDLの2進数表記を用いて記すこともある。例えば、VerilogHDLの2進数表記では、論理0は、「1'b0」で示され、論理1は、「1'b1」で示される。
なお、入力デ−タ記憶回路11、計数回路12、平均値記憶回路17および18、局面管理回路21、符号動向管理回路22、絶対値演算器23、しきい値記憶回路24および超過回数管理回路25は、レジスタを有する回路であり、そのレジスタに記憶しているデ−タを常に出力する。また、減算器13、2分の1演算器14、演算器15、選択器16、符号抽出器20、絶対値演算器23および選択信号生成器26は、常に演算を行う組み合わせ回路であり、その演算結果を常に出力する。
図2aないし図3bにおいて、clockは、内部クロック信号(以下、クロック信号と称する)を示す。また、reset_zは、リセット信号を示す。また、c_valid_pは、デ−タ確定信号を示す。x_data_inは、入力端子10aが受け付けた測定値を示す。c_ave_outは、出力端子10bから出力される平均値を示す。
デ−タ確定信号は、論理0の場合、所定の時間が経過すると、論理1に変更される。また、デ−タ確定信号は、論理1の場合、クロック信号の一周期分の時間が経過すると、論理0に変更される。
なお、本実施例では、デ−タ確定信号に限らず各種信号は、低レベル電圧であるとき論理0であるとし、高レベル電圧であるとき論理1であるとする。
入力端子10aは、測定値を受け付け、その測定値を入力デ−タ記憶回路11に出力する。測定値は、8ビットの符号付2進数であるとする。なお、測定値は、8ビットの符号付2進数に限らず適宜変更可能である。また、本実施例では、測定値に限らず各種の値の負数は、2の補数で示されるとする。
図4は、10進数表記および2の補数で負数を示した2進数表記の関係を示した説明図である。
2の補数で負数を示した2進数表記されたデータは、最上位ビットが1であると、負数を示し、最上ビットが0であると、正数または零を示す。
入力端子10aは、測定値を受け付け、その測定値を入力デ−タ記憶回路11に出力する。
入力デ−タ記憶回路11は、図2aにおいて、行番号33でc_rcv_reg[7:0]としてレジスタ宣言され、行番号35ないし42に論理記述されている。
入力デ−タ記憶回路11は、リセット信号、クロック信号およびデ−タ確定信号を受け付け、入力端子10aから測定値を受け付ける。
そのリセット信号が論理0の場合、入力デ−タ記憶回路11は、測定初期値「0」(ZERO_VALUE=8’h00)を測定値として記憶する。
一方、そのリセット信号が論理1の場合、入力デ−タ記憶回路11は、そのデ−タ確定信号および測定値を、クロック信号のエッジに同期してサンプルする。なお、エッジは、立ち上がりエッジでも良いし、立下りエッジでも良い。以下、エッジは立ち上がりエッジとする。
そのデ−タ確定信号が論理0であると、入力デ−タ記憶回路11は、クロック信号が次のエッジを示すまで待機する。
一方、そのデ−タ確定信号が論理1であると、入力デ−タ記憶回路11は、その測定値を記憶する。
また、入力デ−タ記憶回路11は、記憶している測定値を常に減算器13および選択器16に出力する。なお、出力された測定値は、8ビットの符号付2進数である。
計数回路12は、図2aにおいて、行番号48でc_flg_1st_rcv[2:1]としてレジスタ宣言され、行番号50ないし57に論理記述されている。
計数回路12は、例えば、二つのD型フリップフロップ(以下、D−FFと称する)で構成される。以下、計数回路12は、二つのD−FFで構成されるとする。また、二つのD−FFを、それぞれ、第一D−FF(c_flg_1st_rcv[1])および第二D−FF(c_flg_1st_rcv[2])と称する。
第一および第二D−FFは、直列に接続されて、第一D−FFは、記憶している値を常に第二D−FFおよび選択器16に出力する。また、第二D−FFは、記憶している値を常に選択器16に出力する。
計数回路12(具体的には、第一D−FFおよび第二D−FF)は、クロック信号、デ−タ確定信号およびリセット信号を受け付ける。
そのリセット信号が論理0の場合、第一D−FFおよび第二D−FFは、計数初期値「論理0」を記憶する。
一方、そのリセット信号が論理1の場合、第一D−FFおよび第二D−FFは、そのデ−タ確定信号を、クロック信号のエッジに同期してサンプルする。
そのデ−タ確定信号が論理0であると、第一D−FFおよび第二D−FFは、クロック信号が次のエッジを示すまで待機する。
一方、そのデ−タ確定信号が論理1であると、第一D−FFは、論理1を記憶する。第二D−FFは、第一D−FFから受け付けている値を記憶することで、第一D−FFがデ−タ確定信号をサンプルする直前まで記憶していた値を記憶する。以下、第一D−FFが記憶している値を、第一FF値と称し、第二D−FFが記憶している値を、第二FF値と称する。
これにより、第一および第二FF値が共に論理0であると、記憶回数が0であることを示す。また、第一FF値が論理1であり、第二FF値が論理0であると、記憶回数が1であることを示す。さらに、第一および第二FF値が共に論理1であると、記憶回数が2以上であることを示す。したがって、計数回路12は、記憶回数を2になるまで計数することになり、第一FF値および第二FF値からなる情報が記憶回数となる。また、計数回路12は、記憶している記憶回数を常に選択器16出力することになる。
減算器13は、図2aにおいて、行番号25でc_delta_w[8:0]としてワイヤ宣言され、行番号65ないし72に論理記述されている。
減算器13は、入力デ−タ記憶回路11から測定値(c_rcv_reg)を受け付け、平均値記憶回路17から平均値(c_shadow_ave)を受け付ける。なお、その平均値は、8ビットの符号付2進数である。
減算器13は、その測定値および平均値を、9ビットの符号付2進数に符号拡張する。
なお、減算器13は、符号拡張を行う拡張回路を含む。この拡張回路は、図2aにおいて、行番号67でfn_8to9bitとして関数宣言され、行番号68ないし72に論理記述されている。この拡張回路は、8ビットの符号付2進数のデ−タ(exp[7:0])を受け付け、そのデ−タの最上位ビット(ビット「7」)を、その8ビットの符号付2進数のデ−タに連結して、その8ビットの符号付2進数のデ−タを9ビット符号付2進数のデ−タに符号拡張する。
減算器13は、その測定値からその平均値を減算して、その測定値および平均値の差分を算出する。減算器13は、その差分を2分の1演算器14と、符号抽出器20と、絶対値演算器23とに出力する。
2分の1演算器14は、図2aにおいて、行番号26でc_hf_delta_w[7:0]としてワイヤ宣言され、行番号78に論理記述されている。
2分の1演算器14は、減算器13から差分を受け付け、その差分の2分の1を算出する。具体的には、2分の1演算器14は、その差分(9ビット符号付2進数)の上位8ビットを、その差分の2分の1として算出する。以下、この差分の2分の1を半数と称する。2分の1演算器14は、半数を算出すると、その半数を演算器15に出力する。
演算器15は、図2aにおいて、行番号27でc_results_w[8:0]としてワイヤ宣言され、行番号84および85に論理記述されている。
演算器15は、2分の1演算器14から半数(c_hf_delta_w)を受け付け、平均値記憶回路17から平均値を受け付ける。
演算器15は、その半数および平均値を9ビットの符号付き2進数に符号拡張する。演算器15は、符号拡張した半数および平均値を加算して新しい平均値(以下、新平均値と称する)を算出する。なお、演算器15は、符号拡張を行う拡張回路を含む。
演算器15は、その新平均値を算出すると、その新平均値を選択器16に出力する。
選択器16は、図2bにおいて、行番号104でfn_selectorとして関数宣言され、行番号104ないし121に論理記述されている。
選択器16は、選択生成信号器26から選択条件信号(c_add0hold1_w)を受け付け、計数回路12から記憶回数(c_flg_1st_rcv[2:1])を受け付け、入力デ−タ記憶回路11から測定値を受け付け、演算器15から新平均値(c_results_w)を受け付け、かつ、平均値記憶回路17から平均値を受け付ける。
選択条件信号は、新平均値が無効か否かを示す。なお、選択条件信号は、論理1であると、新平均値の無効を示し、論理0であると、新平均値の有効を示す。
選択器16は、その記憶回数が2以上か否かを判定する。
その記憶回数が2未満であると、選択器16は、その測定値を平均値記憶回路17および18に記憶する平均値として選択する。
一方、その記憶回数が2以上であると、選択器16は、その選択条件信号が新平均値の無効を示すか否かを確認する。
その選択条件信号が新平均値の無効を示すと、選択器16は、その平均値を平均値記憶回路17および18に記憶する平均値として選択する。
一方、その選択条件信号が新平均値の有効を示すと、選択器16は、その新平均値を平均値記憶回路17および18に記憶する平均値として選択する。
なお、新平均値は、9ビットの符号付2進数であり、平均値記憶回路17および18に記憶する平均値は、8ビットの符号付2進数である。このため、選択器16は、平均値記憶回路17および18に記憶する平均値として新平均値を選択する際、その新平均値を8ビット符号付2進数に変換する。
具体的には、その新平均値の最上位ビット(ビット「8」)が論理0、かつ、その新平均値の最上位ビットの一桁下のビット(ビット「7」)が論理1の場合、選択器16は、その新平均値を、8ビット符号付2進数の正の最大値(MAX_VALUE=8’h7F)に変換する。
また、その新平均値の最上位ビットが論理1、かつ、その新平均値の最上位ビットの一桁下のビットが論理0の場合、選択器16は、その新平均値を、8ビット符号付2進数の負の最小値(MIN_VALUE=8’h80)に変換する。
また、その新平均値の最上位ビットが論理0、かつ、その新平均値の最上位ビットの一桁下のビットが論理0の場合、選択器16は、その新平均値を、最上位ビットが論理0であり、下位7桁のビットがその新平均値の下位7桁のビットと等しい8ビット符号付2進数に変換する。
また、その新平均値の最上位ビットが論理1、かつ、その新平均値の最上位ビットの一桁下のビットが論理1の場合、選択器16は、その新平均値を、最上位ビットが論理1であり、下位7桁のビットがその新平均値の下位7桁のビットと等しい8ビット符号付2進数に変換する。
選択器16は、平均値を選択すると、その平均値を平均値記憶回路17および18に出力する。
平均値記憶回路17は、図2bにおいて、行番号63でc_shadow_ave[7:0]としてレジスタ宣言され、平均値記憶回路18は、図2bにおいて、行番号127でc_ave_outとしてレジスタ宣言される。また、平均値記憶回路17および18は、図2bにおいて、行番号129ないし150に論理記述されている。
平均値記憶回路17および18は、リセット信号およびクロック信号を受け付け、かつ、選択器16から平均値を受け付ける。
そのリセット信号が論理0の場合、平均値記憶回路17および18は、平均初期値「0」(ZERO_VALUE=8’h00)を平均値として記憶する。
一方、そのリセット信号が論理1の場合、平均値記憶回路17および18は、選択器16から受け付けた平均値をクロック信号のエッジに同期してサンプルし、そのサンプルした平均値を記憶する。
なお、図2bでは、平均値記憶回路17および18のそれぞれは、選択器16を個別に呼び出す。しかしながら、平均値記憶回路18が呼び出す選択器16(行番号135ないし141)と、平均値記憶回路17が呼び出す選択器16(行番号142ないし148)とは、共に同じ信号が入力されているので、平均値記憶回路17および18が受け付ける平均値は、同じ値になる。
平均値記憶回路17は、記憶している平均値を常に減算器13、演算器15および選択器16に出力する。平均値記憶回路18は、記憶している平均値を常に出力端子10bに出力する。
生成回路19は、図2bでは、行番号91ないし98で、図3aおよび図3bに記載されたプログラムを呼び出すように記載されている。以下、図3aおよび図3bを参照しながら、生成回路19の動作を説明する。
図3aおよび図3bにおいて、c_deltaは、減算器13から出力された差分を示す。また、c_add0hold1は、選択条件信号を示す。
符号抽出器20は、減算器13から差分を受け付け、その差分からその差分の符号(c_sign_delta)を抽出する。差分の符号は、その差分の最上位ビットである。
符号抽出器は、その差分の符号を符号動向管理回路22および選択信号生成器26に出力する。
局面管理回路21は、図3aにおいて、行番号36でc_curt_state[2:1]としてレジスタ宣言され、行番号38ないし52に論理記述されている。
局面管理回路21は、リセット信号と、クロック信号と、デ−タ確定信号とを受け付ける。
そのリセット信号が論理0の場合、局面管理回路21は、局面初期値(HC_IDLE=2’b00)を状態値として記憶する。
一方、そのリセット信号が論理1の場合、局面管理回路21は、記憶している状態値およびデ−タ確定信号を、クロック信号のエッジに同期してサンプルする。
そのサンプルされた状態値が局面初期値であり、かつ、そのデ−タ確定信号が論理0であると、局面管理回路21は、その状態値の記憶を保持する。
また、そのサンプルされた状態値が局面初期値であり、かつ、そのデ−タ確定信号が論理1であると、局面管理回路21は、局面初期値と異なる局面第一値(2’b01)を状態値として記憶する。
また、そのサンプルされた状態値が局面第一値であると、局面管理回路21は、局面初期値および局面第一値と異なる局面第二値(2’b10)を状態値として記憶する。
さらに、そのサンプルされた状態値が局面第二値であると、局面管理回路21は、局面初期値を状態値として記憶する。
局面管理回路21は、記憶している状態値を常に、符号動向管理回路22、超過回数管理回路25および選択信号生成器26に出力する。
符号動向管理回路22は、図3aにおいて、行番号64でc_dir_man_count[2:0]としてレジスタ宣言され、行番号66ないし86に論理記述されている。
符号動向管理回路22は、リセット信号およびクロック信号を受け付け、局面管理回路21から状態値(c_curt_state[2:1])を受け付け、符号抽出器20から差分の符号(c_sign_delta)を受け付ける。
そのリセット信号が論理0の場合、符号動向管理回路22は、増減初期値(3’b011)を増減値として記憶する。
一方、そのリセット信号が論理1の場合、符号動向管理回路22は、その増減値、差分の符号および状態値を、クロック信号のエッジに同期してサンプルする。
その状態値が局面第一値でないと、符号動向管理回路22は、クロック信号が次のエッジを示すまで待機する。
一方、その状態値が局面第一値であると、符号動向管理回路22は、その増減値に基づいて、過去の測定値の増減方向を確認する。なお、過去の測定値の増減方向は、増減値の符号である。増減値の符号は、その増減値の最上位ビット(c_dir_man_count_msb)である。
符号動向管理回路22は、その差分の符号および増減値の符号に基づいて、その増減値を更新する。
具体的には、その差分の符号および増減値の符号が共に増加傾向を示すと、符号動向管理回路22は、その増減値を最大増加傾向値(MAX_POS_NUM=3’b011)に更新する。また、その差分の符号および増減値の符号が共に減少傾向を示すと、符号動向管理回路22は、その状態値を最大減少傾向値(MIN_POS_NUM=3’b100)に更新する。
なお、本実施例では、増減初期値および最大増加傾向値を同じ値「3」であるが、実際には、異なる値でもよい。
また、その差分の符号が増加傾向を示し、かつ、その増減値の符号が減少傾向を示すと、符号動向管理回路22は、その増減値に1を加算する。また、その差分の符号が減少傾向を示し、その増減値の符号が増加傾向を示すと、その増減値から1を減算する。
なお、本実施例では、増減値は、3ビットの符号付2進数としているが、3ビットの符号付2進数に限らず適宜変更可能である。
増減値のビット幅を大きくなるほど、最新の測定値の増加傾向の、過去の測定値の増加傾向への追従性が鈍くなり、増減値のビット幅を小さくなるほど、最新の測定値の増加傾向の、過去の測定値の増加傾向への追従性が鋭くなる。
本実施例の場合、例えば、増減値が最大増加傾向値になると、その増減値が測定値の減少傾向を示すためには、その差分の符号が4回連続して負になる必要がある。
符号動向管理回路22は、記憶している増減値を常に選択信号生成器26に出力する。
絶対値演算器23は、図3bにおいて、行番号19でc_abs_delta[7:0]としてワイヤ宣言され、行番号92ないし102に論理記述されている。さらに言えば、絶対値演算器23は、図3bにおいて、行番号94にfn_abs関数の呼び出しにて論理記述され、fn_abs関数は、行番号96で関数宣言され、行番号97ないし102に論理記述されている。
絶対値演算回路23は、減算器13から差分を受け付け、その差分の絶対値を算出する。
具体的には、先ず、絶対値演算回路23は、その差分から符号を確認する。続いて、絶対値演算回路23は、その符号が正であると、その差分を、その差分の絶対値として算出する。また、絶対値演算回路23は、その符号が負であると、その差分の全ビットを反転した値に1を加えて、その差分の絶対値を算出する。
絶対値演算回路23は、差分の絶対値を算出すると、その差分の絶対値をしきい値記憶回路24および超過回数管理回路25に出力する。
しきい値記憶回路24は、図3bにおいて、行番号111でc_abs_threshold_reg[9:0]としてレジスタ宣言され、行番号115ないし127に論理記述されている。
しきい値記憶回路24は、リセット信号およびクロック信号を受け付け、選択信号生成器26から選択条件信号を受け付け、絶対値演算器23から差分の絶対値(c_abs_delta[7:0])を受け付ける。
しきい値記憶回路24は、差分の絶対値を受け付けると、その差分の絶対値に4を乗算して新しいしきい値を生成する。
そのリセット信号が論理0の場合、しきい値記憶回路24は、しきい値初期値「3」(MIN_TH_VAL[9:0]=10’b0000001100)をしきい値として記憶する。なお、しきい初期値は、3に限らず適宜変更可能である。
一方、そのリセット信号が論理1の場合、しきい値記憶回路24は、その選択条件信号および新しいしきい値(c_calc_threshold_w)を、クロック信号のエッジに同期してサンプルする。
その選択条件信号が新平均値の無効(論理1)を示すと、しきい値記憶回路24は、クロック信号の次のエッジまで待機する。
一方、その選択条件信号が新平均値の有効(論理0)を示すと、しきい値記憶回路24は、記憶しているしきい値を、その新しいしきい値に更新する。
なお、その新しいしきい値が予め定めた最大値より大きい場合、しきい値記憶回路24は、記憶しているしきい値を、その最大値に更新する。その最大値は、本実施例では、64(MAX_TH_VAL[9:0]=10’b0001000000)であるが、実際には64に限らず、適宜変更可能である。
また、その新しいしきい値が予め定めた最小値より小さい場合、しきい値記憶回路24は、記憶しているしきい値を、その最小値に更新する。最小値は、本実施例では、しきい値初期値と同じ値であるが、実際には、しきい値初期値に限らず、適宜変更可能である。
しきい値記憶回路24は、記憶しているしきい値を常に超過回数管理回路25に出力する。
超過回数管理回路25は、図3bにおいて、行番号139でc_overflow_count[1:0]としてレジスタ宣言され、行番号141ないし154に論理記述されている。
超過回数管理回路25は、リセット信号およびクロック信号を受け付け、局面管理回路21から状態値を受け付け、絶対値演算器23から差分の絶対値(c_abs_delta[7:0])を受け付け、しきい値記憶回路24からしきい値を受け付ける。
超過回数管理回路25は、その差分の絶対値を受け付けると、その差分の絶対値がそのしきい値よりも大きいか否かを判定する。なお、超過回数管理回路25は、この判定を行う判定回路を含む。その判定回路は、図3aにおいて、行番号23でc_overflow_flgとしてワイヤ宣言され、図3bにおいて、行番号141に論理記述されている。
そのリセット信号が論理0の場合、超過回数管理回路25は、判定初期値「0」(OVF_CNT_INIT=2’d0)を判定回数として記憶する。
一方、そのリセット信号が論理1の場合、超過回数管理回路25は、その判定回数および状態値を、クロック信号のエッジに同期してサンプルする。
その状態値が局面第一値でないと、超過回数管理回路25は、クロック信号が次のエッジを示すまで待機する。
一方、その状態値が局面第一値であると、超過回数管理回路25は、判定回路の判定結果(c_overflow_flg)に基づいて、その判定回数を更新する。なお、判定結果は、論理1であると、その差分の絶対値がしきい値より大きいことを示し、論理0であると、差分の絶対値がしきい値以下であることを示す。
具体的には、超過回数管理回路25は、その判定結果が論理1であり、かつ、その判定回数が予め定められた最大回数(OVF_CNT_MAX)であると、判定第一値「1」(OVF_CNT_ONE=2’d1)を判定回数として記憶する。最大回数(OVF_CNT_MAX)は、本実施例では、3(2’d3)とする。
また、超過回数管理回路25は、その判定結果が論理1であり、かつ、その判定回数がその最大回数でないと、その判定回数に1を加算する。
また、超過回数管理回路25は、その判定結果が論理0であると、判定初期値を判定回数として記憶する。
超過回数管理回路25は、記憶している判定回数を常に選択信号生成器26に出力する。
選択信号生成器26は、図3bにおいて、行番号160ないし168に論理記述されている。
選択信号生成器26は、符号抽出器20から差分の符号を受け付け、局面管理回路21から状態値を受け付け、符号動向回路22から増減値を受け付け、超過回数管理回路25から判定回数を受け付ける。
選択信号生成器26は、その増減値からその増減値の符号(最上位ビット)を抽出する。選択信号生成器26は、その差分の符号および増減値の符号の論理状態が異なるか否かを検査することで、その差分の符号が示す増減方向がその増減値が示す増減方向と異なるか否かを検査する(行番号160)。なお、この検査結果は、差分の符号が示す増減方向が増減値が示す増減方向と異なると、論理1であり、差分の符号が示す増減方向が増減値が示す増減方向と同じであると、論理0であるとする。
また、選択信号生成器26は、その判定回数が、最大回数および判定初期値と異なるか否かを判断する(行番号162および163)。なお、この判断結果は、その判定回数が、最大回数および判定初期値と異なると、論理1であり、その判定回数が、最大回数または判定初期値と同じであると、論理0であるとする。
なお、その判定回数が最大回数と同じであると、その判定回数が最大回数になったことを示す。また、その判定回数が判定初期値と同じであると、差分の絶対値がしきい値以下であることを示す。
選択信号生成器26は、その検査結果、判断結果および状態値に応じて、選択条件信号を生成する。
具体的には、選択信号生成器26は、その状態値が局面第二値でないと、新平均値の無効を示す選択条件信号を生成する。
また、選択信号生成器26は、その状態値が局面第二値であっても、その検査結果および判断結果のすくなくともどちらか一方が論理1であると、新平均値の無効を示す選択条件信号を生成する。
また、選択信号生成器26は、その状態値が局面第二値であり、かつ、その検査結果および判断結果が論理0であると、新平均値の有効を示す選択条件信号を生成する。
次に、移動平均値算出回路内の各種の値の時間変化について説明する。
図5aおよび図5bは、移動平均値算出回路内の各種の値およびデ−タの時間変化の一例を説明するためのステ−ト図である。なお、図5bは、図5aの続きである。
図5aおよび図5bにおいて、reset_zは、リセット信号を示す。clockは、クロック信号を示す。c_valid_pは、デ−タ確定信号を示す。x_data_in[7:0]は、入力端子10aから出力された測定値を示す。
時刻0ないし75において、リセット信号は、論理0である。このため、リセット信号を受け付けるレジスタ回路は初期化される。
具体的には、入力デ−タ記憶回路11(c_rcv_reg[7:0])は、測定値「0」を記憶する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「0」(2'b00)を記憶する。また、局面管理回路21「c_curt_state[2:1]」は、局面初期値「2’b00」を状態値として記憶する。符号動向管理回路22(c_dir_man_count[2:0])は、増減初期値「3」を増減値として記憶する。しきい値記録回路24(c_abs_threshold_reg[9:0])は、しきい値初期値「12」をしきい値として記憶する。超過回数管理回路25(c_overflow_count[1:0])は、判定初期値「0」を判定回数として記憶する。平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、初期平均値「0」を平均値として記憶する。
なお、図5aおよび図5bにおいて、計数回路12および局面管理回路21が記憶する値のVerilogHDLの2進数表記の「2'b」は、省略している。
その後、時刻420において、そのリセット信号が論理1になり、入力端子10aから出力された測定値が「5」になったとする。
この時、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「0」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「0」のため、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「0」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻435において、クロック信号が立ち上がりエッジを示す。
この時、入力デ−タ記憶回路11(c_rcv_reg[7:0])は、論理1のデ−タ確定信号をサンプルするため、入力端子10aが時刻420以降に出力している測定値「5」を記憶する。
また、計数回路12(c_flg_1st_rcv[2:1])の第二D−FFは、第一FFから受け付けている第一FF値(論理0)を記憶し、第一D−FFは、論理1を記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面初期値(2'b00)の状態値をサンプルするため、局面第一値(2'b01)を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻420以降に出力している平均値「0」を記憶する。
なお、時刻435において、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
その後、時刻450において、入力デ−タ記憶回路11(c_rcv_reg[7:0])が選択器16に出力する測定値は、「5」に変化する。
また、計数回路12(c_flg_1st_rcv[2:1])が選択器16に出力する記憶回数は、「1」(2’b01)に変化する。
また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付けるため、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「1」のため、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻465において、クロック信号が立ち上がりエッジを示す。
この時、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻450以降に出力している平均値「5」を記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面第一値をサンプルするので、局面第二値(2'b10)を記憶する。
なお、時刻465において、選択信号生成器16は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「1」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「1」のため、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「5」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻480において、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から受け付けている状態値が局面第二値になり、論理0の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「1」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「1」のため、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「5」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻495において、クロック信号が立ち上がりエッジを示す。
この時、局面管理回路21(c_curt_state[2:1])は、局面第二値の状態値をサンプルするので、局面初期値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻480以降に出力している平均値「5」を記憶する。
なお、時刻495において、計数回路12(c_flg_1st_rcv[2:1])が出力する記憶回数は「1」である。このため、選択器16は、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「5」を平均値として出力する。
その後、時刻900において、入力端子10aから出力された測定値が「−2」に変化したとする。
この時、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付け、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「1」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「1」のため、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「5」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻915において、クロック信号が立ち上がりエッジを示す。
その時、入力デ−タ記憶回路11(c_rcv_reg[7:0])は、論理1のデ−タ確定信号(c_valid_p)をサンプルするため、入力端子10aが時刻900以降に出力している測定値「−2」を記憶する。
また、計数回路12(c_flg_1st_rcv[2:1])の第二D−FFは、第一FFから受け付けている第一FF値(論理1)を記憶し、第一D−FFは、論理1を記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面初期値の状態値をサンプルするため、局面第一値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻900以降に出力している平均値「5」を記憶する。
なお、時刻915において、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付け、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
その後、時刻930において、入力デ−タ記憶回路11(c_rcv_reg[7:0])が選択器16に出力する測定値は、「−2」に変化する。
また、計数回路12(c_flg_1st_rcv[2:1])が選択器16に出力する記憶回数は、「2」(2'b11)に変化する。なお、その後、計数回路12(c_flg_1st_rcv[2:1])は、そのリセット信号が論理0になるまで、記憶回数「2」を出力する。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第一値に変化する。
減算器13(c_delta_w[8:0])は、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「−2」から、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を減算して差分「−7」を算出し、その差分を出力する。
符号抽出器20は、その差分を受け付け、その差分の符号(c_sign_delta)を抽出する。符号抽出器20は、その差分の符号を出力する。
選択信号生成器26は、その差分の符号を受け付ける。また、選択信号生成器26は、符号動向管理回路22(c_dir_man_count[2:0])が出力した増減値(増減初期値「3」)を受け付け、その増減値の符号(c_dir_man_count_msb)を抽出する。
また、その増減値の符号と差分の符号とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付ける。このため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その記憶回数が「2」であり、かつ、その選択条件信号が論理1であるため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
なお、以降、選択器16は、計数回路12から記憶回数「2」を受け付け続けるので、選択器16は、論理1の選択条件信号を受け付けているときには、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値を出力し、論理0の選択条件信号を受け付けているときには、演算器15から受け付けた新平均値を平均値として出力することになる。
その後、時刻945において、クロック信号が立ち上がりエッジを示す。
この時、符号抽出器20は、減算器13から受け付けた差分「−7」からその差分の符号(c_sign_delta)を抽出し、その差分の符号を出力する。
符号動向管理回路22は、その差分の符号が負であり、記憶している増減値の符号(c_dir_man_count_msb)が正であり、さらに、局面管理回路21(c_curt_state[2:1])から受け付けた状態値が局面第一値であるため、その記憶している増減値から「1」を減算する。
また、局面管理回路21(c_curt_state[2:1])は、局面第一値の状態値をサンプルするので、局面第二値を状態値として記憶する。
平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻930以降に出力している平均値「5」を記憶する。
なお、時刻945において、差分の符号(c_sign_delta)と増減値の符号(c_dir_man_count_msb)とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付ける。このため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻960において、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻945以降に出力している平均値「5」を記憶する。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第二値に変化する。また、符号動向管理回路22(c_dir_man_count[2:0])が出力する増減値は、「2」に変化する。
また、差分の符号(c_sign_delta)と増減値の符号(c_dir_man_count_msb)とが異なるので、選択信号生成器26の検査結果は、論理1である。このため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻975において、クロック信号が立ち上がりエッジを示す。
この時、局面管理回路21(c_curt_state[2:1])は、局面第二値の状態値をサンプルするので、局面初期値を記憶する。
平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻960以降に出力している平均値「5」を記憶する。
なお、時刻975において、差分の符号(c_sign_delta)と増減値の符号(c_dir_man_count_msb)とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。このため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻1860において、入力端子10aから出力された測定値が「−10」に変化したとする。
この時、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻1875において、クロック信号が立ち上がりエッジを示す。
その時、入力デ−タ記憶回路11(c_rcv_reg[7:0])は、論理1のデ−タ確定信号(c_valid_p)をサンプルするため、入力端子10aが時刻1860以降に出力している測定値「−10」を記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面初期値の状態値をサンプルするため、局面第一値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻1860以降に出力している平均値「5」を記憶する。
なお、時刻1875において、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
その後、時刻1890において、入力デ−タ記憶回路11(c_rcv_reg[7:0])が選択器16に出力する測定値は、「−10」に変化する。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第一値に変化する。
減算器13(c_delta_w[8:0])は、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「−10」から、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を減算して差分「−15」を算出し、その差分を出力する。
絶対値演算器23(c_abs_delta[7:0])は、その差分を受け付け、その差分の絶対値「15」を算出する。
また、超過回数管理回路25(c_overflow_count[1:0])は、その差分の絶対値を受け付け、また、しきい値記憶回路24(c_abs_threshold_reg[9:0])からしきい値(しきい値初期値「12」)を受け付ける。
超過回数管理回路25(c_overflow_count[1:0])は、その差分の絶対値「15」がそのしきい値より大きいか否かを判定する。この場合、その差分の絶対値「15」がそのしきい値「12」より大きいので、その判定結果(c_overflow_flg)は、論理1である。
また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻1905において、クロック信号が立ち上がりエッジを示す。
この時、符号抽出器20は、減算器13(c_delta_w[8:0])から受け付けた差分「−7」からその差分の符号(c_sign_delta)を抽出し、その差分の符号を出力する。
符号動向管理回路22(c_dir_man_count[2:0])は、その差分の符号を受け付け、記憶している増減値「1」からその増減値の符号(c_dir_man_count_msb)を抽出する。
また、符号動向管理回路22は、その差分の符号が負であり、その増減値の符号が正であり、さらに、局面管理回路21(c_curt_state[2:1])から受け付けた状態値が局面第一値であるため、記憶している増減値から1を減算する。
また、超過回数管理回路25(c_overflow_count[1:0])は、局面管理回路21(c_curt_state[2:1])から受け付ける状態値が局面第一値であり、時刻1890にて判定された判定結果が(c_overflow_flg)が論理1であり、さらに、記憶している判定回数が最大回数「3」と異なるので、その判定回数に1を加算する。
また、局面管理回路21(c_curt_state[2:1])は、局面第一値の状態値をサンプルするので、局面第二値を状態値として記憶する。
平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻1890以降に出力している平均値「5」を記憶する。
なお、時刻1905において、増減値の符号(c_dir_man_count_msb)と差分の符号(c_sign_delta)とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻1920において、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])が記憶している平均値は「5」である。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第二値に変化する。また、符号動向管理回路22(c_dir_man_count[2:0])が出力する増減値は「0」に変化する。また、超過回数管理回路25(c_overflow_count[1:0])が出力する判定回数は、「1」に変化する。
また、その増減値の符号(c_dir_man_count_msb)と差分の符号(c_sign_delta)とは異なるため、選択信号生成器26の検査結果(c_rev_dir_flg)は、論理1である。
また、選択信号生成器26は、超過回数管理回路25(c_overflow_count[1:0])から受け付けた判定回数が、判定初期値「0」および最大回数「3」と異なるか否かを判断する。この場合、その判定回数は、判定初期値および最大回数と異なるので、その判断結果は、論理1である。
その検査結果および判断結果が共に論理1のため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻1935において、クロック信号が立ち上がりエッジを示す。
この時、局面管理回路21(c_curt_state[2:1])は、局面第二値の状態値をサンプルするので、局面初期値を記憶する。
平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻1920以降に出力している平均値「5」を記憶する。
なお、時刻1935において、増減値の符号(c_dir_man_count_msb)と差分の符号(c_sign_delta)とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。
また、超過回数管理回路25(c_overflow_count[1:0])において、記憶している判定回数が、判定初期値および最大回数と異なるので、その判断結果(c_valid_ovf_flg)は論理1となる。このため、選択信号生成器26は、論理1の選択条件信号(c_add0hold1_w)を出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻2340において、入力端子10aから出力された測定値が「−7」に変化したとする。
この時、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻2355において、クロック信号が立ち上がりエッジを示す。
その時、入力デ−タ記憶回路11(c_rcv_reg[7:0])は、論理1のデ−タ確定信号(c_valid_p)をサンプルするため、入力端子10aが時刻2340以降に出力している測定値「−7」を記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面初期値の状態値をサンプルするため、局面第一値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻2340以降に出力している平均値「5」を記憶する。
なお、時刻2355において、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
その後、時刻2370において、入力デ−タ記憶回路11(c_rcv_reg[7:0])が選択器16に出力する測定値は、「−7」に変化する。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第一値に変化する。
減算器13(c_delta_w[8:0])は、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「−7」から、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を減算して差分「−12」を算出し、その差分を出力する。
絶対値演算器23(c_abs_delta[7:0])は、その差分を受け付け、その差分の絶対値「12」を算出する。
符号抽出器20は、減算器13から受け付けた差分「−12」からその差分の符号(c_sign_delta)を抽出し、その差分の符号を出力する。
符号動向管理回路22は、その差分の符号(c_sign_delta)を受け付け、記憶している増減値の符号(c_dir_man_count_msb)を抽出する。
符号動向管理回路22は、その差分の符号が負であり、その増減値の符号が正であり、さらに、局面管理回路21(c_curt_state[2:1])から受け付けた状態値が局面第一値であるため、その記憶している増減値から「1」を減算する。
また、増減値の符号と差分の符号とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。
超過回数管理回路25(c_overflow_count[1:0])は、その差分の絶対値「12」がそのしきい値「12」より大きいか否かを判定する。この場合、その差分の絶対値がそのしきい値「12」と同じであるため、その判定結果(c_overflow_flg)は、論理0である。
また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面初期値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻2385において、クロック信号が立ち上がりエッジを示す。
この時、符号抽出器20は、減算器13から受け付けた差分「−12」からその差分の符号(c_sign_delta)を抽出し、その差分の符号を出力する。
符号動向管理回路22は、その差分の符号が負であり、記憶している増減値の符号(c_dir_man_count_msb)が正であり、さらに、局面管理回路21(c_curt_state[2:1])から受け付けた状態値が局面第一値であるため、その記憶している増減値から「1」を減算する。
また、超過回数管理回路25(c_overflow_count[1:0])は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付け、時刻2370における判定結果(c_overflow_flg)が論理0なので、判定初期値「0」を判定回数をとして記憶する。
また、局面管理回路21(c_curt_state[2:1])は、局面初期値の状態値をサンプルするため、局面第一値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻2370以降に出力している平均値「5」を記憶する。
なお、時刻2385において、差分の符号(c_sign_delta)と増減値の符号(c_dir_man_count_msb)とが異なるので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理1である。また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第一値の状態値を受け付けるので、論理1の選択条件信号(c_add0hold1_w)を選択器16に出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理1のため、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
時刻2400において、平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])が記憶している平均値は「5」である。
また、局面管理回路21(c_curt_state[2:1])が出力する状態値は、局面第二値に変化する。また、符号動向管理回路22(c_dir_man_count[2:0])が出力する増減値は「−1」に変化する。
また、超過回数管理回路25(c_overflow_count[1:0])が出力する判定回数は、0に変化する。
減算器13(c_delta_w[8:0])は、入力デ−タ記憶回路11(c_rcv_reg[7:0])から受け付けた測定値「−7」から、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」を減算して差分「−12」を算出し、その差分を出力する。
2分の1演算器14(c_hf_delta_w[7:0])は、減算器13(c_delta_w[8:0])から差分を受け付け、その差分を2分の1にして半数「−6」を算出する。
演算器15(c_results_w[8:0])は、平均値記憶回路17(c_shadow_ave[7:0])から受け付けた平均値「5」および2分の1演算器14(c_hf_delta_w[7:0])から受け付けた半数「−6」のそれぞれを、9ビットの符号付き2進数に符号拡張する。演算器15は、その符号拡張した平均値および半数を加算して新平均値「−1」を算出する。
絶対値演算器23(c_abs_delta[7:0])は、減算器13(c_delta_w[8:0])から差分「−12」を受け付け、その差分の絶対値「12」を算出する。絶対値演算器23は、その差分の絶対値を出力する。
しきい値記憶回路24は、その差分の絶対値を受け付けると、その差分の絶対値に4を乗算して、新しいしきい値(c_calc_threshold_w[9:0])「48」を生成する。
選択信号生成器26は、その差分「−12」を受け付け、その差分の符号(c_sign_delta)を抽出する。また、選択信号生成器26は、符号動向管理回路22(c_dir_man_count[2:0])が出力した増減値「−1」を受け付け、その増減値の符号(c_dir_man_count_msb)を抽出する。
選択信号生成器26は、その差分の符号および増減値の符号の論理状態が同じか否かを検査する。この場合、その差分の符号と増減値の符号が同じなので、論理0の検査結果(c_rev_dir_flg)を得る。
選択信号生成器26は、超過回数管理回路25(c_overflow_count[1:0])から受け付けた判定回数が、判定初期値「0」と同じなので、選択信号生成器26の判断結果(c_valid_ovf_flg)は論理0である。
また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])局面第一値の状態値を受け付ける。また、その検査結果(c_rev_dir_flg)および判断結果(c_valid_ovf_flg)が共に論理0なので、選択信号生成器26は、論理0の選択条件信号(c_add0hold1_w)を選択器26に出力する。また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理0のため、演算器15(c_results_w[8:0])から受け付けた新平均値「−1」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
さらに言えば、先ず、選択器16は、その新平均値「−1」の最上位ビットおよびその最上位ビットの一桁下のビットが共に論理1なので、最上位ビットが論理1であり、下位7桁のビットがその新平均値の下位7桁のビットと等しい8ビット符号付2進数に変換する。続いて、選択器16は、その変換した新平均値を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻2415において、クロック信号が立ち上がりエッジを示す。
この時、局面管理回路21(c_curt_state[2:1])は、局面第二値の状態値をサンプルするので、局面初期値を記憶する。
また、平均値記憶回路17(c_shadow_ave[7:0])と平均値記憶回路18(c_ave_out[7:0])は、選択器16が時刻2400以降に出力している平均値「−1」を記憶する。
また、しきい値記憶回路24(c_abs_threshold_reg[9:0])は、論理0の選択条件信号(c_add0hold1_w)を受け付ける。また、時刻2400以降に生成している新しいしきい値「48」が、最小値「12」より大きく、かつ、最大値「64」より小さい。このため、しきい値記憶回路24は、記憶しているしきい値を、その新しいしきい値「48」に更新する。
なお、時刻2415において、差分の符号(c_sign_delta)と増減値の符号(c_dir_man_count_msb)とが同じなので、選択信号生成器26の検査結果(c_rev_dir_flg)は論理0である。
また、選択信号生成器26は、超過回数管理回路25(c_overflow_count[1:0])から受け付けた判定回数が、判定初期値「0」と同じなので、論理0の判断結果(c_valid_ovf_flg)を得る。
また、選択信号生成器26は、局面管理回路21(c_curt_state[2:1])から局面第二値の状態値を受け付ける。選択信号生成器26は、その検査結果および判断結果が共に論理0なので、論理0の選択条件信号(c_add0hold1_w)を選択器16に出力する。
また、計数回路12(c_flg_1st_rcv[2:1])は、記憶回数「2」を選択器16に出力する。
選択器16は、その選択条件信号および記憶回数を受け付けると、その選択条件信号が論理0のため、演算器15(c_results_w[8:0])から受け付けた新平均値「−1」を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
さらに言えば、先ず、選択器16は、その新平均値「−1」の最上位ビットおよびその最上位ビットの一桁下のビットが共に論理1なので、最上位ビットが論理1であり、下位7桁のビットがその新平均値の下位7桁のビットと等しい8ビット符号付2進数に変換する。続いて、選択器16は、その変換した新平均値を、平均値として平均値記憶回路17(c_shadow_ave[7:0])および平均値記憶回路18(c_ave_out[7:0])に出力する。
その後、時刻2820において、しきい値記憶回路24(c_abs_threshold_reg[9:0])が出力するしきい値が「48」に変化する。
なお、平均値記憶回路17(c_shadow_ave[7:0])と平均値記憶回路18(c_ave_out[7:0])が記憶している平均値は、「−1」である。
次に、符号動向管理回路22(c_dir_man_count[2:0])が記憶する増減値の変化の一例を説明する。
時刻4305において、クロック信号が立ち上がりエッジを示す。
この時、符号動向管理回路22(c_dir_man_count[2:0])は、局面管理回路21(c_curt_state[2:1])から、局面第一値の状態値を受け付ける。
符号動向管理回路22(c_dir_man_count[2:0])は、符号抽出器20から「正」の差分の符号(c_sign_delta)を受け付ける。
また、符号同行管理回路22は、記憶している増減値「0」からその増減値の符号(c_dir_man_count_msb)を抽出する。
符号動向管理回路22は、その差分の符号と増減値の符号とが同じなので、最大増加傾向値「3」を増減値として記憶する。
その後、時刻4320において、符号動向管理回路22(c_dir_man_count[2:0])は、増減値「3」を出力する。
次に、しきい値記憶回路24(c_abs_threshold_reg[9:0])が記憶するしきい値の変化の一例について説明する。
時刻45135において、クロック信号が立ち上がりエッジを示す。
この時、しきい値記憶回路24(c_abs_threshold_reg[9:0])は、選択信号生成器26から論理0の選択条件信号を受け付け、絶対値演算器23(c_abs_delta[7:0])から、差分の絶対値「29」を受け付ける。
また、しきい値記憶回路24は、その差分の絶対値に4を乗算して新しいしきい値「116」を生成する。しきい値記憶回路24は、その新しいしきい値が最大値「64」より大きいので、記憶しているしきい値を、しきい値最大値「64」に更新する。
その後、時刻45540において、しきい値記憶回路24(c_abs_threshold_reg[9:0])は、しきい値「64」を出力する。
図6は、移動平均値算出回路内の各種の値およびデ−タの時間変化の一例を説明するためのグラフである。図6において、横軸は、時間を示し、縦軸は、データの値を示す。
また、入力デ−タ100は、入力データ記憶回路11が記憶した測定値の時間変化を示すグラフである。また、平均値200は、平均値記憶回路17および18が記憶した平均値の時間変化を示すグラフである。
本実施例では、入力データ記憶回路11は、最新の入力データを記憶する。平均値記憶回路17は、過去の入力データの移動平均値を記憶する。しきい値記憶回路24は、しきい値を記憶する。減算器13は、最新の入力データおよびその移動平均値の差分を算出する。2分の1演算器は、その差分の2分の1の値を算出する。演算器15は、その差分の2分の1の値にその移動平均値を加算して新しい移動平均値を算出する。絶対値演算器23は、その差分の絶対値を算出する。超過回数管理回路25は、その差分の絶対値がしきい値より大きいか否かを判定する。選択信号生成器26は、その差分の絶対値がしきい値より大きいと判定されると、新しい移動平均値を無効と判定し、その差分の絶対値がしきい値以下と判定されると、新しい移動平均値を有効と判定する。選択器16は、新しい移動平均値が有効と判定されると、その移動平均値に平均値記憶回路17に記憶されている移動平均値を更新し、その移動平均値が無効と判定されると、平均値記憶回路17による移動平均値の記憶を保持する。
この場合、最新の入力デ−タおよび過去の入力デ−タの移動平均値の差分が算出される。また、その差分の絶対値が算出される。その絶対値がしきい値より大きくなると、新しい移動平均値が無効と判定され、その絶対値がしきい値以下になると、新しい移動平均値が有効と判定される。新しい移動平均値が有効であると、過去の入力デ−タの移動平均値が新しい移動平均値に更新される。また、新しい移動平均値が無効であると、過去の入力デ−タの移動平均値の記憶が保持される。
このため、正確な移動平均値を算出することが可能になる。
また、本実施例では、超過回数管理回路25は、その絶対値がしきい値より大きいと連続して判定した判定回数を計数する。選択信号生成器26は、その判定回数が予め定められた最大回数になると、その新しい平均値を有効と判定する。
この場合、しきい値が適切な値に設定されていない場合でも、正常な値の新しい移動平均値が算出されると、その新しい移動平均値を有効と判定することが可能になる。
また、本実施例では、しきい値記憶回路24は、その絶対値に所定の数を乗算して新しいしきい値が生成される。選択信号生成器26が新しい移動平均値を有効と判定すると、しきい値記憶回路24は、記憶しているしきい値を、その新しいしきい値に更新する。
この場合、予め適切なしきい値を知ることが困難な場合でも、入力データに応じてそのしきい値を決定することが可能になる。
また、しきい値記憶回路24は、その新しいしきい値が予め定められた最大値より大きい場合、選択信号生成器26が新しい移動平均値を有効と判定すると、記憶しているしきい値をその最大値に更新する。
この場合、しきい値が大きくなりすぎるのを防止することが可能になり、正確な移動平均位置を算出することが可能になる。
また、しきい値記憶回路24は、その新しいしきい値が予め定められた最小値より小さい場合、選択信号生成器26が新しい移動平均値を有効と判定すると、記憶しているしきい値をその新しいしきい値に更新する。
この場合、しきい値が小さくなりすぎるのを防止することが可能になり、正確な移動平均位置を算出することが可能になる。
また、符号抽出器20は、減算器13にて算出された差分から、最新の入力データの増減方向を示す差分の符号を抽出する。符号動向管理回路22は、過去の入力データの増減方向および増減度合を示す増減値を記憶し、その差分の符号が示す増減方向に応じて、その増減値を更新する。選択信号生成器26は、その差分の符号が示す増減方向が、その増減値が示す増減方向と異なるか否かを検査する。選択信号生成器26は、その差分の符号が示す増減方向が、その増減値が示す増減方向と異なると、新しい移動平均値を無効と判定する。
この場合、差分の絶対値がしきい値より小さくても、異常な値の移動平均値を無効と判定することが可能になる。
以上説明した実施例において、図示した構成は単なる一例であって、本発明はその構成に限定されるものではない。
例えば、符号動向管理回路22および選択信号生成器26が個別に符号抽出器20を含んでも良い。
また、差分の絶対値に所定の数を乗算して新しいしきい値を生成していたが、固定のしきい値を用いても良い。