(57)【要約】【課題】複数バンクに規定された異なる処理を、バンクを切り替えながら実行可能であって、追加する命令の数を最小限に抑えながら、割り込みにも対応することができる、RISCマイコンなどの固定長命令のマイコンを提供する。【解決手段】命令セットは、複数のバンクを持ち、同一の命令コードにバンクごとに異なる処理が割り当てられている。また、命令セットは、バンク変更命令を含む。マイコンは、読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路と、そのバンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容が変更される命令実行回路とを備える。マイコンは、バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を変更する。割り込みが発生したときには、バンク状態値を退避させ、割り込みルーチンを終了したときに復帰させる。【選択図】図１
2014123267.tif 000002
【特許請求の範囲】
【請求項１】
固定長命令の命令セットを使ったプログラムを実行可能なマイコンであって、
前記命令セットは、複数のバンクを持ち、同一の命令コードにバンクごとに異なる処理が割り当てられ、バンク変更命令を含み、
読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容が変更される命令実行回路とを備え、前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を変更し、割り込みが発生したときに前記バンク状態値を退避させ、前記割り込みで起動される割り込みルーチンが完了したときに復帰させる、マイコン。
【請求項２】
請求項１において、前記マイコンは、割り込みが発生したときに退避させる対象である、制御レジスタを備え、前記バンク状態保持回路は、前記制御レジスタに含まれるバンク選択ビットフィールドに、前記バンク状態値を保持可能に構成される、マイコン。
【請求項３】
請求項２において、前記命令セット２個のバンクを持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を反転させ、前記バンク変更命令以外の命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を維持する、マイコン。
【請求項４】
請求項２において、前記命令セット２個のバンクを持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を反転させ、前記バンク反転命令の次の命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を再度反転させる、マイコン。
【請求項５】
請求項１において、前記バンク状態保持回路は、命令実行回路内のステートマシンによって構成される、マイコン。
【請求項６】
請求項５において、前記命令セット２個のバンクを持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を反転させ、前記バンク変更命令以外の命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を維持する、マイコン。
【請求項７】
請求項５において、前記命令セット２個のバンクを持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を反転させ、前記バンク反転命令の次の命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を再度反転させる、マイコン。
【請求項８】
請求項５において、前記バンク状態値を退避する記憶素子を備え、割り込みが発生したときに、前記バンク状態値を前記記憶素子に退避させ、前記割り込みで起動される割り込みルーチンが完了したときに、前記記憶素子に退避した前記バンク状態値を復帰させる、マイコン。
【請求項９】
請求項１において、前記バンク変更命令は、前記複数のバンクのすべてに含まれ、同一の命令コードが割り当てられる、マイコン。
【請求項１０】
固定長命令の命令セットを使ったプログラムを実行可能な、ＳＤカード用のマイコンであって、
前記命令セットは、第１バンクと第２バンクを持ち、同一の命令コードに対して前記第１バンクと前記第２バンクに異なる処理が割り当てられ、バンク変更命令を含み、
読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容を変更される命令実行回路とを備え、
割り込みの発生により前記バンク状態値を退避可能で、前記割り込みで起動される割り込みルーチンが完了したとき復帰可能に構成され、
ＳＤカードをアプリケーション状態に遷移させるコマンドの受信に基づいて発行されたバンク変更命令により、前記バンク状態保持回路に保持される前記バンク状態値を、前記第１バンクを示すバンク状態値に変更し、
ＳＤカードを通常状態に遷移させるコマンドの受信に基づいて発行されたバンク変更命令により、前記バンク状態保持回路に保持される前記バンク状態値を、前記第２バンクを示すバンク状態値に変更する、マイコン。
【請求項１１】
固定長命令の命令セットを使ったプログラムを実行可能なマイコンを備えるＳＤカードであって、
前記ＳＤカードは、通常状態にあるかアプリケーション状態にあるかを示すＳＤカード状態を保持し、
前記命令セットは、第１バンクと第２バンクを持ち、同一の命令コードに対して前記第１バンクと前記第２バンクに異なる処理が割り当てられ、バンク変更命令を含み、
前記マイコンは、読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容を変更される命令実行回路とを備え、割り込みの発生により前記バンク状態値を退避可能に構成され、前記バンク状態保持回路は、前記ＳＤカードが受信したコマンドと前記ＳＤカード状態とに基づいて、前記バンク状態が変更される、
ＳＤカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＩＳＣ（Reduced Instruction Set Computer）マイコンなど固定長命令の命令セットを持つマイコンに関し、特に複数種類の命令セットによるプログラムを実行可能なＲＩＳＣマイコンに好適に利用できるものである。
【背景技術】
【０００２】
AC (Alternative Current)サーボ、汎用インバータ、PLC (Programmable Logic Controller)等の産業向けアプリケーションでは、数値演算性能が重視されるが、組み込みマイコンには三角関数や指数関数等の初等関数演算命令、ベッセル関数や楕円関数等の特殊関数演算命令はない。命令セットにない演算を必要とする関数の数値計算をする場合、C言語ライブラリを使用し、その関数を多項式等に近似し、積和等の単純な命令を組み合わせて演算している。その場合には、単に近似のための積和等の演算ステップが増えるだけでなく、中間データのレジスタ転送のためのステップが増えてしまい演算の高速化が図れない。数値演算性能を向上するには、それらの命令追加が考えられる。命令追加には回路規模の増大だけでなく命令コードの追加も必要である。ところが、RISCマイコンなどの固定長命令のマイコンでは、命令ビット長の制限から、大幅に命令数を追加するのは困難となっている。また、命令ビット長を増やすのは命令実行時間の増加や回路規模の増大の原因となる。
【０００３】
特許文献１には、マイクロ命令ＲＯＭ（Read Only Memory）を複数のバンク領域に分離し、複数種類の命令体系の命令セットのそれぞれに対応するマイクロ命令列を、複数のバンク領域のそれぞれに割り当てて格納し、ステートカウンタの出力値に応じたマイクロ命令列を読み出して実行する、マイクロコンピュータが開示されている。ステートカウンタは、マイクロＲＯＭのバンク切替命令によって、切り替えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−２１８７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１について本発明者が検討した結果、以下のような新たな課題があることがわかった。特許文献１に開示されるマイクロコンピュータは、ＣＩＳＣ（Complex Instruction Set Computer）であって、可変長の命令を前提としている。マイクロＲＯＭのバンク切替命令は、同文献の第００２８段落に記載されるように、ｎビットのマイクロＲＯＭバンク選択命令とｎビットのバンク指定オペランドの２ワード命令で構成されている。また、割り込みが発生した場合の動作については、何ら説明されていない。
【０００６】
割り込みが発生した場合、割り込み処理を開始する前と後で、同じ命令体系の命令セットを実行する限りにおいては、特許文献１に開示されるマイクロコンピュータは正常に動作すると考えられる。しかし、割り込み処理によって、異なる命令体系の命令セットで記述された割り込み処理ルーチンに分岐し、その割り込み処理ルーチンを終了したときに、元の命令体系の命令セットで記述されたルーチンに戻る方法については、特許文献１には何ら開示も示唆もされていない。
【０００７】
RISCマイコンなどの固定長命令のマイコンでは、命令ビット長の制限から、追加が許される命令数は厳しく制限されるため、上記のようにバンクの絶対値を指定するオペランドを持つ命令を追加することは許されない。例えば、16ビット固定長の命令では、バンク指定オペランドが仮に8ビットであるとすると、256個の命令の追加に相当するからである。
【０００８】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態によれば、下記の通りである。
【００１０】
すなわち、固定長命令の命令セットを使ったプログラムを実行可能なマイコンであって、以下のように構成される。
【００１１】
命令セットは、複数のバンクを持ち、同一の命令コードにバンクごとに異なる処理が割り当てられている。また、命令セットは、バンク変更命令を含む。
【００１２】
マイコンは、読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路と、そのバンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容が変更される命令実行回路とを備える。マイコンは、バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を変更する。割り込みが発生したときには、バンク状態値を退避させ、割り込みルーチンを終了したときに復帰させる。
【発明の効果】
【００１３】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、RISCマイコンなどの固定長命令のマイコンにおいても、追加する命令の数を最小限に抑えながら、複数バンクに規定された異なる処理を、バンクを切り替えながら実行可能であって、割り込みにも対応することができるマイコンを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施形態１及び実施形態２のマイコンの構成を表すブロック図である。
【図２】図２は、実施形態１及び実施形態２のマイコンの実行コードを生成する手順を表す説明図である。
【図３】図３は、実施形態１のマイコンのＣＰＵコアの構成を表すブロック図である。
【図４】図４は、実施形態１のマイコンの実行コードを生成するコード変換部の構成を表す説明図である。
【図５】図５は、実施形態１のマイコンの動作の一例を表すフローチャートである。
【図６】図６は、実施形態１のマイコンのパイプライン動作の一例を表すタイミングチャートである。
【図７】図７は、実施形態１のマイコンのパイプライン動作の別の例を表すタイミングチャートである。
【図８】図８は、実施形態２のマイコンのＣＰＵコアの構成を表すブロック図である。
【図９】図９は、実施形態２のマイコンの実行コードを生成するコード変換部の構成を表す説明図である。
【図１０】図１０は、実施形態２のマイコンの動作の一例を表すフローチャートである。
【図１１】図１１は、実施形態３のＳＤカードの構成を表すブロック図である。
【図１２】図１２は、実施形態３のＳＤカードの動作を表す説明図である。
【図１３】図１３は、実施形態４のモータ制御システムへのマイコンの応用例を表す説明図である。
【発明を実施するための形態】
【００１６】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１７】
〔１〕＜バンク状態保持回路＋バンク変更命令＞
固定長命令の命令セットを使ったプログラムを実行可能なマイコン（１）であって、以下のように構成される。
【００１８】
前記命令セットは、複数のバンク（３６、３７）を持ち、同一の命令コードにバンクごとに異なる処理が割り当てられ、バンク変更命令（３８、３９）を含む。
【００１９】
読み込んだ命令コード（３５）がどのバンクに属するかを示すバンク状態保持回路（９）と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容が変更される命令実行回路（１３、１４）とを備える。前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を変更する。割り込みが発生したときに前記バンク状態値を退避させ、前記割り込みで起動される割り込みルーチンが完了したときに復帰させる。
【００２０】
これにより、RISCマイコンなどの固定長命令のマイコンにおいても、追加する命令の数を最小限に抑えながら、複数バンクに規定された異なる処理を、バンクを切り替えながら実行可能であって、割り込みにも対応することができる。
【００２１】
〔２〕＜割り込みで退避させる制御レジスタにバンク選択ビット＞
項１において、前記マイコンは、割り込みが発生したときに退避させる対象である、制御レジスタ（１９）を備え、前記バンク状態保持回路は、前記制御レジスタに含まれるバンク選択ビットフィールド（２１）に、前記バンク状態値を保持可能に構成される。
【００２２】
これにより、バンク状態値は、元々マイコンの割り込みに際して退避・復帰の対象である、制御レジスタに保持される状態値と同様に、退避・復帰の対象とすることができ、バンク状態値の退避・復帰のために特に回路を追加する必要がない。
【００２３】
〔３〕＜バンク反転命令＞
項２において、前記命令セット２個のバンク（３６、３７）を持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を反転させ、前記バンク変更命令以外の命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を維持する。
【００２４】
これにより、追加する命令の数を１個のみにすることができる。特に、バンク状態の反転によって指定されるバンクの命令が連続して使用されることが多いプログラムにおいて、バンク反転命令の実行による実行サイクル数の増加を最小限に抑えることができる。
【００２５】
〔４〕＜バンク反転命令後、自動的に復帰＞
項２において、前記命令セット２個のバンク（３６、３７）を持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を反転させ、前記バンク反転命令の次の命令を読み込んだとき、前記バンク状態保持回路に保持されるバンク状態値を再度反転させる。
【００２６】
これにより、追加する命令の数を１個のみにすることができる。さらに、バンク状態の反転からの復帰に当たってバンク反転命令を発行する必要がなく、バンク状態の反転によって指定されるバンクの命令が連続して使用されることが少ないプログラムにおいて、バンク反転命令の実行による実行サイクル数の増加を最小限に抑えることができる。
【００２７】
〔５〕＜バンク状態を保持するステートマシン＞
項１において、前記バンク状態保持回路は、命令実行回路（１２）内のステートマシン（２５）によって構成される。
【００２８】
これにより、制御レジスタ（１９）を参照する場合と比較して、高速に実行することができる。
【００２９】
〔６〕＜バンク反転命令＞
項５において、前記命令セット２個のバンク（３６＿２、３７＿２）を持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を反転させ、前記バンク変更命令以外の命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を維持する。
【００３０】
これにより、追加する命令の数を１個のみにすることができる。特に、バンク状態の反転によって指定されるバンクの命令が連続して使用されることが多いプログラムにおいて、バンク反転命令の実行による実行サイクル数の増加を最小限に抑えることができる。
【００３１】
〔７〕＜バンク反転命令後、自動的に復帰＞
項５において、前記命令セット２個のバンク（３６＿２、３７＿２）を持ち、前記マイコンは、前記バンク変更命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を反転させ、前記バンク反転命令の次の命令を読み込んだとき、前記ステートマシンに保持されるバンク状態値を再度反転させる。
【００３２】
これにより、追加する命令の数を１個のみにすることができる。さらに、バンク状態の反転からの復帰に当たってバンク反転命令を発行する必要がなく、バンク状態の反転によって指定されるバンクの命令が連続して使用されることが少ないプログラムにおいて、バンク反転命令の実行による実行サイクル数の増加を最小限に抑えることができる。
【００３３】
〔８〕＜バンク状態値を割り込みで退避＞
項５、６または７のうちの１項において、前記バンク状態値を退避する記憶素子を備え、割り込みが発生したときに、前記バンク状態値を前記記憶素子に退避させ、前記割り込みで起動される割り込みルーチンが完了したときに、前記記憶素子に退避した前記バンク状態値を復帰させる。
【００３４】
これにより、アプリケーションプログラムの割り込み処理ルーチンに、バンク状態値を退避・復帰させる処理を明示的に追加することなく、バンク状態を退避・復帰させることができる。
【００３５】
〔９〕＜全バンクにバンク変更命令＞
項１、項２、項３、項５、項６、または項８のうちの１項において、前記バンク変更命令は、前記複数のバンクのすべてに含まれ、同一の命令コードが割り当てられる。
【００３６】
これにより、複数のバンクの全てにおいて、次に使用すべきバンクを指定することができ、また、バンク変更命令の命令コードをデコードするために追加すべき回路の規模を、最小限に抑えることができる。
【００３７】
〔１０〕＜ＳＤカード用マイコン＞
固定長命令の命令セットを使ったプログラムを実行可能な、ＳＤカード（５）用のマイコン（１）であって、以下のように構成される。
【００３８】
前記命令セットは、第１バンク（３６）と第２バンク（３７）を持ち、同一の命令コードに対して前記第１バンクと前記第２バンクに異なる処理が割り当てられる。また、前記命令セットは、バンク変更命令を含む。
【００３９】
前記マイコンは、読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路（２５）と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容を変更される命令実行回路（１２、１３＿２、１４＿２）とを備える。割り込みの発生により前記バンク状態値を退避可能で、前記割り込みで起動される割り込みルーチンが完了したとき復帰可能に構成される。
【００４０】
ＳＤカードをアプリケーション状態に遷移させるコマンドの受信に基づいて発行されたバンク変更命令により、前記バンク状態保持回路に保持される前記バンク状態値を、前記第１バンクを示すバンク状態値に変更する。ＳＤカードを通常状態に遷移させるコマンドの受信に基づいて発行されたバンク変更命令により、前記バンク状態保持回路に保持される前記バンク状態値を、前記第２バンクを示すバンク状態値に変更する。
【００４１】
これにより、ＳＤカードの通常状態とアプリケーション状態のそれぞれのコマンドに適する命令セットを備える、マイコンを提供することができる。
【００４２】
〔１１〕＜ＳＤカード＞
固定長命令の命令セットを使ったプログラムを実行可能なマイコン（１）を備えるＳＤカード（５）であって、以下のように構成される。
【００４３】
前記ＳＤカードは、通常状態にあるかアプリケーション状態にあるかを示すＳＤカード状態を保持する。
【００４４】
前記命令セットは、第１バンク（３６）と第２バンク（３７）を持ち、同一の命令コードに対して前記第１バンクと前記第２バンクに異なる処理が割り当てられる。また、前記命令セットは、バンク変更命令を含む。
【００４５】
前記マイコンは、読み込んだ命令コードがどのバンクに属するかを示すバンク状態保持回路（２５）と、前記バンク状態保持回路に保持されるバンク状態値に基づいて、処理の内容を変更される命令実行回路（１２、１３＿２、１４＿２）とを備える。割り込みの発生により前記バンク状態値を退避可能に構成される。前記バンク状態保持回路は、前記ＳＤカードが受信したコマンドと前記ＳＤカード状態とに基づいて、前記バンク状態が変更される。
【００４６】
これにより、通常状態とアプリケーション状態のそれぞれのコマンドに適する命令セットを備える、マイコンを搭載したＳＤカードを提供することができる。
【００４７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００４８】
〔実施形態１〕＜割り込み時に退避される制御レジスタ（ＣＣＲ）にバンク状態ビット＞
〔１〕＜バンク状態保持回路＋バンク変更命令＞
図１は、実施形態１及び実施形態２のマイコンの構成を表すブロック図である。
【００４９】
固定長命令の命令セットを使ったプログラムを実行可能なマイコン１であって、ＣＰＵコア２とメモリ３とＩ／Ｏなどの周辺回路４を含んで構成される。ＣＰＵコア２とメモリ３と周辺回路４は、例えば、互いにバス６を介して接続されている。ＣＰＵコア２によって、メモリ３と周辺回路４に対して、それぞれ、データの入出力が可能であり、また、制御が可能であるように構成される。ＣＰＵコア２は、メモリ３から命令コードを読み出す命令コード読み出し回路１０と、その命令コードをデコードする命令コードデコード回路１１と、デコード結果に基づいて命令を実行する命令実行回路１２と、汎用レジスタ１６と、さらにバンク状態保持回路９を含んで構成される。命令実行回路１２と汎用レジスタ１６は、図示を省略されたインターフェース回路を介してバス６に接続されている。
【００５０】
命令実行回路１２は、命令セット１（３６）を実行する命令セット１実行回路１３と、命令セット２（３７）を実行する命令セット２実行回路１４とを含んで構成される。命令実行回路１２は、バンク状態保持回路９に保持されるバンク状態値に基づいて、命令セット１実行回路１３を動作させるか、命令セット２実行回路１４を動作させるかにより、その処理の内容が変更される。例えば、命令セット１実行回路１３と命令セット２実行回路１４の両方を並列に動作させ、一方を選択して出力する、選択回路１５を設ける。バンク状態値に基づいて、命令セット１実行回路１３と命令セット２実行回路１４の一方のみが動作するように制御しても良い。
【００５１】
マイコン１によって実行されるプログラムは、複数のバンクを持つ命令セットによって記述される。命令セットは、複数のバンク３６と３７を持ち、同一の命令コードにバンクごとに異なる処理が割り当てられる。複数のバンクそれぞれを持つ、別個の命令セットを、命令セット１及び命令セット２と呼ぶこととする。例えば、マイコン１によって実行されるプログラムは、命令セット１と命令セット２の２つのバンクを持つ命令セットによって記述され、命令セット１は通常の命令セットであり、命令セット２は、命令セット１において使用頻度が少なく他の命令で代替が可能な命令を、特定のアプリケーションに特有の数値演算命令に置き換えた命令セットとすることができる。バンクの数（命令セットの数）は、図１には２個の例を示したが、数は任意に決めることができる。命令セットは、バンク変更命令を含む。バンク変更命令を読み込んだとき、バンク状態保持回路９に保持されるバンク状態値が変更される。割り込みが発生したときには、バンク状態値を退避させ、割り込みで起動される割り込みルーチンが完了したときに復帰させる。
【００５２】
これにより、RISCマイコンなどの固定長命令のマイコンにおいても、追加する命令は、バンク変更命令のみでよく、バンク状態値は割り込みの発生時に退避され、割り込みルーチンの完了により復帰されるので、割り込みのあるマイコンでも、複数のバンクを持つ命令セットで記述されたプログラムを実行することができる。即ち、追加する命令の数を最小限に抑えながら、複数バンクに規定された異なる処理を、バンクを切り替えながら実行可能であって、割り込みにも対応することができる。
【００５３】
図２は、実施形態１及び実施形態２のマイコンの実行コードを生成する手順を表す説明図である。
【００５４】
ユーザはユーザ固有の処理をユーザアプリケーション３０として作成する。そして、コード変換部３２のコンパイラ、アセンブラによりコード変換し、数値演算命令、ビット操作命令等のマイコン固有の実行コード３５を生成する。なお、一般にユーザはユーザアプリケーション作成時、標準入出力、数学関数等の開発環境が備えている標準ライブラリ３１も使用する。
【００５５】
図３は、実施形態１のマイコンのＣＰＵコア２の構成をより詳細に表すブロック図である。
【００５６】
マイコン１は、ＣＰＵコア２の他、図１に示すように、メモリ３、Ｉ／Ｏなどの周辺回路４で構成する。周辺回路４は、例えば、シリアル、Ether（登録商標）、USB（Universal Serial Bus）、メモリカード等の入出力機能を持つモジュールである。図３に示すＣＰＵコア２は、制御レジスタ１９、複数個レジスタからなる汎用レジスタ１６、命令読み出し回路１０、命令デコード回路１１、命令実行回路１２で構成する。汎用レジスタ１６は、複数のレジスタを含んで構成され、演算の途中結果やアドレス等を格納する。メモリ３には実行コード及びデータを格納する。命令読み出し回路１０は、メモリ３から実行コードを読み出し、制御レジスタ１９から適宜必要な状態値を読み出す。制御レジスタ１９は、状態レジスタ２０の他、例えば、グローバルベースレジスタ２２、ベクタベースレジスタ２３、及び、ジャンプテーブルベースレジスタ２４などを含んで構成される。状態レジスタ２０は、命令実行の結果を反映する状態を保持する制御レジスタである。例えば、演算結果のゼロフラグ、キャリーフラグ、ネガティブフラグ、オーバーフローフラグなどを格納可能なビットフィールドを含む。条件分岐命令のために分岐条件を与える場合などに用いられる。グローバルベースレジスタ２２は、データ転送命令等でのアドレス指定時に基準となるアドレスを格納する。ベクタベースアドレス２３は、割り込みや例外が発生した場合の飛び先アドレス指定時に基準となるアドレスを格納する。ジャンプテーブルベースレジスタ２４は、メモリ３に配置された関数テーブル使用時に基準となるアドレスを格納する。状態レジスタ２０の内容、特に、状態レジスタ２０の内容は、割り込みなどの例外処理が発生したときには、実行中のプログラムのアドレスを示すプログラムカウンタＰＣと同様に、退避が不可欠である。そのため、退避するための専用のハードウェアを備えて実装してもよい。
【００５７】
バンク選択ビットフィールド２１は、制御レジスタ１９、特にこの状態レジスタ２０のビットフィールドの一部として設けると良い。バンク状態保持回路９は、制御レジスタ１９の状態レジスタ２０に含まれるバンク選択ビットフィールド２１として構成され、バンク状態値を保持することができる。例えば、状態レジスタの１ビットに命令コードを指定するバンクフィールドを定義する。そして、バンクフィールドの値０を既存の命令セット１、値１を新規の命令セット２に対応させる。ここで、従来との互換性を保持するようにバンクフィールドの初期値は０とする。命令読み出し回路１０は、メモリに格納された命令コードを読み出す従来の命令コード読み出し回路１０＿１を備え、さらに、状態レジスタ２０のバンクフィールド２１を読み出すバンクフィールド読み出し回路１７が追加されている。命令コードデコード回路１１は、メモリに格納された命令コードをデコードする従来の命令コードデコード回路１１＿１を備え、さらに、読み出したバンクフィールド２１を判定するバンクフィールド判定回路１８が追加されている。命令実行回路１２は、命令セット１の命令を実行する命令セット１実行回路１３と命令セット２の命令を実行する命令セット２実行回路１４で構成する。ここで、命令セット１は、従来の命令セットにバンクフィールドが０であれば１に、バンクフィールドが１であれば０に反転するシステム制御命令（BAINV命令３８とする）を付加した命令セットであり、命令セット２は新規に拡張した命令セットである。命令セット２の命令は、例えば、画像処理や音声処理等で頻繁に使用するビット操作命令、モータ制御や位置決め等で頻繁に使用する三角関数や指数関数等の初等関数演算命令、ベッセル関数や楕円関数等の特殊関数演算命令等を含んで構成することができる。さらに、命令セット２にはバンクフィールドを反転させるシステム制御命令（BAINV命令３８）を含む。命令セットが２個（２バンク）の場合を例示しているが、３個以上の命令セット（３バンク以上）でも同様である。
【００５８】
図４は、実施形態１のマイコンの実行コードを生成するコード変換部の構成を表す説明図である。コード変換部３２のコンパイラ３３とアセンブラ３４は、ユーザアプリケーション３１の処理を、図４に示すように、命令セット１の命令に加え、命令セット２に対応した命令及びバンクフィールドを反転するシステム制御命令（BAINV命令３８）に変換する。なお、命令コードはバンクフィールドを反転する命令（BAINV命令３８）以外は増えず、従来の命令ビット数で対応できる。命令セット１（３６＿１）には、例えば、従来の命令に加え、バンクフィールドを反転するシステム制御命令（BAINV命令３８）を追加する。命令セット２（３７＿１）は、命令セット１（３６＿１）の一部の例えば演算命令を、数値演算を高速化する新規の命令に置き換えて構成する。置き換え後の命令セット２（３７＿１）の新規の数値演算命令には、置き換えの前の命令セット１（３６＿１）の演算命令と同じ命令コードを割り当てる。また、命令セット２（３７＿１）にも、バンクフィールドを反転するシステム制御命令（BAINV命令３８）を追加する。これにより、命令コードを増やすことなく、数値演算の高速化に必要な命令を追加することができる。
【００５９】
図５は、実施形態１のマイコンの動作の一例を表すフローチャートである。マイコン起動前に、ユーザアプリケーションをコード変換部でコード変換し、その実行コードをメモリにロードする。マイコン起動（Ｓ１）後、バンクフィールドの値をｂ’０（ｂ’０は２進数表記の０）に初期化する（Ｓ２）。次に命令コードをメモリから読み出し（Ｓ３）、バンクフィールドを読み出す（Ｓ４）。Ｓ３において読み出した命令コードをデコードする（Ｓ５）。Ｓ４において読み出したバンクフィールドの値を判定する（Ｓ６）。Ｓ６においてバンクフィールドの値がｂ’１（ｂ’１は２進数表記の１）であった場合、命令デコード結果に対応した命令セット２の命令を実行する（Ｓ８）。ここで、命令セット２の命令は新規に追加した命令で、例えば、画像処理や音声処理等で頻繁に使用するビット操作命令、モータ制御や位置決め等で頻繁に使用する指数関数や三角関数等の初等関数演算命令、ベッセル関数や楕円関数等の特殊関数演算命令である。また、バンクフィールド反転命令（BAINV命令３８）も含まれる。
【００６０】
Ｓ６においてバンクフィールドの値がｂ’０であった場合、Ｓ５の命令デコード結果に対応した命令セット１の命令を実行する（Ｓ７）。ここで、命令セット１は、従来の命令とバンクフィールド反転命令（BAINV命令３８）を含む。Ｓ７またはＳ８の命令がバンクフィールド反転命令であるかを判定する（Ｓ９）。Ｓ９でバンクフィールド反転命令（BAINV命令３８）であれば、バンクフィールドを更新する（Ｓ１０）。プログラムカウンタ（ＰＣ）を更新（インクリメント）し、次の命令読み出し準備をする（Ｓ１１）。プログラムの最後であるかを判定する（Ｓ１２）。プログラムの最後でなければ、Ｓ３に戻り次の命令を読み出す。また、プログラムの最後であれば、マイコンを終了する（Ｓ１９）。
【００６１】
図６は、実施形態１のマイコンのパイプライン動作の一例を表すタイミングチャートである。
【００６２】
第１ステージでは、命令の読み出し（ＩＦ）に加え、バンクフィールドの読み出しを行う。第２ステージでは、命令コードのデコードをする（ＩＤ）。第３ステージでは、読み出したバンクフィールドに基づいて、命令セットの判定をする（ＤＰ）。第４ステージでは、ＤＰの命令セットの判定結果により、命令セット１または命令セット２の命令を実行する（ＥＸ１またはＥＸ２）。第５ステージはメモリアクセス（ＭＡ）、第６ステージはライトバック（ＷＢ）であり、これらを含まない命令もある。
【００６３】
なお、パイプラインは一例で、複数のステージを１個のステージにまとめること、または、１個のステージを複数のステージに分離することも可能である。
【００６４】
図７は、実施形態１のマイコンのパイプライン動作の別の例を表すタイミングチャートである。第２ステージで、命令コードのデコードをする（ＩＤ）と、命令セットの判定（ＤＰ）を並列に実行し、第３ステージで、ＤＰの命令セットの判定結果により、命令セット１または命令セット２の命令を実行する（ＥＸ１またはＥＸ２）。メモリアクセス（ＭＡ）とライトバック（ＷＢ）は、それぞれ第４ステージと第５ステージに繰り上げる。全体のパイプラインステージ数が図６に比べて少なく、分岐に伴うオーバーヘッドを少なく抑えることができる。
【００６５】
このように、パイプライン構造は、適宜最適化することができる。また、ＲＩＳＣマイコンで一般的なものとなっている２命令を同時に実行するスーパースカラや、１つの命令を同時に複数のデータに対して並列に実行するSIMD（Single Instruction Multiple Data）にも、並列動作するパイプライン本数を増やすことで同様に適用可能である。
【００６６】
以上述べたように、同じ命令コードに対応した２個の命令セットである命令セット１（３６＿１）と命令セット２（３７＿１）を定義する。ＣＰＵコア２の制御レジスタ１９の状態レジスタに命令セット１または命令セット２を指定するバンクフィールド２１を定義する。これにより、バンク状態値は、元々マイコンの割り込みに際して退避・復帰の対象である、制御レジスタに保持される状態値と同様に、退避・復帰の対象とすることができ、バンク状態値の退避・復帰のために特に回路を追加する必要がない。
【００６７】
命令セット１（３６＿１）には従来の命令に加え、バンクフィールドを反転するシステム制御命令（BAINV命令３８）を追加する。命令セット２（３７＿１）は、命令セット１（３６＿１）の一部の演算命令を、同じ命令コードのまま、数値演算を高速化する新規の命令に置き換えて構成する。また、命令セット２（３７＿１）にも、バンクフィールドを反転するシステム制御命令（BAINV命令３８）を追加する。これにより、命令コードを増やすことなく、数値演算の高速化に必要な命令を追加することができる。後続の命令が異なる命令セットの場合、BAINV命令３８を実行してバンクフィールド２１を更新することで、ユーザアプリケーションの誤動作を防止する。ＣＰＵのパイプライン動作では、命令読み出しステージで命令コードを読み出し、バンクフィールドから状態値を判定するステージＤＰを追加する。ＤＰステージは、ＩＤステージとＥＸステージの間に挿入するか、ＩＤステージと並列に実行する。
【００６８】
バンクフィールド反転命令（BAINV命令３８）によるバンクフィールドの値の更新動作は、以下の２通り形態を取り得る。第１の形態では、BAINV命令３８によりバンクフィールドの値を反転し、それ以外の命令ではそれを維持する。第２の形態では、BAINV命令３８では次の命令に対してのみバンクフィールドの値を反転し、その次の命令では元の値に戻す。命令セット２の命令が比較的長く連続する場合には前者が有効であり、命令セット２の命令が単発で現れる場合には、後者が有効である。BAINV命令３８自体の実行サイクルは、オーバーヘッドとなるが、実行するアプリケーションプログラムにおける命令の出現態様に合わせて適切に選ぶことにより、オーバーヘッドを少なく抑えることができる。また、前者の場合には、全ての命令セットにBAINV命令３８を含む必要があるが、後者の場合には、命令セット１に含めば足りる。３以上の命令セットに対応する場合、BAINV命令３８は変更対象の命令セットを指定するオペランドを含んでも良い。一方、変更の順序を予め規定しておき、BAINV命令３８により順次次のバンク状態に宣することもできる。予め規定された順序以外の遷移が必要な場合は、BAINV命令３８を実行する回数により、バンク状態保持回路９に保持されるバンク状態を、目的の値に変更するように構成することもできる。前者の場合、変更に伴うBAINV命令３８の実行ステップ数を抑えることができ、後者の場合、追加する命令数を最低限の１個に抑えることができる。
【００６９】
〔実施形態２〕＜命令実行回路内のステートマシンにバンク状態を保持＞
実施形態２のマイコン１は、バンク状態保持回路９を、命令実行回路１２内に備えた状態遷移部（ステートマシン）２５により実現したものである。
【００７０】
図８は、実施形態２のマイコンのＣＰＵコアの構成を表すブロック図である。図３に示した実施形態１のマイコン１に対し、制御レジスタ１９の状態レジスタ２０に設けたバンク選択ビットフィールド２１、バンクフィールド読み出し回路１７及びバンクフィールド判定回路１８に代えて、実施形態２のマイコン１は、命令実行回路１２に、命令セット１を選択する状態０と命令セット２を選択する状態１を持つ状態遷移部２５を実装する。状態遷移部２５は、例えば、命令セット１の命令を実行すべきことを示す状態１と命令セット２の命令を実行すべきことを示す状態２との間を遷移する、ステートマシンによって構成することができる。さらに、命令セット１と命令セット２のそれぞれに状態遷移命令（STRAN命令３９とする）を追加する。状態遷移命令（STRAN命令３９）を実行することで、状態０であれば状態１に、状態１であれば状態０に遷移する。命令実行部１２は、状態遷移部２５が保持する状態に基づいて、命令セット１実行回路１３と命令セット２実行回路１４の動作を制御する。その他の構成は、図３に示した実施形態１のマイコン１と同様であるので、説明を省略する。図８には、命令セットが２個（２バンク）の場合を例示しているが、３個以上の命令セット（３バンク以上）でも同様である。状態遷移部（ステートマシン）２５には、バンク状態値を退避する記憶素子を備え、割り込みが発生したときにバンク状態値を記憶素子に退避させ、割り込みルーチンが完了したときに、状態遷移部（ステートマシン）２５にバンク状態値を復帰させる。これにより、アプリケーションプログラムの割り込み処理ルーチンに、バンク状態値を退避・復帰させる処理を明示的に追加することなく、バンク状態を退避・復帰させることができる。
【００７１】
図３に示した実施形態１のマイコン１と比較して、レジスタ参照をする必要がないので、実行を高速化でき、制御レジスタ、命令読み出し回路、命令デコード回路の機能拡張が必要なく、命令実行回路に状態遷移部を付加するのみなので、より少ない回路規模で実現することができる。
【００７２】
図９は、実施形態２のマイコンの実行コードを生成するコード変換部の構成を表す説明図である。コード変換部３２のコンパイラ３４とアセンブラ３５は、ユーザアプリケーションプログラムを、命令セット１（３６＿２）の命令に加え、命令セット２（３７＿２）に対応した命令及び状態遷移命令（STRAN命令３９）に変換する。なお、命令コードは状態遷移をする命令以外増えず、従来の命令ビット数で対応できる。
【００７３】
状態遷移命令（STRAN命令３９）によるバンク状態値の更新動作も、BAINV命令３８によりバンクフィールドの値の更新動作と同様に、以下の２通り形態を取り得る。第１の形態では、STRAN命令３９によりバンク状態値を反転し、それ以外の命令ではそれを維持することができる。第２の形態では、STRAN命令３９では次の命令に対してのみバンク状態値を反転し、その次の命令では元の値に戻すこともできる。命令セット２の命令が比較的長く連続する場合には前者が有効であり、命令セット２の命令が単発で現れる場合には、後者が有効である。実行するアプリケーションプログラムにおける命令の出現態様に合わせて適切に選ぶことにより、STRAN命令３９自体の実行サイクルによるオーバーヘッドを少なく抑えることができる。また、前者の場合には、全ての命令セットにSTRAN命令３９を含む必要があるが、後者の場合には、命令セット１に含めば足りる。３以上の命令セットに対応する場合、STRAN命令３９は変更対象の命令セットを指定するオペランドを含んでも良い。一方、変更の順序を予め規定しておき、STRAN命令３９を実行する回数により、状態遷移部（ステートマシン）２５に保持されるバンク状態値を、目的の値に変更するように構成することもできる。前者の場合、変更に伴うSTRAN命令３９の実行ステップ数を抑えることができ、後者の場合、追加する命令数を最低限の１個に抑えることができる。
【００７４】
図１０は、実施形態２のマイコンの動作の一例を表すフローチャートである。マイコン起動前に、ユーザアプリケーションをコード変換部でコード変換し、その実行コードをメモリにロードする。マイコン起動（Ｓ１）後、状態遷移部（ステートマシン）２５に保持されるバンク状態値を状態０に初期化する（Ｓ１３）。次に命令コードをメモリから読み出し（Ｓ３）、状態遷移部（ステートマシン）２５に保持されるバンク状態値を読み出す（Ｓ１４）。Ｓ３において読み出した命令コードをデコードする（Ｓ５）。Ｓ１４において読み出したバンク状態値を判定する（Ｓ１５）。Ｓ１５においてバンク状態値が１であった場合、命令デコード結果に対応した命令セット２の命令を実行する（Ｓ８）。ここで、命令セット２の命令は新規に追加した命令で、例えば、画像処理や音声処理等で頻繁に使用するビット操作命令、モータ制御や位置決め等で頻繁に使用する指数関数や三角関数等の初等関数演算命令、ベッセル関数や楕円関数等の特殊関数演算命令である。また、STRAN命令３９も含まれる。
【００７５】
Ｓ１５においてバンク状態値が０であった場合、Ｓ５の命令デコード結果に対応した命令セット１の命令を実行する（Ｓ７）。ここで、命令セット１は、従来の命令とSTRAN命令３９を含む。Ｓ７またはＳ８の命令がSTRAN命令３９であるかを判定する（Ｓ１６）。Ｓ１６でSTRAN命令３９であれば、バンク状態値を更新する（Ｓ１７）。プログラムカウンタ（ＰＣ）を更新（インクリメント）し、次の命令読み出し準備をする（Ｓ１１）。プログラムの最後であるかを判定する（Ｓ１２）。プログラムの最後でなければ、Ｓ３に戻り次の命令を読み出す。また、プログラムの最後であれば、マイコンを終了する（Ｓ１９）。
【００７６】
以上述べたように、同じ命令コードに対応した２個の命令セットである命令セット１（３６＿２）と命令セット２（３７＿２）を定義する。ＣＰＵコア２の命令実行回路１２に、命令セット１を選択する状態０と命令セット２を選択する状態１を持つ状態遷移部２５を実装する。これにより、図３に示した実施形態１のマイコン１と比較して、レジスタ参照をする必要がないので、実行を高速化でき、制御レジスタ、命令読み出し回路、命令デコード回路の機能拡張が必要なく、命令実行回路に状態遷移部を付加するのみなので、より少ない回路規模で実現することができる。命令セット１（３６＿２）には従来の命令に加え、バンク状態値を反転するSTRAN命令３９を追加する。命令セット２（３７＿２）は、命令セット１（３６＿２）の一部の演算命令を、同じ命令コードのまま、数値演算を高速化する新規の命令に置き換えて構成する。また、命令セット２（３７＿２）にも、バンク状態値を反転するSTRAN命令３９を追加する。これにより、命令コードを増やすことなく、数値演算の高速化に必要な命令を追加することができる。後続の命令が異なる命令セットの場合、STRAN命令３９を実行してバンク状態値を更新することで、ユーザアプリケーションの誤動作を防止する。
【００７７】
〔実施形態３〕＜ＳＤカードへのマイコンの応用例＞
実施形態３は、実施形態２のマイコン１をＳＤカード５に搭載した一応用例である。
【００７８】
SDカード規格はアプリケーションコマンドを定義しており、ＳＤカードがコマンド番号55のコマンド(CMD55とする)を受信すると、次の受信コマンドはアプリケーションコマンド(ACMDXとする)としてデコードし、動作する。
【００７９】
図１１は、実施形態３のＳＤカードの構成を表すブロック図である。
【００８０】
ＳＤカード５は、外部のホスト機器６０と接続するインターフェース５１と、ホスト機器６０から受信したコマンドに基づいて、通常状態かアプリケーション状態のどちらの状態にあるかを保持する、ＳＤカード状態保持部５２と、メモリ３とＣＰＵコア２を備える。図中「ＡＰＬ状態」は、「アプリケーション状態」を略記したものである。インターフェース５１とメモリ３とＣＰＵコア２は例えばバス６によって互いに接続されている。ＳＤカード状態保持部５２は、ＣＰＵコア２の上で動作するソフトウェア上で実現される。ＣＰＵコア２は、図８に示した実施形態２のマイコン１と同様である。ＣＰＵコア２の命令セットは、通常コマンド対応命令セットとアプリケーションコマンド対応命令セットの２バンクを含み、それぞれにバンク変更命令を含む。ＣＰＵコア２は、命令実行回路１２には、命令セット１実行回路１３と命令セット２実行回路１４として、それぞれ、通常コマンド対応命令セット実行回路１３＿２とアプリケーションコマンド対応命令セット実行回路１４＿２とを備え、通常コマンドセットを選択する通常状態とアプリケーションコマンドセットを選択するアプリケーション状態を持つ状態遷移部２５を実装する。状態遷移部２５に保持されるバンク状態値は、実施形態２のマイコン１に搭載される状態遷移部２５と同様に、割り込みなどの例外処理の際に退避・復帰の対象となっている。割り込みの発生によりバンク状態値は退避され、割り込みルーチンが完了したとき復帰される。本実施形態において状態遷移部２５は、ＳＤカード状態保持部５２に基づいて制御される。通常状態でCMD55の処理を完了するとアプリケーション状態に遷移し、アプリケーション状態でACMDXの処理を完了すると通常状態に遷移する。
【００８１】
図１２は、実施形態３のＳＤカードの動作を表す説明図である。図１１に示した本実施形態３のＳＤカード５において、ＳＤカードのホスト機器６０からＳＤカード５へアプリケーションコマンド(=ACMD13)を送信した場合の、ＣＰＵコア２の動作例を示す。
【００８２】
（１）ホスト機器６０はＳＤカード５にCMD55を送信する。
【００８３】
（２）ＳＤカード５のＣＰＵコア２はCMD55を受信すると、通常状態からアプリケーション状態に遷移する。アプリケーション状態は次の受信コマンドをアプリケーションコマンドとしてデコードし動作する状態である。
【００８４】
（３）ＳＤカード５のＣＰＵコア２はアプリケーション状態への遷移を完了すると、アプリケーション状態への遷移完了を示すレスポンスをホスト機器６０に送信する。
【００８５】
（４）ホスト機器６０はＳＤカード５にCMD13を送信する。
【００８６】
（５）ＳＤカード５のＣＰＵコア２はCMD13を受信すると、アプリケーション状態なので通常コマンドのCMD13ではなく、アプリケーションコマンドのACMD13としてデコードし、動作する。ACMD13に対応する動作完了後、アプリケーション状態から通常状態に遷移する。
【００８７】
（６）ＳＤカード５のＣＰＵコア２は通常状態への遷移を完了すると、通常状態への遷移完了を示すレスポンスをホスト機器６０に送信する。
【００８８】
これにより、ＳＤカードの通常状態とアプリケーション状態のそれぞれのコマンドに適する命令セットを備える、マイコンを提供することができる。ＳＤカード５のＣＰＵコア２がCMD55を受信するとアプリケーション状態に遷移し、次のコマンドを受信するとアプリケーションコマンドに対応する動作をするので、ＳＤカードのアプリケーションコマンドに高速に対応できる。
【００８９】
〔実施形態４〕＜モータ制御システムへのマイコンの応用例＞
ACサーボモータは機器の位置決め制御や時刻同期が必要な制御等で使用する。そこで、高精度な制御が必要となりマイコンでモータを制御するのが一般的である。
【００９０】
図１３は、実施形態４のモータ制御システムへのマイコンの応用例を表す説明図である。マイコン１は、ＣＰＵコア２とモータ制御タイマ７とＡ／Ｄ変換器８を備える。マイコン１の出力するＰＷＭ信号によってモータドライバ７１によりモータ７０を駆動し、モータセンサ７２によって測定されたセンサ信号がマイコン１に入力される。マイコン１のＣＰＵコア２は、命令セット１と命令セット２の２バンクを備える命令セットを使って記述されたモータ制御アプリケーション３０＿１を実行することにより、モータ制御の演算をする。例えば、命令セット１は通常の命令セットであり、命令セット２は、命令セット１において使用頻度が少なく、他の命令で代替が可能な命令をモータ制御に特有の数値演算命令に置き換えた命令セットである。演算結果を基にモータ制御用タイマ７でＰＷＭ（Pulse Width Modulation）信号を生成する。ＰＷＭ信号は方形波でそのHighとLow区間を調整しモータドライバ経由でモータ制御をする。また、マイコン１のＡ／Ｄ変換器８によりモータセンサ７２からのセンサ信号を論理信号に変換し、モータの動作情報を取得する。ＣＰＵのモータ制御演算はモータの動作情報も反映させた演算となる。
【００９１】
モータ制御のアプリケーションは三角関数を使用したベクトル制御が一般的で、実施形態１のマイコン１を使用することでより高速な演算が可能となり、システムの高速化が図れる。
【００９２】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００９３】
１  マイコン
２  ＣＰＵコア
３  メモリ
４  周辺回路
５  ＳＤカード
６  バス
７  モータ制御タイマ
８  Ａ／Ｄ変換器
９  バンク状態保持回路
１０  命令コード読み出し回路
１１  命令コードデコード回路
１２  命令実行回路
１３  命令セット１実行回路
１４  命令セット２実行回路
１５  選択回路
１６  汎用レジスタ
１７  バンクフィールド読み出し回路
１８  バンクフィールド判定回路
１９  制御レジスタ
２０  状態レジスタ
２１  バンクフィールド
２２  グローバルベースレジスタ
２３  ベクタベースレジスタ
２４  ジャンプテーブルベースレジスタ
２５  状態遷移部
３０  ユーザアプリケーション
３１  標準ライブラリ
３２  コード変換部
３３  コンパイラ
３４  アセンブラ
３５  実行コード
３６  命令セット１
３７  命令セット２
３８  バンクフィールド反転命令（ＢＡＩＮＶ）
３９  状態遷移命令（ＳＴＲＡＮ）
５１  インターフェース
５２  ＳＤカード状態保持部
６０  ホスト機器
７０  モータ
７１  モータドライバ
７２  モータセンサ
【図１】
2014123267.tif 000003
【図２】
2014123267.tif 000004
【図３】
2014123267.tif 000005
【図４】
2014123267.tif 000006
【図５】
2014123267.tif 000007
【図６】
2014123267.tif 000008
【図７】
2014123267.tif 000009
【図８】
2014123267.tif 000010
【図９】
2014123267.tif 000011
【図１０】
2014123267.tif 000012
【図１１】
2014123267.tif 000013
【図１２】
2014123267.tif 000014
【図１３】
2014123267.tif 000015