(57)【要約】【課題】ＸＹ座標に対応づけられて配列されたデータを座標変換したようにデータ配列を変更して転送することの出来るＤＭＡコントローラを提供する。【解決手段】転送元のアドレスを連続的に生成して転送元の記憶手段からデータ転送を行わせるＤＭＡコントローラにおいて、連続的に生成するアドレスの変位量を１回のデータ転送分のアドレス変位より大きくして、連続に配列されたデータを所定の間隔で飛び飛びに転送可能にする。また、データ転送量が転送ブロックサイズに達したらＣＰＵに割込み信号を出力してデータ転送の開始アドレスを再設定させるように構成する。【選択図】　　図８
2004038231.tif 000002
【特許請求の範囲】
【請求項１】
転送元或いは転送先のアドレスを連続的に生成して転送元の記憶手段から或いは転送先の記憶手段へデータ転送を行わせるＤＭＡコントローラを備えた半導体集積回路において、
上記ＤＭＡコントローラは、第１の配列順に従って連続的に配列された転送元のデータを、転送先において第１の配列順とは異なる第２の配列順に並ぶように、上記転送元或いは転送先のアドレスを生成する転送モードに従った動作が可能に構成されていることを特徴とする半導体集積回路。
【請求項２】
上記転送モードは、転送元においてＸＹ直交座標系の各ドットの情報がＸ方向に並んで格納されているデータを、転送先においてＹ方向に並んで格納されるようにＸＹ座標変換されたアドレスを生成するものであることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
上記転送モードにおいて、上記ＤＭＡコントローラは、連続的に生成するアドレスを、１回のデータ転送分のアドレス変位より大きな第１オフセット量ずつ変位させて生成していくことを特徴とする請求項１又は２に記載の半導体集積回路。
【請求項４】
上記転送モードにおいて、上記ＤＭＡコントローラは複数回のデータ転送により転送量が所定の転送ブロックサイズに達したらＣＰＵに割込み信号を出力するように構成され、この割込み信号に基づきＣＰＵにより転送開始のアドレスが再指定されることを特徴とする請求項３記載の半導体集積回路。
【請求項５】
上記ＤＭＡコントローラには、上記第１オフセット量を設定する第１オフセットレジスタと、上記転送ブロックサイズを設定するブロックサイズレジスタが設けられていることを特徴とする請求項４記載の半導体集積回路。
【請求項６】
転送元或いは転送先のアドレスを連続的に生成して転送元の記憶手段から或いは転送先の記憶手段へデータ転送を行わせるＤＭＡコントローラを備えた半導体集積回路において、
上記ＤＭＡコントローラには、連続的に生成するアドレスの１回ごとの変位量を設定する第１オフセットレジスタが設けられ、この第１オフセットレジスタに１回のデータ転送分のアドレス変位より大きい値を設定することで、転送元から転送先へデータ配列を変化させてデータを転送させるように構成されていることを特徴とする半導体集積回路。
【請求項７】
上記ＤＭＡコントローラは、複数回の転送により転送量が所定の転送ブロックサイズに達したらＣＰＵへ割込み信号を出力するように構成され、この割込み信号に基づきＣＰＵにより転送開始のアドレスが再指定されることを特徴とする請求項６記載の半導体集積回路。
【請求項８】
上記ＤＭＡコントローラは、複数回の転送により転送量が所定の転送ブロックサイズに達したら、この転送ブロックサイズのデータ転送開始時に使用したアドレスより第２オフセット量だけ変位したアドレスを生成するように構成されていることを特徴とする請求項６記載の半導体集積回路。
【請求項９】
上記第２オフセット量は１回のデータ転送分のアドレス変位量であることを特徴とする請求項８記載の半導体集積回路。
【請求項１０】
上記ＤＭＡコントローラには、上記第２オフセット量を設定する第２オフセットレジスタが設けられ、この第２オフセットレジスタに１回のデータ転送分のアドレス変位より大きい値を設定することが可能であることを特徴とする請求項８記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ転送技術さらにはＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）転送制御を行うＤＭＡコントローラに適用して有用な技術に関し、例えばインクジェットプリンタ制御用のシステムＬＳＩに利用して有用な技術に関する。
【０００２】
【従来の技術】
データ処理システムにおいては、例えば、周辺モジュールから主記憶へデータ転送を行ったり、逆に主記憶から周辺モジュールへデータ転送を行う場合に、ＣＰＵを介さずに直接的にデータ転送を行わせるＤＭＡコントローラと呼ばれる機能モジュールが一般に設けられている。
ＤＭＡコントローラは、転送先或いは転送元のアドレスを連続的に生成し、このアドレスに従ってデータ転送を行わせることで、ＣＰＵ以外のモジュールと主記憶との間で直接的にデータ転送を行わせる。ＤＭＡコントローラに対する初期設定時には、ＣＰＵから転送先又は転送元となる開始アドレスや総転送サイズなどの情報がＤＭＡコントローラに設定され、ＤＭＡコントローラはこの開始アドレスや総転送サイズなどの情報に基づきデータ転送制御を行う。
従来のＤＭＡコントローラは、記憶装置に格納されている転送元のデータをそのデータ配列は変えずに転送先へと転送するものであった。
【０００３】
【発明が解決しようとする課題】
ＣＰＵに余り負荷をかけずにデータ転送を行うことのできるＤＭＡコントローラには、さまざまな用途が考えられる。例えば、インクジェットプリンタにおいて、印刷内容がドット単位のデータとして展開された印刷データを、メモリから印字ヘッドを駆動する駆動部のバッファメモリへ転送する処理にＤＭＡコントローラを用いれば、印刷中においてもＣＰＵの負荷があまり高くならず、印刷中におけるプリンタ・ホストコンピュータ間の通信をスムーズに行えるなどと云った様々な利点が得られる。
【０００４】
しかしながら、従来のＤＭＡコントローラでは転送元のデータをそのデータ配列を変えずに転送を行うため、上記インクジェットプリンタのデータ転送にそのまま適用するには次のような問題があった。すなわち、印刷データは、一般に、ワイヤドットプリンタやラインプリンタを想定して印刷画像における縦１ドット×横１ライン分のドットデータが連続的に配置されてメモリ内に格納されるが、インクジェットプリンタは印字ノズルが縦に並んでいるため、印字ヘッドを駆動する駆動部へは印字ノズルの縦方向に並んだドット数分のデータを連続的に転送しなければならず、このようなデータ転送は従来のＤＭＡコントローラで処理することは出来なかった。
【０００５】
この発明は、ＣＰＵを介さないで様々なパターンでデータ転送を行うことの出来るＤＭＡコントローラを備えた半導体集積回路を提供することにある。
この発明の他の目的は、ＸＹ座標に対応づけられて配列されたデータを座標変換したようにデータ配列を変更して転送することの出来るＤＭＡコントローラを備えた半導体集積回路を提供することにある。
この発明の別の目的は、ＣＰＵを介すことなく任意のデータ列に変換してデータ転送可能なＤＭＡコントローラを備えた半導体集積回路を提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【０００６】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、転送元或いは転送先のアドレスを連続的に生成して転送元の記憶手段から或いは転送先の記憶手段へデータ転送を行わせるＤＭＡコントローラにおいて、連続的に生成するアドレスの変位量を１回のデータ転送分のアドレス変位より大きくして、連続に配列されたデータを所定のアドレスおきに読み出して転送可能に構成する。
【０００７】
また、データ転送量が所定の転送ブロックサイズに達したらＣＰＵに割込み信号を出力してデータ転送の開始アドレスを再設定させるようにしたり、或いは、データ転送量が所定の転送ブロックサイズに達したら、この転送ブロックサイズのデータ転送の開始アドレスから１回のデータ転送分のアドレス変位量だけ変位させたアドレスを開始アドレスとして次のデータ転送が開始されるように構成する。
また、データ転送量が所定の転送ブロックサイズに達したら、この転送ブロックサイズのデータ転送の開始アドレスから、１回のデータ転送分のアドレス変位量よりも大きく変位させたアドレスを開始アドレスとして次のデータ転送が開始されるようにしても良い。
【０００８】
このような手段により、例えばドットごとに展開された印刷データのようにＸＹ座標に対応づけられたデータを、Ｘ方向にデータが連続するデータ配列からＹ方向にデータが連続するデータ配置へとＸＹ座標変換したような配列でデータ転送することが可能になるなど、様々なパターンのデータ転送が可能となる。
また、所定の転送ブロックサイズの転送ごとにＣＰＵに次のデータ転送の開始アドレスを再設定させるようにしたり、１回のデータ転送分のアドレス変位より大きな第２オフセット量を加算した開始アドレスを用いることで、例えばデータを所定のパターンで間引いて転送を行うことが出来るなど、より複雑なパターンのデータ転送も可能となる。
【０００９】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
図１は、本発明の実施例のワンチップマイクロコンピュータとその一部周辺回路を示したブロック図である。
この実施例のワンチップマイクロコンピュータ１００は、システム全体の制御を行う中央処理装置（ＣＰＵ）１０と、ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）やＳＲＡＭ（Ｓｔａｔｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）などからなる内蔵メモリ２０と、タイマ、シリアルインターフェースやＡ／Ｄ変換器などの周辺モジュール３０〜３２と、各モジュールの割込み信号を受けてＣＰＵ１０への割込み制御を行う割込みコントローラ（ＩＮＴＣ）４０と、ＣＰＵ１０からの指令を受けて内蔵メモリ２０や外部メモリ２００と周辺モジュールや外部Ｉ／Ｏ２１０との間で直接的にデータを転送させる制御を行うＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）コントローラ（ＤＭＡＣ）５０と、ＣＰＵ１０やＤＭＡコントローラ５０が内蔵メモリ２０とデータのやり取りをしたりバスコントローラ７０を介して外部メモリ・外部Ｉ／Ｏや周辺モジュール３０〜３２とデータのやり取りをしたりするための内部アドレスバス６０および内部データバス６１と、周辺モジュール３０〜３２やＩＮＴＣ４０，ＤＭＡコントローラ５０に内蔵される内部ＩＯレジスタとのデータのやり取りをするための周辺アドレスバス６２および周辺データバス６３と、内部バス６０，６１、周辺バス６２，６３と外部バス２２０，２２１とを接続するバスコントローラ７０等を備え、ＬＳＩ（大規模集積回路）として構成されている。
【００１０】
この実施例のワンチップマイクロコンピュータ１００は、例えば、インクジェットプリンタのシステム制御に用いることができる。その場合、外部Ｉ／Ｏ２１０には印刷ヘッドのノズル部分を駆動するノズル駆動回路が接続される。印刷ヘッドには多数のノズルが縦方向に変位して設けられており、１回の駆動により縦方向に並ぶ複数ドットのインク噴射が可能になっている。また、ノズル駆動回路には、複数ドットのインク噴射に必要な縦方向に並ぶ複数ドット分の印刷データを一時的に保持するデータバッファが設けられている。
【００１１】
インクジェットプリンタでは、１紙面或いは印刷ヘッドの１回又は複数回の走査により印刷される複数ライン分の印刷データが外部メモリ２００或いは内蔵メモリ２０に展開されて記憶されており、この印刷データのうちノズル駆動回路の１回の駆動に使用される縦複数ドット分の印刷データが１回のインク噴射ごとに順次ノズル駆動回路に転送されて印刷が行なわれるようになっている。
ここで、印刷データとは、例えば、各ドットのインク吐出量を表わす階調データが各ドットごとにＸＹ座標に従って配列されたデータであり、メモリに展開された段階では印刷紙面の横方向に連続するドットのデータがアドレス順に連続になるように配列される。従って、メモリに展開された印刷データをノズル駆動回路へ転送する際には、印刷紙面の横方向に連続するドットデータの配列をノズルの数の分だけ縦方向に連続するデータ配列に変換する必要がある。
【００１２】
上記のＤＭＡコントローラ５０には、アドレス順にデータを転送する通常の転送方式のほかに、上記の印刷データのようにＸＹ座標と対応づけられているデータを横方向に連続するデータ配列から縦方向に連続するデータ配列へとＸＹ座標変換したようにデータ配列を変えながら転送するのに有用なデータ転送機能が備わっている。次に、このようにデータ配列を変えながら転送するデータ転送方式について概要を説明する。
【００１３】
図８には、ＸＹ座標変換したようにデータ配列を変えながら転送するデータ転送方式の説明図を示す。この図において「データ１」〜「データ１６」とは、１回のデータ転送でまとめて転送される単位データ（例えば１ドット分の情報）を表わしており、そのデータ量は、例えば１バイト、１ワード、ロングワード（４バイト）など任意に設定可能である。
【００１４】
図８の例において、転送元のデータＤ０は、（ａ）に示すように例えば４×４のＸＹ座標に対応づけられており、アドレス順に並べると（ｃ１）〜（ｃ３）のように「データ１、データ５、データ９…」と云う配列になっているものとする。すなわち、アドレス順にみると、各単位データはＸＹ座標で左端からＸ方向に順番に並び、右端へ来ると１段下の左端に折り返すといった順番で配列されている。
転送先では、図８（ｂ）のようにＸ座標とＹ座標が入れ替わったようなデータ配列とされる。
【００１５】
上記のＤＭＡコントローラ５０においては、上記のような転送元のデータＤ０をオフセットジャンプ転送と、リピート転送の割込み発生に基づくＣＰＵ１０のアドレス書き換えを利用した転送モードを適用することで、ＸＹ座標変換したようにデータ配列を変更してデータ転送を行うことが出来る。
オフセットジャンプ転送とは、転送先或いは転送元のアドレスを１回のデータ転送のデータ量（１バイト、１ワード或いはロングワード）に相当するアドレス変位よりも大きな変位量を用いて転送アドレスを生成しながらその転送アドレスに基づいてデータ転送を行うものである。この変位量はオフセット値として任意に設定可能なものである。オフセット値は、例えば、１回のデータ転送量に相当するアドレス変位量の倍数値として設定される。
また、リピート転送とは、予め設定されたリピート回数（アドレスがリピートするまでの転送回数）分のデータサイズ（リピートサイズ）のデータ転送が完了した際に、転送元・転送先アドレスを転送開始時のアドレスに戻すようにしたものである。さらに、その際に、ＣＰＵ１０に割込み信号を出力するように設定することが可能になっている。
【００１６】
図８の例においては、オフセット値は“４”、リピート回数は“４”と設定される。そして、オフセットジャンプ転送により、先ず、転送元のアドレスが開始アドレスから順にオフセット値“４”に対応する変位量ずつ加算されながら生成され、そのアドレスのデータが順に転送されていく。そして、このようなデータ転送がリピート回数“４”だけ繰り返される。すなわち、図８（ｃ１）に示すように、転送開始アドレスの「データ１」からオフセット値分変位した「データ２」、「データ３」、「データ４」が順に転送されて、１巡目のリピート転送が完了される。
これにより、データ転送先においては、図８（ｄ）に示すように、１巡目に転送された４回分のデータ「データ１」、「データ２」、「データ３」、「データ４」がアドレス順に配列される。
【００１７】
また、リピート転送により、１巡目のリピート転送の完了時にはＤＭＡコントローラ５０に格納される転送元アドレスとして先の転送開始アドレス（「データ１」のアドレス）が復帰される。また、ＣＰＵ１０に割込み信号が出力される。そして、２巡目のリピート転送の開始時に、この割込み信号に基づきＣＰＵ１０が転送開始アドレスにユーザ指定のプログラムによりアドレス変位が加算される。ここで、ＣＰＵ１０が加算する値を１単位データに相当するアドレス変位量とすることで、２巡目のリピート転送では、図８（ｃ２）と（ｄ）に示すように１巡目のリピート転送のアドレスから１単位分ずらされて「データ５」、「データ６」、「データ７」、「データ８」のデータが順に転送され、転送元においてこれらのデータがアドレス順に配列される。
【００１８】
その後、３巡目、４巡目と同様のデータ転送処理がなされることで、転送先のデータ配列は図８（ｄ）のように転送元のデータ配列と異なるものになる。そして、このデータ配列を４×４のＸＹ座標に対応づけてみると、図８（ｂ）に示すように転送元のデータ配列をＸＹ座標変換したものになる。
座標変換を行う範囲は、オフセット値とリピート回数の設定値を変更することで適宜設定可能であり、例えば、オフセット値を“１０００”に、リピート回数を“３２”とすることで、ＸＹ座標で横１０００単位×縦３２単位に配列されたデータを、横３２単位×縦１０００単位の配列に変換することが出来る。
【００１９】
次に、上記のデータ転送を可能とするＤＭＡコントローラ５０の詳細な構成について説明する。
ＤＭＡコントローラ５０は、図１に示したように、転送データを一次的に格納するデータバッファ部５１と、データ転送モードの設定やデータ転送に必要な各種の設定値が格納される内部ＩＯレジスタ部５２と、ＤＭＡコントローラ５０の各部を制御する制御部５３と、読出しアドレス或いは書込みアドレスを連続して生成するアドレス演算部５４と、データ転送の総量をカウントする転送カウンタ演算部５５およびリピート転送の切り替えタイミングをカウントするリピートサイズ演算部５６を有するカウント演算部５７等から構成される。
【００２０】
図２には、上記アドレス演算部５４の詳細な回路図を示す。
同図において、ＳＡＲは転送元のアドレス値が格納されるソースアドレスレジスタ、ＤＡＲは転送先のアドレス値が格納されるデスティネーションアドレスレジスタ、ＯＦＲは第１オフセット値が設定される第１オフセットレジスタ、ＴＭＰはリピート転送の完了時に復帰する転送開始アドレスを保持するテンポラリＦＦ（フリップ・フロップ）、ＡＴＬはアドレスバス６０に出力するアドレスを保持するアドレステンポラリＦＦ、ＢＦは内部アドレスバス６０との接続を行うトライステートバッファ、５４９はアドレスの演算を行う演算器、５４５はアドレス順にデータ転送を行う場合や同じアドレスのデータ転送を繰り返し行う場合のアドレス変位量　“０，１，２，４”を示す値（例えばデータ転送量に応じる）が設定された論理組合せ回路、５４７は連続アドレスでデータ転送を行う場合にアドレス変位の向きを正負に変える符号反転器、５４１〜５４４，５４６，５４８はセレクタである。
【００２１】
これらのうち、ソースアドレスレジスタＳＡＲ、デスティネーションアドレスレジスタＤＡＲ、第１オフセットレジスタＯＦＲは、内部ＩＯレジスタ部５２のレジスタでありユーザー指定のプログラムによりその値或いは初期値が設定される。
また、セレクタ５４１，５４４は、連続的に生成されるアドレスが転送元のものか或いは転送先のものかを選択するもの、セレクタ５４６，５４８は１回のデータ転送ごとのアドレス変位量を選択するもので、それぞれ内部ＩＯレジスタ部５２の設定値により信号パスの選択がなされるように構成されている。
【００２２】
このようなアドレス演算部５４によれば、ソースアドレスレジスタＳＡＲまたはデスティネーションアドレスレジスタＤＡＲのうち選択された一方に初期設定されたアドレス値が、１回のデータ転送毎に演算器５４９により設定値ずつ加算され、セレクタ５４２又は５４３を介して元のレジスタＳＡＲ，ＤＡＲに上書きされる。そして、その値が１回のデータ転送毎にアドレステンポラリレジスタＡＴＬを経て内部アドレスバス６０に出力される。ここで、加算される設定値は、セレクタ５４６，５４８と符号反転器５４７の選択により、アドレス順のデータ転送を行う場合には単位データ量“１，２，４”又は“−１，−２，−４”とされ、オフセットジャンプ転送の場合には第１オフセットレジスタＯＦＲに設定された値とされる。図２では、オフセットジャンプ転送の場合、アドレスと第１オフセットレジスタＯＦＲとの加算が示されているが、第１オフセットレジスタＯＦＲに２の補数で表現される負値を設定することで、アドレスの減算も可能である。もちろん、第１オフセットレジスタＯＦＲの出力に符号反転器を接続することで、アドレスの減算を実現するような論理構成にしても良い。
【００２３】
また、リピート転送モードの場合においては、リピート回数のデータ転送完了時に、セレクタ５４２，５４３の選択が切り換わって、テンポラリレジスタＴＭＰに保持されていた転送開始アドレスが、ソースアドレスレジスタＳＡＲ又はデスティネーションアドレスレジスタＤＡＲに書き戻されるようになっている。
【００２４】
図３には、転送カウンタ演算部５５の詳細な回路図を示す。
同図において、ＴＣＲはデータ転送される総データサイズが初期値として設定される転送カウントレジスタであり、内部ＩＯレジスタ部５２に含まれ、指定プログラムにより設定される。５５２は３種類の値「−１，−２，−４」が設定される設定回路、５５３は設定されている値のうち一つを選択するセレクタで、１回のデータ転送量に応じた値を演算器に供給するため、内部ＩＯレジスタ部５２の設定値に応じて適宜の値が選択されるようになっている。
【００２５】
このような転送カウンタ演算部５５によれば、１回のデータ転送毎に転送カウントレジスタＴＣＲの値が１回のデータ転送量に対応した値だけ減算されていき、判定器５５４によりその値が“０”になったか判定することで、総データ転送量に達したことを検出するようになっている。総データ転送量に達した場合には、判定器５５４から制御部５３に検出信号が出力される。
【００２６】
図４には、リピートサイズ演算部５６の詳細な回路図を示す。
同図において、ＢＫＳＺＨはリピート転送モードのときリピート回数が設定されるリピートサイズ保持レジスタ（ブロック転送モードのときはブロックサイズ保持レジスタ）、５６１はセレクタ、ＢＫＳＺはリピート転送モードのときリピート回数が初期値として設定され１回のデータ転送ごとに値が更新されるリピートサイズレジスタ（ブロック転送モードのときはブロックサイズレジスタ）である。これらのレジスタＢＫＳＺＨ，ＢＫＳＺは内部ＩＯレジスタ部５２に含まれ、プログラムにより値が設定される。５６２は「−１」を与える設定回路、５６３は演算器（加算器）、５６４は「０」か否か判定する判定回路である。
【００２７】
このようなリピートサイズ演算部５６によれば、図３の転送カウンタ演算部５５と同様に、１回のデータ転送ごとにリピートサイズレジスタＢＫＳＺの値が減算されていきその値が“０”になった場合に判定器５６４から制御部にリピート回数の転送完了を示す検出信号が出力される。また、リピート回数のデータ転送完了時にはセレクタ５６１の選択が切り替えられて、リピートサイズ保持レジスタＢＫＳＺＨの値がリピートサイズレジスタＢＫＳＺに保持された初期値に戻される。それにより、再び同様のリピート回数のデータ転送の検出が行われるようになっている。
【００２８】
図５には、制御部５３の詳細な回路図を示す。
同図において、ＲＰＴＩＥはリピート回数のデータ転送の完了時にＣＰＵ１０に割込み信号を出力するか否かを設定するリピート中断割込みイネーブルビットであり、内部ＩＯレジスタ部５２に含まれるものである。５３０はリピート中断割込みイネーブルビットＲＰＴＩＥとリピート回数のデータ転送の完了を示す信号との論理和をとるＡＮＤゲートである。
【００２９】
制御部５３は、リピート回数分のデータ転送完了の検出信号を受けた場合に、アドレス演算部５４のレジスタＳＡＲ，ＤＡＲとリピートサイズ演算部５６のレジスタＢＫＳＺの値を初期値に復帰させるために、各セレクタ５４２，５４３，５６１の選択を切り替える信号を生成するアドレス＆リピートサイズ復帰回路５３１と、イネーブルビットＲＰＴＩＥが“１（アサート）”の場合にリピート回数のデータ転送完了の検出信号を受けて割込み信号を発生させる割込み発生回路５３２と、総データ転送サイズの転送完了時や割込み発生時にデータ転送を禁止する信号を出力する転送終了回路５３３等から構成される。
【００３０】
また、制御部５３では図示しないが、割込み発生回路５３２には、リピート中断割込みイネーブルビットＲＰＴＩＥが１のときにリピート回数のデータ転送が完了したことで”１”に設定される転送中断割込みフラグビットを内蔵している。この転送中断割込みフラグビットは内部ＩＯレジスタ部５２のモードコントロールレジスタＭＤＲに含まれ、”０”を書き込まれるまで”１”を保持する。ＩＮＴＣ４０に対して出力される割込み信号は、この転送中断割込みフラグビットが”１”の状態の期間出力される。さらに転送中断割込みフラグビットを有効にするビットを内部ＩＯレジスタ部５２に持って、この有効ビットが”０”のときは割込み信号を出力せず、転送中断割込みフラグビットが”１”でかつ、有効ビットが”１”のときのみ割込み信号を出力するような論理構成にしても良い。転送中断割込みフラグビットは、同フラグビットへの”０”書き込みだけでなく、データ転送イネーブルビットＤＴＥへの”１”書き込みによっても”０”にクリアされるように論理を構成してもよい。
【００３１】
また、制御部５３には、図示しないが、データ転送の実行や停止の制御を行う転送制御回路が設けられており、この転送制御回路がバスコントローラ７０にバス権要求を出したり、データ転送が許可された場合に内部アドレスバス６１にアドレスを出力すると云った全体の制御が行われるようになっている。また、この転送制御回路は、外部モジュールからの転送リクエスト信号を入力して外部モジュールの転送要求を受け付けたり、データ転送が中断されているときにＤＭＡコントローラ５０の各演算器を停止させる制御を行うようになっている。
【００３２】
図６には、内部ＩＯレジスタ部５２の詳細な図を示す。
内部ＩＯレジスタ部５２には、上述した各レジスタＳＡＲ，ＤＡＲ，ＯＦＲ，ＴＣＲ，ＢＫＳＺＨ，ＢＫＳＺ，ＲＰＴＩＥが含まれるほか、制御レジスタとして転送モードの設定がなされるモードコントロールレジスタＭＤＲや、１回のデータ転送量の設定などが行われるアドレスコントロールレジスタＡＣＲなどが含まれる。図５のイネーブルビットＲＰＴＩＥはアドレスコントロールレジスタＡＣＲに含まれる。また、モードコントロールレジスタＭＤＲには、データ転送の許可・停止を示すデータ転送イネーブルビットＤＴＥが含まれる。
このようなレジスタは複数のチャンネル毎（例えばｎ＝０〜３）に設けられ、複数のデータ転送を時分割により１つの回路で並列実行することが可能になっている。
【００３３】
次に、上記構成のＤＭＡコントローラ５０により実行されるデータ転送処理の手順について図７のフローチャートを参照しながら説明する。
図７は、図８で示したデータ転送処理の手順を示すフローチャートである。なお、図７のフローチャートにおいて、２重枠の処理はユーザー指定のプログラムに従ってＣＰＵ１０が実行する処理を、１重枠の処理はＤＭＡコントローラ５０が実行する処理を示している（後述の図１０においても同様）。
【００３４】
このデータ転送処理は、先ず、ユーザー指定のプログラムによりＤＭＡコントローラ５０に設けられた内部ＩＯレジスタ部５２にデータ転送処理の初期設定が行われることで開始される（ステップＳ１〜Ｓ３）。これらの初期設定には、転送元或いは転送先の開始アドレスの設定や、総転送データサイズの設定、リピート転送モードを示す設定、リピート回数の設定、単位データ量の設定、アドレスのオフセット値の設定、リピート中断割込みイネーブルビットＲＰＴＩＥの設定などが含まれる。
【００３５】
初期設定が完了したら、次に、ユーザー指定のプログラムによりモードコントロールレジスタＭＤＲのデータ転送イネーブルビットＤＴＥが“１（アサート）”に設定されてＤＭＡコントローラ５０によるデータ転送が許可状態となる（ステップＳ４）。
データ転送が許可状態になると、ＤＭＡコントローラ５０の制御部５３により外部リクエスト信号の入力が待機され（ステップＳ５）、外部リクエスト信号が入力されたら転送要求の受け付けを行う（ステップＳ６）。ここで外部リクエスト信号とは、例えば、転送先のノズル駆動回路において次の印刷データの受け入れが可能となった場合に、それを通知するための信号等である。
【００３６】
転送要求を受け付けたら、制御部５３の転送制御回路によりバスコントローラ７０にバス権要求を出す。そしてバス権が得られたらアドレス演算部５４から出力されるアドレスによるデータ転送を行う（ステップＳ７）。ここでは、外部メモリ２００や内蔵メモリ２０から外部Ｉ／Ｏ２１０に接続されたノズル駆動回路へデータ転送を行う場合を対象としているので、アドレス演算部５４から出力されたアドレスに格納された単位データが一旦、データバッファ部５１に読み込まれ、続いて、この単位データが外部Ｉ／Ｏ２１０に転送されることになる。
【００３７】
１回のデータ転送がなされたら、ＤＭＡコントローラ５０の各演算器が動作されてそれぞれ１回の演算処理を実行する（ステップＳ８）。これにより、アドレス演算部５４のアドレスレジスタＳＡＲの値はオフセット値演算が行われた結果次の転送アドレスの値に更新され、また、転送カウンタ演算部５５やリピートサイズ演算部５６では１回のデータ転送分の減算が行われる。
１回の演算処理が行われたら、制御部５３において転送カウンタ演算部５５やリピートサイズ演算部５６において“０”判定の検出信号が出力されたか判別され、ともに検出信号がなければステップＳ５に戻って、ステップＳ５〜Ｓ１０の処理を繰り返す。
そして、このステップＳ５〜Ｓ１０の繰返し処理により、データ転送回数がリピート回数に達すると、リピートサイズ演算部５６から“０”判定の検出信号が出力されて、ステップＳ１１の処理に移行する。すなわち、先ず、復帰回路５３１（図５）によりアドレス演算部５４とリピートサイズ演算部５６のレジスタ値が初期値に戻される（ステップＳ１１）。
【００３８】
次に、外部Ｉ／Ｏ２１０から次のリピートサイズのデータ転送リクエストが出されるのを待機して（ステップＳ１２）、この外部リクエストがあったら制御部５１の割込み発生回路５３２（図５）により発生された割込み信号が割込みコントローラ４０に出力される（ステップＳ１３）。このとき、転送終了回路５３３（図５）からデータ転送禁止の信号が出力され、モードコントロールレジスタＭＤＲのデータ転送イネーブルビットＤＴＥが“０”にされる。
そして、この状態で、上記割込み信号に基づきＣＰＵ１０で例外処理が開始され、ユーザー指定のプログラムによりアドレス演算部５４のアドレスレジスタＳＡＲの値に１回の転送分のアドレス変位量が加算される（ステップＳ１４）。図７の場合には、単位データをロングワードとしているので、ここでの加算値は“４”となっている。
【００３９】
そして、この例外処理によりアドレスレジスタＳＡＲの値が更新されたら、ステップＳ４に戻って、再びデータ転送イネーブルビットＤＴＥが“１”に戻されてステップＳ５〜Ｓ１０の転送処理が繰り返される。更に、リピートサイズのデータ転送が完了するごとにステップＳ１１〜Ｓ１４の処理が行われて、データ転送を開始するアドレスが１単位データ分ずつずらされていく。
そして、これらの処理の繰り返しにより総データ転送サイズの転送が終了して、転送カウンタ演算部５５から“０”判定の検出信号が出力されたら、制御部５３の転送終了回路５３３によりデータ転送禁止の信号が出力され、それによりデータ転送イネーブルビットＤＴＥが“０”にされて、ＤＭＡコントローラ５０によるデータ転送処理が終了する。
【００４０】
なお、図７の処理手順においては、１回のデータ転送ごとに外部モジュールからデータ転送リクエストを受けて次のデータ転送を行うと云った動作内容になっているが、外部モジュールからデータ転送リクエストを１回受けたらリピート回数分のデータ転送をまとめて行うブロック転送モードを設けてもよい。このブロック転送モードにおいては、図７のステップＳ１０で“０”判定の検出信号が無い場合の戻り先が、点線で示すようにステップＳ７とされるように制御部５３の論理を構成すればよい。これらの転送モードの切換はＣＰＵの制御若しくは外部から任意に設定可能として良い。
【００４１】
また、外部リクエストを用いる代わりに、周辺モジュール３０〜３２からの割り込みをデータ転送リクエストとして用いてもよい。各周辺モジュールからの割り込みは、割り込みコントローラ（ＩＮＴＣ）４０に内蔵される起動要因判定部４２において、ユーザー指定のプログラムに従い選別され、ＤＭＡコントローラのデータ転送リクエストとして使用される。この場合、図７のステップＳ５とＳ１２において、起動要因判定部４２で選別された周辺モジュールからの割り込みを待つような論理を構成すれば良い。
また、外部リクエストや周辺モジュールからの割り込みなしにデータ転送を行うオートリクエスト転送モードを設けても良く、この場合、図７のステップＳ５とＳ１２の処理を削って、外部リクエストを待たずにデータ転送処理が開始されるように制御部５３の転送制御部を論理構成すれば良い。
【００４２】
［第２実施例］
図９には、第２実施例のＤＭＡコントローラに設けられるアドレス演算部５４Ａの回路図を示す。
第１実施例では、ＸＹ座標変換したようにデータ配列を変えてデータ転送を行う場合に、リピート回数のデータ転送ごとに割込みによるＣＰＵ１０の例外処理を行ってＣＰＵ１０により開始アドレスを書き換えていたのに対して、この第２実施例では、このリピート転送ごとの開始アドレスの書き換えもハードウェア処理により実現可能としたものである。
このような機能は、図９に示すように、リピート転送の転送開始時のアドレスが保持されるテンポラリレジスタＴＭＰと、その値をアドレスレジスタＳＡＲ，ＤＡＲに書き戻すためのセレクタ５４２，５４３との間に、開始アドレスに変位量を加えるための演算器６０５と、そのときの加算値を選択する構成を追加することで実現している。
【００４３】
ここで加算値を選択する構成は、例えば、データ転送量に応じた加算値（“１，２，４”）や開始アドレスを変位させない場合の加算値“０”を与える設定回路６０１と、それらの何れかを選択するセレクタ６０２と、それらの符号を決める符合反転器６０３と、さらに、ユーザー指定の加算値を設定可能とする第２オフセットレジスタＯＦＲ２と、その値を選択するセレクタ６０４とから構成される。
なお、上記加算値を選択する構成から、第２オフセットレジスタＯＦＲ２とセレクタ６０４を削ってデータ転送量に応じた加算のみ可能な構成としたり、或いは逆に、加算値設定回路６０１とセレクタ６０２と符号反転器６０３を省略して加算値を全てユーザー指定により行う構成とすることも出来る。
【００４４】
図１０には、第２実施例のＤＭＡコントローラにおいて図８と同様のデータ転送処理を行う場合のフローチャートを示す。なお、このフローチャートは指定のデータブロックサイズ（リピート回数分のデータ転送サイズと等価）のデータ転送を外部リクエストなしでまとめて行うブロック転送モードの場合を示したものである。
このデータ転送処理においてステップＳ１〜Ｓ１０’の各処理内容は図７のステップＳ１〜Ｓ１０のものとほぼ同様である。但し、図７のフローチャートに示される転送モードが１回のデータ転送ごとに外部リクエストを必要とするリピート転送モードであるのに対して、図１０のフローチャートに示す転送モードがブロック転送モードであるため、初期設定処理（ステップＳ２’）においてはブロック転送モードの設定がなされ、リピートサイズを減算する処理（ステップＳ８’）およびリピート回数分のデータ転送の完了を判定する処理（ステップＳ１０’）においてはリピート回数分のデータサイズのことを「リピートサイズ」ではなく、「ブロックサイズ」と呼んでいる。
【００４５】
この第２実施例のデータ転送処理においては、ステップＳ１０’においてリピート回数分のデータ転送が完了してステップＳ２０に移行すると、該ステップにおいて図９の演算器６０５が動作してテンポラリレジスタＴＭＰに格納された復帰アドレスに設定値が加算され、この演算結果の値がアドレスレジスタＳＡＲ，ＤＡＲに書き戻される。なお、このステップＳ２０において、演算器６０５は制御部５３の復帰回路５３１（図５）からの動作信号が入力されることで演算処理を実行し、また、加算値は、アドレスコントロールレジスタＡＣＲの設定値に基づき、組合せ回路６０１の値“０，１，２，４”或いは第２オフセットレジスタＯＦＲ２に設定された値の何れかが選択される。図１０の例では、１回のデータ転送量がロングワードの場合でそれに対応する値“４”とされている。
【００４６】
ステップＳ２０のアドレス再設定の処理が済んだら、続いて、次の外部リクエストを待機する処理（ステップＳ５）に戻り、ステップＳ５からの処理を再び繰り返す。ここで、ステップＳ４のＤＴＥビットを“１”にする処理に戻らないのは、アドレスを再設定するときに割込みを行っておらず、ＤＴＥビットは“１”のままになっているからである。
【００４７】
なお、この第２実施例において、第２オフセットレジスタＯＦＲ２に１回のデータ転送量に相当するアドレス変位よりも大きな変位量を設定するとともに、ステップＳ２０の加算処理において第２オフセットレジスタＯＦＲ２の値が加算されるようにすることで、例えば、図８（ｂ）のデータから２巡目の「データ５、データ６、データ７、データ８」や４巡目の「データ１３、データ１４、データ１５、データ１６」を間引きしたデータを転送データとすることが出来るなど、様々なパターンのデータ転送が可能となる。
このような間引きしたデータ転送は、例えば、複数色のドットデータが順番に配列された印刷データから、所定色のドットデータを抜き出して転送するのに利用できるなど、様々な応用例が考えられる。
【００４８】
以上のように、上記実施例のＤＭＡコントローラ５０を備えたワンチップマイクロコンピュータ１００によれば、例えばＸＹ座標に対応づけられてＸ方向（横方向）に連続する順で配列されている印刷データから、縦複数ドット分の印刷データを順次抽出してノズル駆動回路へ転送する場合などに、ＤＭＡコントローラ５０を用いて処理することが出来る。従って、このようなデータ転送を行うのにＣＰＵ１０によるソフトウェア処理に頼らざるを得なかった従来構成に較べて、データ転送時のＣＰＵ１０にかかる負荷を大幅に低減することが出来る。
【００４９】
その他、ＸＹ座標に対応づけられているデータをＸＹ座標変換したようにデータ配列を変えてデータ転送を行ったり、また、カラーの印刷データから１色分のデータを間引いて転送を行ったり、或いは任意のデータから所定パターンでデータ間引きを行って転送を行ったりと、様々なパターンのデータ転送が可能である。また、オフセットジャンプ転送モードでデータ転送を行うことで、リピート転送モードと組み合せなくても、一定のアドレス間隔で連続的に並んでいるデータを収集することが可能である。例えばＲＧＢデータのような固定長データの集合体からデータの一部分（例えばＲのデータ）のみを取り出して収集することも可能である。また、これらのデータ転送の際に、連続的に生成するアドレスのオフセット量やリピート転送のリピート回数を適宜変更することで、座標変換を行うデータの範囲を適宜変更したり、また、データ間引きを行うデータ位置や間引きのパターンを適宜変更できるなど、データ転送パターンの細かな変更も可能である。
【００５０】
さらに、上記実施例に基づくＤＭＡコントローラ５０は従来のデータ転送モードとともに上記オフセットジャンプ転送モードに基づくリピート転送モード、ブロック転送モードを任意に切換設定可能として転送制御を行っても良い。
【００５１】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記実施例では、転送元のアドレスを連続的に生成してメモリから連続的にデータを読出す場合について説明したが、転送先のアドレスを連続的に生成してデータを連続的にメモリに書込む場合についても同様のデータ転送を行うことが出来る。
【００５２】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるワンチップマイクロコンピュータをインクジェットプリンタを制御するコントローラとして用いた場合について説明したがこの発明はそれに限定されるものでなく、種々の電子機器を制御するコントローラ或いはＤＭＡコントローラのみを搭載した半導体集積回路などに広く利用することができる。
【００５３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明に従うと、データ配列を変化させる様々なパターンのデータ転送がＤＭＡコントローラにより実現可能となり、今までＣＰＵに頼らざるを得なかったようなデータ転送をＤＭＡコントローラにより処理させることが出来るという効果がある。
例えば、ＸＹ座標に対応づけられているデータをＸＹ座標変換したようにデータ配列を変えてデータ転送したり、所定のパターンでデータ間引きを行いながらデータ転送する場合にもＤＭＡコントローラにより処理することが出来るという効果がある。
【図面の簡単な説明】
【図１】本発明の実施例のワンチップマイクロコンピュータの全体構成を示すブロック図である。
【図２】図１のＤＭＡコントローラに設けられたアドレス演算部の詳細を示す回路図である。
【図３】図１のＤＭＡコントローラに設けられた転送カウンタ演算部の詳細を示す回路図である。
【図４】図１のＤＭＡコントローラに設けられたリピートサイズ演算部の詳細を示す回路図である。
【図５】図１のＤＭＡコントローラの制御部の詳細を示す回路図である
【図６】図１のＤＭＡコントローラに設けられた内部ＩＯレジスタ部の詳細を示す図である。
【図７】ＤＭＡコントローラを用いたデータ転送の処理手順を示すフローチャートである。
【図８】
実施例のＤＭＡコントローラによりＸＹ座標変換を行ったようなデータ転送の一例を示す説明図である。
【図９】第２実施例のＤＭＡコントローラのアドレス演算部の詳細を示す論理回路図である。
【図１０】第２実施例のＤＭＡコントローラを用いたデータ転送の処理手順を示すフローチャートである。
【符号の説明】
１０　　ＣＰＵ
２０　　内蔵メモリ
３０〜３２　周辺モジュール
４０　　割込みコントローラ
５０　　ＤＭＡコントローラ
５１　　データバッファ部
５２　　内蔵ＩＯレジスタ部
５３　　制御部
５４　　アドレス演算部
５５　　転送カウンタ演算部
５６　　リピートサイズ演算部
５７　　カウント演算部
６０　　内部アドレスバス
６１　　内部データバス
７０　　バスコントローラ
１００　ワンチップマイクロコンピュータ
２００　外部メモリ
２１０　外部Ｉ／Ｏ
２２０　外部アドレスバス
２２１　外部データバス
６０１　組合せ回路
６０５　演算器
ＡＣＲ　アドレスコントロールレジスタ
ＤＡＲ　デスティネーションアドレスレジスタ
ＭＤＲ　モードコントロールレジスタ
ＯＦＲ　第１オフセットレジスタ
ＯＦＲ２　第２オフセットレジスタ
ＳＡＲ　ソースアドレスレジスタ
【図１】
2004038231.tif 000003
【図２】
2004038231.tif 000004
【図３】
2004038231.tif 000005
【図４】
2004038231.tif 000006
【図５】
2004038231.tif 000007
【図６】
2004038231.tif 000008
【図７】
2004038231.tif 000009
【図８】
2004038231.tif 000010
【図９】
2004038231.tif 000011
【図１０】
2004038231.tif 000012