(57)【要約】【課題】半導体装置において、簡易な構成にて、テーブルデータを参照することで、入力データに対応する出力データを得ること。【解決手段】ＤＴＣ３は、第１の転送元アドレスレジスタ、第２の転送元アドレスレジスタ、転送先アドレスレジスタ及び転送回数レジスタを有する。第１の転送元アドレスレジスタで指定された転送元アドレスＳＡＲ１から第１のデータを読み出す。第１のデータを演算して第２のデータを生成する。第２の転送元アドレスレジスタで示される転送元アドレスＳＡＲ２を転送元アドレスとして、転送先アドレスレジスタで指定される転送先アドレスＤＡＲへデータ転送を行う。転送元アドレスＳＡＲ２及び転送先アドレスＤＡＲのいずれか一方に第２のデータを加算又は減算して、新たな転送元アドレスＳＡＲ２又は新たな転送先アドレスＤＡＲを生成する。当該データ転送は、転送回数レジスタで指定された値の回数ＣＲだけ繰り返えされる。【選択図】図１７
2018101448.tif 000002
【特許請求の範囲】
【請求項１】
データコントローラーを有する半導体装置であって、
前記データコントローラーは、第１の転送元アドレスレジスタ、第２の転送元アドレスレジスタ、転送先アドレスレジスタ及び転送回数レジスタを備え、
前記第１の転送元アドレスレジスタで指定された第１の転送元アドレスから第１のデータを読み出し、
前記第１のデータを演算することにより第２のデータを生成し、
前記第２の転送元アドレスレジスタで示される第２の転送元アドレスを転送元アドレスとして、前記転送先アドレスレジスタで指定される転送先アドレスへデータ転送を行い、
前記第２の転送元アドレス及び前記転送先アドレスのいずれか一方に前記第２のデータを加算又は減算することによって、新たな第２の転送元アドレス又は新たな転送先アドレスを生成し、
前記転送回数レジスタで指定された値の回数だけ当該データ転送を繰り返す、
半導体装置。
【請求項２】
前記第１のデータに対するデータサイズに応じて論理演算及びシフト演算のいずれか一方又は両方を行った結果を、前記第２のデータとする、
請求項１に記載の半導体装置。
【請求項３】
前記データコントローラーは、
起動要求に応じて指定されたデータ転送情報アドレスに基づいて、データ転送情報配置領域よりデータ転送情報を読み出し、前記データ転送情報に含まれる前記第１の転送元アドレス、前記第２の転送元アドレス及び前記転送先アドレスを、前記第１の転送元アドレスレジスタ、前記第２の転送元アドレスレジスタ及び転送先アドレスレジスタにそれぞれ格納する、
請求項１に記載の半導体装置。
【請求項４】
前記データ転送情報は、モード情報をさらに有し、
前記データコントローラーは前記モード情報を格納するモードレジスタをさらに有し、
前記モードレジスタの情報に基づき、前記第２のデータを前記第２の転送元アドレス及び前記転送先アドレスのいずれか一方に加算または減算する、
請求項３に記載の半導体装置。
【請求項５】
前記データ転送情報は、前記新たな第２の転送元アドレス又は前記新たな転送先アドレスによって更新される、
請求項４に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えばマイクロコンピュータに関する。
【背景技術】
【０００２】
一般に、シングルチップマイクロコンピュータは、中央処理装置（ＣＰＵ：Central Processing Unit）を中心にして、プログラム保持用のＲＯＭ（Read Only Memory：リードオンリメモリ）、データ保持用のＲＡＭ（Random Access Memory：ランダムアクセスメモリ）、及びデータ又は信号の入出力を行うための入出力回路などの機能ブロックが、一つの半導体基板上に形成されている。このようなシングルチップマイクロコンピュータは、様々な機器制御に用いられる。
【０００３】
シングルチップマイクロコンピュータの機器制御において、割り込みなどのイベントに呼応して、データ転送を行う要求がある。ＣＰＵは命令の組み合わせによって任意の処理を実現できるものの、割り込み処理を行う場合には、処理の流れを切り替えるために例外処理、スタックの退避・復帰処理、復帰命令の実行が必要になる。この場合、データ転送行う際の命令リードなどのＣＰＵの動作時間が大きくなりがちである。
【０００４】
上記のデータ転送の問題点を解消するため、シングルチップマイクロコンピュータにデータ転送装置を設け、少ないハードウェアで多数の周辺処理装置（入出力回路）からの要求に応じたデータ転送を行う技術が提案されている（特許文献１）。この技術では、転送すべきデータが格納されているメモリの位置を示す転送元アドレスなどのデータ転送情報が、記憶装置（ＲＡＭ）に格納される。また、データ転送に必要なすべての情報が記憶装置（ＲＡＭ）のどこに格納してあるかを示すアドレスを格納するベクタテーブルが設けられる。そして、データ転送の起動要求があった場合に、起動要求に対応してベクタテーブルの内容を参照する手段と、ベクタテーブルの内容からデータ転送に必要なすべての情報を得る手段が設けられる。この技術では、少ないハードウェアでデータ転送を実現することができるが、データ転送の内容については考慮されていない。
【０００５】
これに対し、データ転送装置でのデータ転送の応用範囲を広げるため、データ転送のモードによって異なるデータ転送を行う技術も提案されている（特許文献２）。この技術では、データ転送のモードとして、リピート転送モード、ブロック転送モードが提案されている。これにより、転送先や転送元のアドレスの制御や、転送回数の選択などを行うことが可能である。例えば、本技術をプリンタなどのシステムに適用すれば、ステッピングモータの制御、プリンタの印字データ制御が可能である。また、受信データのメモリへの蓄積に好適である。また、この技術では、データ転送情報を、データ転送装置内部に専用のハードウェアとして保有し、このハードウェアを有効に利用するため、ショートアドレスモード／フルアドレスモードの転送情報の構成を選択可能にすることも示されている。本例では、ステッピングモータは回転角と移動量が対応しており、フィードバックが不要であり、所定の数のデータを、所定の順番で転送することができればよい。本技術では、転送元アドレス及び転送先アドレスの一方はＲＡＭなどとなるが、ＲＡＭの記憶内容を更新しながら使用することは考えられていない。
【０００６】
データ転送に必要な情報を記憶装置に格納して、データ転送装置の１回の動作で、少なくとも１つ以上の情報によるデータ転送が指定可能（チェイン転送ないしチェイン動作）な技術も提案されている（特許文献３）。本技術によれば、任意の起動要因で、任意の数の転送を可能としたことにより、様々な用途に適用可能となる。その結果、システム構成上の自由度を向上し、使い勝手を向上させることができる。
【０００７】
データ転送装置内にあらかじめ設定したデータと転送するデータとの間で比較や簡単な演算が行える演算器を内蔵した技術も提案されている（特許文献４）。この技術では、データ転送を、専用のハードウェアであるデータ転送装置で実行するので、ＣＰＵより高速なデータ転送を実現できる。その結果、ＣＰＵの割り込み処理の頻度を低減できるので、効率的な処理を行うことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１−１２５６４４号公報
【特許文献２】特開平５−３０７５１６号公報
【特許文献３】特開平７−１２９５３７号公報
【特許文献４】特開２０００−１９４６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところが、発明者らは、上述の技術には、以下に示す問題点が有ることを見出した。近年、マイクロコンピュータが内蔵する機能及び制御対象は増加しており、マイクロコンピュータの制御もより高い精度が求められるようになっている。例えば、入力データに対応したデータ出力を行うことが求められるが、入力データの種類ごとに専用のハードウェアを設けると、マイクロコンピュータの物理的規模が増大してしまう。また、マイクロコンピュータの構造が複雑化し、出力データを得るための処理時間も長くなってしまう。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
一実施の形態によれば、半導体装置は、データ転送情報に基づいて転送元アドレス領域から転送先アドレス領域へデータを転送するデータ転送装置を備え、前記データ転送装置は、第１の転送元アドレス情報からリードしたデータに基づいて、第２の転送元アドレス情報に演算を行い、演算結果に基づいてリードを行い、リードしたデータを転送先アドレス情報に基づいてライトする。
【発明の効果】
【００１２】
一実施の形態によれば、半導体装置において、簡易な構成にて、テーブルデータを参照することで、入力データに対応する出力データを得ることができる。
【図面の簡単な説明】
【００１３】
【図１Ａ】実施の形態１にかかるマイクロコンピュータの構成を模式的に表したブロック図である。
【図１Ｂ】データ転送装置（ＤＴＣ）の基本的なデータの流れを示す図である。
【図２】データ転送情報の構成を示す図である。
【図３】データ転送装置（ＤＴＣ）の構成を模式的に表したブロック図である。
【図４】データ転送装置（ＤＴＣ）の状態遷移を示す図である。
【図５】分岐モードでのデータ転送を示す図である。
【図６】分岐モードでのデータ転送情報の指定の一例を示す図である。
【図７】シフトモードでのデータ転送を示す図である。
【図８】シフトモードで使用するテーブルの指定方法の一例を示す図である。
【図９】オフセットモードでのデータ転送を示す図である。
【図１０】オフセットモードで使用するテーブルの指定方法の一例を示す図である。
【図１１】比例モードでのデータ転送を示す図である。
【図１２】微分モードでのデータ転送を示す図である。
【図１３】積分モードでのデータ転送を示す図である。
【図１４】転送モードがブロック加算モードである場合のデータ転送を示す図である。
【図１５】分岐モードの変形例でのデータ転送を示す図である。
【図１６】分岐モードの変形例でのＤＴＣの状態遷移図である。
【図１７】アドレス演算モードでのデータ転送を示す図である。
【図１８】アドレス演算モードで使用するテーブルの指定方法の一例を示す図である。
【図１９】割り込みコントローラ（ＩＮＴ）のブロック図である。
【図２０】マイクロコンピュータ（ＭＣＵ）を含むカメラシステムのブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【００１５】
実施の形態１
実施の形態１にかかる半導体装置であるマイクロコンピュータ１００について説明する。図１Ａに、実施の形態１にかかるマイクロコンピュータ１００の構成を模式的に表したブロック図を示す。図１Ｂに、マイクロコンピュータ１００に含まれるデータ転送装置（ＤＴＣ）の基本的なデータの流れを示す。以下、図１Ａを参照して、マイクロコンピュータ１００の構成を説明する。なお、マイクロコンピュータは、以下ではＭＣＵ（Micro Controller Unit）と略記する。
【００１６】
ＭＣＵ１００は、中央処理装置（ＣＰＵ）１、割り込みコントローラ（Interrupt Controller：以下、ＩＮＴと称する）２、データ転送装置（データトランスファコントローラ（Data Transfer Controller：以下、ＤＴＣと称する））３、リードオンリメモリ（ＲＯＭ）４、ランダムアクセスメモリ（ＲＡＭ）５、バスコントローラ（Bus Controller：以下、ＢＳＣと称する）６、タイマ７、通信モジュール８、アナログモジュール９、入出力ポート（Ｉ／Ｏ）１０及び内部バス１１などを有する。通信モジュール８として、例えばシリアルコミュニケーションインタフェースなどが設けられる。アナログモジュール９として、例えばアナログ／デジタル（Ａ／Ｄ）変換器およびデジタル／アナログ（Ｄ／Ａ）変換器などが設けられる。
【００１７】
ＭＣＵ１００では、動作の主体となるのはＣＰＵ１である。ＣＰＵ１は、主にＲＯＭ４から命令を読込んで動作する。ＤＴＣ３は、ＣＰＵ１の設定に基づき、ＣＰＵ１に代ってデータ転送を行う。
【００１８】
ＩＮＴ２は、タイマ７、通信モジュール８及びアナログモジュール９などからの割み込み要求や、ＭＣＵ１の外部からの複数の外部割り込み要求信号に基づくＩ／Ｏ１０からの割り込み要求を受けて、ＣＰＵ１又はＤＴＣ３に割り込み要求又はデータ転送要求を出力する。また、ＩＮＴ２は、割り込み要求信号による処理を開始又は終了したときに、割り込みをクリアする信号である割込みクリア信号を、タイマ７、通信モジュール８、アナログモジュール９及びＩ／Ｏ１０のそれぞれの割込み信号又は割り込み要因フラグに対応して出力する。
【００１９】
ＢＳＣ６は、ＣＰＵ１及びＤＴＣ３からのバスリクエスト信号を受けて、内部バス１１の占有に対する調停をして、バス使用許可信号を出力する。ＢＳＣ６は、ＣＰＵ１及びＤＴＣ３と、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス及びデータなどのインタフェースを行い、内部バス１１に接続されたＲＡＭやその他の機能ブロック及びモジュールに対するリード／ライトを実現する。
【００２０】
上述の通り、ＤＴＣ３は、データ転送情報に基づいて、データ転送を行う。図２に、データ転送情報の構成を示す。データ転送情報は、モードレジスタ（ＭＲとも称する）、第１ソースアドレスレジスタ（ＳＡＲ１とも称する）、第２ソースアドレスレジスタ（ＳＡＲ２とも称する）、デスティネーションアドレスレジスタ（ＤＡＲとも称する）、データレジスタ（ＤＲとも称する）及び転送カウントレジスタ（ＣＲとも称する）からなる。
【００２１】
ＭＲは、ＤＴＣ３が行うデータ転送のモードを指定する。ＤＴＣ３は、ＭＲが指定するデータ転送のモードによって、ＤＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲのうちから必要なデータを利用する。
【００２２】
ＣＲは、ブロック転送カウントレジスタ（ＢＴＣＲとも称する）と転送カウントレジスタ（ＴＣＲとも称する）とに分割される。ＴＣＲは、８ビットのＴＣＲＨと８ビットのＴＣＲＬと に分割される。
【００２３】
これらのレジスタは、１組分の回路がＤＴＣ３の内部に存在し、特に制限はされないものの、ＣＰＵ１のアドレス空間上には存在しない。これらのレジスタに格納されるべきデータ転送情報は、必要組数がＣＰＵ１のアドレス空間上の、ＲＡＭ５などの所定のデータ転送情報配置領域に配置される。
【００２４】
次いで、ＭＲのビット構成について説明する。ＭＲのビット３１〜１６は、データ転送モードの設定と、テーブル参照用のデータ転送機能の入力データと指定と、を行う。ＭＲのビット１５〜０は、テーブル参照用のデータ転送機能のテーブル参照の指定と、通常データ転送機能のデータ転送の指定と、を行う。このとき、テーブルは、複数のデータないしパラメータを、アドレス空間上に所定の順序で予め配置したものである。
【００２５】
ＭＲのビット３１はＴＬＵビットであり、データ転送において、テーブル参照を実行するか否かを選択する。ＴＬＵビットが「０」にクリアされている場合は、テーブル参照を実行しない。このときのデータ転送情報は、後述するＤＲＥビットの値により変化する。ＴＬＵビットが「１」で、ＤＲＥビットが「０」にクリアされている場合、データ転送情報はＭＲ、ＳＡＲ２、ＤＡＲ及びＣＲの１３２ビット（３２ビット×４本）となる。ＴＬＵビットが「１」で、ＤＲＥビットが「１」にセットされている場合、データ転送情報はＭＲ、ＤＲ、ＳＡＲ２、ＤＡＲ及びＣＲの１６０ビット（３２ビット×５本）となる。
【００２６】
ＴＬＵビットが「１」にされている場合、テーブル参照が実行される。このとき、後述するＳＦＭビット、ＯＦＭビット、ＰＲＭビット、ＤＲＭビット、ＩＮＭビット、ＢＲＭビット、ＡＥＭビット及びＮＯＰビットに基づいて、テーブル参照モードが指定される。テーブル参照モードについては、後述する。
【００２７】
ＭＲのビット３０〜２３は、それぞれＳＦＭビット、ＯＦＭビット、ＰＲＭビット、ＤＲＭビット、ＩＮＭビット、ＢＲＭビット、ＡＥＭビット及びＮＯＰビットである。これらのビットは、テーブル参照を実行する場合のテーブル参照モードを指定する情報である。
【００２８】
ＳＦＭビットが「１」の場合、テーブル参照モードはシフトモードとなる。ＯＦＭビットが「１」の場合、テーブル参照モードはオフセットモードとなる。ＰＲＭビットが「１」の場合、テーブル参照モードは比例モードとなる。ＤＲＭビットが「１」の場合、テーブル参照モードは微分モードとなる。ＩＮＭビットが「１」の場合、テーブル参照モードは積分モードとなる。ＢＲＭビットが「１」の場合、テーブル参照モードは分岐モードとなる。ＡＥＭビットが「１」の場合、テーブル参照モードはアドレス演算モードとなる。ＮＯＰビットが「１」の場合、テーブル参照モードはノーオペレーションモードとなる。
【００２９】
シフトモードでは、データ転送情報は、後述するＣＲＥビットの値により変化する。ＣＲＥビットが「１」にセットされている場合、データ転送情報は、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲの１６０ビット（３２ビット×５本）となる。ＣＲＥビットが「０」にクリアされている場合、データ転送情報は、ＭＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲの１３２ビット（３２ビット×４本）となる。
【００３０】
オフセットモード、比例モード及び微分モードでは、データ転送情報は、後述するＣＲＥビットの値により変化する。ＣＲＥビットが「１」にセットされている場合、データ転送情報は、ＭＲ、ＤＲ、ＤＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲの１８２ビット（３２ビット×６本）となる。ＣＲＥビットが「０」にクリアされている場合、データ転送情報は、ＭＲ、ＤＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲの１６０ビット（３２ビット×５本）となる。
【００３１】
積分モード及びアドレス演算モードでは、データ転送情報は、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲの１６０ビット（３２ビット×５本）となる。
【００３２】
分岐モードでは、データ転送情報は、ＭＲ、ＳＡＲ１及びＳＡＲ２の９６ビット（３２ビット×３本）となる。
【００３３】
ノーオペレーションモードでは、データ転送情報は、ＭＲのみの３２ビット（３２ビット×１本）となる。
【００３４】
なお、各テーブル参照モードでのデータ転送の詳細については、後述する。
【００３５】
ビット２２〜２０は、ＳＦ［２：０］ビットであり、入力データのシフトを＋３〜−３ビットで指定する。＋のときは左算術シフト、−のときは右算術シフトを行う。
【００３６】
ビット１９及びビット１８は、それぞれＳ１Ｍ［１：０］ビットであり、データ転送後にＳＡＲ１をインクリメントするか、デクリメントするか、又は固定にするかを指定する。
【００３７】
ビット１７、１６はＩＳｚ［１：０］ビットであり、入力データのリードをバイトサイズ、ワードサイズ、又はロングワードサイズのいずれで行うかを選択する。
【００３８】
ＭＲのビット１５及びビット１４は、ＳＭ［１：０］ビットであり、データ転送後にＳＡＲ２をインクリメントするか、デクリメントするか、又は固定にするかを指定する。
【００３９】
ＭＲのビット１３及びビット１２は、ＤＭ［１：０］ビットであり、データ転送後にＤＡＲをインクリメントするか、デクリメントするか、又は固定にするかを指定する。
【００４０】
ＭＲのビット１１及び１０は、ＴＭＤ［１：０］ビットであり、データの転送モードを指定する。ＴＭＤ［１：０］ビットが「００」のとき、転送モードはノーマルモードとなる。ＴＭＤ［１：０］ビットが「０１」のとき、転送モードはリピートモードとなる。ＴＭＤ［１：０］ビットが「１０」とき、転送モードはブロック転送モードとなる。ＴＭＤ［１：０］ビットが「１１」とき、転送モードはブロック加算モードとなる。各転送モードの詳細については、後述する。
【００４１】
ＭＲのビット９はＤＩＲビットであり、転送元及び転送先のいずれをリピート領域とし、いずれをブロック領域とするかを指定する。
【００４２】
ＭＲのビット７及び６は、それぞれＳｚ［１：０］ビットであり、１回のデータ転送をバイトサイズ、ワードサイズ及びロングワードサイズのいずれで行うかを指定する。
【００４３】
ビット３はＤＲＥビットである。ＤＲＥビットが「０」にクリアされている場合は、ＤＲを使用せず、リードしたデータをライトする。ＤＲＥビットが「１」にセットされている場合は、ＤＲを使用し、リードしたデータからＤＲの内容を減算したものをライトする。
【００４４】
ビット２はＣＲＥビットである。ＣＲＥビットが「０」にクリアされている場合は、起動要求信号に応じて、無制限にＤＴＣの動作を行う。このとき、転送モードが通常モードの場合、ＣＲを使用しない。ＣＲＥビットが「１」にセットされている場合は、ＣＲに初期設定した値に応じて、ＤＴＣ３が動作する。
【００４５】
ＭＲのビット１はＮＸＴＥ１ビットであり、１つの起動要因に対してデータ転送を終了するか、次のデータ転送を行うかを指定する。ＮＸＴＥ１ビットを「０」にクリアした場合、データ転送情報リード及びデータ転送後、データ転送情報をライトしてＤＴＣ３の動作を終了する。ＮＸＴＥ１ビットを「１」にセットした場合、データ転送情報リード及びデータ転送後、データ転送情報をライトする。更に、連続したアドレスからデータ転送情報をリードする。そして、このデータ転送情報で指定されるデータ転送を行った後、データ転送情報をライトする。このように、データ転送情報のライト、データ転送及びデータ転送情報のライトの一連の処理を複数回連続して行う動作を、チェイン動作と称する。ＭＲのビット０はＮＸＴＥ０ビットであり、ＣＲが「０」になったときに、チェイン動作を行うかを指定する。
【００４６】
ＤＴＣ３の構成について説明する。図３に、ＤＴＣ３の構成を模式的に表したブロック図を示す。ＤＴＣ３は、データ転送制御ブロック（ＤＴＣＣＮＴとも称する）３１、バスインタフェース（ＢＩＦとも称する）３２、ベクタ生成ブロック（ＶＧとも称する）３３、ベクタアドレスレジスタ（ＶＡＲとも称する）３４、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ、ＣＲ、ＤＲ、演算器（ＡＬＵとも称する）３５及び内部バス３６を有する。
【００４７】
ＤＴＣＣＮＴ３１は、ＩＮＴ２からの起動要求信号ＤＣＴＲＥＱ及びＭＲの内容に基づき、ＤＴＣ３の制御を行う。
【００４８】
ＢＩＦ３２は、ＤＴＣ３の内部バス３６とＭＣＵ１の内部バス１１とのインタフェースを行う。このインタフェースには、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス、データなどが含まれる。
【００４９】
ＶＧ３３は、ＩＮＴ２から与えられるベクタ番号ＤＴＣＶＥＣに従って、ベクタアドレスを生成する。例えば、ベクタ番号ＤＴＣＶＥＣを４倍などとし、所定のオフセットを加算する。
【００５０】
ＶＡＲ３４は、ベクタアドレスからリードしたデータ転送情報の先頭アドレスを格納する。
【００５１】
ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲは、データ転送情報の先頭アドレスから順次リードしたデータ転送情報を格納する。
【００５２】
ＡＬＵ３５は、論理演算、シフト及び算術演算などの機能を持ち、所定の順序でこれらの演算を実行する。図示しないが、内部バス３６は複数のバスを有し、複数のバスを介して、ＳＡＲ１、ＳＡＲ２、ＤＡＲ、ＣＲ及びＤＲの内容をＡＬＵ３５に与えることができる。ＡＬＵ３５は、ＳＡＲ１、ＳＡＲ２、ＤＡＲ、ＣＲ及びＤＲを用いた演算を行うことができる。
【００５３】
ノーマルモード
ＴＭＤ［１：０］ビットが「００」の場合、転送モードはノーマルモードとなる。ノーマルモードでは、１回の起動で、ＳＡＲで示される転送元アドレスからＤＡＲで示される転送先アドレスへ、１回のデータ転送を行う。データ転送の終了後、ＳＡＲは、ＳＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。ＤＡＲは、ＤＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。その後、ＴＣＲがデクリメントされる。
【００５４】
ノーマルモードでは、以上で説明したデータ転送とレジスタ操作を、起動要因が発生するごとに、ＴＣＲで指定された回数だけ繰り返す。
【００５５】
ＣＲで指定された回数だけ繰り返し動作を行った後、起動要因となった割り込みがＣＰＵに要求される。
【００５６】
リピートモード
ＴＭＤ［１：０］ビットが「０１」の場合、転送モードはリピートモードとなる。ＤＩＲビットが「０」にクリアされている場合、転送元アドレスをリピート領域として設定する。ＤＩＲビットが「１」にセットされている場合、転送先アドレスをリピート領域として設定する。リピートモードでは、ＴＣＲＨを転送カウントレジスタ、ＴＣＲＬを転送回数保持レジスタとして使用する。リピート領域の大きさは、ＴＣＲＨで指定される。データ転送の開始前には、ＴＣＲＨとＴＣＲＬとには、同じ値が初期値として設定される。
【００５７】
リピートモードでは、１回の起動で、ＳＡＲで示される転送元アドレスからＤＡＲで示される転送先アドレスへ、１回のデータ転送を行う。データ転送の終了後、ＳＡＲは、ＳＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。ＤＡＲは、ＤＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。その後、ＴＣＲ（ＴＣＲＨ）がデクリメントされる。リピートモードでは、以上で説明したデータ転送とレジスタ操作を、起動要因が発生するごとに、ＴＣＲ（ＴＣＲＨ及びＴＣＲＬ）で指定された回数だけ繰り返す。
【００５８】
指定された回数のデータ転送が終了すると、ＴＣＲＨは「０」となる。その後、ＴＣＲＬに保持した内容に基づいて、ＳＡＲ、ＤＡＲ及びＴＣＲＨの一部又は全部の初期設定値が回復される。
【００５９】
ＴＣＲＨが「０」になった場合、ＴＣＲＬの内容が転送カウンタレジスタのＴＣＲＨに転送される。これにより、ＴＣＲＨは初期値に回復される。また、ＳＡＲ又はＤＡＲは、以下の演算により、初期設定値に回復される。
【００６０】
ＤＩＲビットが「１」にセットされているとき、式（１）に示す演算ＯＰ１が行われ、ＳＡＲは初期設定値に回復される。
【数１】
2018101448.tif 000003
【００６１】
ＤＩＲビットが「０」にクリアされているとき、式（２）に示す演算ＯＰ２が行われ、ＤＡＲは初期設定値に回復される。
【数２】
2018101448.tif 000004
【００６２】
上記の演算を行うには、リピート領域に指定したＳＡＲ又はＤＡＲに対して、ＴＣＲＬの内容を、内部バス３６を介してＡＬＵ３５に入力する。ＡＬＵ３５は、式（１）又は式（２）に示す演算を行うことで、ＳＡＲ又はＤＡＲが初期化される。
【００６３】
ブロック転送モード
ＴＭＤ［１：０］ビットが「１０」の場合、転送モードはブロック転送モードとなる。ＤＩＲビットが「０」にクリアされている場合、転送元アドレスをブロック領域として設定する。ＤＩＲビットが「１」にセットされている場合、転送先アドレスをブロック領域として設定する。ブロック転送モードでは、ＳＡＲを転送元アドレス指定レジスタ、ＤＡＲを転送先アドレス指定レジスタ、ＴＣＲＨをブロックサイズカウントレジスタ、ＴＣＲＬをブロックサイズ保持レジスタ、ＢＴＣＲをブロック転送カウントレジスタとして使用する。
【００６４】
ブロック転送モードでは、１回の起動で、ＳＡＲで示される転送元アドレスからＤＡＲで示される転送先アドレスへ、ブロックサイズ分のデータ転送を行う。データ転送ごとに、ＳＡＲは、ＳＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。ＤＡＲは、ＤＭ［１：０］ビットに応じて、インクリメント、デクリメント又は固定される。その後、ＴＣＲ（ＴＣＲＨ）がデクリメントされる。
【００６５】
指定された回数のデータ転送が終了すると、ＴＣＲＨが「０」となる。この場合、リピートモードと同様に、ＴＣＲＬに保持した内容に基づいて、ＳＡＲ、ＤＡＲ及びＴＣＲＨの一部又は全部の初期設定値が回復される。
【００６６】
また、ブロック領域のデータ転送が終了すると、ＢＴＣＲをデクリメントする。ブロック転送モードでは、以上で説明したブロック領域のデータ転送を、起動要因が発生するごとに、ＢＴＣＲで指定された回数だけ（ＢＴＣＲが「０」になるまで）繰り返す。
【００６７】
図４に、ＤＴＣ３の状態遷移図を示す。図４に示す状態遷移は、主として、ＤＴＣ３のデータ転送制御ブロック（ＤＴＣＣＮＴ）３１に実装される。
【００６８】
ＤＴＣ３は、ＩＮＴ２から起動要求信号ＤＴＣＲＥＱが与えられると、ＶＲステートに遷移する。ＶＲステートに遷移後、ＤＴＣ３は、ベクタ番号ＤＴＣＶＥＣに従って、ＶＧ３３で生成したベクタアドレスに基づき、ベクタ領域（データ転送情報先頭アドレス配置領域）に格納されたデータ転送情報の先頭アドレスをリードする。ＤＴＣ３は、リードした内容を、ＶＡＲ３４に格納する。
【００６９】
次に、ＤＴＣ３は、ＩＲステートに遷移する。ＩＲステートに遷移後、ＤＴＣ３は、ＶＲステートにてリードした先頭アドレスに従って、データ転送情報配置領域に格納されたデータ転送情報をリードする。この際、ＤＴＣ３は、ＭＲ、ＤＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲをリードする。
【００７０】
ＤＴＣ３は、ＴＬＵビットが「０」にクリアされている状態で、ノーマルモードのデータ転送を行う場合は、ＳＲステート、ＤＷステート、ＩＷステートと遷移する。
【００７１】
ＳＲステートでは、ＤＴＣ３は、ＳＡＲ２の内容に従い、転送元アドレスの内容をリードする。また、ＤＴＣ３は、ＭＲの内容に従い、ＳＡＲ２のインクリメントなどを行う。
【００７２】
ＤＷステートでは、ＤＴＣ３は、リードした内容を、ＤＡＲの内容に従い、転送先アドレスへライトする。また、ＤＴＣ３は、ＭＲの内容に従い、ＤＡＲのインクリメントやＣＲのデクリメントなどを行う。
【００７３】
ＩＷステートでは、ＤＴＣ３は、ＶＡＲ３４の内容に従って、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲをデータ転送情報配置領域に書き戻す。但し、ＩＷステートでは、ＭＲ、ＤＲ、ＳＡＲ、ＤＡＲ及びＣＲの内で更新されなかったもののライトを行わないようにすることができる。例えば、ＤＡＲが固定の場合、ＤＡＲのライトは行わない。
【００７４】
なお、ＤＴＣ３は、ＭＲの内容に従い、ブロック転送モードのデータ転送を行う場合は、上述のＳＲステート、ＤＷステートの動作を、ＴＣＲで指定された回数だけ繰り返す。
【００７５】
その後、チェイン動作を行わない場合、ＤＴＣ３は、ＣＲの内容に従って、起動要因となった割り込み要因フラグ又はＤＴＥビットをクリアし、動作を終了して、停止状態に戻る。
【００７６】
チェイン動作を行う場合、ＤＴＣ３は、ＩＷステートからＩＲステートへと戻り、別のデータ転送を行うことができる。
【００７７】
一方、ＤＴＣ３は、ＴＬＵビットが「１」にクリアされている状態（テーブル参照を行う場合）で、ノーマルモードのデータ転送を行う場合は、ＩＲステートからＤＲステートに遷移する。
【００７８】
ＤＲステートでは、ＤＴＣ３は、テーブルを参照するための入力データをリードする。その後は、上述の通り、ＳＲステート、ＤＷステート、ＩＷステートと遷移する。ＳＲステートでは、入力データとＳＡＲ２の内容に基づき、所要のテーブルを参照（リード）する。その後は、通常データ転送モードと同様である。
【００７９】
本実施の形態では、テーブル参照モードのうち、分岐モードを選択して動作を行う。  分岐モードでは、ＴＬＵビットが「１」、かつ、ＢＲＭビットが「１」の場合、テーブル参照モードは分岐モードとなる。図５に、分岐モードでのデータ転送を示す。
【００８０】
ＣＰＵ１は、所要のデータ転送情報を、所定の転送情報アドレス領域にライトしておく。テーブルデータとして、当該データ転送情報による動作に引き続いて実行するデータ転送情報の先頭アドレスのオフセットを用意しておく。この状態で、割り込み要因が発生してＤＴＣ３が起動されると、対応するベクタ領域からデータ転送情報先頭アドレスをリードする（ＶＲステート）。
【００８１】
リードしたアドレスに基づいて、データ転送情報配置領域からデータ転送情報ＩＮＦ１１をリードする（ＩＲステート）。このときのデータ転送情報ＩＮＦ１１は、ＭＲ、ＳＡＲ１及びＳＡＲ２となる。
【００８２】
ＳＡＲ１で指定したアドレスから、ＩＳｚ［１：０］ビットで指定したデータサイズのデータをリードする（ＤＲステート）。ここでリードしたデータを判定データと称する。判定データは、前記の、引き続いてチェイン動作として実行するデータ転送情報の先頭アドレスのオフセットである。
【００８３】
ＡＬＵ３５は、リードした判定データを、Ｓｚ［１：０］ビットで指定した転送データサイズ（テーブルのデータサイズ）に応じて、１、２、４倍し、又は、０、１、２ビットだけシフトして、テーブルのオフセット値を生成する。シフト量は、必要に応じてＳＦ［２：０］ビットで指定することができる。そして、テーブルのオフセット値をＳＡＲ２に加算して転送元アドレスとして使用する。
【００８４】
前記の転送元アドレスから転送データをリードする（ＳＲステート）。なお、リードした転送データのライトは行わない（ＤＷステート）。
【００８５】
その後、ＳＡＲ２の更新、及び元のデータ転送情報ＩＮＦ１１のアドレスにライトすることなく、ＩＲステートでリードしたＭＲ、ＳＡＲ１及びＳＡＲ２に相当する、ＶＡＲのインクリメントを行い、データ転送情報ＩＮＦ１１による処理を終了する（ＩＷステート）。
【００８６】
次いで、テーブルからリードした内容に１６を乗算し、又は、４ビットシフトした結果を、データ転送情報ＩＮＦ１１の次のアドレスに相当するＶＡＲに加算する。これにより、チェイン動作として起動するデータ転送情報の先頭アドレスが生成される。なお、テーブルに１６を乗算するのは、データ転送情報が４ロングワード（すなわち１６バイト）であることに対応したものである。
【００８７】
次いで、生成されたチェイン動作で起動するデータ転送情報の先頭アドレスに基づいて、データ転送情報ＩＮＦ２２をリードし、データ転送を行う。
【００８８】
分岐モードでは、例えば、シリアルコミュニケーションインタフェース（ＳＣＩ）などの通信手段を介してコマンドを入力し、受信完了割り込みでＤＴＣ３を起動する。このコマンドを判定データとしてテーブル参照を行い、テーブル参照結果に対応したデータ転送情報を得ることができる。そして、引き続き、生成したデータ転送情報に基づき、データ転送（チェイン動作）を行う。これによれば、コマンドに対応したパラメータ（テーブルに格納されているオフセット）でデータ転送情報を指定することができる。その結果、パラメータに対応して、柔軟に転送元アドレス及び転送先アドレスを選択することができる。
【００８９】
図６に、分岐モードでのデータ転送情報の指定の一例を示す。分岐モードでは、判定データに従ってチェイン動作でのデータ転送に用いるデータ転送情報を切り替えるために、必要な組数のデータ転送情報が予め用意される。
【００９０】
データ転送情報ＩＮＦ１１は、ベクタで指定される。データ転送情報ＩＮＦ１１による１つめのデータ転送の終了後、ＶＡＲに格納したアドレスにデータ転送情報ＩＮＦ１１をライトするとともに、アドレスのインクリメントを行い、データ転送情報ＩＮＦ１１を格納した次のアドレスをＶＡＲに保持する。
【００９１】
分岐モードでは、データ転送情報ＩＮＦ１１が更新されないので、実際のライトは行わず、ＤＴＣ３内部でアドレス（ＶＡＲ）のインクリメントのみを行うようにする。
【００９２】
ＶＡＲと判定データに１６を乗算したものとをＡＬＵ３５で加算して、データ転送情報ＩＮＦ２２の先頭アドレスを得る。
【００９３】
なお、判定データに１６を乗算せずに、判定データにＶＡＲを加算してもよい。これによれば、データ転送情報が可変長である場合でも判定データの設定によって対応できる。
【００９４】
複数のコマンドないしパラメータに対し、同一のデータないしデータ転送情報ＩＮＦ１２を使用することもできる。例えば、ＣＰＵに委ねるべき複数のコマンドに対しては、データ転送情報ＩＮＦ１２においてノーオペレーションモードを指定し、ＤＴＥビットを「０」にクリアして、ＣＰＵに割り込みを要求するようにする。
【００９５】
また、例えば、ステータス要求コマンドに対応したパラメータに「０」を設定した場合、データ転送情報ＩＮＦ１１に連続する領域のデータ転送情報ＩＮＦ１２に、所定のステータスレジスタの所定の送信データレジスタへのデータ転送などを設定するようにする。ＣＰＵの処理を必要とせず、コマンドに対する応答をＤＴＣのみで実現できる。
【００９６】
以上、本構成によれば、入力データに対応した出力データを、テーブルを参照して得ることによって、制御に対応した制御を実現できる。また、テーブルを利用することで、制御に対応した制御を行うために要する専用のハードウェアを最小限にすることができる。また、入力データの有効なビットを指定する（ＤＲとの論理積、およびシフト）ことで、テーブルの情報量を小さくすることができる。
【００９７】
また、本構成によれば、イベントに呼応した通常のデータ転送（通常データ転送）機能と、テーブル参照を行うデータ転送（テーブル参照）機能を、１つのハードウェアで実現できる。これらの機能は、データ転送情報で切り替えることができる。つまり、１回のデータ転送に必要な分だけ専用のハードウェアを設ければ足りる。よって、機能の追加により、使用するデータ転送情報の量が増え、その結果ハードウェア規模が増えても、半導体装置（マイクロコンピュータ）全体の物理的な規模の増加を抑制することができる。換言すれば、通常のデータ転送機能と、テーブル参照を行うデータ転送機能とを、１つのハードウェアで実現できるので、半導体装置（マイクロコンピュータ）の物理的な規模の増加を抑制することができる。また、割込みコントローラやＤＴＣベクタなどを共通化して、ハードウェア構成を簡略化することができる。
【００９８】
本構成では、ＣＲを無効とする指定を行うことができる。これにより、所定回数のデータ転送を行うこととは別に、半導体装置（マイクロコンピュータ）の状態に応じた制御を任意の回数実行することができる。その結果、データ転送情報を短縮して、ＤＴＣ動作の高速化と、メモリの利用効率の向上と、を実現できる。また、ＣＲを無効とすることで、データ転送情報の更新を行わない、すなわち、データ転送情報の書き戻しを不要とすることができる。
【００９９】
本構成によれば、ＤＴＣがＣＰＵに代わって、データ転送やテーブル参照を実行可能である。これにより、ＣＰＵに割り込みを要求する頻度を低減し、ＣＰＵを低消費電力状態とする期間を長くすることができる。また、ＣＰＵが割り込み処理にあたって実行すべき例外処理、スタックの退避・復帰操作、及び、復帰命令の実行を不要とすることができ、プログラムの簡略化やシステムの効率化に寄与することができる。また、イベントの発生から所要の動作の実行までの時間を短縮し、いわゆる応答性を向上することができる。更に、ＤＴＣは、ＣＰＵより論理規模が小さく、かつ高速に処理を行うことができる。これにより、ＤＴＣ動作中にＣＰＵを低消費電力状態とすることで、半導体装置（マイクロコンピュータ）の低消費電力化を実現することができる。
【０１００】
また、本実施の形態で説明したデータ転送装置は、特に使用用途は限定されず、ＲＡＭなどの汎用的な記憶装置にデータ転送情報を格納できるものである。このようなデータ転送装置には、以下の利点がある。
（１）データ転送の数を増やすことができる。いわゆるＤＭＡ（Direct Memory Access）コントローラのように、データ転送情報をデータ転送装置自身の専用のハードウェアとして持つ方式では、実装されたハードウェアによってデータ転送の数が制限される。これに対し、データ転送装置は、データ転送情報を使用用途の限定されないＲＡＭに格納するので、データ転送の数を増やすことが容易であり、利用者の種々の使用方法に対応することができる。
（２）いわゆるＤＭＡコントローラのように、起動要因の選択をデータ転送装置自身の制御レジスタによる指定およびマイクロコンピュータのインタフェースとして実装する方式では、多くの割り込みないしイベントに対応するのが困難である。これに対し、データ転送装置は、割り込み要因を利用して、ＣＰＵに割り込みを要求するか、ＤＴＣにデータ転送を要求するかを選択することができる。これにより、多くの割り込みないしイベント発生に対して、データ転送を行うことができる。
（３）チェイン動作など１回の起動時に実行するデータ転送の数を増やすことができ、異なるデータ転送を組み合わせて機能を実現できる。
（４）データ転送情報の構成を変更できる。また、データ転送情報を構成するデータの増減ができる。
（５）専用のハードウェアは、最低限（１回）のデータ転送に必要な分をもうければよい。そのため、ＭＣＵの機能を追加して、ハードウェア規模が増えても、ＭＣＵ全体の物理的な規模の増加を抑制することができる。
（６）データ転送装置自身の専用のハードウェアとして、制御レジスタなどを持たないため、ＣＰＵからのライトとの競合など、複雑な動作条件を考慮する必要がない。よって、ＭＣＵの物理的な規模の増加を抑止することに寄与できる。
【０１０１】
実施の形態２
実施の形態２にかかるマイクロコンピュータについて説明する。本実施の形態では、テーブル参照モードがシフトモードである場合のＭＣＵ１００の動作について説明する。図７に、シフトモードでのデータ転送を示す。ＴＬＵビットが「１」かつＳＦＴビットが「１」の場合、テーブル参照モードはシフトモードとなる。
【０１０２】
ＣＰＵ１は、所要のデータ転送情報を、所定の転送情報アドレス領域にライトしておく。テーブルデータとして、当該データ転送情報でライトするデータ（出力データとも称する）、例えば、速度パラメータを用意しておく。この状態で、割り込み要因が発生し、ＤＴＣ３が起動されると、対応するベクタ領域から、データ転送情報先頭アドレスをリードする（ＶＲステート）。
【０１０３】
リードしたアドレスに基づいて、データ転送情報配置領域からデータ転送情報ＩＮＦ２１をリードする（ＩＲステート）。シフトモードでは、データ転送情報ＩＮＦ２１は、ＭＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲである。
【０１０４】
ＳＡＲ１で指定したアドレスから、ＩＳｚ［１：０］ビットで指定したデータサイズのデータをリードする（ＤＲステート）。ここでは、リードしたデータをシフトデータと称する。
【０１０５】
ＡＬＵ３５は、リードしたシフトデータを、Ｓｚビット［１：０］で指定した転送データサイズ（テーブルのデータサイズ）に応じて、１、２、４倍し、又は、０、１、２ビットだけシフトする演算を行う。シフト量は、必要に応じて、ＳＦ［２：０］ビットで指定することができる。そして、演算結果をＳＡＲ２に加算して転送元アドレスとして使用する。ＤＴＣ３は、ＳＡＲ２の内容として、加算結果をセットする。
【０１０６】
ＳＡＲ２で指定した転送元アドレスから転送データをリードし（ＳＲステート）、ＤＡＲで指定した転送先アドレスにライトする（ＤＷステート）。転送先アドレスは、例えばタイマなどとされる。
【０１０７】
その後、データ転送情報の内で更新が行われたもの、具体的には、ＳＡＲ２を元のアドレスにライトする（ＩＷステート）。
【０１０８】
図８に、シフトモードで使用するテーブルの指定方法の一例を示す。例えば、モータの速度を指定するデータの制御において、モータを駆動するタイマに速度データを与える場合を想定する。この速度パラメータは、予め計算しておき、テーブルとしてＲＯＭに格納しておく。そのアドレスはＳＡＲ２で指定するものとする。この速度パラメータは、例えば１６ビットであり、昇順に速度が大きくなるようにする。
【０１０９】
Ｓｚ［１：０］ビットでワードサイズを指定し、入力データ（シフトデータ）を２倍してＳＡＲ２に加算する。初期設定の段階では、ＳＡＲ２はパラメータ０を指定するようにする。
【０１１０】
モータを駆動する必要が生じた場合は、シフトデータに基づき、所定の速度パラメータ、例えばパラメータｍをタイマに転送する。別のタイマやアナログ入力でモータの状態を監視し、加速が十分と判断したならば、負方向のシフトデータ、すなわち、より速度の遅い速度パラメータ（パラメータｎ）を得て、これをタイマに転送する。
【０１１１】
この例では、例えばマイクロコンピュータの制御するモータの状態をＡ／Ｄ変換器（アナログモジュール９に相当）で入力する。この入力を変換完了割り込みとして、ＤＴＣ３を起動できる。そして、Ａ／Ｄ変換器での変換結果をシフトデータとして使用し、モータを駆動するタイマに速度データ（出力データ）を与えることができる。モータの状態に対応した速度データは、予め計算してテーブルとしてＲＯＭに格納しておくので、実動作状態においては演算を行う必要はなく、テーブルを参照すればよい。
【０１１２】
上記説明した様に、シフトモードを用いることで、マイクロコンピュータの制御対象の状態をフィードバックしたデータ転送を行うことができる。
【０１１３】
実施の形態３
実施の形態３にかかるマイクロコンピュータについて説明する。本実施の形態では、テーブル参照モードがオフセットモードである場合のＭＣＵ１００の動作について説明する。図９に、オフセットモードでのデータ転送を示す。ＴＬＵビットが「１」、かつ、ＯＦＭビットが「１」の場合、テーブル参照モードはオフセットモードとなる。
【０１１４】
まず、シフトモードの場合と同様に、ＶＲステート、ＩＲステートと遷移する。オフセットモードでのデータ転送情報ＩＮＦ３１は、ＭＲ、ＤＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲである。
【０１１５】
ＳＡＲ１で指定したアドレスから、データをリードする（ＤＲステート）。ここでは、リードしたデータをオフセットデータと称する。
【０１１６】
ＤＲには、リードしたオフセットデータの有効なビットを指定するマスクデータを保持しておく。例えば、オフセットデータが３２ビットで、上位８ビットと下位４ビットを無視する場合は、マスクデータとして「００ＦＦＦＦＦ０」をセットする。なお、上位８ビットを無視したので、符号拡張を行うようにするとよい。また、下位４ビットを無視したので、一旦４ビット右シフトを行う。そして、Ｓｚ［１：０］ビットで指定したサイズに応じて、０、１、２ビットだけ左シフトを行う。左シフト終了後の結果を、ＳＡＲ２に加算して、加算結果を転送元アドレスとして使用する。ＤＴＣ３は、ＳＡＲ２の内容として、加算結果をセットする。
【０１１７】
ＳＡＲ２で指定した転送元アドレスから転送データをリードし（ＳＲステート）、ＤＡＲで指定した転送先アドレスにライトする（ＤＷステート）。
【０１１８】
その後、ＳＡＲ２の更新、すなわち、データ転送情報の内で更新が行われたＳＡＲ２を元のアドレスにライトすることなく、処理を終了する（ＩＷステート）。
【０１１９】
図１０に、オフセットモードで使用するテーブルの指定方法の一例を示す。テーブルの構造は、シフトモードの場合と同様とすることができる。
【０１２０】
ＳＡＲ２は、テーブルの基準アドレスを保持する。図１０では、アドレス領域の中央を基準アドレス（パラメータｍ）としているが、先頭アドレスなどの他のアドレスを基準アドレスとしてもよい。入力データ（オフセットデータ）に基づくオフセットを基準アドレスに加算して、出力データ（パラメータｎ）が得られる。
【０１２１】
そして、入力データの有効なビットを指定する（ＤＲとの論理積）ことで、必要なテーブルを小さくすることができる。
【０１２２】
実施の形態４
実施の形態４にかかるマイクロコンピュータについて説明する。本実施の形態では、テーブル参照モードを応用したＰＩＤ制御を行う場合のＭＣＵ１００の動作について説明する。本実施の形態では、テーブル参照モードとして、比例モード（Ｐ）、積分モード（Ｉ）及び微分モード（Ｄ）を用いる。そして、比例モード、積分モード及び微分モードでのデータ転送結果を転送モードの１つであるブロック加算モードでのデータ転送で加算することで、ＰＩＤ制御を実現する。以下、各テーブル参照モードとブロック加算モードでのデータ転送について説明する。
【０１２３】
比例モード
比例モードについて説明する。図１１に、比例モードでのデータ転送を示す。ＴＬＵビットが「１」、かつ、ＰＲＭビットが「１」の場合、テーブル参照モードは比例モードとなる。
【０１２４】
まず、シフトモードの場合と同様に、ＶＲステート、ＩＲステートと遷移する。比例モードのデータ転送情報ＩＮＦ４１は、ＭＲ、ＤＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲである。
【０１２５】
ＳＡＲ１で指定したアドレスから、データをリードする（ＤＲステート）。ここでは、リードデータを現在値データと称する。
【０１２６】
ＤＲには、目標値データを保持しておく。そして、現在値データと目標値データとの偏差を求める。そして、Ｓｚ［１：０］ビットで指定したサイズに応じて、０、１、２ビットだけ左シフトを行う。左シフト終了後の結果をＳＡＲ２に加算して、加算結果を転送元アドレスとして使用する。ＤＴＣ３は、ＳＡＲ２の内容として、加算結果をセットする。
【０１２７】
その後、オフセットモードと同様に、ＳＲステート、ＤＷステートと遷移する。
【０１２８】
その後、ＳＡＲ２の更新、すなわち、データ転送情報の内で更新が行われたＳＡＲ２を元のアドレスにライトすることなく、処理を終了する（ＩＷステート）。
【０１２９】
現在値データは、Ａ／Ｄ変換器（アナログモジュール９に相当）の変換結果ないしタイマの位相計数などによって得ることができる。ＤＴＣ３は、Ａ／Ｄ変換器の変換終了割り込みやインターバルタイマ（タイマ７に相当）割り込みなどによって起動することができる。
【０１３０】
比例モードでは、入力データである制御対象の現在値と目標値との偏差に応じた出力データを、テーブルを参照して得ることができる。例えば、偏差が大きければ出力データを大きく、偏差が小さければ出力データを小さくするといった比例制御を実現することができる。
【０１３１】
微分モード
次いで、微分モードについて説明する。図１２に、微分モードでのデータ転送を示す。ＴＬＵビットが「１」かつＤＲＭビットが「１」の場合、テーブル参照モードは微分モードとなる。
【０１３２】
まず、シフトモードの場合と同様に、ＶＲステート、ＩＲステートと遷移する。微分モードのデータ転送情報ＩＮＦ５１は、ＭＲ、ＤＲ、ＳＡＲ１、ＳＡＲ２及びＤＡＲである。
【０１３３】
ＳＡＲ１で指定したアドレスから、現在値データをリードする（ＤＲステート）。
【０１３４】
ＤＲには前回の（古い）現在値データを保持しておき、リードした新しい現在値データと前回の現在値データとの比較を行う。この減算結果は微分値（速度）に相当する。そして、Ｓｚ［１：０］ビットで指定したサイズに応じて、０、１、２ビットだけ左シフトを行う。左シフト終了後の結果をＳＡＲ２に加算して、加算結果を転送元アドレスとして使用する。ＤＴＣ３は、ＳＡＲ２の内容として、加算結果をセットする。ＤＲの内容を、リードした新しい現在値データに置き換える。
【０１３５】
その後、オフセットモードと同様に、ＳＲステート、ＤＷステートと遷移する。
【０１３６】
その後、データ転送情報の内で更新が行われたもの、具体的には、ＤＲ（リードした新しい現在値データ）を元のアドレスにライトする（ＩＷステート）。
【０１３７】
微分モードによれば、入力データである制御対象の現在値の２回の変化（微分値）に応じた出力データを、テーブルを参照して得ることができる。例えば、変化が大きければ出力データを小さく、変化が小さければ出力データを大きく、といった微分制御が実現できる。
【０１３８】
積分モード
次いで、積分モードについて説明する。図１３に、積分モードでのデータ転送を示す。ＴＬＵビットは「１」にセットされる。積分モードでは、チェイン動作により結合された２つのデータ転送を行う。ＴＭＤ［１：０］ビットは「０１」（リピートモード）にセットされ、ＮＸＴＥ１ビットは「１」にセット（チェイン動作）される。
【０１３９】
まず、１つめのデータ転送を行う。このときのデータ転送情報ＩＮＦ６１は、ＭＲ、ＤＲ、ＳＡＲ１、ＤＡＲ及びＣＲである。このとき、ＤＲＥビットは「１」にセットされる。
【０１４０】
シフトモードの場合と同様に、ＶＲステート、ＩＲステートと遷移する。
【０１４１】
ＳＡＲ１で指定したアドレスから、現在値データをリードする（ＳＲステート）。
【０１４２】
ＤＲには目標値データを保持しておき、リードした現在値データとの減算を行う。そして減算結果をＤＡＲが指定するアドレスにライトする（ＤＷステート）。このライトは、リピートモードと同様の動作にて行う。これにより、ＣＲのＴＣＲＨで指定した数だけ（図１３では４個）、現在値と目標値との偏差データ（偏差ｎ〜偏差（ｎ＋３））を蓄積する。
【０１４３】
その後、データ転送情報の内で更新が行われたもの、具体的には、ＤＡＲ及びＣＲを元のアドレスにライトする（ＩＷステート）。
【０１４４】
次いで、２つめのデータ転送を行う。このときのデータ転送情報ＩＮＦ６２は、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲである。このとき、ＩＮＭビットが「１」にセットされる。
【０１４５】
データ転送情報配置領域からデータ転送情報ＩＮＦ６２をリードする（ＩＲステート）。データ転送情報ＩＮＦ６２は、データ転送情報ＩＮＦ６１に連続したアドレスからリードされる。
【０１４６】
ＳＡＲ１で指定したアドレスから、現在値と目標値との偏差データを、ブロック転送モードと同様に、ＳＡＲ１をインクリメント又はデクリメントし、ＴＣＲＨをデクリメントしながら、ＴＣＲＬで指定した回数分リードする（ＤＲステート）。そして、ＴＣＲＨが「０」になると、ＳＡＲ１及びＴＣＲＨの内容を、所期設定値に戻す。このとき、データサイズはＩＳｚ［１：０］ビットで指定される。
【０１４７】
リードした偏差データをＤＴＣ３内部で加算し、加算した数に応じて除算又は右シフトを行う。除算又は右シフトは、加算したデータ数（ＴＣＲＬの内容）などに応じて自動的に行うように構成してもよいし、ＳＦ［２：０］ビットで指定するようにしてもよい。除算又は右シフトした結果を、Ｓｚ［１：０］ビットで指定したサイズに応じて、０、１、２ビットだけ左シフトする。左シフトした結果を、ＳＡＲ２に加算して、転送元アドレスとして使用する。
【０１４８】
ＳＡＲ２で指定した転送元アドレスから転送データをリードする（ＳＲステート）。そして、リードしたデータをＤＡＲで指定した転送先アドレスにライトする（ＤＷステート）。
【０１４９】
その後、ＳＡＲ２の更新、すなわち、データ転送情報の内で更新が行われたＳＡＲ２を元のアドレスにライトすることなく、処理を終了する（ＩＷステート）。
【０１５０】
なお、データ転送情報ＩＮＦ６１による１つめのデータ転送でライトし、データ転送情報ＩＮＦ６２による２つめのデータ転送でリードする領域は、動作開始前に初期化を行っておくようにする。
【０１５１】
積分モードによれば、入力データである制御対象の現在値と目標値との偏差の一定時間の累積に応じた出力データを、テーブルを参照して得ることができる。例えば、累積値が大きければ出力データを大きく、累積値が小さければ出力データを小さく、といった積分制御を行うことができる。
【０１５２】
また、ＤＲに設定した目標値データとの減算は、データ転送情報ＩＮＦ６１による１つめのデータ転送では行わず（ＤＲＥ＝０）、データ転送情報ＩＮＦ６２による２つめのデータ転送にて行う（ＤＲＥ＝１）ようにしてもよい。
【０１５３】
ブロック加算モード
続いて、データの転送モードの１つであるブロック加算モードについて説明する。図１４に、転送モードがブロック加算モードである場合のデータ転送を示す。ブロック加算モードでは、ＴＬＵビットが「０」にクリア（通常データ転送機能）され、ＴＭＤ１及びＴＭＤ０ビットが「１１」（ブロック加算モード）にセットされる。
【０１５４】
ＤＴＣ３が起動されると、データ転送情報先頭アドレスをリード（ＶＲステート）し、データ転送情報配置領域からデータ転送情報をリードする（ＩＲステート）。ブロック加算モードでのデータ転送情報は、ＭＲ、ＳＡＲ２、ＤＡＲ及びＣＲである。
【０１５５】
ＳＡＲ２で指定したアドレスから、ブロック転送モードと同様に、ＳＡＲ２をインクリメント又はデクリメントし、ＴＣＲＨをデクリメントしながら、ＴＣＲＬで指定した回数（図１４では３回）分リードする（ＳＲステート）。ＴＣＲＨが０になると、ＳＡＲ２及びＴＣＲＨの内容を所期設定値に戻す。このときデータサイズはＳｚ［１：０］ビットで指定される。
【０１５６】
リードしたデータは、ＤＴＣ３内部で加算し、ＤＡＲで指定した転送先アドレスにライトする（ＤＷステート）。
【０１５７】
その後、ＳＡＲ２の更新、すなわち、データ転送情報の内で更新が行われたＳＡＲ２を元のアドレスにライトすることなく、処理を終了する（ＩＷステート）。
【０１５８】
比例モード、積分モード、微分モードの転送先アドレスを、ＲＡＭ上の連続したアドレスにし、これをブロック加算モードで重畳し、モータ制御などを行う、所要のタイマにライトするようにできる。例えば、インターバルタイマでＤＴＣを起動し、比例モード、積分モード、微分モード、ブロック加算モードを、チェイン動作（最後のブロック加算モード以外のＮＸＴＥ１ビットを１にセット）で連続して実行するようにすることができる。入力データに対応した、ＰＩＤ制御を実現することができる。
【０１５９】
実施の形態５
実施の形態５にかかるマイクロコンピュータについて説明する。本実施の形態では、実施の形態１にかかる分岐モードの変形例について説明する。図１５に、分岐モードの変形例でのデータ転送を示す。この変形例では、テーブルに用意したデータの最上位ビット（ＭＳＢ）によって、チェイン動作の有無を選択する。
【０１６０】
データ転送情報ＩＮＦ７１は、ＭＲ、ＤＲ、ＳＡＲ１及びＳＡＲ２とする。初期設定において、又は、ＣＲが「０」であるといった、一連の処理が終了した後の再設定の処理において、ＤＲを「００００００００」としておく。
【０１６１】
ＳＡＲ１で指定したアドレスから、ＩＳｚ［１：０］ビットで指定したデータサイズのシフトデータをリードする（ＤＲステート）。リードしたシフトデータとＳＡＲ２とに基づいて、転送元アドレスを生成する。
【０１６２】
ＳＡＲ２で指定した転送元アドレスから転送データをリードし、リードデータはＤＲに格納するとともに、テーブルをリードしたことを示すステータスとしてＤＲのビット３１を「１」にセットする（ＳＲステート）。なお、転送データのライトは行わない（ＤＷステート）。
【０１６３】
データ転送情報の内で更新が行われたもの、具体的には、ＤＲを元のアドレスにライトする（ＩＷステート）。
【０１６４】
リードしたテーブルデータのＭＳＢが「１」にセットされている場合について説明する。リードしたテーブルデータであるＤＲに格納したデータ（ビット３１は無視する）と、ＶＡＲとから、実施の形態１と同様に、チェイン動作で起動するデータ転送情報の先頭アドレスを生成する。生成した先頭アドレスに対応するデータ転送情報ＩＮＦ７２をリードし、これに基づきデータ転送を行う。
【０１６５】
次いで、リードしたテーブルデータのＭＳＢが「０」にクリアされている場合について説明する。この場合、チェイン動作を行わずに処理を終了する。
【０１６６】
次に、同一の起動要因でＤＴＣ３が起動され、データ転送情報ＩＮＦ７１をリードしたとき、ＴＬＵビット及びＳＦＭビットがそれぞれ「１」にセットされ、かつ、ＤＲのビット３１が「１」にセットされている場合、データ転送を行わず、前記同様に、ＤＲに格納したデータとＶＡＲとに基づいて、チェイン動作を開始する。前記同様に、データ転送情報ＩＮＦ７２をリードし、これに基づき、データ転送を行う。
【０１６７】
例えば、シリアルコミュニケーションインタフェース（ＳＣＩ）などの通信手段を介して、コマンドを入力し、受信完了割り込みでＤＴＣを起動し、これを判定データとしてテーブル参照を行う場合、直ちにコマンドに対応したデータ転送を実行可能な場合と、次の受信完了割り込みを待たなければならない場合がある。
【０１６８】
直ちにコマンドに対応したデータ転送を実行可能な場合は、テーブルデータのＭＳＢを「１」にセットしておき、チェイン動作で、コマンドに対応したデータ転送を実行することができる。
【０１６９】
次の受信完了割り込みを待たなければならない場合は、テーブルデータのＭＳＢを「０」にクリアしておき、１回目のＤＴＣ起動時には、テーブルデータをＤＲに格納し、チェイン動作すなわちデータ転送を行わずに一旦終了する。２回目のＤＴＣ３起動時には、データ転送情報ＩＮＦ３１をリードして、ＴＬＵビット、ＳＦＭビット及びＤＲのビット３１がいずれも「１」にセットされているので、テーブル参照を行わず、コマンドに対応した、次のデータ転送情報ＩＮＦ３２をリードし、これに基づき、データ転送を行う。
【０１７０】
２回目のＤＴＣ起動時には、テーブルデータのＭＳＢによらず、同一の動作にできる。
【０１７１】
ＤＲに、リードしたテーブルデータを格納するほか、チェイン動作の次のデータ転送情報先頭アドレスを格納するようにしてもよい。テーブルをリードしたことを示すステータスは、ＤＲを使用するほか、ＭＲの適切なビットを使用してもよい。
【０１７２】
図１６に、分岐モードの変形例でのＤＴＣの状態遷移図を示す。
ＩＲステートにおいて、ＴＬＵビット、ＳＦＭビット、ＤＲのビット３１がいずれも「１」にセットされていれば、再度ＩＲステートに遷移し、次のデータ転送情報のリードを行う。
【０１７３】
以上、本構成によれば、テーブル参照モードが分岐モードである場合に、リードしたデータに含まれる情報に基づいて、チェイン動作の実行の是非を判断することが可能となる。
【０１７４】
実施の形態６
実施の形態６にかかるマイクロコンピュータについて説明する。本実施の形態では、テーブル参照モードがアドレス演算モードである場合のＭＣＵ１００の動作について説明する。図１７に、アドレス演算モードでのデータ転送を示す。ＴＬＵビットが「１」かつＡＥＭビットが「１」の場合、テーブル参照モードはアドレス演算モードとなる。
【０１７５】
ＤＴＣ３が起動されると、対応するベクタ領域から、データ転送情報先頭アドレスをリードする（ＶＲステート）。
【０１７６】
リードしたアドレスに基づいて、データ転送情報配置領域からデータ転送情報ＩＮＦ８１をリードする（ＩＲステート）。このときのデータ転送情報ＩＮＦ８１は、ＭＲ、ＳＡＲ１、ＳＡＲ２、ＤＡＲ及びＣＲである。
【０１７７】
ＳＡＲ１で指定したアドレスから、ＩＳｚ［１：０］ビットで指定したデータサイズのデータをリードする（ＤＲステート）。ここでは、リードしたデータをアドレス演算データと称する。
【０１７８】
リードしたアドレス演算データは、ＡＬＵ３５で、Ｓｚ［１：０］ビットで指定した転送データサイズに応じて１、２、４倍し、又は０、１、２ビットだけシフトする演算を行う。演算結果を、一旦、ＤＴＣ３内部（例えばＤＲ）に保持する。
【０１７９】
ＳＡＲ２で指定した転送元アドレスから転送データをリードし（ＳＲステート）、ＤＡＲで指定した転送先アドレスにライトする（ＤＷステート）。そして、ＣＲのデクリメントを行う。
【０１８０】
ＤＩＲビットが「０」のときは、ＳＭ［１：０］ビットで指定されたインクリメント又はデクリメントに代わり、シフトしたアドレス演算データをＳＡＲ２に加算又は減算し、結果をＳＡＲ２に格納する。
【０１８１】
ＤＩＲビットが「１」のときは、ＤＭ［１：０］ビットで指定されたインクリメント又はデクリメントに代わり、シフトしたアドレス演算データをＤＡＲに加算又は減算し、結果をＤＡＲに格納する。
【０１８２】
その後、データ転送情報ＩＮＦ８１の内で更新が行われたもの、具体的には、ＳＡＲ２又はＤＡＲとＣＲとを、元のアドレスにライトする（ＩＷステート）。
【０１８３】
上記のデータ転送を、ＣＲ（ＴＣＲＨ）で指定した回数だけ繰り返す。
【０１８４】
図１８に、アドレス演算モードで使用するテーブルの指定方法の一例を示す。ｉ番目のデータ転送にてデータＤｉのデータ転送を行う場合、アドレス演算データ（テーブル）からパラメータＰｉをリードする。パラメータＰｉに基づき、データＤｉのデータ転送後に、転送元アドレス（ＳＡＲ２）または転送先アドレス（ＤＡＲ）に対して演算を行う。
【０１８５】
次のｉ＋１番目のデータ転送で、データＤｉ＋１のデータ転送を行うとき、データＤｉとデータＤｉ＋１のアドレスは連続ではなく、パラメータＰｉに基づいて、間隔が挿入される。
【０１８６】
この間隔は、各データ転送に対して、アドレス演算データ（テーブル）に含まれるパラメータで指定することができる。このため、ＤＴＣ３は、テーブルを参照することで、不規則な間隔で配置されたデータを連続してデータ転送することができる。
【０１８７】
実施の形態７
実施の形態７にかかるマイクロコンピュータについて説明する。本実施の形態では、ＭＣＵ１００のＩＮＴ２の具体例について説明する。図１９に、割り込みコントローラ（ＩＮＴ）２のブロック図を示す。
【０１８８】
ＩＮＴ２は、割り込み／ＤＴＣ判定回路５１、ＤＴＣ許可レジスタ（ＤＴＥＲとも称する）５２、優先順位判定回路５３、ラッチ回路５４及びデコーダ回路５５を有する。
【０１８９】
ＭＣＵ１００の割り込み要因には、内部割り込み及び外部割り込みの２種類があり、それぞれ割り込み要因フラグを有する。割り込みの要因フラグは、タイマ、通信、アナログの機能ブロックが所定の状態になったときに、「１」にセットされる。例えば、外部割り込み要因フラグは、外部割り込み入力端子が所定のレベルになったとき、又は、所定の信号変化が発生したときに「１」にセットされる。割り込み要因フラグは、ＣＰＵ１のライト動作によって「０」にクリアされるほか、ＤＴＣ３によるデータ転送が終了したときに「０」にクリアされる。
【０１９０】
割り込み要因フラグの各ビットの出力は、割り込み許可回路に入力される。この割り込み許可回路には、さらに割り込み許可レジスタの内容、すなわち割り込み許可ビットが入力される。割り込み許可レジスタは、ＣＰＵ１からリード／ライト可能なレジスタで、対応する割り込みを許可するか、禁止するか、を選択する。
【０１９１】
割り込み要因フラグが「１」にセットされ、割り込み許可ビットが「１」にセットされていると割り込みが要求される。割り込みを要求である割り込み許可回路の出力は、割り込み／ＤＴＣ判定回路５１に入力される。
【０１９２】
また、割り込み／ＤＴＣ判定回路５１には、ＤＴＣ許可レジスタ（ＤＴＥＲとも称する）５２の内容が入力される。割り込み／ＤＴＣ判定回路５１は、割り込みが要求されたとき、ＤＴＣ３を起動するか、ＣＰＵ１に割り込みを許可するかを選択する。
【０１９３】
ＤＴＣ許可レジスタ５２の割り込み要因に対応したビットが「１」にセットされていると、割り込み／ＤＴＣ判定回路５１は、ＤＴＣ３の起動を要求し、ＣＰＵ１の割り込みを要求しない。ＤＴＣ許可レジスタ５２の割り込み要因に対応したビットが「０」にクリアされていると、割り込み／ＤＴＣ判定回路５１は、ＣＰＵ１の割り込みを要求し、ＤＴＣ３の起動を要求しない。割り込み／ＤＴＣ判定回路５１は、起動要求を優先順位判定回路５３に出力する。
【０１９４】
優先順位判定回路５３は、ＣＰＵ１の割り込み要求、ＤＴＣ３の起動要求のそれぞれについて、複数の割り込み要求が発生している場合に優先順位を判定する。ＣＰＵ１の起動要求の優先順位判定を行う際には、マスクレベルの判定を併せて行うことができる。ＣＰＵ１の起動要求の優先順位の判定は、プライオリティレジスタや割り込みマスクレベルなどに従って制御される。
【０１９５】
優先順位判定回路５３は、最高の優先順位を有する起動要求を選択し、ベクタ番号を生成する。ＣＰＵ１の起動要求を選択した場合、優先順位判定回路５３は、ＣＰＵ１の割り込み要求ＣＰＵＩＮＴとベクタ番号ＣＰＵＶＥＣとを生成する。ＤＴＣ３の起動要求を選択した場合、ＤＴＣ３の起動要求信号ＤＴＣＲＥＱとベクタ番号ＤＴＣＶＥＣとを生成する。起動要求信号ＤＴＣＲＥＱは、ＤＴＣ３に入力される。ベクタ番号ＤＴＣＶＥＣはラッチ回路５４に入力される。
【０１９６】
また、ラッチ回路５４には、ＤＴＣ動作開始信号及びＤＴＣ動作終了信号がＤＴＣ３から入力される。すなわち、ＤＴＣ３が動作を開始するとＤＴＣ動作信号が活性状態になり、ラッチ回路５４はベクタ番号ＤＴＣＶＥＣのラッチないし保持する。ＤＴＣ３のデータ転送が終了してＤＴＣ動作終了信号が活性状態になると、ラッチ回路５４によるラッチは解除される。
【０１９７】
ベクタ番号ＤＴＣＶＥＣとＤＴＣ動作終了信号とは、デコーダ回路５５に入力される。これにより、対応する割り込み要因フラグに対する要因クリア信号が活性状態になって、対応する割り込み要因フラグ又はＤＴＥビットがクリアされる。
【０１９８】
所要の割り込み要因でＤＴＣ３を起動する場合、ＣＰＵ１は予めデータ転送情報などを所要のアドレスにライトするとともに、当該割り込み要因に対応する割り込み許可ビットと、ＤＴＣ許可レジスタ５２の当該割り込み要因に対応するＤＴＥビットを「１」にセットしておく。
【０１９９】
当該割り込み要因フラグが「１」にセットされると、ＤＴＣ３が起動される。ＤＴＣ３が所定のデータ転送を実行している状態では、ＤＴＣ３はデータ転送毎に当該割り込み要因フラグを「０」にクリアする。このとき、ＣＰＵ１に割り込みは要求されない。
【０２００】
所定のデータ転送を終了すると、ＤＴＣ３はデータ転送後にＤＴＥビットを「０」にクリアする。このとき、当該割り込み要因フラグは「１」に保持され、ＤＴＥビットが「０」にクリアされているので、ＣＰＵ１に割り込みが要求される。ＣＰＵ１は、所定のデータ転送の終了に対応した処理を実行するとともに、データ転送情報やＤＴＥビットの再設定を行う。
【０２０１】
実施の形態８
実施の形態８にかかるマイクロコンピュータについて説明する。本実施の形態では、カメラを制御するカメラシステムに上述のＭＣＵを適用した例について説明する。図２０に、ＭＣＵを含むカメラシステム１０００のブロック図を示す。
【０２０２】
カメラシステム１０００は、カメラボディＭＣＵ１００１、カメラレンズＭＣＵ１００２、焦点モータ１００３、焦点モータの位置を検出するエンコーダ１００４を含む。このうち、カメラレンズＭＣＵ１００２には、実施の形態１〜７で説明したＭＣＵのいずれかが用いられる。
【０２０３】
カメラレンズＭＣＵ１００２は、焦点モータ駆動用のタイマＦ（ＴＦとも称する）、エンコーダ入力用のタイマＤ（ＴＤとも称する）、インターバルタイマ機能を持つタイマＩ（ＴＩとも称する）を含む。これらのタイマＦ、タイマＤ及びタイマＩは、それぞれ、タイマ７に相当する。カメラレンズＭＣＵ１００２には、焦点モータ用のテーブルが格納されたＲＯＭ４が含まれる（不図示）。また、オートフォーカスの許可や防振の許可などのスイッチを、入出力ポート（Ｉ／Ｏ）１０で入力する。
【０２０４】
カメラレンズＭＣＵ１００２は、カメラボディＭＣＵ１００１から、シリアルコミュニケーションインタフェース（ＳＣＩ、通信モジュール８に相当）などの１回線の通信手段を介して、コマンドとそれに伴うデータを受信する。この受信完了割り込みにより、ＤＴＣ３が起動する。
【０２０５】
ＤＴＣ３のテーブル参照モードを分岐モードとすることで、通信手段から入力したコマンドを解析し、コマンドに基づき所要のデータ転送を行う。
【０２０６】
入力したコマンド（例えばステータス要求コマンド）が、レンズの所定の状態（例えば、手振れ補正の許可スイッチの状態）の返信を求めている場合について説明する。この場合、分岐モードに対応するデータ転送情報によりカメラレンズＭＣＵ１００１の所定の機能ブロック（例えば、入出力ポート（Ｉ／Ｏ）の内容）を、ＳＣＩの送信データレジスタに転送することで、データの送信を行うことができる。そして、コマンドに対してチェイン動作を行うことで、ＣＰＵの処理を不要とし、かつ即座に所要の動作を完了できる。
【０２０７】
入力したコマンドが焦点合わせコマンドの場合、引き続き、目標位置を受信する。次の受信完了割り込み発生時に、目標位置を比例モードのＤＲに設定し、タイマＩによって、ＤＴＣを起動させる。そして、テーブルを参照して、所要の焦点モータ駆動を行うことができる。
【０２０８】
上記動作を行うにあたり、ＣＰＵ１はスリープないしスタンバイモードなどの低消費電力状態とすることができる。これにより、システムの低消費電力化に寄与できる。ＤＴＣ３はＣＰＵより論理規模が小さく、かつ高速に処理を行うことができるので、低消費電力化の効果を高めることができる。バッテリで駆動されるカメラシステムなどにおいては、低消費電力化が特に重要である。
【０２０９】
ズームレンズの場合、ズーム位置によって、焦点モータ駆動制御を変える必要も考えられる。この場合、テーブルを複数用意し、カメラボディＭＣＵ１００１から焦点合わせの指示と目標位置と使用するテーブルを受信する。そして、使用するテーブルに対応したアドレスにＳＡＲ２を設定することができる。
【０２１０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、データ転送情報は３２ビット単位としたが、データ転送情報は任意のビット単位とすることができる。データ転送情報の配置も任意に変更することができる。具体的には、アドレスレジスタのビット数は３２ビットに限定されるものではなく、ＣＰＵまたはマイクロコンピュータのアドレス空間に応じて変更でき、例えば１６Ｍバイトのアドレス空間であれば２４ビットとすればよい。ＭＲのビット配置を分割して、２４ビットのＳＡＲ及びＤＡＲと組み合わせてもよい。ＭＲのビット配置は任意でよく、ＳＦＭビット、ＯＦＭビット、ＰＲＭビット、ＤＲＭビット、ＩＮＭビット、ＢＲＭビット、ＮＯＰビットなどはエンコードするようにしてもよい。
【０２１１】
上述の実施の形態では、通常データ転送のときは、データ転送情報における転送元アドレスレジスタとして、ハードウェアとしてのＳＡＲ２を使用するものとしたが、これはＳＡＲ１であってもよい。また、データ転送情報に含まれる転送モード情報以外の配置は、任意に変更することができる。転送元アドレス情報は、転送先アドレス情報より前にリード可能に配置することが望ましい。
【０２１２】
ＣＰＵで動作するプログラムは、ＲＯＭに配置するほか、外部メモリに配置してもよい。同様に、ＣＰＵの作業領域であるメモリはＲＡＭに限らず、外部メモリとしてもよい。また、マイクロコンピュータは、ＲＯＭ及びＲＡＭの一方又は両方を内蔵しなくてもよい。 
【０２１３】
ＤＴＣのデータ転送情報、入力データブロック、係数データブロックについては、処理速度や消費電力などの点で、マイクロコンピュータ内蔵のＲＡＭに格納するのが有利であるものの、外部メモリに格納してもよい。
【０２１４】
上述の実施の形態では、データ転送情報をＲＡＭなどのメモリに配置するものとして説明した。しかし、いわゆるＤＭＡコントローラなどのように、データ転送情報を内部Ｉ／Ｏレジスタとして機能ブロック内に持つようにし、アドレス空間上に配置する構成とすることも可能である。
【０２１５】
上述の実施の形態では、データ転送情報をＲＡＭなどの記憶装置に格納する方式に基づき、説明を行った。しかし、使用できるデータ転送情報が実装されたハードウェアによって制限されるものの、いわゆるＤＭＡコントローラに対しても上述の実施の形態で説明したデータ転送を適用可能である。
【０２１６】
また、ＤＴＣのほかに、ＤＭＡコントローラなどの他のデータ転送装置を設けることもできる。ＤＴＣとＤＭＡコントローラの機能を１つの機能モジュールとすることもできる。
【０２１７】
ＤＴＣ、割り込みコントローラの具体的な回路構成については、上述の実施の形態で説明した機能と同等の機能を有する種々の回路構成に変更可能である。ＢＳＣや、バスやウェイトなどのバス動作の詳細については省略したが、これらは適宜実装可能である。マイクロコンピュータの構成についても、例示に過ぎず、適宜変更可能である。
【０２１８】
上述の実施の形態では、マイクロコンピュータついて説明したが、これは例示に過ぎない。上述の実施の形態で説明したＤＴＣは、データ処理装置、データ処理装置と独立した演算器を内蔵した半導体集積回路などの各種の装置に適用することができる。例えば、デジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体集積回路装置にも適用可能である。本発明は少なくとも、データ処理装置およびデータ転送装置を内蔵した半導体集積回路装置に適用することができる。
【０２１９】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０２２０】
１  中央処理装置（ＣＰＵ）
２  割り込みコントローラ（ＩＮＴ）
３  データ転送装置（ＤＴＣ）
４  ＲＯＭ
５  ＲＡＭ
６  バスコントローラ（ＢＳＣ）
７  タイマ
８  通信モジュール
９  アナログモジュール
１０  入出力ポート（Ｉ／Ｏ）
１１  内部バス
３１  ＤＴＣＣＮＴ
３２  ＢＩＦ
３３  ＶＧ  
３４  ＶＡＲ
３５  ＡＬＵ
３６  内部バス
５１  割り込み／ＤＴＣ判定回路
５２  割り込み許可レジスタ
５３  優先順位判定回路
５４  ラッチ回路
５５  デコーダ回路
１００  マイクロコンピュータ（ＭＣＵ）
１０００  カメラシステム
１００１  カメラボディＭＣＵ
１００２  カメラレンズＭＣＵ
１００３  防振モータ
１００４  センサ
ＡＤＣ  Ａ／Ｄ変換器
ＣＰＵＶＥＣ        ベクタ番号
ＤＴＣＲＥＱ        起動要求信号
ＤＴＣＶＥＣ        ベクタ番号
ＩＮＦ１１、ＩＮＦ１２、ＩＮＦ２１、ＩＮＦ３１、ＩＮＦ４１、ＩＮＦ５１、ＩＮＦ６１、ＩＮＦ６２、ＩＮＦ７１、ＩＮＦ８１、ＩＮＦ８２、ＩＮＦ９１  データ転送情報
ＣＲ  転送カウントレジスタ
ＤＡＲ  デスティネーションレジスタ
ＤＲ  データレジスタ
ＭＲ  モードレジスタ
ＳＡＲ１、ＳＡＲ２  ソースアドレスレジスタ
ＤＴＣＲＥＱ  データ転送要求信号
ＤＴＣＶＥＣ  ベクタ番号
【図１Ａ】
2018101448.tif 000005
【図１Ｂ】
2018101448.tif 000006
【図２】
2018101448.tif 000007
【図３】
2018101448.tif 000008
【図４】
2018101448.tif 000009
【図５】
2018101448.tif 000010
【図６】
2018101448.tif 000011
【図７】
2018101448.tif 000012
【図８】
2018101448.tif 000013
【図９】
2018101448.tif 000014
【図１０】
2018101448.tif 000015
【図１１】
2018101448.tif 000016
【図１２】
2018101448.tif 000017
【図１３】
2018101448.tif 000018
【図１４】
2018101448.tif 000019
【図１５】
2018101448.tif 000020
【図１６】
2018101448.tif 000021
【図１７】
2018101448.tif 000022
【図１８】
2018101448.tif 000023
【図１９】
2018101448.tif 000024
【図２０】
2018101448.tif 000025