(57)【要約】【課題】  複数のレジスタセットを備えることなく、また、メモリ上に複数のＤＭＡ転送領域が登録された情報テーブルを有することなく、ＤＭＡ転送を停止させないでメモリへのＤＭＡ転送を行う。【解決手段】  ダイレクト・メモリ・アクセス・コントローラ１０は、任意の転送データ数が設定されるレジスタ１８と、前記メモリへ転送された転送データ数を計数する転送データ数カウンタ１５ｃと、前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された前記転送データ数とが一致したときに、一致信号を出力する比較機１９と、メモリへのデータ転送の終了時および一致信号が入力されたときに割込信号を出力する割込発生回路１７と、を備える。ＣＰＵ２０は、転送終了信号による割込信号が入力される前に、一致信号による割込信号によってメモリ５０のデータを読み出す。【選択図】        図２
2005135098.tif 000002
【特許請求の範囲】
【請求項１】
メモリ（５０）へのデータ転送の制御を行い、前記メモリへのデータ転送の終了時に割込信号を出力するダイレクト・メモリ・アクセス・コントローラ（１０）と、前記ダイレクト・メモリ・アクセス・コントローラの前記割込信号に応じて前記メモリへ転送された転送データを読み出す制御回路（２０）と、を備えたダイレクト・メモリ・アクセス・システムであって、
前記ダイレクト・メモリ・アクセス・コントローラは、
任意の転送データ数が設定されるレジスタ（１８）と、
前記メモリへ転送された転送データ数を計数する転送データ数カウンタ（１５ｃ）と、
前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された前記転送データ数とが一致したときに、前記割込信号を出力する割込信号発生手段（１７、１９）と、を備えたことを特徴とするダイレクト・メモリ・アクセス・システム。
【請求項２】
前記レジスタ（１８）に設定される前記転送データ数は、前記制御回路によって設定されることを特徴とする請求項１に記載のダイレクト・メモリ・アクセス・システム。
【請求項３】
前記割込信号発生手段（１７、１９）は、前記メモリへのデータ転送の終了時に出力する前記割込信号と、前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された転送データ数とが一致したときに出力する前記割込信号を出力可能と構成されていることを特徴とする請求項１または２に記載のダイレクト・メモリ・アクセス・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクト・メモリ・アクセス・システムに関する。
【背景技術】
【０００２】
従来、マイクロコンピュータシステムや通信システムなどにおいて、ＣＰＵに代わって各種入出力機器とメモリ間のデータ転送を制御するダイレクト・メモリ・アクセス制御装置（以下、ＤＭＡコントローラと称す）が広く用いられている。
【０００３】
このようなＤＭＡコントローラの多くは、転送元となるＩＯモジュールを設定するためのレジスタ、転送先のメモリアドレスを設定するためのレジスタ、転送データ回数を設定するためのレジスタなど、ＤＭＡ転送のための各種レジスタを有している。
【０００４】
そして、ＤＭＡコントローラは、ＩＯモジュールからＤＭＡ要求信号が入力されると、上記各種レジスタに設定された転送情報に従って、ＩＯモジュールからメモリへのデータ転送を開始させ、ＤＭＡコントローラの各種レジスタに設定されたデータ（例えば、１フレーム）の転送の終了時に、割込信号を出力してデータ転送が終了したことをＣＰＵに通知する。
【０００５】
ＣＰＵは、この割込信号によって他の処理を中断し、転送先のメモリに転送されたデータを読み出す処理を行う。そして、ＣＰＵはデータを読み出した後に、ＤＭＡコントローラのレジスタに次の転送用の設定を行うことで転送の許可が行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記ＤＭＡコントローラは、各種レジスタに設定されたデータの転送が終了した後に割込信号を出力するので、割込信号が出力されてからＣＰＵによってメモリに転送されたデータが読み出されるまでの間、新たにメモリへのデータ転送を開始させることができない。
【０００７】
このように、ＤＭＡコントローラから割込信号が出力されてからＣＰＵによってメモリに転送されたデータが読み出されるまでの間、メモリへのデータ転送ができないため、受信データの転送速度が低下してしまう。この結果、ＩＯモジュールによって高速かつ大容量のデータが受信されると、オーバーフローが発生し、受信されたデータをＣＰＵが取りこぼしてしまうといった問題が発生する。
【０００８】
そこで、上記した転送元となるＩＯモジュールを設定するためのレジスタ、転送先のメモリアドレスを設定するためのレジスタ、転送データ回数を設定するためのレジスタからなるレジスタセットを複数持たせ、１つのレジスタセットによるＤＭＡ転送が終了したとき、他のレジスタセットによるＤＭＡ転送を開始するようにして、ＤＭＡ転送を停止させないようにすることが考えられる。
【０００９】
しかし、この場合、レジスタセットが２つ、３つになると、レジスタ数が２倍、３倍となってしまい、回路規模が大きくなってしまう。また、複数のレジスタセットによるＤＭＡ転送を切り替えるための回路が必要となり、回路が複雑になってしまうといった問題が生じる。
【００１０】
なお、レジスタセットを複数持たせることなく、ＤＭＡ転送を停止させないようにしたものとして、メモリ上に複数のＤＭＡ転送領域を登録した情報テーブルを備えたものがある（特許文献１参照）。
【特許文献１】特開平４−３５０７５２号公報  上記した特許文献１に記載の発明は、メモリ上に複数のＤＭＡ転送領域を登録した情報テーブルを有し、この情報テーブルの先頭アドレスを設定するアドレスレジスタ、情報テーブルのサイズを示すサイズレジスタ、情報テーブル内でＤＭＡ転送が完了した先頭領域を設定するトップレジスタ、情報テーブル内でＤＭＡ転送準備が完了した最後尾領域を設定するボトムレジスタおよびこれらの各レジスタを制御する内部プロセッサから成るシリアルデータコントローラなどを備えている。そして、これらの複数のレジスタをインタフェースとしてメモリ内の情報テーブルを更新することにより、ＤＭＡ転送を停止させることなく、メモリへのＤＭＡ転送を行うようになっている。
【００１１】
しかし、上記した特許文献１に記載の発明は、メモリ上にＤＭＡ転送領域とは別に複数のＤＭＡ転送領域が登録された情報テーブルを有し、この情報テーブルから転送ごとにメモリから情報を取ってくる回路が必要になるため、構成および制御が複雑である。また、メモリ上にＤＭＡ転送領域とは別に複数のＤＭＡ転送領域を登録した情報テーブルを有しているため、ＤＭＡ転送領域として使用できる領域が減少してしまう。
【００１２】
このように、上記した回路では、複数のレジスタセットやメモリ上に複数のＤＭＡ転送領域が登録された情報テーブルを有することによって、ＤＭＡ転送を停止させないでメモリへのＤＭＡ転送を行うようにしている。
【００１３】
本発明は上記問題に鑑みたもので、ダイレクト・メモリ・アクセス・システムにおいて、複数のレジスタセットを備えることなく、また、メモリ上に複数のＤＭＡ転送領域が登録された情報テーブルを有することなく、ＤＭＡ転送を停止させないでメモリへのＤＭＡ転送を行うことを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、請求項１に記載の発明では、メモリ（５０）へのデータ転送の制御を行い、前記メモリへのデータ転送の終了時に割込信号を出力するダイレクト・メモリ・アクセス・コントローラ（１０）と、前記ダイレクト・メモリ・アクセス・コントローラの前記割込信号に応じて前記メモリへ転送された転送データを読み出す制御回路（２０）と、を備えたダイレクト・メモリ・アクセス・システムであって、前記ダイレクト・メモリ・アクセス・コントローラは、任意の転送データ数が設定されるレジスタ（１８）と、前記メモリへ転送された転送データ数を計数する転送データ数カウンタ（１５ｃ）と、前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された前記転送データ数とが一致したときに、前記割込信号を出力する割込信号発生手段（１７、１９）と、を備えたことを特徴としている。
【００１５】
このように、前記ダイレクト・メモリ・アクセス・コントローラは、任意の転送データ数が設定されるレジスタ（１８）と、前記メモリへ転送された転送データ数を計数する転送データ数カウンタ（１５ｃ）と、前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された前記転送データ数とが一致したときに、前記割込信号を出力する割込信号発生手段（１７、１９）と、を備えたので、複数のレジスタセットを備えることなく、また、メモリ上に複数のＤＭＡ転送領域が登録された情報テーブルを有することなく、ＤＭＡ転送を停止させないでメモリへのＤＭＡ転送を行うことができる。
【００１６】
また、請求項２に記載の発明のように、前記レジスタ（１８）に設定される前記転送データ数は、前記制御回路によって設定されるので、前記レジスタ（１８）に設定される前記転送データ数を容易に変更することができる。
【００１７】
また、請求項３に記載の発明のように、前記割込信号発生手段（１７、１９）は、前記メモリへのデータ転送の終了時に出力する前記割込信号と、前記レジスタに設定された前記転送データ数と前記転送データ数カウンタによって計数された転送データ数とが一致したときに出力する前記割込信号を出力可能と構成することができる。
【００１８】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【発明を実施するための最良の形態】
【００１９】
（第１実施形態）
本発明の一実施形態に係るダイレクト・メモリ・アクセス・システムの構成を図１に示す。図に示すように、ダイレクト・メモリ・アクセス・システムは、ＤＭＡコントローラ１０、ＣＰＵ２０、切替回路４０、メモリ５０、ＩＯモジュール６０、７０を備えている。そして、ＤＭＡコントローラ１０、ＣＰＵ２０、メモリ５０、ＩＯモジュール６０、７０は、それぞれ内部バス（データバスおよびアドレスバス）によって接続されており、この内部バスは、切替回路４０によって、ＣＰＵ２０とＤＭＡコントローラ１０の接続が切替られるようになっている。また、メモリ５０には、ＤＭＡコントローラ１０およびＣＰＵ２０から図示しない制御信号（リード信号、ライト信号）が入力されるようになっている。具体的には、メモリ５０には、ＤＭＡコントローラ１０からライト信号が入力され、ＣＰＵ２０からリード信号が入力される。
【００２０】
まず、図１に示した構成における作動について簡単に説明する。
【００２１】
ＩＯモジュール６０、７０は、所定のビット幅（例えば、８ビット）の内部レジスタを有し、入出力機器から入力されるシリアルデータをパラレルデータに変換して内部レジスタに保持する。そして、内部レジスタにパラレルデータを保持すると、ＤＭＡコントローラ１０に対してＤＭＡ要求信号ＤＲＥＱ０、ＤＲＥＱ１を出力する。
【００２２】
そして、例えば、ＩＯモジュール６０からＤＭＡコントローラ１０にＤＭＡ要求信号ＤＲＥＱ０が入力されると、ＤＭＡコントローラ１０は、バスアービタ３０に対してバス要求信号ＢＲＥＱを出力する。
【００２３】
バスアービタ３０は、ＤＭＡコントローラ１０から入力されるバス要求信号ＢＲＥＱと、ＣＰＵ２０から入力されるバス要求信号ＢＲＥＱとに基づいて、ＤＭＡコントローラ１０またはＣＰＵ２０に対してバス許可信号ＢＡＣＫを出力するとともに、切替回路４０の切り替えを行う。
【００２４】
例えば、バスアービタ３０は、ＣＰＵ２０がバスを使用していない場合にＤＭＡコントローラ１０からバス要求信号ＢＲＥＱが入力されると、ＤＭＡコントローラ１０に対してバス許可信号ＢＡＣＫを出力するとともに、切替回路４０によって内部バスをＤＭＡコントローラ１０側に接続させる。
【００２５】
ＤＭＡコントローラ１０は、このバス許可信号ＢＡＣＫを受信すると、ＩＯモジュール６０に対してＤＭＡ許可信号ＤＡＣＫ０を送信してＩＯモジュール６０の内部レジスタに保持した転送元データをデータバスに出力させる。また、ＤＭＡコントローラ１０は、メモリ５０の転送先メモリアドレスを生成して指定するとともに、メモリ５０にライト信号を出力する。そして、ＩＯモジュール６０の内部レジスタに保持された転送元データは、メモリ５０のＤＭＡコントローラ１０によって指定された転送先メモリアドレスに転送される。
【００２６】
このように、ＩＯモジュール６０の内部レジスタにデータが保持される毎に、ＩＯモジュール６０からＤＭＡ要求信号ＤＲＥＱ０が出力され、ＤＭＡコントローラ１０からＤＭＡ許可信号ＤＡＣＫ０が送信されると、ＩＯモジュール６０の内部レジスタに保持されたデータは、ＤＭＡコントローラ１０によって生成される転送先メモリアドレスに順次転送される。
【００２７】
そして、ＩＯモジュール６０からメモリ５０へ所定数の転送データが転送されると、ＤＭＡコントローラ１０は、ＣＰＵ２０に対して割込信号を出力する。ＣＰＵ２０は、この割込信号によって他の処理を中断し、転送先のメモリに転送されたデータを読み出す。
【００２８】
このように、ＤＭＡコントローラ１０は、ＩＯモジュール６０からメモリ５０へのＤＭＡ転送の制御を行う。
【００２９】
次に、図２を参照して、ＤＭＡコントローラ１０の構成について説明する。図に示すように、ＤＭＡコントローラ１０は、ＤＭＡ転送要求／許可判定回路１１、起動制御回路１３、アドレスカウンタ回路１４、転送回数設定回路１５、バスインタフェース１６、割込発生回路１７、割込転送数設定レジスタ１８および比較器１９を有している。なお、ＤＭＡコントローラ１０は、複数のチャンネルを有し、これらのチャンネル毎に独立して制御を行うことができるようになっている。
【００３０】
起動制御回路１３は、転送元となるＩＯモジュールを設定するためのレジスタ１３ａを有している。なお、このレジスタ１３ａには、ＩＯモジュール６０、７０とチャンネルの割り当てを設定するためのビット、転送幅を設定するためのビット、ＤＭＡ転送開始の許可を設定するためのビットが割り当てられている。このレジスタ１３ａは、ＣＰＵ２０からバスインタフェース１６を介して設定される。
【００３１】
アドレスカウンタ回路１４は、転送先メモリの先頭アドレスを設定するためのレジスタ１４ａと、このレジスタ１４ａに設定された先頭アドレスからカウントアップする転送先アドレスカウンタ１４ｂを有している。この転送先アドレスカウンタ１４ｂは、ＤＭＡ転送要求／許可判定回路１１からのカウントアップを指示する信号が入力されると、図示しないクロックに同期してカウントアップし、この転送先アドレスカウンタ１４ｂのカウント値は、転送先メモリのアドレスとしてバスインタフェースから出力される。
【００３２】
転送回数設定回路１５は、転送データの転送回数を設定するためのレジスタ１５ａと、このレジスタ１５ａに設定された転送回数からカウントダウンする転送回数カウンタ１５ｂと、転送済みの転送データ数をカウントする転送データ数カウンタ１５ｃを有している。なお、転送回数カウンタ１５ｂは、ＤＭＡ転送要求／許可判定回路１１からのカウントダウンを指示する信号が入力されると、図示しないクロックに同期してカウントダウンし、転送データ数カウンタ１５ｃは、ＤＭＡ転送要求／許可判定回路１１からカウントアップを指示する信号が入力されると、図示しないクロックに同期してカウントアップする。
【００３３】
そして、転送回数設定回路１５は、転送データ数カウンタ１５ｃによってカウントされた転送済みの転送データ数をパラレル信号として出力するとともに、転送データ数カウンタ１５ｃによってカウントされた転送済みの転送データ数と転送データの転送回数を設定するためのレジスタ１５ａに設定された転送データ数とが一致すると、転送が終了したことを示す転送終了信号を出力する。
【００３４】
なお、本実施形態において、起動制御回路１３における転送元となるＩＯモジュールを設定するためのレジスタ１３ａ、アドレスカウンタ回路１４における転送先メモリの先頭アドレスを設定するためのレジスタ１４ａ、転送回数設定回路１５における転送データの転送回数を設定するためのレジスタ１５ａがレジスタセットに相当する。すなわち、本実施形態におけるダイレクト・メモリ・アクセス・システムのレジスタセットは１つのみとなっている。
【００３５】
割込転送数設定レジスタ１８は、任意の割込転送数を設定するためのレジスタで、このレジスタに設定された割込転送数はパラレル信号として出力される。なお、この割込転送数設定レジスタ１８は、ＣＰＵ２０からバスインタフェース１６を介して設定される。
【００３６】
比較器１９には、割込転送数設定レジスタ１８に設定された割込転送数および転送回数設定回路１５からの転送データ数が入力される。比較器１９は、割込転送数設定レジスタ１８に設定された割込転送数と転送回数設定回路１５から入力される転送データ数の下位６ビットを比較し、上記割込転送数と上記転送データ数の下位６ビットが一致した場合に一致信号を出力する。例えば、割込転送数設定レジスタ１８の設定値として２０ｈが設定され（以下、ｈは１６進数を意味する）、転送回数設定回路１５のレジスタに１０００ｈが設定された場合、転送回数設定回路１５から入力される転送データ数が、２０ｈ、４０ｈ、６０ｈ、…、１０００ｈのとき、比較器１９は一致信号を出力する。すなわち、比較器１９は、割込転送数設定レジスタ１８に設定された割込転送数（２０ｈ）毎に、一致信号を出力する。
【００３７】
割込発生回路１７は、転送回数設定回路１５からの転送終了信号と比較器１９からの一致信号のオアをとって割込信号を生成する。この割込信号は、ＣＰＵ２０の割込信号用の専用端子に入力される。また、割込発生回路１７は、割込信号の要因が転送終了信号であるか否かを識別するための割込要因レジスタ１７ａを有している。なお、この割込要因レジスタ１７ａは、ＣＰＵ２０からバスインタフェース１６を介して読み出される。
【００３８】
バスインタフェース回路１６は、内部バス（データバス、アドレスバス）のドライブなどを行う。
【００３９】
ＤＭＡ転送要求／許可判定回路１１は、ＤＭＡ要求信号ＤＲＥＱ０、ＤＲＥＱ１などのＤＭＡ転送要求に応じて、ＤＭＡ転送の許可判定を行う。なお、ＤＭＡ転送の許可は、データ許可信号ＤＡＣＫ０、ＤＡＣＫ１の送信により行う。また、起動制御回路１３、アドレスカウンタ回路１４、転送回数設定回路１５の各種レジスタへのデータの書き込み、読み出しを行い、ＩＯモジュール６０、７０からメモリ５０へのデータ転送の制御を行う。
【００４０】
次に、図３を参照して、本発明に係るダイレクト・メモリ・アクセス・システムのＣＰＵ２０の処理について説明する。電源が投入されると、ＣＰＵ２０は、内部メモリに記憶されたプログラムに従って、所定の初期化処理を行った後、図３に示す処理を開始する。
【００４１】
まず、起動制御回路１３における転送元となるＩＯモジュールを設定するためのレジスタ１３ａの設定を行う。例えば、チャンネル１に対しＩＯモジュール６０を割り当て、チャンネル２に対してＩＯモジュール７０を割り当て、転送幅としては１バイトを設定する。なお、ＤＭＡ転送開始の許可を設定するためのビットの設定は、ＤＭＡ転送開始を許可しない設定とする（Ｓ１００）。
【００４２】
次に、アドレスカウンタ回路１４における転送先メモリの先頭アドレスを設定するためのレジスタ１４ａの設定を行う。例えば、転送先メモリの先頭アドレスとして０ｈを設定する（Ｓ１０１）。
【００４３】
次に、転送回数設定回路１５における転送データの転送回数を設定するためのレジスタ１５ａの設定を行う。例えば、転送データの転送回数として１０００ｈを設定する（Ｓ１０２）。
【００４４】
次に、割込転送数設定レジスタ１８の設定を行う。例えば、割込転送数として２０ｈを設定する（Ｓ１０３）。
【００４５】
次に、起動制御回路１３における転送元となるＩＯモジュールを設定するためのレジスタ１３ａのＤＭＡ転送開始の許可を設定するための設定を、ＤＭＡ転送開始を許可する設定にすると、起動制御回路１３からＤＭＡ転送開始の許可信号が出力される（Ｓ１０４）。
【００４６】
このようにして、ＤＭＡ転送要求／許可判定回路１１は、ＤＭＡ転送開始が許可された状態となる。
【００４７】
ここで、ＩＯモジュール６０によって受信したデータをメモリ５０へ転送する場合を例に、ＤＭＡ転送要求／許可判定回路１１の処理について説明する。
【００４８】
まず、ＩＯモジュール６０からＤＭＡ転送要求／許可判定回路１１にＤＭＡ要求信号ＤＲＥＱ０が入力されると、ＤＭＡ転送要求／許可判定回路１１は、バスアービタ３０に対してバス要求信号ＢＲＥＱを出力する。そして、バスアービタ３０は、ＣＰＵ２０がバスを使用していない場合、ＤＭＡ転送要求／許可判定回路１１にバス許可信号ＢＡＣＫを送信するとともに、切替回路４０によって内部バスをＤＭＡコントローラ１０側に接続させる。
【００４９】
ＤＭＡ転送要求／許可判定回路１１は、このバス許可信号ＢＡＣＫを受信すると、ＩＯモジュール６０に対してＤＭＡ許可信号ＤＡＣＫ０を送信する。
【００５０】
このＤＭＡ許可信号ＤＡＣＫ０により、ＩＯモジュール６０の内部レジスタに保持された転送元データがデータバスに出力され、転送先アドレスカウンタ１４ｂからは、Ｓ１００においてアドレスカウンタ回路１４のレジスタ１４ａに設定された転送先メモリの先頭アドレスが出力される。
【００５１】
次に、ＤＭＡ転送要求／許可判定回路１１は、メモリ５０にライト信号を出力すると、図４に示すように、メモリ５０のアドレス０に、１個目のデータが書き込まれる。
【００５２】
次に、ＤＭＡ転送要求／許可判定回路１１は、転送先アドレスカウンタ１４ｂにカウントアップを指示する信号を出力し、転送回数設定回路１５の転送回数カウンタ１５ｂにカウントダウンを指示する信号を出力し、転送データ数カウンタ１５ｃにカウントアップを指示する信号を出力する。これにより、転送先アドレスカウンタ１４ｂのカウント値は０から１にカウントアップし、転送回数カウンタ１５ｂのカウント値は１０００ｈからＦＦＦｈにカウントダウンし、転送データ数カウンタ１５ｃのカウント値は０から１にカウントアップする。
【００５３】
そして、ＩＯモジュール６０の内部モジュールに新たな転送元データが保持されると、ＩＯモジュール６０からＤＭＡ転送要求／許可判定回路１１にＤＭＡ要求信号ＤＲＥＱ０が入力される。
【００５４】
ＤＭＡ転送要求／許可判定回路１１は、バスアービタ３０からバス許可信号ＢＡＣＫが入力されている場合、ＩＯモジュール６０に対してＤＭＡ許可信号ＤＡＣＫ０を送信する。
【００５５】
このＤＭＡ許可信号ＤＡＣＫ０により、ＩＯモジュール６０の内部レジスタに新たに保持された転送元データがデータバスに出力され、転送先アドレスカウンタ１４ｂからは、アドレス１が出力される。
【００５６】
次に、ＤＭＡ転送要求／許可判定回路１１は、メモリ５０にライト信号を出力すると、図４に示すように、メモリ５０のアドレス１に、２個目のデータが書き込まれる。
【００５７】
次に、ＤＭＡ転送要求／許可判定回路１１は、転送先アドレスカウンタ１４ｂにカウントアップを指示する信号を出力し、転送回数設定回路１５の転送回数カウンタ１５ｂにカウントダウンを指示する信号を出力し、転送データ数カウンタ１５ｃにカウントアップを指示する信号を出力する。これにより、転送先アドレスカウンタ１４ｂのカウント値は１から２にカウントアップし、転送回数カウンタ１５ｂのカウント値はＦＦＦｈからＦＦＥｈにカウントダウンし、転送データ数カウンタ１５ｃのカウント値は１から２にカウントアップする。
【００５８】
同様の処理を繰り返し、転送先アドレスカウンタ１４ｂがアドレス１Ｆｈまでカウントアップし、メモリ５０のアドレス１Ｆｈまでデータが書き込まれると、転送データ数カウンタ１５ｃが２０ｈまでカウントアップする。
【００５９】
そして、転送データ数カウンタ１５ｃが２０ｈまでカウントアップすると、転送データ数カウンタ１５ｃのカウント値と割込転送数設定レジスタ１８の設定値とが一致し、比較器１９から一致信号が出力される。すなわち、割り込み発生回路１７から一致信号による１回目の割込信号が出力される。
【００６０】
同様に、転送先アドレスカウンタ１４ｂがアドレス３Ｆｈまでカウントアップし、メモリ５０のアドレス３Ｆｈまでデータが書き込まれると、転送データ数カウンタ１５ｃのカウント値と割込転送数設定レジスタ１８の設定値とが一致し、比較器１９から一致信号が出力される。すなわち、割り込み発生回路１７から一致信号による２回目の割込信号が出力される。
【００６１】
同様に、転送回数カウンタ１５ｂのカウント値が０となるまで同様の処理を繰り返し、転送データ数カウンタ１５ｃのカウント値が６０ｈ、…、１０００ｈになると、比較器１９から一致信号が出力される。
【００６２】
そして、転送回数カウンタ１５ｂのカウント値が０までカウントダウンすると、転送回数設定回路１５から転送終了信号が出力される。すなわち、図４に示すように、メモリ５０のアドレスＦＦＦｈにデータが書き込まれ、転送回数設定回路１５から転送終了信号による割込信号が出力される。また、割込要因レジスタ１７ａは、転送回数設定回路１５からの転送終了信号によって、割込信号の要因が転送終了信号であることを示す設定となる。
【００６３】
このように、メモリ５０におけるアドレス１Ｆｈまでデータが転送されると、一致信号による１回目の割込信号が発生し、アドレス３Ｆまでデータが転送されると、一致信号による２回目の割込信号が発生する。同様に、３２個のデータが転送される度に一致信号による割込信号が発生し、アドレスＦＦＦｈまでデータが転送されたとき、すなわち、データ転送の終了時に、ＤＭＡコントローラ１０から転送終了信号による割込信号が出力される。
【００６４】
つまり、ＣＰＵ２０には、割込転送数設定レジスタ１８に設定された割込転送数（ここでは２０ｈ）毎に出力される一致信号を要因とする割込信号と、転送終了信号を要因とする割込信号が入力される。
【００６５】
また、メモリ５０のアドレスＦＦＦｈまでデータが転送された後、ＩＯモジュール６０からＤＭＡ要求信号ＤＲＥＱ０が入力されない場合、メモリ５０へのＤＭＡ転送は終了する。また、ＩＯモジュール６０からＤＭＡ転送要求／許可判定回路１１に引き続きＤＭＡ要求信号ＤＲＥＱ０が入力されている場合、ＤＭＡ転送を停止することなく、再度アドレス０からデータ転送を繰り返す。
【００６６】
すなわち、メモリ５０のアドレスＦＦＦｈまでデータが転送されたとき、メモリ５０のアドレス０〜アドレス１Ｆｈに転送されたデータは、一致信号による１回目の割込信号によってＣＰＵ２０から既に読み出されているため、ＤＭＡ転送を停止することなく、再度アドレス０からＤＭＡ転送を繰り返すことができる。
【００６７】
図３のＣＰＵ２０によるＤＭＡ転送処理についての説明に戻り、ＣＰＵ２０は、割込信号が入力されたか否かに基づき、割込信号が有るか否かを判定する（Ｓ１０５）。
【００６８】
ここで、割込信号が無いと判定した場合（Ｓ１０５でＮＯと判定）、割込信号が有ると判定するまでＳ１０５の判定を繰り返す。また、Ｓ１０５において、割込信号が有ると判定した場合（Ｓ１０５でＹＥＳと判定）、割込発生回路１７の割込要因レジスタ１７ａを読み出し、割込信号の要因が転送終了信号であるか否かに基づき、割込信号が転送終了信号によるものであるか否かを判定する（Ｓ１０６）。
【００６９】
ここで、割込発生回路１７の割込要因レジスタ１７ａを読み出し、割込信号の要因が転送終了信号でないないと判定した場合、すなわち、割込信号が一致信号によるものであると判定した場合（Ｓ１０６でＮＯと判定）、転送先メモリの先頭アドレスを設定するためのレジスタ１４ａの設定値および転送データの転送回数を設定するためのレジスタ１５ａの設定値に基づき、メモリ５０に対してリード信号を出力して、メモリ５０に転送されたデータを読み出す。
【００７０】
具体的には、図４に示したように、割込信号が一致信号による１回目の割込み信号である場合、アドレス０から１Ｆｈまでのデータを順次読み出し、割込信号が一致信号による２回目の割込み信号である場合、アドレス２０から３Ｆｈまでのデータを順次読み出し（Ｓ１０８）、Ｓ１０５〜Ｓ１０７の処理を繰り返す。
【００７１】
また、Ｓ１０６において、割込信号が転送終了信号によるものであると判定した場合（Ｓ１０６でＹＥＳと判定）、メモリ５０に転送されたＦＤＦｈからＦＦＦｈまでのデータを順次読み出し（Ｓ１０８）、本処理を終了する。
【００７２】
上記したように、ダイレクト・メモリ・アクセス・コントローラ１０は、任意の転送データ数が設定されるレジスタ１８と、前記メモリへ転送された転送データ数を計数する転送データ数カウンタ１５ｃと、前記レジスタに設定された転送データ数と転送データ数カウンタによって計数された前記転送データ数とが一致したときに、一致信号を出力する比較機１９と、メモリへのデータ転送の終了時および一致信号が入力されたときに割込信号を出力する割込発生回路１７と、を備えたので、ＣＰＵ２０は、転送終了信号による割込信号が入力される前に、一致信号による割込信号によってメモリ５０のデータを読み出すことができ、ＤＭＡ転送を停止することなく、かつ、メモリ上のＤＭＡ転送領域として使用できる領域を減少させることなく、メモリへのＤＭＡ転送を行うことができる。
【００７３】
また、割込転送数設定レジスタ１８に任意の割込転送数として設定される転送データ数は、前記制御回路によって設定されるので、割込転送数設定レジスタ１８に設定される前記転送データ数を容易に変更することができる。
【００７４】
なお、本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づいて種々なる形態で実施することができる。
【００７５】
例えば、上記実施形態において、比較器１９は、割込転送数設定レジスタ１８に割込転送数として設定された２０ｈと、転送回数設定回路１５から出力される転送データ数の下位６ビットを比較し、一致した場合に一致信号を出力する例について示したが、これは一例であり、一致信号を発生させる周期を考慮して決定すればよい。例えば、割込転送数設定レジスタ１８に割込転送数として１０ｈを設定しておき、比較器１９によって、割込転送数設定レジスタ１８に割込転送数と転送回数設定回路１５から出力される転送データ数の下位５ビットを比較するように構成すれば、比較器１９から１６個のデータ毎に一致信号を出力するようにできる。
【００７６】
また、上記実施形態において、ＩＯモジュール６０からメモリ５０へデータ転送する例について示したが、ＩＯモジュール７０からメモリ５０へデータ転送する場合にも適用できる。また、メモリ５０の内部において、所定のデータ領域に記憶されたデータを異なるデータ領域に転送させる場合などにも適用できる。
【００７７】
また、上記実施形態において、図３のＳ１０６で、割込信号が転送終了信号によるものでないと判定した場合（Ｓ１０６でＮＯと判定）、ＣＰＵ２０は、割込み転送数の設定を変更するステップを設け、Ｓ１０７へ進むようにしてもよい。
【００７８】
また、上記実施形態において、ＩＯモジュール６０、７０の２つのＩＯモジュールを備えた例について示したが、ＩＯモジュールは１つでもよく、３つ以上でもよい。
【図面の簡単な説明】
【００７９】
【図１】本発明に係るＤＭＡコントローラの周辺構成を示す図である。
【図２】本発明に係るＤＭＡコントローラの構成を示す図である。
【図３】ＣＰＵによるＤＭＡ転送処理を示すフローチャートである。
【図４】一致信号と転送終了信号による割込信号についての説明図である。
【符号の説明】
【００８０】
１０…ＤＭＡコントローラ、１１…ＤＭＡ転送要求／許可判定回路、
１３…起動制御回路、１４…アドレスカウンタ回路、１５…転送回数設定回路、
１６…バスインタフェース、１７…割込発生回路、１８…割込転送数設定レジスタ、
１９…比較器、２０…ＣＰＵ、３０…バスアービタ、４０…切替回路、５０…メモリ、
６０、７０…ＩＯモジュール。
【図１】
2005135098.tif 000003
【図２】
2005135098.tif 000004
【図３】
2005135098.tif 000005
【図４】
2005135098.tif 000006