(57)【要約】　　　（修正有）【課題】高速処理が可能な制御用プロセッサを提供する。【解決手段】少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令で指定された被演算数の桁数が互いに異なる場合は，符号拡張，零拡張，丸め処理などを行い被演算数の桁数を揃えて演算を行い，桁合わせのための処理プログラムを不要として演算を高速化する。又，前記演算用レジスタが外部からアクセス可能なデュアルポート機能を有する。【選択図】　図１
2004005465.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令で指定された被演算数の桁数が互いに異なる場合、桁数の多い被演算数に合わせて、桁数の少ない被演算数の上位を符号拡張または下位を零拡張した後に演算を行うことを特徴とする制御用プロセッサ。
【請求項２】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令で指定された被演算数の桁数が互いに異なる場合、桁数の少ない被演算数に合わせて、桁数の多い被演算数の下位を四捨五入処理した後に演算を行うことを特徴とする制御用プロセッサ。
【請求項３】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令で指定された演算結果の桁数に対して演算結果を収納する演算用レジスタの桁数が小さな場合は、演算結果の下位を四捨五入処理して演算用レジスタに収納することを特徴とする制御用プロセッサ。
【請求項４】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令で指定された演算結果の桁数に対して演算結果を収納する演算用レジスタの桁数が大きな場合は、演算結果の上位を符号拡張または下位を零拡張して演算用レジスタに収納することを特徴とする制御用プロセッサ。
【請求項５】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、数値左シフト命令で数値を指定された桁数だけ左シフトした結果が符号変化を生ずる場合、もとの数値と同符号の最大の数値に置き換えて演算用レジスタに収納することを特徴とする制御用プロセッサ。
【請求項６】
少なくとも演算用レジスタ、算術論理演算ユニット、命令デコーダ、タイミングコントローラからなり、演算命令として、指定されたレジスタの数値Ａ、Ｂ、Ｃに対して、正弦波または余弦波との積和演算を下式にて行ない、
Ｃ＝Ｃ±ＡｓｉｎＢ、Ｃ＝Ｃ±ＡｃｏｓＢ
２π／３ラジアンだけ位相が異なる正弦波または余弦波との積和演算を下式にて行なう
Ｃ＝Ｃ±Ａｓｉｎ（Ｂ±２π／３）、Ｃ＝Ｃ±Ａｃｏｓ（Ｂ±２π／３）
演算回路を備え、三相正弦波を扱う座標変換演算が容易なことを特徴とする制御用プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はあらかじめプログラムされた命令をデコード（解釈）して実行するマイクロプロセッサであり、特に高速な制御演算を必要とする電力変換装置や、電力変換器を使用した電動機制御装置の制御に適用するのに適した制御用プロセッサに関する。
【０００２】
【従来の技術】
従来、インバータなどの電力変換装置や、インバータを用いて交流電動機の制御を行う交流電動機制御装置の制御演算には、いわゆるマイクロコンピュータと呼ばれているマイクロプロセッサや、ＤＳＰ（ディジタルシグナルプロセッサ）が用いられている。
【０００３】
図４は、従来の代表的な交流電動機制御装置の構成を示している。６０１はインバータ、６０２は交流電動機、６０３は回転センサ、６０４は電流センサ、６０５はインバータ制御ロジック、６０６は電流センサ用インターフェース、６０７は回転センサ用インターフェース、６０８はＤＳＰ、６０９はＤＳＰ用メモリ、６１０はデュアルポートメモリ、６１１はマイクロプロッセッサ、６１２はマイクロプロセッサ用メモリ、６１３は外部インターフェースである。
【０００４】
一般に、交流電動機をインバータで制御する場合、マイクロプロセッサ６１１やＤＳＰ６０８によって、マイクロプロセッサ用メモリ６１１やＤＳＰ用メモリ６０９に記憶されたプログラムにしたがって制御演算が実行される。
【０００５】
外部インターフェース６１３から与えられる速度指令と回転センサ６０３で検出された交流電動機６０２の速度とを比較する速度制御演算が行われ、交流電動機６０２が出力すべきトルク指令が演算さる。このトルク指令から交流電動機６０２に流すべき電流指令が演算される。この電流指令と電流センサ６０４で検出された交流電動機６０２の電流とを比較する電流制御演算が行われ、インバータ６０１が出力すべき電圧指令が演算される。
【０００６】
インバータ制御ロジック６０５ではこの電圧指令に応じてオンとオフの比率が変わるオンオフ信号が作られ、このオンオフ信号にしたがってインバータ６０１のスイッチング素子がオンオフする。このオンオフ制御は、インバータ６０１のスイッチング素子のオンとオフのパルス幅が変わることから、ＰＷＭ制御（パルス幅変調制御）と呼ばれ、変調周波数（オンオフの周波数）は数ｋＨｚ〜数十ｋＨｚが用いられる。電流制御とＰＷＭ制御によって、インバータの出力電流（交流電動機の電流）は電流指令に追従した疑似的な正弦波形に制御される。
【０００７】
変調周波数を高くするとともに、制御演算のサンプリング周波数も高くすることにより、より正弦波に近く、追従性をよくできる。変調周波数およびサンプリング周波数を１０ｋＨｚとすると、サンプリング周期は１００μｓとなり、制御演算は非常に高速に行う必要がある。このため、マイクロプロセッサ６１１だけでは処理しきれず、ＤＳＰ６０８によって高速演算が必要な電流制御を行い、その他の比較的に低速でもよい演算をマイクロプロセッサ６１１で分担するようにしている。マイクロプロセッサ６１１とＤＳＰ６０８とのデータ授受は、マイクロプロセッサ６１１、ＤＳＰ６０８のどちらからでもアクセス可能なデュアルポートメモリ６１０を介して行う。
【０００８】
【発明が解決しようとする課題】
従来は、このような構成で交流電動機の制御が行われていたが、最近はより高性能化するため、より高い変調周波数が要求され、複雑な制御演算を高速で実行する演算機能が必要となってきている。
【０００９】
しかしながら、制御演算を高速に行うために、より高速なマイクロプロセッサやＤＳＰを用いても、互いのデータ授受が高速化のネックとなる。また、マイクロプロセッサはパーソナルコンピュータ用として、ＤＳＰは音声や画像処理用として高機能化、高性能化が進んでおり、交流電動機などの制御用としての高速処理には使いにくく、コストアップとなってしまう。
【００１０】
そこで、本発明は、上記事情に鑑みなされ、パワーエレクトロニクスの制御を行う際に、高速処理が可能な特殊命令を用いた演算機能を備えた制御用プロセッサを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するための手段として、この発明は、演算命令において、被演算数の桁数が互いに異なる場合に、桁数の多い被演算数に合わせ、桁数の少ない被演算数の上位を符号拡張、または下位を零拡張した後に演算を行い、桁合わせのための処理プログラムを不要として、演算を高速化する。
【００１２】
更に、この発明は、演算命令において、被演算数の桁数が互いに異なる場合、桁数の少ない被演算数に合わせて、桁数の多い被演算数の下位をまるめ処理（四捨五入）した後に演算を行ない、桁合わせ、まるめのための処理プログラムを不要とし、演算を高速化する。
【００１３】
また更に、この発明は、演算命令において、演算結果の桁数に対して演算結果を収納する演算用レジスタの桁数が小さな場合は、演算結果の下位をまるめ処理（四捨五入）して演算用レジスタに収納し、まるめのための処理プログラムを不要とし、演算を高速化する。
【００１４】
また、この発明は、演算命令において、演算結果の桁数に対して演算結果を収納する演算用レジスタの桁数が大きな場合は、演算結果の上位を符号拡張または下位を零拡張して演算用レジスタに収納し、桁拡張のための処理プログラムを不要とし、演算を高速化する。
【００１５】
また、この発明は、数値左シフト命令で数値を指定された桁数だけ左シフトした結果が符号変化を生ずる場合、もとの数値と同符号の最大の数値に置き換えて演算用レジスタに収納し、数値左シフトにおけるオーバーフローの処理プログラムを不要とし、演算を高速化する。
【００１６】
更に、この発明は、演算命令として、演算用レジスタの数値Ａ、Ｂ、Ｃに対して、
Ｃ＝Ｃ±ＡｓｉｎＢ、Ｃ＝Ｃ±ＡｃｏｓＢ
及び、Ｃ＝Ｃ±Ａｓｉｎ（Ｂ±２π／３）、Ｃ＝Ｃ±Ａｃｏｓ（Ｂ±２π／３）
の正弦波関数の積和演算回路を備え、三相正弦波を扱う座標変換演算を高速化する。
【００１７】
【発明の実施の形態】
（第１の実施の形態）
図１は、本発明の第１の実施の形態の制御用プロセッサの構成図である。
【００１８】
図１において、１００が制御用プロセッサである。１０１，１０２，１０３はバッファであり、図示していない外部のメモリーやＩ／Ｏをアクセスするための信号を入出力する。１０４はアドレス発生器、１０５は命令デコーダであり、１０６，１０７は比較器、１０８はタイミングコントローラ、２００は算術論理演算ユニット、１０９は加算器、１１０，１１１，１１２はセレクタ、１１３は演算用レジスタ、１１４，１１５，１１６はバッファであり、図示していない外部の他のプロセッサなどからのアクセスに対して信号を入出力する。
【００１９】
まず、通常の動作について説明する。制御用プロセッサ１００は、アドレス発生器１０４からの次に実行すべき外部のメモリのアドレスを、バッファ１０２を通して出力するとともに、タイミングコントローラ１０８からの外部のメモリへのデータ要求信号をバッファ１０１を通して出力する。外部のメモリーからデータは、バッファ１０３を通して入力され、命令デコーダ１０５により、そのデータがどのような命令の実行を要求しているかを解釈し、タイミングコントローラ１０８に受け渡す。
【００２０】
命令が、演算用レジスタ１１３の第３レジスタの値（例として５００）と第４レジスタの値（例として１０００）を加算して、結果を第５レジスタに格納するものとする。タイミングコントローラ１０８はセレクタ１１０を上側（図示と逆）に切り換えるとともに、セレクタ１１１、１１２を下側（図示と逆）に切り換え、算術論理演算ユニット２００を加算器のモードになるように切り換える。そして、第３レジスタを指定する番号（３）をセレクタ１１１に対して出力し、第４レジスタを指定する番号（４）をセレクタ１１０および加算器１０９に対して出力する。これらの番号はセレクタ１１０，１１１を通って、演算用レジスタ１１３の入力ＡＤＲ１およびＡＤＲ２に入力され、第３レジスタのデータ（５００）がＤ１から、第４レジスタのデータ（１０００）がＤ２から出力される。Ｄ１、Ｄ２からのデータは算術論理演算ユニット２００に入力され、算術論理演算ユニット２００が加算モードに切り換えられているため、その出力からはＤ１（５００）とＤ２（１０００）を加算した値（１５００）が出力される。
【００２１】
この演算結果（１５００）はセレクタ１１２を通って演算用レジスタ１１３のＤＩＮに入力される。タイミングコントローラ１０８は演算結果が求まったタイミングで、セレクタ１１１に第５レジスタを指定する番号（５）を出力するとともに、演算用レジスタ１０３のＲ／Ｗ入力に書き込み信号を送出する。これによって、第５レジスタにＤＩＮの値（１５００）が書き込まれる。
【００２２】
一連の動作が終わり、タイミングコントローラ１０８はアドレス発生器１０４に対して次に実行すべき命令のアドレスを発生するように要求し、再び、次の命令を実行する一連の動作を行う。一般的なプロセッサの動作と基本的に同じである。
【００２３】
次に、インデックスを使った演算レジスタ番号の指定について説明する。命令がインデックスの使用を指示していることを命令デコーダ１０５が検出すると、タイミングコントローラ１０８はセレクタ１１０を下側（図示の状態）に切り換える。
【００２４】
これにより、指定したレジスタ（図１の例では第０レジスタ）の内容（インデックス値）とタイミングコントローラ１０８から加算器１０９に出力される番号の和でレジスタ番号が決定される。これで決定された番号のレジスタに対して、上述と同様に、一連の動作が行われる。
【００２５】
また、この一連の動作中に、外部からの演算用レジスタ１１３の第１０レジスタを読み出す要求が入力された場合について説明する。
【００２６】
バッファ１１４の入力に読みだし要求を入力すると同時に、バッファ１１５に第１０レジスタを指定する番号（１０）を入力する。タイミングコントローラ１０８はバッファ１１４を通して、読み出し要求を検出すると、演算用レジスタ１１３からのデータが算術論理演算ユニット２００に入力され終わるタイミングを待って、セレクタ１１１、１１２を上側（図示の状態）に切り換える。
【００２７】
これによって、バッファ１１５からの第１０レジスタを示す番号（１０）が演算用レジスタ１１３のＡＤＲ１に入力され、演算用レジスタのＤ１から第１０レジスタの内容（５６７）が出力され、バッファ１１６に保持されるとともに、外部へこのデータ（５６７）が出力される。バッファ１１６にデータが保持されたら、タイミングコントローラ１０８はセレクタ１１１、１１２をもとに戻す（図示と逆）。
【００２８】
この動作は、算術論理演算ユニット２００が演算結果を出力するまでの間に終わるので、命令の実行速度が遅くなることはない。演算用レジスタ１１３は、以上述べた動作により、デュアルポートメモリと同様なデュアルポート機能を有することになる。
【００２９】
次に、外部から演算用レジスタに書き込みする場合を説明する。
【００３０】
比較器１０６にはあらかじめ書き込みを禁止すべきレジスタ番号が設定されている。バッファ１１４に書き込み要求を入力すると同時に、バッファ１１５にレジスタを指定する番号（例えば９）、バッファ１１６に書き込みたいデータ（たとえば１１１）を入力する。バッファ１１６に入力されたデータは、セレクタ１１１，１１２が上側（図示の状態）に切り換えられると、セレクタ１１２を通して演算用レジスタ１１３のＤＩＮに入力される。
【００３１】
また、同時にバッファ１１５のレジスタを指定する番号（９）は、比較器１０６によってあらかじめ書き込みを禁止すべきレジスタ番号と比較され、書き込み禁止でなければ、タイミングコントローラ１０８は書き込み信号を演算用レジスタ１１３のＲ／Ｗ入力に送出し、選択された第９レジスタにデータ（１１１）が書き込まれる。書き込み禁止すべきのレジスタ番号と一致した場合は書き込みパルスは送出せず、書き込み動作は行われない。
【００３２】
次に、外部からの演算用レジスタのアクセス（書き込みや読み出し）による割り込みの発生について説明する。
【００３３】
比較器１０７にはあらかじめアクセスがあった場合に割り込みを発生させるレジスタ番号が設定されている。外部から演算用レジスタのアクセスがあると、バッファ１１５のレジスタ番号が比較器１０７によってあらかじめ設定された割り込みを発生させるレジスタ番号と比較され、一致していればタイミングコントローラ１０８は割り込み処理を行う。今まで実行していた命令のアドレスを退避し、割り込み処理の命令のアドレスをアドレス発生器１０４から出力して、割り込み処理のプログラムを実行する。演算用レジスタ１１３に対する書き込みや読み出しは、前に述べたように、演算している間を利用してほぼ同時に行われる。
【００３４】
以上述べた本発明の第１の実施形態により、制御用プロセッサが演算している間を利用して、上位プロセッサから演算用レジスタを直接アクセスができ、制御用プロッセッサの実行を妨げることはない。従来は上位プロセッサとデータの授受をするためにはデュアルポートメモリと演算用レジスタの間のデータ転送が必要となるが、本発明では、制御用プロセッサの演算用レジスタがデュアルポート機能を有することになり、高速処理が必要な制御用プロセッサはデータ授受のためのデータ転送の必要はなく、より複雑な制御演算が可能になる。
【００３５】
また、上位プロセッサが演算用レジスタをアクセスしたと同時に割り込みを発生させることができ、特に速いデータの授受に効果を発揮する。
【００３６】
制御演算に重要なレジスタに対しては、上位プロセッサからの書き込みを禁止でき、データが破壊されるのを防止できる。
【００３７】
更に、本発明の効果は、数十個以上の多数の演算用レジスタを備えることにより、より有効になる。従来のように演算用レジスタが少ない（数個から十数個）場合には、メモリにデータを退避しなければならなかったが、この待避が不要となり、上位プロセッサとの多数のデータの授受も可能で、より高速な制御演算が可能となる。
【００３８】
しかし、多数の演算用レジスタを備えた場合、異なるレジスタ番号のデータを使って同じような演算処理をするために、レジスタ番号のみを変えた同じような命令をたくさん必要とし、プログラムの大きさが大きくなってしまう。
【００３９】
従来、このような場合、メモリにあるデータをインデックスを使って指定し、インデックス値をかえながら同じ命令を繰り返して実行していたが、本発明では、これと同様の機能を演算用レジスタにも適用したことにより、この多数の演算レジスタのデータの演算処理を効率よく実行できる。
【００４０】
（第２の実施の形態）
図２は、本発明の第２の実施の形態の算術論理演算ユニットのブロック構成図であり、図１の算術論理演算ユニット２００の詳細を示したものである。
【００４１】
図２において、算術論理演算ユニット２００は、符号拡張ユニット２１０、２１１、２１２、零拡張ユニット２２０、２２１、２２２、まるめ処理ユニット２３０、２３１、２３２、セレクタ２４０、２４１、２４２、２６０、論理演算ユニット２５０、算術演算ユニット３００で構成される。
【００４２】
インバータなどの電力変換装置やインバータを用いて交流電動機の制御を行う場合の制御演算データには、一般的には１６ビットデータが用いられる。しかし、切り捨て誤差の減少や精度向上を目的に３２ビットデータを使用する場合がある。このため、１６ビットデータと３２ビットデータなどの異なる桁数のデータを同時に扱わなくてはならず、または３２ビットデータを１６ビットデータに変換する必要がある。
【００４３】
次に、３２ビットデータと、１６ビットデータを３２ビットに符号拡張したデータとの演算を行い、３２ビットの演算結果を求める命令の場合について述べる。
【００４４】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第１入力に、セレクタ２４１は第２入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わる。符号拡張ユニット２１０は入力された１６ビットデータの最上位ビット（符号ビット）が１６ビットデータの上位に１６ビット分追加され、３２ビットデータに拡張される。例えば、符号拡張ユニットの入力が、「０１０１０１０１０１０１０１０１」の時、出力は「０００００００００００００００００１０１０１０１０１０１０１０１」となり、入力が「１０１０１０１０１０１０１０１０」の時、出力は「１１１１１１１１１１１１１１１１１０１０１０１０１０１０１０１０」となる。
【００４５】
このように３２ビットに拡張されたデータと算術論理演算ユニット２００の入力ＤＡの３２ビットデータとが算術演算ユニット３００に入力され、３２ビットの演算結果がセレクタ２６０、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００４６】
次に、３２ビットデータと、１６ビットデータを３２ビットに零拡張したデータとの演算を行い、３２ビットの演算結果を求める命令の場合について述べる。
【００４７】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第１入力に、セレクタ２４１は第３入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わる。また、零拡張ユニット２１０は入力された１６ビットデータの下位に、０が１６ビット分追加され、３２ビットデータに拡張される。例えば、零拡張ユニットの入力が、「０１０１０１０１０１０１０１０１」の時、出力は「０１０１０１０１０１０１０１０１００００００００００００００００」となる。
【００４８】
このように３２ビットに拡張されたデータと算術論理演算ユニット２００の入力ＤＡの３２ビットデータとが算術演算ユニット３００に入力され、３２ビットの演算結果がセレクタ２６０、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００４９】
以上、算術論理演算ユニット２００の入力ＤＢ１６ビットデータを拡張する例を示したが、入力ＤＢが３２ビットデータで、入力ＤＡが１６ビットデータで符号拡張する場合は、セレクタ２４０は第２入力に、セレクタ２４１は第１入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わり、零拡張の場合はセレクタ２４０は第３入力に、セレクタ２４１は第１入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わり、上述と同様に、３２ビットに拡張されたデータと算術論理演算ユニット２００の入力ＤＢの３２ビットデータとが算術演算ユニット３００に入力され、３２ビットの演算結果がセレクタ２６０、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００５０】
次に、３２ビットデータを１６ビットデータにまるめ、１６ビットデータとの演算を行い、１６ビット演算結果を求める命令の場合について述べる。
【００５１】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第４入力に、セレクタ２４１は第１入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わる。また、まるめ処理ユニット２２０は入力された３２ビットデータの下位１６ビットを四捨五入し、１６ビットデータにまるめる。具体的には、３２ビットデータに「００００００００００００００００１００００００００００００００」を加算し、上位１６ビットを取り出す。例えば、まるめ処理ユニットの入力が、「０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１０１」の時、出力は「０１０１０１０１０１０１０１０１」となり、入力が「０１０１０１０１０１０１０１０１１０１０１０１０１０１０１０１０」の時、出力は「０１０１０１０１０１０１０１１０」となる。
【００５２】
このように１６ビットにまるめ処理されたデータと算術論理演算ユニット２００の入力ＤＢの１６ビットデータとが算術演算ユニット３００に入力され、１６ビットの演算結果がセレクタ２６０、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００５３】
また、算術論理演算ユニット２００の入力ＤＡが１６ビットデータで、入力Ｄｂの３２ビットデータをまるめ処理する場合は、セレクタ２４０は第１入力に、セレクタ２４１は第４入力に、セレクタ２４２は第１入力に、セレクタ２６０は第１入力に切り換わり、上述と同様に、１６ビットにまるめられたデータと入力ＤＡの１６ビットデータとが算術演算ユニット３００に入力され、１６ビットの演算結果がセレクタ２６０、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００５４】
更に、３２ビットの演算結果を１６ビットデータにまるめ、１６ビットの演算用レジスタに収納する命令の場合について述べる。
【００５５】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第１入力に、セレクタ２４１は第１入力に、セレクタ２４２は第４入力に、セレクタ２６０は第１入力に切り換わる。算術論理演算ユニット２００の入力ＤＡの３２ビットデータと、入力ＤＢの３２ビットデータとが、セレクタ２４０、セレクタ２４１を通して算術演算ユニット３００に入力され、３２ビットの演算結果が得られる。
【００５６】
そして、得られた３２ビットの演算結果は、セレクタ２６０を通してまるめ処理ユニット２２０に入力される。まるめ処理ユニット２２０では、３２ビットの演算結果の下位１６ビットを四捨五入し、１６ビットデータにまるめる。
【００５７】
このまるめ処理された結果は、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００５８】
１６ビットの演算結果を３２ビットに符号を拡張し、３２ビットの演算用レジスタに収納する命令の場合について述べる。
【００５９】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第１入力に、セレクタ２４１は第１入力に、セレクタ２４２は第２入力に、セレクタ２６０は第１入力に切り換わる。
【００６０】
算術論理演算ユニット２００の入力ＤＡの１６ビットデータと、入力ＤＢの１６ビットデータとが、セレクタ２４０、セレクタ２４１を通して算術演算ユニット３００に入力され、１６ビットの演算結果が得られる。
【００６１】
得られた１６ビットの演算結果は、セレクタ２６０を通して符号拡張ユニット２１２に入力される。符号拡張ユニット２１２では、１６ビットの演算結果の最上位ビット（符号ビット）が１６ビットの演算結果の上位に１６ビット分追加され、３２ビットデータに拡張される。この３２ビットに拡張された結果は、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００６２】
次に、１６ビットの演算結果を３２ビットに零を拡張し、３２ビットの演算用レジスタに収納する命令の場合について述べる。
【００６３】
算術論理演算ユニット２００のＣＣに入力される制御信号により、セレクタ２４０は第１入力に、セレクタ２４１は第１入力に、セレクタ２４２は第３入力に、セレクタ２６０は第１入力に切り換わる。
【００６４】
算術論理演算ユニット２００の入力ＤＡの１６ビットデータと、入力ＤＢの１６ビットデータとが、セレクタ２４０、セレクタ２４１を通して算術演算ユニット３００に入力され、１６ビットの演算結果が得られる。
【００６５】
得られた１６ビットの演算結果は、セレクタ２６０を通して零拡張ユニット２２２に入力される。零拡張ユニット２２２では、入力された１６ビットの演算結果の下位に、０が１６ビット分追加され、３２ビットデータに拡張される。そして、この３２ビットに拡張された結果は、セレクタ２４２を通して算術論理演算ユニット２００のＤＯに出力される。
【００６６】
以上述べた第２の実施形態により、被除数の異なる桁数の場合や、被演算数、演算結果が異なる桁数であっても、従来のようにプログラム処理で符号拡張やまるめ処理を行う必要がなく、１命令で処理でき高速な制御演算が可能である。
【００６７】
（第３の実施の形態）
図３は、本発明の第３の実施の形態の制御用プロセッサの算術演算ユニット部分のブロック構成図であり、図２の算術演算ユニット３００の詳細を示したものである。
【００６８】
算術演算ユニット３００は、シフト演算部４００、積和演算部５００、乗算部３１０、加減算部３２０等の各演算ユニットとセレクタ３３０で構成される。そして、シフト演算部４００は、算術・論理シフト部４０１、最大シフト数検出部４０２、オーバーフロー判定部４０３、セレクタ４０４で構成され、積和演算部５００は、正弦波関数器５０１、関数指令部５０２、乗算器５０３、加減算器５０４、加算器５０５、ラッチ５０６、５０７で構成される。
【００６９】
インバータなどの電力変換装置やインバータを用いて交流電動機の制御を行う場合には、シフト処理や正弦波関数が使用されるが、シフトした結果のオーバーフロー判定や、正弦波や余弦波の数値計算の処理に時間が多くかかる。
【００７０】
次に、１６ビットデータを左シフトする命令の場合について述べる。
【００７１】
算術演算ユニット３００のＣＣＡに入力される制御信号により、セレクタ３３０は第１入力に切り換わる。
【００７２】
算術論理シフト部４０１は、算術演算ユニット３００の入力ＡＡの１６ビットデータを、入力ＡＢの下位６ビットの示す値（シフト数）でシフトし、その結果をセレクタ４０４の第１入力とする。最大シフト数検出部４０２では、算術演算ユニット３００の入力ＡＡの１６ビットデータの符号が変化しない左シフト可能な最大数を求め、オーバーフロー判定部４０３では、最大シフト数検出部４０２で求めたシフト可能な最大数とシフト数との比較より、オーバーフローの判定を行い、セレクタ４０４の入力を選択する。
【００７３】
シフト可能な最大数よりシフト数が小さい場合には、セレクタ４０４は第１入力に切り換わり、算術論理シフト部４０１の演算結果がセレクタ３３０を通して算術演算ユニット３００のＤＯＡに出力される。
【００７４】
最大シフト数よりシフト数が大きく、算術演算ユニット３００の入力ＡＡの１６ビットデータの符号が正の場合にはセレクタ４０４は第２入力に切り換わり、正の最大値（固定値ＰＭＡＸ）がセレクタ３３０を通して算術演算ユニットの３００のＤＯＡに出力される。また、最大シフト数よりシフト数が大きく、算術演算ユニット３００の入力ＡＡの１６ビットデータ（シフト前のデータ）の符号が負の場合にはセレクタ４０４は第３入力に切り換わり、負の最大値（固定値ＮＭＡＸ）がセレクタ３３０を通して算術演算ユニット３００のＤＯＡに出力される。
【００７５】
更に、正弦波の積和演算命令Ａ＝Ａ＋Ｂ×ＣＯＳ（Ｃ）において、Ａが３２ビットデータ、ＢとＣが１６ビットデータの場合について述べる。
【００７６】
算術演算ユニット３００のＣＣＡに入力される制御信号により、セレクタ３３０は第２入力に切り換わる。ラッチ５０６では、算術演算ユニット３００のＣＣＡに入力された制御信号により、算術演算ユニット３００の入力ＡＡの１６ビットデータ（Ｂ）をラッチし、乗算器５０３の入力とする。同時に関数指令部５０２は、関数ＣＯＳ（Ｘ）が指定されたため加算器５０５へπ／２ラジアンに相当するデータを出力する。
【００７７】
正弦波関数器５０１には関数ＳＩＮ（Ｘ）が内蔵されている。加算器５０５は算術演算ユニット３００の入力ＡＢの１６ビットデータ（Ｃ）と、関数指令部５０２の出力とを加算し、その結果（Ｃ＋π／２）を正弦波関数器５０１に入力する。正弦波関数器５０１は、加算器５０５の出力を入力とした正弦波関数（ＳＩＮ（Ｃ＋π／２）＝ＣＯＳ（Ｃ））を読み出し乗算器５０３に入力する。乗算器５０３では正弦波関数器５０１の出力とラッチ５０６の出力を乗算し、その結果（Ｂ×ＣＯＳ（Ｃ））が加減算器５０４に入力される。
【００７８】
算術演算ユニット３００の入力ＡＡが更新されるタイミングで、算術演算ユニット３００のＣＣＡに入力された制御信号が更新される。ラッチ５０７ではこの制御信号により、算術演算ユニット３００の入力ＡＡの更新された３２ビットデータ（Ａ）をラッチし、加減算器５０４では、ラッチ５０７の出力と、乗算器５０３の出力を加算し、その３２ビットの結果（Ａ＋Ｂ×ＣＯＳ（Ｃ））はセレクタ３３０を通して、算術演算ユニット３００のＤＯＡに出力される。
【００７９】
また、Ａ＝Ａ＋Ｂ×ＳＩＮ（Ｃ）の場合は、関数指令部５０２の出力は０を、Ａ＝Ａ＋Ｂ×ＳＩＮ（Ｃ＋２／３π）の場合は、関数指令部５０２の出力は２／３πラジアンに相当するデータを、Ａ＝Ａ＋Ｂ×ＳＩＮ（Ｃ−２／３π）の場合は、関数指令部５０２の出力は４／３πラジアンに相当するデータを、Ａ＝Ａ＋Ｂ×ＣＯＳ（Ｃ＋２／３π）の場合は、関数指令部５０２の出力は７／６πラジアンに相当するデータを、Ａ＝Ａ＋Ｂ×ＣＯＳ（Ｃ−２／３π）の場合は、関数指令部５０２の出力は１１／６πラジアンに相当するデータを出力し、上述と同様に３２ビットの演算結果はセレクタ３３０を通して、算術演算ユニット３００のＤＯＡに出力される。
【００８０】
同様に、負の積和演算命令、例えばＡ＝Ａ−Ｂ×ＣＯＳ（Ｃ）の場合は、算術演算ユニット３００のＣＣＡに入力された制御信号により、加減算器５０４が減算器として動作することで実行される。
【００８１】
以上述べた第３の実施形態により、左の算術シフトを実行するにあたっては、あらかじめプログラム処理でオーバーフロー判断を行う必要がなく、１命令で実行できる。
【００８２】
また、交流電動機制御には座標変換として、
【数１】
2004005465.tif 000003
【００８３】
（１）式で示されるマトリックス演算が必要とされるが、通常の正弦波関数と正弦波の積和演算を併用することで、
【数２】
2004005465.tif 000004
【００８４】
（２）式で示される４命令で処理することができる。このように、制御演算に必要なシフト処理や正弦波関数処理の高速化が可能となる。
【００８５】
【発明の効果】
以上、本発明により、制御演算で多用される桁数の異なるデータに対する演算や、多くのプログラム処理を必要とするシフト演算のオーバーフロー時のリミット処理や正弦波演算などが１命令で実行できる。特に、インバータなどの電力変換装置やインバータを用いて交流電動機を制御する場合、複雑な演算が高速に実行可能となり、より高精度で高性能な制御が実現できる。
【図面の簡単な説明】
【図１】本発明の第１の実施の態様を示す概要構成図。
【図２】本発明の第２の実施の態様を示す概要構成図。
【図３】本発明の第３の実施の態様を示す概要構成図。
【図４】従来装置の構成を示すブロック図。
【符号の説明】
１００・・制御用プロセッサ、１０４・・アドレス発生器、１０５・・命令デコーダ、１０８・・タイミングコントローラ、１１３・・演算用レジスタ、２００・・算術論理演算ユニット、６１０・・デュアルポートメモリ
【図１】
2004005465.tif 000005
【図２】
2004005465.tif 000006
【図３】
2004005465.tif 000007
【図４】
2004005465.tif 000008