(57)【特許請求の範囲】
【請求項１】
ダイレクトメモリアクセス転送のスタートアドレスが設定されるスタートアドレスレジスタと、
２次元配列されたデータの１ブロック内の列数が設定されるブロック列数レジスタと、
上記１ブロック内の行数が設定されるブロック行数レジスタと、
メモリ空間の１ライン内のブロック数が設定されるブロック数レジスタと、
メモリ空間の１ライン内のワード数が設定されるワード数レジスタと、
上記データの回転される向きが設定される回転モードレジスタと、
上記スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、上記１ブロックの１行分のデータ転送が終了した時、上記１ブロック分のデータ転送が終了した時、または上記１ライン分のブロック転送が終了した時に、上記回転モードレジスタに設定された回転される向きに応じて、上記ブロック列数レジスタに設定された列数、上記ブロック行数レジスタに設定された行数、上記ブロック数レジスタに設定されたブロック数、および前記ワード数レジスタに設定されたワード数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段とを備えたダイレクトメモリアクセス制御装置。
【請求項２】
ダイレクトメモリアクセス転送のスタートアドレスが設定されるスタートアドレスレジスタと、
２次元配列されたデータの１ブロック内の列数が設定されるブロック列数レジスタと、
上記１ブロック内の行数が設定されるブロック行数レジスタと、
メモリ空間の１ライン内のブロック数が設定されるブロック数レジスタと、
メモリ空間の１ライン内のワード数が設定されるワード数レジスタと、
転送する上記ブロックの転送順序が設定される転送モードレジスタと、
上記スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、上記１ブロックの１行分のデータ転送が終了した時、上記１ブロック分のデータ転送が終了した時、または上記１ライン分のブロック転送が終了した時に、上記転送モードレジスタに設定された転送順序に応じて、上記ブロック列数レジスタに設定された列数、上記ブロック行数レジスタに設定された行数、上記ブロック数レジスタに設定されたブロック数、および前記ワード数レジスタに設定されたワード数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段とを備えたダイレクトメモリアクセス制御装置。
【請求項３】
ダイレクトメモリアクセス転送のスタートアドレスが設定されるスタートアドレスレジスタと、
２次元配列されたデータの１ブロック内の列数が設定されるブロック列数レジスタと、
上記１ブロック内の行数が設定されるブロック行数レジスタと、
メモリ空間の１ライン内のブロック数が設定されるブロック数レジスタと、
メモリ空間の１ライン内のワード数が設定されるワード数レジスタと、
上記データの回転される向きが設定される回転モードレジスタと、
転送する上記ブロックの転送順序が設定される転送モードレジスタと、
上記スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、上記１ブロックの１行分のデータ転送が終了した時、上記１ブロック分のデータ転送が終了した時、または上記１ライン分のブロック転送が終了した時に、上記回転モードレジスタおよび上記転送モードレジスタに設定された回転される向きおよび転送順序に応じて、上記ブロック列数レジスタに設定された列数、上記ブロック行数レジスタに設定された行数、上記ブロック数レジスタに設定されたブロック数、および前記ワード数レジスタに設定されたワード数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段とを備えたダイレクトメモリアクセス制御装置。
【請求項４】
間引き列数が設定される間引き列数レジスタと、
間引き行数が設定される間引き行数レジスタとを備え、
オフセットアドレス生成手段は、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、ブロック数レジスタに設定されたブロック数、前記ワード数レジスタに設定されたワード数、間引き列数レジスタに設定された間引き列数、および間引き行数レジスタに設定された間引き行数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成することを特徴とする請求項２または請求項３記載のダイレクトメモリアクセス制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、２次元に配列されたデータを転送するダイレクトメモリアクセス制御装置に関するものである。
【０００２】
【従来の技術】
従来では、連続したアドレスに対するデータをダイレクトメモリアクセスコントローラ（ＤＭＡＣ）で転送されており、２次元に配置（ブロックと呼ぶ）されたデータに対してＤＭＡ転送させる場合は、連続したアドレスとなっているブロック内の１行分のＤＭＡ転送が終了した時点で、再度、次の先頭アドレスをスタートアドレスとして設定し直してＤＭＡ転送させていた。
【０００３】
【発明が解決しようとする課題】
従来のダイレクトメモリアクセス制御装置は以上のように構成されているので、データ転送が非連続アドレスとなるアドレスに到達する度に、転送アドレスを再設定して、ＤＭＡ転送の起動をさせなくてはならず、その分の時間を要するという課題があった。
【０００４】
この発明は上記のような課題を解決するためになされたもので、１回のダイレクトメモリアクセス転送要求に対して、２次元配列されたデータを順次転送するダイレクトメモリアクセス制御装置を得ることを目的とする。
【０００５】
【課題を解決するための手段】
この発明に係るダイレクトメモリアクセス制御装置は、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、回転モードレジスタに設定された回転される向きに応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えたものである。
【０００６】
この発明に係るダイレクトメモリアクセス制御装置は、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、転送モードレジスタに設定された転送順序に応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えたものである。
【０００７】
この発明に係るダイレクトメモリアクセス制御装置は、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、回転モードレジスタおよび転送モードレジスタに設定された回転される向きおよび転送順序に応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えたものである。
【０００８】
この発明に係るダイレクトメモリアクセス制御装置は、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、ブロック数レジスタに設定されたブロック数、間引き列数レジスタに設定された間引き列数、および間引き行数レジスタに設定された間引き行数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えたものである。
【０００９】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるダイレクトメモリアクセス制御装置における転送アドレス生成部を示す構成図であり、図において、１はＤＭＡ（ダイレクトメモリアクセス）制御装置、２は転送元のアドレスを生成し、出力するソースアドレス生成回路、３はソースアドレス生成回路２からの出力信号であり、現在ＤＭＡ転送しているソース側のアドレスであるカレントソースアドレス、４は転送先のアドレスを生成し、出力するディスティネーションアドレス生成回路、５はディスティネーションアドレス生成回路４の出力信号であり、現在ＤＭＡ転送しているディスティネーション側のアドレスであるカレントディスティネーションアドレスである。６はＤＭＡ制御装置１に設けられたコントロールレジスタ（図示せず）にＤＭＡ転送を行うために必要な情報を書き込み、読み出しを行うデータバスである。
【００１０】
図２はこの発明の実施の形態１によるソースアドレス生成回路の詳細を示す構成図であり、図において、１０はＤＭＡ転送のスタートアドレスが設定されるスタートアドレスレジスタ、１１はアドレスセレクタ、１２は現在のＤＭＡ転送アドレスを保持するカレントソースアドレスレジスタである。
２１は２次元配列されたデータの１ブロック内の列数ｍが設定されるブロック列ワード数（ＤＣＷＮ）レジスタ（ブロック列数レジスタ）、２２はＤＭＡ転送の回数をカウントし、ブロック列ワード数レジスタ２１に設定された列数ｍと比較し、同じ値になった時に行終了信号２３を出力するブロック列ワード数カウンタ、２４は２次元配列されたデータの１ブロック内の行数ｎが設定されるブロック行数（ＤＲＮ）レジスタ、２５は行終了信号２３をカウントし、ブロック行数レジスタ２４に設定された行数ｎと比較し、同じ値になった時にブロック終了信号２６を出力するブロック行数カウンタ、２７はメモリ空間の１ライン内のブロック数Ｌが設定されるブロック数（ＤＢＮ）レジスタ、２８はブロック終了信号２６をカウントし、ブロック数レジスタ２７に設定されたブロック数Ｌと比較し、同じ値になった時にライン終了信号２９を出力するブロック数カウンタである。
３０はカレントソースアドレス３に加算して、次のＤＭＡ転送アドレスを計算するためのオフセットアドレスを生成するオフセットアドレス制御回路、３１は１ブロック内の１行分のＤＭＡ転送が終了した時に、次の行に移るためにカレントソースアドレス３に加算するオフセットワード数が設定されるネクスト行オフセットレジスタ、３２は１ブロック内のＤＭＡ転送が終了した時に、次のブロックに移るためにカレントソースアドレス３に加算するオフセットワード数が設定されるネクストブロックオフセットレジスタ、３３はメモリ空間の１ライン分のＤＭＡ転送が終了した時に、次のラインに移るためにカレントソースアドレス３に加算するオフセットワード数が設定されるネクストラインオフセットレジスタ、３４は行終了信号２３、ブロック終了信号２６、ライン終了信号２９に合わせてカレントソースアドレス３に加算するオフセット値を選択するオフセットセレクタである。
４１はオフセットセレクタ３４から出力されるオフセット値と、アドレスインクリメンタ４２から出力される＋１更新されたカレントソースアドレスとを加算し、次のカレントソースアドレスを出力するオフセットアドレス加算器、４２はカレントソースアドレスを＋１更新するアドレスインクリメンタ、４３は行終了信号２３、ブロック終了信号２６、ライン終了信号２９の論理和を取る論理和回路、４４はＤＭＡ開始信号である。
【００１１】
図３は２次元配列されたデータのメモリ空間を示す模式図であり、図において、１００はメモリ空間、１０１はｍ列×ｎ行からなるブロック、１１０はＤＭＡ転送の開始時のアドレスであるスタートアドレスであり、この値がスタートアドレスレジスタ１０に設定される。１２１はブロック列ワード数ｍであり、この値がブロック列ワード数レジスタ２１に設定される。１２４はブロック行数ｎであり、この値がブロック行数レジスタ２４に設定される。１２７はメモリ空間の１ライン分のブロック数Ｌであり、この値がブロック数レジスタ２７に設定される。
１３１はネクスト行オフセットワード数であり、この値がネクスト行オフセットレジスタ３１に設定される。１３２はネクストブロックオフセットワード数であり、この値がネクストブロックオフセットレジスタ３２に設定される。１３３はネクストラインオフセットワード数であり、この値がネクストラインオフセットレジスタ３３に設定される。
図４はブロック内のデータ転送順を示す模式図である。
【００１２】
次に動作について説明する。
ここでは、特にＤＭＡ転送する際のソース側のアドレス生成を中心に説明する。
図３に示したような、２次元に配列されたデータをＤＭＡ転送するに当たり、まず、ソースアドレス生成回路２の各レジスタにデータバス６を介して値を設定する。
すなわち、スタートアドレスレジスタ１０に、転送元のスタートアドレス１１０を設定し、ブロック列ワード数レジスタ２１にブロック列ワード数（ｍ）１２１を設定し、ブロック行数レジスタ２４にブロック行数（ｎ）１２４を設定し、ブロック数レジスタ２７にメモリ空間の１ライン分のブロック数（Ｌ）１２７を設定する。また、ネクスト行オフセットレジスタ３１に、ネクスト行オフセットワード数１３１を設定し、ネクストブロックオフセットレジスタ３２に、ネクストブロックオフセットワード数１３２を設定し、ネクストラインオフセットレジスタ３３に、ネクストラインオフセットワード数１３３を設定する。同様に、ディスティネーションアドレス生成回路４の各レジスタ（図示せず）に、データバス６を介して値を設定する。また、ＤＭＡ転送するデータ数を転送バイトカウントレジスタ（図示せず）に設定する。
【００１３】
次に、ＤＭＡ制御装置１の外部からのＤＭＡ転送要求により、ＤＭＡ転送が開始される。
ソースアドレス生成回路２は、内部で生成されたＤＭＡ開始信号４４によってスタートアドレスレジスタ１０の値がアドレスセレクタ１１を介してカレントソースアドレスレジスタ１２に送られ、スタートアドレス１１０がカレントソースアドレス３として出力され、１データ（１ワード）のリードが行われる。
続いて、同様にディスティネーションアドレス生成回路４から出力されたカレントディスティネーションアドレス５にライトされる。
この時、次のアドレスの準備のためカレントソースアドレス３はアドレスインクリメンタ４２で更新される。また、ブロック列ワード数カウンタ２２では、１データのＤＭＡ転送毎に転送回数をカウントしていく。１データのＤＭＡ転送が終わると、アドレスインクリメンタ４２で更新されたアドレスがアドレスセレクタ１１を介してカレントソースアドレスレジスタ１２に送られ、次の１データのＤＭＡ転送のカレントソースアドレス３として出力される。
このようにしてＤＭＡ転送を行い、ブロック列ワード数レジスタ２１に設定された値と、ブロック列ワード数カウンタ２２でカウントした値が同じになった時、すなわち、１ブロックの１行分のデータ転送が終了した時、ブロック列ワード数カウンタ２２は、行終了信号２３を出力する。
【００１４】
この行終了信号２３を受けて、オフセットセレクタ３４は、ネクスト行オフセットレジスタ３１の値を選択し、オフセットアドレス加算器４１に伝える。オフセットアドレス加算器４１では、伝えられたネクスト行オフセット値とアドレスインクリメンタ４２で＋１更新されたカレントソースアドレス３とを加算し、次のＤＭＡ転送のカレントソースアドレスを得る。このアドレスは、アドレスセレクタ１１で選択され、カレントソースアドレスレジスタ１２へ伝えられ、次のＤＭＡ転送のカレントソースアドレス３として出力される。このカレントソースアドレス３は、そのブロックの２行目の先頭アドレスとなっている。そして、先に述べた要領でＤＭＡ転送が行われる。
この動作は、カレントソースアドレス３がそのブロックの最後のアドレスとなるまで続けられる。この間、行の終わりが来る度にブロック行数カウンタ２５でその回数が数えられる。
ブロック行数カウンタ２５のカウンタ値が、ブロック行数レジスタ２４の値と同じになった時、すなわち、１ブロック分のデータ転送が終了した時、ブロック行数カウンタ２５は、ブロック終了信号２６を出力する。
【００１５】
このブロック終了信号２６を受けて、オフセットセレクタ３４は、ネクストブロックオフセットレジスタ３２の値を選択し、オフセットアドレス加算器４１に伝える。オフセットアドレス加算器４１では、伝えられたネクストブロックオフセット値とアドレスインクリメンタ４２で＋１更新されたカレントソースアドレス３とを加算し、次のＤＭＡ転送のカレントソースアドレスを得る。このアドレスは、アドレスセレクタ１１で選択され、カレントソースアドレスレジスタ１２へ伝えられ、次のＤＭＡ転送のカレントソースアドレス３として出力される。このカレントソースアドレス３は、次のブロックの先頭アドレスとなっている。そして、同様にＤＭＡ転送が行われる。
この動作は、カレントソースアドレス３がそのラインの最後のアドレスとなるまで続けられる。この間、ブロックの終わりが来る度にブロック数カウンタ２８でその回数が数えられる。
ブロック数カウンタ２８のカウンタ値が、ブロック数レジスタ２７の値と同じになった時、すなわち、１ライン分のデータ転送が終了した時、ブロック数カウンタ２８は、ライン終了信号２９を出力する。
【００１６】
このライン終了信号２９を受けて、オフセットセレクタ３４は、ネクストラインオフセットレジスタ３３の値を選択し、オフセットアドレス加算器４１に伝える。オフセットアドレス加算器４１では、伝えられたネクストラインオフセット値とアドレスインクリメンタ４２で＋１更新されたカレントソースアドレス３とを加算し、次のＤＭＡ転送のカレントソースアドレスを得る。このアドレスは、アドレスセレクタ１１で選択され、カレントソースアドレスレジスタ１２へ伝えられ、次のＤＭＡ転送のカレントソースアドレス３として出力される。このカレントソースアドレス３は、次のラインの先頭アドレスとなっている。そして、同様にＤＭＡ転送が行われる。
以上の動作を、転送バイトカウントレジスタに設定されている値になるまでＤＭＡ転送を繰り返し、ＤＭＡ転送が終了する。
【００１７】
以上のように、この実施の形態１では、ブロック列ワード数レジスタ２１、ブロック行数レジスタ２４、ブロック数レジスタ２７に値を設定し、また、ネクスト行オフセットレジスタ３１、ネクストブロックオフセットレジスタ３２、ネクストラインオフセットレジスタ３３に値を設定し、オフセットアドレスを選択してカレントソースアドレス３を得るようにしたので、１回のＤＭＡ転送要求に対して、２次元的に配列されたデータを転送バイトカウントレジスタに設定されている転送データ数分、順次転送させることができる。
なお、これまで述べてきた動作は、ＤＭＡ転送する際のデータ転送元（ソース側）のアドレス生成を中心に説明してきたが、同じ機構を転送先のアドレスを生成するディスティネーションアドレス生成回路４に適用することで、転送データを２次元に配置させることができる。
また、ソースアドレス生成回路２、ディスティネーションアドレス生成回路４共に適用することで、２次元に配置された転送データを、そのまま別のメモリ空間へ２次元に配置させることができる。
【００１８】
実施の形態２．
図５はこの発明の実施の形態２によるソースアドレス生成回路の詳細を示す構成図であり、図において、５０はカレントソースアドレス３に加算して、次のＤＭＡ転送アドレスを計算するためのオフセットアドレスを生成するオフセットアドレス制御回路、５１は画像データを転送させる向き（ノーマル回転モード、左回転モード、右回転モード）が設定される画像回転モードレジスタ（回転モードレジスタ）、５２はメモリ上に配置されたブロックの転送順序（ノーマル転送モード、上下転送モード、間引き転送モード）が設定される画像転送モードレジスタ（転送モードレジスタ）、５４は画像回転モードレジスタ５１、画像転送モードレジスタ５２の設定、および行終了信号２３、ブロック終了信号２６、ライン終了信号２９に合わせてカレントソースアドレス３に加算するオフセット値を生成するオフセットアドレス生成回路（オフセットアドレス生成手段）である。
また、５５はメモリ空間の１ライン内のワード数ｋが設定されるラインワード数レジスタ、５６は間引き転送モード時の間引き列数が設定される間引き列数レジスタ、５７は間引き転送モード時の間引き行数が設定される間引き行数レジスタである。
【００１９】
図６から図８はブロックの転送順を示す模式図である。
図６（ａ）は画像回転モードがノーマル回転モード、画像転送モードがノーマル転送モード時のブロックの転送順を示す模式図である。
図６（ｂ）は画像回転モードがノーマル回転モード、画像転送モードが上下転送モード時のブロックの転送順を示す模式図である。
図６（ｃ）は画像回転モードがノーマル回転モード、画像転送モードが間引き転送モード時のブロックの転送順を示す模式図である。
図７（ａ）は画像回転モードが左回転モード、画像転送モードがノーマル転送モード時のブロックの転送順を示す模式図である。
図７（ｂ）は画像回転モードが左回転モード、画像転送モードが上下転送モード時のブロックの転送順を示す模式図である。
図７（ｃ）は画像回転モードが左回転モード、画像転送モードが間引き転送モード時のブロックの転送順を示す模式図である。
図８（ａ）は画像回転モードが右回転モード、画像転送モードがノーマル転送モード時のブロックの転送順を示す模式図である。
図８（ｂ）は画像回転モードが右回転モード、画像転送モードが上下転送モード時のブロックの転送順を示す模式図である。
図８（ｃ）は画像回転モードが右回転モード、画像転送モードが間引き転送モード時のブロックの転送順を示す模式図である。
【００２０】
また、図３において、１５５はメモリ空間の１ライン分のワード数ｋであり、この値がラインワード数レジスタ５５に設定される。
なお、図３において、１５５と１２７との長さが同一の場合には、メモリ空間の１ライン分のワード数（ｋ）１５５は、ブロック列ワード数（ｍ）１２１とメモリ空間の１ライン分のブロック数（Ｌ）１２７との積によって算出することができ、この場合は、ラインワード数レジスタ５５は不要である。
【００２１】
次に動作について説明する。
データの転送動作については、実施の形態１と同様であり、ここではオフセットアドレス制御回路５０のオフセットアドレスの生成について説明する。
ＤＭＡ転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロックのデータ転送が終了した時、１ライン分のデータ転送が終了した時、オフセットアドレス生成回路５４により画像回転モードレジスタ５１、画像転送モードレジスタ５２に設定された回転される向き、転送順序に応じて、それぞれ、ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１、ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２、ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３を生成する。
【００２２】
図６（ａ）に示した画像回転モードがノーマル回転モード、画像転送モードがノーマル転送モード時の各オフセット値は、次の式によって得られる。
なお、以下に示す式は、ブロック列ワード数レジスタ２１に設定されたブロック列ワード数をｍ、ブロック行数レジスタ２４に設定されたブロック行ワード数をｎ、ラインワード数レジスタ５５に設定された１ライン分のワード数をｋ、ブロック数レジスタ２７に設定された１ライン分のブロック数をＬ、間引き列数レジスタ５６に設定された間引き列数をｄｍ、間引き行数レジスタ５７に設定された間引き行数をｄｎで示している。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（ｎ−１）×ｋ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝ｋ−ｍ×Ｌ
【００２３】
図６（ｂ）に示した画像回転モードがノーマル回転モード、画像転送モードが上下転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
奇数ブロックから偶数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝ｋ−ｍ
偶数ブロックから奇数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（ｎ−１）×ｋ
奇数ブロックから偶数ブロックへ、偶数ブロックから奇数ブロックへの切り替えは、ブロック終了信号２６を1回目は奇数ブロックから偶数ブロック、2回目は偶数ブロックから奇数ブロック、３回目は奇数ブロックから偶数ブロック、・・・と順に判断することで知ることができる。
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝ｋ−ｍ×Ｌ
【００２４】
図６（ｃ）に示した画像回転モードがノーマル回転モード、画像転送モードが間引き転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（ｎ−１）×ｋ＋ｄｍ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝（ｋ−ｍ×Ｌ）＋ｄｍ×ｋ
【００２５】
図７（ａ）に示した画像回転モードが左回転モード、画像転送モードがノーマル転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝ｋ−ｍ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝−（Ｌ×ｎ−１）×ｋ−２ｍ
【００２６】
図７（ｂ）に示した画像回転モードが左回転モード、画像転送モードが上下転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
奇数ブロックから偶数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（ｎ−１）×ｋ−２ｍ
偶数ブロックから奇数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝ｋ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝−（Ｌ×ｎ−１）×ｋ−３ｍ
【００２７】
図７（ｃ）に示した画像回転モードが左回転モード、画像転送モードが間引き転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝（ｄｍ×ｋ）＋（ｋ−ｍ）
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝−（（（Ｌ×ｎ−１）×ｋ）＋（（Ｌ−１）×ｄｍ）×ｋ）−（２ｍ＋ｄｎ）
【００２８】
図８（ａ）に示した画像回転モードが右回転モード、画像転送モードがノーマル転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（（２ｎ−１）×ｋ）−ｍ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝（（Ｌ−２）×ｎ＋１）×ｋ
【００２９】
図８（ｂ）に示した画像回転モードが右回転モード、画像転送モードが上下転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
奇数ブロックから偶数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（ｎ−１）×ｋ
偶数ブロックから奇数ブロックへのネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝（２ｎ−１）×ｋ−２ｍ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝（（Ｌ−２）×ｎ×ｋ）＋ｋ
【００３０】
図８（ｃ）に示した画像回転モードが右回転モード、画像転送モードが間引き転送モード時の各オフセット値は、次の式によって得られる。
ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１は、
ＤＮＲＯＳＴ＝ｋ−ｍ
ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２は、
ＤＮＢＯＳＴ＝−（（２ｎ−１＋ｄｍ）×ｋ）−ｍ
ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３は、
ＤＮＬＯＳＴ＝（（Ｌ−２）×ｎ＋１）×ｋ＋ｄｎ
【００３１】
オフセットアドレス生成回路５４では、以上のようにして、画像回転モード、画像転送モードに合わせて、ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１、ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２、ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３が生成され、１ブロックの１行分のデータ転送が終了した時、ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１が出力され、１ブロックのデータ転送が終了した時、ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２が出力され、１ライン分のデータ転送が終了した時、ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３が出力される。
出力された各オフセット値は、オフセットアドレス加算器４１により、インクリメンタ４２で＋１更新されたカレントソースアドレス３と加算され、次のＤＭＡ転送のカレントソースアドレス３が得られる。
・１ブロックの１行分のデータ転送が終了した時のネクストソースアドレスは、次のようになる。
ネクストソースアドレス＝カレントソースアドレス＋ＤＮＲＯＳＴ＋１
・１ブロックのデータ転送が終了した時のネクストソースアドレスは、次のようになる。
ネクストソースアドレス＝カレントソースアドレス＋ＤＮＢＯＳＴ＋１
・１ライン分のブロックデータ転送が終了した時のネクストソースアドレスは、次のようになる。
ネクストソースアドレス＝カレントソースアドレス＋ＤＮＬＯＳＴ＋１
【００３２】
以上のように、この実施の形態２では、画像回転モード、画像転送モードの設定により、ネクスト行オフセットワード数（ＤＮＲＯＳＴ）１３１、ネクストブロックオフセットワード数（ＤＮＢＯＳＴ）１３２、ネクストラインオフセットワード数（ＤＮＬＯＳＴ）１３３をオフセットアドレス生成回路５４により計算させるようにしたので、１回のＤＭＡ転送要求に対して、２次元的に配列されたデータを順次転送させることができる。
なお、これまで述べてきた動作は、ＤＭＡ転送する際のデータ転送元（ソース側）のアドレス生成を中心に説明してきたが、同じ機構を転送先のアドレスを生成するディスティネーションアドレス生成回路４に適用することで、同様のことが実現させることができる。
【００３３】
【発明の効果】
以上のように、この発明によれば、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、回転モードレジスタに設定された回転される向きに応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えるように構成したので、非連続アドレスに到達した時でも、オフセットアドレス生成手段によってカレントアドレスのオフセット値が生成されるので、１回のダイレクトメモリアクセス転送要求に対して、２次元配列されたデータを順次転送することができると共に、回転モードレジスタに設定されたデータの回転に基づいて、ノーマル回転、左回転、右回転等のモードでデータを順次転送することができる効果がある。
【００３４】
この発明によれば、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、転送モードレジスタに設定された転送順序に応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えるように構成したので、非連続アドレスに到達した時でも、オフセットアドレス生成手段によってカレントアドレスのオフセット値が生成されるので、１回のダイレクトメモリアクセス転送要求に対して、２次元配列されたデータを順次転送することができると共に、転送モードレジスタに設定された転送順序に基づいて、ノーマル転送、上下転送等のモードでデータを順次転送することができる効果がある。
【００３５】
この発明によれば、スタートアドレスレジスタに設定されたスタートアドレスに基づいてダイレクトメモリアクセス転送が開始され、１ブロックの１行分のデータ転送が終了した時、１ブロック分のデータ転送が終了した時、または１ライン分のブロック転送が終了した時に、回転モードレジスタおよび転送モードレジスタに設定された回転される向きおよび転送順序に応じて、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、およびブロック数レジスタに設定されたブロック数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えるように構成したので、非連続アドレスに到達した時でも、オフセットアドレス生成手段によってカレントアドレスのオフセット値が生成されるので、１回のダイレクトメモリアクセス転送要求に対して、２次元配列されたデータを順次転送することができると共に、回転モードレジスタおよび転送モードレジスタに設定された転送順序に基づいて、ノーマル回転、左回転、右回転等と、ノーマル転送、上下転送等との組合せからなるモードでデータを順次転送することができる効果がある。
【００３６】
この発明によれば、ブロック列数レジスタに設定された列数、ブロック行数レジスタに設定された行数、ブロック数レジスタに設定されたブロック数、間引き列数レジスタに設定された間引き列数、および間引き行数レジスタに設定された間引き行数のうちのいずれかの複数に基づいたカレントアドレスのオフセット値を生成するオフセットアドレス生成手段を備えるように構成したので、転送モードレジスタに設定された転送順序に基づいて、ノーマル転送、上下転送、間引き転送等のモードでデータを順次転送することができる効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるダイレクトメモリアクセス制御装置における転送アドレス生成部を示す構成図である。
【図２】  この発明の実施の形態１によるソースアドレス生成回路の詳細を示す構成図である。
【図３】  ２次元配列されたデータのメモリ空間を示す模式図である。
【図４】  ブロック内のデータ転送順を示す模式図である。
【図５】  この発明の実施の形態２によるソースアドレス生成回路の詳細を示す構成図である。
【図６】  ノーマル回転モード時のブロックの転送順を示す模式図である。
【図７】  左回転モード時のブロックの転送順を示す模式図である。
【図８】  右回転モード時のブロックの転送順を示す模式図である。
【符号の説明】
１  ＤＭＡ制御装置、２  ソースアドレス生成回路、３  カレントソースアドレス、４  ディスティネーションアドレス生成回路、５  カレントディスティネーションアドレス、６  データバス、１０  スタートアドレスレジスタ、１１  アドレスセレクタ、１２  カレントソースアドレスレジスタ、２１  ブロック列ワード数レジスタ（ブロック列数レジスタ）、２２  ブロック列ワード数カウンタ、２３  行終了信号、２４  ブロック行数レジスタ、２５  ブロック行数カウンタ、２６  ブロック終了信号、２７  ブロック数レジスタ、２８  ブロック数カウンタ、２９  ライン終了信号、３０  オフセットアドレス制御回路、３１  ネクスト行オフセットレジスタ、３２  ネクストブロックオフセットレジスタ、３３  ネクストラインオフセットレジスタ、３４  オフセットセレクタ、４１  オフセットアドレス加算器、４２  アドレスインクリメンタ、４３  論理和回路、４４  ＤＭＡ開始信号、５０  オフセットアドレス制御回路、５１  画像回転モードレジスタ（回転モードレジスタ）、５２  画像転送モードレジスタ（転送モードレジスタ）、５４  オフセットアドレス生成回路（オフセットアドレス生成手段）、５５  ラインワード数レジスタ、５６  間引き列数レジスタ、５７  間引き行数レジスタ、１００  メモリ空間、１０１  ブロック、１１０  スタートアドレス、１２１  ブロック列ワード数、１２４  ブロック行数、１２７  ブロック数、１３１  ネクスト行オフセットワード数、１３２  ネクストブロックオフセットワード数、１３３  ネクストラインオフセットワード数、１５５  ラインワード数。
【図１】
0004771619.tif 000002
【図２】
0004771619.tif 000003
【図３】
0004771619.tif 000004
【図４】
0004771619.tif 000005
【図５】
0004771619.tif 000006
【図６】
0004771619.tif 000007
【図７】
0004771619.tif 000008
【図８】
0004771619.tif 000009