(57)【要約】【課題】コストアップを抑制しつつ、電力変換や電動機制御などの制御演算を高速に実行することが可能な制御用プロセッサを提供する。【解決手段】算術論理演算部２０には、入力用セレクタ１１、１２および出力レジスタ３０を専用に設け、乗算器２１には、入力用セレクタ１３、１４および出力レジスタ３１を専用に設け、バレルシブタ２２には、入力用セレクタ１５および出力レジスタ３２を専用に設け、ＲＡＭ２３には、入力用セレクタ１６および出力レジスタ３３を専用に設け、符号拡張部２４には、入力用セレクタ１７および出力レジスタ３４を専用に設け、制御部１０は、入力セレクタ１１〜１７を介して出力レジスタ３０〜３４に格納されたいずれかのデータを選択して、算術論理演算部２０、乗算器２１、バレルシブタ２２、ＲＡＭ２３のいずれかに入力させる。【選択図】      図２
2008040661.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムに記述された命令を解読する命令デコーダと、
第１の演算処理を行う第１の演算器と、
第２の演算処理を行う第２の演算器と、
前記第１および第２の演算器にそれぞれ専用に設けられた第１および第２の出力レジスタと、
前記第１および第２の演算器にそれぞれ専用に設けられた第１および第２の入力セレクタと、
前記命令の解読結果に基づいて前記第１および第２の入力セレクタの切り替え制御を行うことにより、前記第１および第２の出力レジスタに格納されたいずれかのデータを選択して、前記第１または第２の演算器のいずれかに入力させる制御部とを備えることを特徴とする制御用プロセッサ。
【請求項２】
制御プログラムに記述された命令を解読する命令デコーダと、
算術論理演算を行う算術論理演算部と、
シフト演算を行うシフタと、
データを記憶するメモリと、
前記算術論理演算部、前記シフタおよび前記メモリにそれぞれ専用に設けられた出力レジスタと、
前記算術論理演算部、前記シフタおよび前記メモリにそれぞれ専用に設けられた入力セレクタと、
前記命令の解読結果に基づいて前記入力セレクタの切り替え制御を行うことにより、前記出力レジスタに格納されたいずれかのデータを選択して、前記算術論理演算部、前記シフタまたは前記メモリのいずれかに入力させる制御部とを備えることを特徴とする制御用プロセッサ。
【請求項３】
前記制御プログラムがアセンブラ形式で記述されていることを特徴とする請求項１または２記載の制御用プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御用プロセッサに関し、特に、高速な制御演算が必要な電力変換装置や、電力変換器を使用した電動機制御装置に適用して好適なものである。
【背景技術】
【０００２】
インバータなどの電力変換装置や、インバータを用いて交流電動機の制御を行う交流電動機制御装置では、ＰＷＭ制御（パルス幅変調制御）にてインバータのオンオフを制御することが行われ、制御演算では非常に高速に処理を行う必要があることから、マイクロコンピュータと呼ばれるマイクロプロセッサやＤＳＰ（デジタルシグナルプロセッサ）が用いられている。また、１個のＤＳＰで全ての処理を実行することができない場合、マルチＤＳＰを使用したり、マイクロプロセッサとＤＳＰとで処理を分担させる方法もある。
【０００３】
また、例えば、特許文献１には、演算用レジスタ、算術論理演算ユニット、命令デコーダおよびタイミングコントローラを制御用プロセッサに設け、演算命令で指定された被演算数の桁数が互いに異なる場合は、符号拡張、零拡張、丸め処理などを行い被演算数の桁数を揃えて演算を行い、桁合わせのための処理プログラムを不要として演算を高速化する方法が開示されている。
【０００４】
また、例えば、特許文献２には、第２オペランドを、指数表現からベクトル表現に変換する指数−ベクトル変換回路を備え、ベクトル表現された第１オペランドと指数表現された第２オペランドに対してガロア体演算を行う命令を備えることで、簡単な構成で高速動作が可能でＲｅｅｄ−Ｓｏｌｏｍｏｎ復号処理などをすべて処理できる実用的なガロア体演算プロセッサを実現する方法が開示されている。
【特許文献１】特開２００４−５４６５号公報
【特許文献２】特開２０００−１７２５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、インバータなどに用いられるスイッチング素子の高性能化に伴って高速化が進むと、ＰＷＭ制御においても、より高い変調周波数が要求される。このため、従来のマイクロプロセッサやＤＳＰでは、交流電動機の制御を行うための数値演算用としては処理能力が不足し、マルチＤＳＰやハイエンド向けＤＳＰを採用しなければならなくなることから、コストアップの要因となるという問題があった。
そこで、本発明の目的は、コストアップを抑制しつつ、電力変換や電動機制御などの制御演算を高速に実行することが可能な制御用プロセッサを提供することである。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、請求項１記載の制御用プロセッサによれば、制御プログラムに記述された命令を解読する命令デコーダと、第１の演算処理を行う第１の演算器と、第２の演算処理を行う第２の演算器と、前記第１および第２の演算器にそれぞれ専用に設けられた第１および第２の出力レジスタと、前記第１および第２の演算器にそれぞれ専用に設けられた第１および第２の入力セレクタと、前記命令の解読結果に基づいて前記第１および第２の入力セレクタの切り替え制御を行うことにより、前記第１および第２の出力レジスタに格納されたいずれかのデータを選択して、前記第１または第２の演算器のいずれかに入力させる制御部とを備えることを特徴とする。
【０００７】
また、請求項２記載の制御用プロセッサによれば、制御プログラムに記述された命令を解読する命令デコーダと、算術論理演算を行う算術論理演算部と、シフト演算を行うシフタと、データを記憶するメモリと、前記算術論理演算部、前記シフタおよび前記メモリにそれぞれ専用に設けられた出力レジスタと、前記算術論理演算部、前記シフタおよび前記メモリにそれぞれ専用に設けられた入力セレクタと、前記命令の解読結果に基づいて前記入力セレクタの切り替え制御を行うことにより、前記出力レジスタに格納されたいずれかのデータを選択して、前記算術論理演算部、前記シフタまたは前記メモリのいずれかに入力させる制御部とを備えることを特徴とする。
また、請求項３記載の制御用プロセッサによれば、前記制御プログラムがアセンブラ形式で記述されていることを特徴とする。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、出力レジスタおよび入力セレクタを各演算器に専用に設けることにより、出力結果退避レジスタを設ける必要がなくなり、各演算器の出力をレジスタ間でデータ移動させることなく、次の演算の入力として選択することが可能となる。このため、交流電動機の制御などを行うための数値演算処理にかかるステップ数を減らすことが可能となり、コストアップを抑制しつつ、電力変換や電動機制御などの制御演算を高速に実行することが可能となる。
また、制御プログラムをアセンブラ形式で記述することにより、各演算器に専用に出力レジスタおよび入力セレクタを設けた場合においても、プログラミングを容易に行うことが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態に係る制御用プロセッサについて図面を参照しながら説明する。
図１は、本発明の一実施形態に係る交流電動機制御装置の概略構成を示すブロック図である。
図１において、交流電動機制御装置には、直流を交流に変換するインバータ１が設けられ、インバータ１には、直流電源Ｄ、ダイオードＤ１〜Ｄ６およびスイッチング素子Ｍ１〜Ｍ６が設けられている。
【００１０】
また、交流電動機制御装置には、負荷を回転駆動する交流電動機２、交流電動機２の回転数を検出する回転センサ３、交流電動機２に流れる電流を検出する電流センサ４、スイッチング素子Ｍ１〜Ｍ６を駆動するゲート駆動ユニット５、制御プログラムに記述された命令に従ってインバータ１の電流制御やＰＷＭ制御を行う制御用プロセッサ６、制御プログラムを格納するメモリ７、電流センサ４による計測データを制御用プロセッサ６に入力する電流センサ用インターフェース８、および回転センサ３による計測データを制御用プロセッサ６に入力する回転センサ用インターフェース９が設けられている。
【００１１】
ここで、制御用プロセッサ６には、各演算器にそれぞれ専用に出力レジスタおよび入力セレクタが設けられ、制御プログラムに記述された命令の解読結果に基づいて入力セレクタの切り替え制御を行うことにより、出力レジスタに格納されたいずれかのデータを選択して、制御用プロセッサ６の演算器のいずれかに入力させることができる。また、制御プログラムはアセンブラ形式で記述することができる。
【００１２】
そして、交流電動機２をインバータ１にて駆動する場合、制御用プロセッサ６は、メモリ７に格納された制御プログラムに従って制御演算を実行することにより、インバータ１の電流制御やＰＷＭ制御を行うことができる。
すなわち、制御用プロセッサ６は、制御プログラムで与えられる速度指令と、回転センサ３にて検出された交流電動機２の角速度とを比較する速度制御演算を行い、交流電動機２から出力されるトルク指令を算出することにより、交流電動機２に流される電流指令を算出する。そして、制御用プロセッサ６は、この電流指令と、電流センサ４にて検出された交流電動機２の電流とを比較する電流制御演算を行い、インバータ１から出力される電圧指令を算出する。
【００１３】
そして、ゲート駆動ユニット５は、制御用プロセッサ６にて算出された電圧指令に基づいてオンとオフの比率が制御されたオンオフ信号を生成し、このオンオフ信号に基づいてスイッチング素子Ｍ１〜Ｍ６を駆動することにより、インバータ１のＰＷＭ制御を行うことができる。なお、ＰＷＭ制御の変調周波数（オンオフの周波数）は数ｋＨｚから数十ｋＨｚの範囲内に設定することができる。
【００１４】
そして、電流制御およびＰＷＭ制御によって、インバータ１の出力電流（交流電動機２の電流）は、電流指令に追従した擬似的な正弦波形に制御することができる。なお、変調周波数を高くするとともに、制御用プロセッサ６における制御演算のサンプリング周波数を高くすることにより、インバータ１の出力電流を正弦波形に近づけることが可能となり、電流指令に対する追従性を向上させることができる。
【００１５】
ここで、制御用プロセッサ６の各演算器に専用に出力レジスタおよび入力セレクタを設けることにより、出力結果退避レジスタを設ける必要がなくなり、各演算器の出力をレジスタ間でデータ移動させることなく、次の演算の入力として選択することが可能となる。このため、交流電動機２の制御などを行うための数値演算処理にかかるステップ数を減らすことが可能となり、電力変換や電動機制御などの制御演算を高速に実行することが可能となることから、制御演算のサンプリング周波数を高くした場合においても、マルチＤＳＰやハイエンド向けＤＳＰを採用する必要がなくなり、コストアップを抑制しつつ、電流指令に対する追従性を向上させることができる。
【００１６】
図２は、本発明の一実施形態に係る制御用プロセッサの概略構成を示すブロック図である。
図２において、制御用プロセッサ６には、演算器として、算術論理演算部２０、乗算器２１、バレルシブタ２２、ＲＡＭ２３および符号拡張部２４が設けられるとともに、これらの演算器を制御する制御部１０が設けられ、算術論理演算部２０には、算術論理演算結果のフラグ２５が備えられている。
【００１７】
また、算術論理演算部２０には、入力用セレクタ１１、１２および出力レジスタ３０が専用に設けられ、乗算器２１には、入力用セレクタ１３、１４および出力レジスタ３１が専用に設けられ、バレルシブタ２２には、入力用セレクタ１５および出力レジスタ３２が専用に設けられ、ＲＡＭ２３には、入力用セレクタ１６および出力レジスタ３３が専用に設けられ、符号拡張部２４には、入力用セレクタ１７および出力レジスタ３４が専用に設けられている。さらに、制御用プロセッサ６には、出力レジスタ３０〜３３に格納されたデータを選択して出力する出力用セレクタ３５が設けられている。
【００１８】
ここで、制御用プロセッサ６には、制御プログラムに記述された命令を解読する命令デコーダを設けることができ、制御部１０は、制御プログラムに記述された命令の解読結果に基づいて入力セレクタ１１〜１７の切り替え制御を行うことにより、出力レジスタ３０〜３４に格納されたいずれかのデータを選択して、算術論理演算部２０、乗算器２１、バレルシブタ２２、ＲＡＭ２３のいずれかに入力させることができる。
【００１９】
図３は、本発明の一実施形態に係る制御用プロセッサの動作の流れを一次遅れのローパスフィルタ演算を例にとって示す図である。
図３において、一次遅れのローパスフィルタ演算は、以下の式で表すことができる。
ｙ（ｔ）＝ｋ×（ｕ（ｔ）−ｙ（ｔ−１））＋ｙ（ｔ−１）
ただし、ｕ（ｔ）は入力、ｙ（ｔ）は出力、ｙ（ｔ−１）は前回値の出力、ｋは時定数係数である。
【００２０】
そして、ステップＳ１において、ＲＡＭ２３から前回値の出力ｙ（ｔ−１）を読み出し、出力レジスタ３３（ＲｅｇＤ）に格納する。
次に、ステップＳ２において、出力レジスタ３３（ＲｅｇＤ）に格納された前回値の出力ｙ（ｔ−１）を入力セレクタ１５を介してバレルシブタ２２に入力することにより、入力ｕ（ｔ）の桁数を合わせるためのシフト演算を行い、そのシフト演算結果を出力レジスタ３２（ＲｅｇＣ）に格納する。
【００２１】
次に、ステップＳ３において、出力レジスタ３０（ＲｅｇＡ）に格納された入力ｕ（ｔ）を入力セレクタ１１を介して算術論理演算部２０に入力するとともに、出力レジスタ３２（ＲｅｇＣ）に格納された前回値の出力ｙ（ｔ−１）のシフト演算結果を入力セレクタ１２を介して算術論理演算部２０に入力することにより、入力ｕ（ｔ）から前回値の出力ｙ（ｔ−１）のシフト演算結果を減算し、その減算結果を出力レジスタ３０（ＲｅｇＡ）に格納する。さらに、ステップＳ３において、ＲＡＭ２３から時定数係数ｋを読み出し、出力レジスタ３３（ＲｅｇＤ）に格納する。
【００２２】
次に、ステップＳ４において、出力レジスタ３０（ＲｅｇＡ）に格納された減算結果を入力セレクタ１３を介して乗算器２１に入力するとともに、出力レジスタ３３（ＲｅｇＤ）に格納された時定数係数ｋを入力セレクタ１４を介して乗算器２１に入力することにより、入力ｕ（ｔ）から前回値の出力ｙ（ｔ−１）のシフト演算結果を減算した値に時定数係数ｋを乗算し、その乗算結果を出力レジスタ３１（ＲｅｇＢ）に格納する。また、ステップＳ４において、ＲＡＭ２３から前回値の出力ｙ（ｔ−１）を読み出し、出力レジスタ３３（ＲｅｇＤ）に格納する。
【００２３】
次に、ステップＳ５において、出力レジスタ３１（ＲｅｇＢ）に格納された乗算結果を入力セレクタ１１を介して算術論理演算部２０に入力するとともに、出力レジスタ３３（ＲｅｇＤ）に格納された前回値の出力ｙ（ｔ−１）を入力セレクタ１２を介して算術論理演算部２０に入力することにより、出力レジスタ３１（ＲｅｇＢ）に格納された乗算結果に前回値の出力ｙ（ｔ−１）を加算し、その加算結果を出力レジスタ３０（ＲｅｇＡ）に格納する。
【００２４】
次に、ステップＳ６において、出力レジスタ３０（ＲｅｇＡ）に格納された加算結果を入力セレクタ１６を介してＲＡＭ２３に入力することにより、ＲＡＭ２３に格納された前回値の出力ｙ（ｔ−１）を更新するとともに、出力レジスタ３０（ＲｅｇＡ）に格納された加算結果を入力セレクタ１５を介してバレルシブタ２２に入力することにより、シフト演算を行い、そのシフト演算結果を出力レジスタ３２（ＲｅｇＣ）に格納する。
これにより、前回の演算結果は次の演算としてそのまま入力することができ、各演算の出力はレジスタ間のデータ移動なし次の演算の入力として選択することが可能となることから、一次遅れのローパスフィルタ演算を６ステップで高速に実行することが可能となる。
【００２５】
図４は、本発明の一実施形態に係る制御用プロセッサにおける制御プログラムの実装方法の一例を示すブロック図である。
図４において、制御用プロセッサ４０に対して、制御用プロセッサ４０のマイクロ動作を制御するマイクロ命令レジスタ４１が設けられるとともに、制御プログラム４２には、アプリケーションプログラム相当の回路４３、機能モジュール４４および機能モジュール４４のいずれかを選択するセレクタ４５が設けられている。なお、機能モジュール４４としては、例えば、ローパスフィルタ４４ａ、バンドパスフィルタ４４ｂ、リミッタ４４ｃ、ベクトル変換器４４ｄおよびその他のモジュール４４ｅを組み込むことができる。
【００２６】
そして、制御プログラム４２は、マイクロ命令レジスタ４１を介して制御用プロセッサ４０を制御することができる。また、ローパスフィルタ、バンドパスフィルタ、リミッタおよびベクトル変換などの処理をモジュール化し、ローパスフィルタ４４ａ、バンドパスフィルタ４４ｂ、リミッタ４４ｃおよびベクトル変換器４４ｄなどのモジュールをセレクタ４５を介して所定の順番で起動させることにより、目的とする機能を実現することができる。
【００２７】
ここで、図２の制御用プロセッサ６では、算術論理演算や乗算などの５個の処理を同時に実行することができ、１つのステップごとに５つの動作を指定することができる。一方、１、２個の演算器の動作しか指定しない指定しない場合においても、５つの演算器の動作をステップごとに指定する必要があるため、ソースコードが難解になり、記述ミスの要因となる。このため、図５に示すように、例えば、ＶｅｒｉｌｏｇＨＤＬのａｌｗａｙｓ文の先頭（ｃａｓｅ文の外）において、出力信号をデフォルト値に設定し、各ステートで必要な部分のみを書き換えることにより、演算器の動作を指定しない部分の記述を省略し、ソースコードの記述を簡略化することができる。
例えば、図５の例での各ステートの出力値は以下のようになり、必要な動作のみを記述することが可能となる。
ＩＤＬＥ状態：ＡＢＣ＝８’ｂ０ｘｘｘｘｘｘｘ；
Ｓ０状態    ：ＡＢＣ＝８’ｂｘ００ｘｘｘｘｘ；
Ｓ１状態    ：ＡＢＣ＝８’ｂｘｘｘｘｘ０１０；
【００２８】
また、図６に示すように、ＶｅｒｉｌｏｇＨＤＬのｔａｓｋを使用する方法と、ｄｅｆｉｎｅを使用する方法とを用いることで、制御用プロセッサ６の制御プログラムをアセンブラ形式で記述することができる。
すなわち、図６において、シフト演算とメモリ読み出し命令をタスク化して記述した場合、シフト演算（ＳＲＥｂ）では、マイクロコードの６０〜６６ビット目が命令コード（ＲｅｇＢの拡張符号右シフト）、５９〜５５ビット目がシフト数を意味し、シフト数がｔａｓｋに渡される。
一方、メモリ読み出し命令（ＲＤｉ）では、４６〜５４ビット目がマイクロコード（直接アドレッシングメモリリード）、３２〜３７ビット目がアドレスを意味し、アドレスがｔａｓｋに渡される。
【００２９】
図６の記述方法では、タスク化されてはいるが、タイミング要素は含まず、単に代入を行っているだけであるため、不必要な回路が論理合成ツールにて生成されることはない。また、ＶｅｒｉｌｏｇＨＤＬのｔａｓｋは、Ｃ言語関数と類似する記述方法であるため、アセンブラ形式で記述することができる。また、ｔａｓｋの呼び出し側においても、図７に示すように、アセンブラ形式で記述することができる。
さらに、ＶｅｒｉｌｏｇＨＤＬのｄｅｆｉｎｅを使用してシフト演算を表現する場合、単純な文字列置換によって記述することができる。
【００３０】
例えば、以下の文では、１つの文（ｕＰｃｏｄｅ［６６：６０］＝７’ｂ００１_１_０１１；）と左辺のみの式（ｕＰｃｏｄｅ［５９：５５］＝）が`ＳＲＥｂに置換されている。
`ｄｅｆｉｎｅ  ＳＲＥｂ      ｕＰｃｏｄｅ［６６：６０］＝７’ｂ００１_１_０１１；ｕＰｃｏｄｅ［５９：５５］＝
ここで、（`ＳＲＥｂ  ５’ｄ１２；）と記述した場合、以下に示すように、２つの文を１行で記述したのと等価となる。
ｕＰｃｏｄｅ［６６：６０］＝７’ｂ００１_１_０１１；ｕＰｃｏｄｅ［５９：５５］
＝５’ｄ１２；
また、ｄｅｆｉｎｅの呼び出し側においても、図８に示すように、アセンブラ形式で記述することができる。
【００３１】
このように、ＶｅｒｉｌｏｇＨＤＬのｔａｓｋを使用する方法と、ｄｅｆｉｎｅを使用する方法とを用いて制御用プロセッサ６の制御プログラムを記述することで、制御プログラムの記述性と可読性を高めることができる。
なお、上述した実施形態では、ＶｅｒｉｌｏｇＨＤＬを用いて制御プログラムを記述する方法について説明したが、ＶＨＤＬを用いて制御プログラムを記述するようにしてもよい。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態に係る交流電動機制御装置の概略構成を示すブロック図である。
【図２】本発明の一実施形態に係る制御用プロセッサの概略構成を示すブロック図である。
【図３】本発明の一実施形態に係る制御用プロセッサの動作の流れを一次遅れのローパスフィルタ演算を例にとって示す図である。
【図４】本発明の一実施形態に係る制御用プロセッサにおける制御プログラムの実装方法の一例を示すブロック図である。
【図５】本発明の一実施形態に係る制御用プロセッサにおける制御プログラムの記述の省略方法の一例をＶｅｒｉｌｏｇＨＤＬを用いて示す図である。
【図６】本発明の一実施形態に係る制御用プロセッサにおける制御プログラムのｔａｓｋ化の一例をＶｅｒｉｌｏｇＨＤＬを用いて示す図である。
【図７】本発明の一実施形態に係る制御用プロセッサにおける制御プログラムのｔａｓｋの呼び出し側の記述例をＶｅｒｉｌｏｇＨＤＬを用いて示す図である。
【図８】本発明の一実施形態に係る制御用プロセッサにおける制御プログラムのｄｅｆｉｎｅの呼び出し側の記述例をＶｅｒｉｌｏｇＨＤＬを用いて示す図である。
【符号の説明】
【００３３】
１  インバータ
２  交流電動機
３  回転センサ
４  電流センサ
５  ゲート駆動ユニット
６、４０  制御用プロセッサ
７  メモリ
８  電流センサ用インターフェース
９  回転センサ用インターフェース
Ｄ  電源
Ｄ１〜Ｄ６  ダイオード
Ｍ１〜Ｍ６  スイッチング素子
１０  制御部
１１〜１７  入力用セレクタ
２０  算術論理演算部
２１  乗算器
２２  バレルシブタ
２３  ＲＡＭ
２４  符号拡張部
２５  フラグ
３０〜３４  出力レジスタ
３５  出力用セレクタ
４１  マイクロ命令レジスタ
４２  制御プログラム
４３  アプリケーションプログラム相当の回路
４４  機能モジュール
４４ａ  ローパスフィルタ
４４ｂ  バンドパスフィルタ
４４ｃ  リミッタ
４４ｄ  ベクトル変換器
４４ｅ  その他のモジュール
４５  セレクタ
【図１】
2008040661.tif 000003
【図２】
2008040661.tif 000004
【図３】
2008040661.tif 000005
【図４】
2008040661.tif 000006
【図５】
2008040661.tif 000007
【図６】
2008040661.tif 000008
【図７】
2008040661.tif 000009
【図８】
2008040661.tif 000010