(57)【特許請求の範囲】
【請求項１】
同期式メモリを使用したコンピュータ制御回路において、
出力命令コードを保持するラッチの出力、前記同期式メモリから出力される命令コード、Ｎｏｐ命令コード、およびブレークポイントで発生した命令コードの内の１つを選択するセレクタと、該セレクタの選択動作を制御するレジスタを具備し、
前記セレクタは、前記レジスタにより、前記同期式メモリから出力される命令コードがジャンプ命令のときは前記Ｎｏｐ命令コードを選択して出力し、Ｗａｉｔ命令のときは前記ラッチの出力を選択して出力し、ブレークポイント条件が成立したときは該ブレークポイントの命令コードを選択して出力するよう制御されることを特徴とするコンピュータ制御回路。
【請求項２】
請求項１において、
前記レジスタは、前記セレクタの選択状態を１クロック期間保持することを特徴とするコンピュータ制御回路。
【請求項３】
請求項１又は２において、
前記同期メモリに内蔵されたアドレスレジスタと同じ値を持つよう制御されるプログラムカウンタを具備することを特徴とするコンピュータ制御回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコード等のプログラムで動作するコンピュータ制御回路に係り、特に非同期式メモリを同期式メモリに変更する際に、非同期式メモリ用に開発されたプログラムを変更せずにそのまま使用することができるようにしたコンピュータ制御回路に関するものである。
【０００２】
【従来の技術】
［第１の従来技術］
図７に非同期式メモリを使用した従来のコンピュータ制御回路の構成を示す。１１は非同期式メモリであり、アドレスを入力するとアクセスタイム後にデータが出力される。この非同期式メモリ１１にはプログラムが格納される。２１はデータレジスタ、２２はアドレスレジスタ、２３はアドレス切替セレクタである。非同期式メモリ１１がＲＡＭの場合には、制御回路２０から非同期式メモリ１１にプログラムをダウンロードするときに、アドレス切替セレクタ２３をアドレスレジスタ２２側に切り替えて、アドレスレジスタ２２に非同期式メモリ１１のアドレスをセットし、データレジスタ２１にそのアドレスのプログラムデータをセットして、制御回路２０から非同期式メモリ１１に書き込み信号を入力し、プログラムを書き込む。なお、非同期式メモリ１１がＲＯＭの場合には、データレジスタ２１、アドレスレジスタ２２、セレクタ２３は不要となる。
【０００３】
２５はスタート制御レジスタであり、非同期式メモリ１１に格納されたプログラムを実行するときに、制御回路２０から‘１’を書き込む（ＳＴ＝１）ことによりプログラムがスタートする。
【０００４】
２６はブレークポイント用レジスタ群であり、非同期式メモリ１１に格納されたプログラムの実行中に、特定のアドレスで非同期式メモリ１１に記述された命令コードと異なる命令コードを実行させたい場合に、該特定のアドレスと命令コードを制御回路２０からセットする。このブレークポイント用レジスタ群２６は主にプログラムのデバッグ時に用いる。
【０００５】
３０はプログラムカウンタであり、非同期式メモリ１１のアドレスを生成するために使用される。３２は非同期式メモリ１１のアドレス用セレクタであり、このセレクタ３２の選択条件とその出力を図９に示す。３３はプログラムカウンタ３０用のセレクタである。図９において、スタート制御レジスタ２５の値がＳＴ＝０のときは、プログラムカウンタ３０の値ＰＣが‘０００’にセットされ、非同期式メモリ１１のアドレスａｄｄｒ（ＲＡＭ）が‘０００’にセットされる。また、スタートレジスタ２５の値がＳＴ＝１のときは、後記するプログラム制御命令ｎｏｎ、ｗａｉｔ、ｊｕｍｐ、ｐｕｓｈ、ｐｏｐに応じて、非同期式メモリ１１のアドレスａｄｄｒ（ＲＡＭ）やプログラムカウンタ３０の値ＰＣがセットされる。
【０００６】
２８はスタック命令用レジスタ群であり、プログラムの命令コードがＰｕｓｈ命令の場合はプログラムカウンタ３０の値ＰＣを待避し、Ｐｏｐ命令の場合はＳＴＫ１レジスタの値ＳＴＫ１をセレクタ３２を介して非同期式メモリ１１のアドレスに出力すると共に、加算器３９でＳＴＫ１レジスタの値に１加算して、セレクタ３３を介してプログラムカウンタ３０にセットする。スタック命令用レジスタ群２８は、プログラムのスタックの深さ分だけ準備する。図４にスタックが６段の場合の命令コードと動作を示した。
【０００７】
４０は命令コードレジスタ、４２は命令コードレジスタ用セレクタ、４５はブレークポインタ用レジスタ群２６のアドレスＢＰ１〜ＢＰ６とプログラムカウンタ３０の値ＰＣとの一致を検出する比較器である。
【０００８】
４６は組合せ回路であり、命令コードレジスタ４０にセットされた命令コードＩＲをデコードして、ＡＬＵ等の演算処理を行うと共に、次のプログラムの順番を制御するプログラム制御命令の生成を行う。
【０００９】
このプログラム制御命令には、ｎｏｎ命令、ｐｕｓｈ命令、ｐｏｐ命令、ｊｕｍｐ命令、ｗａｉｔ命令等がある。ｎｏｎ命令はプログラムカウンタ３０の値ＰＣを＋１して、順番にプログラム実行する命令である。ｐｕｓｈ命令はサブルーチン命令等で現在実行中のプログラムカウンタ３０の値ＰＣをスタック群２８に待避させて、別のアドレスの命令を実行する命令である。ｐｏｐ命令はリターン命令等でスタック群２８に待避されていたプログラムカウンタ３０の値ＰＣを復活して、サブルーチンから戻る命令である。ｊｕｍｐ命令はジャンプ命令等でジャンプ条件が成立したときに、命令コードレジスタ４０に書かれたアドレスにジャンプする命令である。ｗａｉｔはＷａｉｔ命令等のある条件が成立するまで同じアドレスのプログラムを実行する命令である。
【００１０】
組合せ回路４８は、組合せ回路４６のプログラム制御命令の成立やブレークポイントの成立（ＰＣ＝ＢＰ１、ＢＰ２，ＢＰ３，ＢＰ４，ＢＰ５，又はＢＰ６）時に、命令コードレジスタ用セレクタ４２の選択条件を生成する回路であり、図８にこのセレクタ４２の選択条件と出力の関係を示した。セレクタ４２の選択結果により、命令コードレジスタ４０に新しい命令コードＩＲがセットされる。図８において、スタート制御レジスタ２５の値がＳＴ＝０のときはＮｏｐ命令が選択される。ＳＴ＝１のときは、組合せ回路４６の出力と比較器４５の出力に応じて、ＩＲ、ＢＰ１〜ＢＰ６のいずれか、ＲＡＭ等が選択される。ＩＲは命令コードレジスタ４０の値、ＢＰ１〜ＢＰ６はブレークポイントレジスタ群２６の特定の出力、ＲＡＭは非同期式メモリ１１の出力である。
【００１１】
図１２は非同期式メモリ１１に書き込まれたプログラムの例であり、図１０、図１１は非同期式メモリ１１を使用したコンピュータ制御回路において、図１２のプログラムを実行した場合のタイミング図である。このタイミングは、図１０の右端に図１１の左端が連続する。
【００１２】
図１０、図１１において、ＣＬＫはクロック、ＳＴはスタート制御レジスタ２５の値、ＰＣはプログラムカウンタ３０の値、ａｄｄｒは非同期式メモリ１１のアドレス、ｄｏは非同期式メモリ１１の出力、ＩＲは命令コードレジスタ４０の値、Ｄｅｃｏｄｅは組合せ回路４６から生成されるプログラム制御命令、ＳＴＫｌはスタック群２８のＳＴＫ１レジスタの値、ＢＰｎはプレークポイントの値である。
【００１３】
ここで、ＳＴ、ＰＣ、ＩＲ、ＳＴＫ１はクロックＣＬＫの立ち上がりに同期して動作するが、ａｄｄｒ、ｄｏ、ＤｅｃｏｄｅはクロックＣＬＫとは非同期で動作する。
【００１４】
さて、制御回路２０からスタート制御レジスタ２５にＳＴ＝１をセットすると、非同期式メモリ１１に格納されたプログラムが‘０００’からスタートする（図１０の７１）。その後、プログラム制御命令Ｄｅｃｏｄｅがｎｏｎ命令の場合は、プログラムカウンタ３０の値ＰＣが順次インクリメントされて、非同期式メモリ１１のアドレスに入力され、新しい命令コードが非同期式メモリ１１から出力されて、命令コードレジスタ４０にＩＲとしてセットされる。新しい命令コードが命令コードレジスタ４０にセットされると、組合せ回路４６の処理結果により、新しいプログラム制御命令が決定される。図１０、図１１におけるＩＲ０〜Ｐｏｐ（ＩＲ８１）は、図１２に示すように、非同期式メモリ１１の各アドレスに記述された命令コードを示す。
【００１５】
図１０、図１１において、７２のＪＭＰ０は、条件ジャンプで条件が成立しない場合を示す。このときはプログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００１６】
７３のＪＭＰ１は、条件ジャンプで、条件が成立した場合を示す。このときはプログラム制御命令がｊｕｍｐ命令となり、命令コードレジスタ４０にセットされたアドレスがセレクタ３２を介して非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００１７】
７４のＷａｉｔ１は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立した場合を示す。このときは、プログラム制御命令はｗａｉｔ命令となり、ＰＣ、ＩＲともに変化しない。
【００１８】
７５のＷａｉｔ０は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立しない場合を示す。このとき、プログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００１９】
７６のＰｕｓｈは、サブルーチン命令で、プログラムカウンタ３０の値ＰＣをＳＴＫ１レジスタにセットすると共に、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスが、セレクタ３２を介して非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００２０】
７７のＰｏｐは、リターン命令で、ＳＴＫ１レジスタに待避されていたプログラムカウンタ３０の値ＰＣが、セレクタ３２を介して非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、リターン先の命令が命令コードレジスタ４０にセットされる。
【００２１】
７８のＢＰ１は、ブレークポイントが成立したときの動作を示す。このとき、ブレークポイントレジスタ群２６にセットされている命令コードＢＰ１が、ＩＲ１７と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令はｎｏｐ命令である。
【００２２】
７９のＢＰ２は、ブレークポイントが成立したときの動作を示す。このとき、プレークポイントレジスタ群２６にセットされている命令コードＢＰ２が、ＩＲ２０と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令がｊｕｍｐ命令である場合には、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスが、セレクタ３２を介して非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００２３】
このように、非同期式メモリ１１を使用したコンピュータ制御回路では、命令コードが命令コードレジスタ４０にセットされてから、組合せ回路４６でデコードを行ってプログラム制御命令を生成し、非同期式メモリ１１のアドレスが確定し、そのアドレスに対応した命令コードが出力され、再び命令コードレジスタ４０にセットされるまで、１クロックで行われる。そのため、組合せ回路４６による遅延時間、非同期式メモリ１１の遅延時間、セレクタ３２、３３、４２の遅延時間、命令コードレジスタ４０のセットアップ時間と遅延時間の総計がクロックの１周期以内に収まる必要がある。よって、非同期式メモリ１１を使ったコンピュータ制御回路では、動作スピードが回路の遅延時間により制約される。
【００２４】
［第２の従来技術］
図１３に従来の同期式アクセス方式のコンピュータ制御回路の構成を示す。図７に示したものと同じものには同じ符号を付けた。３４、３５はプログラムカウンタ３０用のセレクタであり、セレクタ３４の選択条件とその出力を図１４に示す。ＳＴ＝０のときは、セレクタ３４の出力ｎｅｘｔＰＣは‘０００’であり、ＳＴ＝１のときは、組合せ回路４６から出力するプログラム制御命令ｐｕｓｈ、ｐｏｐ、ｊｕｍｐ、ｗａｉｔ，ｎｏｎに応じた動作を行う。例えば、プログラム制御命令がｎｏｎ命令の場合は、加算器３９により＋１インクリメントされる（ＰＣ＋１）。
【００２５】
スタック命令用レジスタ群２８は、プログラムの命令コードがＰｕｓｈ命令の場合は、プログラムカウンタ３０の値ＰＣを待避し、ｐｏｐ命令の場合はＳＴＫ１レジスタの値ＳＴＫ１を加算器３９で＋１を加算してプログラムカウンタ３０にセットする。スタックレジスタ群２８は、図７のコンピュータ制御回路と同様にプログラムのスタックの深さ分だけ準備する。
【００２６】
図１３の同期アクセス方式のコンピュータ制御回路の構成が図７で説明した非同期式メモリのコンピュータ制御回路の構成と違うところは、非同期式メモリ１１のアドレスが、セレクタ２３を介してプログラムカウンタ３０に直接接続されているためクロックの途中で変化しない、つまりクロックに同期する点である。
【００２７】
図１７は同期式アクセス方式を使用した場合のプログラムの例、図１５、図１６は同期式アクセス方式を使用したコンピュータ制御回路において、図１７のプログラムを実行した場合のタイミング図である。このタイミングは、図１５の右端が図１６の左端に連続する。
【００２８】
図１５、図１６において、ＣＬＫはクロック、ＳＴはスタート制御レジスタ２５の値、ｎｅｘｔＰＣはセレクタ３４の出力、ＰＣはプログラムカウンタ３０の値、ｄｏは非同期式メモリ１１の出力、ＩＲは命令コードレジスタ４０の値、Ｄｅｃｏｄｅは組合せ回路４６によって生成されるプログラム制御命令、ＳＴＫ１はスタック群２８のＳＴＫ１レジスタの値、ＢＰｎはブレークポイントの値である。
【００２９】
ここで、ＳＴ、ＰＣ、ＩＲ、ＳＴＫ１はクロックＣＬＫの立ち上がりに同期して動作するが、ｎｅｘｔＰＣ、ｄｏ、ＤｅｃｏｄｅはクロックＣＬＫとは非同期で動作する。
【００３０】
さて、制御回路２０からスタート制御レジスタ２５にＳＴ＝１をセットすると、非同期式メモリ１１に格納されたプログラムが‘０００’からスタートする（図１５の８１）。その後、プログラム制御命令がｎｏｎ命令の場合はプログラムカウンタ３０の値ＰＣが順次インクリメントされて非同期式メモリ１１のアドレスに入力され、新しい命令コードが非同期式メモリ１１から出力され、命令コードレジスタ４０にセットされる。新しい命令コードが命令コードレジスタ４０にセットされると、組合せ回路４６により新しいプログラム制御命令が決定される。ここで、ＩＲ０からＩＲ８１（Ｐｏｐ）は、図１２で説明した命令コードに対応している。
【００３１】
８２のＪＭＰ０は条件ジャンプで条件が成立しない場合を示す。このときは、プログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００３２】
８３のＪＭＰｌは条件ジャンプで条件が成立した場合を示す。このときは、プログラム制御命令がｊｕｍｐ命令となり、命令コードレジスタ４０にセットされたアドレスがプログラムカウンタ３０にセットされる。次のクロックでプログラムカウンタ３０の値ＰＣが非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００３３】
８４のＷａｉｔ１は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立した場合を示す。このときは、プログラム制御命令はｗａｉｔ命令となり、ＰＣ、ＩＲとも変化しない。
【００３４】
８５のＷａｉｔ０は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立しない場合を示す。このとき、プログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００３５】
８６のＰｕｓｈは、サブルーチン命令で、プログラムカウンタ３０の値ＰＣをＳＴＫ１レジスタにセットすると共に、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスがプログラムカウンタ３０にセットされる。次のクロックでプログラムカウンタ３０の値ＰＣが非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００３６】
８７のＰｏｐは、リターン命令で、ＳＴＫ１レジスタに待避されていたプログラムカウンタ３０の値ＰＣが、加算器３９で＋１インクリメントされてプログラムカウンタ３０にセットされる。次のクロックでプログラムカウンタ３０の値が非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００３７】
８８のＢＰｌは、ブレークポイントが成立したときの動作を示す。このとき、ブレークポイントレジスタ群２６にセットされている命令コードＢＰ１が、ＩＲ１７と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令はｎｏｐ命令である。
【００３８】
８９のＢＰ２は、ブレークポイントが成立したときの動作を示す。このとき、ブレークポイントレジスタにセットされている命令コードＢＰ２が、ＩＲ２０と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令がｊｕｍｐ命令である場合は、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスがプログラムカウンタ３０にセットされる。次のクロックでプログラムカウンタ３０の値が非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００３９】
ここでは、ジャンプ命令、サブルーチン命令、リターン命令等で、プログラム制御命令がｊｕｍｐ命令、ｐｕｓｈ命令、ｐｏｐ命令の場合、ジャンプ先の命令が実行されるまで２クロック必要なので、ジャンプ先の命令を実行する前に、ジャンプ命令の次の命令が実行される。このため、図１２のプログラムと同じ動作を実現するためには、図１７に示すように、ＪＭＰ、Ｐｕｓｈ、Ｐｏｐ命令の次に各々Ｎｏｐ命令を追加する必要がある。
【００４０】
このように、同期式アクセス方式を使用したコンピュータ制御回路では、プログラムカウンタ３０の値ＰＣがセットされて、非同期式メモリ１１のアドレスに入力され、非同期式メモリ１１の出力が命令コードレジスタ４０にセットされるのに１クロック掛かる。また、命令コードレジスタ４０にセットされてから、組合せ回路４６でデコードを行い、プログラム制御命令を生成して、プログラムカウンタ３０にセットされるまで１クロック掛かる。
【００４１】
よって、同期式アクセス方式を使用したコンピュータ制御回路では、プログラムカウンタ３０に非同期式メモリ１１のアドレスがセットされて、非同期式メモリ１１のアクセス時間後に命令コードが出力され、命令コードレジスタ４０にセットされるまでの第１の遅延時間と、命令コードレジスタ４０にセットされてから、組合せ回路４６でデコードを行い、プログラムカウンタ３０にセットされるまで第２の遅延時間の内の遅い方の遅延時間によりクロックの周期が決定されることになる。
【００４２】
図７で説明した非同期式メモリを使用するコンピュータ制御回路では、上記の第１の遅延時間と第２の遅延時間の合計でクロックの周期が決定されるため、図７の同期式アクセス方式の方がより早いクロックで動作させることが可能となり、そのため、タイミング設計も容易になる。
【００４３】
一方、同期式アクセス方式の場合は、プログラムカウンタ３０上の命令を実行するタイミングが１クロック遅くなる。連続した命令であれば、命令の実行がプログラムカウンタ３０の指示よりも全体が遅れることになる。
【００４４】
また、ジャンプ命令やサブルーチン命令のようにプログラムカウンタ３０の値ＰＣが変化する命令（ジャンプ命令等）を実行すると、新しいジャンプ先がプログラムカウンタ３０にセットされる。このジャンプ命令の実行中には、プログラムカウンタ３０に、次の命令アドレスがセットされており、次のクロックではジャンプ命令の次の命令を実行し、その次のクロックでジャンプ先の命令を実行することになる。
【００４５】
よって、図７に示した非同期式メモリを使用するコンピュータ制御回路用に開発されたプログラムを、図１３に示した同期式メモリを使用するコンピュータ制御回路で使用するためには、ジャンプ命令の前後関係を考慮して、Ｎｏｐ命令を挿入したり、ジャンプに影響されない命令に変更したりして、プログラムを同期式メモリ用に修正する必要がある。
【００４６】
［第３の従来例］
図１８に同期式メモリ方式のコンピュータ制御回路の構成を示す。１０は同期式メモリであり、非同期式メモリ１１、入力データレジスタ１２、アドレスレジスタ１３、出力データレジスタ１５を具備し、入出力がクロックに同期してアクセスされる。その他の図１３と同じものには同じ符号を付けた。
【００４７】
図１８の同期式メモリ方式のコンピュータ制御回路の構成が図１３の同期アクセス方式のコンピュータ制御回路の構成と違うところは、図１３の非同期式メモリ１１が図１８の同期式メモリ１０に代わっている点と、図１８の同期式メモリ１０の内部のアドレスレジスタ１３の値ａｄｄｒとプログラムカウンタ３０の値ＰＣが同じになるように構成され、プログラムカウンタ３０にセットされる値（ＰＣ−１）が実際のアドレスａｄｄｒとなり、そのアドレスａｄｄｒによる出力が出力レジスタ１５により１クロック遅れる点である。
【００４８】
図１９は同期式メモリ１０を使用したコンピュータ制御回路のプログラムの例であり、図２０、図２１、図２２は、同期式メモリ１０を使用したコンピュータ制御回路において、図１９のプログラムを実行した場合のタイミング図である。このタイミングは、図２０の右端が図２１の左端に連続し、図２１の右端が図２２の左端に連続する。
【００４９】
図２０、図２１、図２２において、ＣＬＫはクロック、ＳＴはスタート制御レジスタ２５の値、ｎｅｘｔＰＣはセレクタ３４の出力、ＰＣはプログラムカウンタ３０の値、ＤＯは同期式メモリ１０の出力、ＩＲは命令コードレジスタ４０の値、Ｄｅｃｏｄｅは組合せ回路４６によって生成されるプログラム制御命令、ＳＴＫ１はスタック群２８のＳＴＫ１レジスタの値、ＢＰｎはブレークポイントの値である。
【００５０】
ここで、ＳＴ、ＰＣ、ＤＯ、ＩＲ、ＳＴＫ１はクロックＣＬＫの立ち上がりに同期して動作するが、ｎｅｘｔＰＣ、ＤｅｃｏｄｅはクロックＣＬＫとは非同期で動作する。
【００５１】
さて、制御回路２０からスタート制御レジスタ２５にＳＴ＝１をセットすると、同期式メモリ１０に格納されたプログラムが‘０００’からスタートする（図２０の９１）。その後、プログラム制御命令がｎｏｎ命令の場合はプログラムカウンタ３０の値ＰＣが順次インクリメントされるが、それより１つ前の値「ＰＣ−１」が同期式メモリ１０のアドレスレジスタ１３に入力され、新しい命令コードが出力データレジスタ１５にセットされて、次のクロックでセレクタ４２を介して命令コードレジスタ４０にセットされる。新しい命令コードが命令コードレジスタ４０にセットされると、組合せ回路４６の処理結果により、新しいプログラム制御命令が決定される。ここで、ＩＲ０からＩＲ８１（Ｐｏｐ）は、図１２に示した命令コードに対応している。
【００５２】
９２のＪＭＰ０は、条件ジャンプで条件が成立しない場合を示す。このときはプログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００５３】
９３のＪＭＰ１は、条件ジャンプで条件が成立した場合を示す。このときはプログラム制御命令がｊｕｍｐ命令となり、命令コードレジスタ４０にセットされたアドレスが、セレクタ３４を介して同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。次のクロックで同期式メモリ１０から命令コードが出力され、その次のクロックで同期式メモリ１０の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００５４】
９４のＷａｉｔ１は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立した場合を示す。このときはプログラム制御命令はｗａｉｔ命令となり、ＰＣ、ＩＲとも変化しない。
【００５５】
９５のＷａｉｔ０は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立しない場合を示す。このときはプログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００５６】
９６のＰｕｓｈは、サブルーチン命令であり、プログラムカウンタ３０の値ＰＣをＳＴＫ１レジスタにセットすると共に、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスが、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。次のクロックで同期式メモリ１０から命令コードが出力され、その次のクロックで同期式メモリ１０の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００５７】
９７のＰｏｐは、リターン命令であり、ＳＴＫ１レジスタに待避されていたプログラムカウンタ３０の値が、加算器３９で＋１インクリメントされて、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。次のクロックで同期式メモリ１０から命令コードが出力され、その次のクロックで同期式メモリ１０の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００５８】
９８のＢＰｌは、プレークポイントが成立したときの動作を示す。このとき、ブレークポイントレジスタにセットされている命令コードＢＰｌが、ＩＲ１７と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令がｎｏｐ命令である。ここで、ブレークポイントレジスタのアドレスには、置換したい命令のアドレス＋１の値をセットする必要がある。
【００５９】
９９のＢＰ２は、ブレークポイントが成立したときの動作を示す。このとき、プレークポイントレジスタにセットされている命令コードＢＰ２が、ＩＲ２０と置換されて、命令コードレジスタ４０にセットされる。このときのプログラム制御命令がｊｕｍｐ命令である場合は、命令コードレジスタ４０にセットされた新しいジャンプ先のアドレスが、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。次のクロックで同期式メモリ１０から命令コードが出力され、その次のクロックで同期式メモリ１０の出力がセレクタ４２を介して出力し、ジャンプ先の命令が命令コードレジスタ４０にセットされる。
【００６０】
ここでは、ジャンプ命令、サブルーチン命令、リターン命令等により、プログラム制御命令がｊｕｍｐ命令、ｐｕｓｈ命令、ｐｏｐ命令の場合には、ジャンプ先の命令が実行されるまで３クロック必要なので、ジャンプ先の命令を実行する前に、ジャンプ命令の次の命令が実行される。このため、図１２のプログラムと同じ動作を実現するためには、図１９に示すように、ＪＭＰ、Ｐｕｓｈ、Ｐｏｐ、Ｗａｉｔの命令の次にＮｏｐ命令を２つ追加する必要がある。
【００６１】
このように、同期式メモリ１０を使用したコンピュータ制御回路では、同期式メモリ１０の出力がクロックに同期しているので、Ｗａｉｔ命令やブレークポイントや他の条件を含めた動作を考慮すると、図１８に示すようにセレクタ４２を介して命令コードレジスタ４０に接続する必要があるので、図１３に示した同期式アクセス方式のコンピュータ制御回路よりも、アドレスアドレスレジスタ１３にアドレスがセットされてから、命令コードレジスタ４０に命令コードがセットされるのが１クロック遅くなる。
【００６２】
よって、同期式メモリ１０を使用したコンピュータ制御回路の場合は、プログラムカウンタ３０上の命令を実行するタイミングが２クロック遅くなる。連続した命令であれば、命令の実行がプログラムカウンタ３０の指示よりも全体が遅れることになる。
【００６３】
また、ジャンプやサブルーチン命令のようにプログラムカウンタの値が変化する命令（ジャンプ命令等）を実行すると、新しいジャンプ先がプログラムカウンタにセットされるが、このジャンプ命令の実行中には、プログラムカウンタに次の命令アドレスがセットされており、次のクロックではジャンプ命令の次の命令を実行し、その次のクロックでジャンプ先の命令を実行することになる。よって、非同期式のメモリ１１を使用するコンピュータ制御回路用に開発されたプログラムを同期式メモリ１０を使用するコンピュータ制御回路で使用するためには、ジャンプ命令の前後関係を考慮して、Ｎｏｐ命令２個を挿入したり、ジャンプに影響されない命令に変更したりして、プログラムを同期式メモリ１０用に修正する必要がある。
【００６４】
【発明が解決しようとする課題】
今日、プロセス技術が進化して微細化されている。ここで、一度コンピュータ制御回路を開発した後、より微細化されたプロセスにて再開発する場合、非同期式メモリを使用していると、非同期式メモリの個所でタイミング問題が発生しやすい。そこで、同期式メモリを使用するとタイミング問題が発生しにくいので、同期式メモリを使用することが多くなっている。さらに、プロセスメーカとして、非同期式メモリを準備しないケースも増えている。
【００６５】
しかし、非同期式メモリを同期式メモリに変更すると、前述したように、プログラムメモリにアドレスを入力してから、データが出てくるまで１クロック遅れる。そのため、プログラムカウンタ上の命令を実行するタイミングが１クロック遅くなる。連続した命令であれば、命令の実行がプログラムカウンタの指示よりも全体が遅れることになる。
【００６６】
また、ジャンプやサブルーチン命令のようにプログラムカウンタの値が変化する命令（ジャンプ命令等）を実行すると、新しいジャンプ先がプログラムカウンタにセットされるが、このジャンプ命令の実行中には、プログラムカウンタに次の命令アドレスがセットされており、次のクロックではジャンプ命令の次の命令を実行し、その次のクロックでジャンプ先の命令を実行することになるので、非同期式のメモリ用に開発されたプログラムを同期式メモリで使用するためには、ジャンプ命令の前後関係を考慮して、Ｎｏｐ命令を挿入したり、ジャンプに影響されない命令に変更したりして、プログラムを同期式メモリ用に修正する必要があるという問題がある。
【００６７】
本発明は上記問題点を解消し、非同期式メモリ用に開発されたプログラムを修正すること無くそのまま使用できるようにした同期式メモリ使用のコンピュータ制御回路を実現することを目的とするものである。
【００６８】
【課題を解決するための手段】
請求項１に係る発明は、同期式メモリを使用したコンピュータ制御回路において、出力命令コードを保持するラッチの出力、前記同期式メモリから出力される命令コード、Ｎｏｐ命令コード、およびブレークポイントで発生した命令コードの内の１つを選択するセレクタと、該セレクタの選択動作を制御するレジスタを具備し、前記セレクタは、前記レジスタにより、前記同期式メモリから出力される命令コードがジャンプ命令のときは前記Ｎｏｐ命令コードを選択して出力し、Ｗａｉｔ命令のときは前記ラッチの出力を選択して出力し、ブレークポイント条件が成立したときは該ブレークポイントの命令コードを選択して出力するよう制御されることを特徴とするコンピュータ制御回路とした。
【００６９】
請求項２に係る発明は、請求項１に係る発明おいて、前記レジスタは、前記セレクタの選択状態を１クロック期間保持することを特徴とするコンピュータ制御回路とした。
【００７０】
請求項３に係る発明は、請求項１又は２に係る発明おいて、前記同期メモリに内蔵されたアドレスレジスタと同じ値を持つよう制御されるプログラムカウンタを具備することを特徴とするコンピュータ制御回路とした。
【００７１】
【発明の実施の形態】
本発明の同期式メモリを使用したコンピュータ制御回路では、命令コード選択用セレクタを使用し、このセレクタを命令コード選択用レジスタで制御する。これにより、命令コードを保持するラッチの出力、同期式メモリから出力される命令コード、Ｎｏｐ命令コード、プレークポイント等で発生した命令コードの内の１つを命令コード選択用セレクタで選択し、命令コードがジャンプ命令のときはＮｏｐ命令を挿入し、Ｗａｉｔ命令のときは命令をラッチしたラッチから同じ命令コードを出力し、ブレークポイント条件が成立した場合にはその命令コードが出力されるようする。
【００７２】
このような構成すると、命令コードの選択に命令コード選択用レジスタを使用しているので、選択された命令コードがクロックの途中で変化しない。つまり、命令コードがクロックに同期する。よって、そのセレクタの出力を命令コードレジスタの出力と同じように使用できる。
【００７３】
図１に本発明の１つの実施形態のコンピュータ制御回路の構成を示す。１０は同期式メモリであり、非同期式メモリ１１、入力データレジスタ１２、アドレスレジスタ１３、出力データレジスタ１５を具備し、入出力がクロックに同期してアクセスされる。２１はデータレジスタ、２２はアドレスレジスタ、２３はアドレス切替セレクタであり、これらは、同期式メモリ１０がＲＡＭの場合は、制御回路２０から非同期式メモリ１１ヘプログラムをダウンロードするときに使用するが、同期式メモリ１０がＲＯＭの場合は不要となる。
【００７４】
２５はスタート制御レジスタであり、制御回路２０からＳＴ＝１を書き込むことにより、プログラムがスタートする。２６はブレークポイント用レジスタ群であり、主にプログラムのデバッグ時に用いる。
【００７５】
３０はプログラムカウンタであり、同期式メモリ１０内のアドレスレジスタ１３と同じ値がセットされる。３１は同期式メモリ１０のアドレス用およびプログラムカウンタ３０用のセレクタであり、その選択条件と出力ｎｅｘｔＰＣを図３に示す。図３において、セレクタ３１はスタート制御レジスタ２５の値がＳＴ＝０のときは‘０００’を選択し、ＳＴ＝１のときはプログラム制御命令ｐｕｓｈ、ｐｏｐ、ｊｕｍｐ、ｗａｉｔ、ｎｏｎに応じて、ＰＣ＋１、ＰＣ、ＩＲ、ＳＴＫ１等を選択する。例えば、プログラム制御命令がｎｏｎ命令の場合は、プログラムカウンタ３０の値ＰＣが加算器３９により＋１インクリメントされてＰＣ＋１となる。
【００７６】
２８はスタック命令用レジスタ群であり、プログラムの命令コードがＰｕｓｈ命令の場合は、プログラムカウンタ３０の値ＰＣを待避し、Ｐｏｐ命令の場合はＳＴＫ１レジスタの値をセレクタ３１を介して同期式メモリ１０のアドレスとプログラムカウンタ３０にセットする。スタックレジスタ群２８は、プログラムのスタックの深さ分だけ準備する。図４にスタックが６段の場合の命令コードと動作を示した。
【００７７】
４１は命令コード選択用セレクタ、４５はブレークポインタ用レジスタ群２６のアドレスＢＰ１〜ＢＰ６とプログラムカウンタ３０の値ＰＣとの一致を検出する比較器である。
【００７８】
４６は組合せ回路であり、命令コード選択用セレクタ４１から出力された命令コードをデコードして、ＡＬＵ等の演算処理を行うと共に、次のプログラムの順番を制御するプログラム制御命令ｐｕｓｈ、ｐｏｐ、ｊｕｍｐ、ｗａｉｔ、ｎｏｎの生成を行う。
【００７９】
４７も組合せ回路であり、組合せ回路４６で生成したプログラム制御命令、比較器４５の出力、およびスタート制御レジスタ２５の出力を入力し、命令コード選択用セレクタ４１の選択条件を生成する。５５は命令コード選択レジスタであり、組合せ回路４７の処理結果に応じてセレクタ４１の選択条件をセットする。
【００８０】
図２にセレクタ４１の選択条件とその出力の関係を示す。図２において、ＳＴ＝０で且つプログラム制御命令がｊｕｍｐ、ｐｕｓｈ、又はｐｏｐのときはＮｏｐ命令を選択し、ＳＴ＝１で且つプログラム制御命令がｎｏｎのときはＲＡＭ（同期式メモリ１０の出力）を選択し、ＳＴ＝１で且つプログラム制御命令がｗａｉｔのときはセレクタ４１の出力をラッチするラッチ５０の出力Ｒ１を選択し、ＳＴ＝１で且つＰＣ＝ＢＰ１、ＢＰ２、ＢＰ３、ＢＰ４、ＢＰ５、又はＢＰ６のときはＢＰ１〜ＢＰ６の対応するいずれかを選択する。
【００８１】
図５、図６に本発明の実施形態のコンピュータ制御回路のタイミング図を示す。このタイミング図は、図７に示した非同期式メモリを使用したコンピュータ制御回路用のプログラム（図１２）を実行した場合のタイミング図である。このタイミングにおいて、図５の右端が図６の左端に連続する。
【００８２】
図５、図６において、ＣＬＫはクロック、ＳＴはスタート制御レジスタ２５の値、ｎｅｘｔＰＣはセレクタ３１の出力、ＰＣはプログラムカウンタ３０の値、ＤＯは同期式メモリ１０の出力、Ｒ１は命令コードを保持するラッチ５０の値、Ｓｅｌは命令コード選択レジスタ５５の値、ＩＲは命令コード選択用セレクタ４１の出力、Ｄｅｃｏｄｅは組合せ回路４６によって生成されるプログラム制御命令、ＳＴＫ１はスタック群２８のＳＴＫ１レジスタの値、ＢＰｎはプレークポイントの値である。
【００８３】
ここで、ＳＴ、ＰＣ、ＤＯ、Ｒ１、Ｓｅｌ、ＳＴＫ１はクロックＣＬＫの立ち上がりに同期して動作する。ＩＲはクロックの立ち上がりに対してセレクタ４１の動作時間だけ遅延する。また、ｎｅｘｔＰＣ、ＤｅｃｏｄｅはクロックＣＬＫとは非同期で動作する。
【００８４】
ここでは、同期式メモリ１０の内部のアドレスレジスタ１３の値ａｄｄｒとプログラムカウンタ３０の値ＰＣが同じになり、プログラムカウンタ３０にセットされる値（ＰＣ−１）が実際のアドレスａｄｄｒとなり、そのアドレスａｄｄｒによる出力が出力レジスタ１５により１クロック遅れる。
【００８５】
さて、制御回路２０からスタート制御レジスタ２５にＳＴ＝１をセットすると、同期式メモリ１０に格納されたプログラムが‘０００’からスタートする（図５の６１）。その後、プログラム制御命令がｎｏｎ命令の場合は、プログラムカウンタ３０の値ＰＣが順次インクリメントされるが、それより１つ前の値「ＰＣ−１」が同期式メモリ１０のアドレスレジスタ１３に入力され、新しい命令コードが出力データレジスタ１５にセットされ、その出力がセレクタ４１を介して新しい命令コードとなる。そして、組合せ回路４６の処理結果により、新しいプログラム制御命令が決定される。ここで、ＩＲ０からＩＲ８１（Ｐｏｐ）は図１２の命令コードに対応している。
【００８６】
６２のＪＭＰ０は、条件ジャンプで条件が成立しない場合を示す。このときは、プログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。
【００８７】
６３のＪＭＰｌは、条件ジャンプで条件が成立した場合を示す。このときは、プログラム制御命令がｊｕｍｐ命令となり、セレクタ４１が出力している命令コードＩＲ上のアドレスが、セレクタ３１を介して同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。また、ｊｕｍｐ命令の場合は、組合せ回路４７によりセレクタ４１の次の出力としてＮｏｐ命令が選択されて、次のクロックで命令コード選択レジスタ５５がＮｏｐの選択用にセットされ、セレクタ４１から命令コードとしてＮｏｐ命令が出力される。その次のクロックで同期式メモリ１０からジャンプ先の命令コードが出力される。このときは、プログラム制御命令はｎｏｎ命令なので、命令コード選択レジスタ５５が同期式メモリ１０の出力の選択用にセットされ、同期式メモリ１０の出力がセレクタ４１を介して出力し、ジャンプ先の命令コードとなる。このようにジャンプ命令とジャンプ先の命令の間にＮｏｐ命令が自動挿入される。
【００８８】
６４のＷａｉｔ１は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立した場合を示す。このときは、プログラム制御命令はｗａｉｔ命令となり、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０の値は変化しない。また、組合せ回路４７によりセレクタ４１の次の出力としてラッチ５０のＲ１が選択され、次のクロックで命令コード選択レジスタ５５がラッチ５０のＲ１の選択用にセットされ、セレクタ４１から現在実行中と同じ命令コードが出力される。
【００８９】
６５のＷａｉｔ０は、Ｗａｉｔ命令で、Ｗａｉｔ条件が成立しない場合を示す。このときは、プログラム制御命令はｎｏｎ命令となり、プログラムカウンタ３０の値ＰＣは＋１加算される。このときは、プログラム制御命令はｎｏｎ命令なので、命令コード選択レジスタ５５が同期式メモリ１０の出力の選択用にセットされて、同期式メモリ１０の出力がセレクタ４１を介して出力し、次の命令コードとなる。
【００９０】
６６のＰｕｓｈは、サブルーチン命令で、プログラムカウンタ３０の値ＰＣをＳＴＫ１レジスタにセットする。このときは、プログラム制御命令がｐｕｓｈ命令となり、セレクタ４１が出力している命令コードＩＲ上のアドレスが、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。また、ｐｕｓｈ命令の場合は、組合せ回路４７により次のセレクタ４１の出力としてＮｏｐ命令が選択されて、次のクロックで命令コード選択レジスタ５５がＮｏｐの選択用にセットされ、セレクタ４１から命令コードＩＲとしてＮｏｐ命令が出力される。その次のクロックで同期式メモリ１０からジャンプ先の命令コードが出力される。このときは、プログラム制御命令はｎｏｎ命令なので、命令コード選択レジスタ５５が同期式メモリ１０の出力の選択用にセットされて、同期式メモリ１０の出力がセレクタ４１を介して出力し、ジャンプ先の命令コードとなる。このようにＰｕｓｈ命令とジャンプ先の命令の間にＮｏｐ命令が自動挿入される。
【００９１】
６７のＰｏｐは、リターン命令で、プログラム制御命令がｐｏｐ命令となり、ＳＴＫ１レジスタに待避されていたプログラムカウンタ３０の値ＰＣが、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。また、ｐｏｐ命令の場合は、組合せ回路４７により次のセレクタ４１の出力ＩＲとしてＮｏｐ命令が選択されて、次のクロックで命令コード選択レジスタ５５がＮｏｐの選択用にセットされ、これによりセレクタ４１から命令コードＩＲとしてＮｏｐ命令が出力される。その次のクロックで同期式メモリ１０から待避先の命令コードが出力される。このときは、プログラム制御命令はｎｏｎ命令なので、命令コード選択レジスタ５５が同期式メモリ１０の出力の選択用にセットされて、同期式メモリ１０の出力がセレクタ４１を介して出力し、待避先の命令コードとなる。このようにｐｏｐ命令と待避先の命令の間にＮｏｐ命令が自動挿入される。
【００９２】
６８のＢＰ１は、ブレークポイントが成立したときの動作を示す。このときは、組合せ回路４７により次のセレクタ４１の出力としてＢＰ１が選択され、次のクロックで命令コード選択レジスタ５５がＢＰ１の選択用にセットされ、これによりブレークポイントレジスタ群２６にセットされている命令コードＢＰ１がＩＲ１７と置換されて、セレクタ４１を介して新しい命令コードＩＲとして出力される。
【００９３】
６９のＢＰ２は、ブレークポイントが成立したときの動作を示す。このときは、組合せ回路４７により次のセレクタ４１の出力としてＢＰ２が選択されて、次のクロックで命令コード選択レジスタ５５がＢＰ２の選択用にセットされ、セレクタ４１からプレークポイントレジスタ群２６にセットされている命令コードＢＰ２が、ＩＲ２０と置換されて、セレクタ４１を介して新しい命令コードとして出力される。このときのプログラム制御命令がｊｕｍｐ命令である場合は、セレクタ４１が出力している命令コードＩＲ上のアドレスが、同期式メモリ１０のアドレスレジスタ１３とプログラムカウンタ３０にセットされる。また、ｊｕｍｐ命令の場合は、組合せ回路４７により次のセレクタ４１の出力としてＮｏｐ命令が選択されて、次のクロックで命令コード選択レジスタ５５がＮｏｐの選択用にセットされ、セレクタ４１から命令コードＩＲとしてＮｏｐ命令が出力される。その次のクロックで同期式メモリ１０からジャンプ先の命令コードが出力される。このときは、プログラム制御命令はｎｏｎ命令なので、命令コード選択レジスタ５５が同期式メモリ１０の出力の選択用にセットされ、同期式メモリ１０の出力がセレクタ４１を介して出力し、ジャンプ先の命令コードとなる。このようにジャンプ命令とジャンプ先の命令の問にＮｏｐ命令が自動挿入される。
【００９４】
以上のように、本実施形態では、非同期式メモリを同期式メモリに変更する場合、非同期式メモリ用に開発されたプログラムを実行するとき、ジャンプやサブルーチン命令等で自動的にＮｏｐ命令を挿入するので、非同期式メモリ用に開発されたプログラムを変更せずにそのまま使用することができる。
【００９５】
さらに、命令コード選択用レジスタ５５を用いているので、図７、図１３、図１８のコンピュータ制御回路で使用した命令コードレジスタ４０と同等な、クロックに同期した命令コードを得ることができる。
【００９６】
【発明の効果】
以上から本発明によれば、非同期式メモリを同期式メモリに変更する場合、非同期式メモリ用に開発されたプログラムを変更せずに使用することができるようになるため、プログラムの開発コストが不要になる。
【００９７】
通常、非同期式メモリを同期式メモリに変更する場合、タイミング調整用にＮｏｐ等の命令を追加するためにプログラムの容量が増えるが、本発明ではプログラム容量は変化しないので、メモリの増加によるチップのコスト上昇がない。
【００９８】
また、同期式メモリを使用すると、タイミング制約が簡単になり、プロセスが微細化した場合に、容易にプロセスの変更ができるため、同じ回路においてチップ面積を小さくすることにより、チップコストが安くなる。
【図面の簡単な説明】
【図１】  本発明の一実施形態の同期式メモリを使用したコンピュータ制御回路の回路図である。
【図２】  図１の回路の命令コード選択用セレクタ４１のテーブルの説明図である。
【図３】  図１の回路のプログラムカウンタ用セレクタ３１のテーブルの説明図である。
【図４】  図１のスタック用レジスタ群２８のスタック状態遷移テーブルの説明図である。
【図５】  図１の回路の動作のタイミング図である
【図６】  図１の回路の動作のタイミング図である。
【図７】  従来の非同期式メモリを使用したコンピュータ制御回路の回路図である。
【図８】  図７の回路の命令コードレジスタ用セレクタのテーブルの説明図である。
【図９】  図７の回路のアドレス用セレクタのテーブルの説明図である。
【図１０】  図７の回路の動作のタイミング図である。
【図１１】  図７の回路の動作のタイミング図である。
【図１２】  図７の回路用のプログラムの説明図である。
【図１３】  従来の同期式アクセス方式のコンピュータ制御回路の回路図である。
【図１４】  図１３の回路のプログラムカウント用セレクタのテーブルの説明図である。
【図１５】  図１３の回路の動作のタイミング図である。
【図１６】  図１３の回路の動作のタイミング図である。
【図１７】  図１３の回路用のプログラムの説明図である。
【図１８】  従来の同期式メモリを使用したコンピュータ制御回路の回路図である。
【図１９】  図１８の回路用のプログラムの説明図である。
【図２０】  図１８の回路の動作のタイミング図である。
【図２１】  図１８の回路の動作のタイミング図である。
【図２２】  図１８の回路の動作のタイミング図である。
【符号の説明】
１０：同期式メモリ、１１：非同期式メモリ、１２：入力データレジスタ、１３：アドレスレジスタ、１５：出力データレジスタ、
２０：制御回路、２１：データレジスタ、２２：アドレスレジスタ、２３：アドレス切替セレクタ、２５：スタート制御レジスタ、２６：ブレークポイント用レジスタ群、２８：スタック命令用レジスタ群、
３０：プログラムカウンタ、３１：同期式メモリのアドレスおよびプログラムカウンタ用のセレクタ、３２：アドレス用セレクタ、３３：プログラムカウンタ用セレクタ、３４,３５：プログラムカウンタ用セレクタ、３９：加算器、
４０：命令コードレジスタ、４１：命令コード選択用セレクタ、４２：命令コードレジスタ用セレクタ、４５：比較器、４６，４７，４８：組合せ回路、
５０：ラッチ、５５：命令コード選択レジスタ。
【図１】
0003716320.tif 000002
【図２】
0003716320.tif 000003
【図３】
0003716320.tif 000004
【図４】
0003716320.tif 000005
【図５】
0003716320.tif 000006
【図６】
0003716320.tif 000007
【図７】
0003716320.tif 000008
【図８】
0003716320.tif 000009
【図９】
0003716320.tif 000010
【図１０】
0003716320.tif 000011
【図１１】
0003716320.tif 000012
【図１２】
0003716320.tif 000013
【図１３】
0003716320.tif 000014
【図１４】
0003716320.tif 000015
【図１５】
0003716320.tif 000016
【図１６】
0003716320.tif 000017
【図１７】
0003716320.tif 000018
【図１８】
0003716320.tif 000019
【図１９】
0003716320.tif 000020
【図２０】
0003716320.tif 000021
【図２１】
0003716320.tif 000022
【図２２】
0003716320.tif 000023