(57)【特許請求の範囲】
【請求項１】
アドレスを示すカウント値の情報を有したプログラムカウンタ信号を出力すると共に、出力した前記プログラムカウンタ信号を自ら入力し、入力したプログラムカウンタ信号のカウント値に応じて次回のプログラムカウンタ信号を出力するカウンタ信号出力手段と、
前記カウンタ信号出力手段からプログラムカウンタ信号を入力し、入力したプログラムカウンタ信号のカウント値に応じて、シーケンス制御命令を出力するインストラクションメモリと、
前記シーケンス制御命令を入力し、入力したシーケンス制御命令に応じて、前記カウンタ信号出力手段が出力する次回のプログラムカウンタ信号のカウント値を書き換えるプログラムカウンタ制御部と、を備え、
前記インストラクションメモリと前記プログラムカウンタ制御部とをパイプライン処理にて動作させ、
前記インストラクションメモリは、プログラムカウンタ信号によってアクセスされたアドレスにループを示すシーケンス制御命令を記憶している場合、ループを示すシーケンス制御命令を出力すると共に、回路構成に応じたループ回数を示すループ信号を出力し、
前記プログラムカウンタ制御部は、前記ループ信号を入力した後、所定タイミング毎に、前記ループ信号が示すループ回数をカウントダウンしていき、カウントダウン終了時にプログラムカウンタ信号のカウント値を書き換える書き換え信号を前記カウンタ信号出力手段に出力する
ことを特徴とするシーケンス制御回路。
【請求項２】
前記プログラムカウンタ制御部は、次回のプログラムカウンタ信号のカウント値を書き換えた場合、所定条件成立時に書き換えた内容を元に戻す復帰信号を出力する
ことを特徴とする請求項１に記載のシーケンス制御回路。
【請求項３】
前記プログラムカウンタ制御部は、今回のプログラムカウンタ信号と前回のプログラムカウンタ信号とを入力し、今回のプログラムカウンタ信号が示すカウント値から、前回のプログラムカウンタ信号が示すカウント値を減算した値が１となったときに、前記所定条件が成立したと判断して復帰信号を出力する
ことを特徴とする請求項２に記載のシーケンス制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シーケンス制御回路に関する。
【背景技術】
【０００２】
従来、半導体メモリなどのＩＣ回路を試験するための半導体試験装置が知られている。図６は、従来の半導体試験装置の一例を示す構成図である。図６に示すように、半導体試験装置１００は、被試験ＩＣ２００の良否を判定するものであって、シーケンス制御回路３００と、インストラクションメモリ４００と、パターン発生回路５００と、比較器６００とを備えている。
【０００３】
シーケンス制御回路３００は、シーケンス制御命令を実行するものである。また、シーケンス制御回路３００は、シーケンス制御命令の実行に応じてプログラムカウンタ信号Ｓａを出力する。インストラクションメモリ４００は、シーケンス制御回路３００からのプログラムカウンタ信号Ｓａによってアクセスされ、入力したプログラムカウンタ信号Ｓａに対応したパターン発生命令Ｓｂを出力するものである。
【０００４】
図７は、図６を参照して説明したシーケンス制御命令及びパターン発生命令Ｓｂの一例を示す図である。図７に示すように、シーケンス制御命令及びパターン発生命令Ｓｂはプログラムカウンタのカウント値（「０」「１」「２」・・・）毎に、それぞれ予め設定されている。
【０００５】
シーケンス制御命令は、「ＮＯＯＰ」や「ＬＯＯＰ」などの実行プログラムである。「ＮＯＯＰ」は、「ＮＯＯＰ」と記述された行を実行し、プログラムカウンタをインクリメントする命令である。図７に示す例の場合、プログラムカウンタのカウント値「０」及び「２」が「ＮＯＯＰ」となっている。このため、シーケンス制御回路３００は、プログラムカウンタのカウント値「０」及び「２」の行を実行して、プログラムカウンタのカウント値を「１」及び「３」にインクリメントすることとなる。
【０００６】
「ＬＯＯＰ」は、指定された行から「ＬＯＯＰ」と記述された行までの命令を指定回数だけ繰り返し実行する命令である。図７に示す例の場合、プログラムカウンタのカウント値「１」が「ＬＯＯＰ」となっている。また、「６」は指定回数であり、「ＡＡ」は行の指定である。「ＡＡ」で指定された行が「ＬＯＯＰ」と記述された行と同一であるので、この行は６回繰り返して実行される。すなわち、プログラムカウンタのカウント値「１」の行は６回繰り返して実行されることとなる。
【０００７】
ここで、シーケンス制御回路３００の動作を説明する。シーケンス制御回路３００は、プログラムカウンタ「０（初期値）」から順番にシーケンス制御命令を実行し、プログラムカウンタ信号Ｓａを出力する。すなわち、シーケンス制御回路３００は、まず、プログラムカウンタ「０（初期値）」のときにプログラムカウンタ信号Ｓａ「０」を出力する。また、シーケンス制御回路３００は、プログラムカウンタ「０（初期値）」のときに「ＮＯＯＰ（改行）」を実行して、プログラムカウンタを「１」に進める。次いで、シーケンス制御回路３００は、プログラムカウンタ「１」において、「ＬＯＯＰ  ６（６回繰り返し）」を実行する。これにより、シーケンス制御回路３００は、「１」となるプログラムカウンタ信号Ｓａを６回繰り返して出力することとなる。「１」となるプログラムカウンタ信号Ｓａを６回繰り返して出力した後、シーケンス制御回路３００は、プログラムカウンタを「２」に進める。その後、シーケンス制御回路３００は、プログラムカウンタ「２」において、「２」を示すプログラムカウンタ信号Ｓａを出力する。また、シーケンス制
御回路３００は、プログラムカウンタ「２」において、「ＮＯＯＰ（改行）」を実行して、プログラムカウンタを「３」に進める。以上のような動作により、シーケンス制御回路３００から出力されるプログラムカウンタ信号Ｓａは「０」「１」「１」「１」「１」「１」「１」「２」・・・となる（図８参照）。
【０００８】
また、パターン発生命令Ｓｂは、「Ｘ＝０」「Ｘ＝Ｘ＋１」などの演算式である。インストラクションメモリ４００は、入力したプログラムカウンタ信号Ｓａに対応した演算式を出力する。図７に示す例では、プログラムカウンタ「０」のときの演算式が「Ｘ＝０」であり、プログラムカウンタ「１」のときの演算式が「Ｘ＝Ｘ＋１」である。また、プログラムカウンタ「２」のときの演算式が「Ｘ＝０」である。このため、インストラクションメモリ４００は、「０」「１」「１」「１」「１」「１」「１」「２」・・・となるプログラムカウンタ信号Ｓａが入力されると、「Ｘ＝０」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝０」・・・となるパターン発生命令Ｓｂを出力することとなる（図８参照）。
【０００９】
再度、図６を参照する。パターン発生回路５００は、インストラクションメモリ４００からのパターン発生命令Ｓｂを入力し、パターン発生命令Ｓｂに従って、被測定ＩＣ２００に試験パターンＳｃを出力すると共に、比較器６００に期待パターンＳｄを出力するものである。
【００１０】
図８は、試験パターンＳｃ、及び期待パターンＳｄの詳細を示すタイミングチャートである。「０」「１」「１」「１」「１」「１」「１」「２」・・・となるプログラムカウンタ信号Ｓａがインストラクションメモリ４００に入力され、「Ｘ＝０」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝０」・・・となるパターン発生命令Ｓｂがパターン発生回路５００に入力されたとする。このとき、パターン発生回路５００は、入力したパターン発生命令Ｓｂ（演算式）を実行し、実行して得られた試験パターンＳｃ、及び期待パターンＳｄを出力する。すなわち、パターン発生回路５００は、入力したパターン発生命令Ｓｂが「Ｘ＝０」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝Ｘ＋１」「Ｘ＝０」・・・である場合、「０」「１」「２」「３」「４」「５」「６」「０」・・・となる試験パターンＳｃ、及び期待パターンＳｄを出力することとなる。
【００１１】
比較器６００は、パターン発生回路５００からの期待パターンＳｄと被測定ＩＣ２００からの出力信号Ｓｅとを比較して、被測定ＩＣ２００の良否を判定するものである。すなわち、比較器６００は、パターン発生回路５００からの期待パターンＳｄが「０」「１」「２」「３」「４」「５」「６」「０」・・・である場合、被測定ＩＣ２００から期待パターンＳｄと一致する「０」「１」「２」「３」「４」「５」「６」「０」・・・となる出力信号Ｓｅを入力した場合、被測定ＩＣ２００を「良」と判定する。
【００１２】
次に、シーケンス制御回路３００の詳細構成について説明する。図９は、図６に示したシーケンス制御回路３００の詳細を示す構成図である。図９に示すように、シーケンス制御回路３００は、インストラクションメモリ３０１と、プログラムカウンタ制御部３０２と、フリップフロップ３０３とを備えている。
【００１３】
インストラクションメモリ３０１は、フリップフロップ３０３からのプログラムカウンタ信号Ｓａによってアクセスされ、アクセスされたプログラムカウンタ信号Ｓａのカウント値に応じたシーケンス制御命令Ｓｆをプログラムカウンタ制御部３０２に出力するものである。
【００１４】
プログラムカウンタ制御部３０２は、インストラクションメモリ３０１からのシーケン
ス制御命令Ｓｆに応じて次回のプログラムカウンタ信号Ｓｇを出力するものである。フリップフロップ３０３は、プログラムカウンタ信号Ｓａを出力すると共に、次回のプログラムカウンタ信号Ｓｇを保持するものである。このフリップフロップ３０３は、初期値「０」を記憶しており、初期的には「０」のプログラムカウンタ信号Ｓａをシーケンス制御回路３００内のインストラクションメモリ３０１及び外部のインストラクションメモリ４００に出力することとなる。
【００１５】
図１０は、プログラムカウンタ信号Ｓａ、シーケンス制御命令Ｓｆ及び次のプログラムカウンタ信号Ｓｇの詳細を示すタイミングチャートである。フリップフロップ３０３には、初期値「０」が記憶されている。このため、最初にフリップフロップ３０３から出力されるプログラムカウンタ信号Ｓａは「０」となる。そして、「０」となるプログラムカウンタ信号Ｓａが、外部及びシーケンス制御回路３００内のインストラクションメモリ３０１に出力される。
【００１６】
インストラクションメモリ３０１は、「０」のプログラムカウンタ信号Ｓａによってアクセスされると、図７に示したように、「ＮＯＯＰ」のシーケンス制御命令Ｓｆを出力する。これにより、プログラムカウンタ制御部３０２は、「ＮＯＯＰ」を解読し、次回のプログラムカウンタ信号Ｓｇ「１」を出力する。これによって、フリップフロップ３０３は、次回のクロック入力時に、「１」のプログラムカウンタ信号Ｓａを出力する。以後、上記動作を繰り返し、シーケンス制御回路３００のフリップフロップ３０３は、「０」「１」「１」「１」「１」「１」「１」「２」・・・となるプログラムカウンタ信号Ｓａを出力する（特許文献１参照）。
【特許文献１】特開２００１−２８２３２４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ここで、従来のシーケンス制御回路３００では、インストラクションメモリ３０１のアクセスの後に、プログラムカウンタ制御部３０２の制御を行って、プログラムカウンタ信号Ｓａを出力する。このため、プログラムカウンタ信号Ｓａの出力周期の最高動作速度が、インストラクションメモリ３０１のアクセス時間とプログラムカウンタ制御部３０２の動作速度との合計で決まることとなる。
【００１８】
しかし、従来のシーケンス制御回路３００では、プログラムカウンタ信号Ｓａの出力周期の最高動作速度が、インストラクションメモリ３０１のアクセス時間とプログラムカウンタ制御部３０２の動作速度との合計で決まることから、この双方の合計時間よりも速い周期でプログラムカウンタ信号Ｓａを出力することができない。このため、シーケンス制御回路３００の一層の高速化を図るうえで障害となってしまう。
【００１９】
本発明は、このような従来の課題を解決するためになされたものであり、その目的とするところは、高速化を図ることが可能なシーケンス制御回路を提供することにある。
【課題を解決するための手段】
【００２０】
上記目的を達成するため、本発明に係るシーケンス制御回路は、アドレスを示すカウント値の情報を有したプログラムカウンタ信号を出力すると共に、出力した前記プログラムカウンタ信号を自ら入力し、入力したプログラムカウンタ信号のカウント値に応じて次回のプログラムカウンタ信号を出力するカウンタ信号出力手段と、カウンタ信号出力手段からプログラムカウンタ信号を入力し、入力したプログラムカウンタ信号のカウント値に応じて、シーケンス制御命令を出力するインストラクションメモリと、シーケンス制御命令を入力し、入力したシーケンス制御命令に応じて、カウンタ信号出力手段が出力する次回のプログラムカウンタ信号のカウント値を書き換えるプログラムカウンタ制御部と、を備
え、インストラクションメモリとプログラムカウンタ制御部とをパイプライン処理にて動作させる。
【００２１】
本発明に係るシーケンス制御回路によればインストラクションメモリとプログラムカウンタ制御部とをパイプライン処理にて動作させる。このため、インストラクションメモリのアクセスと、プログラムカウンタ制御部の制御とを同時的に行うことができる。すなわち、インストラクションメモリがカウンタ信号出力手段からのプログラムカウンタ信号によりアクセスされる間に、プログラムカウンタ制御部は、フリップフロップからのシーケンス制御命令を入力して制御を行うことができる。このように、プログラムカウンタ制御部は、インストラクションメモリがプログラムカウンタ信号によりアクセスされ、シーケンス制御命令が出力された後に、制御を行うことがなくなっており、インストラクションメモリのアクセスと、プログラムカウンタ制御部の制御とを同時的に行うことができる。また、カウンタ信号出力手段は、出力したプログラムカウンタ信号を自ら入力し、入力したプログラムカウンタ信号のカウント値に応じて次回のプログラムカウンタ信号を出力する。このため、プログラムカウンタ制御部により次回のプログラムカウンタ信号の書き換えが行われる場合以外については、インストラクションメモリのアクセス時間とプログラムカウンタ制御部の動作速度に影響を受けず、プログラムカウンタ信号を出力することができる。また、プログラムカウンタ制御部による次回のプログラムカウンタ信号の書き換えが行われるとしても、インストラクションメモリのアクセスとプログラムカウンタ制御部の制御とが同時的に行われるため、双方の合計時間に影響を受けることなく、書き換えを行うことができる。以上のように、インストラクションメモリのアクセスと、プログラムカウンタ制御部の制御とを同時的に行うことで、書き換えについても双方の合計時間に影響を受けることなく、書き換えを行わない場合については、そもそもインストラクションメモリ及びプログラムカウンタ制御部を介さず、プログラムカウンタ信号を出力できるため、高速化を図ることができる。
【００２２】
また、インストラクションメモリは、プログラムカウンタ信号によってアクセスされたアドレスにループを示すシーケンス制御命令を記憶している場合、ループを示すシーケンス制御命令を出力すると共に、回路構成に応じたループ回数を示すループ信号を出力し、プログラムカウンタ制御部は、ループ信号を入力した後、所定タイミング毎に、ループ信号が示すループ回数をカウントダウンしていき、カウントダウン終了時にプログラムカウンタ信号のカウント値を書き換える書き換え信号を前記カウンタ信号出力手段に出力することが好ましい。
【００２３】
このシーケンス制御回路によれば、インストラクションメモリは、回路構成に応じたループ回数を示すループ信号を出力し、プログラムカウンタ制御部は、所定タイミング毎に、ループ信号が示すループ回数をカウントダウンしていき、カウントダウン終了時に書き換え信号を出力する。このように、カウントダウン終了時というループサイクルの終了にあわせて書き換え信号を出力する。これにより、例えば、ループサイクルの終了にあわせてループを抜けるように、カウンタ信号出力手段から出力される次回のプログラムカウンタ信号を書き換えることができる。従って、出力したプログラムカウンタ信号を自ら入力し、入力したプログラムカウンタ信号のカウント値に応じて次回のプログラムカウンタ信号を出力するカウンタ信号出力手段を備えつつも、適切なループサイクルを実現することができる。
【００２４】
また、プログラムカウンタ制御部は、次回のプログラムカウンタ信号のカウント値を書き換えた場合、所定条件成立時に書き換えた内容を元に戻す復帰信号を出力することが好ましい。
【００２５】
このシーケンス制御回路によれば、次回のプログラムカウンタ信号のカウント値を書き
換えた場合、所定条件成立時に書き換えた内容を元に戻すため、次回、新たにシーケンス制御回路を作動させる場合に、書き換え後の状態のままとならず、次回のシーケンス制御回路の作動時においても適切にプログラムカウンタ信号を出力することができる。
【００２６】
また、プログラムカウンタ制御部は、今回のプログラムカウンタ信号と前回のプログラムカウンタ信号とを入力し、今回のプログラムカウンタ信号が示すカウント値から、前回のプログラムカウンタ信号が示すカウント値を減算した値が１となったときに、所定条件が成立したと判断して復帰信号を出力することが好ましい。
【００２７】
このシーケンス制御回路によれば、今回のプログラムカウンタ信号が示すカウント値から、前回のプログラムカウンタ信号が示すカウント値を減算した値が１となったときに、復帰信号を出力する。このため、ループが終了して改行が行われた場合に、書き換えた内容を元に戻すこととなり、プログラムカウンタ信号の出力に影響なく、次回のシーケンス制御回路の作動時においても適切にプログラムカウンタ信号を出力することができる。
【発明の効果】
【００２８】
本発明に係るシーケンス制御回路によれば、高速化を図ることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の好適な実施形態を図面に基づいて説明する。図１は、本発明の実施形態に係るシーケンス制御回路を示す構成図である。図１に示すように、シーケンス制御回路１は、図６を参照して説明したように、半導体試験装置の構成要素の１つであり、外部のインストラクションメモリにプログラムカウンタ信号Ｓａを出力するものである。なお、以下の説明においては、シーケンス制御回路１の内部において出力され、後にプログラムカウンタ信号Ｓａとして出力される信号についても、プログラムカウンタ信号と称呼するものとする。
【００３０】
このシーケンス制御回路１は、図１に示すように、カウンタ信号出力部（カウンタ信号出力手段）１０と、インストラクションメモリ２０と、フリップフロップ３１〜３３，５０と、プログラムカウンタ制御部４０とからなっている。
【００３１】
カウンタ信号出力部１０は、アドレスを示すカウント値の情報を有したプログラムカウンタ信号Ｓｊ１を出力するものであって、デュアルポートメモリ１１と、セレクタ１２とによって構成されている。デュアルポートメモリ１１は、リードアドレス（Ｒ＿ＡＤＤ）に入力された信号が示すカウント値に応じて、リードデータ（Ｒ＿ＤＡＴＡ）から信号Ｓｈを出力するものである。また、デュアルポートメモリ１１は、ライトイネーブル（Ｗ＿ＥＮ）に所定の信号が入力されることにより、ライトアドレス（Ｗ＿ＡＤＤ）、及びライトデータ（Ｗ＿ＤＡＴＡ）に入力される信号に従って、内部の記憶内容を書き換える構成となっている。
【００３２】
セレクタ１２は、デュアルポートメモリ１１から出力された信号Ｓｈと、スタートアドレス信号Ｓｉとのうち、いずれか一方を選択し、選択した信号をプログラムカウンタ信号Ｓｊ１として出力するものである。
【００３３】
具体的にデュアルポートメモリ１１は、図２に示す内容を記憶している。図２は、図１に示したデュアルポートメモリ１１の記憶内容を示す概念図である。図２に示すように、デュアルポートメモリ１１は、メモリアドレス「０」にメモリデータ「１」を記憶し、メモリアドレス「１」にメモリデータ「１」を記憶し、メモリアドレス「２」にメモリデータ「３」を記憶している。なお、メモリアドレス「３」以降については、省略する。
【００３４】
また、カウンタ信号出力部１０は、出力したプログラムカウンタ信号Ｓｊ１を自ら入力し、入力したプログラムカウンタ信号Ｓｊ１のカウント値に応じて次回のプログラムカウンタ信号Ｓｊ１を出力する構成となっている。この点について詳説する。
【００３５】
本実施形態に係るカウンタ信号出力部１０では、セレクタ１２によりカウント値「０」を示すプログラムカウンタ信号Ｓｊ１が出力されると、デュアルポートメモリ１１のリードアドレスに入力される（図１参照）。これにより、デュアルポートメモリ１１は、メモリアドレス「０」に対応するメモリデータ「１」を読み出し（図２参照）、カウント値「１」を示す信号Ｓｈをリードデータから出力することとなる。
【００３６】
また、セレクタ１２によりカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が出力されると、デュアルポートメモリ１１のリードアドレスに入力され（図１参照）、デュアルポートメモリ１１は、メモリアドレス「１」に対応するメモリデータ「１」を読み出し（図２参照）、カウント値「１」を示す信号Ｓｈをリードデータから出力することとなる。
【００３７】
なお、図１から明らかなように、本実施形態に係るカウンタ信号出力部１０は、インストラクションメモリ２０及びプログラムカウンタ制御部４０を介することなく、プログラムカウンタ信号Ｓｊ１を自ら入力する。
【００３８】
インストラクションメモリ２０は、シーケンス制御命令を記憶したものであって、図１に示すように、プログラムカウンタ信号Ｓｊ１を入力する構成となっている。図３は、図１に示したインストラクションメモリ２０の記憶内容を示す概念図である。図３に示すように、インストラクションメモリ２０は、メモリアドレス記憶領域、命令記憶領域、ループ回数記憶領域、及びジャンプアドレス記憶領域を有しており、メモリアドレスのカウント値毎に、それぞれ「ＮＯＯＰ」や「ＬＯＯＰ」などの命令、ループ回数、及びループ先のアドレスを記憶している。
【００３９】
具体的に説明すると、インストラクションメモリ２０は、メモリアドレス「０」に対応する命令記憶領域に「ＮＯＯＰ」を記憶している。メモリアドレス「０」に対応するループ回数記憶領域、及びジャンプアドレス記憶領域には、ループ回数及びループ先のアドレスは記憶されていない。また、インストラクションメモリ２０は、メモリアドレス「１」に対応する命令記憶領域に「ＬＯＯＰ」を記憶している。メモリアドレス「１」に対応するループ回数記憶領域には、ループ回数「３」が記憶されており、ジャンプアドレス記憶領域には、ループ先のアドレス「１」が記憶されている。なお、本実施形態において、ループさせるべき回数は「６」となっているが、回路構成上、ループ回数記憶領域にはループ回数が「３」として記憶されている。すなわち、ループ回数記憶領域には、ループさせるべき回数「６」から、回路構成上必要となる数「３」を減算した数「３」が記憶されている。
【００４０】
また、インストラクションメモリ２０は、メモリアドレス「２」に対応する命令記憶領域に「ＮＯＯＰ」を記憶している。メモリアドレス「２」に対応するループ回数記憶領域、及びジャンプアドレス記憶領域には、ループ回数及びループ先のアドレスは記憶されていない。なお、メモリアドレス「３」以降については、省略する。
【００４１】
このインストラクションメモリ２０は、入力したプログラムカウンタ信号Ｓｊ１のカウント値に応じて、改行又はループ、すなわち「ＮＯＯＰ」や「ＬＯＯＰ」を示すシーケンス制御命令を出力する。この点について詳説する。
【００４２】
本実施形態に係るインストラクションメモリ２０は、セレクタ１２からカウント値「０
」を示すプログラムカウンタ信号Ｓｊ１が出力されると、これを入力し（図１参照）、「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ１を第３フリップフロップ３３に出力する。
【００４３】
また、セレクタ１２によりカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が出力された場合、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。また、この場合において、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力すると共に、回路構成に応じたループ回数（本実施形態では「３」）を示すループ信号Ｓｌ２を第３フリップフロップ３３に出力する。さらに、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。
【００４４】
また、セレクタ１２によりカウント値「２」を示すプログラムカウンタ信号Ｓｊ１が出力された場合、インストラクションメモリ２０は、「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ１を第３フリップフロップ３３に出力する。なお、メモリアドレス「３」以降については、省略する。
【００４５】
フリップフロップ３１〜３３，５０は、入力した信号を保持すると共に、前回入力して保持していた信号を出力するものである。第１フリップフロップ３１は、カウンタ信号出力部１０と第４フリップフロップ５０との間に介在されている。この第１フリップフロップ３１は、カウンタ信号出力部１０からのプログラムカウンタ信号Ｓｊ１を保持し、前回入力して保持していたプログラムカウンタ信号Ｓｊ２を第４フリップフロップ５０、プログラムカウンタ制御部４０及びデュアルポートメモリ１１のライトアドレスに出力する構成となっている。
【００４６】
第２及び第３フリップフロップ３２，３３は、インストラクションメモリ２０とプログラムカウンタ制御部４０との間に介在されている。このうち、第２フリップフロップ３２は、インストラクションメモリ２０からのジャンプアドレス信号Ｓｐ１を保持し、前回入力して保持していたジャンプアドレス信号Ｓｐ２をプログラムカウンタ制御部４０に出力する構成となっている。また、第３フリップフロップ３３は、インストラクションメモリ２０からのシーケンス制御命令Ｓｌ１及びループ信号Ｓｌ２を保持し、前回入力して保持していたシーケンス制御命令Ｓｌ３及びループ信号Ｓｌ４をプログラムカウンタ制御部４０に出力する構成となっている。
【００４７】
第４フリップフロップ５０は、第１〜第３フリップフロップ３１〜３３と同様であり、第１フリップフロップ３１から入力したプログラムカウンタ信号Ｓｊ２を保持すると共に、前回入力して保持していたプログラムカウンタ信号Ｓａを出力するものである。第４フリップフロップ５０から出力されるプログラムカウンタ信号Ｓａは、図６に示したように、外部のインストラクションメモリに出力されることとなる。
【００４８】
プログラムカウンタ制御部４０は、第３フリップフロップ３３からシーケンス制御命令Ｓｌ３を入力し、入力したシーケンス制御命令Ｓｌ３に応じて、カウンタ信号出力部１０が出力する次回のプログラムカウンタ信号Ｓｊ１のカウント値を書き換え等するものである。以下、プログラムカウンタ制御部４０について具体的に説明する。
【００４９】
プログラムカウンタ制御部４０は、ジャンプ制御回路４１と、ループカウンタ４２と、加算器４３と、セレクタ４４とを備えている。ジャンプ制御回路４１は、第３フリップフロップ３３からのシーケンス制御命令Ｓｌ３及びループ信号Ｓｌ４を入力すると共に、ループカウンタ４２を動作させるものである。また、ジャンプ制御回路４１は、第１所定条件成立時に、デュアルポートメモリ１１の記憶内容（すなわち図２に示した記憶内容）を書き換える書き換え信号Ｓｓ１をデュアルポートメモリ１１のライトイネーブルに出力す
るものである。さらに、ジャンプ制御回路４１は、第２所定条件成立時（所定条件成立時）には、書き換えた内容を元に戻す復帰信号Ｓｓ２をデュアルポートメモリ１１のライトイネーブルに出力するものである。
【００５０】
ループカウンタ４２は、ループ信号Ｓｌ４の入力時に、ループ信号Ｓｌ４が示す数にセットされ、クロックを入力する毎（所定タイミング毎）に、ループ信号Ｓｌ４が示す数（図３に示す例では「３」）をカウントダウンしていくものである。
【００５１】
加算器４３は、第１フリップフロップ３１から出力されるプログラムカウンタ信号Ｓｊ２を入力し、プログラムカウンタ信号Ｓｊ２が示すカウント値に「１」を加え、「１」を加えて得られた加算信号Ｓｏをセレクタ４４に出力するものである。
【００５２】
セレクタ４４は、第２フリップフロップ３２からのジャンプアドレス信号Ｓｐ２と、加算器４３からの加算信号Ｓｏのうち、いずれか一方を選択するものである。また、セレクタ４４は、選択により得られた信号Ｓｒをデュアルポートメモリ１１のライトデータに出力する構成となっている。
【００５３】
なお、セレクタ４４は、ジャンプ制御回路４１から出力される選択信号Ｓｑによって、ジャンプアドレス信号Ｓｐ２と加算信号Ｓｏとのうちいずれか一方を選択する。選択信号Ｓｑは、ジャンプ制御回路４１に入力されるシーケンス制御命令Ｓｌ３が「ＮＯＯＰ」である場合、加算器４３からの加算信号Ｓｏが選択されるように設定される。また、選択信号Ｓｑは、ジャンプ制御回路４１に入力されるシーケンス制御命令Ｓｌ３が「ＬＯＯＰ」であり、ループカウンタ４２の値が「１」以上である場合、ジャンプアドレス信号Ｓｐ２が選択されるように設定される。
【００５４】
また、選択信号Ｓｑは、ジャンプ制御回路４１に入力されるシーケンス制御命令Ｓｌ３が「ＬＯＯＰ」であり、ループカウンタ４２の値が「０」である場合、加算器４３からの加算信号Ｓｏが選択されるように設定される。さらに、選択信号Ｓｑは、ジャンプ制御回路４１に入力されるシーケンス制御命令Ｓｌ３が「ＬＯＯＰ」であり、ループカウンタ４２の値が「０」である場合であっても、ループカウンタ４２の値が「０」となった時点から、所要のタイミング後となったとき（本実施形態では「２」回の「ＬＯＯＰ」が入力されたとき）には、ジャンプアドレス信号Ｓｐ２が選択されるように設定される。
【００５５】
ここで、上記したように、インストラクションメモリ２０とプログラムカウンタ制御部４０との間に、第３フリップフロップ３３が介在されている。このため、両者はパイプライン処理にて動作することとなる。なお、パイプライン処理とは、回路間にフリップフロップを挿入して分割し、クロック入力毎に分割した各回路が独立して動作できるようにする処理をいう。
【００５６】
次に、本実施形態に係るシーケンス制御回路１の動作を図４及び図５を参照して説明する。図４は、本実施形態に係るシーケンス制御回路１の動作を示すタイミングチャートである。
【００５７】
シーケンス制御回路１が動作を開始すると、まず、図４の時刻ｔ１に示すように、セレクタ１２はカウント値「０」を示すスタートアドレス信号Ｓｉを選択する。これにより、カウンタ信号出力部１０から出力されるプログラムカウンタ信号Ｓｊ１は「０」を示すものとなる。また、カウント値「０」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。さらに、カウント値「０」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、図３に
示すように、「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。そして、第２フリップフロップ３２は、シーケンス制御命令Ｓｌ１を入力して保持する。
【００５８】
次いで、時刻ｔ２において、デュアルポートメモリ１１は、時刻ｔ１にカウント値「０」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ１のように、スタートアドレス信号Ｓｉを選択せず、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「０」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。
【００５９】
また、時刻ｔ２において、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、図３に示すように、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力すると共に、「３」を示すループ信号Ｓｌ２を第３フリップフロップ３３に出力する。これに加えて、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。第３フリップフロップ３３は、時刻ｔ１において入力した「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００６０】
さらに、時刻ｔ２においてジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＮＯＯＰ」を示すため、加算器４３からの加算信号Ｓｏを選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「０」を示すプログラムカウンタ信号Ｓｊ２に「１」を加えた「１」を示す加算信号Ｓｏを信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００６１】
時刻ｔ３において、デュアルポートメモリ１１は、時刻ｔ２にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２と同様に、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ２において入力した「０」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００６２】
また、時刻ｔ３において、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。これに加えて、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。そして、第２フリップフロップ３２は、時刻ｔ２において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ２において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３及び「３」を示すループ信号Ｓｌ４を出力する。
【００６３】
さらに、時刻ｔ３においてジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」を示し、「３」を示すループ信号Ｓｌ４を入力したことから、ループカウンタ４２の値を「３」にロードするロード信号Ｓｍを出力する。また、ジャンプ制御回路４１は
、ループカウンタ４２からカウンタ信号Ｓｎを読み込む。そして、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」を示し、ループカウンタ４２の値が「０」となっていないため、第２フリップフロップ３２からのジャンプアドレス信号Ｓｐ２を選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「１」を示すジャンプアドレス信号Ｓｐ２を信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００６４】
時刻ｔ４において、デュアルポートメモリ１１は、時刻ｔ３にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２〜ｔ３と同様に、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ３において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００６５】
また、時刻ｔ４において、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。これに加えて、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。そして、第２フリップフロップ３２は、時刻ｔ３において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ３において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００６６】
さらに、時刻ｔ４においてループカウンタ４２は、クロックの入力にあわせて、カウンタの値をカウントダウンし、カウンタ値を「２」とする。また、ジャンプ制御回路４１は、ループカウンタ４２からカウンタ信号Ｓｎを読み込む。そして、ジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」を示し、ループカウンタ４２の値が「０」となっていないため、第２フリップフロップ３２からのジャンプアドレス信号Ｓｐ２を選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「１」を示すジャンプアドレス信号Ｓｐ２を信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００６７】
時刻ｔ５において、デュアルポートメモリ１１は、時刻ｔ４にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２〜ｔ４と同様に、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ４において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００６８】
また、時刻ｔ５において、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。これに加えて、インス
トラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。そして、第２フリップフロップ３２は、時刻ｔ４において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ４において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００６９】
さらに、時刻ｔ５においてループカウンタ４２は、クロックの入力にあわせて、カウンタの値をカウントダウンし、カウンタ値を「１」とする。また、ジャンプ制御回路４１は、ループカウンタ４２からカウンタ信号Ｓｎを読み込む。そして、ジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」を示し、ループカウンタ４２の値が「０」となっていないため、第２フリップフロップ３２からのジャンプアドレス信号Ｓｐ２を選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「１」を示すジャンプアドレス信号Ｓｐ２を信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００７０】
時刻ｔ６において、デュアルポートメモリ１１は、時刻ｔ５にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２〜ｔ５と同様に、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のリードアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ５において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００７１】
また、時刻ｔ６において、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。これに加えて、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。そして、第２フリップフロップ３２は、時刻ｔ５において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ５において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００７２】
さらに、時刻ｔ６においてループカウンタ４２は、クロックの入力にあわせて、カウンタの値をカウントダウンし、カウンタ値を「０」とする。これにより、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」を示し、ループカウンタ４２の値が「０」を示すこととなる。よって、ジャンプ制御回路４１は、加算器４３からの加算信号Ｓｏを選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、プログラムカウンタ信号Ｓｊ２に「１」を加えた「２」を示す加算信号Ｓｏを信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００７３】
加えて、ジャンプ制御回路４１は、ループカウンタ４２の値が「０」を示したとき、すなわちループカウンタ４２のカウントダウン終了時に次々回（すなわち時刻ｔ８）にカウンタ信号出力部１０から出力されるプログラムカウンタ信号Ｓｊ１のカウント値を書き換える書き換え信号Ｓｓ１をカウンタ信号出力部１０（具体的にはデュアルポートメモリ１１のライトイネーブル）に出力する。より正確には、ジャンプ制御回路４１がデュアルポートメモリ１１のライトイネーブルに送信しているライトイネーブル信号Ｓｓをイネーブルとする。
【００７４】
時刻ｔ７において、デュアルポートメモリ１１は、時刻ｔ６にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「１」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２〜ｔ６と同様に、信号Ｓｈを選択する。これにより、カウント値「１」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のライトアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ６において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００７５】
また、時刻ｔ７においてデュアルポートメモリ１１は、書き換え信号Ｓｓ１を入力したことから、図２に示す記憶内容を図５に示すように書き換えることとなる。図５は、図１に示したデュアルポートメモリ１１が記憶内容を書き換えた後の状態を示す概念図である。具体的に、デュアルポートメモリ１１のライトアドレスには、時刻ｔ６において「１」を示すプログラムカウンタ信号Ｓｊ２が入力されている。また、ライトデータには、時刻ｔ６において「２」を示す信号Ｓｒが入力されている。このため、図５に示すように、メモリアドレス「１」に対応するメモリデータは「１」から「２」に書き換えられることとなる。
【００７６】
また、時刻ｔ７において、カウンタ信号出力部１０から出力されたカウント値「１」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。これに加えて、インストラクションメモリ２０は、「１」を示すジャンプアドレス信号Ｓｐ１を第２フリップフロップ３２に出力する。そして、第２フリップフロップ３２は、時刻ｔ６において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ６において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００７７】
さらに、時刻ｔ７においてジャンプ制御回路４１は、ループカウンタ４２からカウンタ信号Ｓｎを読み込む。そして、ジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＬＯＯＰ」であり、ループカウンタ４２の値が「０」であるため、加算器４３からの加算信号Ｓｏを選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、プログラムカウンタ信号Ｓｊ２に「１」を加えた「２」を示す加算信号Ｓｏを信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。なお、ループカウンタ４２のカウント値が「０」を示すものの、カウントダウンは時刻ｔ６において既に終了しているため、ジャンプ制御回路４１は、書き換え信号Ｓｓ１をカウンタ信号出力部１０に出力しない。
【００７８】
時刻ｔ８において、デュアルポートメモリ１１は、時刻ｔ７にカウント値「１」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図５に示す記憶内容に示すように、リードデータからカウント値「２」を示す信号Ｓｈを出力する。このように、デュアルポートメモリ１１のデータの書き換えが行われるため、６回連続して「１」を示すプログラムカウンタ信号Ｓｊ１が出力された後に、「２」を示すプログラムカウンタ信号Ｓｊ１が出力される。そして、セレクタ１２は、時刻ｔ２〜ｔ７と同様に、信号Ｓｈを選択する。これにより、カウント値「２」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のライトアドレスに入力されると共に、第１フリップフロップ３１に入力される。
【００７９】
また、第１フリップフロップ３１は、前回入力したカウント値「１」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ７において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００８０】
また、時刻ｔ７において、カウンタ信号出力部１０から出力されたカウント値「２」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。これにより、インストラクションメモリ２０は、「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ１を出力する。また、第２フリップフロップ３２は、時刻ｔ７において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力する。また、第３フリップフロップ３３は、時刻ｔ７において入力した「ＬＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００８１】
さらに、時刻ｔ８においてジャンプ制御回路４１は、カウンタ信号出力部１０から「２」を示すジャンプアドレス信号Ｓｐ１を入力すると共に、第１フリップフロップ３１から「１」を示すジャンプアドレス信号Ｓｐ２を入力する。そして、ジャンプ制御回路４１は、今回のプログラムカウンタ信号Ｓｊ１が示すカウント値から、前回のプログラムカウンタ信号Ｓｊ２が示すカウント値を減算した値が「１」となっていることから、ループサイクルの終了であると判断し、デュアルポートメモリ１１のデータについて書き換えた内容を元に戻す復帰信号Ｓｓ２を出力する。より正確に、ジャンプ制御回路４１がデュアルポートメモリ１１のライトイネーブルに送信しているライトイネーブル信号Ｓｓをイネーブルとする。
【００８２】
また、ジャンプ制御回路４１は、ループサイクルの終了であるため、ジャンプアドレス信号Ｓｐ２を選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「１」を示すジャンプアドレス信号Ｓｐ２を信号Ｓｒとしてデュアルポートメモリ１１のライトデータに出力することとなる。
【００８３】
時刻ｔ９において、デュアルポートメモリ１１は、時刻ｔ８にカウント値「２」を示すプログラムカウンタ信号Ｓｊ１が入力されたことから、図２に示す記憶内容に示すように、リードデータからカウント値「３」を示す信号Ｓｈを出力する。セレクタ１２は、時刻ｔ２〜ｔ８と同様に、信号Ｓｈを選択する。これにより、カウント値「３」を示すプログラムカウンタ信号Ｓｊ１はデュアルポートメモリ１１のライトアドレスに入力されると共に、第１フリップフロップ３１に入力される。また、第１フリップフロップ３１は、前回入力したカウント値「２」を示すプログラムカウンタ信号Ｓｊ２を、デュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力する。そして、第４フリップフロップ５０は、時刻ｔ８において入力した「１」を示すプログラムカウンタ信号Ｓａを外部に出力することとなる。
【００８４】
また、時刻ｔ９において、カウンタ信号出力部１０から出力されたカウント値「３」を示すプログラムカウンタ信号Ｓｊ１は、インストラクションメモリ２０に入力される。また、第２フリップフロップ３２は、時刻ｔ８において入力した「１」を示すジャンプアドレス信号Ｓｐ２をセレクタ４４に出力し、第３フリップフロップ３３は、時刻ｔ８において入力した「ＮＯＯＰ」を示すシーケンス制御命令Ｓｌ３を出力する。
【００８５】
さらに、時刻ｔ９においてジャンプ制御回路４１は、シーケンス制御命令Ｓｌ３が「ＮＯＯＰ」を示すため、加算器４３からの加算信号Ｓｏを選択する旨の選択信号Ｓｑをセレクタ４４に送信する。これにより、セレクタ４４は、「２」を示すプログラムカウンタ信号Ｓｊ２に「１」を加えた「３」を示す加算信号Ｓｏを信号Ｓｒとしてデュアルポートメ
モリ１１のライトデータに出力することとなる。
【００８６】
また、時刻ｔ９においてデュアルポートメモリ１１は、復帰信号Ｓｓ２を入力したことから、図５に示す記憶内容を図２に示すように戻すこととなる。具体的に、デュアルポートメモリ１１のライトアドレスには、時刻ｔ８において「１」を示すプログラムカウンタ信号Ｓｊ２が入力されている。また、ライトデータには、時刻ｔ８において「１」を示す信号Ｓｒが入力されている。このため、メモリアドレス「１」に対応するメモリデータは「２」から「１」に書き換えられることとなる。
【００８７】
その後、時刻ｔ１０において、第１フリップフロップ３１は、時刻ｔ９に入力した「３」を示すプログラムカウンタ信号Ｓｊ２をデュアルポートメモリ１１のライトアドレス、プログラムカウンタ制御部４０及び第４フリップフロップ５０に出力することとなる。また、時刻ｔ１０において加算器４３は、第１フリップフロップ３１からの「３」を示すプログラムカウンタ信号Ｓｊ２に「１」を加えた「４」を示す加算信号Ｓｏを出力する。
【００８８】
さらに、第４フリップフロップ５０は、時刻ｔ１０に「２」を示すプログラムカウンタ信号Ｓａを外部に出力し、時刻ｔ１１において「３」を示すプログラムカウンタ信号Ｓａを外部に出力する。
【００８９】
このようにして、本実施形態に係るシーケンス制御回路１によれば、インストラクションメモリ２０とプログラムカウンタ制御部４０とをパイプライン処理にて動作させる。このため、インストラクションメモリ２０のアクセスと、プログラムカウンタ制御部４０の制御とを同時的に行うことができる。すなわち、インストラクションメモリ２０がカウンタ信号出力部１０からのプログラムカウンタ信号Ｓｊ１によりアクセスされる間に、プログラムカウンタ制御部４０は、第３フリップフロップ３３からのシーケンス制御命令Ｓｌ３を入力して制御を行うことができる。このように、プログラムカウンタ制御部４０は、インストラクションメモリ２０がプログラムカウンタ信号Ｓｊ１によりアクセスされ、シーケンス制御命令Ｓｌ１が出力された後に、制御を行うことがなくなっており、インストラクションメモリ２０のアクセスと、プログラムカウンタ制御部４０の制御とを同時的に行うことができる。また、カウンタ信号出力部１０は、出力したプログラムカウンタ信号Ｓｊ１を自ら入力し、入力したプログラムカウンタ信号Ｓｊ１のカウント値に応じて次回のプログラムカウンタ信号Ｓｊ１を出力する。このため、プログラムカウンタ制御部４０により次回のプログラムカウンタ信号Ｓｊ１の書き換えが行われる場合以外については、インストラクションメモリ２０のアクセス時間とプログラムカウンタ制御部４０の動作速度に影響を受けず、プログラムカウンタ信号Ｓｊ１を出力することができる。また、プログラムカウンタ制御部４０による次回のプログラムカウンタ信号Ｓｊ１の書き換えが行われるとしても、インストラクションメモリ２０のアクセスとプログラムカウンタ制御部４０の制御とが同時的に行われるため、双方の合計時間に影響を受けることなく、書き換えを行うことができる。以上のように、インストラクションメモリ２０のアクセスと、プログラムカウンタ制御部４０の制御とを同時的に行うことで、書き換えについても双方の合計時間に影響を受けることなく、書き換えを行わない場合については、そもそもインストラクションメモリ２０及びプログラムカウンタ制御部４０を介さず、プログラムカウンタ信号Ｓｊ１を出力できるため、高速化を図ることができる。
【００９０】
また、インストラクションメモリ２０は、回路構成に応じたループ回数（本実施形態では６回ループさせる場合に、回路構成に応じた「３」を減算し、ループ回数は「３」となる）を示すループ信号Ｓｌ２を出力し、プログラムカウンタ制御部４０は、所定タイミング毎（本実施形態ではクロック入力毎）に、ループ信号Ｓｌ２が示すループ回数をカウントダウンしていき、カウントダウン終了時に書き換え信号Ｓｓ１を出力する。このように、カウントダウン終了時というループサイクルの終了にあわせて書き換え信号Ｓｓ１を出
力する。これにより、例えば、ループサイクルの終了にあわせてループを抜けるように、カウンタ信号出力部１０から出力される次回のプログラムカウンタ信号Ｓｊ１を書き換えることができる。従って、出力したプログラムカウンタ信号Ｓｊ１を自ら入力し、入力したプログラムカウンタ信号Ｓｊ１のカウント値に応じて次回のプログラムカウンタ信号Ｓｊ１を出力するカウンタ信号出力部１０を備えつつも、適切なループサイクルを実現することができる。
【００９１】
また、次回のプログラムカウンタ信号Ｓｊ１のカウント値を書き換えた場合、所定条件成立時に書き換えた内容を元に戻すため、次回、新たにシーケンス制御回路１を作動させる場合に、書き換え後の状態のままとならず、次回のシーケンス制御回路１の作動時においても適切にプログラムカウンタ信号Ｓｊ１を出力することができる。
【００９２】
また、今回のプログラムカウンタ信号Ｓｊ１が示すカウント値から、前回のプログラムカウンタ信号Ｓｊ１が示すカウント値を減算した値が「１」となったときに、復帰信号Ｓｓ２を出力する。このため、ループが終了して改行が行われた場合に、書き換えた内容を元に戻すこととなり、プログラムカウンタ信号Ｓｊ１の出力に影響なく、次回のシーケンス制御回路の作動時においても適切にプログラムカウンタ信号Ｓｊ１を出力することができる。
【００９３】
以上、本発明に係るシーケンス制御回路を実施形態に基づいて説明したが、本発明は上記に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、変更を加えてもよい。例えば、本実施形態では、ループサイクルが６回となっているが、これに限らず、６回未満又は７回以上ループさせる場合に適用されてもよい。さらに、本実施形態では、ループサイクルが６回の場合に、ループカウンタ４２のカウント値を「３」にロードしているが、回路構成によっては、「３」に限らず、「３」未満又は「４」以上とされてもよい。
【００９４】
また、本実施形態では、第４フリップフロップ５０を備えているが、これに限らず、第４フリップフロップ５０を備えてなくてもよい。また、本実施形態においてループカウンタ４２は、クロック入力毎にカウンタの値をカウントダウンしているが、これに限らず、他の信号等の入力にあわせてカウントダウンする構成であってもよい。
【００９５】
また、本実施形態では、シーケンス制御命令の一例として「ＮＯＯＰ」と「ＬＯＯＰ」とを挙げているが、これに限らず、シーケンス制御命令は、「ＮＯＯＰ」及び「ＬＯＯＰ」以外であってもよい。
【００９６】
また、本実施形態では、一例として図１に示す構成を挙げているが、これに限らず、例えば以下の構成であってもよい。例えば、インストラクションメモリ２０とプログラムカウンタ制御部４０との間にデコード回路を備え、デコード回路とプログラムカウンタ制御部４０との間に第３フリップフロップ３３を備えていてもよい。
【００９７】
なお、上記構成の場合、プログラムカウンタ制御部４０はデコード回路によってデコード処理されたシーケンス制御命令を入力することとなる。すなわち、プログラムカウンタ制御部４０は、シーケンス制御命令を加工した信号を入力することとなるが、本発明はこのような構成であってもよい。
【００９８】
また、以下の構成であってもよい。例えば、図１に示すインストラクションメモリ２０に代えて、複数のインストラクションメモリ２０を備え、複数のインストラクションメモリ２０が並列に設ける。さらに、複数のインストラクションメモリ２０の後段（すなわちプログラムカウンタ制御部４０側）にはそれぞれ第３フリップフロップ３３が設ける。さらに、第３フリップフロップ３３の後段には、第３フリップフロップ３３から出力された
それぞれのシーケンス制御命令Ｓｌ１のうち１つを選択して出力するセレクタを設ける。このような構成の場合、プログラムカウンタ信号Ｓｊ１を例えば１０ｂｉｔの信号とし、複数のインストラクションメモリ２０は１０ｂｉｔのうち下位９ｂｉｔの信号を処理するものとする。上位１ｂｉｔの信号はセレクタに直接入力され、セレクタは上位１ｂｉｔの信号に基づいて、第３フリップフロップ３３から出力されたそれぞれのシーケンス制御命令Ｓｌ１のうち１つを選択して出力する。
【００９９】
以上のように、デコード回路を備える例や、インストラクションメモリ２０を複数備える例であっても、図１に示した例と同様に、パイプライン処理を行うことができ、シーケンス制御回路の高速化を図ることができる。
【図面の簡単な説明】
【０１００】
【図１】本発明の実施形態に係るシーケンス制御回路を示す構成図である。
【図２】図１に示したデュアルポートメモリの記憶内容を示す概念図である。
【図３】図１に示したインストラクションメモリの記憶内容を示す概念図である。
【図４】本実施形態に係るシーケンス制御回路の動作を示すタイミングチャートである。
【図５】図１に示したデュアルポートメモリが記憶内容を書き換えた後の状態を示す概念図である。
【図６】従来の半導体試験装置の一例を示す構成図である。
【図７】図６を参照して説明したシーケンス制御命令及びパターン発生命令Ｓｂの一例を示す図である。
【図８】試験パターンＳｃ、及び期待パターンＳｄの詳細を示すタイミングチャートである。
【図９】図６に示したシーケンス制御回路の詳細を示す構成図である。
【図１０】プログラムカウンタ信号Ｓａ、シーケンス制御命令Ｓｆ及び次のプログラムカウンタ信号Ｓｇの詳細を示すタイミングチャートである。
【符号の説明】
【０１０１】
１  シーケンス制御回路
１０  カウンタ信号出力部
１１  デュアルポートメモリ
１２  セレクタ
２０  インストラクションメモリ
３１〜３３，５０フリップフロップ
４０  プログラムカウンタ制御部
４１  ジャンプ制御回路
４２  ループカウンタ
４３  加算器
４４  セレクタ
【図１】
0004919084.tif 000002
【図２】
0004919084.tif 000003
【図３】
0004919084.tif 000004
【図４】
0004919084.tif 000005
【図５】
0004919084.tif 000006
【図６】
0004919084.tif 000007
【図７】
0004919084.tif 000008
【図８】
0004919084.tif 000009
【図９】
0004919084.tif 000010
【図１０】
0004919084.tif 000011