(57)【特許請求の範囲】
【請求項１】
中央処理装置と、
前記中央処理装置の制御に基づいてデータ転送制御可能なデータ転送制御回路とを有し、
前記データ転送制御回路は、
転送動作モードを指定可能な制御レジスタと、
転送先メモリアドレスを指定可能な第１アドレスレジスタと、
転送元メモリアドレスを指定可能な第２アドレスレジスタと、
データブロックサイズを指定可能な転送カウントレジスタと前記転送カウントレジスタに指定されたブロックサイズに基づいて実行された転送回数の計数に用いられる実行転送カウントレジスタとから成る第１転送カウンタと、
データ転送の回数を指定可能な第２転送カウンタとを具備し、
前記中央処理装置は、前記制御レジスタに第１の動作モードまたは第２の動作モードを設定可能であって、
前記第１の動作モードは、前記第１アドレスレジスタと前記第２アドレスレジスタとを変化させると共に前記実行転送カウントレジスタを変化させながら前記転送カウントレジスタに設定されたデータブロックサイズのデータ転送を行った後、前記第２アドレスレジスタのアドレスをブロック転送の対象となる転送元の先頭アドレスに設定する単位動作を、前記第２転送カウンタで指定した回数だけ行うブロック転送モードであって、
前記第２の動作モードは、前記第１アドレスレジスタと前記第２アドレスレジスタとを変化させることで前記第２転送カウンタで指定した回数だけ行うノーマル転送モードであり、
前記データ転送制御回路は、前記第２転送カウンタが所定値に達したことを判別して、前記中央処理装置に対し、割り込み通知を出力する半導体集積回路装置。
【請求項２】
請求項１において、
制御回路を更に具備し、
前記制御回路は、前記転送制御レジスタの内容に基づいて、前記第１の動作モードか第２の動作モードかを判定する半導体集積回路装置。
【請求項３】
中央処理装置と、
前記中央処理装置の制御に基づいてデータ転送制御可能なデータ転送制御回路とを有し、
前記データ転送制御回路は、
転送動作モードを指定可能な制御レジスタと、
転送先のアドレスを指定可能な第１アドレスレジスタと、
転送元のアドレスを指定可能な第２アドレスレジスタと、
前記第１アドレスレジスタと前記第２アドレスレジスタ間のデータ転送の回数を指定可能な転送カウントレジスタと、
前記第１アドレスレジスタと前記第２アドレスレジスタ間のデータ転送の回数をカウント可能な実行転送カウントレジスタとを具備し、
前記第１アドレスレジスタと第２アドレスレジスタの内の何れか一方に指定可能にされるアドレスはメモリアドレスであり、他方に指定可能にされるアドレスは入出力回路アドレスであり、
前記中央処理装置は、前記制御レジスタに対し、前記データ転送制御回路の転送動作モードを第１動作モードまたは第２動作モードに設定可能で、
前記第１の動作モードのとき前記実行転送カウントレジスタには第１のビット数で示される値を設定可能で、前記第２の動作モードのとき前記実行転送カウントレジスタと前記転送カウントレジスタには連結したレジスタとして前記第１のビット数で示される値よりもビット数の大きな第２のビット数で示される値を設定可能で、
前記第１動作モードは、
前記第１アドレスレジスタ又は前記第２アドレスレジスタの一方の値を変化させながら前記転送カウントレジスタで指定された回数のデータ転送を前記実行転送カウントレジスタをカウント動作させながら行う単位動作後、
前記実行転送カウントレジスタの値を前記転送カウントレジスタの値に戻すと共に前記第１アドレスレジスタ又は第２アドレスレジスタの一方の値を転送の対象となる先頭アドレスに設定し直し、前記単位動作を繰り返すリピート転送モードで有り、
前記第２動作モードは、前記第１アドレスレジスタと前記第２アドレスレジスタとを変化させることで、前記連結した実行転送カウントレジスタ及び転送カウントレジスタで指定した回数だけ行うノーマル転送モードであり、
前記データ転送制御回路は、前記第２の動作モードの時、前記連結した実行転送カウントレジスタ及び転送カウントレジスタの値が所定値に達したことを判別して、前記中央処理装置に対し、割り込み通知を出力し、前記第１の動作モードの時、前記実行転送カウントレジスタの値が所定値に達したことを判別して、前記単位動作を繰り返す半導体集積回路装置。
【請求項４】
請求項３において、
制御回路を更に具備し、
前記制御回路は、前記転送制御レジスタの内容に基づいて、前記第１のモードか前記第２のモードであるかを判定する半導体集積回路装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ転送制御装置にかかり、例えば、データ転送制御装置を内蔵したシングルチップマイクロコンピュータに利用して有効な技術に関するものである。
【０００２】
【従来の技術】
シングルチップマイクロコンピュータは、昭和５９年１１月３０日オーム社発行の『ＬＳＩハンドブック』Ｐ５４０およびＰ５４１に記載されるように、中央処理装置（ＣＰＵ）を中心にしてプログラム保持用のＲＯＭ（リードオンリメモリ）、データ保持用のＲＡＭ（ランダムアクセスメモリ）、およびデータの入出力を行うための入出力回路などの機能ブロックが１つの半導体基板上に形成されてなる。本発明者らは、かかるシングルチップマイクロコンピュータに前記ＣＰＵとは独立にデータ転送を行なうダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を内蔵することを検討した。かかるＤＭＡＣについて記載された文献の例として、昭和６２年９月（株）日立製作所発行の『日立１６ビットマイクロプロセッサＨＤ６４１０１６』Ｐ１６９乃至Ｐ２０６がある。
【０００３】
かかるＤＭＡＣは、ＣＰＵのソフトウエアによる起動あるいは外部端子による起動によってメモリ−メモリ間のデータ転送を行なうほか、タイマあるいはシリアルコミュニケーションインタフェース（ＳＣＩ）などの入出力回路の要求する割込みによっても起動することが可能である。また、ＤＭＡＣはメモリ−メモリ間のデータ転送を行なうための２本のアドレスレジスタ（転送元アドレスと転送先アドレスを指定する）を、例えば４チャネル分内蔵している。前記アドレスレジスタはマイクロコンピュータのアドレス空間に相当するビット数、例えば、アドレス空間が１６Ｍバイトであれば２４ビットを有する。
【０００４】
【発明が解決しようとする課題】
しかしながら、本発明者らの検討によれば、かかるＤＭＡＣについて以下の問題点のあることが明らかにされた。即ち、第１に、前記ＣＰＵのソフトウエアによる起動あるいは外部端子による起動によってメモリ−メモリ間のデータ転送を行なう場合には、転送元・転送先のアドレスを任意に選択できるように、アドレスレジスタはアドレス空間に対応したビット数、例えばアドレス空間が１６Ｍバイトの場合は２４ビットが必要であるが、前記割込みによってＤＭＡＣを起動する場合には、前記データ転送の一方は前記入出力回路のいずれかであることが大部分であり、かかる入出力回路のアドレスの領域は多くの場合、アドレス空間に比較して小さく、例えば２５６バイトのような連続した領域とされる。このため、メモリ−入出力回路間などのデータ転送の場合には、データ転送元或はデータ転送先を指定する一方のアドレスの上位ビットは常に同一とされ、これによって、アドレスレジスタの上位ビットは無駄になっている。
【０００５】
第２に、割込みによってＤＭＡＣを起動する要因は前記入出力回路の割込み要因に相応して多く必要とされることである。例えば、前記ＳＣＩの送信完了割込みによってＤＭＡＣを起動し、ＣＰＵのソフトウエアの介在なく連続送信を行なう場合、転送先のアドレスはＳＣＩの出力データレジスタであり、転送元はＣＰＵのソフトウエアが予め用意しておく、例えばＲＡＭのアドレスである。また、ＳＣＩを２チャネル内蔵している場合にはそれぞれのチャネルについて連続送信・連続受信を行なうようにすると、前記ＤＭＡＣの４チャネルすべてが必要となってしまい、タイマの割込みによるデータ転送やＣＰＵのソフトウエア・外部端子によるデータ転送を行なうことができなくなってしまう。
【０００６】
また、第３に、一つの割込み要因によって１チャネルの転送しか行なうことができない。このため、例えば、タイマの割込みによって、データの出力値の変更と次のタイマ割込みの設定時間の変更を同時に行なうことはできず、ＣＰＵによりいずれかの変更を行なわなければならなかった。
【０００７】
第４に、転送元・転送先のアドレスはインクリメント・デクリメントあるいは固定であって、固定の場合はＤＭＡＣのデータ転送単位である１バイトまたは１ワードのアドレスに対してリードまたはライトを行なうことになる。したがって、任意のデータブロックに対してくり返しデータ転送を行なうようなことはできない。
【０００８】
本発明の目的は、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させることができるデータ転送制御装置を提供することにある。本発明の別の目的は、多数の割込み要因によるデータ転送制御を可能にすることができるデータ転送制御装置を提供することにある。本発明のその他の目的は、データ単位以上の任意のデータブロックに対して繰返しデータ転送を行うことができるデータ転送制御装置を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１０】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
すなわち、メモリ−メモリ間のデータ転送を行なう場合の１チャネル分の資源に、最低限の資源を追加し、入出力回路の要求する割込みによっても起動するデータ転送チャネルとしては、２チャネル分として使用可能にする。このとき、入出力回路の割込みによっても起動する２チャンネル分の各データ転送チャネルにおいて、入出力回路を転送元・転送先として特定するためのレジスタは、アドレス空間に相応するビット数よりも少ないビット数を有するようにされる。
【００１２】
前記入出力回路の要求する割込みによっても起動する２つのデータ転送チャネルの一方のデータ転送チャネルの転送カウンタをデータブロック内の転送カウンタとし、他方のデータ転送チャネルの転送カウンタをデータブロックの転送カウンタとして利用して、メモリ−メモリ間でのデータブロック転送を実現する。
【００１３】
前記入出力回路の要求する割込みによっても起動するようなデータ転送チャネルを利用したデータ転送モードであって、転送カウンタを、転送回数を計数するためのカウンタと、転送回数を指定する手段とし、これによって指定された回数のデータ転送を転送カウンタとメモリアドレスレジスタとにおける計数動作を利用して行うデータ転送動作を単位動作とし、単位動作を完了する毎に、前記メモリアドレスレジスタのアドレスとカウンタの値を設定値に復帰させて、その単位動作を複数回繰返すリピート転送モードを実現する。
【００１４】
前記入出力回路の要求する割込みによっても起動するようなデータ転送チャネルの起動を指示するための外部からの単一信号によって与えられる起動要因を保持する保持手段を設け、前記単一信号によって与えられる起動要因を前記保持手段に保持することにより、単一の起動要因に従って、前記複数のデータ転送チャネルを介して複数のデータ転送を行なうマルチ転送モードを実現する。
【００１５】
【作用】
上記下手段によれば、メモリ−メモリ間のデータ転送を行なう場合の１チャネル分の資源に、最低限の資源を追加し、入出力回路の要求する割込みによっても起動するデータ転送チャネルとして２チャネル分として使用可能なデータ転送制御装置は、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させ、さらに、多数の割込み要因への対応を容易化する。前記メモリ−メモリ間でのデータブロック転送、メモリ−入出力回路間でのリピート転送モードやマルチ転送モードは、データ転送制御装置の応用範囲を広げる。
【００１６】
【実施例】
図１には本発明にかかるデータ転送制御装置を内蔵したシングルチップマイクロコンピュータの一実施例が示される。
【００１７】
同図に示されるシングルチップマイクロコンピュータ１００は、特に制限はされないものの、本発明にかかるデータ転送制御装置の一実施例であるＤＭＡＣ１、全体の制御を司るＣＰＵ（中央処理装置）２、バスコントローラ３、ＲＯＭ４、ＲＡＭ５、タイマ６、ＳＣＩ７、パルス出力装置（ＰＳＯ）８、及び入出力ポート（ＩＯＰ）９１〜９７などの機能ブロックからから構成され、公知の半導体製造技術により１つの半導体基板上に形成される。かかるシングルチップマイクロコンピュータの機能ブロックは相互に、アドレス・データ・リード信号・ライト信号・システムクロックなどを含む内部バス６９によって相互に接続されている。ＣＰＵ２，ＤＭＡＣ１はバスコントローラ３を介して内部バス６９に接続されている。バスサイクルによるリードおよびライト動作は、ＣＰＵ２，ＤＭＡＣ１のいずれか一方が行う。このための調停機能をバスコントローラ３が有している。前記タイマ６は、特に制限されないが、タイマＡ、タイマＢ、タイマＣ、及びタイマＤによって構成され、前記ＳＣＩ７は、特に制限されないが、ＳＣＩＡ及びＳＣＩＢによって構成される。シングルチップマイクロコンピュータ１００はクロックパルスジェネレータＣＰＧの端子ＸＴＡＬ，ＥＸＴＡＬに接続される水晶発振子又は外部から入力される外部クロックに基づいて生成される基準クロックに同期して動作を行なう。この基準クロックの最小単位をステートと呼ぶ。尚、図においてＶｓｓ，Ｖｃｃは電源端子である。
【００１８】
特に制限はされないものの、ＣＰＵ２のアドレス空間は１６Ｍバイトであり、アドレスバスは２４ビットである。ＲＯＭ３、ＲＡＭ４、およびＤＭＡＣ１、タイマ５、ＳＣＩ６、パルス出力装置８、入出力ポート９１〜９７などの機能ブロックのレジスタはＣＰＵ２のアドレス空間上に配置されている。図示はされないモード信号によって、シングルチップマイクロコンピュータの動作モードが選択され、入出力ポートの一部をアドレスバス，データバス，制御信号として使用し、外部バスを拡張することもできる。そのほかの入出力ポートもタイマ６，ＳＣＩ７，ＤＭＡＣ１の入出力端子と兼用され、ソフトウェアによって端子機能が切り替わるようになっている。。
【００１９】
前記ＤＭＡＣ１は、ＣＰＵ２によって指定される起動要因・転送アドレス・転送データ数などに基づいて、特に制限はされないものの、メモリ−メモリ間、またはメモリ−入出力回路間でデータ転送制御を行う。このときのメモリとしては、前記ＲＯＭ４，ＲＡＭ５の他に、図示はされないシングルチップコンピュータ外部のメモリをも含む。また、入出力回路としては、特に制限はされないものの、前記タイマ５、ＳＣＩ６、パルス出力装置８、入出力ポート９１〜９７などの内蔵レジスタとされる。
【００２０】
図２には前記ＤＭＡＣ１の一実施例ブロック図が示される。
【００２１】
このＤＭＡＣ１は、メモリ−入出力回路のデータ転送を行なうときはチャネルＡ，Ｂの合計２チャネルとして利用され、メモリ−メモリ間のデータ転送を行なうときは１チャネルとして使用される。チャンネルＡは、２４ビットのメモリアドレスレジスタＭＡＲＡ（ＭＡＲＡ−Ｌ，ＭＡＲＡ−Ｈ，ＭＡＲＡ−Ｅ）、８ビットのＩ／ＯアドレスレジスタＩＯＡＲＡ、８ビットの実行転送カウントレジスタＥＴＣＲＡ、８ビットの転送カウントレジスタＴＣＲＡ、８ビットの制御レジスタＤＴＣＲＡを含む。チャンネルＢは、２４ビットのメモリアドレスレジスタＭＡＲＢ（ＭＡＲＢ−Ｌ，ＭＡＲＢ−Ｈ，ＭＡＲＢ−Ｅ）、８ビットのＩ／ＯアドレスレジスタＩＯＡＲＢ、８ビットの実行転送カウントレジスタＥＴＣＲＢ、８ビットの転送カウントレジスタＴＣＲＢ、８ビットの制御レジスタＤＴＣＲＢを含む。これら２チャネルに共通して、２４ビットの算術論理演算器ＡＬＵ（ＡＬＵ−Ｌ，ＡＬＵ−Ｈ，ＡＬＵ−Ｅ）、アドレスバッファＡＢ（ＡＢ−Ｌ，ＡＢ−Ｈ，ＡＢ−Ｅ）、データバッファＤＢ（ＤＢ−Ｌ，ＤＢ−Ｈ）、メモリインタフェースＭＩＦ（ＭＩＦ−Ｌ，ＭＩＦ−Ｈ，ＭＩＦ−Ｅ，ＭＩＦ−Ｃ）、そして制御部ＣＯＮＴを備える。制御部ＣＯＮＴは制御レジスタＤＴＣＲＡ，ＤＴＣＲＢの内容と、ＤＭＡＣ１外部から与えられる起動要因などに基づいて動作し、ＤＭＡＣ１各部の制御を行なう。なお、前記メモリアドレスレジスタＭＡＲＡ，ＭＡＲＢを総称して或はその何れか一方を単んにメモリアドレスレジスタＭＡＲとも称する。同様に、Ｉ／ＯアドレスレジスタＩＯＡＲＡ，ＩＯＡＲＢを単にＩ／ＯアドレスレジスタＩＯＡＲと、実行転送カウントレジスタＥＴＣＲＡ，ＥＴＣＲＢを単に実行転送カウントレジスタＥＴＣＲと、転送カウントレジスタＴＣＲＡ，ＴＣＲＢを単に転送カウントレジスタＴＣＲと、そして制御レジスタＤＴＣＲＡ，ＤＴＣＲＢを単に制御レジスタＤＴＣＲとも称する。
【００２２】
前記各レジスタ、算術論理演算器ＡＬＵ、メモリインタフェースＭＩＦは、ＤＭＡＣ内部バスとしてのＡバス，Ｂバス等を介して接続されている。さらにＡバスのビット２３〜０はアドレスバッファＡＢに接続されている。アドレスバッファＡＢ−Ｌ，ＡＢ−Ｈ，ＡＢ−Ｅは内部バス６９に含まれる２４ビットのアドレスバスに接続される。データバッファＤＢ−Ｌ，ＤＢ−Ｈは内部バス６９に含まれる１６ビットのデータバスに接続される。
【００２３】
各レジスタはＡバスにデータを出力し、そのデータは、アドレスバッファＡＢ、算術論理演算器ＡＬＵ、又はメモリインタフェースＭＩＦに転される。算術論理演算器ＡＬＵ、メモリインタフェースＭＩＦはＢバスにデータを出力し、そのデータは、各レジスタに転送可能にされる。ＣＰＵ２がライトしたデータは、バス６９に含まれる内部データバス，メモリインタフェースＭＩＦ，及びＢバスを経由して、各レジスタに書き込み可能にされる。ＣＰＵ２がリードすべきデータは、Ａバス，メモリインタフェースＭＩＦ，及びシングルチップマイクロコンピュータ１００のバス６９に含まれる内部データバスを経由して、ＣＰＵ２に読み込まれる。さらに、転送カウントレジスタＴＣＲはＣバスにデータを出力することができ、実行転送カウントレジスタＥＴＣＲと算術論理演算器ＡＬＵの下位８ビット（ＡＬＵ−Ｌ）に転送することができる。算術論理演算器ＡＬＵは、Ａバスの入力と、Ｃバスまたは定数値との演算が可能である。なお、図２においてＳＦＴはシフタであり、ＳＥＬはセレクタである。
【００２４】
図３には前記ＤＭＡＣ１のレジスタ構成がチャネルＡ，チャネルＢに分けて示されている。
【００２５】
前述の通り、２４ビットのメモリアドレスレジスタＭＡＲ、８ビットのＩ／ＯアドレスレジスタＩＯＡＲ、実行転送カウントレジスタＥＴＣＲ、転送カウントレジスタＴＣＲ、制御レジスタＤＴＣＲをそれぞれ２本ずつ有している。制御レジスタＤＴＣＲＡ，ＤＴＣＲＢにはそれぞれ機能の異なる制御ビットが割り当てられる。
【００２６】
ＤＭＡＣ１は、メモリ−メモリ間のデータ転送を行なう１チャネルとして使用するか、それぞれメモリ−入出力回路のデータ転送を行なう２チャネルとして使用するかを選択することができる。この選択は制御レジスタＤＴＣＲＡのビット１、２（ＴＲＳＡ１、ＴＲＳＡ２ビット）で行ない、前記ビットがすべて１にセットされていると、メモリ−メモリ間のデータ転送を行なう１チャネルとなり、それ以外の設定ではメモリ−入出力回路のデータ転送を行なう２チャネルとなる。
【００２７】
メモリ−メモリ間のデータ転送が選択されたとき、メモリアドレスレジスタＭＡＲＡは転送元アドレスを指定し、メモリアドレスレジスタＭＡＲＢは転送先のアドレスを指定するアドレスレジスタとして使用される。
【００２８】
メモリ−入出力回路のデータ転送が選択されたときは、各チャネルにおいて、メモリアドレスレジスタＭＡＲとＩ／ＯアドレスレジスタＩＯＡＲが転送元と転送元を指定するアドレスレジスタとして使用される。このとき、Ｉ／ＯアドレスレジスタＩＯＡＲは、必ず入出力回路のアドレスを指定するアドレスレジスタとなる。すなわち、転送元が入出力回路のとき、Ｉ／ＯアドレスレジスタＩＯＡＲが転送元を指定し、メモリアドレスレジスタＭＡＲが転送先のアドレスを指定する。また、転送先が入出力回路のときは、メモリアドレスレジスタＭＡＲが転送元、Ｉ／ＯアドレスレジスタＩＯＡＲが転送先のアドレスを指定するアドレスレジスタとして使用される。Ｉ／ＯアドレスレジスタＩＯＡＲは８ビットであるため、上位１６ビットのアドレスは固定値とされ、特に制限はされないものの上位１６ビットはすべて１とされる。この場合、Ｉ／ＯアドレスレジスタＩＯＡＲで指定できるアドレスはＨ’ＦＦＦＦ００〜Ｈ’ＦＦＦＦＦＦ（Ｈ’は１６進数を意味する）の２５６バイトである。従って、斯るアドレスに入出力回路のアドレスが割り当てられている。
【００２９】
図４にはシングルチップマイクロコンピュータ１００のアドレスマップが示される。
【００３０】
特に制限ははされないものの、内蔵ＲＯＭ４は３２ｋバイト、内蔵ＲＡＭ５は１ｋバイトとされ、それぞれ、アドレスＨ’００００００〜Ｈ’００７ＦＦＦ、Ｈ’ＦＦＦＢ００〜Ｈ’ＦＦＦＥＦＦに配置され、タイマ６、ＳＣＩ７、などの入出力回路及びＤＭＡＣ１の各レジスタはアドレスはＨ’ＦＦＦＦ００〜Ｈ’ＦＦＦＦＦＦに配置されている。このとき前記メモリアドレスレジスタＭＡＲはアドレス空間の全てを指定可能であるが、８ビットのＩ／ＯアドレスレジスタＩＯＡＲは内蔵入出力回路だけをを指定可能であることが理解されよう。なお、アドレスＨ’ＦＦＦＦ００〜Ｈ’ＦＦＦＦＦＦに外部空間を一部設けてもよい。
【００３１】
図５乃至図７にはメモリ−入出力回路間でのデータ転送を行なう場合の制御レジスタＤＴＣＲの機能が示される。
【００３２】
制御レジスタＤＴＣＲは、転送を許可するＤＴＥビット、転送終了時に割込みを要求するかしないかを選択するＤＩＥビット、転送をくり返すか終了するかを選択するＲＰＥビット、転送サイズを選択するＳＺビット、転送後にＭＡＲのインクリメントを行うかデクリメントを行うかを選択するＩＤビット、起動要因を選択するＴＲＳ０〜２ビットによって構成されている。
【００３３】
ＤＴＥビットを０にクリアした状態ではＤＭＡＣ１の該当チャネルは停止状態とされる。ＤＴＥビットを１にセットすると、図７に示されるＴＲＳ０〜２ビットで指定した起動要因が発生したときにデータ転送が行われる。ここで、ＴＲＳＡ２，ＴＲＳＡ１に夫々１が設定されているときはメモリ−メモリ間の転送とされるので、図７にも示されるように、メモリ−入出力回路間での転送では、各チャネルにおけるＴＲＳ２，ＴＲＳ１の双方が共に１に設定される状態は除外されている。ＲＰＥビットが０にクリアされているときには、所定回の転送が終了して、ＥＴＣＲ：ＴＣＲ（実行転送カウントレジスタＥＴＣＲと転送カウントレジスタＴＣＲとを連結して１６ビットレジスタとして利用することを意味する）の内容が０になるとＤＴＥビットは０にクリアされる。
【００３４】
ＤＴＥビットが０にクリアされているとき、ＤＩＥビットが１にセットされていれば、ＣＰＵ１に対して転送終了割込みを要求する。ＤＩＥビットが０にクリアされていれば、ＤＴＥビットの状態によらず、ＣＰＵ１に対しては割込みを要求しない。ＳＺビットビットが０にクリアされている場合にはバイトデータの転送を行い、ＳＺビットが１にセットされている場合にはワードデータの転送を行う。ＲＰＥビットとＤＩＥビットは、図５に示されるように動作モードを指定する。
【００３５】
まず、転送カウンタを実行転送カウントレジスタＥＴＣＲだけで８ビットレジスタとするか、実行転送カウントレジスタＥＴＣＲと転送カウントレジスタＴＣＲを連結して１６ビットレジスタＥＴＣＲ：ＴＣＲとするかを指定する。ＲＰＥビットが０にクリアまたはＤＴＩＥビットが１にセットされているとき、転送カウンタを１６ビットレジスタＥＴＣＲ：ＴＣＲとし、ＲＰＥビットが１にセットかつＤＴＩＥビットが０にクリアされているとき、転送カウンタを８ビットレジスタＥＴＣＲとし、ＴＣＲは転送回数保持に使用される。
【００３６】
１回の転送終了後にはＥＴＣＲまたはＥＴＣＲ：ＴＣＲのデクリメントが行われると共に、ＲＰＥビットとＤＩＥビットの設定状態に応じて、メモリアドレスレジスタＭＡＲの保持アドレスがインクリメントまたはデクリメントされる。このときのメモリアドレスレジスタＭＡＲのインクリメントまたはデクリメントの指定はＩＤビットで行なう。インクリメントまたはデクリメントの値はＳＺビットによって指定され、バイトサイズのとき１、ワードサイズのとき２がインクリメントまたはデクリメントされる。
【００３７】
転送カウンタとして利用されるＥＴＣＲまたはＥＴＣＲ：ＴＣＲの前記デクリメント結果が０でなければ、次に起動要因が発生するまで、該当チャネルは待機状態となる。デクリメント結果が０になったとき、ＲＰＥビットが０にクリアまたはＤＩＥビットが１にセットされていれば、ＤＴＥビットを自動的に０にクリアして該当チャネルは停止状態となる。ＲＰＥビットが１にセットかつＤＩＥビットが０にクリアされていれば、転送カウントレジスタＴＣＲの内容を実行転送カウントレジスタＥＴＣＲに転送し、メモリアドレスレジスタＭＡＲの内容に転送カウントレジスタＴＣＲの内容を加算または減算して、該当チャネルは待機状態となり、さらに転送をくり返す。
【００３８】
ＴＲＳ０〜２ビットによって指定される起動要因は、とくに制限はされないものの、図７に示されるように、タイマＡ、タイマＢ、タイマＣ、タイマＤのコンペアマッチおよびＳＣＩの送信終了、受信終了である。タイマＡ〜Ｄのコンペアマッチ、ＳＣＩの送信終了を起動要因に指定した場合には、メモリアドレスレジスタＭＡＲで示されるアドレスからＩ／ＯアドレスレジスタＩＯＡＲで示されるアドレスへの転送が行われる。ＳＣＩの受信終了を起動要因に指定した場合には、Ｉ／ＯアドレスレジスタＩＯＡＲで示されるアドレスからメモリアドレスレジスタＭＡＲで示されるアドレスへの転送が行われる。これらの起動要因については、前記昭和６２年９月（株）日立製作所発行の『日立１６ビットマイクロプロセッサＨＤ６４１０１６』などによって公知であるので更に詳細な説明は省略する。なお、図５において、記号−は任意値を意味する。
【００３９】
図８にはメモリ−入出力回路間のデータ転送における、各レジスタの動作モード毎の機能が示される。
【００４０】
起動要因がＳＣＩ７の受信完了かそれ以外かによって、メモリアドレスレジスタＭＡＲとＩ／ＯアドレスレジスタＩＯＡＲの何れが転送元アドレスを指定するか転送先アドレスを指定するかが相違される。ノーマルモード２ではメモリアドレスレジスタＭＡＲの内容が固定値とされる。また、リピートモードでは転送カウンタは８ビット長の実行転送カウントレジスタＥＴＣＲとされ、ノーマルモードでは転送カウンタは１６ビット長のＥＴＣＲ：ＴＣＲとされる。
【００４１】
図９にはＤＭＡＣ１のメモリ−入出力回路間のデータ転送におけるノーマルモード１の一例フローチャートが示され、図１０にはノーマルモード１によるデータ転送の一例タイミングチャートが示される。
【００４２】
ノーマルモード１は、連続したメモリ上のデータを、固定した１バイトまたは１ワードの入出力回路のレジスタとの間でデータ転送を行なうことができる。起動要因はタイマのコンペアマッチまたはＳＣＩの受信完了・送信完了から選択できる。チャネルＢは、さらに外部端子による起動を選択できる。これらの起動要因が発生したときに１回（１バイトまたは１ワード）の転送が行なわれ、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ（ＥＴＣＲ：ＴＣＲ）で指定した回数だけ繰り返す。
【００４３】
例えば、ＳＣＩ７で複数バイトのデータを送信する場合に応用することができる。この場合、送信すべきデータをＲＡＭ上に用意し、制御レジスタＤＴＣＲのＲＰＥビットを０にクリア、ＳＺビットを０にクリア、ＩＤビットを０にクリア、ＤＩＥビットを１にセットし、ＥＴＣＲ：ＴＣＲに送信データのバイト数（ｎ）を、メモリアドレスレジスタＭＡＲに前記ＲＡＭの先頭アドレス（ｅ）、Ｉ／ＯアドレスレジスタＩＯＡＲにＳＣＩ７の送信データレジスタのアドレス（ｍ）をライトする。この後にＤＴＥビットを１にセットし、ＳＣＩ７の送信完了割込みを許可する。ＳＣＩ７が待機状態であればただちに、送信中であれば、送信完了後に、ＳＣＩ送信完了割込みが発生して、ＤＭＡＣ１に起動が要求される。
【００４４】
ＤＭＡＣに起動が要求されると、第１ステップＳ１で、ＤＭＡＣ１は起動要因をＤＭＡＣ１の内部に保持するとともに、ＢＳＣ３にバス権要求を行なう。バス権が獲得できれば、第２ステップＳ２で、メモリアドレスレジスタＭＡＲの内容をＡバスに出力し、アドレスバッファＡＢと算術論理演算器ＡＬＵに転送する。算術論理演算器ＡＬＵではＳＺビットとＩＤビットで指定した演算（上記例では＋１）を行ない、その結果をメモリアドレスレジスタＭＡＲに格納する。
【００４５】
第３ステップＳ３ではアドレスバッファＡＢのアドレスに従ってメモリリード動作を開始する。また、転送カウンタＥＴＣＲ：ＴＣＲの内容をＡバスに出力して、算術論理演算器ＡＬＵに転送し、デクリメントを行なう。第４ステップＳ４ではＩ／ＯアドレスレジスタＩＯＡＲの内容をＡバスに出力し、アドレスバッファＡＢに転送する。さらに前記リードしたメモリデータをデータバスからデータバッファＤＢに格納する。
【００４６】
前記デクリメント結果が０であれば、第５ステップＳ５でＤＴＥビットをクリアする。また、前記第４ステップＳ４でアドレスバッファＡＢに転送されたアドレスにしたがってＳＣＩ内蔵レジスタに対するライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する。第６ステップＳ６ではライトを完了してＤＭＡＣ１は停止する。ＤＩＥビットが１にセットされていれば、ＣＰＵ２に対してＤＭＡＣ１の転送完了割込みを発生する。
【００４７】
前記デクリメント結果が０でなければ、第７ステップでは前記第４ステップＳ４でアドレスバッファＡＢに転送されたアドレスにしたがってＳＣＩ内蔵レジスタに対するライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する。これに続く第８ステップではライトを完了してＤＭＡＣ１は待機状態となり、再度起動要因が発生するまで停止する。
【００４８】
転送終了時には、メモリアドレスレジスタＭＡＲは最後のデータの次のアドレスとされ、転送カウンタＥＴＣＲ：ＴＣＲは０とされている。転送カウンタＥＴＣＲ：ＴＣＲの最大値は６５５３６である。なお、特に制限はされないものの、メモリ・入出力回路のリードライトは２ステートで行なうものとした。
【００４９】
図１１にはＤＭＡＣ１のメモリ−入出力回路間のデータ転送としてノーマルモード１によるＳＣＩ受信のフローチャートが示される。
【００５０】
このフローチャートにおいて、第２ステップＳ２ではＩ／ＯアドレスレジスタＩＯＡＲの内容をＡバスを経由してアドレスバッファＡＢに転送し、第３ステップＳ３ではそのアドレスにしたがってＳＣＩ内蔵レジスタのリードを開始し、第４ステップＳ４ではメモリアドレスレジスタＭＡＲの内容をＡバスを介してアドレスバッファＡＢに転送すると共に算術論理演算器ＡＬＵでそのメモリアドレスを更新してこれを再度これをメモリアドレスレジスタＭＡＲに格納し、第５ステップＳ５及び第７ステップＳ７では前記ＳＣＩ内蔵レジスタからリードしたデータをアドレスバッファＡＢのメモリアドレスにしたがって書込みを行い、その外は図９の処理と同様とされる。
【００５１】
図１２にはＤＭＡＣ１のメモリ−入出力回路間のデータ転送としてノーマルモード２による動作の一例フローチャートが示される。
【００５２】
ノーマルモード２は、固定した１バイトまたは１ワードのメモリ上のデータと、入出力回路のレジスタ間でデータ転送を行なうことができる。起動要因はタイマのコンペアマッチまたはＳＣＩの受信完了・送信完了から選択できる。これらの起動要因が発生した時１回（１バイトまたは１ワード）の転送を行ない、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ（ＥＴＣＲ：ＴＣＲ）で指定した回数だけ繰り返す。メモリアドレスレジスタＭＡＲの値が固定値とされる他はノーマルモード１と同様である。ＤＩＥビットが１にセットされているため、転送カウンタ（ＥＴＣＲ：ＴＣＲ）で指定した回数の転送が終了すると、ＣＰＵ２に割込みが要求される。
【００５３】
ＤＭＡＣ１に起動が要求されると、第１ステップＳ１では、ＤＭＡＣ１は起動要因をＤＭＡＣ１の内部に保持するとともに、ＢＳＣ３にバス権要求を行なう。バス権が獲得できれば、第２ステップＳ２で、メモリアドレスレジスタＭＡＲの内容をＡバスに出力し、アドレスバッファＡＢに転送する。
【００５４】
第３ステップＳ３ではアドレスバッファＡＢが保持するアドレスでリード動作を開始する。また、転送カウンタＥＴＣＲ：ＴＣＲの内容をＡバスに出力し、算術論理演算器ＡＬＵに転送し、デクリメントを行なう。第４ステップＳ４ではＩ／ＯアドレスレジスタＩＯＡＲの内容をＡバスに出力し、アドレスバッファＡＢに転送する。第３ステップを介してリードしたデータをデータバスからデータバッファＤＢに格納する。
【００５５】
前記デクリメント結果が０であれば、第５ステップＳ５ではＤＴＥビットをクリアする。また、アドレスバッファＡＢのアドレスにしたがってライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する。これに続く第６ステップＳ６ではライトを完了してＤＭＡＣ１は停止する。ＤＩＥビットが１にセットされていれば、ＣＰＵ２に対してＤＭＡＣ１の転送完了割込みを発生する。
【００５６】
前記デクリメント結果が０でなければ、第７ステップＳ７ではアドレスバッファＡＢのアドレスにしたがってライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する。これに続く第８ステップＳ８でライト動作を完了してＤＭＡＣ１は待機状態となり、起動要因が発生するまで停止される。
【００５７】
転送終了時に転送カウンタＥＴＣＲ：ＴＣＲは０となっている。なお、転送カウンタＥＴＣＲ：ＴＣＲの最大値は前記同様に６５５３６であり、また、メモリ・入出力回路間のリードライトも２ステートで行われる。
【００５８】
図１３にはＤＭＡＣ１のメモリ−入出力回路間のデータ転送におけるリピートモードの一例動作フローチャートが示され、図１４にはそのリピートモードによるデータ転送動作の一例タイミングチャートが示される。
【００５９】
リピートモードは、連続したメモリ上のデータと、固定した１バイトまたは１ワードの入出力回路のレジスタとの間で繰り返しデータ転送を行なうことができる動作モードである。起動要因はタイマ６のコンペアマッチまたはＳＣＩ７の受信完了・送信完了から選択できる。これらの起動要因が発生した時１回（１バイトまたは１ワード）の転送を行ない、転送が終了すると、再び起動要因が発生するまで待機状態とされる。これを転送カウンタ（ＥＴＣＲ）で指定した回数だけ繰り返すと、メモリアドレスレジスタＭＡＲと実行転送カウントレジスタＥＴＣＲの内容を回復し、さらに転送を繰り返す。
【００６０】
例えば、シングルチップマイクロコンピュータ１００が制御するステッピングモータの励磁データをパルス出力装置８を介して出力する場合に適用することができる。この場合、例えば、タイマＡのコンペアマッチを起動要因に選択する。出力すべきデータをＲＡＭ５上に用意する。このデータは、例えばステッピングモータの１回転分の励磁データである。
【００６１】
制御レジスタＤＴＣＲのＲＰＥビットを１にセット、ＳＺビットを０にクリアし、ＩＤビットを０にクリアし、ＤＩＥビットを０にクリアし、実行転送カウントレジスタＥＴＣＲ及び転送カウントレジスタＴＣＲに送信データのバイト数（ｎ）を、メモリアドレスレジスタＭＡＲに前記ＲＡＭ５の先頭アドレス（ｅ）、Ｉ／ＯアドレスレジスタＩＯＡＲにパルス出力装置８内蔵の出力データレジスタのアドレス（ｍ）をライトする。この後にＤＴＥビットを１にセットし、タイマＡのコンペアマッチ割込みを許可する。タイマＡのコンペアマッチが発生すると、パルス出力装置８からパルスが出力されるとともに、ＤＭＡＣ１に起動が要求される。
【００６２】
ＤＭＡＣ１に起動が要求されると、第１ステップＳ１では、ＤＭＡＣ１は起動要因をＤＭＡＣ１内部に保持するとともに、ＢＳＣ３にバス権要求を行なう。バス権が獲得できれば、第２ステップＳ２で、メモリアドレスレジスタＭＡＲの内容をＡバスに出力し、これをアドレスバッファＡＢと算術論理演算器ＡＬＵに転送する。算術論理演算器ＡＬＵではＳＺビットとＩＤビットで指定した演算（この例では＋１）を行ない、その結果をメモリアドレスレジスタＭＡＲに書き戻す。
【００６３】
第３ステップＳ３では、アドレスバッファＡＢの保持アドレスにしたがってリード動作を開始する。また、転送カウンタＥＴＣＲの内容をＡバスに出力して、算術論理演算器ＡＬＵに転送し、デクリメントを行なう。第４ステップＳ４ではＩ／ＯアドレスレジスタＩＯＡＲの内容をＡバスに出力し、アドレスバッファＡＢに転送する。また、前記リードを開始したデータをデータバスからデータバッファＤＢに格納する。
【００６４】
前記デクリメントの結果が０であれば、第５ステップＳ５に進み、転送カウントレジスタＴＣＲの内容をＣバスに出力して、実行転送カウントレジスタＥＴＣＲに転送するとともに、算術論理演算器ＡＬＵに入力する。一方、メモリアドレスレジスタＭＡＲの内容をＡバスに出力して、算術論理演算器ＡＬＵに与え、ＳＺビットとＩＤビットに基づいく演算を行って、メモリアドレスレジスタＭＡＲの内容を初期値（ｅ）に戻す。また、前記ＡＢの保持アドレスにしたがってライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する。
【００６５】
前記デクリメント結果が０でなければ、第６ステップＳ６へ進み、アドレスバッファＡＢの保持アドレスにしたがってライト動作を開始し、前記データバッファＤＢの内容をデータバスに出力する
【００６６】
第７ステップＳ７ではライトを完了してＤＭＡＣ１は待機状態となり、起動要因が発生するまで転送動作が停止される。実行転送カウントレジスタＥＴＣＲと転送カウントレジスタＴＣＲの最大値は２５６である。なお、前記同様に、メモリ・入出力回路間でのリード・ライトは２ステートで行なうものとした。タイマのコンペアマッチ及びパルス出力装置については、昭和６３年２月（株）日立製作所発行の『日立８／１６ビットマイクロコンピュータ周辺ＬＳＩ』Ｐ５３８乃至Ｐ５９３などにより公知であるのでその詳細な説明は省略する。
【００６７】
図１５乃至図１８にはメモリ−メモリ間のデータ転送を行なう場合の制御レジスタＤＴＣＲＡ，ＤＴＣＲＢの機能が示される。
【００６８】
メモリ−メモリ間のデータ転送はＴＲＳＡ１，ＴＲＡＳ２をいずれも１にセットすることによって選択される。メモリアドレスレジスタＭＡＲＡで示されるアドレスとメモリアドレスレジスタＭＡＲＢで示されるアドレスとの間でデータ転送が行なわれる。このときＩ／ＯアドレスレジスタＩＯＡＲＡ及びＩＯＡＲＢは使用されない。
【００６９】
メモリ−メモリ間におけるデータ転送のための制御レジスタは、転送を許可するＤＴＥＡビット、転送終了時に割込みを要求するかしないかを選択するＤＩＥＡビット、転送サイズを選択するＳＺＡビット、転送後にＭＡＲＡ，ＭＡＲＢのインクリメントを行うかデクリメントを行うかまたは固定とするかを選択するＲＰＥＡ，ＲＰＥＢ及びＩＤＡ，ＩＤＢの各ビット、転送モードを選択するＴＲＳＡ０ビット、転送中断を示すＤＴＥＢビット、メモリ−メモリ転送モード２（ブロック転送モード）のとき、転送元・転送先のいずれをブロック領域とするかを選択するＤＩＥＢビット、起動要因を選択するＴＲＳＢ０〜ＴＲＳＢ２ビットから構成されている。
【００７０】
ＤＴＥＡビットを０にクリアした状態ではＤＭＡＣ１は停止状態とされる。ＤＴＥＡビットを１にセットすると、ＴＲＳＢ０〜２ビットで指定した起動要因が発生したときにデータ転送が行われる。所定回数の転送が終了して、転送カウンタＥＴＣＲＡ：ＴＣＲＡの内容が０になると、ＤＴＥＡビットは０にクリアされる。
【００７１】
ＤＴＥＡビットが０にクリアされているとき、ＤＩＥＡビットが１にセットされていれば、ＣＰＵ１に対して転送終了割込みを要求する。ＤＩＥＡビットが０にクリアされていれば、ＤＴＥＡビットの状態によらず、ＣＰＵ１に対しては割込みを要求しない。
【００７２】
前記ＳＺＡビットが０にクリアされている場合にはバイトデータの転送が行われ、ＳＺＡビットが１にセットされている場合にはワードデータの転送が行われる。
【００７３】
ＲＰＥＡ，ＲＰＥＢビットとＩＤＡ，ＩＤＢビットは、メモリアドレスレジスタＭＡＲＡ，ＭＡＲＢの動作を指定する。ＲＰＥＡ，ＰＲＥＢビットが０にクリアされているときはメモリアドレスレジスタＭＡＲＡ，ＭＡＲＢの値は固定値とされる。ＲＰＥＡ，ＲＰＥＢビットが１にセットされているときに、ＩＤＡ，ＩＤＢビットが０にクリアされていればメモリアドレスレジスタＭＡＲＡ，ＭＡＲＢはインクリメントされ、またそのときＩＤＡ，ＩＤＢビットが１にセットされているれば、メモリアドレスレジスタＭＡＲＡ，ＭＡＲＢはデクリメントされる。インクリメントまたはデクリメントの値はＳＺＡビットによって指定され、バイトサイズのときは１、ワードサイズのときは２がインクリメントまたはデクリメントされる。メモリアドレスレジスタＭＡＲＡ，ＭＡＲＢの動作はそれぞれ独立に指定できる。
【００７４】
ＴＲＳＡ０ビットは、図１７に示されるように、メモリ−メモリ転送モード１とするか、メモリ−メモリ転送モード２（ブロック転送モード）とするかを選択する。ＴＲＳＢ０〜２ビットによって指定される起動要因は、とくに制限はされないものの、図１８に示されるように、オートリクエスト、外部端子、及び前記タイマＡ、タイマＢ、タイマＣ、タイマＤのコンペアマッチである。但し、メモリ−メモリ転送モード１とメモリ−メモリ転送モード２（ブロック転送モード）では選択できる起動要因が異なっている。
【００７５】
図１９にはメモリ−メモリ間のデータ転送における各レジスタの動作モード毎の機能が示される。
【００７６】
メモリ−メモリ間転送におけるモード１及びメモリ−メモリ間転送におけるモード２（ブロック転送モード）はともに、メモリアドレスレジスタＭＡＲＡ，ＭＡＲＢがそれぞれ転送元・転送先を指定するためのアドレスレジスタとされ、ＥＴＣＲＡ：ＴＣＲＡが転送カウンタになる。メモリ−メモリ転送モード２（ブロック転送モード）ではさらに、ブロックサイズを指定するためにレジスタＴＣＲＢを使用し、ブロック内のデータをカウントするためにレジスタＥＴＣＲＢを使用する。Ｉ／ＯアドレスレジスタＩＯＡＲＡ，ＩＯＡＲＢは使用しない。特に制限されないが、ブロックの最大値は２５６（バイトまたはワード）である。
【００７７】
図２０にはメモリ−メモリ転送モード１の一例動作フローチャートが示され、図２１にはメモリ−メモリ転送モード１の一例動作タイミングチャートが示される。
【００７８】
メモリ−メモリ転送モード１のオートリクエストは、ＣＰＵ１がＤＴＥＡビットを１にセットすると自動的に転送要求が発生して、転送を行なう動作モードである。バーストモードでは一旦ＤＭＡＣ１がバス権を獲得すると、転送カウンタＥＴＣＲＡ：ＴＣＲＡで指定した回数の転送を終了するまで転送を行ない、サイクルスチールモードでは一回の転送毎にＣＰＵ２にバス権を開放しつつ、転送を行なう。なお、バーストモードでは、外部端子による最優先の割込み要求（ＮＭＩ）が発生すると、ＤＴＥＡビットを１にセットしたまま、ＤＴＥＢビットを０にクリアして、転送を中断し、ＣＰＵ２にバス権を開放する。その後、ＣＰＵ２がＤＴＥＡビットまたはＤＴＥＢビットを１にセットすると、これに基づいて転送を再開する。
【００７９】
外部端子による転送要求ではＤＴＥＡビットを１にセットした後、ＴＲＳＢ０〜２で指定した信号が外部端子（ＤＲＥＱ）に発生すると、転送を一回行ない、一回の転送が終了すると、指定した信号が外部端子（ＤＲＥＱ）に発生するまで待機状態となる。これを転送カウンタＥＴＣＲＡ：ＴＣＲＡで指定された回数だけ繰り返す。
【００８０】
ＤＭＡＣ１のこのような動作については、前記昭和６２年９月（株）日立製作所発行『日立１６ビットマイクロプロセッサＨＤ６４１０１６』Ｐ１６９乃至Ｐ２０６などによって公知であるので更に詳細な説明は省略する。
【００８１】
図２２にはメモリ−メモリ転送モード２の一例動作フローチャートが示される。
【００８２】
メモリ−メモリ転送モード２（ブロック転送モード）では、データブロックサイズをレジスタＴＣＲＢ，ＥＴＣＲＢに格納し、データ転送の回数を転送カウンタＥＴＣＲＡ：ＴＣＲＡに指定する。
【００８３】
メモリ−メモリ転送モード２（ブロック転送モード）では、転送要因が発生すると、メモリアドレスレジスタＭＡＲＡで示されるアドレスから、メモリアドレスレジスタＭＡＲＢで示されるアドレスへデータ転送を行ない、そのメモリアドレスレジスタＭＡＲＡ，ＭＡＲＢの保持値を、ＲＰＥＡ，ＩＤＡ，ＳＺＡ，ＲＰＥＢ，ＩＤＢ，ＳＺＢビットの指定に従ってインクリメントまたはデクリメントまたは固定とされる。さらに、レジスタＥＴＣＲＢの値をデクリメントする。これをレジスタＥＴＣＲＢの値が０になるまで繰り返す。レジスタＥＴＣＲＢの値が０になると、リピートモード同様にレジスタＴＣＲＢの内容をレジスタＥＴＣＲＢに転送し、メモリアドレスレジスタＭＡＲＢの内容を初期状態に戻すとともに、転送カウンタＥＴＣＲＡ：ＴＣＲＡの内容をデクリメントする。デクリメント結果が０でなければ起動要因が発生するまで待機状態となる。起動要因が発生する毎に上記動作を転送カウンタＥＴＣＲＡ：ＴＣＲＡが０になるまで繰り返していく。
【００８４】
図２３には前記算術論理演算器ＡＬＵ、シフタＳＦＴ、及びセレクタＳＥＬの具体的な一例回路図が示される。
【００８５】
算術論理演算器ＡＬＵは、特に制限されないが、デクリメンタＤＥＣＲＭＴ、加算回路ＡＤＤ、及びゼロ検出回路ＺＥＲＯによって構成される。算術論理演算器ＡＬＵは２４ビットで構成され、下位８ビット（ＡＬＵ−Ｌ）は、Ａバス（Ａ０〜Ａ７）からのデータ、さらに定数値またはＣバス（Ｃ０〜Ｃ７）からの入力が選択され、かつこれらを上位に１ビットシフトするかしないか、反転するかしないかが選択されて、この選択結果が入力される。上位１６ビット（ＡＬＵ−Ｈ、ＡＬＵ−Ｅ）はＡバス（Ａ８〜Ａ２３）からのデータと、定数値を入力する。定数値は反転するかしないかが選択される。ビット８はビット７からのシフト出力と定数値のいずれかが選択される。
【００８６】
定数値は、メモリアドレスレジスタＭＡＲの演算のときビット０に、転送カウンタＥＴＣＲ：ＴＣＲの演算のときビット８に、転送カウンタＴＣＲの演算のときにビット１６に、それぞれ１が入力され、それ以外の場合またはそれ以外のビットには０が入力される。Ｃバスからの入力は、リピートモードでＥＴＣＲが０になったとき、またはブロック転送モードでＥＴＣＲＢが０になったときに選択されてＴＣＲまたはＴＣＲＢの内容が入力され、Ａバスから入力されるメモリアドレスレジスタＭＡＲＡまたはＭＡＲＢの内容と演算される。ワードサイズデータを転送している場合の、メモリアドレスレジスタＭＡＲのインクリメント・デクリメント及び上記演算時に、シフトが選択される。デクリメントまたは減算を行なう場合に反転が選択される。ゼロ検出回路ＺＥＲＯは上位８ビットが０であり、かつ転送カウンタを８ビット長としているとき、または上位１６ビットが０であるとき、１を出力して、転送終了を検出する。
【００８７】
図２４にはレジスタの具体的な一例回路図が示される。
【００８８】
Ｉ／ＯアドレスレジスタＩＯＡＲは８ビットのレジスタであり、システムクロックφが１レベルの期間にＡバスに出力可能であり、システムクロックφが０レベルの期間にＢバスから入力可能である。Ｉ／ＯアドレスレジスタＩＯＡＲをＡバスに出力する場合、上位１６ビットのＡバスには１レベルを出力するように構成している。これによってＩ／ＯアドレスレジスタＩＯＡＲの指定アドレスはＨ’ＦＦＦＦ００〜Ｈ’ＦＦＦＦＦＦとなる。特に制限はされないものの、Ａバスをシステムクロックφが０レベルの期間にＰチャネル型ＭＯＳによってプリチャージするようにしてもよい。このようにすればクロックゲートを削除できる。
【００８９】
転送カウントレジスタＴＣＲは８ビットのレジスタであり、システムクロックφが１レベルの期間にＡバスに出力可能であり、システムクロックφが０レベルの期間にＢバスから入力可能であり、さらにでシステムクロックφが１レベルの期間にＣバスに出力可能ある。
【００９０】
実行転送カウントレジスタＥＴＣＲは８ビットのレジスタであり、システムクロックφが１レベルの期間にＡバスに出力可能であり、システムクロックφが０レベルの期間にＢバスから入力可能であり、さらにでシステムクロックφが１レベルの期間にＣバスから入力可能ある。
【００９１】
図示はされないものの、メモリアドレスレジスタＭＡＲはＩ／ＯアドレスレジスタＩＯＡＲと同じ構成のものが２４ビット分設けられている。クロックゲートに相当するものは必要ない。
【００９２】
図２５にはデータバッファ及びメモリインタフェースの具体的な一例回路図が示される。
【００９３】
本実施例においては、特に制限はされないものの、ＣＰＵ２がＤＭＡＣ１のレジスタをリードライトする場合には、８ビットバス即ち内部データバスの上位８ビットＤ１５〜８を使用するものとした。従って、データバッファＤＢの下位側（ＤＢ−Ｌ）はＤＭＡＣ１内部バスとは接続されていない。ＣＰＵ２からライトされるデータは８ビットずつデータバッファＤＢ−Ｈを介して、Ｂバスに出力され、下位アドレスを判定して選択されたレジスタに書き込まれる。ＣＰＵ２がリードした場合には、下位アドレスを判定して、選択されたレジスタからＡバスにデータが出力され、前記Ａバスの内容がメモリインタフェースＭＩＦで選択される。かかるデータはデータバッファＤＢ−Ｈを介して、内部データバスに出力され、ＣＰＵ２に読み込まれる。
【００９４】
ＤＭＡＣ１がデータ転送時にリードしたデータは、内部データバスから一旦データバッファＤＢに格納され、その後ライトデータとして内部データバスに出力する。リード時に内部データバスの上位・下位のいずれに有効データが出力されているか、およびライト時に内部データバスの上位・下位のいずれに有効データを出力するかは、バスコントローラ３が指示する。例えば、１６ビットのメモリまたは入出力回路をバイトサイズでリード・ライトした場合、偶数アドレスであれば内部データバス上位に、奇数アドレスであれば下位にデータを出力するものとする。また、８ビットのメモリまたは入出力回路をリード・ライトした場合にはかならず、内部データバス上位にデータを出力するものとする。かかる８ビットのメモリまたは入出力回路をワードサイズでリードした場合には偶数アドレス・奇数アドレスの順にリードを連続して２回行なう。ライトについても同様である。特に制限はされないものの、ワードデータは偶数アドレスから始まるものに限定する。なお、ＤＭＡＣ１はバイトサイズデータはデータバッファの上位に、ワードサイズデータは上位・下位に格納するものとする。
【００９５】
図２６にはＤＭＡＣ１の制御部ＣＯＮＴに含まれる要因保持手段の具体的な一例回路図が示される。
【００９６】
要因保持手段は、要因選択回路（セレクタ）２０１，２０２、要因保持回路（フリップフロップ）２１１，２１２、優先順位判定回路（エンコーダ）２２１、タイミング制御回路２３１、及びクリア制御回路２４１によって構成される。要因選択回路２０１，２０２、要因保持回路２１１，２１２、優先順位判定回路２２１はＤＭＡＣ１の起動を制御する。タイミング制御回路２３１は前記動作タイミングを生成する。なお、同図において記号＊はそれが付されていない信号の反転信号であることを意味する。
【００９７】
選択可能な起動要因はＤＭＡＣ１の外部から、要因選択回路２０１，２０２に入力される。前記ＴＲＳ０〜ＴＲＳ０ビットに基づいて、これらの起動要因が選択されて、要因保持回路２１１，２１２に入力される。ＤＴＥビットが０にクリアされている場合には、要因保持回路２１１，２１２は常にリセットされている。また、メモリ−メモリ転送モードのとき、チャネルＢの要因保持回路２１２はリセットされている。
【００９８】
要因保持回路２１１，２１２のいずれかが１にセットされれば、優先順位判定回路２２１はバスコントローラ３にバス要求を行ない、タイミング制御回路２３１に動作指示を行なう。さらに、チャネルＡ、Ｂともに要因保持回路２１１，２１２が１にセットされていれば、チャネルＡを優先する。
【００９９】
タイミング制御回路２３１はバス権アクノリッジ信号が１レベルになると、レジスタＤＴＣＲＡ，ＤＴＣＲＢの値に基づいて、前記の動作フローチャートの動作を制御する。クリア制御回路２４１は、タイミング制御回路２３１から指示される起動要因クリア信号と、優先順位判定回路２２１が指示するチャネル、及びＴＲＳ２〜ＴＲＳ０ビットに基づいて、各起動要求元（タイマ・ＳＣＩ）に起動要因のクリア信号を与える。また、実行中の要因保持回路２１１，２１２をリセットする。
【０１００】
チャネルＡ，Ｂが同一の起動要因を選択した場合には、２つの要因保持回路２１１，２１２がセットされ、優先度の高いチャネルＡが最初に実行され、実行中に起動要因とチャネルＡの要因保持回路２１１をクリアするが、チャネルＢの要因保持回路２１２はセットされたままであり、チャネルＡの実行終了後にチャネルＢのデータ転送を実行することができる。
【０１０１】
図２７にはＤＭＡＣ１の他の実施例が示される。
【０１０２】
同図に示されるＤＭＡＣ１は、夫々チャネルＡ、Ｂからなるレジスタ群を２組み有し、これらに共通のデータバッファＤＢ（ＤＢ−Ｌ，ＤＢ−Ｈ）、算術論理演算器ＡＬＵ（ＡＬＵ−Ｌ，ＡＬＵ−Ｈ，ＡＬＵ−Ｅ）、シフタＳＦＴ、セレクタＳＥＬ、メモリインタフェースＭＩＦ（ＭＩＦ−Ｌ，ＭＩＦ−Ｈ，ＭＩＦ−Ｅ，ＭＩＦ−Ｃ）、及びアドレスバッファＡＢ（ＡＢ−Ｌ，ＡＢ−Ｈ，ＡＢ−Ｅ）を有している。図２のＤＭＡＣ１を２組設ける場合に比べて、ＡＬＵなどの回路を共通化できる分だけ、ＤＭＡＣ１の論理的・物理的な規模を縮小できる。
【０１０３】
図２７のＤＭＡＣ１において各チャネルの優先順位は、チャネル１Ａ＞１Ｂ＞２Ａ＞２Ｂの順に高くする。このとき、制御部ＣＯＮＴの要因保持手段は、図２６で説明したような要因選択回路と要因保持回路を４個設け、これに応じて優先順位判定回路の論理を変更すれば、容易に実現できる。
【０１０４】
図２８にはＤＭＡＣ１の状態遷移図が示される。
【０１０５】
前記動作タイミングチャートの説明では、メモリ及び入出力回路共に２ステートでリード・ライトするものとしたが、外部に接続するメモリや入出力回路などからウェイトが要求される場合がある。ウェイトが要求されているか否かはバスコントローラ３が判定して、ＤＭＡＣ１に指示する。ＤＭＡＣ１の制御部ＣＯＮＴはウェイトが指示されると、リードサイクルであればＴＲ１とＴＲ２の間にＴＲＷを挿入し、ライトサイクルであればＴＷ１とＴＷ２の間にＴＷＷを挿入する。ＴＲＷおよびＴＷＷでは、データバッファＤＢ以外のＤＭＡＣ１の各部は無操作状態とされる。また、８ビットのメモリまたは入出力回路をワードサイズでリード・ライトした場合に、偶数アドレス・奇数アドレス順にリード・ライトを連続して２回行なう場合などは、１回目のリード・ライトの最初のサイクルをＴＲ１・ＴＷ１とし、２回めのリード・ライトの最後のサイクルをＴＲ２・ＴＷ２とし、その他のサイクルは全てＴＲＷ・ＴＷＷとして、ＤＭＡＣ１が認識する。
【０１０６】
図２９には前記バスコントローラ３の一例ブロック図が示される。
【０１０７】
このバスコントローラ３は、アドレスデコーダＡＤＲＤＥＣ、論理積回路ＡＮＤＬＯＧ、制御レジスタＣＯＮＴＲＥＧ、ウェイト制御回路ＷＳＣＯＮＴ、及びアクセス制御回路ＡＣＳＣＯＮＴによって構成される。アドレスデコーダＡＤＲＤＥＣはＣＰＵ２又はＤＭＡＣ１が出力するアドレス信号を入力し、内蔵機能ブロックの選択信号を生成すると共に、アドレス信号を出力する。制御レジスタＣＯＮＴＲＥＧは、前記バス幅指定レジスタＢＳＷＣＲ、アクセスステート指定レジスタＡＳＴＣＲ、ウェイトステートコントロール許可指定レジスタＷＳＣＥＲ、及びアドレスマルチプレクス指定レジスタＭＰＸＣＲを備え、ＣＰＵ２の制御でその内容が任意に設定されるようになっている。論理積回路ＡＮＤＬＯＧは、アドレスデコーダＡＤＲＤＥＣを通して供給されるアドレス信号と制御レジスタＣＯＮＴＲＥＧに含まれるレジスタＢＳＷＣＲ，ＡＳＴＣＲ，ＷＳＣＥＲ，ＭＰＸＣＲの値の基づいて、ウェイト許可、バス幅、アクセスステート、及びアドレスマルチプレクスに関する制御信号を生成して、アクセス制御回路ＡＣＳＣＯＮＴに与える。ウェイト制御回路ＷＳＣＯＮＴは内蔵機能ブロックなどから発せられるウェイト信号を受けて所要ステート数に応ずるウェイト要求をアクセス制御回路ＡＣＳＣＯＮＴに与える。アクセス制御回路ＡＣＳＣＯＮＴは、前記論理積回路ＡＮＤＬＯＧ及びウェイト制御回路ＷＳＣＯＮＴなどから与えられる信号を受けて、アクセス制御のための各種ストローブ信号ＡＳ，ＨＲＤ，ＬＲＤ，ＨＷＲ，ＬＷＲ、並びにＣＰＵ２やＤＭＡＣ１のためのバッファ制御信号などを生成する。
【０１０８】
ＤＭＡＣ１にデータ転送起動要因が発生すると、ＤＭＡＣバス要求の信号が１レベルにされる。このバス要求に対して、所定のタイミングでバスコントローラ３はＤＭＡＣ１にバス使用を許可して、ＤＭＡＣバス許可の信号を１レベルとする。それ以外の時はＣＰＵ２がバスを使用できる。バスの起動信号やアドレス入力は、ＣＰＵ２の出力とＤＭＡＣ１の出力との間でマルチプレクスされている。すなわち、ＤＭＡＣバス許可の信号が１レベルであれば、ＤＭＡＣ１からのバスの起動信号やアドレス入力を受付け、それ以外はＣＰＵ２からのバスの起動信号やアドレス入力を受付ける。バスコントローラ３の内部の動作は、ＣＰＵ２によるアクセスとＤＭＡＣ１によるアクセスの何れの場合も同一とされる。リード／ライト中にＣＰＵ２／ＤＭＡＣ１に与えられるべきバッファ制御信号もマルチプレクスされる。
【０１０９】
図３０乃至図３４には前記制御信号ＨＨ、ＬＨ、ＨＬ、ＬＬの出力仕様が示される。
【０１１０】
サイズはＳＺビットで指定される転送データのサイズであり、また、バス幅は転送の対象となるメモリまたは入出力回路のデータ幅である。Ｔ１は第１ステート、Ｔ２は第２ステート、Ｔ３は第３ステート、Ｔｗはウェイトステートである。図において記号−は対応ステートが無いことを意味する。ステートは特に制限はされないものの２ステートと、３ステート以上でリードまたはライトを行う２種類とされる。なお、４ステート以上は３ステートにウェイトを要求することによって実現する。Ａ０はアドレスバスのビット０である。特に制限はされないものの、ワードサイズデータは必ず偶数アドレスから始まるものとされる。ＤＭＡＣ１のリード及びライト時には、かかる制御信号ＨＨ、ＬＨ、ＨＬ、ＬＬに基づいて、図２５のデータバッファＤＢ−Ｌ，ＤＢ−Ｈの制御が行われる。ＣＰＵ２のデータバッファも同様に構成することができる。
【０１１１】
図３５には本発明に係るデータ転送制御装置を適用したシングルチップマイクロコンピュータの他の実施例ブロック図が示される。
【０１１２】
図３５に示されるシングルチップマイクロコンピュータ１０１は、図１のシングルチップマイクロコンピュータに対して、上記説明に係るＤＭＡＣ１を２個設けた点が相違される。便宜上双方のＤＭＡＣ１をＤＭＡＣ１−１とＤＭＡＣ１−２に分けて記す。このとき、バスコントローラ３３は、前記バスコントローラ３に対して、ＤＭＡＣバス要求信号、ＤＭＡＣバス許可信号を２組とし、マルチプレクサの入力を増加すれば、容易に実現することができる。バス権調停における優先順位は、例えばＤＭＡＣ１−１＞ＤＭＡＣ１−２とされる。斯る優先順位の制御は、バスコントローラ３３の調停機能に含まれる。
【０１１３】
図３６には図３５のシングルチップマイクロコンピュータ１０１を応用した制御システムの一例としてプリンタ制御システムが示される。
【０１１４】
プリンタ制御システムは、シングルチップマイクロコンピュータ１０１、セントロニクスインタフェース回路３０１、バッファＲＡＭ３０２、キャラクタジェネレートＲＯＭ（ＣＧＲＯＭ）３０３、印字データ出力用バッファとされる出力バッファＲＡＭ３０４、プリンタの印字ヘッド３０５含み、それらがシングルチップマイクロコンピュータ１０１の外部バス３０６を介して接続され、さらに印字ヘッドを機械的に移動させるためのラインフィードモータ３０７及びキャリッジリターンモータ３０８を含んで構成される。これらのモータ３０７及び３０８は、それぞれタイマ６の出力並びにパルス出力装置８の出力によって駆動制御される。ラインフィードモータ３０７及びキャリッジリターンモータ３０８は、特に制限はされないものの、ステッピングモータである。
【０１１５】
図示しないホストプロセッサから送られてくるデータはセントロニクスインタフェース回路３０１を経由して、バッファＲＡＭ３０２に転送される。かかる転送にＤＭＡＣ１−１のチャネル１（チャネル１Ａと１Ｂを併せた構成）をメモリ−メモリ転送モード１の外部端子による起動によって使用することができる。セントロニクスインタフェース回路３０１のアドレスをメモリアドレスレジスタＭＡＲＡに設定し、バッファＲＡＭ３０２のアドレスをメモリアドレスレジスタＭＡＲＢに設定し、転送回数を転送カウンタＥＴＣＲＢ：ＴＣＲＢに設定する。例えば、メモリアドレスレジスタＭＡＲＡは固定、メモリアドレスレジスタＭＡＲＢはインクリメントモードとし、セントロニクスインタフェース回路３０１のストローブ信号をＤＲＥＱ１端子に入力すればよい。
【０１１６】
ＣＰＵ２は、前記バッファＲＡＭ３０２に格納されたデータに基づいてキャラクタジェネレートＲＯＭ３０３を参照し、前記データをフォントデータに変換する。データを例えば、一行分変換し、印字データバッファＲＡＭ３０４に格納する。
【０１１７】
その後タイマＡ６１とＤＭＡＣ１−１のチャネル２Ａ、２Ｂに起動をかけ、パルス出力を行ない、キャリッジリターンモータ３０８を駆動する。キャリッジリターンモータ３０８の回転によって、印字ヘッド３０５が移動する。印字ヘッド３０５の移動に合わせて、印字データバッファ３０４から印字データヘッド３０５へのデータ転送を行なう。印字データは１フォントの各列のデータを１ブロックとして転送する。例えば１フォントが２４×２４ドットであれば、前記１ブロックは２４ビット即ち３バイトである。かかる転送にＤＭＡＣ１−２のチャネル１をメモリ−メモリ転送モード２（ブロック転送モード）で、特に制限はされないものの、タイマＢ６２のコンペアマッチによって使用することができる。
【０１１８】
図３７にはステッピングモータの制御方法の一例が示される。
【０１１９】
本実施例では、ＤＭＡＣ１−１のチャネル２Ａ、２Ｂ共にタイマＡのコンペアマッチ信号によって起動する。チャネルＡは内蔵ＲＡＭ５からタイマＡの比較レジスタＴＣＭＲへの転送を行なう。チャネル２Ｂは内蔵ＲＡＭ５からパルス出力装置８の出力バッファレジスタＮＤＲへの転送を行なう。パルス出力装置８は、タイマＡのコンペアマッチ信号が発生すると、ＮＤＲの内容をパルス出力するものである。従って、タイマＡのコンペアマッチ毎にチャネル２Ａの転送により、タイマＡの比較レジスタＴＣＭＲを書替え、コンペアマッチ周期即ち、パルス出力の間隔を変化させている。これによって、ステッピングモータの加速または減速を行なうことができる。モータの加速時には第１の比較レジスタの内容を次第に小さくして、パルス出力間隔を短くすれば良い。逆にモータの減速時には第１の比較レジスタの内容を次第に大きくして、パルス出力間隔を短くすれば良い。なお、タイマＡのカウンタは、比較レジスタの内容と一致すると０にクリアされるように設定する。
【０１２０】
チャネル２Ｂは、位相１〜位相３を通じてリピートモードで、内蔵ＲＡＭ５に格納した、ステッピングモータモータの励磁データをＮＤＲへ転送する。チャネル２Ａでは、位相１及び位相３がノーマルモード１で、位相２がノーマルモード２で動作し、いずれも内蔵ＲＡＭ５に格納したコンペアマッチ周期を比較レジスタＴＣＭＲへ転送する。
【０１２１】
図３８にはステッピングモータの制御時におけるメモリマップの一例が示される。
【０１２２】
コンペアマッチ周期は、内蔵ＲＡＭ５上に、アドレスＲＡＭＡ１を先頭として、ｍ２＋１ワードを格納しておく。特に制限はされないものの比較レジスタは１６ビットとし、コンペアマッチ周期の大きい順に格納しておく。励磁データはアドレスＲＡＭＡ０を先頭として、ｎバイト格納しておく。
【０１２３】
チャネル２ＢのレジスタＥＴＣＲ及びＴＣＲにｎを設定し、メモリアドレスレジスタＭＡＲに励磁データの先頭アドレスＲＡＭＡ０を設定する。ＳＺビットを０にクリア、ＩＤビットを０にクリア、ＲＰＥビットを１にクリア、ＤＩＥビットを０にクリア、ＴＲＳ２〜０ビットを全て０にクリアする。
【０１２４】
全体の回転数をｍ１、加速・減速時の回転数をｍ２とすると、位相１では、チャネル２ＡのＥＴＣＲ：ＴＣＲにｍ２−１を設定し、メモリアドレスレジスタＭＡＲＡにコンペアマッチ周期の先頭アドレスＲＡＭ１＋２を設定する。ＳＺビットを１にセット、ＩＤビットを０にクリア、ＲＰＥビットを０にクリア、ＤＩＥビットを１にセット、ＴＲＳ２〜０ビットを全て０にクリアする。その後、ＤＴＥビットを１にセットして、ＣＰＵ２がアドレスＲＡＭＡ０の内容を比較レジスタに書き込んで、タイマＡを動作させ、コンペアマッチ信号を発生させればよい。かかるコンペアマッチ毎に１ワードずつＲＡＭ５の内容を比較レジスタに転送を行ない、コンペアマッチがｍ２回発生するとＥＴＣＲ：ＴＣＲが０になって、ＤＴＥビットが０にクリアされ、ＣＰＵ２に割込みを要求して、チャネル２Ａは停止状態になる。
【０１２５】
位相２では、前記割込み要求により、ＣＰＵ２は割込み処理ルーチンを実行して、ＥＴＣＲ：ＴＣＲにｍ１−ｍ２×２を設定し、ＲＰＥビットを１にセットした後、ＤＴＥビットを１にセットする。コンペアマッチが発生すると、ＲＡＭ１＋（ｍ２−１）×２番地の内容を比較レジスタに転送する。コンペアマッチがｍ１−ｍ２×２回発生するとＥＴＣＲ：ＴＣＲが０になって、ＤＴＥビットが０にクリアされ、ＣＰＵ２に割込みを要求して、チャネル２Ａは停止状態になる。
【０１２６】
位相３では、前記割込み要求によって、ＣＰＵ２は割込み処理ルーチンを実行して、ＥＴＣＲ：ＴＣＲにｍ２を設定し、ＲＰＥビットを０にクリア、ＩＤビットを１にセットした後、ＤＴＥビットを１にセットする。コンペアマッチが発生すると、ＲＡＭ１＋（ｍ２−１）×２番地の内容からアドレスを順次を減算しつつ、ＲＡＭ５の内容を比較レジスタに転送する。コンペアマッチがｍ２回発生するとＥＴＣＲ：ＴＣＲが０になって、ＤＴＥビットが０にクリアされ、ＣＰＵ２に割込みを要求して、チャネル２Ａは停止状態になる。
【０１２７】
この割込み要求によって、ＣＰＵ２は割込み処理ルーチンを実行して、ｍ１回のコンペアマッチが発生し、ステッピングモータが所定回数回転し、印字ヘッド３０５が所定量移動したものとして、タイマＡを停止し、またチャネルＢのＤＴＥビットを０にクリアして、停止する。パルス出力装置も最後の出力値を保持しつつ停止する。さらにパルス出力装置８の出力を０にクリアするようにしてもよい。
【０１２８】
この後、ステッピングモータを逆回転する場合には、チャネル２Ｂは、メモリアドレスレジスタＭＡＲに励磁データの最後のアドレスＲＡＭ０＋ｎ−１を設定、ＩＤビットを１にセットする。チャネルＡは、上記動作をくり返せばよい。タイマＡの比較レジスタの内容はアドレスＲＡＭＡ０の内容となっているのでＣＰＵ２が転送を行なう必要はない。
【０１２９】
あるいは、モータの停止した位置から逆回転する場合には、ＭＡＲＢ、ＥＴＣＲＢの最後のデータを判定して、ＭＡＲはＲＡＭＡ０〜ＲＡＭＡ０＋ｎ−１、ＥＴＣＲは１〜ｎの範囲で再設定すればよい。
【０１３０】
図３９にはステッピングモータの制御時における一例タイミングチャートが示される。
【０１３１】
コンペアマッチの発生により、チャネル２Ａ、２Ｂの両方の起動が要求されるが、チャネル２Ａが優先度が高く、先に実行される。チャネル２Ａが前記の通り１ワードの転送を行ない、比較レジスタの書き替えを行なったあと、チャネル２Ｂが１バイトの転送を行ない、励磁データの書き替えを行なう。この励磁データは次のコンペアマッチ時にパルス出力装置８から出力される。次のコンペアマッチは新しい比較レジスタの値によって行なわれる。
【０１３２】
図４０には前記パルス出力装置８の具体的な一例回路図が示される。
【０１３３】
パルス出力装置８は、バッファレジスタＮＤＲ、出力データレジスタＤＲ、バッファ許可レジスタＮＤＥＲ、データ方向レジスタＤＤＲから構成される。パルス出力を行なう場合には、データ方向レジスタＤＤＲを１にセットし、バッファ許可レジスタＮＤＥＲを１にセットする。出力データレジスタＤＲの内部バスからのライトは禁止され、バッファレジスタＮＤＲの内容がコンペアマッチ発生時に出力データレジスタＤＲに転送される。この内容は出力データレジスタＤＲで保持されると共に、端子Ｐから出力される。バッファレジスタＮＤＲは常に内部バスからライト可能である。かかるライトはＣＰＵ２またはＤＭＡＣ１のいずれであるかにはよらない。
【０１３４】
図４１には前記ステッピングモータ駆動回路の一例ブロック図が示される。
【０１３５】
特に制限はされないものの、８極４相ステッピングモータに対して、パルス出力装置８のパルス出力信号をパワードライブ素子を介して与えている。例えば、パルス出力０、４にそれぞれ１、０レベルを出力することによって、パワードライブ素子を介して、ステッピングモータの極間に電流を流し、モータを駆動するものである。例えば、励磁データはＨ’１Ｅ、Ｈ’２Ｄ、Ｈ’４Ｂ、Ｈ’８７を出力することによって、ステッピングモータは左方向に回転する。パワードライブ素子は、例えば、コンプリメンタリパワーＭＯＳＦＥＴを用いることができる。
【０１３６】
図４２には印字データ出力時のメモリマップの一例が示される。
【０１３７】
特に制限はされないものの、一行分のデータｍ×ｎバイトをアドレスＢＦＲ０を先頭とする印字データバッファに格納しておく。前記２４×２４ドットのフォントデータが、一行あたり４０であれば、ｍ＝３、ｎ＝２４×４０であり、２８８０（３×２４×４０）バイトである。これを、印字データヘッドに対して一回に３バイトずつ転送する。
【０１３８】
図４３には印字データ出力時の一例タイミングチャートが示される。
【０１３９】
印字データのタイミングはタイマＢによって指定する。特に制限はされないものの、タイマＢは第一、第二の比較レジスタを有し、第一のコンペアマッチによって、ＤＭＡＣを起動すると共に、図示はされないが入出力ポートと兼用されたタイマ出力端子に０レベルを出力する。また、第二のコンペアマッチによって、前記タイマ出力端子に１レベルを出力する。印字データは第二のコンペアマッチ時、即ち前記タイマ出力端子の０レベルから１レベルへの変化時に２４ドット一括して印字され、第一のコンペアマッチ発生後、次の印字データがＤＭＡＣによって転送される。
【０１４０】
本実施例では、ラインフィードモータの駆動をタイマＡで、印字タイミングをタイマＢで発生したため、印字は前記位相２の定速回転の間に行なうことが望ましい。ラインフィードモータの駆動と印字タイミングの発生を、同一のタイマで行なえば、上記制約は発生しない。
【０１４１】
図４４には印字データの一例が示される。
【０１４２】
文字データは特に制限はされないものの、ホストプロセッサから１文字２バイトで送られる。これをキャラクタジェネレートＲＯＭでフォントデータ９６（３×２４）バイトに展開する。１列分の３バイトデータを３バイトの印字ヘッドに割り当てている。
【０１４３】
上記実施例では、印字ヘッドを互いに異なる連続した３バイトのアドレスとしたが、ファーストインファーストアウトのバッファとして、１バイトのアドレスとすることもできる。この場合は、ＲＰＥＢビットを０にクリアして、ＭＡＲＢを固定とすればよい。
【０１４４】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４５】
例えば例えば、ＤＭＡＣの詳細な構成は、２チャネル（１組）あるいは４チャネル（２組）のほか任意のチャネル数でよい。ＤＭＡＣの内部バスの構成などは種々変更が可能である。また、シングルチップマイクロコンピュータの内部構成などにもなんら限定されない。タイマのチャネル数、タイマの機能、起動要因の種類等変更可能である。例えばチャネル毎に選択できる起動要因を変更することもできる。
【０１４６】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータ及びプリンタ制御システムに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置あるいあは制御システムにも適用可能であり、本発明は少なくともデータ転送を行なう機能を有する半導体集積回路装置及び斯る半導体集積回路装置を使用した制御システムに適用することができる。例えば、ＦＡＸの読み取り・記録・搬出の３つのモータ駆動に、それぞれ２チャネル（１組）ずつのデータ転送制御装置で制御することができる。
【０１４７】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１４８】
すなわち、メモリ−メモリ間のデータ転送を行なう場合の１チャネル分の資源に、最低限の資源を追加して入出力回路の要求する割込みによっても起動するデータ転送の２チャネル分として使用可能にすることにより、転送元並びに転送先を指定するレジスタなどの転送制御のための資源の利用効率を向上させることができ、更に、多数の割込み要因への対応も容易に行うことができるという効果がある。また、メモリ−メモリ間でのデータブロック転送、メモリ−入出力回路間でのリピート転送モードやマルチ転送モードをデータ転送制御装置のハードウェアでサポートできるようにすることにより、データ転送制御装置の応用範囲を容易に広げることが可能になる。
【図面の簡単な説明】
【図１】本発明に係るデータ転送制御装置を適用したシングルチップマイクロコンピュータの一実施例ブロック図である。
【図２】本発明に係るデータ転送制御装置の一実施例であるＤＭＡＣのブロック図である。
【図３】ＤＭＡＣの一例レジスタ構成図である。
【図４】シングルチップマイクロコンピュータの一例アドレスマップである。
【図５】メモリ−入出力回路転送時の制御レジスタの機能説明図その１である。
【図６】メモリ−入出力回路転送時の制御レジスタの機能説明図その２である。
【図７】メモリ−入出力回路転送時の制御レジスタの機能説明図その３である。
【図８】メモリ−入出力回路転送時の制御レジスタの機能説明図その４である。
【図９】メモリ−入出力回路転送（ノーマルモード１）の一例動作フローチャートである。
【図１０】図９の一例動作タイミングチャートである。
【図１１】メモリ−入出力回路転送（ノーマルモード１）の別の動作フローチャートである。
【図１２】メモリ−入出力回路転送（ノーマルモード２）の一例動作フローチャートである。
【図１３】メモリ−入出力回路転送（リピートモード）の一例動作フローチャートである。
【図１４】図１３の一例タイミングチャートである。
【図１５】メモリ−メモリ転送時の制御レジスタの機能説明図その１である。
【図１６】メモリ−メモリ転送時の制御レジスタの機能説明図その２である。
【図１７】メモリ−メモリ転送時の制御レジスタの機能説明図その３である。
【図１８】メモリ−メモリ転送時の制御レジスタの機能説明図その４である。
【図１９】メモリ−メモリ転送時のモード別のレジスタの機能説明図である。
【図２０】メモリ−メモリ転送（ノーマルモード）の一例動作フローチャートである。
【図２１】図２０の一例タイミングチャートである。
【図２２】メモリ−メモリ転送（ブロック転送モード）の一例動作フローチャートである。
【図２３】算術論理演算器の具体的な一例回路図である。
【図２４】レジスタの具体的な一例回路図である。
【図２５】データバッファ及びメモリインタフェースの具体的な一例回路図である。
【図２６】制御部に含まれる要因保持手段の具体的な一例回路図である。
【図２７】ＤＭＡＣの他の実施例ブロック図である。
【図２８】ＤＭＡＣの一例状態遷移図である。
【図２９】バスコントローラの一例ブロック図である。
【図３０】バスコントローラの動作仕様説明図その１である。
【図３１】バスコントローラの動作仕様説明図その２である。
【図３２】バスコントローラの動作仕様説明図その３である。
【図３３】バスコントローラの動作仕様説明図その４である。
【図３４】バスコントローラの動作仕様説明図その５である。
【図３５】シングルチップマイクロコンピュータの実施例ブロック図である。
【図３６】シングルチップマイクロコンピュータを応用したプリンタ制御システムの一例ブロック図である。
【図３７】プリンタ制御システムに採用可能なステッピングモータの制御手法説明図である。
【図３８】ステッピングモータ制御時におけるメモリマップの一例説明図である。
【図３９】ステッピングモータ制御時の一例タイミングチャートである。
【図４０】パルス出力装置の具体的な一例回路図である。
【図４１】ステッピングモータ駆動回路の一例ブロック図である。
【図４２】印字データ出力時の一例メモリマップである。
【図４３】印字データ出力時における一例タイミングチャートである。
【図４４】印字データの一例説明図である。
【符号の説明】
１          ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）
１−１      ＤＭＡＣ
１−２      ＤＭＡＣ
２          ＣＰＵ（中央処理装置）
３          ＢＳＣ（バスコントローラ）
４          ＲＯＭ
５          ＲＡＭ
６          タイマ
７          ＳＣＩ（シリアルコミュニケーションインタフェース）
８          ＰＳＯ（パルス出力装置）
ＭＡＲ      メモリアドレスレジスタ
ＩＯＡＲ    Ｉ／Ｏアドレスレジスタ
ＥＴＣＲ    実行転送カウントレジスタ
ＴＣＲ      転送カウントレジスタ
ＤＴＣＲ    制御レジスタ
ＴＲＳＡ１，ＴＲＳＡ２  １チャネル／２チャネルの指定ビット
ＡＬＵ      算術論理演算器
ＡＢ        アドレスバッファ
ＤＢ        データバッファ
ＭＩＦ      メモリインタフェース
ＣＯＮＴ    制御部
１００      シングルチップマイクロコンピュータ
１０１      シングルチップマイクロコンピュータ
【図１】
0003825729.tif 000002
【図２】
0003825729.tif 000003
【図３】
0003825729.tif 000004
【図４】
0003825729.tif 000005
【図５】
0003825729.tif 000006
【図６】
0003825729.tif 000007
【図７】
0003825729.tif 000008
【図８】
0003825729.tif 000009
【図９】
0003825729.tif 000010
【図１０】
0003825729.tif 000011
【図１１】
0003825729.tif 000012
【図１２】
0003825729.tif 000013
【図１３】
0003825729.tif 000014
【図１４】
0003825729.tif 000015
【図１５】
0003825729.tif 000016
【図１６】
0003825729.tif 000017
【図１７】
0003825729.tif 000018
【図１８】
0003825729.tif 000019
【図１９】
0003825729.tif 000020
【図２０】
0003825729.tif 000021
【図２１】
0003825729.tif 000022
【図２２】
0003825729.tif 000023
【図２３】
0003825729.tif 000024
【図２４】
0003825729.tif 000025
【図２５】
0003825729.tif 000026
【図２６】
0003825729.tif 000027
【図２７】
0003825729.tif 000028
【図２８】
0003825729.tif 000029
【図２９】
0003825729.tif 000030
【図３０】
0003825729.tif 000031
【図３１】
0003825729.tif 000032
【図３２】
0003825729.tif 000033
【図３３】
0003825729.tif 000034
【図３４】
0003825729.tif 000035
【図３５】
0003825729.tif 000036
【図３６】
0003825729.tif 000037
【図３７】
0003825729.tif 000038
【図３８】
0003825729.tif 000039
【図３９】
0003825729.tif 000040
【図４０】
0003825729.tif 000041
【図４１】
0003825729.tif 000042
【図４２】
0003825729.tif 000043
【図４３】
0003825729.tif 000044
【図４４】
0003825729.tif 000045