(57)【要約】【課題】プログラムカウンタ回路が出力したＰＣ値により指定されるインストラクションコードの中から次のＰＣ値を読みこむことにより発生するアクセス遅延の問題を解消する。【解決手段】２種類のレジスタに、プログラムが規定するジャンプ箇所のジャンプ前のＰＣ値とジャンプ後のＰＣ値を保持する。またプログラムが規定するリピート箇所のリピート回数を減算カウンタに保持する。加算カウンタは、クロックごとにカウントアップされるＰＣ値を保持する。セレクタは次に出力するＰＣ値として、ジャンプ後のＰＣ値として保持されている値もしくは加算カウンタに保持されている値を選択する。論理回路は、プログラムカウンタ回路の出力値と、各レジスタおよび減算回路の出力値を参照し、セレクタに対し次に出力すべきＰＣ値の選択を指示する信号を生成する。【選択図】  図３
2004151990.tif 000002
【特許請求の範囲】
【請求項１】
所定の初期値に設定された第１のＰＣ値を保持し、該第１のＰＣ値を基準クロックごとに出力するとともに該出力の帰還値をカウントアップして再び保持する加算カウンタと、
プログラムが規定するジャンプ箇所のジャンプ前のＰＣ値を第２のＰＣ値として保持し、該第２のＰＣ値を前記基準クロックごとに出力する１以上のジャンプ前ＰＣレジスタと、
前記ジャンプ箇所のジャンプ後のＰＣ値を第３のＰＣ値として保持し、該第３のＰＣ値を前記基準クロックごとに出力する１以上のジャンプ後ＰＣレジスタと、
プログラムが規定するリピート箇所のリピート回数を示す値を保持し、該値を前記基準クロックごとに出力するとともに、該出力の帰還値を所定の減算指示信号を受信した際にカウントダウンして再び保持する１以上の減算カウンタと、
前記加算カウンタが出力する第１のＰＣ値またはジャンプ後ＰＣレジスタが出力する第３のＰＣ値の、いずれか一方を選択して、当該プログラムカウンタ回路の出力ＰＣ値として出力するセレクタと、
前記加算カウンタ、ジャンプ前ＰＣレジスタ、ジャンプ後ＰＣレジスタおよび減算カウンタと、前記セレクタの間に構成される論理回路であって、前記セレクタに対し、該セレクタが出力する出力ＰＣ値と前記ジャンプ前ＰＣレジスタが出力する第１のＰＣ値が一致し、かつ前記減算カウンタの出力値がリピート回数０を示す値以外の値である場合に第３のＰＣ値を選択させ、それ以外の場合には第１のＰＣ値を選択させるような論理を構成する論理回路とを備えたことを特徴とするプログラムカウンタ回路。
【請求項２】
前記減算カウンタを複数備え、該減算カウンタの中の所望の減算カウンタを指定するための識別子を設定するためのカウンタ指定レジスタをさらに備えたことを特徴とする請求項１記載のプログラムカウンタ回路。
【請求項３】
前記論理回路は、
前記セレクタが出力する出力ＰＣ値と前記ジャンプ前ＰＣレジスタが出力する第１のＰＣ値とを比較して一致／不一致の判定結果を示す第１の判定値を出力する第１の比較器と、
前記一致／不一致信号と、前記減算カウンタの出力値の間でＡＮＤ演算を行うＡＮＤ回路と、
前記ＡＮＤ回路の出力を所定の比較基準値と比較して一致／不一致の判定結果を示す第２の判定値を出力する第２の比較器と、
第１および第２の判定値を入力とし、第１の判定値が一致を示し且つ第２の判定値が不一致を示す場合には前記セレクタに対し第３のＰＣ値の選択を指示する指示信号を送信し、それ以外の場合には第１のＰＣ値の選択を指示する指示信号を送信する出力制御器を有することを特徴とする請求項１または２記載のプログラムカウンタ回路。
【請求項４】
前記減算カウンタは、リニアフィードバックシフトレジスタにより構成されることを特徴とする請求項１から３のいずれかに記載のプログラムカウンタ回路。
【請求項５】
前記加算カウンタに任意の初期値を設定するための初期値設定回路をさらに備えることを特徴とする請求項１から４のいずれかに記載のプログラムカウンタ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムカウンタ回路、すなわち、一群の命令の実行順序を制御するために、記憶媒体に格納されている任意のインストラクションコードの格納場所を指定するアドレスを生成する回路に関する。
【０００２】
【従来の技術】
一般に、所定の回路を所定のプログラムに従って動作させる場合には、ＲＯＭ、ＲＡＭ、レジスタなどの記憶媒体に各種単位命令を表す一群のインストラクションコードを記憶しておき、プログラムが規定する順番でインストラクションコードを指定して、指定されたインストラクションコードをその所定の回路に入力することにより制御を行う。インストラクションコードは、インストラクションコードの格納場所のアドレスを指定することにより指定する。プログラムカウンタ回路は、このアドレスを生成し、プログラムカウンタ値（ＰＣ値）として出力する回路である。
【０００３】
インストラクションコードには、通常、次に実行するインストラクションコードのＰＣ値が含まれている。従来のプログラムカウンタ回路は、クロックごとに１ずつカウントアップされる第１のＰＣ値と、直前に実行されたインストラクションコードに含まれている第２のＰＣ値の、いずれかを選択して、次のＰＣ値として出力していた。これにより、記憶媒体中のインストラクションコードを、原則として記憶されている順番に実行しつつ、必要に応じて任意のインストラクションコードにジャンプしたり、一部のインストラクションコードをリピートしたり、記憶媒体にランダムにアクセスすることができた（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開平１０−１６１８９９号公報（第５頁、第１図）
【０００５】
【発明が解決しようとする課題】
しかし、従来のプログラムカウンタ回路では、ランダムアクセスの場合には、ＰＣ値を出力した後、出力したＰＣ値が指定したインストラクションコードに含まれているＰＣ値を読み込み、次のＰＣ値を出力するというステップを踏むことになる。このため、１ずつ単純にカウントアップされたＰＣ値を出力する場合に比べ、ランダムアクセスの場合には常に１クロック以上の遅延が発生することになる。
【０００６】
本発明は、上記アクセス遅延の問題を解消することができる新しい構成のプログラムカウンタ回路を提案するものである。
【０００７】
【課題を解決するための手段】
上記アクセス遅延の問題を解消するために、本発明のプログラムカウンタ回路は、加算カウンタと、２種類のレジスタと、減算カウンタと、セレクタと、論理回路を備え、これによりプログラムが規定するジャンプ箇所のジャンプ前のＰＣ値とジャンプ後のＰＣ値、およびプログラムが規定するリピート箇所のリピート回数を、内部に保持する。
【０００８】
加算カウンタは、所定の初期値に設定された第１のＰＣ値を保持し、その第１のＰＣ値を基準クロックごとに出力するとともに出力の帰還値をカウントアップして再び保持する。２種類のレジスタのうちの１つは、ジャンプ前のＰＣ値を第２のＰＣ値として保持し、その第２のＰＣ値を基準クロックごとに出力する。また他の１つのレジスタは、ジャンプ箇所のジャンプ後のＰＣ値を第３のＰＣ値として保持し、その第３のＰＣ値を前記基準クロックごとに出力する。
【０００９】
減算カウンタは、リピート回数を示す値を保持し、その値を基準クロックごとに出力するとともに、その出力の帰還値を所定の減算指示信号を受信した際にカウントダウンして再び保持する。セレクタは、加算カウンタが出力する第１のＰＣ値またはジャンプ後ＰＣレジスタが出力する第３のＰＣ値の、いずれか一方を選択して、プログラムカウンタ回路の出力ＰＣ値として出力する。
【００１０】
また、論理回路は、加算カウンタ、ジャンプ前ＰＣレジスタ、ジャンプ後ＰＣレジスタおよび減算カウンタと、セレクタの間に構成され、セレクタが選択すべきＰＣ値を指示する信号を生成してセレクタに供給する。具体的には、セレクタが出力する出力ＰＣ値とジャンプ前ＰＣレジスタが出力する第１のＰＣ値が一致し、かつ減算カウンタの出力値がリピート回数０を示す値以外の値である場合に第３のＰＣ値を選択するよう指示し、それ以外の場合には第１のＰＣ値を選択するよう指示する信号を供給する。
【００１１】
すなわち、プログラムが規定するジャンプ命令、リピート命令を実行するために必要な値を、予め内部のレジスタに保持しておき、それらの値を用いて次に出力すべきＰＣ値を生成する。インストラクションコードの実行を待って、そのコードの中のＰＣ値を読取るという従来のステップを排除することにより、アクセス遅延を解消することができる。
【００１２】
【発明の実施の形態】
以下、本発明のプログラムカウンタ回路について、図面を参照して詳細に説明する。以下に示す２つの形態は、いずれも、プログラムにより任意の信号パターンを発生させるアルゴリズミックパターンジェネレータに、本発明のプログラムカウンタ回路を採用したものである。
【００１３】
アルゴリズミックパターンジェネレータは、図１（ａ）に示すように、パターン信号を生成して出力するパターンジェネレータ３と、パターンジェネレータ３に与える各種インストラクションコードが記憶された記憶媒体２と、インストラクションコードの格納場所を指定するＰＣ値を生成するプログラムカウンタ回路１からなる。
【００１４】
記憶媒体２には、図２に示すように、複数のインストラクションコードが格納されている。パターンジェネレータ３に所定のインストラクションを実行させるためには、インストラクションコードの格納場所を示すＰＣ値をプログラムカウンタ回路１により生成して記憶媒体２に入力すれば、指定したＰＣ値が指す格納場所に格納されているインストラクションコードが出力され、パターンジェネレータ３に入力される。
【００１５】
したがって、パターンジェネレータ３に、記憶媒体内に記憶されている順番でインストラクションを実行させるには、プログラムカウンタ回路１は、０、１、２、３というように値を１つずつカウントアップさせてＰＣ値として出力すればよい。
【００１６】
また、所定のインストラクションを繰り返し実行（リピート）させたい場合には、プログラムカウンタ回路１は、その期間のみ、ＰＣ値として連続して同じ値を出力すればよい。例えば、インストラクション１を３回繰り返した後に次のインストラクションを実行させたい場合には、プログラムカウンタ回路１は、０、１、１、１、２、３・・・というようにＰＣ値を出力する。
【００１７】
また、任意のインストラクションの次に任意のインストラクションを実行（ジャンプ）させたい場合には、プログラムカウンタ回路１は、インストラクションを実行させたい順番にＰＣ値を出力する。例えば、インストラクション１から３までを繰り返し実行させたい場合には、プログラムカウンタ回路１は、１、２、３、１、２、３のようにＰＣ値を出力すればよい。
【００１８】
ここで、アルゴリズミックパターンジェネレータは、通常は、図１（ｂ）に示すように、プログラムカウンタ回路１０１、記憶媒体２、パターンジェネレータ３を、シーケンシャルに接続し、さらにパターンジェネレータ３の出力がプログラムカウンタ回路１０１に入力されるように配線がされている。これは、従来のプログラムカウンタ回路１０１は、前述のように、インストラクションコードに含まれているＰＣ値を読み込んでから次のＰＣ値を生成することによって、上記リピート機能やジャンプ機能を実現していたからである。
【００１９】
しかし、本発明のプログラムカウンタ回路１を採用する場合、アルゴリズミックパターンジェネレータは、図１（ａ）に示すように、プログラムカウンタ回路１、記憶媒体２、パターンジェネレータ３を、シーケンシャルに接続するだけで構成することができる。これは、本発明のプログラムカウンタ回路１が、インストラクションコードに含まれているＰＣ値の読み込みを行わないからに他ならない。
【００２０】
本発明のプログラムカウンタ回路の１つの特徴は、プログラムカウンタ回路が３種類のＰＣ値を予め内部に保持している点にある。本明細書では、説明の便宜のため、この３種類の内部ＰＣ値を、カウントアップＰＣ値、ジャンプ前ＰＣ値、ジャンプ後ＰＣ値と称することとする。また、プログラムカウンタ回路が最終的に出力するＰＣ値は、上記内部ＰＣ値と区別するため、出力ＰＣ値と称することとする。
【００２１】
カウントアップＰＣ値は、所定の初期値を基準としてクロックごとに１ずつ増加するＰＣ値である。ジャンプ前ＰＣ値は、ジャンプ命令が出現するとき、すなわちジャンプする直前に実行されるインストラクションのコードを指すＰＣ値である。また、ジャンプ後ＰＣ値は、ジャンプ命令によりジャンプした先のインストラクションコードを指すＰＣ値である。なお、ジャンプ命令は、プログラムの中の複数箇所に出現することが多い。したがって、プログラムカウンタ回路は、複数のジャンプ前ＰＣ値と、複数のジャンプ後ＰＣ値を保持する場合もある。
【００２２】
また、本発明のプログラムカウンタ回路のもう１つの特徴は、リピート回数を示す値をプログラムカウンタ回路内部に保持している点にある。例えば、ＰＣ値を０、１、２、３、１、２、３、１、２、３、４、５のように変化させたい場合、すなわち、１、２、３というシーケンスを３回リピートしたい場合には、前記ジャンプ前ＰＣ値として３、ジャンプ後ＰＣ値として１、リピート回数として３の値を保持する。リピート回数の値は減算カウンタに設定し、１回リピートするごとに値を１減らし、値が０になった時点でリピートを解除する。
【００２３】
以下、本発明のプログラムカウンタ回路１の構成について詳しく説明する。
【００２４】
実施の形態１．
図３は、本発明の一実施の形態におけるプログラムカウンタ回路の内部構成を示す図である。
【００２５】
プログラムカウンタ回路１は、上記カウントアップＰＣ値を保持する加算カウンタ４と、ジャンプ前ＰＣ値を保持するジャンプ前ＰＣレジスタ５と、ジャンプ後ＰＣ値を保持するジャンプ後ＰＣレジスタ７と、所定のリセット信号が入力された際に初期値が設定され、以後所定のタイミングで１ずつカウントダウンする減算カウンタ６を備える。
【００２６】
ジャンプ前ＰＣレジスタ５とジャンプ後ＰＣレジスタ７は、それぞれ複数のＰＣ値を保持できるだけの記憶領域を備える。図では、これをＰＣ値１個分の領域に対応するブロックを複数示すことにより表現する。
【００２７】
プログラムカウンタ回路１は、また、加算カウンタ４の出力（カウントアップＰＣ値）またはジャンプ後ＰＣレジスタ７の出力（ジャンプ後ＰＣ値）のいずれか一方を出力ＰＣ値として出力するセレクタ１３を備える。セレクタ１３は、図に示すように、イネーブル信号が１のときに加算カウンタ４の出力を選択（カウントアップＰＣ値を出力）し、イネーブル信号が０のときにジャンプ後ＰＣレジスタ７の出力を選択（ジャンプ後ＰＣ値を出力）する。
【００２８】
プログラムカウンタ回路１は、さらに、セレクタ１３の出力をジャンプ前ＰＣレジスタ５の出力（ジャンプ前ＰＣ値）と比較して両ＰＣ値の一致／不一致を示す第１の判定値Ａを出力するＰＣ値比較回路８を備える。ＰＣ値比較回路８は、ジャンプ前ＰＣレジスタ５が保持する複数のＰＣ値に対応するように複数設ける。
【００２９】
また、プログラムカウンタ回路１は、ＰＣ値比較回路８の出力（第１の判定値Ａ）と減算カウンタ６の出力のＡＮＤ演算を行うＡＮＤ回路９と、ＡＮＤ回路９の出力を所定の比較基準値１０と比較して両値の一致／不一致を示す第２の判定値Ｂを出力するカウンタ値比較回路１１を備える。カウンタ値比較回路１１の出力（第２の判定値Ｂ）は、減算カウンタ６に前記リセット信号として入力される。
【００３０】
また、プログラムカウンタ回路１は、出力制御器１２を備える。出力制御器１２は、ＰＣ値比較回路８の出力（第１の判定値Ａ）とカウンタ値比較回路１１の出力（第２の判定値Ｂ）について所定の論理演算を行って、プログラムカウンタ回路１がカウントアップＰＣ値とジャンプ後ＰＣ値のいずれを出力すべきかを判定し、判定結果を示す信号Ｃを出力する。出力制御器１２は、複数のＰＣ値比較回路８に対応するように複数設ける。出力制御器１２が出力した信号Ｃはセレクタ１３に、イネーブル信号として入力される。
【００３１】
論理演算の論理は、第１の判定値Ａが「一致」を示しており、第２の判定値Ｂが「不一致」を示しているときに、セレクタ１３に対しジャンプ後ＰＣ値の選択を指示する信号を出力するように定義する。本実施の形態では、ＰＣ値比較回路８およびカウンタ値比較回路１１は判定結果が一致のときに値１を出力する。また、セレクタ１３は、前述のように、イネーブル信号が１のときにカウントアップＰＣ値を、イネーブル信号が０のときにジャンプ後ＰＣ値を出力する。
【００３２】
以上から、出力制御器１２が行う論理演算は、図４に示すようなものとなる。これは、ジャンプ前ＰＣ値を出力した時点で減算カウンタ６の出力値が０でなければ予め保持しているジャンプ後ＰＣ値を出力し、減算カウンタ６の出力値が０であればカウントアップＰＣ値を出力することを意味している。但し、一致を０で表すか１で表すかは設計事項にすぎず、したがって図４の論理も一例にすぎないことは言うまでもない。
【００３３】
なお、クロック（クロック信号）は、図示されないクロック回路により発生される。クロック回路は、プログラムカウンタ回路１内部に備えてもよいし、外部に設けプログラムカウンタ回路１にクロック信号を供給してもよい。
【００３４】
次に、プログラムカウンタ回路１の動作について説明する。アルゴリズミックパターンジェネレータに本実施の形態のプログラムカウンタ回路１を採用した場合には、記憶媒体２にインストラクションを格納する際に（あるいはそれ以前に）、図５に示すように、ジャンプ前ＰＣ値レジスタ５、ジャンプ後ＰＣ値レジスタ７および減算カウンタ６に、プログラム内に出現するジャンプ命令やリピート命令に対応する値を初期値として設定しておく必要がある。
【００３５】
例えば、インストラクション１、２、３を４回繰り返すようなシーケンスを含むプログラムであれば、ＰＣ値が３のときにＰＣ値１にジャンプするというシーケンスを４回リピートすることになるので、ジャンプ前ＰＣ値レジスタ５に値３を、ジャンプ後ＰＣ値レジスタ７に値１を、減算カウンタ６に値３を、それぞれ設定する。また、加算カウンタ４にも初期値０を設定しておく。本実施の形態では、この状態を初期状態（リセット状態）とする。
【００３６】
以下、動作開始後の各種入出力値あるいは保持値の変化を、図６のタイムチャートを参照しながら説明する。なお、このタイムチャートでは、プログラムカウンタ回路１の最終出力ＰＣｏｕｔと、セレクタ１３の出力ＰＣｉｎｎを区別して表示している。セレクタ１３の出力ＰＣｉｎｎは、波形を整える目的でラッチ回路などを経由させてから（図示せず）、最終出力ＰＣｏｕｔとして出力するため、図に示すように時間的なずれが生ずる場合がある。
【００３７】
はじめに、タイムチャートの（１）で示される範囲の動作について説明する。リセット状態では、加算カウンタが保持するカウントアップＰＣ値の初期値は０であるが、最初のクロックが与えられたときには、カウントアップにより加算カウンタが出力するカウントアップＰＣ値は１となる。この時点では、カウントアップＰＣ値１が出力ＰＣ値としてそのまま出力される。一方、セレクタ１３が出力したＰＣ値１はＰＣ値比較回路８に入力されジャンプ前ＰＣレジスタ５の値、すなわち値３と比較される。この場合、ＰＣ値比較回路８は、両値は不一致（１≠３）であると判断し判定値Ａ＝０を出力する。
【００３８】
この判定値は出力制御器１２に入力される。この場合、図４に示したように、出力制御器１２の出力信号Ｃの値は１となる。よって、セレクタ１３は、加算カウンタ４の出力値であるＰＣ＝１をプログラムカウンタ回路１の出力ＰＣ値として出力する。ＰＣが出力されたという情報は、加算カウンタ４に入力され、これにより加算カウンタ４の値はプラス１される。
【００３９】
次に、タイムチャートの（２）で示される範囲の動作について説明する。クロックごとに上記動作を繰り返し、セレクタ１３の出力値が３になり、ＰＣ値比較回路８に入力されると、ＰＣ値比較回路８のもう１つの入力であるジャンプ前ＰＣ値は前述のように３に設定されているため、ＰＣ値比較回路８は両値は一致する（３＝３）と判断し、判定値Ａ＝１を出力する。この出力は減算カウンタ６と連動している（図示せず）。すなわち、減算カウンタ６は、判定値Ａ＝１の場合にカウントダウンする。以上が、リピートが１回完了するごとに値をカウントダウンするという動作である。
【００４０】
減算カウンタ６が保持する値は、この時点で３となる。この値は、ＡＮＤ回路９に入力されるが、ＡＮＤ回路９のもう一方の入力であるＰＣ値比較器８の出力値は判定値Ａ＝１であるため、減算カウンタ６の値３は、そのままＡＮＤ回路９の出力値として出力され、カウンタ値比較回路１１に入力される。カウンタ値比較回路１１のもう一方の入力端子は接地されている。これはカウンタ値比較回路１１の比較基準値１０の値が０であることを意味する。この場合、２つの入力値は不一致なので（３≠０）、カウンタ値比較回路１１が出力する判定値Ｂ＝０となる。
【００４１】
この時点では、判定値Ａ＝１、判定値Ｂ＝０となるので、出力制御器１２は、図４に示した論理により、信号Ｃ＝０を出力する。この信号Ｃはセレクタ１３にイネーブル信号として入力され、セレクタ１３は、ジャンプ後ＰＣレジスタ７の出力値１を選択出力する。以上の動作により、プログラムカウンタ回路１の出力ＰＣ値として、値３の次に値１が出力される。すなわち、ジャンプが実行される。この際、セレクタ１３の出力値１は、加算カウンタ４にも入力され、加算カウンタ４の値は１にセットされる。
【００４２】
次にタイムチャートの（３）で示される範囲の動作について説明する。（２）の動作が４回繰り返されると、減算カウンタ４の出力値は０となる。この場合、セレクタ１３の出力値が３のときに、（２）と同様の動作を行うと、カウンタ値比較回路１１の２つの入力値が一致することになるので、判定値Ｂとして値１が出力される。図４に示したように、判定値Ｂの値が１の場合には、出力制御器１２の出力信号の値は１になる。したがって、セレクタ１３は、次のクロックでは、加算カウンタ４の出力値を選択出力する。すなわち、出力ＰＣ値は４となる。減算カウンタ４の出力値が０である限り、同じ論理が繰り返されるため、以降プログラムカウンタ回路１の出力値は、４、５、６と変化することになる。以上が、１、２、３というシーケンスが４回リピートした後に解除するという動作である。
【００４３】
以上の説明から明らかであるように、本実施の形態のプログラムカウンタ回路は、従来のプログラムカウンタ回路のように、インストラクションコードを読み込んでコード中のＰＣ値を参照することはしていない。アルゴリズミックパターンジェネレータにこのプログラムカウンタ回路を採用する場合には、プログラムカウンタ回路１は内部レジスタに保持した値を用いて出力ＰＣｏｕｔを生成して一方的に記憶媒体２に供給する。よって、プログラムカウンタ回路１は、記憶媒体２およびパターンジェネレータ３の動作状況に影響されることなく、独立して動作することができる。パターンジェネレータ３が記憶媒体２から供給されているインストラクションを実行している間に、プログラムカウンタ回路１は次のＰＣ値を生成することができるので、パイプラインを用いた高速化にも有利であり、結果として、従来よりも高性能なアルゴリズミックパターンジェネレータを構成することができる。
【００４４】
さらに、本実施の形態のプログラムカウンタ回路を採用した場合には、記憶媒体２に記憶するインストラクションコードにＰＣ値の情報を含める必要がなくなる。これにより、インストラクションコードを短くすることができるので、記憶媒体２の容量を節減することができる。
【００４５】
実施の形態２．
次に、本発明のプログラムカウンタ回路の他の実施の形態を示す。前述の実施の形態１のプログラムカウンタ回路１は、１つの減算カウンタによりリピート回数をカウントしている。このため、１つのリピート命令が完了するまでは、次のリピート命令を実行することはできず、ジャンプしてリピートするシーケンスを、さらにジャンプしてリピートするといった、いわゆるネスティング動作を実現することができない。
【００４６】
これに対し、以下に説明する実施の形態２のプログラムカウンタ回路は、複数の減算カウンタと、複数のカウンタ指定レジスタを備えており、これらによりネストするリピート命令の実行を可能にする。本実施の形態では、図７に示すように、複数の減算カウンタ６には、それぞれ異なるリピート回数が設定されている。また、カウンタ指定レジスタ１４には複数の減算カウンタのうち、どの減算カウンタを使用するかを示す指定値が設定される。すなわち、リピート回数を直接設定するのではなく、所望のリピート回数が設定された減算カウンタを指定することにより、間接的にリピート回数を設定する。例えば、２番目の減算カウンタ内に設定されているリピート回数を参照する場合であれば、カウンタ指定レジスタ１４に値２を設定する。
【００４７】
図８は、実施の形態２におけるプログラムカウンタ回路１７の内部構成を示す図である。プログラムカウンタ回路１７は、実施の形態１の実施の形態１のプログラムカウンタ回路１と同じく、加算カウンタ４、ジャンプ前ＰＣレジスタ５、ジャンプ後ＰＣレジスタ７、ＡＮＤ回路９、ＰＣ値比較回路８、カウンタ値比較回路１１、出力制御器１２およびセレクタ１３を備え、さらに前述の複数の減算カウンタ６と、複数のカウンタ指定レジスタ１４、減算カウンタ６の初期値を保持する初期値レジスタ１５と、初期値レジスタ１５の出力値を減算カウンタに選択的にセットするためのセレクタ１６を備える。また、ＡＮＤ回路９とカウンタ値比較回路１１は、複数の減算カウンタ６に対応して、それぞれ複数設けられている。
【００４８】
各ＡＮＤ回路９の出力は、各カウンタ値比較回路１１に入力される。また、各カウンタ指定レジスタ１４の出力も各カウンタ値比較回路１１に入力される。カウンタ値比較回路１１は、実施の形態１と同様、ＡＮＤ回路９の出力と比較基準値１０との比較を行うための回路である。但し、本実施の形態では、カウンタ値比較回路１１は、カウンタ指定レジスタ１４からの入力を参照しており、その減算カウンタがカウンタ指定レジスタ１４により指定されている場合には比較を行うが、指定されていない場合には比較を行わない。
【００４９】
また、減算カウンタ６の値が０になり、カウンタ値比較回路１１が出力する判定値Ｂの値が０になると、セレクタ１６にイネーブル信号として０が入力されることになるため、セレクタ１６により初期値レジスタ１５の出力値が選択され減算カウンタ６に再設定される。一方、減算カウンタ６の値が０になるまでは、セレクタ１６に入力されるイネーブル信号の値は１となるため、減算カウンタ６は通常どおりカウントダウンされる。すなわち、複数の減算カウンタ６は、それぞれ初期値レジスタ１５に保持された所定のリピート回数を管理しており、リピート命令実行中はカウントダウンし、リピート命令完了後は初期値にリセットされる。
【００５０】
図９は、プログラムカウンタ回路１７の、動作開始後の各種入出力値あるいは保持値の変化を示すタイムチャートである。図の例は、複数ある減算カウンタ６のうち２番目のカウンタを指定した場合を示しており、カウンタ指定レジスタ１４の値ＣＮＴｎｏとして２が設定されている。また２番目の減算カウンタｒＣＮＴ［２］以外の減算カウンタｒＣＮＴ［Ｎ］には、プログラムにより任意の値をセットしておくことができる。
【００５１】
本実施の形態のプログラムカウンタ回路１７は、実施の形態１のプログラムカウンタ回路１と同様の効果を備える。さらに、減算カウンタ６が複数備えられておりカウンタ指定により使い分けできるため、ジャンプしてリピートするシーケンスを、さらにジャンプしてリピートするといった、いわゆるネスティング動作を実現することができる。
【００５２】
他の実施の形態．
本発明のプログラムカウンタ回路の他の実施の形態としては、上記実施の形態１のプログラムカウンタ回路１あるいは実施の形態２のプログラムカウンタ回路１７に一部変更を加えたものが考えられる。
【００５３】
例えば、減算カウンタ６を、フリップフロップを直列に接続して出力をフィードバックした、いわゆるリニアフィードバックシフトレジスタ（ＬＦＳＲ）を用いて構成する形態が考えられる。この場合、シフトの過程で得られる値の中から任意の１つの値をカウンタ値比較回路１１の比較基準値１０として設定し、さらに、その比較基準値１０の値から逆シフトした場合を考えて該当する値を求め、減算カウンタ６の初期値に設定する必要がある。ＬＦＳＲを用いる形態は、回路面積を小さくすることができるという点で、好ましい。
【００５４】
また、上記実施の形態では加算カウンタ４の値は０に初期設定されていたが、この加算カウンタ４の値を任意の値に初期設定できるようにする形態も考えられる。例えば、加算カウンタ４の入力側に、実施の形態２のプログラムカウンタ回路１７の減算カウンタ６の入力側と同様に初期値レジスタとセレクタを設ければよい。ＰＣ＝０以外からカウントを開始できれば、１つの記憶媒体内に、何種類かのプログラムを記憶することもでき、プログラムごとに先頭のインストラクションを指定して実行できるようになる。
【００５５】
【発明の効果】
本発明のプログラムカウンタ回路は、内部に必要な値を保持しているため、先に出力したＰＣ値が指定したインストラクションの実行状況に拘わらず、次に出力するＰＣ値を生成することができ、従来の回路のアクセス遅延の問題を解消することができる。さらに、インストラクションコード内にＰＣ値を格納する必要がなくなるため、コードをシンプルなものとすることができ、記憶容量の節約にもつながる。
【図面の簡単な説明】
【図１】アルゴリズミックパターンジェネレータの構成概要を示す図であり、（ａ）は本発明のプログラムカウンタ回路を採用した場合、（ｂ）は従来のプログラムカウンタ回路を採用した場合を示す。
【図２】記憶媒体へのインストラクションの格納のイメージを示す図である。
【図３】本発明の実施の形態１のプログラムカウンタ回路の内部構成を示す図である。
【図４】出力制御器の演算論理を説明するための図である。
【図５】実施の形態１において、プログラムカウンタ回路内部に保持させる値について説明するための図である。
【図６】本発明の実施の形態１のプログラムカウンタ回路の動作を説明するためのタイムチャートである。
【図７】実施の形態２において、プログラムカウンタ回路内部に保持させる値について説明するための図である。
【図８】本発明の実施の形態２のプログラムカウンタ回路の内部構成を示す図である。
【図９】本発明の実施の形態２のプログラムカウンタ回路の動作を説明するためのタイムチャートである。
【符号の説明】
１  プログラムカウンタ回路、  ２  記憶媒体、  ３  パターンジェネレータ、  ４  加算カウンタ、  ５  ジャンプ前ＰＣレジスタ、  ６  減算カウンタ、７  ジャンプ後ＰＣレジスタ、  ８  ＰＣ値比較回路、  ９  ＡＮＤ回路、  １０  比較基準値、  １１  カウンタ値比較回路、  １２  出力制御器、  １３セレクタ、  １４  カウンタ指定レジスタ、  １５  初期値レジスタ、  １６セレクタ、  １７  プログラムカウンタ回路。
【図１】
2004151990.tif 000003
【図２】
2004151990.tif 000004
【図３】
2004151990.tif 000005
【図４】
2004151990.tif 000006
【図５】
2004151990.tif 000007
【図６】
2004151990.tif 000008
【図７】
2004151990.tif 000009
【図８】
2004151990.tif 000010
【図９】
2004151990.tif 000011