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