(57)【要約】【課題】　物理的、論理的規模の増大を最小限に、多数の割り込みによるデータ転送を可能とし、かつ処理効率が向上できる半導体集積回路装置を提供する。【解決手段】　シングルチップマイクロコンピュータに適用され、ＣＰＵ、データトランスファコントローラＤＴＣ、ＲＯＭ、ＲＡＭＩ、ＲＡＭＰ、タイマ、パルス出力回路、シリアルコミュニケーションインタフェースＳＣＩ、Ａ／Ｄ変換器、ＩＯＰ０〜１１、割り込みコントローラ、バスコントローラＢＳＣなどの機能ブロックから構成され、内部アドレスバスＩＡＢ、データバスＩＤＢは、ＣＰＵ、ＲＯＭ、ＲＡＭＩ、ＢＳＣに接続され、一方内部アドレスバスＰＡＢ、データバスＰＤＢは、ＢＳＣ、ＲＡＭＰ、タイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、割り込みコントローラ、ＩＯＰ０〜１１、さらにＰＤＢがＤＴＣに接続されている。【選択図】　図１ 
2004127312.tif 000002
【特許請求の範囲】
【請求項１】
　記憶手段を有する半導体集積回路装置であって、
　前記記憶手段は、転送元アドレスと転送先アドレスと転送回数を指定する転送カウントデータと転送モード情報とからなる転送情報セットを格納しており、
　前記半導体集積回路装置は、前記転送元アドレスと前記転送先アドレスと前記転送カウントデータとが転送されるレジスタと、前記転送モード情報を格納するモードレジスタと、前記転送元アドレスと前記転送先アドレスと前記転送カウントデータと前記転送モード情報とに基づいてデータの転送を行うデータ転送装置とを有し、
　前記転送情報セットを用いたデータ転送においては、前記記憶手段から転送情報セットを前記データ転送装置に読み出し、前記転送情報セットに基づいて所定の転送を行った後、前記転送情報セットに含まれる情報を前記記憶手段へ書き戻しを行うことを１単位とし、
　前記転送モード情報が示す転送モードには第１転送モードと第２転送モードとがあり、前記第１転送モードでは、１回のデータ転送処理において、前記転送情報セットを１つのみ用いて前記１単位のデータ転送を行い、前記第２転送モードでは、１回のデータ転送処理において、前記転送情報セットを複数用いて前記１単位のデータ転送を複数回行うことを特徴とする半導体集積回路装置。
【請求項２】
　請求項１において、
　前記半導体集積回路装置は、さらに、データ処理装置とデータ入出力手段と割り込み制御手段とを有しており、
　前記データ入出力手段は、前記割り込み制御手段に対して割り込み要求を行い、
　前記割り込み制御手段は、前記割り込み要求に応じて、前記データ処理装置に対して割り込み信号を出力し、前記データ転送装置に対して転送開始要求を出力することを特徴とする半導体集積回路装置。
【請求項３】
　請求項２において、
　前記割り込み制御手段は割り込み制御情報を有しており、
　前記割り込み制御情報は、前記データ転送装置のデータ転送の完了に応じて設定変更されることを特徴とする半導体集積回路装置。
【請求項４】
　請求項３において、
　前記割り込み制御情報は、前記転送カウントデータに応じて設定変更されることを特徴とする半導体集積回路装置。
【請求項５】
　請求項２乃至４のいずれかにおいて、
　前記記憶手段は、前記データ転送装置および前記データ処理装置により、データの読み出しあるいは書き込みが可能なランダムアクセスメモリであることを特徴とする半導体集積回路装置。
【請求項６】
　第１状態もしくは第２状態のいずれかの転送モード情報を含む転送情報セットを記憶手段に格納し、
　転送要求があった場合に、前記記憶手段から前記転送情報セットのうちの第１のセットをデータ転送装置のレジスタに読み出し、
　前記第１のセットに基づきデータ転送を行い、
　前記第１のセットに基づくデータ転送を行った後、前記データ転送装置の前記レジスタに記憶された第１のセットの情報を更新して前記記憶手段へ書き戻し、
　前記第１のセットの前記転送モード情報が第１状態である場合には、データ転送を終了し、
　前記第１のセットの前記転送モード情報が第２状態である場合には、前記第１のセットとは異なる第２のセットを前記データ転送装置の前記レジスタに読み出し、前記第２のセットに基づきデータ転送を行うことを特徴とする半導体集積回路装置のデータ転送方法。
【請求項７】
　請求項６において、
　前記記憶手段から読み出した転送情報セットの転送モード情報が第２状態である間、転送情報の読み出しおよびデータ転送処理を継続することを特徴とする半導体集積回路装置のデータ転送方法。
【請求項８】
　請求項６または７において、
　前記第１のセットもしくは前記第２のセットのいずれかは、ブロック転送を指定する転送情報セットであることを特徴とする半導体集積回路装置のデータ転送方法。
【請求項９】
　請求項６または７において、
　前記第１のセットもしくは前記第２のセットのいずれかは、連続転送を指定する転送情報セットであることを特徴とする半導体集積回路装置のデータ転送方法。
【請求項１０】
　請求項６乃至９のいずれかにおいて、
　前記第１のセットまたは前記第２のセットに基づくデータ転送は、中央処理装置からの割り込みにより初期化されることを特徴とする半導体集積回路装置のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、半導体集積回路装置に関し、特に中央処理装置とデータ転送装置を内蔵したシングルチップマイクロコンピュータに利用して良好な半導体集積回路装置に適用して有効な技術に関する。
【背景技術】
【０００２】
　たとえば、シングルチップマイクロコンピュータは、非特許文献１（昭和５９年１１月３０日、（株）オーム社発行の「ＬＳＩハンドブック」Ｐ５４０〜５４１）に記載されるように、中央処理装置（ＣＰＵ）を中心にしてプログラム保持用のＲＯＭ（リードオンリメモリ）、データ保持用のＲＡＭ（ランダムアクセスメモリ）、およびデータの入出力を行うための入出力回路などの機能ブロックが一つの半導体基板上に形成されている。
【０００３】
　このようなシングルチップマイクロコンピュータに、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を内蔵し、ＣＰＵとは独立にデータ転送を内蔵したものに、非特許文献２（平成５年３月、（株）日立製作所発行の「Ｈ８／３００３　ハードウェアマニュアル」）などがある。
【０００４】
　このＤＭＡＣは、割り込み要求によって起動でき、リピートモード、ブロック転送モードなどを行うことができ、ステッピングモータの制御やプリンタの印字データ制御に好適であり、この例では最大８チャネルの転送を行うことができる。このＤＭＡＣの転送はＣＰＵと独立しているために、データ転送に必要なバスサイクルのみＣＰＵを停止すればよく、ＣＰＵは、前記バスサイクル以外は実行中の処理を継続できる。
【０００５】
　たとえば、ＲＡＭから入出力回路にバイトデータの転送で転送元・転送先アドレスをインクリメントする場合、ＲＡＭのアクセスを２ステート、入出力回路のアクセスを３ステートとして、前記の例では、デッドサイクル１ステートを含めて、データ転送６ステートである。なお、シングルチップマイクロコンピュータまたは半導体集積回路装置の基準クロックの１周期をステートとする。
【０００６】
　しかしながら、このようなＤＭＡＣは、転送元アドレス、転送先アドレス、転送カウンタ、制御レジスタを各チャネルに持つために、多数のチャネルのデータ転送を行おうとすれば、前記レジスタを多数組設けなければならず、ＤＭＡＣの、ひいては半導体集積回路装置全体の論理的・物理的規模を増大させてしまう。さらに、規模の増大は製造費用を増大させてしまう。換言すれば、適当な規模あるいは製造費用で、割り込み要因の全て、あるいは大多数のデータ転送を行うことは困難である。
【０００７】
　また、アドレス指定レジスタのビット数を制限することによって、チャネル数を増加することを可能にしているが、これは転送に必要なメモリまたはレジスタを局所的に配置する必要があり、使い勝手を低下させ、あるいは十分な入出力回路を内蔵してデータ転送を行うことを困難にしてしまう。
【０００８】
　一方、このようなレジスタを、記憶密度が高い汎用のＲＡＭ上に配置し、論理的、物理的規模の増大を防いだデータ転送装置、いわゆるデータトランスファコントローラ（ＤＴＣ）を内蔵したものに、非特許文献３（昭和６３年１２月、（株）日立製作所発行の「Ｈ８／５３２　ハードウェアマニュアル」）などがある。このＤＴＣでは、実質的に全ての割り込み要因によってデータ転送を行うことができる。
されている。
【非特許文献１】昭和５９年１１月３０日、（株）オーム社発行の「ＬＳＩハンドブック」Ｐ５４０〜５４１
【非特許文献２】平成５年３月、（株）日立製作所発行の「Ｈ８／３００３　ハードウェアマニュアル」
【非特許文献３】昭和６３年１２月、（株）日立製作所発行の「Ｈ８／５３２　ハードウェアマニュアル」
【発明の開示】
【発明が解決しようとする課題】
【０００９】
　ところが、前記のようなＤＴＣを内蔵した技術においても、転送情報を保持するレジスタを汎用のＲＡＭ上に配置したために、データ転送に先だって、このレジスタをＤＴＣに読み込み、この読み込んだ内容に従ってデータ転送を行い、さらにデータ転送によって更新されたレジスタ情報をＲＡＭに退避する必要があり、データ転送に比較して大きな時間をレジスタの読み込み、退避に費やしてしまうという問題が生じる。
【００１０】
　従って、この期間はＣＰＵを停止しなければならず、このためにシングルチップマイクロコンピュータまたは半導体集積回路装置全体の処理効率を低下させてしまう。たとえば、バイトデータの転送で転送元、転送先アドレスをインクリメントする場合、前記の例ではデータ転送５ステートに対して、レジスタの読み込み、退避に３０ステートを要し、合計３５ステートの期間ＣＰＵは停止することになる。
【００１１】
　そこで、本発明の目的は、物理的、論理的規模の増大を最小限とし、多数の割り込みによるデータ転送を可能とし、かつ処理効率を向上させることができる半導体集積回路装置、特に中央処理装置とデータ転送装置を内蔵したシングルチップマイクロコンピュータを提供することにある。
【００１２】
　本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
　本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
【００１４】
　すなわち、本発明における第１の半導体集積回路装置は、データ処理装置、データ転送装置、バス制御手段およびデータ入出力手段を有する半導体集積回路装置であって、第１、第２の記憶手段が接続可能とされ、データ処理装置、バス制御手段および第１の記憶手段が第１のバスにより相互に接続され、かつデータ転送装置、バス制御手段、第２の記憶手段およびデータ入出力手段が第２のバスにより相互に接続され、バス制御手段は第１のバスと第２のバスとを接続するか否かを選択するものである。
【００１５】
　また、第２の半導体集積回路装置は、データ処理装置と、このデータ処理装置の実行するプログラムを内蔵した第３の記憶手段と、データ処理装置の作業領域となる第１の記憶手段と、データ処理装置、第３の記憶手段および第１の記憶手段を接続する第１のバスと、データ転送装置と、このデータ転送装置のデータ転送情報を格納する第２の記憶手段と、データ転送装置の起動を要求することができるデータ入出力手段と、データ転送装置、第２の記憶手段およびデータ入出力手段を接続する第２のバスと、この第１のバスと第２のバスとを接続可能とするバス制御手段とを有するものである。
【００１６】
　さらに、第３の半導体集積回路装置は、データ処理装置を有する半導体集積回路装置であって、データ処理装置のアドレス空間上に、複数の記憶手段と、データ入出力手段とを配置可能とし、さらにデータ転送装置を有し、複数の記憶手段およびデータ入出力手段の内の少なくとも１つ以上を、データ処理装置とデータ転送装置とが並列して読み出しまたは書き込むことを可能とし、データ転送装置が複数の記憶手段を読み出しまたは書き込む第２のバスを有し、データ処理装置は、第２のバスを利用せずに、複数の記憶手段とは別の記憶手段を読み出しまたは書き込むための第１のバスを有するものである。
【００１７】
　また、第４の半導体集積回路装置は、データ転送装置を有する半導体集積回路装置であって、データ転送装置が行うデータ転送のアドレス、データ、転送データ数または転送方法の内の少なくとも１つ以上の情報を記憶手段に格納可能とし、この少なくとも１つ以上の情報には、データ転送装置の１回の動作で複数組の少なくとも１つ以上の情報によるデータ転送を指定可能な情報を含むものである。
【００１８】
　（作用）
　前記した第１の半導体集積回路装置によれば、第１のバスによってデータ処理装置、バス制御手段および第１の記憶手段が接続され、かつ第２のバスによってデータ転送装置、バス制御手段、第２の記憶手段およびデータ入出力手段が接続される場合に、この第１のバスと第２のバスとの接続がバス制御手段によって選択されることにより、接続を行なわないときには、データ処理装置の第１のバスを使用した読み出しまたは書き込みと、データ転送装置の第２のバスを使用した読み出しまたは書き込みとを並行して行うことができる。
【００１９】
　すなわち、データ処理装置の使用するバスとデータ転送装置の使用するバスを分離可能とし、データ処理装置のバス使用とデータ処理装置のバス使用を同時に行うことを可能とし、さらにデータ処理装置とデータ転送装置のそれぞれの動作に必要な機能ブロックまたはモジュールをそれぞれのバスによって接続するデータ転送装置の転送情報を記憶手段に設け、データ転送装置と記憶手段をバスで直接接続し、この記憶手段から転送情報を取り出してデータ転送装置が動作するようにしたものである。
【００２０】
　従って、データ転送装置の転送情報を記憶密度の高い記憶手段に設けることによって、物理的規模を縮小し、シングルチップマイクロコンピュータまたは半導体集積回路の製造費用を削減し、あるいは適正な規模または製造費用で転送チャネル数を増大することができる。さらに、アドレス指定レジスタのビット数を十分に大きくすることができ、またデータ処理装置とデータ転送装置が同時に動作することにより、シングルチップマイクロコンピュータまたは半導体集積回路の処理速度を向上させることができる。プログラム格納用の第３の記憶手段を有することにより、シングルチップマイクロコンピュータまたは半導体集積回路の小型化を図ることができる。
【００２１】
　また、第２の半導体集積回路装置においては、データ処理装置、第３の記憶手段および第１の記憶手段が第１のバスによって接続され、データ転送装置、第２の記憶手段およびデータ入出力手段が第２のバスによって接続され、この第１のバスと第２のバスとがバス制御手段によって接続可能とされることにより、前記と同様に物理的規模を縮小して製造費用を削減し、またアドレス指定レジスタのビット数を十分に大きくし、さらにシングルチップマイクロコンピュータまたは半導体集積回路の処理速度を向上させることができる。
【００２２】
　同様に、第３の半導体集積回路装置においても、データ転送装置が複数の記憶手段を読み出しまたは書き込む第２のバスと、データ処理装置は、この複数の記憶手段とは別の記憶手段を読み出しまたは書き込むための第１のバスとが含まれ、また第４の半導体集積回路装置においても、データ転送装置の１回の動作で、少なくとも１つ以上の情報によるデータ転送が指定可能とされることにより、物理的規模の縮小による製造費用の削減、アドレス指定レジスタのビット数の増大、さらにシングルチップマイクロコンピュータまたは半導体集積回路における処理速度の向上を図ることができる。
【発明の効果】
【００２３】
　本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、下記のとおりである。
【００２４】
　（１）データ処理装置の使用する第１のバスとデータ転送装置の使用する第２のバスを分離可能とし、データ処理装置の第１のバス使用とデータ転送装置の第２のバス使用を同時に行うことを可能とし、さらにデータ処理装置とデータ転送装置のそれぞれの動作に必要な機能ブロックまたはモジュールをそれぞれのバスによって接続し、特にデータ転送装置の転送情報を第２の記憶手段に設け、データ転送装置と第２の記憶手段を第２のバスで直接接続し、この第２の記憶手段から転送情報を取り出してデータ転送装置が動作できるようにすることによって、データ転送装置の転送情報を記憶密度の高い第２の記憶手段に設けることができるので、物理的規模を縮小し、シングルチップマイクロコンピュータまたは半導体集積回路の製造費用を削減し、あるいは適正な規模または製造費用で転送チャネル数の増大が可能となる。
【００２５】
　（２）前記（１）により、システム構成上の自由度を向上させることができるので、使い勝手の向上が可能となる。
【００２６】
　（３）前記（１）により、データ処理装置とデータ転送装置を同時に動作させることができるので、シングルチップマイクロコンピュータまたは半導体集積回路の処理速度の向上が可能となる。
【００２７】
　（４）前記（１）〜（３）により、物理的、論理的規模の増大を最小限とし、多数の割り込みによるデータ転送を可能とし、かつ処理効率を向上させることができる半導体集積回路装置、特に中央処理装置とデータ転送装置を内蔵したシングルチップマイクロコンピュータを得ることができる。
【発明を実施するための最良の形態】
【００２８】
　以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２９】
　図１は本発明の一実施の形態の半導体集積回路装置であるシングルチップマイクロコンピュータの主要部を示すブロック図、図２は本実施の形態のシングルチップマイクロコンピュータの割り込み要因を示す説明図、図３はアドレスマップの説明図、図４はアドレスバス、データバスの構成図、図５〜図１５は各機能ブロックまたはモジュールの説明図、図１６〜図２２はデータトランスファコントローラの動作フローチャート、図２３〜図２４は内部バスの動作タイミング図、図２５はブロック転送モードの動作例を示す説明図、図２６〜図２８は本実施の形態のシングルチップマイクロコンピュータを用いたプリンタ制御装置の主要部を示すブロック図とその使用方法および動作例を示す説明図、図２９は本実施の形態の変形例であるシングルチップマイクロコンピュータの主要部を示すブロック図である。
【００３０】
　まず、図１により本実施の形態のシングルチップマイクロコンピュータの主要部の構成を説明する。
【００３１】
　本実施の形態のシングルチップマイクロコンピュータは、たとえばデータ処理装置、データ転送装置、バス制御手段およびデータ入出力手段を有するシングルチップマイクロコンピュータに適用され、中央処理装置（データ処理装置：ＣＰＵ）、データトランスファコントローラ（データ転送装置：ＤＴＣ）、リードオンリメモリ（第３の記憶手段：ＲＯＭ）、ランダムアクセスメモリ（第１の記憶手段：ＲＡＭＩ）、ランダムアクセスメモリ（第２の記憶手段：ＲＡＭＰ）、タイマ、パルス出力回路、シリアルコミュニケーションインタフェース（ＳＣＩ）、Ａ／Ｄ変換器（Ａ／Ｄ）、入出力ポート（ＩＯＰ０〜１１）、割り込みコントローラ（割り込み制御手段）、バスコントローラ（バス制御手段：ＢＳＣ）、クロック発振器（ＣＰＧ）の機能ブロックまたはモジュールからなり、タイマはタイマＡおよびタイマＢの２つの部分から構成されている。
【００３２】
　これらの機能ブロックは、内部バスによって相互に接続され、この内部バスはアドレスバス、データバスの他、図示はされないリード信号、ライト信号、さらにバスサイズ信号、システムクロックを含み、内部アドレスバスにはＩＡＢ、ＤＴＡＢ、ＰＡＢが存在し、一方内部データバスにはＩＤＢ（第１のバス）、ＰＤＢ（第２のバス）が存在し、これらのバスはＢＳＣによってインタフェースされている。
【００３３】
　ＩＡＢ、ＩＤＢは、ＣＰＵ、ＲＯＭ、ＲＡＭＩ、ＢＳＣに接続され、さらにＩＡＢは外部バスのアドレスバスとするためにＩＯＰ０〜３に接続され、ＩＤＢは外部バスのデータバスとするためにＩＯＰ４、５に接続される。
【００３４】
　ＰＡＢ、ＰＤＢは、ＢＳＣ、ＲＡＭＰ、タイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、割り込みコントローラ、ＩＯＰ０〜１１に接続され、さらにＰＤＢはＤＴＣに接続される。また、ＤＴＡＢは、ＤＴＣとＢＳＣを接続する。なお、ＲＡＭＩはＩＡＢ、ＩＤＢに接続され、ＲＡＭＰはＰＡＢ、ＰＤＢに接続されている点で相違される。
【００３５】
　ＣＰＵとＤＴＣが、いわゆるバスマスタとして内部バスを使用することができる。ＲＯＭ、ＲＡＭＩ、ＲＡＭＰおよびタイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、ＩＯＰ０〜１１、割り込みコントローラの各機能ブロックは、バススレーブとしてＣＰＵまたはＤＴＣによってリード／ライトされる。
【００３６】
　割り込みコントローラは、タイマ、ＳＣＩ、Ａ／Ｄ変換器、入出力ポート（ＩＯＰ１１）の出力する割り込み信号を入力し、ＣＰＵに割り込み要求信号を、ＤＴＣに起動要求信号を出力する。また、ＤＴＣの出力するクリア信号を入力して割り込みクリア信号を出力する。
【００３７】
　入出力ポートは、外部バス信号、入出力回路の入出力信号と兼用とされている。ＩＯＰ０〜３はアドレスバス出力、ＩＯＰ４、５はデータバス入出力、ＩＯＰ６はバス制御信号入出力信号と兼用されている。外部アドレス、外部データは、それぞれこれらの入出力ポートに含まれるバッファ回路を介してＩＡＢ、ＩＤＢと接続されている。ＰＡＢ、ＰＤＢは入出力ポートのレジスタをリード／ライトするために使用し、外部バスとは直接の関係はない。
【００３８】
　バス制御信号出力は、アドレスストローブ、ハイ／ロウデータストローブ、リードストローブ、ライトストローブ、バスアクノリッジ信号などがある。バス制御入力信号にはウェイト信号、バスリクエスト信号などがある。これらの入出力信号は図示はされない。外部バス拡張を行うことは、動作モードなどで選択され、これらの入出力ポートの機能も選択される。
【００３９】
　また、ＩＯＰ７はタイマ入出力、ＩＯＰ８はパルス出力、ＩＯＰ９はＳＣＩ入出力、ＩＯＰ１０はアナログ入力、ＩＯＰ１１は外部割り込み要求（ＩＲＱ）入力と兼用されている。タイマ、ＳＣＩ、Ａ／Ｄ変換器とＩＯＰ７、ＩＯＰ９、ＩＯＰ１０との入出力信号は図示はされない。
【００４０】
　そのほか、電源端子Ｖｃｃ、Ｖｓｓ、アナログ電源端子ＡＶｃｃ、ＡＶｓｓ、リセット入力ＲＥＳ、スタンバイ入力ＳＴＢＹ、割り込み入力ＮＭＩ、クロック入力ＥＸＴＡＬ、ＸＴＡＬ、動作モード入力ＭＤ０、ＭＤ１、ＭＤ２などの入力端子がある。
【００４１】
　続いて、図２によりシングルチップマイクロコンピュータの例外処理要因の一覧を説明する。この例外処理には、リセット、割り込み、トラップ命令があり、リセット、トラップ命令については、本発明に直接の関係はないので詳細な説明は省略する。
【００４２】
　割り込み要因には、外部割り込み９要因、タイマＡ、Ｂ割り込み１０要因、ＳＣＩ３要因、Ａ／Ｄ変換器１要因が含まれる。この割り込み要因は、ＣＰＵに割り込みを要求するほか、ＤＴＣの起動要因となる。ただし、ＮＭＩ割り込み、タイマのオーバフロー割り込み、ＳＣＩの受信エラー割り込みなどは例外的な要因であり、ソフトウェアで処理するものであるため、ＣＰＵの割り込み要求のみである。このような割り込みのＤＴＣベクタアドレスには「−」が記入されている。
【００４３】
　ＤＴＣの起動要因となる割り込みには、ＤＴＣ許可レジスタＡ、Ｂ、Ｃ、Ｄに、ＤＴＣ許可ビットが設けられている。たとえば、ＩＲＱ０はＤＴＣ許可レジスタＡのビット７（ＤＴＥＡ７）を“１”にセットすると、ＩＲＱ０はＤＴＣ起動要因とされ、割り込み要因が発生するとＤＴＣが起動される。このとき、ＣＰＵに対する割り込みは要求されない。
【００４４】
　割り込み要因は、ＣＰＵの割り込み要因として、およびＤＴＣの起動要因としてそれぞれ固有のベクタアドレスを有する。ＣＰＵのベクタアドレスとしては、Ｈ’００００００００以降のＲＯＭのアドレス、ＤＴＣのベクタアドレスとしてはＨ’ＦＦＦＦＦＣ００以降のＲＡＭＰのアドレスに配置されている。
【００４５】
　なお、各機能ブロックの割り込みが４要因を単位とし、４または８要因に不足する部分が予約となっているが、これは４要因単位で割り込み優先順位を設定可能としたことに対応するものであり、本発明には直接の関係はない。予約とされた割り込みは、このシングルチップマイクロコンピュータでは発生しない。
【００４６】
　続いて、図３によりシングルチップマイクロコンピュータのアドレスマップを説明する。
【００４７】
　このシングルチップマイクロコンピュータにおいては、アドレス空間は４Ｇバイトとし、１バイト毎にアドレスが割り当てられ、各機能ブロックは接続するバスに拘らず、ＣＰＵのアドレス空間上で固有のアドレスを有する。なお、データ入出力回路（データ入出力手段：Ｉ／Ｏ）は、図１のタイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、入出力ポート、割り込みコントローラのレジスタを含む。
【００４８】
　ＲＯＭは、特に制限はされないものの、３２ｋバイトとし、アドレスＨ’００００００００〜Ｈ’００００７ＦＦＦ、ＲＡＭＩは１ｋバイトとし、Ｈ’ＦＦＦＦＦ７８０〜Ｈ’ＦＦＦＦＦＢ７Ｆ、ＲＡＭＰは１ｋバイトとし、アドレスＨ’ＦＦＦＦＦＢ８０〜Ｈ’ＦＦＦＦＦＦ７Ｆ、Ｉ／ＯはアドレスＨ’ＦＦＦＦＦＦ８０〜Ｈ’ＦＦＦＦＦＦＦＦに配置されている。なお、Ｈ’は１６進数を示す。また、前記ＣＰＵのベクタアドレスはＲＯＭの領域、ＤＴＣのベクタアドレスはＲＡＭＰの領域に配置している。
【００４９】
　続いて、図４によりシングルチップマイクロコンピュータのアドレスバス、データバスの接続状態を説明する。
【００５０】
　前記の通り、Ｉ／Ｏには、図１のタイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、入出力ポート、割り込みコントローラのレジスタを含み、ＣＰＧなどのバスと接続されていない機能ブロックあるいはモジュールは省略する。
【００５１】
　アドレスバスとしては、ＣＰＵ、ＲＯＭ、ＲＡＭＩ、外部を接続するＩＡＢ、ＤＴＣの出力するＤＴＡＢ、ＲＡＭＰ、Ｉ／Ｏを接続するＰＡＢがある。このアドレスバスは、ＢＳＣでインタフェースされている。
【００５２】
　データバスとしては、ＣＰＵ、ＲＯＭ、ＲＡＭＩ、外部を接続するＩＤＢ、ＤＴＣ、ＲＡＭＰ、Ｉ／Ｏを接続するＰＤＢがある。このデータバスＩＤＢ、ＰＤＢは、ＢＳＣでインタフェースされている。必要に応じて、ＩＤＢとＰＤＢは接続され、データの入出力が行われる。なお、ＩＡＢ、ＩＤＢはバッファ回路（ＢＵＦ）を介して、外部バスに接続される。このバッファ回路（ＢＵＦ）はＩＯＰ０〜５に含まれる。
【００５３】
　続いて、図５〜図１５により、ＤＴＣ、ＤＴＣモードレジスタ、割り込みコントローラ、ＢＳＣなどの各機能ブロックまたはモジュールの構成、機能などを順に説明する。
【００５４】
　まず、図５によりＤＴＣのレジスタ構成を説明する。
【００５５】
　ＤＴＣのレジスタは、３２ビット構成のベクタアドレスレジスタ（ＶＡＲ）、ソースアドレスレジスタ（ＳＡＲ）、デスティネーションレジスタ（ＤＡＲ）、１６ビット構成のブロック転送カウントレジスタ（ＢＴＣＲ）、転送カウントレジスタ（ＴＣＲ）、モードレジスタ（ＤＴＭＲ）からなり、転送カウントレジスタは８ビットずつ上位（ＴＣＲＨ）、下位（ＴＣＲＬ）に分割されている。
【００５６】
　ＶＡＲ、ＳＡＲ、ＤＡＲは３２ビット長であり、４Ｇバイトのアドレス空間全領域を指定できる。ＢＴＣＲ、ＴＣＲは１６ビット長であり、最大６４ｋ回の転送を指定できる。最大値はＨ’００００とされ、６５５３６と見なされる。
【００５７】
　これらのレジスタは、１組分の回路がＤＴＣの内部に存在し、特に制限はされないものの、ＣＰＵのアドレス空間上には存在しない。これらに格納されるべき転送情報は、ＶＡＲについてはＤＴＣベクタアドレスに、そのほかのレジスタは、必要組数がＣＰＵのアドレス空間上のＶＡＲの内容で示されるアドレス、たとえばＲＡＭＰに配置される。なお、ＲＡＭＰ以外のメモリに配置することも可能である。
【００５８】
　続いて、図６によりＤＴＭＲのビット構成を説明する。
【００５９】
　ビット１５、ビット１４は、ＳＭ１、ＳＭ０ビットであり、データ転送後にＳＡＲをインクリメントするか、デクリメントするか、固定にするかを指定する。ＳＭ１ビットを“０”にクリアすると、ＳＡＲは固定とされる。ＳＭ１ビットを“１”にセットした状態で、ＳＭ０ビットを“０”にクリアするとインクリメント、ＳＭ０ビットを“１”にセットするとデクリメントが行われる。
【００６０】
　ビット１３、ビット１２は、ＤＭ１、ＤＭ０ビットであり、データ転送後にＤＡＲをインクリメントするか、デクリメントするか、固定にするかを指定する。ＤＭ１ビットを“０”にクリアすると、ＤＡＲは固定とされる。ＤＭ１ビットを“１”にセットした状態で、ＤＭ０ビットを“０”にクリアするとインクリメント、ＤＭ０ビットを“１”にセットするとデクリメントが行われる。
【００６１】
　ビット１１、ビット１０は、ＭＤ１、ＭＤ０ビットであり、データ転送モードを選択する。ＭＤ１、ＭＤ０ビットを“０”にクリアするとノーマルモードとなる。このノーマルモードでは、１回の起動で、ＳＡＲで示されるアドレスからＤＡＲで示されるアドレスへ１回のデータ転送を行う。
【００６２】
　この後、ＳＭ１、ＳＭ０、ＤＭ１、ＤＭ０ビットの指定に基づいてＳＡＲ、ＤＡＲの操作が行われ、ＴＣＲがデクリメントされる。これを起動要因が発生する毎に、ＴＣＲで指定された回数だけ繰り返す。そして、ＴＣＲで指定された回数のデータ転送が終了するとＤＴＣ動作が禁止され、起動要因となった割り込みがＣＰＵに要求される。
【００６３】
　ＭＤ１を“０”にクリア、ＭＤ０ビットを“１”にセットするとリピートモードとなる。このリピートモードでは、１回の起動で、ＳＡＲで示されるアドレスからＤＡＲで示されるアドレスへ１回のデータ転送を行う。転送回数は８ビットのＴＣＲＨ、ＴＣＲＬで指定する。
【００６４】
　データ転送後、ＳＭ１、ＳＭ０、ＤＭ１、ＤＭ０ビットの指定に基づいてＳＡＲ、ＤＡＲの操作が行われ、ＴＣＲＨがデクリメントされる。これを起動要因が発生する毎に、ＴＣＲＨで指定された回数だけ繰り返す。そして、ＴＣＲＨで指定された回数のデータ転送が終了すると、ＴＣＲＬに保持した内容に基づいてＳＡＲまたはＤＡＲ、ＴＣＲＨの初期設定値が回復される。ＣＰＵによって起動要因となる割り込みを禁止するか、ＤＴＣを禁止するまで転送を繰り返す。
【００６５】
　ＭＤ１を“１”にセット、ＭＤ０ビットを“０”にクリアするとブロック転送モードとなる。このブロック転送モードでは、１回の起動で、ＳＡＲで示されるアドレスからＤＡＲで示されるアドレスへ複数回のデータ転送を行う。
【００６６】
　その後、ＢＴＣＲがデクリメントされる。１回の起動で行うデータ転送の回数は８ビットのＴＣＲＨ、ＴＣＲＬで指定する。これを起動要因が発生する毎に、ＢＴＣＲで指定された回数だけ繰り返す。そして、ＢＴＣＲで指定された回数のデータ転送が終了するとＤＴＣ動作が禁止され、起動要因となった割り込みがＣＰＵに要求される。なお、ＭＤ１、ＭＤ０ビットを“１”にセットすることはシステム予約とされ、禁止されている。
【００６７】
　ビット９はＤＴＳビットであり、リピートモードまたはブロック転送モードのとき、ソース側、デスティネーション側のいずれをリピート領域またはブロック領域とするかを選択する。
【００６８】
　ビット８はＳｚビットであり、１回のデータ転送をバイトサイズで行うか、ワードサイズで行うかを選択する。このＳｚビットを“０”にクリアするとバイトサイズ、“１”にセットするとワードサイズのデータ転送が行われる。なお、ワードサイズは２バイトである。
【００６９】
　ビット７はＮＸＴＥビットであり、１つの起動要因に対してデータ転送を終了するか、次のデータ転送を行うかを選択する。このＮＸＴＥビットを“０”にクリアするとレジスタファイルのリードおよびデータ転送後、レジスタファイルをライトしてＤＴＣの動作をを終了する。
【００７０】
　また、このＮＸＴＥビットを“１”にセットした状態では、レジスタファイルのリードおよびデータ転送後、レジスタファイルをライトして、さらに連続したアドレスからレジスタファイルをリードして、このレジスタファイルに指定したデータ転送を行い、レジスタファイルをライトする。
【００７１】
　続いて、図７によりＤＴＣのレジスタの機能を説明する。
【００７２】
　ノーマルモードでは、ＳＡＲを転送元アドレス指定レジスタ、ＤＡＲを転送先アドレス指定レジスタ、ＴＣＲ１６ビットを転送カウントレジスタとして使用し、ＢＴＣＲは使用しない。このＴＣＲが０になるまで、転送要求を受け付ける。
【００７３】
　リピートモードでは、ＳＡＲを転送元アドレス指定レジスタ、ＤＡＲを転送先アドレス指定レジスタとして使用する。このとき、ＤＴＳビットが“１”にセットされていれば転送先がリピート領域とされ、ＤＴＳビットが“０”にクリアされていれば転送元がリピート領域とされる。
【００７４】
　ＴＣＲＨ８ビットを転送カウントレジスタ、ＴＣＲＬを転送回数保持レジスタとして使用し、ＴＣＲＨとＴＣＲＬには、初期設定時に同じ値を設定する。このＴＣＲＨが“０”になると、ＴＣＲＬの内容がＴＣＲＨに転送され、ＳＡＲまたはＤＡＲの初期設定時の値が回復される。
【００７５】
　すなわち、ＤＴＳビットが“１”にセットされているとき、ＳＡＲ＋ＳＭ１・（（−１）＾ＳＭ０）・２＾Ｓｚ・ＴＣＲＬの演算が行われ、ＳＡＲの初期設定時の値が回復される。また、ＤＴＳビットが“０”にクリアされているとき、ＤＡＲ＋ＤＭ１・（（−１）＾ＤＭ０）・２＾Ｓｚ・ＴＣＲＬの演算が行われ、ＤＡＲの初期設定時の値が回復される。ＢＴＣＲは使用しない。そして、ＣＰＵが割り込みを禁止するか、ＤＴＣを禁止するまで転送要求を受け付ける。なお、＾はべき乗を示す。
【００７６】
　ブロック転送モードでは、ＳＡＲを転送元アドレス指定レジスタ、ＤＡＲを転送先アドレス指定レジスタ、ＴＣＲＨ８ビットをブロックサイズカウントレジスタ、ＴＣＲＬをブロックサイズ保持レジスタ、ＢＴＣＲをブロック転送カウントレジスタとして使用する。
【００７７】
　このとき、ＤＴＳビットが“１”にセットされていれば、転送先がブロック領域とされ、ＤＴＳビットが“０”にクリアされていれば、転送元がブロック領域とされる。１回の転送要求で、ＴＣＲＨが“０”になるまで転送する。そして、ＴＣＲＨが“０”になると、ＢＴＣＲをデクリメントし、ＴＣＲＬの内容がＴＣＲＨに転送され、ＳＡＲまたはＤＡＲの初期設定時の値が回復される。
【００７８】
　ＤＴＳビットが“１”にセットされているとき、ＳＡＲ＋ＳＭ１・（（−１）＾ＳＭ０）・２＾Ｓｚ・ＴＣＲＬの演算が行われる。また、ＤＴＳビットが“０”にクリアされているとき、ＤＡＲ＋ＤＭ１・（（−１）＾ＤＭ０）・２＾Ｓｚ・ＴＣＲＬの演算が行われる。そして、ＢＴＣＲが“０”になるまで転送要求を受け付ける。
【００７９】
　リピートモード、ブロック転送モードのデータ転送動作の内容については、前記平成５年３月、（株）日立製作所発行「Ｈ８／３００３　ハードウェアマニュアル」などと概略同様である。ただし、本発明ではリピートモードのとき、アドレス指定レジスタ（ＳＡＲ、ＤＡＲ）のビット数を拡張してアドレス空間の全領域を使用可能としている。
【００８０】
　続いて、図８によりＤＴＣのブロック構成を説明する。
【００８１】
　ＤＴＣは、制御回路、データバッファ（ＤＢ）、アドレスバッファ（ＡＢ）、バスインタフェース（ＭＩＦ）、ＤＴＭＲ、ＢＴＣＲ、ＴＣＲ、ＤＡＲ、ＳＡＲ、ＶＡＲ、算術演算回路（ＡＵ）、セレクタ、シフタ、ベクタアドレス生成回路（ＶＡＧ）の各ブロックからなり、これらのブロックは、Ａバス、Ｂバス、Ｃバス、ＩＦバスの４本の内部バスによって結合されている。
【００８２】
　制御回路は、割り込みコントローラの出力するＤＴＣ起動要求信号が活性状態になると動作を開始し、そのほかの各部の動作を制御する。また、バス権の要求を行って、ＢＳＣの出力するバス権アクノリッジ信号が活性状態であるのを確認してリード／ライト動作を行う。このリード／ライト動作を示すリード信号、ライト信号、サイズ信号を出力する。バスの動作状態に応じて、ウェイト信号、データストローブ信号を入力して動作する。
【００８３】
　また、転送動作は、ＤＴＭＲの保持する内容に従って制御される。所定の動作終了時に転送終了信号、要因クリア信号、ＤＴＥクリア信号を割り込みコントローラに出力する。この転送終了信号とベクタ番号に応じて、割り込みコントローラは要因クリア信号などを出力する。特に制限はされないものの、割り込みコントローラは起動要求を活性状態にしてから転送終了信号が活性状態になるまでの期間、ベクタ番号を保持するようにされる。
【００８４】
　アドレスバッファは、アドレス空間が４Ｇバイトであるのに対応して、３２ビット構成であり、Ａバスからデータを入力し、ＤＴＣのリード／ライトするアドレスを保持してＤＴＡＢに出力する。
【００８５】
　データバッファは１６ビット構成であり、ＰＤＢと接続され、ＤＴＣのリード／ライトするデータを格納する。インタフェースバス、バスインタフェースを介して、ＤＴＣの内部回路と接続されている。
【００８６】
　バスインタフェースは３２ビット構成であり、ＤＴＣのレジスタとデータバッファとのインタフェースを行う。このデータバッファは１６ビット、ＤＴＣ内部は３２ビット構成のため、バスインタフェースでデータのアライメントを行う。
【００８７】
　ＤＴＭＲ、ＢＴＣＲ、ＴＣＲ、ＤＡＲ、ＳＡＲ、ＶＡＲの各レジスタの機能は前記の通りである。Ｂバスからデータを入力して、Ａバスに出力する。ＴＣＲＬは、さらにＣバスにデータを出力し、ＴＣＲＨは、さらにＣバスからデータを入力する。
【００８８】
　算術演算回路（ＡＵ）は加減算処理を行い、一方の入力はＡバス、他方の入力はシフタの出力である。ただし、上位ビットはシフタの出力は”０”とみなされる。結果はＢバスに出力される。
【００８９】
　シフタは、セレクタの出力を入力し、１ビットの左（上位）方向へのシフトを可能とする。この１ビットのシフトは、×２の処理と等価であり、ワードサイズの転送を可能としていることに対応する。
【００９０】
　セレクタは、Ｃバスの内容を入力し、図示はされない定数値（１）との選択を行って出力する。また、＋２の演算は、セレクタが１を出力し、シフタで×２とし、ＡＵでＡバスの内容と加算を行う。
【００９１】
　リピートモード、ブロック転送モードのとき、ＴＣＲＨがＨ’００になると、ＴＣＲＬの内容がＣバスに出力され、ＴＣＲＨに転送されるとともに、セレクタを経由してシフタに入力される。Ｓｚビットが“１”にセットされているとき、シフトが行われ、Ｓｚビットが“０”にクリアされているとき、そのまま算術演算器に入力される。この値は、（２＾Ｓｚ）・ＴＣＲＬで表現される。
【００９２】
　一方、算術演算器にはＡバスを経由して、ＳＡＲまたはＤＡＲの内容が入力される。ＤＴＳビットが“０”にクリアされているとき、ＤＡＲが選択され、ＤＴＳビットが“１”にセットされているとき、ＳＡＲが選択される。また、算術演算器の演算は、加算または減算またはＡバスの内容出力とされる。
【００９３】
　これは、ＳＭ１、ＳＭ０、またはＤＭ１、ＤＭ０ビットの内容によって選択される。ＤＴＳビットが“０”にクリアされているとき、ＤＭ１、ＤＭ０ビットが選択され、ＤＴＳビットが“１”にセットされているとき、ＳＭ１、ＳＭ０ビットが選択される。
【００９４】
　ＳＭ１またはＤＭ１ビットが“０”にクリアされている場合、算術演算器はＡバスの内容出力とされる。ＳＭ１ビットが“１”にセットされ、ＳＭ０ビットが“０”にクリアされている場合またはＤＭ１ビットが“１”にセットされ、ＤＭ０ビットが“０”にクリアされている場合（インクリメントを指定した場合）、算術演算器は減算とされる。
【００９５】
　ＳＭ１、ＳＭ０ビットがいずれも“１”にセットされている場合、またはＤＭ１、ＤＭ０ビットがいずれも“１”にセットされている場合（デクリメントを指定した場合）、算術演算器は加算とされる。この演算は、ＤＴＳビットが“０”にクリアされている場合、−ＤＭ１・（（−１）＾ＤＭ０）、ＤＴＳビットが“１”にセットされている場合、−ＳＭ１・（（−１）＾ＳＭ０）と表現される。
【００９６】
　すなわち、ＤＴＳビットが“０”にクリアされている場合、ＤＡＲ−ＤＭ１・（（−１）＾ＤＭ０）・（２＾Ｓｚ）・ＴＣＲＬ、の演算が行われ、ＤＴＳビットが“１”にセットされている場合、ＳＡＲ−ＳＭ１・（（−１）＾ＳＭ０）・（２＾Ｓｚ）・ＴＣＲＬの演算が行われる。
【００９７】
　ベクタアドレス生成回路は、割り込みコントローラの出力するベクタ番号を入力してＤＴＣベクタアドレスを生成する。上位２４ビットはＨ’ＦＦＦＦＦＣとし、下位８ビットには、ベクタ番号を２ビット左（上位）方向へシフトして入力するものである。最下位２ビットは“０”に固定されている。
【００９８】
　続いて、図９によりＤＴＣのレジスタの１セット分のメモリ上での構成を説明する。
【００９９】
　ベクタアドレスレジスタ（ＶＡＲ）は、起動要因毎に固有のＤＴＣベクタアドレスに格納されている。このベクタアドレスレジスタの内容（ｍ）は、モードレジスタ（ＤＴＭＲ）、ソースアドレスレジスタ（ＳＡＲ）、デスティネーションレジスタ（ＤＡＲ）、ブロック転送カウントレジスタ（ＢＴＣＲ）、転送カウントレジスタ（ＴＣＲ）、ソースアドレスレジスタ（ＳＡＲ）、デスティネーションレジスタ（ＤＡＲ）の存在する領域の先頭アドレスとなる。これらのアドレスはアドレスｍ〜ｍ＋１３の連続した領域とされる。
【０１００】
　たとえば、ＤＴＣが起動されると、起動要因に固有のＤＴＣベクタアドレスからＶＡＲの内容を読み出す。次に、ＶＡＲの内容をインクリメントしつつ、ＤＴＭＲから順次読み出す。この読み出し終了時には、ＤＴＣ内のＶＡＲは初期値（ｍ）を保持している。
【０１０１】
　データ転送後、ＶＡＲの内容をインクリメントしつつ、ＤＴＭＲから順次元のアドレスに書き込む。この書き込み終了時には、ＤＴＣ内のＶＡＲは最後のアドレスの次のアドレス（ｍ＋１４）を保持している。なお、各レジスタは１６ビットを単位としており、内部バスは１６ビット構成とされるために前記インクリメントは＋２とされる。
【０１０２】
　ＤＴＭＲのＮＸＴＥビットを“１”にセットすると、１つの転送が終了後、同一の起動要因で次のデータ転送を行う。この次のデータ転送のレジスタは、前記レジスタに連続したアドレスに、前記同様にＤＴＭＲ、ＢＴＣＲ、ＴＣＲ、ＳＡＲ、ＤＡＲの順序でアドレスｍ＋１４〜ｍ＋２７に配置される。
【０１０３】
　第２のＤＴＭＲのＮＸＴＥビットを“１”にセットすると、さらに次のレジスタが配置される。同様に、ＤＴＭＲのＮＸＴＥビットを“０”にクリアしたものまで次のレジスタが配置される。
【０１０４】
　レジスタファイルには、１４バイトの容量を必要とするため、このレジスタファイルをＶＡＲによらず、固定的なベクタアドレスで示すようにすると、ＤＴＣを使用しないベクタアドレスには１４バイトのメモリが余ってしまう。あるいは、１つの起動要因に、複数のレジスタファイルを割り当てることが困難である。
【０１０５】
　全起動要因に対して、一律に２組などとすると、多くの起動要因は１組で十分なので１組分のメモリが余ってしまう。また、使用しない起動要因には２組分のメモリが余ってしまう。これらの分散したアドレスに残されたメモリを、そのほかの用途に有効に利用することは困難である。任意組数は使用できなくなってしまい、使用上の制約が発生し、システム構成上の自由度が低下する。
【０１０６】
　レジスタファイルをＶＡＲで示すようにしたことで、レジスタファイルを任意のアドレスに配置してメモリの利用効率を向上することができる。また、１つの起動要因に対応して、任意組数のレジスタを配置し、転送を行うことができる。使用しない起動要因に対しても、余るメモリはＶＡＲの４バイトである。多様な使い方を可能とし、メモリの利用効率を向上することができる。ＶＡＲを読み出す手順が追加されるが、ＣＰＵの動作を停止しないことが可能なので、処理効率を低下することはない。
【０１０７】
　続いて、図１０によりＤＴＣ許可レジスタの構成を説明する。
【０１０８】
　ＤＴＣ許可レジスタは、ＤＴＥＲＡ、Ｂ、Ｃ、Ｄの４本があり、特に制限はされないものの、割り込みコントローラに含まれる。割り込み要因が発生した場合に、ＣＰＵに割り込みを要求するか、ＤＴＣに起動を要求するかを選択する。この割り込み要因に対応して１ビットが設けられており、これらのビットと割り込み要因との対応は図２の通りである。なお、図２に記載のないビット（ＤＴＥＢ１、０、ＤＴＥＣ５、４、１、０、ＤＴＥＤ６、５、４、３、２、１、０ビット）はリザーブビットである。
【０１０９】
　リセットによって“０”にクリアされ、ＣＰＵのライト動作によって“１”にセットされるとＤＴＣが許可される。そして、ＤＴＣの転送が終了すると、対応するＤＴＣ許可ビットが“０”にクリアされる。このリザーブビットは、特に制限はされないものの、“０”に保持するものとし、ＣＰＵまたはＤＴＣが“１”をライトすることは禁止されている。
【０１１０】
　続いて、図１１により割り込みコントローラの概略ブロックを説明する。
【０１１１】
　割り込み要因には、内部割り込み、外部割り込みの２種類があり、それぞれ割り込み要因フラグを有し、内部割り込みの要因フラグは、タイマ、ＳＣＩ、Ａ／Ｄ変換器の入出力回路が所定の状態になったときに“１”にセットされる。
【０１１２】
　外部割り込みの要因フラグは、外部割り込み入力端子が所定のレベルになったとき、または所定の信号変化が発生したときに“１”にセットされる。割り込み要因フラグは、ＣＰＵのライト動作によって“０”にクリアされるほか、ＤＴＣによる転送が終了したときに“０”にクリアされる。
【０１１３】
　割り込み要因フラグの各ビットの出力は、割り込み許可回路に入力され、この割り込み許可回路には、さらに割り込み許可レジスタの内容、すなわち割り込み許可ビットが入力される。この割り込み許可レジスタは、ＣＰＵからリード／ライト可能なレジスタで、対応する割り込みを許可するか、禁止するかを選択する。
【０１１４】
　たとえば、割り込み要因フラグが“１”にセットされ、割り込み許可ビットが“１”にセットされていると割り込みが要求される。すなわち、割り込み許可回路は、対応する割り込み要因フラグと割り込み許可ビットとを入力とした論理積回路で構成される。
【０１１５】
　割り込み許可回路の出力は、割り込み／ＤＴＣ判定回路に入力される。この割り込み許可回路には、さらにＤＴＣ許可レジスタの内容が入力され、前記の通り、ＤＴＣ許可レジスタは、割り込みが要求されたとき、ＤＴＣを起動するか、ＣＰＵに割り込みを許可するかを選択する。
【０１１６】
　たとえば、ＤＴＣ許可レジスタのビットが“１”にセットされていると、ＤＴＣの起動が要求され、ＣＰＵの割り込みは要求されない。ＤＴＣ許可レジスタのビットが“０”にクリアされていると、ＣＰＵの割り込みが要求され、ＤＴＣの起動は要求されない。
【０１１７】
　すなわち、割り込み／ＤＴＣ判定回路は、対応する割り込み信号とＤＴＣ許可ビットの論理積回路、および割り込み信号とＤＴＣ許可ビットの反転信号の論理積回路で構成され、前者の論理積回路の出力がＤＴＣ起動要求信号とされ、後者の論理積回路の出力がＣＰＵ割り込み要求信号とされる。
【０１１８】
　ＤＴＣ許可回路の出力は、ＣＰＵ割り込み要求とＤＴＣ起動要求が独立に優先順位判定回路に入力される。この優先順位判定回路には、さらにプライオリティレジスタの出力が入力され、プライオリティレジスタは割り込み要因のグループ毎に、たとえば２レベルの優先順位を設定する。
【０１１９】
　ＣＰＵ割り込み要求、ＤＴＣ起動要求のそれぞれについて優先順位を判定する。この判定の結果、優先順位の最高のものが選択され、ベクタ番号が生成され、ＣＰＵ割り込み要求、ＤＴＣ起動要求のそれぞれの要求信号とベクタ番号が出力される。
【０１２０】
　ＣＰＵ割り込み要求信号、ベクタ番号はマスクレベル判定回路に入力される。このマスクレベル判定回路には、さらにＣＰＵの割り込みマスクビットが入力され、要求された割り込みがＣＰＵの割り込みマスクレベル以下であれば保留される。
【０１２１】
　ＣＰＵに対する割り込み要求信号が活性状態になると、ＣＰＵは実行中の命令の終了時点で割り込み例外処理を開始し、ベクタ番号に対応するベクタアドレスから分岐先アドレスを取り出し、割り込み処理ルーチンへ分岐する。
【０１２２】
　このような優先順位判定や割り込みマスクレベルについては、前記平成５年３月、（株）日立製作所発行「Ｈ８／３００３　ハードウェアマニュアル」などによって公知であるので、詳細な説明は省略する。
【０１２３】
　ＤＴＣ起動要求はＤＴＣに入力され、またＤＴＣベクタ番号はラッチ回路に入力される。ＤＴＣ起動信号およびＤＴＣ転送終了信号がＤＴＣから出力され、ラッチ回路に入力される。このＤＴＣが動作を開始すると、ＤＴＣ起動信号が活性状態になりラッチが行われる。そして、ＤＴＣのデータ転送が終了してＤＴＣ転送終了信号が活性状態になり、ラッチは解除される。従って、ＤＴＣ動作中はラッチ回路の出力するＤＴＣベクタ番号は保持される。
【０１２４】
　また、ＤＴＣベクタ番号とＤＴＣ転送終了信号はデコーダ回路に入力され、対応する割り込み要因フラグに対して要因クリア信号が活性状態になって、要因フラグまたはＤＴＥビットがクリアされる。特に制限はされないものの、割り込み要因フラグ、割り込み許可ビット、割り込み許可回路は、各入出力回路に内蔵されている。または、割り込みコントローラに有するようにしてもよい。
【０１２５】
　続いて、図１２によりＢＳＣの概略ブロックを説明する。
【０１２６】
　ＢＳＣは、データバスバッファ回路、アドレスバスバッファ回路、アドレス判定回路、バス権調停回路、シーケンサから構成され、データバスバッファ回路およびアドレスバスバッファ回路の制御はシーケンサにより行われる。
【０１２７】
　ＣＰＵは、ＣＰＵバス権要求信号、ＣＰＵリード要求信号、ＣＰＵライト要求信号、およびＩＡＢを出力し、ＣＰＵバス権アクノリッジ信号、ＣＰＵウェイト要求信号、ＩＡＢ解放信号を入力して動作する。
【０１２８】
　同様に、ＤＴＣは、ＤＴＣバス権要求信号、ＤＴＣリード要求信号、ＤＴＣライト要求信号、およびＤＴＡＢを出力し、ＤＴＣバス権アクノリッジ信号、ＤＴＣウェイト信号を入力して動作する。その他に、図示はされないＣＰＵまたはＤＴＣのデータストローブ信号またはデータバッファの制御信号なども出力する。
【０１２９】
　ＣＰＵまたはＤＴＣのいずれか一方がバス権を要求した場合、バス権アクノリッジ信号を活性状態にしてバス権を与える。また、ＣＰＵおよびＤＴＣの両方がバス権を要求した場合には、アドレスの判定とバス権の調停を行い、ＣＰＵの出力するＩＡＢ、ＤＴＣの出力するＤＴＡＢをアドレス判定回路に入力する。
【０１３０】
　ＣＰＵがＲＯＭ、ＲＡＭＩ、外部のＩＤＢに接続されたメモリまたはレジスタ（ＩＤＢ側）をリード／ライト、ＤＴＣがＲＡＭＰ、Ｉ／ＯのＰＤＢに接続されたメモリまたはレジスタ（ＰＤＢ側）をリード／ライトする場合には、ＣＰＵおよびＤＴＣの両方にバス権を与える。
【０１３１】
　ＣＰＵがＲＡＭＰ、Ｉ／ＯのＰＤＢに接続されたメモリまたはレジスタ（ＰＤＢ側）をリード／ライト、またはＤＴＣがＲＯＭ、ＲＡＭＩ、外部のＩＤＢに接続されたメモリまたはレジスタ（ＩＤＢ側）をリード／ライトする場合には、バス権の調停を行う。
【０１３２】
　そして、ＩＤＢ側、ＰＤＢ側の両方のバスサイクルが終了した時点で、ＤＴＣまたはＣＰＵのいずれか一方にバス権を与える。ここで、ＤＴＣがＣＰＵよりバス権の優先順位を高く設定しているので、ＤＴＣがバスを要求していれば、ＤＴＣにバス権を与える。
【０１３３】
　たとえば、ＤＴＣがＰＤＢ側をリード／ライトしている期間にＣＰＵがＰＤＢ側のリード／ライトを要求すれば、ＤＴＣがリード／ライトを終了するまでバス権調停は保留される。さらに、ＤＴＣの方が優先順位が高いため、ＤＴＣがバス権を放棄するまでＣＰＵは待機状態とされる。
【０１３４】
　また、バス権が与えられると、ＩＤＢ側、ＰＤＢ側の一方または両方で、リードまたはライトのバスサイクルが起動される。
【０１３５】
　たとえば、ＣＰＵがＩＤＢ側、ＤＴＣがＰＤＢ側をリード／ライトしている場合には、データバスバッファ回路は解放状態となり、ＩＤＢとＰＤＢのデータは互いに独立している。また、アドレスバスバッファ回路はＤＴＡＢの内容をＰＡＢに出力する。
【０１３６】
　また、ＣＰＵがＰＤＢ側をリードしている場合には、ＰＤＢからＩＤＢへのバッファがオン状態になり、またアドレスバスバッファ回路は、ＩＡＢの内容をＰＡＢに出力する。
【０１３７】
　一方、ＣＰＵがＰＤＢ側をライトしている場合には、ＩＤＢからＰＤＢへのバッファがオン状態になり、またアドレスバスバッファ回路は、ＩＡＢの内容をＰＡＢに出力する。
【０１３８】
　さらに、ＤＴＣがＩＤＢ側をリードしている場合には、ＩＤＢからＰＤＢへのバッファがオン状態になり、またアドレスバスバッファ回路は、ＤＴＡＢの内容をＩＡＢに出力し、ＣＰＵにはＩＡＢ解放信号が与えられ、ＣＰＵのＩＡＢ出力は解放状態とされる。
【０１３９】
　一方、ＤＴＣがＩＤＢ側をライトしている場合には、ＰＤＢからＩＤＢへのバッファがオン状態になり、またアドレスバスバッファ回路は、ＤＴＡＢの内容をＩＡＢに出力する。前記同様に、ＣＰＵにはＩＡＢ解放信号が与えられ、ＣＰＵのＩＡＢ出力は解放状態とされる。
【０１４０】
　続いて、図１３によりバスの動作状態の第１の状態を説明する。
【０１４１】
　ＣＰＵが、ＲＯＭからプログラムをリードする場合、またはＲＡＭＩとのデータのリード／ライトする場合には、ＩＡＢ、ＩＤＢを使用して動作が行われる。なお、外部バスは図示はされないが、バッファ回路を介して同様にリード／ライトできる。また、ＣＰＵはＰＡＢ、ＰＤＢを使用しない。
【０１４２】
　このとき、ＤＴＣによるＲＡＭＰのリード／ライト、およびＲＡＭＰとＩ／Ｏ間のデータ転送は、ＤＴＡＢ、ＰＡＢ、ＰＤＢを利用して行われ、ＰＡＢにはＤＴＡＢの内容が出力され、ＰＤＢとＩＤＢは切り離され、さらにＤＴＣはＩＡＢ、ＩＤＢを使用しない。すなわち、ＣＰＵの動作を停止せず、データ転送を行うことができる。
【０１４３】
　ＣＰＵが、ＲＯＭまたはＲＡＭＩまたは外部をリード／ライトし、ＤＴＣがＲＡＭＰまたはＩ／Ｏをリード／ライトしている場合は、ＣＰＵとＤＴＣが並列動作可能である。
【０１４４】
　続いて、図１４によりバスの動作状態の第２の状態を説明する。
【０１４５】
　ＣＰＵが、ＲＯＭからプログラムをリードまたはＲＡＭＩとのデータのリード／ライトと、ＤＴＣによるＲＯＭまたはＲＡＭＩのリード／ライトまたはデータ転送が行われる場合、バス権調停が行われる。
【０１４６】
　このとき、ＤＴＣによるバス権要求がＣＰＵによるバス権要求より優先される。このバス権調停は、ＤＴＡＢに示されるアドレスによってＢＳＣが行い、ＤＴＣが、ＩＡＢ、ＩＤＢを使用したＲＯＭまたはＲＡＭＩのリード／ライトを行おうとすると、ＣＰＵのバスアクセスが終了した時点で、ＣＰＵに対するバス権アクノリッジ信号を非活性状態にし、ＩＡＢ解放信号を活性状態にする。
【０１４７】
　そして、ＤＴＡＢの内容をＩＡＢに出力し、ＩＤＢとＰＤＢを接続する。これにより、ＤＴＣによるＲＯＭまたはＲＡＭＩのリード／ライトを行うことができる。しかしながら、ＣＰＵは停止状態になる。
【０１４８】
　続いて、図１５によりバスの動作状態の第３の状態を説明する。
【０１４９】
　ＣＰＵが、ＲＡＭＰとＩ／Ｏのリード／ライトを行う場合も、バス権調停が行われ、前記の通りＤＴＣによるバス権要求が、ＣＰＵによるバス権要求より優先されるため、ＤＴＣがバスを使用していないときにのみ、ＲＡＭＰとＩ／Ｏのリード／ライトを行うことができる。
【０１５０】
　また、ＲＡＭＰとＩ／Ｏのリード／ライト中にＤＴＣがバス権を要求した場合には、ＣＰＵのバス使用が終了するまでＤＴＣは待機状態とされる。一方、ＣＰＵによるＲＡＭＰとＩ／Ｏのリード／ライト時には、ＩＡＢの内容がＰＡＢに出力され、ＩＤＢとＰＤＢを接続する。
【０１５１】
　次に、本実施の形態の作用について、図１６によりＤＴＣの動作フローの概略を説明する。
【０１５２】
　まず、ＣＰＵは、予めＲＡＭＰ上のＤＴＣベクタアドレスに、レジスタファイルの先頭アドレス（ｍ）をライトし、このアドレス（ｍ）からレジスタファイルの初期値をライトする。その後、割り込み要因の許可ビットを“１”にセットし、ＤＴＣ許可ビットを“１”にセットする。
【０１５３】
　そして、ＤＴＣ許可ビットが“１”にセットされた状態で、所定の割り込み要求が発生してＤＴＣが起動されると、まず、ステップ１（Ｓ１）で、起動要因に対応したベクタアドレスから、ベクタアドレスレジスタ（ＶＡＲ）の内容をリードし、ＤＴＣ内部の所定のレジスタに格納する。このリード後、１ステートの待機状態または内部処理状態となる。
【０１５４】
　ステップ２（Ｓ２）で、ベクタアドレスレジスタの内容で示されるアドレスから、モードレジスタ（ＤＴＭＲ）、ブロック転送カウントレジスタ（ＢＴＣＲ）、転送カウントレジスタ（ＴＣＲ）、ソースアドレスレジスタ（ＳＡＲ）、デスティネーションレジスタ（ＤＡＲ）を順次リードし、ＤＴＣ内部の所定のレジスタに格納する。このリード後、前記同様に１ステートの待機状態または内部処理状態となる。
【０１５５】
　ステップ３（Ｓ３）で、リードしたレジスタの内容に従ってデータ転送が行われる。これに伴って、レジスタの内容が更新される。たとえば、ノーマルモードおよびリピートモードでは、１回のデータ転送が行われる。また、ブロック転送モードでは、ＴＣＲＨおよびＣＲＬで指定された回数の転送が行われる。そして、データ転送後、前記同様に１ステートの待機状態または内部処理状態となる。
【０１５６】
　ステップ４（Ｓ４）で、レジスタの内容を、元のアドレスに格納する。このとき、ＮＸＴＥビットが“１”にセットされていると、ステップ１（Ｓ１）に戻り、連続したアドレスから、ＤＴＭＲ、ＢＴＣＲ、ＴＣＲ、ＳＡＲ、ＤＡＲを順次リードし、前記動作を繰り返す。
【０１５７】
　一方、ＮＸＴＥビットが“０”にクリアされていると、ＤＴＣの動作は停止する。そして、転送カウンタの内容が０でなければ、要因クリア信号を活性状態にし、割り込みコントローラを介して割り込み要因フラグを“０”にクリアする。
【０１５８】
　また、転送カウンタの内容が０のとき、割り込み要因のクリアは行わず、ＤＴＣ許可ビットを“０”にクリアする。なお、転送カウンタは、ノーマルモードのときＴＣＲ、リピートモードのときＴＣＲＨ、ブロック転送モードのとき、ＢＴＣＲが用いられる。
【０１５９】
　そして、ＤＴＣの動作停止後、ＤＴＣ許可ビットが“０”にクリアされ、割り込み要因が保持されているため、ＣＰＵの割り込み例外処理が実行され、割り込み処理ルーチンを実行する。このＣＰＵの割り込み処理ルーチンで、割り込み要因フラグを“０”にクリアする必要がある。
【０１６０】
　なお、ＣＰＵは、ＤＴＣによる転送が終了したことを、ＲＡＭ上に配置されたレジスタ、特にＢＴＣＲまたはＴＣＲをリードし、内容が０であることを確認することによっても知ることができる。
【０１６１】
　また、ＤＴＣの動作中に、ＣＰＵがＰＤＢ側をリード／ライトする場合、ＣＰＵは一旦停止状態になるが、前記の通り、ＤＴＣの動作中でも、動作ステップの切れ目でバスを解放するので、ＣＰＵが長期間停止状態になることを回避できる。少なくとも、連続してＰＤＢ側をリード／ライトする場合以外は、ＤＴＣの動作ステップの切れ目でＣＰＵが動作することができる。
【０１６２】
　このような並列動作を有効に利用するためには、ＤＴＣによるデータ転送を、ＲＡＭＰとＩ／Ｏ間で行うようにするとよい。また、ＣＰＵの命令をＲＯＭに配置し、作業領域をＲＡＭＩに配置するとよい。
【０１６３】
　さらに、ＣＰＵのバスサイクルでは、命令のリードのほうがデータのリード／ライトよりも頻度が高いため、ＣＰＵによるＤＴＣおよびＩ／Ｏの初期設定を除けば、ＤＴＣの転送終了後に、ＲＡＭＰに蓄積したデータを処理する場合を含めて、ＣＰＵによるＲＡＭＰおよびＩ／Ｏのリード／ライトの頻度を小さくし、処理速度の低下を小さくし、ほぼＣＰＵとＤＴＣが並列動作したものと同等の処理速度とすることができ、従来技術に比較して処理速度を向上できる。
【０１６４】
　続いて、図１７に基づいて、図１６のステップ１の詳細な動作フローを説明する。
【０１６５】
　ステップ１（Ｓ１）では、まず、ステップ１０１（Ｓ１０１）で、バス権要求信号を活性状態にしてバス権を要求する。
【０１６６】
　そして、割り込みコントローラの出力するベクタ番号に基づいて、起動要因に対応したベクタアドレスをベクタアドレス発生回路（ＶＡＧ）が生成する。この内容が、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１６７】
　さらに、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となり、同時に待機状態を示す信号として、ＤＴＣウェイト信号が活性状態とされる。
【０１６８】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ１０２（Ｓ１０２）でリードサイクルを開始する。また、インクリメントされた内容をＢバス経由でＤＡＲに格納する。
【０１６９】
　なお、この時点でＤＡＲには有効なデータがないため、一時的な作業用レジスタとしてＤＡＲを使用している。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１７０】
　ステップ１０３（Ｓ１０３）で、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。また、ＤＡＲに格納されたＤＴＣベクタアドレス＋２の内容を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。
【０１７１】
　ステップ１０４（Ｓ１０４）で、リードサイクルを開始し、ＤＢの内容を、Ｂバスを経由してＶＡＲの上位１６ビット（ＶＡＲＨ）に格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１７２】
　ステップ１０５（Ｓ１０５）で、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込み、バス権要求信号を非活性状態にして、バス権を放棄する。
【０１７３】
　ステップ１０６（Ｓ１０６）で、ＤＢの内容を、Ｂバスを経由してＶＡＲの下位１６ビット（ＶＡＲＬ）に格納する。そして、次のレジスタファイルのリードのためにバス権を要求する。同時に、ＶＡＲの内容（ｍ）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。
【０１７４】
　そして、Ａバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。このとき、φに同期したＤＢのＢバスからの入力が、φ＃に同期したＡバスへの出力に先行して行われる。このφ＃はφの反転信号である。
【０１７５】
　なお、データバッファ（ＤＢ）からＢバスへは、ＩＦバスおよびバスインタフェース（ＭＩＦ）を介してデータ転送が行われるが、この記述は省略している。
【０１７６】
　続いて、図１８に基づいて、図１６のステップ２の詳細な動作フローを説明する。
【０１７７】
　ステップ２（Ｓ２）では、ステップ１０６（Ｓ１０６）に継続して動作が行われ、まず、バス権アクノリッジ信号を参照してバス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となる。同時に、待機状態を示す信号としてＤＴＣウェイト信号が活性状態とされる。
【０１７８】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ２０１（Ｓ２０１）でリードサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１７９】
　ステップ２０２（Ｓ２０２）で、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。また、ＤＡＲに格納されたＶＡＲ＋２の内容（ｍ＋２）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１８０】
　ステップ２０３（Ｓ２０３）で、リードサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１８１】
　ステップ２０４（Ｓ２０４）で、ＤＢの内容を、Ｂバスを経由してＤＴＭＲに格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。このとき、φに同期したＤＢのＢバスへの出力が、φ＃に同期したデータバスからＤＢへの入力に先行して行われる。
【０１８２】
　また、ＤＡＲに格納されたＶＡＲ＋４の内容（ｍ＋４）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１８３】
　ステップ２０５（Ｓ２０５）で、リードサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１８４】
　ステップ２０６（Ｓ２０６）で、ＤＢの内容を、Ｂバスを経由してＢＴＣＲに格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０１８５】
　また、ＤＡＲに格納されたＶＡＲ＋６の内容（ｍ＋６）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１８６】
　ステップ２０７（Ｓ２０７）でリードサイクルを開始する。インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１８７】
　ステップ２０８（Ｓ２０８）で、ＤＢの内容を、Ｂバスを経由してＴＣＲに格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０１８８】
　また、ＤＡＲに格納されたＶＡＲ＋８の内容（ｍ＋８）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１８９】
　ステップ２０９（Ｓ２０９）で、リードサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１９０】
　ステップ２１０（Ｓ２１０）で、ＤＢの内容を、Ｂバスを経由してＳＡＲの上位１６ビット（ＳＡＲＨ）に格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０１９１】
　また、ＤＡＲに格納されたＶＡＲ＋１０の内容（ｍ＋１０）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０１９２】
　ステップ２１１（Ｓ２１１）で、リードサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１９３】
　ステップ２１２（Ｓ２１２）で、ＤＢの内容を、Ｂバスを経由してＳＡＲの下位１６ビット（ＳＡＲＬ）に格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。また、ＤＡＲに格納されたＶＡＲ＋１２の内容（ｍ＋１２）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。
【０１９４】
　ステップ２１３（Ｓ２１３）で、リードサイクルを開始し、このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０１９５】
　ステップ２１４（Ｓ２１４）で、ＤＢの内容を、Ｂバスを経由してＤＡＲの上位１６ビット（ＤＡＲＨ）に格納する。リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。そして、バス権要求信号を非活性状態にしてバス権を放棄する。
【０１９６】
　ステップ２１５（Ｓ２１５）で、次のデータ転送のためにバス権を要求する。そして、ＳＡＲの内容を、Ａバスを経由してＡＢに入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、処理の内容はＳＭ１、ＳＭ０ビットに基づく。なお、ＤＢに格納されているＤＡＲの下位１６ビット（ＤＡＲＬ）の内容は、ステップ３（Ｓ３）でＤＡＲに格納される。
【０１９７】
　続いて、図１９に基づいて、図１６のステップ３のノーマルモードの詳細な動作フローを説明する。
【０１９８】
　ステップ３（Ｓ３）では、ステップ２１５（Ｓ２１５）に継続して動作が行われ、まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となる。同時に、待機状態を示す信号としてＤＴＣウェイト信号が活性状態とされる。
【０１９９】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ３０１（Ｓ３０１）ａでリードサイクルを開始する。このＡＵで処理された内容を、Ｂバス経由でＳＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２００】
　ステップ３０２（Ｓ３０２）ａで、ＤＢの内容を、Ｂバスを経由してＤＡＲの下位１６ビット（ＤＡＲＬ）に格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０２０１】
　また、ＤＡＲの内容を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、処理の内容は、ＤＭ１、ＤＭ０ビットに基づく。
【０２０２】
　ステップ３０３（Ｓ３０３）ａで、ライトサイクルを開始し、ＤＢの内容をデータバスに出力する。このＡＵで処理された内容を、Ｂバス経由でＤＡＲに格納し、さらにＴＣＲの内容をＡＵに取り込み、デクリメントを行う。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２０３】
　ステップ３０４（Ｓ３０４）ａで、ライトサイクルを終了し、ＡＵでデクリメントされた内容をＢバス経由でＴＣＲに格納する。このデクリメント結果がＨ’００００であるか、内部の状態フラグに保持する。そして、バス権要求信号を非活性状態にしてバス権を放棄する。
【０２０４】
　ステップ３０５（Ｓ３０５）ａで、次のレジスタファイルのライトのためにバス権を要求する。同時に、ＶＡＲの内容（ｍ）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２０５】
　続いて、図２０に基づいて、図１６のステップ３のリピートモードの詳細な動作フローを説明する。
【０２０６】
　まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となる。同時に、待機状態を示す信号としてＤＴＣウェイト信号が活性状態とされる。
【０２０７】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ３０１（Ｓ３０１）ｂでリードサイクルを開始する。このＡＵで処理された内容を、Ｂバス経由でＳＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２０８】
　ステップ３０２（Ｓ３０２）ｂで、ＤＢの内容を、Ｂバスを経由してＤＡＲの下位１６ビット（ＤＡＲＬ）に格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０２０９】
　また、ＤＡＲの内容を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、処理の内容は、ＤＭ１、ＤＭ０ビットに基づく。
【０２１０】
　ステップ３０３（Ｓ３０３）ｂで、ライトサイクルを開始し、ＤＢの内容をデータバスに出力する。このＡＵで処理された内容を、Ｂバス経由でＤＡＲに格納し、さらにＴＣＲＨの内容をＡバスを経由してＡＵに取り込み、デクリメントを行う。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２１１】
　ステップ３０４（Ｓ３０４）ｂで、ライトサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。そして、このＡＵでデクリメントされた内容を、Ｂバス経由でＴＣＲＨに格納する。
【０２１２】
　このデクリメント結果がＨ’００であれば、ＳＡＲまたはＤＡＲ、およびＴＣＲＨの初期設定値が復帰される。そして、前記の通り、ＤＴＳビットが“０”にクリアされていればＤＡＲ、またＤＴＳビットが“１”にセットされていれば、ＳＡＲの内容がＡバスを経由してＡＵに入力される。
【０２１３】
　そして、ＴＣＲＬの内容がＣバスに出力され、ＴＣＲＨに格納されるとともに、セレクタ、シフタ経由でＡＵに入力される。このセレクタ、シフタ、ＡＵの処理の内容は前記の通りである。そして、バス権要求信号を非活性状態にして、バス権を放棄する。
【０２１４】
　ステップ３０５（Ｓ３０５）ｂで、ＡＵで処理された内容をＢバス経由でＳＡＲまたはＤＡＲに格納し、次のレジスタファイルのライトのためにバス権を要求する。同時に、ＶＡＲの内容（ｍ）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２１５】
　続いて、図２１に基づいて、図１６のステップ３のブロック転送モードの詳細な動作フローを説明する。
【０２１６】
　まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となる。同時に、待機状態を示す信号としてＤＴＣウェイト信号が活性状態とされる。
【０２１７】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ３０１（Ｓ３０１）ｃでリードサイクルを開始する。このＡＵで処理された内容を、Ｂバス経由でＳＡＲに格納する。このリードサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２１８】
　ステップ３０２（Ｓ３０２）ｃで、ＤＢの内容を、Ｂバスを経由してＤＡＲの下位１６ビット（ＤＡＲＬ）に格納する。そして、リードサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。
【０２１９】
　また、ＤＡＲの内容を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、処理の内容は、ＤＭ１、ＤＭ０ビットに基づく。
【０２２０】
　ステップ３０３（Ｓ３０３）ｃで、ライトサイクルを開始し、ＤＢの内容をデータバスに出力する。このＡＵで処理された内容を、Ｂバス経由でＤＡＲに格納し、さらにＴＣＲＨの内容をＡバスを経由してＡＵに取り込み、デクリメントを行う。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２２１】
　ステップ３０４（Ｓ３０４）ｃで、ライトサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。このＡＵでデクリメントされた内容を、Ｂバス経由でＴＣＲＨに格納する。
【０２２２】
　このデクリメント結果がＨ’００でなければ、ＳＡＲの内容を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、ステップ３０１（Ｓ３０１）ｃに分岐する。
【０２２３】
　一方、デクリメント結果がＨ’００であれば、ＳＡＲまたはＤＡＲ、およびＴＣＲＨの初期設定値が復帰され、前記の通り、ＤＴＳビットが“０”にクリアされていればＤＡＲ、またＤＴＳビットが“１”にセットされていれば、ＳＡＲの内容がＡバスを経由してＡＵに入力される。
【０２２４】
　そして、ＴＣＲＬの内容がＣバスに出力され、ＴＣＲＨに格納されるとともに、セレクタ、シフタ経由でＡＵに入力される。このセレクタ、シフタ、ＡＵの処理の内容は前記の通りである。そして、バス権要求信号を非活性状態にして、バス権を放棄する。
【０２２５】
　ステップ３０５（Ｓ３０５）ｃで、ＡＵで処理された内容をＢバス経由でＳＡＲまたはＤＡＲに格納する。そして、ＢＴＣＲの内容をＡバス経由でＡＵに取り込み、デクリメントを行う。
【０２２６】
　ステップ３０６（Ｓ３０６）ｃで、ＡＵでデクリメントされた内容をＢバス経由でＢＴＣＲに格納する。このデクリメント結果がＨ’００００であるか、内部の状態フラグに保持し、次のレジスタファイルのライトのためにバス権を要求する。
【０２２７】
　同時に、ＶＡＲの内容（ｍ）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２２８】
　続いて、図２２に基づいて、図１６のステップ４の詳細な動作フローを説明する。
【０２２９】
　ステップ４（Ｓ４）では、ステップ３０５（Ｓ３０５）ａ、ｂまたはステップ３０６（Ｓ３０６）ｃに継続して動作が行われ、まず、バス権アクノリッジ信号を参照して、バス権が獲得されたかを判定する。この判定が保留とされた場合には、バス権が許可されるまで待機状態となる。同時に待機状態を示す信号として、ＤＴＣウェイト信号が活性状態とされる。
【０２３０】
　そして、バス権アクノリッジ信号が活性状態になり、ＤＴＣウェイト信号が非活性状態になると、ステップ４０１（Ｓ４０１）でライトサイクルを開始し、インクリメントされた内容をＢバス経由でＶＡＲに格納する。そして、ＤＴＭＲの内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２３１】
　ステップ４０２（Ｓ４０２）で、ライトサイクルを終了し、またＶＡＲの内容（ｍ＋２）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２３２】
　ステップ４０３（Ｓ４０３）で、ライトサイクルを開始し、インクリメントされた内容をＢバス経由でＶＡＲに格納する。そして、ＢＴＣＲの内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２３３】
　ステップ４０４（Ｓ４０４）で、ライトサイクルを終了し、またＶＡＲの内容（ｍ＋４）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２３４】
　ステップ４０５（Ｓ４０５）で、ライトサイクルを開始し、インクリメントされた内容をＢバス経由でＶＡＲに格納する。そして、ＴＣＲの内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２３５】
　ステップ４０６（Ｓ４０６）でライトサイクルを終了し、またＶＡＲの内容（ｍ＋６）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２３６】
　ステップ４０７（Ｓ４０７）で、ライトサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。そして、ＳＡＲの上位１６ビット（ＳＡＲＨ）の内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２３７】
　ステップ４０８（Ｓ４０８）で、ライトサイクルを終了し、またＶＡＲの内容（ｍ＋８）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２３８】
　ステップ４０９（Ｓ４０９）で、ライトサイクルを開始し、インクリメントされた内容をＢバス経由でＤＡＲに格納する。そして、ＳＡＲの下位１６ビット（ＳＡＲＬ）の内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２３９】
　ステップ４１０（Ｓ４１０）で、ライトサイクルを終了し、またＶＡＲの内容（ｍ＋１０）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２４０】
　ステップ４１１（Ｓ４１１）で、ライトサイクルを開始し、インクリメントされた内容をＢバス経由でＶＡＲに格納する。そして、ＤＡＲの上位１６ビット（ＤＡＲＨ）の内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２４１】
　ステップ４１２（Ｓ４１２）で、ライトサイクルを終了し、データバスの内容をデータバッファ（ＤＢ）に取り込む。また、ＶＡＲの内容（ｍ＋１２）を、Ａバスを経由してアドレスバッファ（ＡＢ）に入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行う。
【０２４２】
　ステップ４１３（Ｓ４１３）でライトサイクルを開始し、インクリメントされた内容をＢバス経由でＶＡＲに格納する。そして、ＤＡＲの下位１６ビット（ＤＡＲＬ）の内容を、Ａバスを経由してＤＢに入力し、データバスに出力する。このライトサイクルで、ウェイトが要求されれば、ウェイトが解除されるまで待機状態となる。
【０２４３】
　ステップ４１４（Ｓ４１４）で、ライトサイクルを終了し、バス権要求信号を非活性状態にしてバス権を放棄する。
【０２４４】
　ステップ４１５（Ｓ４１５）で、ＮＸＴＥビットが“１”にセットされていれば、次のレジスタファイルのリードのためにバス権を要求し、ＶＡＲの内容を、Ａバスを経由してＡＢに入力し、ＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込み、インクリメント（＋２）を行い、ステップ２（Ｓ２）に戻る。
【０２４５】
　一方、ＮＸＴＥビットが“０”にクリアされていれば、要因クリア信号またはＤＴＣ許可ビットクリア信号を活性状態とする。すなわち、転送カウンタが０でなく、前記内部状態フラグが“０”にクリアされていれば、要因クリア信号を活性状態とし、転送カウンタが０であり、内部状態フラグが“１”にセットされていれば、ＤＴＣ許可ビットクリア信号を活性状態とする。
【０２４６】
　なお、ステップ４では、更新されなかったレジスタを退避しないようにしてもよい。また、フローチャートのＤＴＣ内部の動作は同一とし、バス権を解放して、ライト動作を行わないようにすればよい。さらに、ＣＰＵをストールしなくてよく、あるいは内部の動作を変更して、ステップ数を削除してもよい。この場合には、削除される前のインクリメントを（＋２）ではなく（＋４）とするようにする。
【０２４７】
　また、ＢＴＣＲを使用しない場合には、ステップ１でのリードおよびステップ４でのライトの両方を行わないようにしてもよく、あるいはメモリ上の配置からも削除してもよい。さらに、１つの起動要因で複数のデータ転送を行う場合には、起動要因が発生してから最後のデータ転送を行うまでの時間を短縮できる。
【０２４８】
　続いて、図２３により内部バスの動作タイミングの第１の例を説明する。なお、図２３では、ＲＡＭＰからＩ／Ｏへのノーマルモードのデータ転送を行う例を示すものとし、図１７〜図２２の動作フローに対応するステップ番号を文末に記述する。
【０２４９】
　ＩＡＢ、ＤＴＡＢは、φの反転信号であるφ＃に同期して出力され、またＣＰＵのＲＯＭおよびＲＡＭＩに対するリードは、１ステートで行われる。そして、ＩＡＢは、φ＃に同期して１ステート出力され、特に制限はされないものの、ＲＯＭおよびＲＡＭＩの中でφに同期してラッチされる。これに対応するリードデータは、φ＃に同期して出力され、φ＃が活性状態の期間にＣＰＵに取り込まれる。
【０２５０】
たとえば、Ｔ１のφ＃に同期して、ＩＡＢに出力されたアドレスに対するデータはＴ２のφ＃が活性状態の期間にＣＰＵに取り込まれる。一方、ＲＡＭＰに対するリード／ライトは２ステート、Ｉ／Ｏに対するリード／ライトは３ステートで行われ、このφ＃に同期したＩＡＢまたはＤＴＡＢは、ＢＳＣでφに同期化される。
【０２５１】
　まず、割り込みコントローラが、ＤＴＣ起動要求信号を活性状態にしてＤＴＣを起動する。このＤＴＣは、起動されると起動信号を活性状態にし、これによって割り込みコントローラのＤＴＣベクタ番号がラッチされる。
【０２５２】
　Ｔ１では、ＣＰＵのＲＯＭからの命令フェッチが行われ、ＩＡＢにアドレスが出力され、ＤＴＣが起動される。このとき、ＤＴＣはＤＴＣバス権要求信号を活性状態にし、ＶＡＧで生成したＤＴＣベクタアドレスを、Ａバスを経由してＤＴＡＢに出力する。そして、このＡバスの内容をＡＵに取り込んで、インクリメントを行う（ステップ１０１（Ｓ１０１））。
【０２５３】
　Ｔ２では、ＲＯＭからＩＤＢに読み出された命令コードをＣＰＵが取り込むとともに、次の命令フェッチのアドレスがＩＡＢに出力される。以下同様にして、Ｔ８までＣＰＵによるＲＯＭのリードが繰り返される。このとき、ＤＴＣバス権アクノリッジ信号が活性状態になり、ＤＴＡＢの内容はφに同期化してＰＡＢに出力され、ＤＴＣによるＲＡＭＰのリードが行われる。そして、このＡＵのインクリメント結果をＢバス経由でＤＡＲに格納される（ステップ１０２（Ｓ１０２））。
【０２５４】
　Ｔ３では、ＲＡＭＰからＰＤＢに読み出されたＶＡＲの上位１６ビットの内容（ｍＨ）が、ＤＴＣのデータバッファ（ＤＢ）に取り込まれる。そして、ＤＡＲの内容（ＤＴＣベクタアドレス＋２）を、Ａバスを経由してＤＴＡＢに出力する（ステップ１０３（Ｓ１０３））。
【０２５５】
　Ｔ４では、ＤＴＡＢの内容はφに同期化してＰＡＢに出力され、ＤＴＣによるＲＡＭＰのリードが行われる。そして、データバッファ（ＤＢ）の内容を、Ｂバスを経由してＶＡＲの上位１６ビットに格納する（ステップ１０４（Ｓ１０４））。
【０２５６】
　Ｔ５では、ＲＡＭＰからＰＤＢに読み出されたＶＡＲの下位１６ビットの内容（ｍＬ）が、ＤＴＣのデータバッファ（ＤＢ）に取り込まれる。そして、ＤＴＣバス権要求信号を非活性状態にし、一旦バス権を解放する（ステップ１０５（Ｓ１０５））。
【０２５７】
　Ｔ６では、ＰＡＢ・ＰＤＢは使用されず、ＰＡＢには直前の状態を保持し、ＤＴＣは、ＤＴＣバス権要求信号を活性状態にし、データバッファ（ＤＢ）の内容をＢバスを経由してＶＡＲの下位１６ビットに格納する。このＶＡＲの内容（ｍ）を、Ａバスを経由してＤＴＡＢに出力し、これがレジスタファイルの先頭アドレスとなる。そして、Ａバスの内容がＡＵに取り込まれてインクリメント（＋２）される（ステップ１０６（Ｓ１０６））。
【０２５８】
　Ｔ７では、ＤＴＣバス権アクノリッジ信号が活性状態になり、ＤＴＡＢはφに同期化してＰＡＢに出力され、ＲＡＭＰのリードが行われる。そして、インクリメント結果が、Ｂバスを経由してＤＡＲに格納される（ステップ２０１（Ｓ２０１））。
【０２５９】
　Ｔ８では、ＲＡＭＰからＰＤＢに読み出されたＤＴＭＲの内容が、ＤＴＣのデータバッファ（ＤＢ）に取り込まれる（ステップ２０２（Ｓ２０２））。以下、Ｔ９〜Ｔ１９において、レジスタファイルが順次読み出される。なお、図２３では途中のＴ１１〜Ｔ１８の８ステートを省略している。
【０２６０】
　Ｔ２０で、ＤＡＲＨの内容が、ＤＴＣのデータバッファ（ＤＢ）に取り込まれる。そして、ＤＴＣバス権要求信号を非活性状態にし、一旦バス権を解放する（ステップ２１４（Ｓ２１４））。
【０２６１】
　このとき、ＣＰＵがＴ１０でＩＡＢに出力したアドレスがＩ／Ｏに相当し、バス権調停が行われるが、ＣＰＵはＤＴＣに比べて優先順位が低く、ＣＰＵバス権アクノリッジ信号を非活性状態にし、ストールされている。
【０２６２】
　従って、Ｔ２０で、ＤＴＣがバス権を解放したため、ＣＰＵにバス権が与えられ、ＩＡＢの内容が、φに同期化してＰＡＢに出力され、Ｉ／Ｏのリードが行われる。これに対応するデータは、Ｔ２３でＰＤＢに読み出され、ＩＤＢを経由してＣＰＵに取り込まれる。
【０２６３】
　Ｔ２１では、ＤＴＣがＤＴＣバス権要求信号を活性状態にし、バス権を要求するが、ＣＰＵがバスを使用中であるために、ＤＴＣバス権アクノリッジ信号を非活性状態にし、ストールされる。さらに、Ｔ２２からＤＴＣウェイト信号が活性状態になってＤＴＣは待機状態とされる。
【０２６４】
　Ｔ２３では、ＣＰＵがＲＯＭのアドレスをＩＡＢに出力し、リードを開始する。そして、次のサイクルからＣＰＵとＤＴＣが並列動作を再開する。
【０２６５】
　Ｔ２４では、ＤＴＣバス権アクノリッジ信号を活性状態、ＤＴＣウェイト信号を非活性状態にし、データバッファ（ＤＢ）の内容をＢバスを経由してＤＡＲＨに格納する。そして、ＤＴＣによるＲＡＭＰのリードが行われ、ＤＴＡＢはφに同期化してＰＡＢに出力される（ステップ３０１（Ｓ３０１）ａ）。
【０２６６】
　Ｔ２５では、ＰＤＢの内容が、ＤＴＣのデータバッファ（ＤＢ）に取り込まれる。そして、ＤＡＲの内容を、Ａバスを経由してＤＴＡＢに出力する（ステップ３０２（Ｓ３０２）ａ）。
【０２６７】
　Ｔ２６では、Ｉ／Ｏのライトサイクルを開始し、データバッファ（ＤＢ）の内容をＰＤＢに出力する。ここで、Ｉ／Ｏは３ステートでリード／ライトするものとし、ＤＴＣウェイト信号が活性状態とされる（ステップ３０３（Ｓ３０３）ａ）。
【０２６８】
　Ｔ２７では、ＤＴＣは待機状態とされる。そして、ＤＴＣウェイト信号が非活性状態とされる。
【０２６９】
　Ｔ２８では、ライトサイクルを終了する。そして、ＤＴＣバス権要求信号を非活性状態にし、バス権を放棄する（ステップ３０４（Ｓ３０４）ａ）。
【０２７０】
　Ｔ２９では、ＤＴＣバス権要求信号を活性状態にし、バス権を要求する。そして、ＶＡＲの内容（ｍ）を、Ａバスを経由してＤＴＡＢに出力し、このＡバスの内容をＡＵでインクリメント（＋２）する（ステップ３０５（Ｓ３０５）ａ）。
【０２７１】
　Ｔ３０では、インクリメントした結果をＶＡＲに格納する。また、ＤＴＣバス権アクノリッジ信号が活性状態となって、ライトサイクルを開始する。そして、ＤＴＭＲの内容をＡバス、データバッファ（ＤＢ）を介してＰＤＢに出力する（ステップ４０１（Ｓ４０１））。
【０２７２】
　Ｔ３１では、ＶＡＲの内容（ｍ＋２）を、Ａバスを経由してＤＴＡＢに出力する。そして、Ａバスの内容をＡＵでインクリメント（＋２）する（ステップ４０２（Ｓ４０２））。
【０２７３】
　Ｔ３２では、インクリメントした結果をＶＡＲに格納する。また、ライトサイクルを開始し、ＢＴＣＲの内容をＡバス、データバッファ（ＤＢ）を介してＰＤＢに出力する（ステップ４０３（Ｓ４０３））。
【０２７４】
　Ｔ３３では、ＶＡＲの内容（ｍ＋２）を、Ａバスを経由してＤＴＡＢに出力する。そして、Ａバスの内容をＡＵでインクリメント（＋２）し、ライトサイクルを終了する（ステップ４０４（Ｓ４０４））。
【０２７５】
　以下、Ｔ３４〜Ｔ４１において、レジスタファイルが順次書き込まれる。なお、図２３ではＴ３４〜Ｔ４１の８ステートを省略しており、このステートにおいても同様にライトサイクルを繰り返す。
【０２７６】
　Ｔ４２では、インクリメントした結果をＶＡＲに格納し、またライトサイクルを開始する。そして、ＤＡＲＬの内容をＡバス、データバッファ（ＤＢ）を介してＰＤＢに出力する（ステップ４１３（Ｓ４１３））。
【０２７７】
　Ｔ４３では、ライトサイクルを終了する。そして、ＤＴＣバス権要求信号を非活性状態にし、バス権を放棄する（ステップ４１４（Ｓ４１４））。ここで、ＮＸＴＥビットが“１”にセットされている場合、次のレジスタファイルのリード（ステップ２）を行う。
【０２７８】
　Ｔ４４では、ＰＡＢ・ＰＤＢは使用されず、ＰＡＢには直前の状態を保持し、ＤＴＣはＤＴＣバス権要求信号を活性状態にし、データバッファ（ＤＢ）の内容をＢバスを経由してＶＡＲに格納する。さらに、ＶＡＲの内容（ｍ＋１４）を、Ａバスを経由してＤＴＡＢに出力し、これがレジスタファイルの先頭アドレスとなる。そして、Ａバスの内容が、ＡＵに取り込まれてインクリメント（＋２）される。
【０２７９】
　以下、Ｔ７以降と同等の動作を行い、データ転送の内容はＴ４５、Ｔ４６でリードしたＤＴＭＲなどの内容に従う。また、ＤＴＣ転送終了信号は、ＮＸＴＥビットが“０”にクリアされたデータ転送が終了した時点で活性状態になる。
【０２８０】
　この場合に、ＣＰＵの待機状態にする時間を、ベクタアドレスレジスタのリード、レジスタファイルのリード、データ転送、レジスタファイルのライトの時間、以下とすることができる。この時間は、レジスタファイルのリード／ライトは７ワード分であるので、レジスタファイルをＲＡＭＰに配置した場合、最大１４ステートである。
【０２８１】
　また、レジスタファイルのリード／ライトの途中でバスを解放するようにすれば、ＣＰＵの待機状態にする時間をさらに短縮することができる。
【０２８２】
　続いて、図２４により内部バスの動作タイミングの第２の例を説明する。なお、図２４では、Ｉ／ＯからＲＡＭＩへのデータ転送を行う例を示し、前述した図２３の説明と同様の部分は省略するものとする。
【０２８３】
　ＣＰＵは、ＲＯＭからＩＡＢ、ＩＤＢを使用して命令を取り込みつつ動作し、また図２４の期間は、ＩＤＢ側のアクセスのみを連続して行う。
【０２８４】
　Ｔ２４で、ＤＴＣがＤＴＡＢに出力したアドレスがＲＡＭＩに相当する。ここで、バス権調停が行われ、ＤＴＣにバス権が与えられる。そして、Ｔ２５からＣＰＵに対するＩＡＢ解放信号が活性状態になり、ＤＴＡＢの内容をＩＡＢに出力する。
【０２８５】
　Ｔ２６で、この内容が、ＲＯＭと同様にＲＡＭＩにラッチされる。そして、ＤＴＣがＰＤＢに出力したデータがＩＤＢに出力され、ＲＡＭＩに書き込まれる。この期間、ＣＰＵバス権アクノリッジ信号が非活性状態とされ、ＣＰＵは停止状態とされる。そして、ＣＰＵに対するＩＡＢ解放信号が非活性状態になり、ＣＰＵの出力するアドレスをＩＡＢに出力する。
【０２８６】
　Ｔ２７で、ＣＰＵバス権アクノリッジ信号が活性状態とされ、ＣＰＵの動作が再開される。このとき、ＮＸＴＥビットが“０”にクリアされているものとし、レジスタファイルのライト後、Ｔ４２でＤＴＣバス権要求信号を非活性状態にし、ＤＴＣ転送終了信号を活性状態にしてＤＴＣは動作を停止する。
【０２８７】
　なお、図示はされないものの、ＤＴＣ転送終了信号が活性状態となったとき、要因クリア信号またはＤＴＥクリア信号のいずれかが活性状態になる。これは前記の通り、データ転送モードと転送カウンタの内容によって相違される。
【０２８８】
　また、ノーマルモードでＴＣＲがＨ’００００のとき、またはブロック転送モードでＢＴＣＲがＨ’００００のとき、ＤＴＥクリア信号が活性状態になり、その他のときは要因クリア信号が活性状態になる。
【０２８９】
　このように、データ転送をＩ／ＯからＲＡＭＩとすることによって、蓄積されたデータをＣＰＵが処理する場合に、ＩＡＢ、ＩＤＢを使用するだけでよく、アクセスを高速化し、またＤＴＣとの並列動作を可能とすることによって処理効率を向上させることができる。
【０２９０】
　続いて、図２５によりブロック転送モードの動作例を説明する。
【０２９１】
　たとえば、図１のシングルチップマイクロコンピュータのＡ／Ｄ変換器は、前記平成５年３月、（株）日立製作所発行の「Ｈ８／３００３　ハードウェアマニュアル」に記載のものと同様に、データレジスタを４本有し、４チャネルを連続的に変換し、結果をデータレジスタに保持することができる。そして、４チャネルの変換が終了すると、変換終了割り込みが発生する。なお、データレジスタはワードサイズとする。
【０２９２】
　まず、変換終了割り込みに対応するＤＴＣ許可ビット（ＤＴＥＤ７）を“１”にセットし、ＤＴＣを許可する。そして、ＤＴＭＲのＳＭ１、ＤＭ１ビットをいずれも“１”にセット、ＳＭ０、ＤＭ０ビットをいずれも“０”にクリアし、ＳＡＲ、ＤＡＲをインクリメントとする。
【０２９３】
　さらに、ＭＤ１ビットを“１”にセット、ＭＤ０ビットを“０”にクリアしてブロック転送モードを選択、ＤＴＳを“１”にセットしてソース側をブロックエリアとする。そして、Ｓｚを“１”にセットしてワードサイズ転送とし、ＮＸＴＥを“０”にクリアして１回のブロック転送で終了する。
【０２９４】
　このとき、ＴＣＲＨ、ＴＣＲＬには、ブロックサイズとして４を設定し、ＢＴＣＲには、転送するブロック数としてＮを指定する。このＮは０〜６５５３６の整数値である。なお。前記の通り、６５５３６の場合はＨ’００００を設定する。また、ＳＡＲにはＡ／Ｄ変換器のデータレジスタの先頭アドレス（ＴＳ）を設定し、ＤＡＲは変換結果を格納するＲＡＭＰの先頭アドレス（ＴＤ）を設定する。
【０２９５】
　そして、１回の変換終了割り込みでＤＴＣが起動されると、ＤＴＣベクタアドレスをリードし、この内容からレジスタファイルをリードしてデータ転送を開始する。
【０２９６】
　まず、ＳＡＲで示されるＡ／Ｄ変換器の第１のデータレジスタから、ＤＡＲで示されるＲＡＭＰのアドレス（ＴＤ）へデータ転送がワードサイズで行われる。そして、ＳＡＲとＤＡＲをインクリメント（＋２）し、ＴＣＲＨをデクリメントする。
【０２９７】
　さらに、Ａ／Ｄ変換器の第２のデータレジスタから、ＲＡＭＰのアドレス（ＴＤ＋２）へデータ転送が行われ、ＳＡＲとＤＡＲをインクリメント（＋２）し、ＴＣＲＨをデクリメントする。同様に、Ａ／Ｄ変換器の第３のデータレジスタから、ＲＡＭＰのアドレス（ＴＤ＋４）へデータ転送が行われ、ＳＡＲとＤＡＲをインクリメント（＋２）し、ＴＣＲＨをデクリメントする。
【０２９８】
　そして、Ａ／Ｄ変換器の第４のデータレジスタから、ＲＡＭＰのアドレス（ＴＤ＋６）へデータ転送が行われ、ＳＡＲとＤＡＲをインクリメント（＋２）し、ＴＣＲＨをデクリメントする。このとき、ＳＡＲとＤＡＲはそれぞれ、ＴＳ＋８、ＴＤ＋８であり、ＴＣＲＨは０である。
【０２９９】
　その後、ＳＡＲでは、ＳＡＲ−ＳＭ１・（（−１）＾ＳＭ０）・２＾Ｓｚ・ＴＣＲＬの演算が行われ、初期値ＴＳが回復される。また、ＴＣＲＨにはＴＣＲＬの内容が転送され、データ転送を終了する。
【０３００】
　さらに、レジスタファイルを退避し、転送終了信号を活性状態にして、割り込みコントローラが要因フラグをクリアしてＤＴＣは動作を終了する。そして、割り込み要求が発生するまで待機する。
【０３０１】
　そして、次の割り込み要求が発生すると、同様にしてＡ／Ｄ変換器の第１、第２、第３、第４のデータレジスタから、それぞれＲＡＭＰのアドレス（ＴＤ＋８から始まる４ワード）へデータ転送が行われる。
【０３０２】
　以後、これを繰り返し、Ｎ回めの割り込み要求が発生すると、Ａ／Ｄ変換器の第１、第２、第３、第４のデータレジスタから、それぞれＲＡＭＰのアドレス（ＴＤ＋ＤＭ１・（（−１）＾ＤＭ０）・（２＾Ｓｚ）・ＴＣＲＬ・（Ｎ−１）から始まる４ワード）へデータ転送が行われる。ここで、要因フラグのクリアは行わず、ＤＴＣ許可ビットをクリアして動作を終了する。
【０３０３】
　そして、Ａ／Ｄ変換終了割り込みがＣＰＵに要求され、ＲＡＭＰのデータに対して所望の処理を行う。この場合に、前記の通りＲＡＭＩを使用してもよい。
【０３０４】
　続いて、図２６により、具体的に本実施の形態の適用されたシングルチップマイクロコンピュータをプリンタ制御装置に用いた例を説明する。
【０３０５】
　プリンタ制御装置は、シングルチップマイクロコンピュータおよびセントロニクスインタフェース回路、バッファＲＡＭ、キャラクタジェネレートＲＯＭ（ＣＧＲＯＭ）、印字データバッファＲＡＭ、印字データヘッドを含み、これらがシングルチップマイクロコンピュータの外部バスを介して接続される。
【０３０６】
　さらに、バッファ回路、ラインフィードモータ、キャリッジリターンモータを含み、これらのモータは、それぞれタイマの出力、パルス出力装置の出力によって制御される。なお、ラインフィードモータ、キャリッジリターンモータは、特に制限はされないものの、ここではステッピングモータとする。
【０３０７】
　また、図示はされないものの、ＳＣＩはホストとの通信に使用し、Ａ／Ｄ変換器は紙枚数などのセンサ情報を入力する。
【０３０８】
　さらに、ＤＴＣは、セントロニクスインタフェースによるデータの受信、印字データの出力、ラインフィードモータ、キャリッジリターンモータを駆動するパルス出力を行い、またＳＣＩの送信データ、受信データの転送を行う。
【０３０９】
　続いて、図２７により、図２６のプリンタ制御装置のＤＴＣの使用例を説明する。なお、この場合には５本の割り込み要因によって、合計８回のデータ転送を行うものとする。
【０３１０】
　まず、セントロニクスインタフェースによるデータの受信では、ＤＴＣは、外部信号をＩＲ０信号に入力して、ＩＲ０割り込みで起動され、セントロニクスインタフェースのデータレジスタからバッファＲＡＭへのデータ転送を行う。そして、セントロニクスインタフェースの所定の信号、いわゆるインプットストローブ信号を外部割り込み入力端子ＩＲＱ０に入力する。
【０３１１】
　さらに、ＩＲＱ０割り込みに対応する、割り込み許可ビットおよびＤＴＣ許可ビット（ＤＴＥＡ７）を“１”にセットし、ＤＴＣはＳＡＲをセントロニクスインタフェースのデータレジスタに相当するアドレスとし、ＳＭ１、ＳＭ０ビットをいずれも“０”にクリアしてＳＡＲを固定にする。
【０３１２】
　また、ＤＡＲは、たとえばバッファＲＡＭの所定のアドレスとし、ＤＭ１ビットを“１”にセット、ＤＭ０ビットを“０”にクリアしてインクリメントを指定し、またＴＣＲに所望のデータ転送回数を指定し、ＢＴＣＲは使用しない。そして、動作モードは、ＭＤ１、ＭＤ０をいずれも“０”にクリアしてノーマルモードとし、ＳｚビットおよびＮＸＴＥビットは“０”にクリアする。
【０３１３】
　さらに、ホストから転送されるデータをインプットストローブ信号の所定の変化点で、セントロニクスインタフェースに取り込み、同時にシングルチップマイクロコンピュータにＩＲＱ０割り込みが発生し、ＤＴＣを起動する。そして、ＤＴＣは、前記取り込まれたデータを、セントロニクスインタフェースのデータレジスタからバッファＲＡＭへ転送する。
【０３１４】
　さらに、バッファＲＡＭのアドレスをインクリメントしつつ、インプットストローブ信号に所定の変化が発生する毎に、ＴＣＲに指定した回数だけ、前記転送を繰り返す。これにより、ホストから送られるデータをＣＰＵの介在なく、ＤＴＣが転送する。ただし、ＩＡＢ、ＩＤＢを経由して、外部バスに接続された、セントロニクスインタフェースのデータレジスタおよびバッファＲＡＭのリード／ライトを行うために、ＣＰＵを転送毎にストールすることになる。
【０３１５】
　また、ステッピングモータの駆動において、ＤＴＣはタイマＡのコンペアマッチ０割り込みによるデータ転送で、第１のデータ転送はＲＡＭＰからパルス出力装置の出力バッファレジスタＮＤＲへバイトサイズ・リピートモードで転送し、第２のデータ転送はＲＡＭＰからタイマＡの比較レジスタＴＣＭＲへワードサイズ・ノーマルモードで転送する。
【０３１６】
　さらに、印字データの転送において、ＤＴＣはタイマＢのコンペアマッチ０割り込みによるデータ転送では、印字データバッファから印字ヘッドへ、バイトサイズ・ブロック転送モードで転送する。
【０３１７】
　また、ＣＰＵは、前記バッファＲＡＭに格納されたデータに基づいてキャラクタジェネレートＲＯＭを参照し、前記データをフォントデータに変換する。そして、データを、たとえば一行分変換し、印字データバッファＲＡＭに格納する。
【０３１８】
　その後、ＤＴＣおよびタイマ、パルス出力回路を用いて、キャリッジリターンモータを駆動し、このキャリッジリターンモータの回転によって印字ヘッドが移動する。この印字ヘッドの移動に合わせて、印字データバッファから印字ヘッドへのデータ転送を行う。
【０３１９】
　そして、印字データは１フォントの各列のデータを１ブロックとして転送し、たとえば１フォントが２４×２４ドットとし、前記１ブロックは２４ビット、すなわち３バイトである。
【０３２０】
　また、タイマＢは、コンペアマッチ０によってタイマ出力端子に０レベル（ロウレベル）を出力し、このときの割り込みによってＤＴＣを起動して３回のデータ転送を行う。このとき、３つのフォントデータの１列ずつを３回のブロック転送として転送する。
【０３２１】
　さらに、コンペアマッチ１によってタイマ出力端子に１レベル（ハイレベル）を出力し、印字データは、このタイマ出力端子の０レベルから１レベルへの変化時に２４ドットずつの３列が一括して印字される。
【０３２２】
　また、ＳＣＩ受信完了割り込みによるデータ転送では、ＳＣＩの送信データレジスタからＲＡＭＰのデータ領域へ、バイトサイズ・ノーマルモードで転送する。このとき、ＤＴＭＲはＨ’２０００を設定し、ＳＡＲは送信データレジスタのアドレスを設定して固定とする。また、ＤＡＲはＲＡＭＰの先頭アドレスを設定し、インクリメントとする。
【０３２３】
　さらに、ＳＣＩ送信完了割り込みによるデータ転送では、ＲＡＭＰに用意された送信データをＳＣＩの送信データレジスタへ、バイトサイズ・ノーマルモードで転送する。このとき、ＤＴＭＲはＨ’８０００を設定し、ＳＡＲはＲＡＭＰの先頭アドレスを設定し、インクリメントとする。また、ＤＡＲは送信データレジスタのアドレスを設定して固定とする。なお、送信完了割り込みフラグと送信開始ビットは共通とされる。
【０３２４】
　以上のように、本実施の形態では任意の数の複数のブロック転送を行うことができ、たとえば多色の印刷を行うのに好適である。たとえば、３原色に対応した印字データを用意し、３回のブロック転送で、１色ずつの印字データをそれぞれの印字ヘッドに転送することができる。
【０３２５】
　あるいは、３回のブロック転送で３行同時印刷を行うことなどにも好適であり、３回のブロック転送は、同一の起動要因、たとえばタイマのコンペアマッチであってもよいし、または独立した起動要因、たとえばＩＲＱ１、２、３などとしてもよい。
【０３２６】
　このようなことは、従来技術、たとえば前記平成５年３月、（株）日立製作所発行の「Ｈ８／３００３　ハードウェアマニュアル」に記載されているＤＭＡＣでは、全体のチャネル数の選択が制限されているために、図２７のようなデータ転送を実現することはできない。これは、複数のブロック転送を行おうとすれば、そのほかの用途に用いることができるチャネルが減少してしまうためである。
【０３２７】
　たとえば、いわゆるフルアドレスモードで４チャネル、ショートアドレスモードで８チャネルの場合、ブロック転送モードで３チャネルを使用すれば、残りはフルアドレスモードで１チャネル、ショートアドレスモードで２チャネルとなってしまう。
【０３２８】
　これで、モータの駆動にショートアドレスモードで２チャネルを使用すれば、セントロニクスインタフェースのデータ受信や、ＳＣＩによるホストとのデータの送信および受信に用いることができなくなってしまう。
【０３２９】
　ところが、本実施の形態では、論理的・物理的規模を増加させることなく、チャネル数の制限をなくしているために、任意の用途に任意の数の転送を実現することができ、使用上の制約をなくし、装置構成上の自由度を向上して使い勝手を向上させることができる。
【０３３０】
　また、セントロニクスインタフェースのデータ転送や、印字データのデータ転送においては、外部セントロニクスインタフェースのデータレジスタや、バッファＲＡＭ、印字ヘッドなどをリード／ライトし、この間はＣＰＵをストールする。しかしながら、これはデータ転送のデータリードおよびデータライトの時間に限定され、処理効率の低下を最低限にすることができ、少なくとも従来のＤＭＡＣによるデータ転送と同等の処理性能を実現できる。
【０３３１】
　さらに、ＣＰＵのプログラムをＲＯＭに配置し、ＣＰＵの外部バスの使用頻度がＤＴＣよりも低い場合には、ＰＡＢ、ＰＤＢを経由して外部バスを利用するようにすることもできる。
【０３３２】
　続いて、図２８により、図２６のプリンタ制御装置において、リピートモードを用いたモータ駆動の動作例を説明する。
【０３３３】
　なお、本実施の形態では、タイマＡのコンペアマッチ０割り込みによって、前記の通り、ＤＴＣは２回のデータ転送を行い、第２のデータ転送は、ＲＡＭＰからタイマＡの比較レジスタＴＣＭＲへノーマルモードで転送し、第１のデータ転送は、ＲＡＭＰからパルス出力装置の出力バッファレジスタＮＤＲへリピートモードで転送し、パルス出力装置の出力バッファレジスタＮＤＲへの転送を行う。
【０３３４】
　このパルス出力装置は、タイマＡのコンペアマッチ０信号が発生すると、ＮＤＲの内容をパルス出力するものである。従って、タイマＡのコンペアマッチ０毎に第２のデータ転送により、タイマＡの比較レジスタＴＣＭＲを書き換え、コンペアマッチ周期、すなわちパルス出力の間隔を変化させることができる。
【０３３５】
　これによって、ステッピングモータの加速または減速を行うことができる。このモータの加速時（位相１）には、比較レジスタの内容を次第に小さくしてパルス出力間隔を短くしていけば良い。また、定速時（位相２）には同じ値を保持する。
【０３３６】
　一方、モータの減速時（位相３）には、比較レジスタの内容を次第に大きくしてパルス出力間隔を短くしていけば良い。なお、タイマＡのカウンタは、比較レジスタの内容と一致すると０にクリアされるように設定する。また、カウンタおよび比較レジスタはワードサイズとする。
【０３３７】
　たとえば、第１のデータ転送は、位相１〜３を通じてリピートモードで、ＲＡＭＰに格納したパルス出力データ、すなわちステッピングモータの励磁データをＮＤＲへ転送する。この励磁データは、アドレスＴＳ１を先頭としてＮバイト格納しておく。
【０３３８】
　さらに、第１のデータ転送のＴＣＲＨおよびＴＣＲＬにＮ（＝ＢＳ１−ＴＳ１＋１）を設定し、ＳＡＲに励磁データの先頭アドレスＴＳ１を設定する。また、ＳＭ１ビットを“１”にセット、ＳＭ０、ＤＭ１、ＤＭ０、ＭＤ１ビットをいずれも“０”にクリア、ＭＤ０、ＤＴＳビットを“１”にセット、Ｓｚビットを“０”にクリア、ＮＸＴＥビットを“１”にセットする。
【０３３９】
　そして、コンペアマッチ割り込み毎に、ＲＡＭＰからＮＤＲへデータ転送を行い、ＳＡＲをインクリメント、ＴＣＲＨをデクリメントして、アドレスＢＳ１（＝ＴＳ１＋Ｎ−１）からＮＤＲへデータ転送を行った後、ＴＣＲＨがＨ’００になると、ＳＡＲ−ＳＭ１・（（−１）＾ＳＭ０）・（２＾Ｓｚ）・ＴＣＲＬの演算、ＴＣＲＬの内容のＴＣＲＨへの転送を行って、初期値を回復してデータ転送を継続する。
【０３４０】
　このとき、全体の回転数をＭ１、加速・減速時の回転数をＭ２とし、コンペアマッチ周期は、ＲＡＭＰに、アドレスＴＳ２を先頭としてＭ２＋１ワードをコンペアマッチ周期の大きい順に格納しておく。
【０３４１】
　また、第２のデータ転送は、位相１でノーマルモード、ＳＡＲインクリメント、ＤＡＲ固定とする。すなわち、ＳＭ１ビットを“１”にセット、ＳＭ０、ＤＭ１、ＤＭ０、ＭＤ１、ＭＤ０ビットをいずれも“０”にクリア、Ｓｚビットを“１”にセット、ＮＸＴＥビットを“０”にクリアする。また、ＴＣＲにＭ２を設定し、ＳＡＲにコンペアマッチ周期の先頭アドレスＴＳ２＋２を設定する。
【０３４２】
　そして、ＣＰＵが、ＤＴＣ許可ビット（ＤＴＥＢ７）を“１”にセットし、アドレスＴＳ２の内容を比較レジスタに書き込んでタイマＡを動作させ、コンペアマッチ０割り込みを発生させればよい。このコンペアマッチ毎に、１ワードずつＲＡＭＰの内容を比較レジスタに転送を行い、コンペアマッチがＭ２回発生するとＴＣＲが“０”になって、ＤＴＥＢ７ビットを“０”にクリアし、ＣＰＵに割り込みを要求して、ＤＴＣは第１のデータ転送も含めて一旦停止状態になる。
【０３４３】
　さらに、位相２では、第２のデータ転送は、ノーマルモードでＳＡＲを固定とする。すなわち、ＳＭ１、ＳＭ０、ＤＭ１、ＤＭ０、ＭＤ１、ＭＤ０ビットをいずれも“０”にクリア、Ｓｚビットを“１”にセット、ＮＸＴＥビットを“０”にクリアする。
【０３４４】
　そして、前記割り込み要求によって、ＣＰＵは割り込み処理ルーチンを実行してＴＣＲにＭ１−Ｍ２×２を設定し、前記の通りＤＴＭＲを設定する。さらに、ＤＴＥＢ７を“１”にセットし、コンペアマッチが発生すると、ＢＳ２（＝ＴＳ２＋（Ｍ２−１）×２）番地の内容を比較レジスタに転送する。そして、コンペアマッチがＭ１−Ｍ２×２回発生するとＴＣＲが“０”になって、ＤＴＥＢ７ビットを“０”にクリアし、ＣＰＵに割り込みを要求して、ＤＴＣは第１のデータ転送も含めて一旦停止状態になる。
【０３４５】
　さらに、位相３では、第２のデータ転送は、ＳＡＲデクリメントとする。すなわち、ＳＭ１、ＳＭ０ビットをいずれも“１”にセット、ＤＭ１、ＤＭ０、ＭＤ１、ＭＤ０ビットをいずれも“０”にクリア、Ｓｚビットを“１”にセット、ＮＸＴＥビットを“０”にクリアし、いずれもＲＡＭＰに格納したコンペアマッチ周期を比較レジスタＴＣＭＲへ転送する。
【０３４６】
　そして、前記割り込み要求によって、ＣＰＵは割り込み処理ルーチンを実行してＴＣＲにＭ２を設定し、前記の通りＤＴＭＲを設定する。さらに、ＤＴＥＢ７を“１”にセットし、コンペアマッチ０が発生すると、ＢＳ２番地の内容からアドレスを順次減算しつつ、ＲＡＭＰの内容を比較レジスタに転送する。そして、コンペアマッチがＭ２回発生するとＴＣＲが０になって、ＤＴＥＢ７ビットを“０”にクリアしてＣＰＵに割り込みを要求し、ＤＴＣは第２のデータ転送も含めて停止する。
【０３４７】
　さらに、この割り込み処理ルーチンを実行してＭ１回のコンペアマッチが発生し、ステッピングモータが所定回数回転し、印字ヘッドが所定量移動したものとしてタイマＡを停止して動作を終了する。また、パルス出力装置も最後の出力値を保持しつつ停止する。さらに、パルス出力装置の出力を“０”にクリア（ロウレベルを出力）するようにしてもよい。
【０３４８】
　この後、ステッピングモータを逆回転する場合には、第１のデータ転送は、ＳＡＲに励磁データの最後のアドレスを設定、ＳＭ０ビットを“１”にセットする。そして、第１のデータ転送は、上記動作を繰り返せばよい。また、タイマＡの比較レジスタの内容は、アドレスＴＳ２の内容となっているのでＣＰＵが転送を行う必要はない。
【０３４９】
　以上のように、ＲＡＭＰに設定したパルス出力データやコンペアマッチ周期は、システムに従って固定的であり、動作中に変更する必要はないと考えられる。このような動作中に、ＣＰＵが処理しないデータをデータ転送元とする場合には、ＲＡＭＩを使用するよりＲＡＭＰを使用することが得策である。
【０３５０】
　続いて、図２９により、本実施の形態の変形例であるシングルチップマイクロコンピュータのブロック図を説明する。
【０３５１】
　図２９のシングルチップマイクロコンピュータは、図１のシングルチップマイクロコンピュータに対してダイレクトメモリアクセスコントローラ（ＤＭＡＣ）が追加されている。このＤＭＡＣは、ＣＰＵと同様にＩＡＢ、ＩＤＢに接続され、またＣＰＵとＤＭＡＣは、ＢＳＣのバス権調停に基づいて互いに排他的に動作する。
【０３５２】
　ＤＭＡＣは、起動要因として、ＣＰＵが所定の制御ビットを“１”にセットすることによって、データ転送を行うオートリクエストや、ＤＭＡ要求端子に所定の信号が与えられたときにデータ転送を行う外部リクエスト機能を持つ。
【０３５３】
　また、転送モードとして、オートリクエストのとき、ＣＰＵを停止し、バスを専有してデータ転送を行うバーストモードや、１回の転送毎にバス権を解放してＣＰＵと交互に動作しつつ、データ転送を行うサイクルスチールモードを持ち、これらの点でＤＴＣと相違される。
【０３５４】
　また、ＤＭＡＣは、大規模なデータを１回に転送することに好適であり、この大規模データは、ＲＯＭ、ＲＡＭＩまたは外部メモリに格納するために、ＩＡＢ、ＩＤＢに接続し、かつこれらを介して外部バスを使用するのが適当である。さらに、割り込みのイベントによるデータ転送をＤＴＣで実現し、大規模データの転送にはＤＭＡＣで実現することができる。
【０３５５】
　従って、本実施の形態のシングルチップマイクロコンピュータによれば、内部アドレスバスＩＡＢ、データバスＩＤＢは、ＣＰＵ、ＲＯＭ、ＲＡＭＩ、ＢＳＣに接続され、一方内部アドレスバスＰＡＢ、データバスＰＤＢは、ＢＳＣ、ＲＡＭＰ、タイマ、パルス出力回路、ＳＣＩ、Ａ／Ｄ変換器、割り込みコントローラ、ＩＯＰ０〜１１、さらにＰＤＢがＤＴＣに接続されることにより、以下の作用効果を得ることができる。
【０３５６】
　（１）ＤＴＣのデータ転送情報をＲＡＭ上に配置し、ＤＴＣ起動時にＲＡＭからＤＴＣに格納してデータ転送を行い、データ転送終了後にデータ転送情報をＲＡＭ上に退避することにより、ＤＴＣの物理的・論理的規模の増加を防ぐことができ、あるいは多数の起動要求または転送要求に対応できる。
【０３５７】
　これによって、アドレスレジスタのビット数を十分に大きくでき、かつＣＰＵに接続されたバスとＤＴＣに接続されたバスを分離して、ＣＰＵとＤＴＣの同時動作を可能としたことにより、シングルチップマイクロコンピュータの処理速度を向上させることができる。
【０３５８】
　（２）それぞれのバスに別々のＲＡＭを接続したことにより、ＣＰＵとＤＴＣが互いに動作を制約することを少なくし、同時動作を容易にして、さらにシングルチップマイクロコンピュータの処理速度を向上させることができる。
【０３５９】
　（３）１つの起動要求または転送要求で複数のデータ転送を可能としたことにより、ＣＰＵの負荷をさらに軽減して、さらにシングルチップマイクロコンピュータの処理速度を向上でき、またプログラムの作成効率を向上できる。さらに、任意の起動要因で、任意の数の転送を可能としたことにより、任意の用途に任意のデータ転送を行うことができ、使用上の制約をなくし、システム構成上の自由度を向上し、使い勝手を向上させることができる。
【０３６０】
　（４）ＤＴＣのバス権優先順位をＣＰＵより高くし、ＤＴＣの動作にバスを使用しない状態を含めることによって、ＣＰＵが長期間に渡って動作を停止させられることを防ぐことができ、処理速度の低下を最小限とすることができる。
【０３６１】
　（５）データ転送情報を間接的に指定可能とすることにより、任意組数の転送情報を配置し、任意組数の任意の転送モードの転送を実現することができる。また、メモリの利用効率を向上させることができる。
【０３６２】
　以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０３６３】
　たとえば、アドレスレジスタのビット数は３２ビットに限定されるものではなく、ＣＰＵまたはシングルチップマイクロコンピュータのアドレス空間に応じて変更でき、たとえば１６Ｍバイトのアドレス空間であれば２４ビットとすればよく、あるいは転送対象を、Ｉ／ＯとＲＡＭＰ間を含むアドレスに限定すれば１６ビットなどとすることができ、またＳＡＲとＤＡＲのビット数を相異なるようにしてもよい。
【０３６４】
　この場合に、ビット数を小さくすれば、レジスタファイルの全体的なバイト数を縮小でき、レジスタファイルのリード／ライトに要する時間を短縮でき、これによって起動が要求されてからデータ転送を行うまでの時間を短縮することができる。
【０３６５】
　さらに、１つの起動要因で複数のデータ転送を行う場合に、起動要求から最後のデータ転送を行うまでの時間を短縮でき、リアルタイム性を向上でき、あるいはＤＴＣの起動頻度が高い場合に、処理効率を向上でき、ＣＰＵがストールされる最大の時間を短縮することができる。
【０３６６】
　また、ＣＰＵのプログラムは、ＲＯＭに配置するほか、外部メモリとすることができ、外部アドレス・外部データバスの入出力タイミングは、たとえばＰＡＢ、ＰＤＢと同様にすることができる。
【０３６７】
　同様に、ＣＰＵの作業領域であるメモリはＲＡＭＩに限らず、外部メモリとすることができ、またＲＯＭまたはＲＡＭＩは内蔵しなくてもよく、この場合に、ＤＴＣとは切り離し可能なバスを介してＣＰＵがプログラムのリードを行うことができればよい。
【０３６８】
　また、ＤＴＣのベクタアドレスはＲＡＭＰとするほか、ＲＯＭに配置してもよく、この場合にはベクタアドレスのリード時にＣＰＵをストールすることになるが、シングルチップマイクロコンピュータの動作開始後に、ＲＡＭＰに所望のアドレスをライトする手順を省くことができる。
【０３６９】
　同様に、ＤＴＣのレジスタファイルについても、ＲＡＭＰに配置するほか、外部メモリとすることができ、この場合にはＰＡＢ、ＰＤＢに接続された入出力ポートまたはバッファ回路を介して、外部アドレス入出力、データの入出力を行うようにすればよい。
【０３７０】
　また、ＲＡＭＰはリード／ライト可能なメモリであればよく、たとえばＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブルＲＯＭ）などとすることができる。
【０３７１】
　さらに、ＲＡＭＩとＲＡＭＰを１つのメモリモジュールで構成し、いわゆるデュアルポートＲＡＭとしてもよく、この場合にＣＰＵとＤＴＣが同時にＲＡＭをリード／ライトした場合には、一方がウェイトされるが、その他の場合には上記実施の形態の通り動作できる。
【０３７２】
　また、ＤＴＣ、割り込みコントローラ、ＢＳＣの具体的な回路構成についても種々変更可能である。
【０３７３】
　以上の説明では、主として本発明者によってなされた発明をその利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、これに限定されるものではなく、その他の半導体集積回路装置、たとえばデジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体集積回路装置にも適用可能であり、本発明は、少なくともデータ処理装置とデータ転送装置を内蔵した半導体集積回路装置について広く適用可能である。
【図面の簡単な説明】
【０３７４】
【図１】本発明の一実施の形態の半導体集積回路装置であるシングルチップマイクロコンピュータの主要部を示すブロック図である。
【図２】本実施の形態のシングルチップマイクロコンピュータの割り込み要因を示す説明図である。
【図３】本実施の形態のシングルチップマイクロコンピュータにおけるアドレスマップの説明図である。
【図４】本実施の形態のシングルチップマイクロコンピュータにおけるアドレスバス、データバスの構成図である。
【図５】本実施の形態におけるデータトランスファコントローラ（ＤＴＣ）のレジスタ構成図である。
【図６】本実施の形態におけるＤＴＣモードレジスタ（ＤＴＭＲ）の構成図である。
【図７】本実施の形態におけるＤＴＣのレジスタ機能の説明図である。
【図８】本実施の形態におけるＤＴＣのブロック図である。
【図９】本実施の形態におけるＤＴＣレジスタのメモリ上での構成図である。
【図１０】本実施の形態におけるＤＴＣ許可レジスタの構成図である。
【図１１】本実施の形態における割り込みコントローラのブロック図である。
【図１２】本実施の形態におけるバスコントローラのブロック図である。
【図１３】本実施の形態におけるバスの動作状態の第１の状態を示す説明図である。
【図１４】本実施の形態におけるバスの動作状態の第２の状態を示す説明図である。
【図１５】本実施の形態におけるバスの動作状態の第３の状態を示す説明図である。
【図１６】本実施の形態におけるＤＴＣの動作フローチャートである。
【図１７】本実施の形態におけるＤＴＣの図１６におけるステップ１の動作フローチャートである。
【図１８】本実施の形態におけるＤＴＣの図１６におけるステップ２の動作フローチャートである。
【図１９】本実施の形態におけるＤＴＣの図１６におけるステップ３のノーマルモードの動作フローチャートである。
【図２０】本実施の形態におけるＤＴＣの図１６におけるステップ３のリピートモードの動作フローチャートである。
【図２１】本実施の形態におけるＤＴＣの図１６におけるステップ３のブロック転送モードの動作フローチャートである。
【図２２】本実施の形態におけるＤＴＣの図１６におけるステップ４の動作フローチャートである。
【図２３】本実施の形態における内部バスの動作タイミングの第一の例を示すタイミング図である。
【図２４】本実施の形態における内部バスの動作タイミングの第二の例を示すタイミング図である。
【図２５】本実施の形態におけるブロック転送モードの動作例を示す説明図である。
【図２６】本実施の形態のシングルチップマイクロコンピュータを用いたプリンタ制御装置の主要部を示すブロック図である。
【図２７】本実施の形態のシングルチップマイクロコンピュータを用いた図２６のプリンタ制御装置におけるＤＴＣの使用方法の一例を示す説明図である。
【図２８】本実施の形態のシングルチップマイクロコンピュータを用いた図２６のプリンタ制御装置におけるリピートモードを用いたモータ駆動の動作例を示す説明図である。
【図２９】本実施の形態の変形例であるシングルチップマイクロコンピュータの主要部を示すブロック図である。
【符号の説明】
【０３７５】
　ＣＰＵ　中央処理装置（データ処理装置）
　ＤＴＣ　データトランスファコントローラ（データ転送装置）
　ＲＯＭ　リードオンリメモリ（第３の記憶手段）
　ＲＡＭＩ　ランダムアクセスメモリ（第１の記憶手段）
　ＲＡＭＰ　ランダムアクセスメモリ（第２の記憶手段）
　ＳＣＩ　シリアルコミュニケーションインタフェース
　Ａ／Ｄ　Ａ／Ｄ変換器
　ＩＯＰ０〜１１　入出力ポート
　ＢＳＣ　バスコントローラ（バス制御手段）
　ＣＰＧ　クロック発振器
　ＩＡＢ，ＰＡＢ，ＤＴＡＢ　内部アドレスバス
　ＩＤＢ　内部データバス（第１のバス）
　ＰＤＢ　内部データバス（第２のバス）
　Ｉ／Ｏ　データ入出力回路（データ入出力手段）
　ＶＡＲ　ベクタアドレスレジスタ
　ＳＡＲ　ソースアドレスレジスタ
　ＤＡＲ　デスティネーションレジスタ
　ＢＴＣＲ　ブロック転送カウントレジスタ
　ＴＣＲ　転送カウントレジスタ
　ＤＴＭＲ　モードレジスタ
　ＤＢ　データバッファ
　ＡＢ　アドレスバッファ
　ＭＩＦ　バスインタフェース
　ＡＵ　算術演算回路
　ＶＡＧ　ベクタアドレス生成回路
　ＤＴＥＲＡ〜Ｄ　ＤＴＣ許可レジスタ
　ＣＧＲＯＭ　キャラクタジェネレートＲＯＭ
　ＤＭＡＣ　ダイレクトメモリアクセスコントローラ
【図１】
2004127312.tif 000003
【図２】
2004127312.tif 000004
【図３】
2004127312.tif 000005
【図４】
2004127312.tif 000006
【図５】
2004127312.tif 000007
【図６】
2004127312.tif 000008
【図７】
2004127312.tif 000009
【図８】
2004127312.tif 000010
【図９】
2004127312.tif 000011
【図１０】
2004127312.tif 000012
【図１１】
2004127312.tif 000013
【図１２】
2004127312.tif 000014
【図１３】
2004127312.tif 000015
【図１４】
2004127312.tif 000016
【図１５】
2004127312.tif 000017
【図１６】
2004127312.tif 000018
【図１７】
2004127312.tif 000019
【図１８】
2004127312.tif 000020
【図１９】
2004127312.tif 000021
【図２０】
2004127312.tif 000022
【図２１】
2004127312.tif 000023
【図２２】
2004127312.tif 000024
【図２３】
2004127312.tif 000025
【図２４】
2004127312.tif 000026
【図２５】
2004127312.tif 000027
【図２６】
2004127312.tif 000028
【図２７】
2004127312.tif 000029
【図２８】
2004127312.tif 000030
【図２９】
2004127312.tif 000031