(57)【要約】【課題】ＣＰＵの処理負荷が小さいデータ転送を実現すること。【解決手段】マイクロコンピュータ１は、中央処理装置（ＣＰＵ）１０とデータトランスファーコントローラ（ＤＴＣ）１２を備える。データトランスファーコントローラ（ＤＴＣ）１２は、記憶装置（ＲＡＭ１４）等から転送モード情報を含むデータ転送情報を読み出す。データトランスファーコントローラ（ＤＴＣ）１２は、転送モード情報を解析して、データ転送の転送元アドレス、転送先アドレス、転送回数、次に用いるデータ転送情報の少なくとも１つを変更する。【選択図】図１
2015090637.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、データ転送処理を行うデータ転送装置と、を備え、
前記データ転送装置は、
データ転送の制御内容を示す転送モード情報、転送元アドレス、転送先アドレス、転送回数を指定する転送カウントデータ、及びデータ情報の少なくとも一つを含む転送情報セットを格納するレジスタを備え、
前記転送情報セットを基にしたデータ転送を行うとともに、前記転送モード情報から転送モードを解析し、当該解析に応じて前記転送元アドレスから読み出したデータを利用して前記転送元アドレス、前記転送先アドレス、前記転送回数、次回のデータ転送で用いる前記転送情報セット、の少なくとも１つを変更する、半導体装置。
【請求項２】
前記半導体装置は、前記転送情報セットを複数格納し、前記データ転送装置及び前記中央処理装置からの読み書きが行われる記憶装置を備える、請求項１に記載の半導体装置。
【請求項３】
前記データ転送装置は、前記記憶装置から前記転送情報セットを読み出し、当該転送情報セットに基づいて所定のデータ転送を行った後に当該転送情報セットを前記記憶装置に書き戻す処理を処理単位とし、当該転送情報セットの中の前記転送カウントデータが示す回数だけ前記処理単位を繰り返し実行する、請求項１に記載の半導体装置。
【請求項４】
前記データ転送装置は、
前記記憶装置に格納された前記転送情報セットの前記転送モード情報をはじめに前記レジスタに読み出し、当該転送モード情報の解析に応じて当該転送情報セットの他のデータを読み出して前記レジスタに書き込む、請求項２に記載の半導体装置。
【請求項５】
前記データ転送装置は、
前記レジスタ内の前記データ情報を退避するデータ転送機能制御部を有し、
前記レジスタから前記転送情報セットの一部を前記データ転送機能制御部に退避し、前記データ転送機能制御部に退避したデータを用いて後に読み出した前記データ転送情報の転送元アドレス、転送先アドレス、転送回数の少なくとも１つを変更する、請求項１に記載の半導体装置。
【請求項６】
前記転送モード情報は、テスト転送を行うテスト転送モードであるか否かを指定するテスト転送モード情報を含み、
前記データ転送装置は、前記テスト転送モードが指定された場合、前記転送元アドレスを基に読み出したデータと前記レジスタ内の前記データ情報を比較し、当該比較に応じてデータ転送を連続して行うか否かを切り替える、請求項１〜請求項５のいずれか１項に記載の半導体装置。
【請求項７】
前記転送モード情報は、演算結果を累算するアキュムレートモードであるか否かを指定するアキュムレートモード情報を含み、
前記データ転送装置は、前記アキュムレートモードが指定された場合、前記レジスタ内の前記転送元アドレスを基に読み出したデータと前記レジスタ内の前記データ情報を用いた演算を行い、当該演算結果を前記記憶装置に書き戻す、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項８】
前記転送モード情報は、データ転送に用いる前記転送情報セットを切り替えるスイッチモードでの動作を行うかを指定するスイッチモード情報を含み、
前記データ転送装置は、前記スイッチモードである場合、前記転送元アドレスを基に読み出したデータに応じて連続して行うデータ転送に用いる前記転送情報セットを切り替える、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項９】
前記データ転送装置は、前記転送元アドレスを基に読み出したデータと前記レジスタ内の前記データ情報の比較を行い、当該比較結果に応じて前記中央処理装置が処理を実行する設定を行う、請求項８に記載の半導体装置。
【請求項１０】
前記転送モード情報は、データ転送元アドレスまたは転送先アドレスを調整するシフトモードでの動作を行うかを指定するシフトモード情報を含み、
前記データ転送装置は、前記シフトモードである場合、前記転送元アドレスを基に読み出したデータを前記データ転送機能制御部に退避し、前記記憶部から前記データ転送情報を再び読み出し、読み出した前記データ転送情報内の前記転送元データを退避したデータを用いて書き換えた後に前記レジスタ内の各データに基づいてデータ転送を行う、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１１】
前記転送モード情報は、データ転送先を動的に設定するアドレスロードモードでの動作を行うかを指定するＡＬＭ情報を含み、
前記データ転送装置は、前記レジスタ内の前記転送元アドレスを基に読み出したデータを前記レジスタの前記転送先データとして上書きする、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１２】
前記転送モード情報は、前記転送カウントデータを動的に設定するカウンタロードモードでの動作を行うかを指定するＣＬＭ情報を含み、
前記データ転送装置は、前記レジスタ内の前記転送元アドレスを基に読み出したデータを前記レジスタの前記転送カウントデータとして上書きする、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１３】
前記転送モード情報は、実行中のデータ転送処理に続いて次のデータ転送処理を行うかを判定するチェイン判定モードでの動作を行うかを指定するチェイン判定情報を含み、
前記データ転送装置は、前記チェイン判定モードである場合、前記レジスタ内の前記転送元アドレスを基に読み出したデータと前記レジスタ内の前記データ情報との比較を行い、当該比較に応じて次のデータ転送処理を行う、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１４】
前記データ転送装置は、データ転送処理の終了後に、前記中央処理装置に対して割込み処理を要求する、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１５】
前記中央処理装置は、前記記憶装置に対して前記データ転送装置が行うデータ転送にかかる前記データ転送情報を設定する、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１６】
外部装置からのデータ受信を行って受信データを前記記憶部に書き込む通信部と、
前記通信部の受信完了時に前記データ転送装置を起動する割込みコントローラと、更に備え、
前記データ転送装置は、前記記憶部から前記受信データを前記データ転送情報として読み出す、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１７】
前記中央処理装置は、前記データ転送装置がデータ転送を行っている間に低消費電力状態での動作を行うことを特徴とする請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１８】
前記中央処理装置が第１のチップに搭載され、前記データ転送装置が第２のチップに搭載されている、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項１９】
前記中央処理装置と前記データ転送装置が同一チップ上に搭載されている、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項２０】
中央処理装置と、データ転送処理を行うデータ転送装置と、を備え、
前記データ転送装置は、
データ転送の制御内容を示す転送モード情報、転送元アドレス、転送先アドレス、転送回数を指定する転送カウントデータ、及びデータ情報の少なくとも一つを含む転送情報セットを格納するレジスタを備え、
前記転送モード情報は、前記転送元アドレスを基に読み出したデータを使用して前記転送元アドレス、前記転送先アドレス、前記転送カウントデータ、次回のデータ転送で用いる前記転送情報セット、の少なくとも１つの変更を指定する情報を含む、
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えばデータ転送機能を有する半導体装置に関する。
【背景技術】
【０００２】
シングルチップマイクロコンピュータは、非特許文献１に記載されるように、中央処理装置（ＣＰＵ）、プログラム保持用のＲＯＭ（Read Only Memory）、データ保持用のＲＡＭ（Random Access Memory）、データや信号の入出力を行うための入出力回路、等の機能ブロックが一つの半導体基板上に形成される。シングルチップマイクロコンピュータは、機器制御に用いられる。
【０００３】
上述のシングルチップマイクロコンピュータの機器制御では、割込み等のイベントに応じてデータ転送を行う場合がある。中央処理装置（ＣＰＵ）が割り込み処理を行う場合には、処理の流れを切り替えるために、例外処理、スタックの退避や復旧、及び復帰命令の実行を要する。しかし中央処理装置（ＣＰＵ）の処理は、スタックの退避や復旧処理を要する。また中央処理装置（ＣＰＵ）の処理では、データ転送処理に要する処理の中で命令リード等の動作時間が大きくなる傾向がある。
【０００４】
上述の中央処理装置（ＣＰＵ）によるデータ転送の問題に鑑み、中央処理装置（ＣＰＵ）とはことなるハードウェアであるデータ転送装置をマイクロコンピュータ内に設ける技術が提案されている。特許文献１に記載のマイクロコンピュータは、内部にデータ転送装置を設けている。このデータ転送装置は、少ないハードウェアで多数の周辺処理装置（入出力回路）からの要求に応じてデータ転送を行うことを実現している。特許文献１に記載のマイクロコンピュータは、メモリ内で転送すべきデータが格納された位置を示す転送元アドレス等を含むデータ転送情報を格納する記憶装置（ＲＡＭ）を有している。また当該マイクロコンピュータは、データ転送に必要な全ての情報の記憶装置（ＲＡＭ）内での格納アドレスを保持するベクタテーブルを有している。データ転送装置は、データ転送起動要求があった場合、ベクタテーブルを参照する手段と、ベクタテーブルからデータ転送に必要な情報を取得する手段を有している。特許文献１は、少ないハードウェアでデータ転送を行うことを主題としており、データ転送の内容については深く言及されていない。
【０００５】
特許文献２は、データ転送装置内に予め設定したデータと転送対象のデータとの間で比較や簡単な演算を行う演算器を設けた構成を開示している。データ転送装置は、データの比較結果に応じて、所定回数のデータ転送を行わず、中央処理装置（ＣＰＵ）に処理を要求する。
【０００６】
特許文献３に開示のデータ転送装置は、データ転送に必要な情報が格納された記憶装置からの読み出しを行い、連続した複数回のデータ転送の実行を行う。なお、この技術は、チェイン転送とも呼称される。これにより当該データ転送装置は、データ転送の起動要因に応じて任意の回数のデータ転送を実行することができ、様々な用途に利用することができる。またチェイン動作により、システム全体の自由度を向上させることができる。また特許文献３のデータ転送装置は、リピート転送モード、データブロック転送モードの実行が可能である。
【０００７】
上述のようにマイクロコンピュータは、データ転送を行う専用のハードウェア（データ転送装置）を有する。これにより中央処理装置（ＣＰＵ）がデータ転送を行う場合と比べて高速なデータ転送を実現することができる。またデータ転送装置がデータ転送を行うことにより、中央処理装置（ＣＰＵ）の処理頻度が減る。割込み処理の処理頻度が減少することにより、遷移／復帰といった処理のオーバーヘッドが減少する。これによりマイクロコンピュータは効率的な処理を行うことができる。データ転送装置は中央処理装置（ＣＰＵ）に比べて論理的規模が小さい。そのため中央処理装置（ＣＰＵ）がデータ転送を行う場合と比べて、データ転送装置がデータ転送を行う場合には消費電力を抑えることができる。
【０００８】
近年、マイクロコンピュータが内蔵する機能は増加してきている。機能増加に伴い、割込み等のイベントに応じて行われるべきデータ転送の数も増加している。またデータ転送を行う際に他の付随する動作も実行できた場合、処理効率をさらに向上させることができる。そのため、データ転送装置を高機能化し、中央処理装置（ＣＰＵ）の処理負荷を低減する必要が生じている。データ転送装置の高機能化に関する先行技術として特許文献４〜６が挙げられる。
【０００９】
特許文献４は、第１のメモリから入力された入力データをコントロール信号を用いて判定し、判定に応じてデータを加工処理してから第２のメモリに書き込むＤＭＡコントローラを開示している。特許文献５は、デジタルカメラの大容量メモリとシステムメモリ間でのＤＭＡ転送において、転送データを演算処理するデータ転送制御装置が開示している。特許文献６は、ＤＭＡ方式によりメモリからのデータ転送を行う際に、転送データに対して演算処理を行うデータ処理装置が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１−１２５６４４号公報
【特許文献２】特開２０００−１９４６４７号公報
【特許文献３】特開平７−１２９５３７号公報
【特許文献４】特開平６−３１８１８３号公報
【特許文献５】特開２０１２−１５５６０４号公報
【特許文献６】特開２００５−３０１６６５号公報
【非特許文献】
【００１１】
【非特許文献１】ＬＳＩハンドブック、昭和５９年１１月３０日オーム社発行、Ｐ５４０〜Ｐ５４１
【発明の概要】
【発明が解決しようとする課題】
【００１２】
データ転送情報（転送元アドレス、転送先アドレス、転送回数等）は、予めＣＰＵにより記憶装置（例えばＲＡＭ）に格納される。そのためデータ転送の内容に応じてデータ転送情報（転送元アドレス、転送先アドレス、転送回数等）を動的に変更することはできない。特許文献４〜６のデータ転送方式では、いずれも読み出したデータを演算により変更して書き込み先に書き込む処理を行っているが、データ転送情報自体を変更していない。すなわち特許文献４〜６のデータ転送方式では、転送元アドレス、転送先アドレス、転送回数等について動的に変更することについて何ら考慮されていない。
【００１３】
したがって上述のデータ転送装置は、例えば「温度を測定し、ある範囲（温度）以上となった場合にはエラーとして処理する」という単純なポーリング動作であっても監視動作を処理することができない。すなわち、この監視動作を行うために毎回の中央処理装置（ＣＰＵ）への割り込みが必要となる。このような監視動作はマイクロコンピュータ内において非常に多い。そのため中央処理装置（ＣＰＵ）は、データ転送の前後において行う動作の負担が大きくなってしまう。
【００１４】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
一実施の形態によれば、データ転送装置は、データ転送の制御内容を示す転送モード情報を含む転送情報セットを読み出し、前記転送モード情報の解析に応じてデータ転送の転送元アドレス、転送先アドレス、転送回数、次のデータ転送に用いる転送情報セットの少なくとも一つを変更する。
【発明の効果】
【００１６】
前記一実施の形態によれば、中央処理装置（ＣＰＵ）の処理負荷を低減したデータ転送を実現できる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１にかかるマイクロコンピュータ１の構成を示すブロック図である。
【図２】実施の形態１にかかる割込みコントローラ（ＩＮＴ）１１の構成を示すブロック図である。
【図３】実施の形態１にかかるデータトランスファーコントローラ（ＤＴＣ）１２の構成を示すブロック図である。
【図４】実施の形態１にかかるデータトランスファーコントローラ（ＤＴＣ）１２が管理するデータ転送情報を示す図である。
【図５】実施の形態１にかかるデータトランスファーコントローラ（ＤＴＣ）１２の状態遷移図である。
【図６】実施の形態１にかかるマイクロコンピュータ１のアキュムレートモードの動作を示す図である。
【図７】実施の形態１にかかるマイクロコンピュータ１のアキュムレートモード、アドレスロードモード、カウンタロードモードの動作を示す図である。
【図８】実施の形態１にかかるマイクロコンピュータ１の動作を示すフローチャートである。
【図９】実施の形態１にかかるマイクロコンピュータ１のスイッチモードの動作を示す図である。
【図１０】実施の形態１にかかるマイクロコンピュータ１のスイッチモードの動作を示す図である。
【図１１】実施の形態１にかかるマイクロコンピュータ１のテスト転送モードの動作を示す図である。
【図１２】実施の形態１にかかるマイクロコンピュータ１のシフトモードの動作を示す図である。
【図１３】実施の形態１にかかるマイクロコンピュータ１のシフトモードの動作を示す図である。
【図１４】実施の形態１にかかる演算器（ＡＬＵ）２８の構成を示すブロック図である。
【図１５】実施の形態１にかかるマイクロコンピュータ１の応用例を示すブロック図である。
【図１６】実施の形態１にかかるマイクロコンピュータ１のコマンド解析例を示す図である。
【図１７】実施の形態１にかかるマイクロコンピュータ１のコマンド解析例を示す図である。
【発明を実施するための形態】
【００１８】
以下図面を参照して、本実施の形態にかかる受信機の構成及び動作について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１９】
図１は、本実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。マイクロコンピュータ１は、中央処理装置（ＣＰＵ（Central Processing Unit））１０、割込みコントローラ（ＩＮＴ）１１、データトランスファーコントローラ（ＤＴＣ）１２、ＲＯＭ（Read Only Memory）１３、ＲＡＭ（Random Access Memory）１４、バスコントローラ（ＢＳＣ）１５、タイマ１６、通信モジュール１７、アナログモジュール１８、及び入出力ポート（Ｉ／Ｏ）１９を有する。
【００２０】
中央処理装置（ＣＰＵ）１０は、マイクロコンピュータ１の全体制御を行う処理装置であり、ＲＯＭ１３から命令を読み出して実行する。
【００２１】
割込みコントローラ（ＩＮＴ）１１は、タイマ１６、通信モジュール１７、アナログモジュール１８等からの割り込み要求、及びマイクロコンピュータ１の外部からの複数の外部割り込み信号を基にＩ／Ｏ入出力ポート１９に入力された割込み要求、を受け付ける。割込みコントローラ（ＩＮＴ）１１は、受け付けた割り込み要求に応じて中央処理装置（ＣＰＵ）１０またはデータトランスファーコントローラ（ＤＴＣ）１２に対し、割込みまたはデータ転送要求を入力する。割込みコントローラ（ＩＮＴ）１１は、割込みを開始／終了したときに、割込みをクリアする信号である割込みクリア信号を出力する。割込みクリア信号は、割込み要因フラグまたは割り込み信号に応じた出力先（タイマ１６、通信モジュール１７、アナログモジュール１８、入出力ポート１９のうち、対応するもの）に出力される。割込みコントローラ（ＩＮＴ）１１の詳細構成は、図２を参照して後述する。
【００２２】
データトランスファーコントローラ（ＤＴＣ）１２は、中央処理装置（ＣＰＵ）１０の設定処理に応じて、データ転送を行う。データトランスファーコントローラ（ＤＴＣ）１２は、中央処理装置（ＣＰＵ）１０が行う解析処理（後述するモードの判定等）を代替実行してデータ転送処理を行う。データトランスファーコントローラ（ＤＴＣ）１２の詳細構成は図３を参照して後述する。
【００２３】
バスコントローラ（ＢＳＣ）１５は、中央処理装置（ＣＰＵ）１０やデータトランスファーコントローラ（ＤＴＣ）１２からバスリクエスト信号を受け付けて、マイクロコンピュータ１内のバスの調停を行う。バスコントローラ（ＢＳＣ）１５は、使用許可を与える処理部に対してバス使用許可信号を出力する。このためバスコントローラ（ＢＳＣ）１５は、中央処理装置（ＣＰＵ）１０及びデータトランスファーコントローラ（ＤＴＣ）１２と、バスリクエスト、バスアクノレジの入出力を行う。さらにバスコントローラ（ＢＳＣ）１５は、バス使用許可信号（バスアクノレジ）を与えた中央処理装置（ＣＰＵ）１０またはデータトランスファーコントローラ（ＤＴＣ）１２と、バスコマンド、ウェイト、アドレス、データなどの入出力を行う。これによりバスコントローラ（ＢＳＣ）１５は、内部バスに接続されたＲＡＭ１４やそのほかの機能ブロックやモジュールに対し、中央処理装置（ＣＰＵ）１０またはデータトランスファーコントローラ（ＤＴＣ）１２からの読み出し／書き込みを実現する。
【００２４】
タイマ１６は、マイクロコンピュータ１内で行われる一般的な計時処理を行う。通信モジュール１７は、シリアルコミュニケーションインターフェイス等から構成される。アナログモジュール１８は、アナログ−デジタル変換処理を行うモジュールであり、Ａ／Ｄ変換器及びＤ／Ａ変換器等から構成される。
【００２５】
次に図２を参照して割込みコントローラ（ＩＮＴ）１１の詳細構成について説明する。マイクロコンピュータ１の割込み要因には、内部割込みと外部割込みの２種類がある。割込み要因フラグレジスタ３３は、それぞれの割込み要因（内部割込み、外部割込み）に対する割込みフラグを記憶する。内部割込みの割込み要因フラグは、タイマ１６、通信モジュール１７、アナログモジュール１８が所定状態になった場合に１にセットされる。外部割込みの割込み要因フラグは、外部割込み入力端子が所定レベルになった場合、または所定信号に変化が発生した場合に１が設定される。各割込み要因フラグは、中央処理装置（ＣＰＵ）１０の所定の書き込み動作により０にクリアされる。また各割込み要因フラグは、データトランスファーコントローラ（ＤＴＣ）１２のデータ転送が終了した場合に０にクリアされる。
【００２６】
割込み許可回路３４は、割込み要因フラグレジスタ３３から割込み要因フラグを読み出して割込み／ＤＴＣ判定回路３５に出力する。また割込み許可回路３４は、ＤＴＣ許可レジスタ（ＤＴＥＲ）３７からデータを入力して割込み／ＤＴＣ判定回路３５に出力する。ＤＴＣ許可レジスタ（ＤＴＥＲ）３７は、中央処理装置（ＣＰＵ）１０から読み出し／書き込み可能なレジスタであり、各割込み要因について１ビットの値を保持する。以下の説明では、この割込み要因に対する１ビットをＤＴＥビットとも呼称する。各ＤＴＥビットは、割込み要求がなされた場合に、データトランスファーコントローラ（ＤＴＣ）１２を起動するか、中央処理装置（ＣＰＵ）１０に割込みを許可するかを設定するビットである。ＤＴＣ許可レジスタ（ＤＴＥＲ）３７内のある割込み要因についてのＤＴＥビットに０が設定されている場合、中央処理装置（ＣＰＵ）１０への割り込み要求が発行される。一方、ＤＴＣ許可レジスタ（ＤＴＥＲ）３７のある割込み要因についてのＤＴＥビットに１が設定されている場合、データトランスファーコントローラ（ＤＴＣ）１２に対する起動要求が発行される。
【００２７】
割込み／ＤＴＣ判定回路３５は、割込み要因フラグが１となった場合、ＤＴＣ許可レジスタ（ＤＴＥＲ）３７内のＤＴＥビットを判定して中央処理装置（ＣＰＵ）１０への割込み要求、またはデータトランスファーコントローラ（ＤＴＣ）１２に対する起動要求、を優先順位判定回路３６に入力する。中央処理装置（ＣＰＵ）１０への割込み要求と、データトランスファーコントローラ（ＤＴＣ）１２に対する起動要求は、独立して優先順位判定回路３６に入力される。
【００２８】
優先順位判定回路３６は、図示しないプライオリティレジスタ、割込みマスクレベルを参照可能に構成される。優先順位判定回路３６は、複数の割込み要求（または起動要求）が生じている場合に、プライオリティレジスタや割込みマスクレベルを参照して各要求に優先度を判定する。そして優先順位判定回路３６は、最も優先順位の高い要求に対してベクタ番号を生成する。優先順位判定回路３６は、中央処理装置（ＣＰＵ）１０への割込み要求と、データトランスファーコントローラ（ＤＴＣ）１２に対する起動要求の其々について判定を行う。優先順位判定回路３６は、中央処理装置（ＣＰＵ）１０に対してＣＰＵ割込み要求とベクタ番号を出力する。
【００２９】
同様に優先順位判定回路３６は、データトランスファーコントローラ（ＤＴＣ）１２に対してＤＴＣ起動要求（ＤＴＣＲＥＱ）とベクタ番号（ＤＴＣＶＥＣ）を出力する。詳細には優先順位判定回路３６は、ＤＴＣ起動要求（ＤＴＣＲＥＱ）を直接データトランスファーコントローラ（ＤＴＣ）１２に出力し、ベクタ番号（ＤＴＣＶＥＣ）をラッチ回路３１に出力する。ラッチ回路３１は、データトランスファーコントローラ（ＤＴＣ）１２からＤＴＣ動作開始信号とＤＴＣ動作終了信号を受け付ける。ＤＴＣ動作開始信号が活性状態の場合、ラッチ回路３１が保持するベクタ番号（ＤＴＣＶＥＣ）のラッチまたは保持が行われる。すなわちベクタ番号（ＤＴＣＶＥＣ）がデータトランスファーコントローラ（ＤＴＣ）１２に通知される。ＤＴＣ動作終了信号が活性状態の場合、ベクタ番号（ＤＴＣＶＥＣ）のラッチが終了する。ＤＴＣ動作終了信号が活性状態の場合、ベクタ番号（ＤＴＣＶＥＣ）とＤＴＣ動作終了信号がデコーダ３２に入力される。これに応じてデコーダ３２は、対応する割込み要求フラグの０クリアを実行する。
【００３０】
所定の割込み要因の発生によりデータトランスファーコントローラ（ＤＴＣ）１２を起動する場合、中央処理装置（ＣＰＵ）１０は予めデータ転送情報（転送情報セットとも記載する。）を記憶装置（例えばＲＡＭ１４）のデータ転送情報配置領域の所定アドレスに書き込む。また中央処理装置（ＣＰＵ）１０は、当該割込み要因に関する割込み許可ビットと当該割込み要因に対応したＤＴＥビットを共に１に設定しておく。
【００３１】
割込み要因の割込み許可ビット及びＤＴＥビットが１に設定された後に、割込み要因フラグに１が設定された場合、データトランスファーコントローラ（ＤＴＣ）１２が起動される。ここでＤＴＥビットが１に設定されているため、中央処理装置（ＣＰＵ）１０への割込みは要求されない。
【００３２】
所定のデータ転送が終了した場合、データトランスファーコントローラ（ＤＴＣ）１２はデータ転送に対応するＤＴＥビットを０にクリアする。この際に当該割込み要因フラグには１が設定された状態で当該ＤＴＥビットが０にクリアされるため、中央処理装置（ＣＰＵ）１０に対する割込みが要求される。中央処理装置（ＣＰＵ）１０は、この割込みに応じて所定のデータ転送終了に対応した処理を実行するとともに、データ転送情報やＤＴＥビットの再設定を行う。
【００３３】
次に図３を参照してデータトランスファーコントローラ（ＤＴＣ）１２について説明する。データトランスファーコントローラ（ＤＴＣ）１２は、データ転送機能制御部（ＦＣ）２０、データ転送制御ブロック（ＤＴＣＣＮＴ）２１、バスインターフェイス（ＢＩＦ）２２、モードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７、演算器（ＡＬＵ）２８、ベクタアドレスレジスタ（ＶＡＲ）２９、及びベクタ生成ブロック（ＶＧ）３０を有する。
【００３４】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、モードレジスタ（ＭＲ）２３に読み出したデータに応じてデータ転送の処理を切り替えるコントローラである。データ転送制御ブロック（ＤＴＣＣＮＴ）２１の詳細な動作については、図５〜図１３を参照して後述する。
【００３５】
データ転送機能制御部（ＦＣ）２０は、後述のシフトモード等の所定のデータ転送モードにおいて、前のデータ転送情報及び転送データの中から必要なものを保持する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、後にデータレジスタ（ＭＲ）２３に読み出したデータとデータ転送機能制御部（ＦＣ）２０の保持するデータを用いてアドレスの変更等を行う。つまりデータ転送機能制御部（ＦＣ）２０は、後のデータ転送情報を変更（修飾）するデータを保持する。
【００３６】
バスインターフェイス（ＢＩＦ）２２は、ＤＴＣ内部バスとマイクロコンピュータ１の内部バスとのインターフェイスとして動作する。バスインターフェイス（ＢＩＦ）２２は、バスリクエスト、バスアクノレジ、バスコマンド、ウェイト、アドレス等のデータの入出力の仲介を行う。
【００３７】
ベクタ生成ブロック（ＶＧ）３０は、割込みコントローラ（ＩＮＴ）１１から入力されるベクタ番号（ＤＴＣＶＥＣ）に従ってベクタアドレスを生成する。例えばベクタ生成ブロック（ＶＧ）３０は、ベクタ番号（ＤＴＣＶＥＣ）を４倍して所定のオフセットを加算することによりベクタアドレスを生成する。
【００３８】
ベクタアドレスレジスタ（ＶＡＲ）２９は、ベクタアドレスを用いて記憶領域（ＲＡＭ１４等）から読み出したデータ転送情報の先頭アドレスを格納する。モードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７は、ベクタアドレスレジスタ（ＶＡＲ）２９に格納されたデータ転送情報の先頭アドレスを基に順次ＲＡＭ１４等から読み出したデータ転送情報をそれぞれ格納する。データ転送情報は、データ転送処理に使用する各種の情報である。すなわちデータ転送情報は、モードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７に分割されて保持される。モードレジスタ（ＭＲ）２３は、データ転送の制御内容を示す転送モード情報を保持する。ソースアドレスレジスタ（ＳＡＲ）２４は、データ転送の転送元アドレスを保持する。デスティネーションアドレスレジスタ（ＤＡＲ）２５は、データ転送の転送先アドレスを保持する。データ転送カウンタ（ＣＲ）２６は、データ転送の転送回数を保持する。データレジスタ（ＤＲ）２７は、比較対象や累算結果等のデータを保持する。
【００３９】
演算器（ＡＬＵ）２８は、シフト演算、論理演算、算術演算、ＣＲＣ演算等の機能を持つ。演算器（ＡＬＵ）２８は、１つの入力データ（ＴＣＲＬなど）をシフトして別の入力データ（ソースアドレスレジスタ（ＳＡＲ）２４の格納データ等）から減算する等の演算を実行可能である。演算器（ＡＬＵ）２８は、２つのデータ、例えば読み出しデータとデータレジスタ（ＤＲ）２７の格納データの比較（一致、大小比較）等の演算結果（ゼロ検出、キャリー／ボロー検出）等をデータ転送制御ブロック（ＤＴＣＣＮＴ）２１に通知する。
【００４０】
ＤＴＣ内部バスは、複数のバス（バスＡ，Ｂ，Ｃ）から構成されている。演算器（ＡＬＵ）２８は、この複数のバスを介して各レジスタ２３〜２７からデータ読み出しを行うことができる。ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７の保持する情報を限定することにより、データトランスファーコントローラ（ＤＴＣ）１２内の回路的な経路が少なくなる。またこれらのレジスタを制御するデータ転送制御ブロック（ＤＴＣＣＮＴ）２１の論理規模も抑制することができる。
【００４１】
次に図４を参照して、データトランスファーコントローラ（ＤＴＣ）１２の管理するデータ転送情報（転送情報セット）について説明する。データ転送情報は、上述のようにモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７に分割されて保持される。
【００４２】
データ転送カウンタ（ＣＲ）２６は、図４に示すようにブロック転送カウントレジスタ（ＢＴＣＲ）と転送カウントレジスタ（ＴＣＲ）に分割される。転送カウントレジスタ（ＴＣＲ）は、上位の８ビット（ＴＣＲＨ）と下位の８ビット（ＴＣＲＬ）に分割されている。
【００４３】
データ転送情報を保持する各レジスタ（２３〜２７）は１組分のデータ保持回路のみがデータトランスファーコントローラ（ＤＴＣ）１２内に存在し、特に制限はされないものの中央演算装置（ＣＰＵ）１０のアドレス空間上には存在しない。各レジスタ（２３〜２７）に格納されるべきデータ転送情報は、必要組数がＣＰＵアドレス空間上の所定のデータ転送情報配置領域（例えばＲＡＭ１４であり、図６等を参照して後述する。）に配置される。
【００４４】
次にモードレジスタ（ＭＲ）２３のビット構成について説明する。ビット３１、３０，２９、２８は、それぞれＡＣＭビット、ＳＷＭビット、ＴＳＭビット、ＳＦＭビットであり、これらのビットのデータはデータ転送のモードを指定する。
【００４５】
ビット３１〜２８の設定データが００００である場合、通常のデータ転送モードを示す。この場合、データ転送情報としてモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６が選択される。つまりデータ転送制御ブロック（ＤＴＣＣＮＴ）２１が読み出すデータ転送情報は、３２ビット×４のデータサイズとなる。
【００４６】
ＡＣＭビット（アキュムレートモード情報とも記載する。）に１がセットされた場合、アキュムレートモードを示す。この場合、データ転送情報としてモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７が選択される。つまりデータ転送制御ブロック（ＤＴＣＣＮＴ）２１が読み出すデータ転送情報は、３２ビット×５のデータサイズとなる。
【００４７】
ＳＷＭビット（スイッチモード情報とも記載する。）に１がセットされた場合、スイッチモードを示す。この場合、データ転送情報としてモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、データレジスタ（ＤＲ）２７が選択される。つまりデータ転送制御ブロック（ＤＴＣＣＮＴ）２１が読み出すデータ転送情報は、３２ビット×３のデータサイズとなる。スイッチモードでは、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、読み出したデータに応じて次回のデータ転送に用いるデータ転送情報を切り替える。詳細な動作は、図９及び図１０を参照して後述する。
【００４８】
ＴＳＭビット（テスト転送モード情報とも記載する。）に１がセットされた場合、テスト転送モードを示す。この場合、データ転送情報としてモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７が選択される。つまりデータ転送制御ブロック（ＤＴＣＣＮＴ）２１が読み出すデータ転送情報は、３２ビット×５のデータサイズとなる。
【００４９】
ＳＦＭビット（シフトモード情報とも記載する。）に１がセットされた場合、シフトモードを示す。この場合、データ転送情報としてモードレジスタ（ＭＲ）２３、ソースアドレスレジスタ（ＳＡＲ）２４が選択される。つまりデータ転送制御ブロック（ＤＴＣＣＮＴ）２１が読み出すデータ転送情報は、３２ビット×２のデータサイズとなる。シフトモードでは、データトランスファーコントローラ（ＤＴＣ）１２は、読み出したデータをデータ転送機能制御部（ＦＣ）２０に退避し、次のデータ転送の際に退避したデータを用いて転送元アドレス等を調整する。詳細な動作は、図１２及び図１３を参照して後述する。
【００５０】
上述のようにＡＣＭビット、ＳＷＭビット、ＴＳＭビット、ＳＦＭビットの設定により、データ転送制御ブロック（ＤＴＣＣＮＴ）２１が各レジスタに読み出すデータ容量が変化する。
【００５１】
モードレジスタ（ＭＲ）２３のビット２７、２６はそれぞれＡＬＭビット、ＣＬＭビットである。これらのビットは、データトランスファーコントローラ（ＤＴＣ）１２のデータ転送情報の設定方法を指定する。
【００５２】
ＡＬＭビット（ＡＬＭ情報とも記載する。）に１がセットされた場合、アドレスロードモードを示す。アドレスロードモードの場合、ソースアドレスレジスタ（ＳＡＲ）２４に従って読み出した転送データがデスティネーションアドレスレジスタ（ＤＡＲ）２５に書き込まれる。書き込みの際にデータサイズに応じて下位ビットを設定する。すなわちアドレスロードモードの場合、読み出したデータに応じて転送先アドレスが動的に変更される。特に制限はされないものの、転送先アドレスへのデータ書き込みは行われない。デスティネーションアドレスレジスタ（ＤＡＲ）２５の設定の後、ＡＬＭビットは０にクリアされる。デスティネーションアドレスレジスタ（ＤＡＲ）２５の設定の際に、データ転送カウンタ（ＣＲ）２６は更新されない。
【００５３】
ＣＬＭビット（ＣＬＭ情報とも記載する。）に１がセットされた場合、カウンタロードモードを示す。カウンタロードモードの場合、ソースアドレスレジスタ（ＳＡＲ）２４に従って読み出した転送データがデータ転送カウンタ（ＣＲ）２６に書き込まれる。すなわちカウンタロードモードの場合、読み出したデータに応じて転送回数が動的に変更される。書き込みの際に必要に応じて上位ビットがゼロ拡張される。なおカウンタロードモードであって後述のＴＭＤ１ビット及びＴＭＤ０ビットによりブロック転送モードが指定されている場合、データ転送カウンタ（ＣＲ）２６のＢＴＣＲ（上位１６ビット）が設定される。特に制限はされないものの、カウンタロードモードの場合には転送先アドレスへのデータ書き込みも行われるようにすることができる。データ転送カウンタ（ＣＲ）２６の設定の後、ＣＬＭビットは０にクリアされる。データ転送カウンタ（ＣＲ）２６の設定の際に、データ転送カウンタ（ＣＲ）２６は更新されない。
【００５４】
ＡＬＭビット及びＣＬＭビットの両方に１がセットされている場合、１回目のデータ転送においてデスティネーションアドレスレジスタ（ＤＡＲ）２５の設定が行われ、２回目のデータ転送においてデータ転送カウンタ（ＣＲ）２６の設定が行われる。アドレスロードモードおよびカウンタロードモードの詳細な動作例は図７及び図８を参照して後述する。
【００５５】
モードレジスタ（ＭＲ）２３のビット２３は、ＳＥＬビットである。ＳＥＬビットは、シフトモードの場合に、転送元または転送先のいずれかのアドレスに対して演算を行うかを指定する。
【００５６】
モードレジスタ（ＭＲ）２３のビット１９〜１６は、ＯＰ３〜ＯＰ０を示すビットである。これらのビットは、各モードにおける演算種別を指定する。
【００５７】
モードレジスタ（ＭＲ）２３のビット１５、ビット１４はそれぞれＳＭ１ビット、ＳＭ０ビットである。これらのビットは、データ読み出し後にソースアドレスレジスタ（ＳＡＲ）２４をインクリメントするか、デクリメントするか、固定にするか、を指定する。
【００５８】
モードレジスタ（ＭＲ）２３のビット１３、ビット１２はそれぞれＤＭ１ビット、ＤＭ０ビットである。これらのビットは、データ書き込み後にデスティネーションアドレスレジスタ（ＤＡＲ）２５をインクリメントするか、デクリメントするか、固定にするか、を指定する。
【００５９】
モードレジスタ（ＭＲ）２３のビット１１、ビット１０はそれぞれＴＭＤ１ビット、ＴＭＤ０ビットである。これらのビットは、データ転送モードの選択に用いられる。データ選択モードとしてノーマルモード、リピートモード、ブロック転送モードがある。
【００６０】
ＴＭＤ１ビット、ＴＭＤ０ビットが双方とも０である場合、ノーマルモードを示す。ノーマルモードでは、１回の起動（１回の起動要因の発生）に対し、ソースアドレスレジスタ（ＳＡＲ）２４で示すアドレスからデスティネーションアドレスレジスタ（ＤＡＲ）２５で示すアドレスへのデータ転送が１回行われる。
【００６１】
データ転送の後に、ＳＭ１ビット、ＳＭ０ビット、ＤＭ１ビット、ＤＭ０ビットの設定に基づいてソースアドレスレジスタ（ＳＡＲ）２４及びデスティネーションアドレスレジスタ（ＤＡＲ）２５の操作（インクリメント、デクリメント、固定のいずれか）が行われる。そしてデータ転送カウンタ（ＣＲ）２６のデクリメントが行われる。
【００６２】
これらの操作は、１回の起動要因の発生に対して１回実行され、この実行がデータ転送カウンタ（ＣＲ）２６で指定された回数だけ行われる。データ転送カウンタ（ＣＲ）２６で指定された回数が終了した場合、データトランスファーコントローラ（ＤＴＣ）１２による一連のデータ転送が終了する。
【００６３】
ＴＭＤ１ビット、ＴＭＤ０ビットにそれぞれ０、１が設定された場合、データ転送モードがリピートモードとなる。またＴＭＤ１ビット、ＴＭＤ０ビットにそれぞれ１、０が設定された場合、データ転送モードがブロック転送モードとなる。リピートモード及びブロック転送モードは、公知の技術により実現される。
【００６４】
モードレジスタ（ＭＲ）２３のビット９はＤＩＲビットである。ＤＩＲビットは、転送元又は転送先のいずれをリピート領域（またはブロック領域）とするかを指定するためのビットである。
【００６５】
モードレジスタ（ＭＲ）２３のビット７、ビット６はそれぞれＳｚ１ビット、Ｓｚ０ビットである。これらのビットは、１回のデータ転送をバイトサイズ、ワードサイズ、ロングワードサイズのいずれにより行うかを指定するためのビットである。
【００６６】
モードレジスタ（ＭＲ）２３のビット２〜０は、それぞれＮＸＴＳビット、ＮＸＴＥ１ビット、ＮＸＴＥ０ビットである。これらのビットは、１つの起動要因に対してデータ転送を終了するのか、次のデータ転送を行うかを選択するためのビットである。換言するとこれらのビットは、チェイン動作を行うかを指定するためのビットである。チェイン動作とは、データ転送情報の読み出し、データ転送の実行、データ転送情報の書き込みを行い、更に連続したデータ転送情報アドレスからのデータ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みを行う動作である。
【００６７】
ＮＸＴＳビット（チェイン判定情報）は、転送データとデータレジスタ（ＤＲ）２７を用いた判定処理を行い、チェイン動作を行うかを選択する。検査の内容は上述のＯＰ３〜０に従って選択される。ＮＸＴＥ１ビットは、常にチェイン動作を行うかを選択するためのビットである。このＮＸＴＥ１ビットに０が設定されている場合、データ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが終了した後にデータトランスファーコントローラ（ＤＴＣ）１２の動作が終了する。ＮＸＴＥ１ビットに１が設定されている場合、データ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが終了した後に、連続したデータ転送情報アドレスからのデータ転送情報の読み出し、データ転送、及びデータ転送情報の書き込みが行われる。ＮＸＴＥ０ビットは、データ転送カウンタ（ＣＲ）２６が０となった場合にチェイン動作を行うか否かを設定するビットである。
【００６８】
次に図５を参照して、データトランスファーコントローラ（ＤＴＣ）１２の状態遷移について説明する。割り込みコントローラ（ＩＮＴ）１１は、前述の手法によりデータトランスファーコントローラ（ＤＴＣ）１２に対してＤＴＣ起動要求（ＤＴＣＲＥＱ）とベクタ番号（ＤＴＣＶＥＣ）を出力する。ベクタ生成ブロック（ＶＧ）３０は、ベクタ番号（ＤＴＣＶＥＣ）に従ってベクタアドレスを生成する。ベクタアドレスレジスタ（ＶＡＲ）２９は、ベクタアドレスを用いた読み出しにより読み出したデータ転送情報の先頭アドレスを格納する。
【００６９】
この後にデータトランスファーコントローラ（ＤＴＣ）１２は、ＩＲステートに遷移する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ベクタアドレスレジスタ（ＶＡＲ）２９が保持する先頭アドレスを用い、データ転送情報配置領域からデータ転送情報の先頭３２ビットをモードレジスタ（ＭＲ）２３にデータを書き込む。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、モードレジスタ（ＭＲ）２３内のデータから転送モード（通常の転送モード、アキュムレートモード、スイッチモード、テスト転送モード、シフトモード）を解析する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、転送モードに応じてデータ転送情報配置領域からデータ転送情報のうち必要なデータのみを読み出して各レジスタ２４〜２７に書き込む。
【００７０】
転送モードが通常の転送モードまたはアキュムレートモードである場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＩＲステートからＳＲステート、ＤＷステート、ＩＷステートと順に遷移する。以下、ＩＲステートからＳＲステート、ＤＷステート、ＩＷステートについてそれぞれ説明する。
【００７１】
ＳＲステートでは、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ソースアドレスレジスタ（ＳＡＲ）２４が示すアドレスから転送データを読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、読み出し後にモードレジスタ（ＭＲ）２３の設定（ＳＭ１ビット、ＳＭ０ビット等）に従ってソースアドレスレジスタ（ＳＡＲ）２４の変更等を行う。その後にデータトランスファーコントローラ（ＤＴＣ）１２は、ＳＲステートからＤＷステートに遷移する。
【００７２】
ＤＷステートでは、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＳＲステートで読み出した転送データをデスティネーションアドレスレジスタ（ＤＡＲ）２５が示すアドレスに書き込む。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、書き込み後にモードレジスタ（ＭＲ）２３の設定（ＤＭ１ビット、ＤＭ０ビット等）に従ってデスティネーションアドレスレジスタ（ＤＡＲ）２５の変更等を行う。またデータ転送カウンタ（ＣＲ）２６のデクリメントも実行される。
【００７３】
ＤＷステートにおいてデータ転送モードがアキュムレートモードの場合、演算器（ＡＬＵ）２８は、転送データとデータレジスタ（ＤＲ）２８のデータを用いた演算を行い、演算結果をデータレジスタ（ＤＲ）２７に格納する。なおブロック転送モードの場合、ＳＷステート、ＤＷステートが繰り返し行われるが図示及び詳細説明は省略する。上述の処理の後にデータトランスファーコントローラ（ＤＴＣ）１２は、ＤＷステートからＩＷステートに遷移する。
【００７４】
ＩＷステートでは、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＳＲステート及びＤＷステートにおいてレジスタ２３〜２７のうち変更が生じたレジスタのデータをデータ転送情報配置領域に書き戻す。換言するとＩＷステートでは、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＩＲステート及びＤＷステートにおいてレジスタ２３〜２７のうち変更が生じなかったレジスタの書き戻しは行わない。例えばデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、デスティネーションアドレスレジスタ（ＤＡＲ）２５が固定（変更が無い）の場合には当該レジスタのデータの書き戻しは行わない。
【００７５】
ＩＷステートにおいてモードレジスタ（ＭＲ）２３がチェイン動作を指定している場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、引き続きＩＲステート、ＳＲステート、ＤＷステート、ＩＷステートを引き続き行う。チェイン動作の動作例は、図８等を参照して説明する。
【００７６】
続いて転送モードがスイッチモード場合のＩＲステート以降の状態遷移について説明する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＩＲステートから前述のＳＲステートに遷移し、ＳＲステートからＩＷ０ステートに遷移する。
【００７７】
ＩＷ０ステートにおいて演算器（ＡＬＵ）２８は、ソースアドレスレジスタ（ＳＡＲ）２４を用いて読み出したデータ（判定データ）とデータレジスタ（ＤＲ）２８のデータを比較し、判定データが範囲内であるか否かを判定する。判定データが範囲内である場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、次に読み出すデータ転送情報の先頭アドレスを計算してＩＲステートに遷移する。その後に通常の転送モードと同様にＳＲステート、ＤＷステート、ＩＷステートに遷移する。
【００７８】
一方、判定データが範囲外である場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、起動要因に対応したＤＴＥビットをクリアして停止状態に遷移する。ＤＴＥビットをクリアすることにより、中央処理装置（ＣＰＵ）１０に割込みが要求され、中央処理装置（ＣＰＵ）１０はリカバリ処理等を行う。
【００７９】
続いて転送モードがシフトモード場合のＩＲステート以降の状態遷移について説明する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ＩＷ０ステートにおいて後の演算で必要となるデータをデータ転送機能制御部（ＦＣ）２０に退避し、その後にＩＲステートに遷移する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、退避したデータを次のデータ転送の際の転送元アドレスや転送先アドレスの算出処理に使用する。詳細な動作例は図１２を参照して説明する。
【００８０】
続いて図６を参照して、アキュムレートモードでの動作例について説明する。図６は、アキュムレートモードでの動作時のデータ転送情報配置領域及びデータ領域（例えばＲＡＭ１４）とデータトランスファーコントローラ（ＤＴＣ）１２との関係を示す動作説明図である。中央処理装置（ＣＰＵ）１０は、所要のデータ転送情報（図６におけるデータ転送情報（１）（２））をデータ転送情報配置領域の所定アドレスに書き込む。また中央処理装置（ＣＰＵ）１０は、このアキュムレートモードに対応した割込み要因のＤＴＥビットを１に設定する。この状態で割込みが生じることにより、データトランスファーコントローラ（ＤＴＣ）１２が起動される。
【００８１】
データトランスファーコントローラ（ＤＴＣ）１２が起動されると、上述のようにベクタ番号（ＤＴＣＶＥＣ）がデータトランスファーコントローラ（ＤＴＣ）１２に入力される。そして上述のようにベクタ番号（ＤＴＣＶＥＣ）に従って読み出したデータ転送情報の先頭アドレスがベクタアドレスレジスタ（ＶＡＲ）２９が格納される。本例では、データ転送情報（１）のＡＣＭビットに１（すなわちアキュムレートモード）が設定され、ＮＸＴＳビット、ＮＸＴＥ０ビットにそれぞれ１が設定されているものとする。
【００８２】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、この先頭アドレスを用いてデータ転送情報配置領域からデータ転送情報（１）を読み出す。詳細にはデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域のデータ転送情報（１）から読み出したデータをモードレジスタ（ＭＲ）２３に書き込み、当該データからアキュムレートモードであることを判定する。アキュムレートモードであるため、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）から読み出したデータをソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７に書き込む。
【００８３】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ソースアドレスレジスタ（ＳＡＲ）２４で指定された転送元アドレスから転送データを読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、読み出した転送データをデスティネーションアドレスレジスタ（ＤＡＲ）２５が示す転送先アドレスに書き込む（図６参照）。
【００８４】
この際に演算器（ＡＬＵ）２８は、転送データと、データレジスタ（ＤＲ）２７の格納データと、の演算を行い、演算結果をデータレジスタ（ＤＲ）２７に上書きする。ここで演算内容は、ＯＰ３〜ＯＰ０（モードレジスタ（ＭＲ）２３のビット１９〜１６）により指定される。データ転送の終了後（すなわちＩＷステート）、この上書きが行われたデータレジスタ（ＤＲ）２７を含む各レジスタ２３〜２７のデータがデータ転送情報配置領域に書き戻される。この際にデータ転送カウンタ（ＣＲ）２６の値はデクリメントされている。
【００８５】
このアキュムレートモードは、例えばシリアルコミュニケーションインターフェイスの受信完了割込みが生じた場合に利用することができる。例えば、受信データレジスタからＲＡＭ１４にデータを転送する場合に利用することができる。この処理においてデータ転送カウンタ（ＣＲ）２６で指定された回数の処理が終了した際に、所定の累算結果を、データレジスタ（ＤＲ）２７に格納することができる。
【００８６】
例えば演算内容として加算が設定された場合、データ転送カウンタ（ＣＲ）２６で指定された回数のデータ転送を終了した後に、データ転送情報配置領域内のデータレジスタ（ＤＲ）２７に相当するアドレスにはサムデータが格納される。また演算内容として排他的論理和が指定された場合、当該アドレスにはパリティデータが格納される。
【００８７】
演算内容としてＣＲＣ演算が設定された場合、１６ビット幅の演算を行う際にはデータレジスタ（ＤＲ）２７の上位１６に生成多項式に対応するデータを設定／保持し、下位１６ビットに演算結果を格納するとよい。または生成多項式は固定してもよい。ＯＰ３〜ＯＰ０ビットにより生成多項式を選択するようにしてもよい。また、図示されない他の入力信号により使用する生成多項式を指定する等の構成であってもよい。
【００８８】
本例では、ＮＸＴＳビット及びＮＸＴＥ０ビットに１が設定されている。そのため、所定回数のデータ転送が終了してデータ転送カウンタ（ＣＲ）２６が０になった場合、演算器（ＡＬＵ）２８は転送データとデータレジスタ（ＤＲ）２７のデータを用いた検査を行い、検査結果に応じてチェイン動作を行うか否かを判定する。
【００８９】
演算内容として加算または排他的論理和が指定されている場合、演算器（ＡＬＵ）２８は最後の転送データとデータレジスタ（ＤＲ）２７のデータが一致しているか否かを判定する。データトランスファーコントローラ（ＤＴＣ）１２は、一致している場合には問題が無いと判断し、チェイン動作を行わない。一方、データトランスファーコントローラ（ＤＴＣ）１２は、不一致の場合には問題があると判断し、チェイン動作を行う。チェイン動作においてデータ転送情報（１）の隣接アドレスに格納されたデータ転送情報（２）を用いたデータ転送が実行される。このデータ転送は、エラーステータスの設定やリカバリのための処理を行うことが想定される。
【００９０】
演算内容としてＣＲＣ演算が指定されている場合、演算器（ＡＬＵ）２８は最後の転送データの演算結果が０であるかを判定する。データトランスファーコントローラ（ＤＴＣ）１２は、演算結果が０である場合にはチェイン動作を行わずに処理を終了する。データトランスファーコントローラ（ＤＴＣ）１２は、演算結果が０以外である場合にはチェイン動作を実行し、次のデータ転送情報（２）に関する処理を実行する。
【００９１】
データ転送情報配置領域は、データレジスタ（ＤＲ）２７に対応する領域にチェックサムやＣＲＣ演算の途中結果を保持する。これにより、異なる起動要因に起因する複数のデータ転送を行う場合であっても、各演算（チェックサム、ＣＲＣ演算）を独立して行うことができる。例えば複数チャネルのシリアルコミュニケーションインターフェイスからの受信データを並行して転送し、それぞれのチャネルに対応したチェックサムの算出やＣＲＣ演算を独立して行うことができる。
【００９２】
続いて図７を参照して、アキュムレートモードに加え、アドレスロードモードとカウンタロードモードが設定された場合の動作例について説明する。図７は、アキュムレートモード、アドレスロードモード、及びカウンタロードモードでの動作時のデータ転送情報配置領域（例えばＲＡＭ１４）とデータトランスファーコントローラ（ＤＴＣ）１２との関係を示す動作説明図である。
【００９３】
本例では、データ転送情報（１）のＡＣＭビット、ＡＬＭビット、ＣＬＭビットにいずれも１が設定されている。データ転送情報（１）内のＳｚ１ビット及びＳｚ０ビットがバイトサイズまたはワードサイズを指定する場合、転送先アドレス（デスティネーションアドレスレジスタ（ＤＡＲ）２５に読みだされるデータ）の上位ビットがあらかじめ設定される。ＴＭＤ１ビット及びＴＭＤ０ビットがブロック転送モードを指定する場合、転送カウント数（データ転送カウンタ（ＣＲ）２６に読みだされるデータ）の下位１６ビットを予め設定しておく。ＴＭＤ１ビット及びＴＭＤ０ビットがノーマルモードを指定する場合、上述の下位１６ビットの設定は任意である。
【００９４】
データトランスファーコントローラ（ＤＴＣ）１２がはじめて起動される（１回目の起動）と、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、モードレジスタ（ＭＲ）２３に書き込んだデータからアキュムレートモードであると判定する。そしてデータトランスファーコントローラ（ＤＴＣ）１２、データ転送情報（１）からデータを読み出してソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７に書き込む。データ転送制御ブロック（ＤＴＣＣＮＴ）２１はソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスからデータを読み出し、読み出したデータをデスティネーションアドレスレジスタ（ＤＡＲ）２５に書き込む。すなわちデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、書き込み先のアドレスを変更する。
【００９５】
この際にデータトランスファーコントローラ（ＤＴＣ）１２は、読み出したデータのデータ転送情報配置領域への書き込みは行わず、アキュムレートモードに対応した演算も行わない。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、デスティネーションアドレスレジスタ（ＤＡＲ）２５への書き込みの後にＡＬＭビットを０にクリアする。その後にデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、各レジスタ２３〜２７のデータをデータ転送情報配置領域に書き込む。
【００９６】
２回目にデータトランスファーコントローラ（ＤＴＣ）１２が起動された場合、ソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスからデータを読み出し、読み出したデータをデータ転送カウンタ（ＣＲ）２６に書き込む。すなわちデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送回数を変更する。
【００９７】
この際にデータトランスファーコントローラ（ＤＴＣ）１２は、読み出したデータのデータ転送情報配置領域への書き込みは行わず、アキュムレートモードに対応した演算も行わない。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送カウンタ（ＣＲ）２６への書き込みの後にＣＬＭビットを０にクリアする。その後にデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、各レジスタ２３〜２７のデータをデータ転送情報配置領域に書き込む。
【００９８】
３回目にデータトランスファーコントローラ（ＤＴＣ）１２が起動された場合、図６と同様の動作を行う。上述のようにデータトランスファーコントローラ（ＤＴＣ）１２は１回目の起動によりデータの転送先アドレスを指定し、２回目の起動により転送回数を指定している。このような動作は、例えばシリアルコミュニケーションインターフェイスを通じて最初に指定アドレス、次にデータ数、続いてデータを受信する場合に使用することができる。受信完了割込みが生じた場合に１回目の起動が生じる。これにより、データトランスファーコントローラ（ＤＴＣ）１２が動的に転送先アドレスとデータ数を把握したうえでデータ転送を行うことができる。シリアルコミュニケーションインターフェイスを用いた送信では、中央処理装置（ＣＰＵ）１０がデータ転送装置として設定したデータ転送カウント数（データ転送カウンタ（ＣＲ）２６に書き込まれる値）を最初に送信データレジスタに転送することもできる。またデータトランスファーコントローラ（ＤＴＣ）１２は、ソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスから読み出したデータを送信データレジスタに書き込み、最後にデータレジスタ（ＤＲ）２７の値を送信データレジスタに書き込むようにしてもよい。ここでデータ転送カウンタ（ＣＲ）２６やデータレジスタ（ＤＲ）２７を転送することを指定するビットがモードレジスタ（ＭＲ）２３に読み出されるデータ内（図４）に存在してもよい。
【００９９】
続いて図８を参照して、アキュムレートモード、アドレスロードモード、カウンタロードモードの各設定に応じたデータトランスファーコントローラ（ＤＴＣ）１２の動作を説明する。図８は、各モードの設定によるデータトランスファーコントローラ（ＤＴＣ）１２の動作を示すフローチャートである。以下の説明ではＮＸＴＳビット及びＮＸＴＥ０ビットに１が設定されているものとする。
【０１００】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、起動（Ｓ１０１：Ｙｅｓ）後にＡＬＭビット及びＣＬＭビットを判定する（Ｓ１０２）。ＡＬＭビットに１が設定されている場合（Ｓ１０２：ＡＬＭ＝１）、データ転送制御ブロック（ＤＴＣＣＮＴ）２１はソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスからデータを読み出し、読み出したデータをデスティネーションアドレスレジスタ（ＤＡＲ）２５に書き込み、ＡＬＭビットを０にクリアする（Ｓ１０３）。
【０１０１】
ＣＬＭビットに１が設定されている場合（Ｓ１０２：ＣＬＭ＝１）、データ転送制御ブロック（ＤＴＣＣＮＴ）２１はソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスからデータを読み出し、読み出したデータをデータ転送カウンタ（ＣＲ）２６に書き込み、ＣＬＭビットを０にクリアする（Ｓ１０４）。
【０１０２】
ＡＬＭビット及びＣＬＭビットが０にクリアされている場合（Ｓ１０２：ＡＬＭ＝０、ＣＬＭ＝０）、データ転送制御ブロック（ＤＴＣＣＮＴ）２１はソースアドレスレジスタ（ＳＡＲ）２４で指定されたアドレスからデータを読み出し、デスティネーションアドレスレジスタ（ＤＡＲ）２５で指定されたアドレスに読み出したデータを書き込む（Ｓ１０５）。この書き込み処理（Ｓ１０５）は、データ転送カウンタ（ＣＲ）２６が０になるまで繰り返し行われる（Ｓ１０６）。書き込み処理毎にデータ転送カウンタ（ＣＲ）２６はデクリメントされる。
【０１０３】
データ転送カウンタ（ＣＲ）２６が０になった場合（Ｓ１０６：０）、演算器（ＡＬＵ）２８は、転送データとデータレジスタ（ＤＲ）２７を用いた判定処理を行う。問題ないと判定された場合（Ｓ１０７：ＯＫ）、データトランスファーコントローラ（ＤＴＣ）１２は動作を終了する（Ｓ１０９）。一方、問題があると判定された場合（Ｓ１０７：ＮＧ）、データトランスファーコントローラ（ＤＴＣ）１２はチェイン動作を起動する。
【０１０４】
図８に示す一連の処理を行うことにより、データトランスファーコントローラ（ＤＴＣ）１２は前述のようにシリアルコミュニケーションインターフェイスを用いた一連の処理を中央処理装置（ＣＰＵ）１０を必要とすることなく実行することができる。すなわちデータトランスファーコントローラ（ＤＴＣ）１２は、転送先アドレスや転送回数の認識から、データ転送エラーの判定、及びエラーステータスの転送、といった一連の処理を中央処理装置（ＣＰＵ）１０を要することなく実行することができる。
【０１０５】
上述のデータトランスファーコントローラ（ＤＴＣ）１２の処理が終了した後に、対応するＤＴＥビットが０にクリアされる。この状態において中央処理装置（ＣＰＵ）１０に対する割込みが要求される。中央処理装置（ＣＰＵ）１０は、ＲＡＭ１４上に格納されたデータにしていて所要の演算等の処理を行うとともに、データ転送情報等の再設定を行う。
【０１０６】
続いて図９を参照して、スイッチモードでの動作例について説明する。図９は、スイッチモードでの動作時のデータ転送情報配置領域（例えばＲＡＭ１４）とデータトランスファーコントローラ（ＤＴＣ）１２との関係を示す動作説明図である。本例では、データ転送情報（１）のＳＷＭビットに１が設定されている。
【０１０７】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域からデータ転送情報（１）を順次読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、はじめにデータ転送情報（１）から読み出したデータをモードレジスタ（ＭＲ）２３に書き込み、スイッチモードであることを判定する。スイッチモードであるため、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）から読み出したデータをソースアドレスレジスタ（ＳＡＲ）２４、データレジスタ（ＤＲ）２７に書き込む。
【０１０８】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ソースアドレスレジスタ（ＳＡＲ）２４が示すアドレスからデータ（以下、スイッチモードの説明において判定データと記載する。）を読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）を用いたデータ転送を行う。また演算器（ＡＬＵ）２８は、読み出した判定データと、データレジスタ（ＤＲ）２７のデータを比較する。
【０１０９】
読み出した判定データがデータレジスタ（ＤＲ）２７のデータ以下である等の所定範囲内である場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、判定データに応じてデータ転送情報（２）の先頭データを生成する。データ転送情報（２）の先頭データは、判定データに１６を乗算する、または判定データを４ビットシフトした値をソースアドレスレジスタ（ＳＡＲ）２４のインクリメント後の値に加算することにより生成される。１６を乗算する理由は、データ転送情報が４ロングワード、すなわち１６バイトであることに対応するためである。これにより判定データの値に応じて、次に読み出されるデータ転送情報（２）が変化する。ここでデータ転送情報（２）の候補となるセットは、予めデータ転送情報配置領域に設定されているものとする。各セット内のＳＷＭビットはそれぞれ０が設定される。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、判定データに応じて設定されたデータ転送情報（２）を用いてデータ転送を行う。
【０１１０】
読み出した判定データがデータレジスタ（ＤＲ）２７のデータより大きい場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は処理対象の範囲外であると判定する。範囲外と判定する理由は、全ての判定データに対応するデータ転送情報（２）のセットをデータ転送情報配置領域に設定に設定することは現実的でないことが挙げられる。また範囲外と判定することにより、想定される判定データ以外のデータが読み出された場合の誤操作を防止し、中央処理装置（ＣＰＵ）１０によるエラー処理を確実に行うことができる。さらに、一部の判定データに対しては中央処理装置（ＣＰＵ）１０による処理が対応することも想定されるため、範囲外の判定が行われることが好ましい。
【０１１１】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、範囲外と判定した場合には起動要因に対応するＤＴＥビットを０に設定する。すなわち当該起動要因については、中央処理装置（ＣＰＵ）１０の処理対象となる。
【０１１２】
なおデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、判定データが所定範囲外の場合であっても、範囲内の場合と同様に判定データに応じてデータ転送情報（２）を変化させて、データ転送を行ってもよい。この場合、読み出されるデータ転送情報（２）は、エラー状況の書き込みを指定する内容等にする。これにより、中央処理装置（ＣＰＵ）１０は割込みによりエラーを検知するのではなく、いわゆるオペレーティングシステムの実行等によりエラー検出を行う。これにより中央処理装置（ＣＰＵ）１０を動作させるプログラムを簡略化することができる。
【０１１３】
続いて図１０を参照して、スイッチモードでのデータ転送を更に説明する。図１０は、スイッチモードにおけるデータ転送情報配置領域を示す図である。データ転送情報（２）の候補となるデータ群は予め中央処理装置（ＣＰＵ）１０の処理等によって設定しておく。
【０１１４】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ベクタアドレスレジスタ（ＶＡＲ）２９を用いてデータ転送情報（１）を読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）を用いたデータ転送を行う。またデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報の読み書きに当たって、ベクタアドレスレジスタ（ＶＡＲ）２９を更新（インクメント）する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）を基に読み出した判定データに１６を乗算した値を、ベクタアドレスレジスタ（ＶＡＲ）２９の値と加算することによりデータ転送情報（２）の先頭アドレスを生成する。なお、上述の例では判定データに１６を乗算（または４ビットシフト）を行っていたが、そのまま加算するように判定データの値を事前に調整しておいてもよい。
【０１１５】
続いて図１１を参照して、テスト転送モードでの動作例について説明する。図１１は、テスト転送モードでの動作時のデータ転送情報配置領域（例えばＲＡＭ１４）とデータトランスファーコントローラ（ＤＴＣ）１２との関係を示す動作説明図である。本例では、データ転送情報（１）のＴＳＭビットに１が設定されている。
【０１１６】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域からデータ転送情報（１）を順次読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、はじめにデータ転送情報配置領域のデータ転送情報（１）から読み出したデータをモードレジスタ（ＭＲ）２３に書き込み、テスト転送モードであることを判定する。テスト転送モードであるため、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域のデータ転送情報（１）からデータを読み出してソースアドレスレジスタ（ＳＡＲ）２４、デスティネーションアドレスレジスタ（ＤＡＲ）２５、データ転送カウンタ（ＣＲ）２６、データレジスタ（ＤＲ）２７に書き込む。
【０１１７】
データトランスファーコントローラ（ＤＴＣ）１２は、通常のデータ転送と同様に、データ転送を行う。また演算器（ＡＬＵ）２８は、転送データ（ソースアドレスレジスタ（ＳＡＲ）２４が示すアドレスから読み出したデータ）とデータレジスタ（ＤＲ）２７のデータを比較する。例えば転送データがデータレジスタ（ＤＲ）２７のデータよりも大きい場合、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、指定範囲外と判定する。
【０１１８】
指定範囲内の場合、データトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（１）の処理のみで動作を終了する。指定範囲外の場合、データトランスファーコントローラ（ＤＴＣ）１２は、チェイン動作によりデータ転送情報（１）に隣接して格納されたデータ転送情報（２）を読み出す。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（２）を用いてデータ転送を行う。データ転送情報（２）は、例えばエラーステータスの書き込みに用いられる。これにより、中央処理装置（ＣＰＵ）１０は、割込みによらずエラーステータスを把握することができる。
【０１１９】
指定範囲外の場合、データトランスファーコントローラ（ＤＴＣ）１２は起動要因に対応するＤＴＥビットを０に設定してもよい。これにより、中央処理装置（ＣＰＵ）１０による制御が実行される。
【０１２０】
続いて図１２を参照して、シフトモードでの動作例について説明する。図１３は、テスト転送モードでの動作時のデータ転送情報配置領域（例えばＲＡＭ１４）とデータトランスファーコントローラ（ＤＴＣ）１２との関係を示す動作説明図である。本例では、データ転送情報（１）のＳＦＭビットに１が設定され、ＳＥＬビットに０が設定されている。
【０１２１】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域からデータ転送情報（１）を順次読み出す。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、はじめにデータ転送情報配置領域のデータ転送情報（１）から読み出したデータをモードレジスタ（ＭＲ）２３に書き込み、シフトモードであることを判定する。シフトモードであるため、データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報配置領域のデータ転送情報（１）から読み出したデータをソースアドレスレジスタ（ＳＡＲ）２４に書き込む。
【０１２２】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ソースアドレスレジスタ（ＳＡＲ）２４が示すアドレスから読み出したデータ（以下のシフトモードの説明においては、シフトデータとも記載する）をデータレジスタ（ＤＲ）２７に格納する。そしてデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（１）のモード情報とシフトデータをデータ転送機能制御部（ＦＣ）２０に退避する。データ転送情報の読み出しおよび書き込みにあたって、ベクタアドレスレジスタ（ＶＡＲ）２９が保持するベクタアドレスのインクリメントが行われる。すなわちベクタアドレスレジスタ（ＶＡＲ）２９には、データ転送情報（１）の隣接アドレスに格納されるデータ転送情報（２）の先頭アドレスが格納される。
【０１２３】
データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、ベクタアドレスレジスタ（ＶＡＲ）２９を参照してデータ転送情報（２）のデータを読み出し、各レジスタ２３〜２７に格納する。データ転送制御ブロック（ＤＴＣＣＮＴ）２１は、データ転送情報（２）を用いたデータ転送にあたって、データ転送機能制御部（ＦＣ）２０に退避したシフトモード上情報やシフトデータを読み出す。演算器（ＡＬＵ）２８は、読み出したシフトデータを転送データサイズに応じて１、２、４倍に乗算する。または演算器（ＡＬＵ）２８は、読み出したシフトデータを転送データサイズに応じて０〜２ビットシフトする。演算器（ＡＬＵ）２８は、乗算またはビットシフトしたシフトデータと、ソースアドレスレジスタ（ＳＡＲ）２４内のデータを加算し、加算値をソースアドレスレジスタ（ＳＡＲ）２４に上書きする。すなわちデータ転送情報（２）で指定された転送元データをシフトデータを用いて調整する。その後にデータ転送制御ブロック（ＤＴＣＣＮＴ）２１は、モードレジスタ（ＭＲ）２３に応じたデータ転送処理を行う。なお、上述の説明では転送元データをシフトデータを用いて調整する例を説明したが、データ転送情報内のその他のデータ（例えば転送先アドレス）をシフトデータを用いて調整してもよい。
【０１２４】
なお、データ転送情報（１）とデータ転送情報（２）が一つのデータ転送情報である構成としてもよい。すなわちデータ転送情報は、ソースアドレスレジスタ（ＳＡＲ）２４に読み出される２つのデータを包含する構成としてもよい。この場合には、ソースアドレスレジスタ（ＳＡＲ）２４が図２の構成の２倍の容量を記憶できる構成である等の変更が必要となる。
【０１２５】
続いて図１３を参照して、シフトモードの際の転送先アドレスの指定の一例を説明する。以下の説明では、マイクロコンピュータ１がモータの速度指定を行うデータを制御する例について検討する。モータの制御に用いるパラメータはＲＯＭ１３に格納されているものとする。これらのパラメータは、例えば１６ビットのデータ長であり、昇順に速度が大きくなるものとする（例えばパラメータ１よりもパラメータ２の方が高速動作を指定する。）。パラメータが１６ビット長であるため、上述の加算処理においてシフトデータ（すなわちパラメータ）が２倍された後に加算が行われる。
【０１２６】
初期設定の段階では、パラメータ０が読み出されるように設定を行う。モータを駆動する必要が生じた場合、データ転送情報（１）のシフトデータを用いて読み出されるパラメータのアドレスを変更し、例えばパラメータｍが読み出されるようにする。別のタイマやアナログ入力によりモータの状態を監視して加速が十分と判断された場合、負のシフトデータが加算されるように制御する。つまり一定時間間隔でモータの状態を監視するとともに割込みを発生させ、当該割込みによりどのシフトデータが読み出されるかを調整する。なお加算結果をソースアドレスレジスタ（ＳＡＲ）２４に反映するのではなく、データ転送情報（１）で速度パラメータ格納領域の基準となるアドレスからの偏差を指定してもよい。
【０１２７】
例えばマイクロコンピュータ１を制御するモータの状態をＡ／Ｄ変換器で変換する。一定の時間間隔でＡ／Ｄ変換器の動作を行わせ、この変換終了割込みを用いてデータトランスファーコントローラ（ＤＴＣ）１２を制御するようにする。Ａ／Ｄ変換器の変換結果はシフトデータとして参照できるようにする。これにより、モータを駆動するタイマに適切な速度データを与えることができる。
【０１２８】
以上が各モードでのデータトランスファーコントローラ（ＤＴＣ）１２の動作であり、改めて処理概略を説明する。データトランスファーコントローラ（ＤＴＣ）１２は、はじめにデータ転送情報からモードレジスタ（ＭＲ）２３に転送モードにかかるデータを読み出し、このデータを解析する。データトランスファーコントローラ（ＤＴＣ）１２は、この解析によってどの転送モード（アキュムレートモード、スイッチモード、アドレスロードモード等）が設定されたかを把握する。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、設定された転送モードに応じて転送元アドレスや転送先アドレス（例えばアドレスロードモード、シフトモード）、転送回数（例えばカウンタロードモード）、次回のデータ転送で用いるデータ転送セット（例えばスイッチモード）、の少なくとも１つを変更している。この変更の際にデータトランスファーコントローラ（ＤＴＣ）１２は、転送データ（転送元アドレスから読み出したデータ）を利用して変更を行う。例えばカウンタロードモードでは、データトランスファーコントローラ（ＤＴＣ）１２は通信モジュール等から転送元アドレスに従って読み出したデータを転送回数として設定する。
【０１２９】
続いて演算器（ＡＬＵ）２８の詳細構成例について図１４を参照して説明する。図１４は、演算器（ＡＬＵ）２８の構成を示すブロック図である。演算器（ＡＬＵ）２８は、ＣＲＣ演算器（ＣＲＣ）４１、論理演算器（ＬＯＧ）４２、シフタ（ＳＦＴ）４３、算術演算器（ＡＲＴ）４４、及び出力セレクタ（ＳＥＬ）４５を有する。演算器（ＡＬＵ）２８は、複数の内部バスを有し、本例ではＤＴＣ内部バスＡ、Ｂ、Ｃを有している。
【０１３０】
ＣＲＣ演算器（ＣＲＣ）４１には、例えばＤＴＣ内部バスＡからリードデータ（データ転送情報配置領域から読み出したデータ）が入力され、ＤＴＣ内部バスＢからデータレジスタ（ＤＲ）２７からのリードデータが入力され、データ転送制御ブロック（ＤＴＣＣＮＴ）２１から生成多項式選択信号が入力される。ＣＲＣ演算器（ＣＲＣ）４１は、これらの入力を用いて指定された演算を行い、演算結果を出力セレクタ（ＳＥＬ）４５に供給する。
【０１３１】
論理演算器（ＬＯＧ）４２には、例えばＤＴＣ内部バスＡからリードデータ（データ転送情報に従って読み出したデータ）が入力され、ＤＴＣ内部バスＢからデータレジスタ（ＤＲ）２７からのリードデータが入力され、データ転送制御ブロック（ＤＴＣＣＮＴ）２１からマスクデータが入力される。また論理演算器（ＬＯＧ）４２には、ＯＰ３〜ＯＰ０等ビット等に基づく制御信号が入力される。これによって論理演算器（ＬＯＧ）４２は、ＤＴＣ内部バスＡ、Ｂからの入力に対し、それぞれ所定ビットをマスクすることも可能である。論理演算器（ＬＯＧ）４２は、指定された演算を行い、演算結果をシフタ（ＳＦＴ）４３に供給する。
【０１３２】
シフタ（ＳＦＴ）４３には、論理演算器（ＬＯＧ）４２の出力するデータと、データ転送制御ブロック（ＤＴＣＣＮＴ）２１からの制御信号（例えばデータ転送サイズに対応した制御信号）が入力される。シフタ（ＳＦＴ）４３は、入力に応じた演算を行い、演算結果を算術演算器（ＡＲＴ）４４に出力する。
【０１３３】
算術演算器（ＡＲＴ）４４には、論理演算器（ＬＯＧ）４２からシフタ（ＳＦＴ）４３を介した出力データ、データ転送制御ブロック（ＤＴＣＣＮＴ）２１からの制御信号等が入力される。算術演算器（ＡＲＴ）４４は、入力された制御信号応じた演算を行い、演算結果を出力セレクタ（ＳＥＬ）４５に供給する。算術演算器（ＡＲＴ）４４は、この演算の際にキャリー／ボローを検出してデータ転送制御ブロック（ＤＴＣＣＮＴ）２１に通知する。
【０１３４】
出力セレクタ（ＳＥＬ）４５には、ＣＲＣ演算器（ＣＲＣ）４１の演算結果、算術演算器（ＡＲＴ）４４の演算結果、データ転送制御ブロック（ＤＴＣＣＮＴ）２１からの制御信号、等が入力される。出力セレクタ（ＳＥＬ）４５は、入力された制御信号に応じた選択処理を行ってＤＴＣ内部バスＣを介して演算要求元に選択結果を出力する。
【０１３５】
続いて図１５を参照してマイクロコンピュータ１をカメラに適用した場合について説明する。カメラレンズＭＣＵ５０は、上述のマイクロコンピュータ１の構成、機能を有する。さらにカメラレンズＭＣＵ５０は、通信モジュール（ＳＣＩ）５１（図１における通信モジュール１７に対応）、タイマＦ５２、タイマＤ５３、タイマＳ５４、及び入出力ポート（Ｉ／Ｏ）５５（図１における入出力ポート（Ｉ／Ｏ）１９に対応）を有する。なおタイマＦ５２、タイマＤ５３、タイマＳ５４は、図１のタイマ１６に対応する。カメラレンズＭＣＵ５０は、カメラボディＭＣＵ６０からのコマンドを受け付ける。当該コマンドはデータ転送情報としてカメラレンズＭＣＵ５０の記憶装置に書き込まれ、データトランスファーコントローラ（ＤＴＣ）１２が起動されることにより各種の処理が実行される。
【０１３６】
タイマＦ５２、タイマＤ５３、タイマＳ５４は、それぞれ焦点、絞り、防振の制御に用いられる。オートフォーカスの許可や防振許可等のスイッチ入力は、入出力ポート（Ｉ／）５５から入力される。通信モジュール（ＳＣＩ）５１は、シリアルコミュニケーションインターフェイス等の１回線の通信手段であり、カメラボディＭＣＵ６０からコマンドとしてのデータ転送情報がカメラレンズＭＣＵ５０に与えられる。カメラレンズＭＣＵ５０とカメラボディＭＣＵ６０との間のインターフェイスは、レンズマウントによって定められている。カメラレンズＭＣＵ５０からの応答（カメラレンズＭＣＵ５０からカメラボディＭＣＵ６０へのデータ送信）も、この通信手段を介して行われる。
【０１３７】
この通信手段の受信完了割込みに応じてカメラレンズＭＣＵ５０内のデータトランスファーコントローラ（ＤＴＣ）１２が起動される。データトランスファーコントローラ（ＤＴＣ）１２は、例えばデータ転送情報を読み出してスイッチモードで動作し、上述のスイッチモードの判定データを用いて転送先アドレスを切り替える。これによりデータトランスファーコントローラ（ＤＴＣ）１２は、指定された転送先アドレス（タイマＦ５２、タイマＤ５３、タイマＳ５４、Ｉ／Ｏポート５５等）にデータを書き込む。
【０１３８】
カメラレンズＭＣＵ５０、すなわちマイクロコンピュータ１は上述のシフトモードで動作し、ＲＡＭ１４等から構成されるデータ転送情報配置領域から適切なパラメータを読み出して転送することもできる。上述のようにシフトモードは、状況（上述の例ではモータの状態）に応じて読み出すパラメータを変更することができる。状況に応じてパラメータを変更することができるため、フィードバック制御に好適である。
【０１３９】
タイマＳ５４の制御は、上述のようにスイッチモードのデータ転送情報（２）（図１０）を用いて行われる。すなわちデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（１）（図１０）を用いて、所要のコマンドの場合にタイマＳ５４制御用のデータ転送情報（２）を選択し、データ転送情報（２）を用いてデータ転送を行う。例えば、データトランスファーコントローラ（ＤＴＣ）１２は、シャッター半押し等に対応したカメラボディＭＣＵ６０からのコマンド入力により、タイマＳ５４への書き込みを行う。これと同時に、タイマＳ５４制御用のデータ転送情報（２）（図１０）は、別のインターバルタイマの割込みによる一定時間毎のデータ書き込みに用いられてもよい。すなわち一定時間毎にカメラＳ５４への防振制御が行われる構成であってもよい。
【０１４０】
次にステータス要求に関するコマンドが入力された場合について説明する。カメラボディＭＣＵ６０から所定の状態（例えば手振れ補正許可スイッチの状態）を所定レジスタに書き込むことを要求するコマンドがカメラレンズＭＣＵ５０に入力される。データトランスファーコントローラ（ＤＴＣ）１２は、スイッチモードにより動作し、データ転送情報（１）（図１０）読み出し対象となるデータ転送情報（２）（図１０）を選択する。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（２）（図１０）を用いて指定された機能ブロック（例えば入出力（Ｉ／Ｏ）ポート５５）のステータスデータを読み出し、通信モジュール（ＳＣＩ）５１の送信データレジスタに書き込む。送信データレジスタへの書き込みにより、通信モジュール（ＳＣＩ）５１が動作し、送信データレジスタに書き込まれたステータスデータがカメラボディＭＣＵ６０に送信される。上述の処理をデータトランスファーコントローラ（ＤＴＣ）１２が行うことにより、中央処理装置（ＣＰＵ）１０によるデータ転送制御が不要となる。すなわち、中央処理装置（ＣＰＵ）１０の処理負荷が軽減される。
【０１４１】
従来のマイクロコンピュータでは、中央処理装置（ＣＰＵ）が受信完了毎にコマンド解析を行っていた。一方で本実施の形態にかかるデータトランスファーコントローラ（ＤＴＣ）１２は、一般的には中央処理装置（ＣＰＵ）１０が行うコマンド解析等を実行している。そこで中央処理装置（ＣＰＵ）１０は、データトランスファーコントローラ（ＤＴＣ）１２の動作中に低消費電力モード（スリープ、スタンバイ等）に移行してもよい。データトランスファーコントローラ（ＤＴＣ）１２は中央処理装置（ＣＰＵ）１０よりも論理規模が小さく、かつ高速に処理を行うことができる。そのため、中央処理装置（ＣＰＵ）１０が低消費電力モードに移行してデータトランスファーコントローラ（ＤＴＣ）１２のみが動作することにより、低消費電力化の効果を高めることができる。バッテリにより駆動されるカメラシステム等においては、低消費電力化が重要であることは言うまでもない。
【０１４２】
続いて図１６を参照して図１５の構成におけるデータ転送の具体例について説明する。カメラボディＭＣＵ６０は、コマンド種別、転送先アドレス、転送データ数、転送データ、の順で送信を行うものとする。以下、カメラレンズＭＣＵ１内のマイクロコンピュータ１の各処理部の動作について説明する。
【０１４３】
コマンドの受信開始前にデータ転送情報アドレス領域の受信完了割込みベクタ指定アドレス（受信完了割込みが生じた場合に読み出されるアドレス）にスイッチモードを指定するデータ転送情報（１）（２）が設定される。またデータ転送情報（３）〜（８）は、データ転送情報（１）（２）とは異なるアドレス領域に設定される。これらのデータ転送情報は、ＲＯＭ１３に保持されるデータに基づいて設定される。
【０１４４】
コマンド受信完了割込みによって、データトランスファーコントローラ（ＤＴＣ）１２の起動要求が行われる。これに応じてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報アドレス領域内のデータ転送情報（１）からデータを読み出してモードレジスタ（ＭＲ）２３に書き込み、スイッチモードで動作することを判定する。データトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（１）から判定データを読み出し、受信コマンドがデータ受信コマンドであるか否かを上述の範囲内か否かによって判定する。データ受信コマンドである場合（範囲内である場合）、データトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（２）を読み出してレジスタ２３〜２７に書き込む。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、ソースアドレスレジスタ（ＳＡＲ）２４が示すアドレス（本例ではデータ転送情報（３）（４）の配置アドレス）を用いてデータ転送情報（３）（４）を受信完了割込みベクタ指定アドレス（受信完了割込みが生じた場合に読み出されるアドレス）に転送する。
【０１４５】
２回目のコマンド受信完了割込みによって、データトランスファーコントローラ（ＤＴＣ）１２が起動される。データトランスファーコントローラ（ＤＴＣ）１２は、受信完了割込みベクタ指定アドレスからデータ転送情報（３）を読み出す。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（３）を用いて読み出した転送データをデータ転送情報（７）のデスティネーションアドレスレジスタ（ＤＡＲ）２５に書き込む。またデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（３）に従ってチェイン動作（すなわちデータ転送情報（４）を用いたデータ転送）を行う。このチェイン動作によりデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（５）（６）を受信完了割込みベクタ指定アドレス（受信完了割込みが生じた場合に読み出されるアドレス）に転送する。
【０１４６】
３回目のコマンド受信完了割込みによって、データトランスファーコントローラ（ＤＴＣ）１２が起動される。データトランスファーコントローラ（ＤＴＣ）１２は、受信完了割込みベクタ指定アドレスからデータ転送情報（５）を読み出す。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（５）を用いて読み出した転送データをデータ転送情報（７）のデータ転送カウンタ（ＣＲ）２６に書き込む。またデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（５）に従ってチェイン動作を行う。このチェイン動作によりデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（７）（８）を受信完了割込みベクタ指定アドレス（受信完了割込みが生じた場合に読み出されるアドレス）に転送する。
【０１４７】
４回目のコマンド受信完了割込みによって、データトランスファーコントローラ（ＤＴＣ）１２が起動される。データトランスファーコントローラ（ＤＴＣ）１２は、受信完了割込みベクタ指定アドレスからデータ転送情報（７）を読み出す。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（７）を用いて読み出した転送データをデスティネーションアドレスレジスタ（ＤＡＲ）２５が示すアドレスに転送する。この転送は、データ転送カウンタ（ＣＲ）２６で指定された回数だけ繰り返し行われる。
【０１４８】
データ転送情報（７）のモードレジスタ（ＭＲ）２３のＮＸＴＥ０ビットには１がセットされている。これにより指定の回数だけデータ転送が実行されると、チェイン動作によりデータ転送情報（８）を用いたデータ転送が行われる。データ転送情報（８）を用いた転送により例えば中央処理装置（ＣＰＵ）１０に割込み要求が発生する。
【０１４９】
上述のようにスイッチモード、チェインモード等を組み合わせたデータ転送を行うことにより、データトランスファーコントローラ（ＤＴＣ）１２はコマンド種別、送信先アドレス、転送データ数が動的に変化するようなデータ転送も実行することができる。
【０１５０】
図１７は、図１５の構成におけるデータ転送の第２の具体例について説明する。図１７は、図１６と同様のデータ転送を行うデータ例である。図１７では、データ転送情報（３）のＡＣＭビット、ＡＬＭビット、ＣＬＭビット、ＮＸＴＳビット、及びＮＸＴＥ０ビットに１が設定されている。
【０１５１】
１回目のコマンド受信完了割込みに関する転送処理は、図１６の処理と同様である。２回目のコマンド受信完了割込みがデータトランスファーコントローラ（ＤＴＣ）１２に入力される。データトランスファーコントローラ（ＤＴＣ）１２は、受信完了割込みベクタ指定アドレスからデータ転送情報（３）を読み出す。そしてアドレスロードモード（ＡＭＬ＝１）及びカウンタロードモード（ＣＬＭ＝１）が設定されているため、データトランスファーコントローラ（ＤＴＣ）１２は、図８に示す手順でソースアドレスレジスタ（ＳＡＲ）２４とデータ転送カウンタ（ＣＲ）２６を更新する。そしてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送カウンタ（ＣＲ）２６が示す回数だけデータ転送を実行する。データ転送情報（３）のモードレジスタ（ＭＲ）２３のＮＸＴＥ０ビットには１がセットされている。これにより指定の回数だけデータ転送が実行されると、チェイン動作によりデータ転送情報（４）を用いたデータ転送が行われる。データ転送情報（８）を用いた転送により例えば中央処理装置（ＣＰＵ）１０に割込み要求が発生する。
【０１５２】
また図１７では、別のデータ転送の例も示している。１回目のコマンド受信完了割込みによって、データトランスファーコントローラ（ＤＴＣ）１２が起動される。これに応じてデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（１）から読み出したデータをモードレジスタ（ＭＲ）２３に書き込み、スイッチモードで動作することを判定する。データトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（１）の判定データを読み出して判定処理を行い、データ転送情報（２）’を読み出す。データ転送情報（２）’は、指定されたステータスを送信データレジスタに書き込むことを指定する。データトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（２）’を用いてデータ転送を行う。例えばデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送情報（２）’を用いて指定された機能ブロック（例えば入出力（Ｉ／Ｏ）ポート５５）のステータスデータを読み出し、通信モジュール（ＳＣＩ）５１の送信レジスタに書き込む。
【０１５３】
続いて本実施の形態にかかるマイクロコンピュータ１の効果について説明する。データトランスファーコントローラ（ＤＴＣ）１２は、読み出したデータ転送情報からモードを判定し、モードに応じて転送元アドレス、転送先アドレス、転送回数の少なくとも一部を変更する構成である。すなわちデータトランスファーコントローラ（ＤＴＣ）１２は、読み出したデータに応じて一般的には中央処理装置（ＣＰＵ）１０が行う処理を代行し、データ転送を行っている。これにより中央処理装置（ＣＰＵ）１０に対する割込み要求の発生頻度が低減し、中央処理装置（ＣＰＵ）１０が割込み処理を行う場合の例外処理、スタック退避／復帰操作、復帰命令の実行等が不要となる。中央処理装置（ＣＰＵ）１０の処理負荷が減ることにより、マイクロコンピュータ１の処理を高速化できるとともに、応答性を向上することができる。またマイクロコンピュータ１は、応用システムに応じた柔軟なデータ転送を行うことができる。
【０１５４】
またデータトランスファーコントローラ（ＤＴＣ）１２は、テスト転送モード時の範囲外判定時のように、チェイン動作を行うことによりエラー処理等を実行できる。これにより中央処理装置（ＣＰＵ）１０が実行するエラー処理等を削減することができる。また中央処理装置（ＣＰＵ）１０は、専用のハードウェア（例えばデータトランスファーコントローラ（ＤＴＣ）１２）では実現な困難な処理のみを実行する構成にできる。これにより、中央処理装置（ＣＰＵ）１０が実行するプログラムを短縮する（換言すると簡潔にする）ことができる。
【０１５５】
データトランスファーコントローラ（ＤＴＣ）１２は、モードに応じて必要なデータのみを読み出す構成である。例えばデータトランスファーコントローラ（ＤＴＣ）１２は、シフトモードの場合にはモードレジスタ（ＭＲ）２３及びソースアドレスレジスタ（ＳＡＲ）２４に対してのみ読み出したデータを書き込む。このように必要なデータのみを読み書きすることにより、処理の高速化を図ることができる。
【０１５６】
データトランスファーコントローラ（ＤＴＣ）１２は、中央処理装置（ＣＰＵ）１０に比べて論理規模が小さい。すなわちデータトランスファーコントローラ（ＤＴＣ）１２は、中央処理装置（ＣＰＵ）１０よりも消費電力が少ない。また、データトランスファーコントローラ（ＤＴＣ）１２は、高速にデータ転送等を行うことができるので、少ないクロック数で実行することができ、低消費電力化に寄与することができる。このデータトランスファーコントローラ（ＤＴＣ）１２が行う処理が増加したことにより、マイクロコンピュータ１全体の消費電力を抑えることができる。
【０１５７】
またデータトランスファーコントローラ（ＤＴＣ）１２は、データ転送機能制御部（ＦＣ）２０にデータ転送情報の一部を退避しておき、その後の転送処理時に退避したデータを参照することができる。これにより、上述のシフトモードの動作や、複数のデータ転送を組み合わせた複雑な動作を実現することができる。すなわちデータトランスファーコントローラ（ＤＴＣ）１２は、柔軟な動作を実現することができる。
【０１５８】
またマイクロコンピュータ１は、データトランスファーコントローラ（ＤＴＣ）１２が読み出すデータ転送情報を記憶装置（好適にはＲＡＭ１４）に格納している。ＲＡＭ１４がデータ転送情報を保持する利点として以下の事項が挙げられる。
【０１５９】
（ａ）データ転送数を増やすことができる。全てのデータ転送情報をデータ転送装置自身のハードウェアが保持する方式（例えばＤＭＡコントローラの方式）は、実装されたハードウェアによりデータ転送数が制限されてしまう。一方、上述のようにデータ転送情報を使用用途の限定されないＲＡＭ１４に格納する方式は、データ転送数を増やすことが容易であり、利用者の種々の使用方法に対応することができる。
【０１６０】
（ｂ）本実施の形態のマイクロコンピュータ１は、上述のように割込み要因に応じて中央処理装置（ＣＰＵ）１０に割込み要求を行うか、データトランスファーコントローラ（ＤＴＣ）１２にデータ転送要求を行うか、を切り替える構成である。そのため本実施の形態にかかるマイクロコンピュータ１は、起動要因の選択をデータ転送装置自身の制御レジスタ設定及びマイクロコンピュータのインターフェイスとして実装する方式(例えばＤＭＡコントローラの方式)に比べ、多くの割込み及びイベント発生に対してデータ転送を行うことができる。
【０１６１】
（ｃ）チェイン動作等の１回のデータ転送の起動時に実行するデータ転送数を増やすことができる。これにより異なるデータ転送を組み合わせて実行できる。例えば通常のデータ転送とエラー書き込みを連続して実行できる。
【０１６２】
（ｄ）データ転送情報の構成を変更することや、増減することができる。
【０１６３】
（ｅ）本実施の形態にかかるデータトランスファーコントローラ（ＤＴＣ）１２は１回のデータ転送に関するデータのみを保持する。すなわちデータトランスファーコントローラ（ＤＴＣ）１２のハードウェア規模が小さい。そのため第５の利点として、データトランスファーコントローラ（ＤＴＣ）１２にハードウェアでの機能追加を行った場合であっても、マイクロコンピュータ１全体の物理的な規模の増加を抑止することができる。
【０１６４】
（ｆ）上述のように本実施の形態にかかるデータトランスファーコントローラ（ＤＴＣ）１２は、必要なデータ転送情報を自らが読み出して使用するので、中央処理装置（ＣＰＵ）１０から書き込みが行われることがない。そのため第６の利点として、ＤＭＡコントローラ方式では必要であった中央処理装置（ＣＰＵ）１０からの書き込みの競合等の複雑な動作条件を考慮する必要が無くなる。これにより物理的な規模の増加を抑止することができる。
【０１６５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０１６６】
例えば上述の説明では、データ転送情報を３２ビット単位の可変長として説明したが、この単位は任意のサイズとすることができる。またデータ転送機能の指定方法も任意に変更することができる。上述の各アドレスレジスタ（ＳＡＲ、ＤＡＲ）のビット数は３２ビットに限定されるものではなく、中央処理装置（ＣＰＵ）１０またはシングルチップマイクロコンピュータのアドレス空間に応じて変更でき、アドレス空間が１６Ｍバイトである場合には上述のアドレスレジスタは２４ビットとすればよい。
【０１６７】
割込みコントローラ（ＩＮＴ）１１、データトランスファーコントローラ（ＤＴＣ）１２、演算器（ＡＬＵ）２８等の内部構成も適宜変更することが可能である。
【０１６８】
また中央処理装置（ＣＰＵ）１０が実行するプログラムは、ＲＯＭ１３に配置されてもよいし、マイクロコンピュータ１の外部メモリに配置されてもよい。同様に中央処理装置（ＣＰＵ）１０の作業領域はＲＡＭ１４でなくてもよく、マイクロコンピュータ１の外部メモリを使用してもよい。この場合、マイクロコンピュータ１はＲＯＭ１３やＲＡＭ１４を内蔵していなくてもよい。また上述のデータ転送情報についても、ＲＡＭ１４ではなく、外部メモリに配置されていてもよい。
【０１６９】
マイクロコンピュータ１は、データトランスファーコントローラ（ＤＴＣ）１２に加え、いわゆるＤＭＡ（Direct Memory Access）コントローラ等のデータ転送装置を設けることも可能である。またマイクロコンピュータ１は、データトランスファーコントローラ（ＤＴＣ）１２とＤＭＡコントローラを一つの機能モジュールとして持つ構成であってもよい。
【０１７０】
上述の説明ではデータ転送情報をＲＡＭ１４等の記憶装置に読み書きする構成を用いて説明を行ったが、いわゆるＤＭＡコントローラに対しても図５の状態遷移に従ったデータ転送を実行させることができる。すなわち上述のデータ転送情報を用いたモード判定に従って行うデータ転送方式は、任意のデータ転送装置に適用することが可能であり、当該データ転送装置の一例としてデータトランスファーコントローラ（ＤＴＣ）１２やＤＭＡコントローラが挙げられる。
【０１７１】
またバス権やウェイト等のバス動作の詳細については説明を省略したが、これらは適宜実装可能である。
【０１７２】
マイクロコンピュータ１についても上述の構成に限られず、内蔵する機能ブロックの構成も適宜変更することができる。例えば中央処理装置（ＣＰＵ）１０とデータトランスファーコントローラ（ＤＴＣ）１２を同一チップに搭載するシングルチップの構成とすることもできるし、別のチップに搭載する構成とすることもできる。すなわち中央処理装置（ＣＰＵ）１０を第１のチップに搭載し、データトランスファーコントローラ（ＤＴＣ）１２を第２のチップに搭載する構成とすることもできる。また上述のデータトランスファーコントローラ（ＤＴＣ）１２は他の半導体集積回路、例えばデジタルシグナルプロセッサ（ＤＳＰを中心とした半導体集積回路等に搭載することも可能である。
【符号の説明】
【０１７３】
１  マイクロコンピュータ
１０  中央処理装置（ＣＰＵ）
１１  割込みコントローラ（ＩＮＴ）
１２  データトランスファーコントローラ（ＤＴＣ）
１３  ＲＯＭ（Read Only Memory）
１４  ＲＡＭ（Random Access Memory）
１５  バスコントローラ（ＢＳＣ）
１６  タイマ
１７  通信モジュール
１８  アナログモジュール
１９  入出力ポート（Ｉ／Ｏ）
２０  データ転送機能制御部（ＦＣ）
２１  データ転送制御ブロック（ＤＴＣＣＮＴ）
２２  バスインターフェイス（ＢＩＦ）
２３  モードレジスタ（ＭＲ）
２４  ソースアドレスレジスタ（ＳＡＲ）
２５  デスティネーションアドレスレジスタ（ＤＡＲ）
２６  データ転送カウンタ（ＣＲ）
２７  データレジスタ（ＤＲ）
２８  演算器（ＡＬＵ）
２９  ベクタアドレスレジスタ（ＶＡＲ）
３０  ベクタ生成ブロック（ＶＧ）
３１  ラッチ
３２  デコーダ
３３  割込み要因フラグレジスタ
３４  割込み許可回路
３５  割込み／ＤＴＣ判定回路
３６  優先順位判定回路
３７  ＤＴＣ許可レジスタ
４１  ＣＲＣ演算器（ＣＲＣ）
４２  論理演算器（ＬＯＧ）
４３  シフタ（ＳＦＴ）
４４  算術演算器（ＡＲＴ）
４５  出力セレクタ（ＳＥＬ）
５０  カメラレンズＭＣＵ
５１  通信部（ＳＣＩ）
５２  タイマＦ
５３  タイマＤ
５４  タイマＳ
５５  入出力ポート（Ｉ／Ｏ）
６０  カメラボディＭＣＵ
【図１】
2015090637.tif 000003
【図２】
2015090637.tif 000004
【図３】
2015090637.tif 000005
【図４】
2015090637.tif 000006
【図５】
2015090637.tif 000007
【図６】
2015090637.tif 000008
【図７】
2015090637.tif 000009
【図８】
2015090637.tif 000010
【図９】
2015090637.tif 000011
【図１０】
2015090637.tif 000012
【図１１】
2015090637.tif 000013
【図１２】
2015090637.tif 000014
【図１３】
2015090637.tif 000015
【図１４】
2015090637.tif 000016
【図１５】
2015090637.tif 000017
【図１６】
2015090637.tif 000018
【図１７】
2015090637.tif 000019