(57)【要約】【課題】ＣＰＵへの小さな負荷で使用可能なＤＭＡコントローラを得ること。【解決手段】ＣＰＵバス１に接続されるＣＰＵ１１と、ＣＰＵバス１よりも低速動作するＩＯバス２に接続されるタイマ１５との間で、ＣＰＵバス１上に接続された内蔵ＲＡＭ１０を介してデータ転送を行なうＤＭＡコントローラ２０において、データの転送要求を行なう予め設定されたタイマ１５からデータの転送要求が入力されるとともに、データの転送要求に対する転送指示を送信する転送制御部２４を有するチャネルＣ０と、チャネルＣ０からの転送指示を受信し、予め設定された所定のタイマ１５と内蔵ＲＡＭ１０との間のデータ転送を転送指示に基づいて制御する共通制御部３０と、を備え、共通制御部３０は、チャネルＣ０に転送要求が入力されてチャネルＣ０から転送指示を受信する度に、一度のデータ転送を行なう。【選択図】        図１
2006215812.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵバスに接続されるＣＰＵと、前記ＣＰＵバスよりも低い周波数で動作するＩＯバスに接続される周辺モジュールとの間で、前記ＣＰＵバス上に接続された記憶装置を介してデータ転送を行なうＤＭＡコントローラにおいて、
データの転送要求を行なう予め設定された所定の転送要求モジュールからデータの転送要求が入力されるとともに、前記データの転送要求に対する転送指示を送信する転送制御部を有するチャネルと、
前記チャネルからの転送指示を受信し、予め設定された所定の前記周辺モジュールと前記記憶装置との間のデータ転送を前記転送指示に基づいて制御するチャネル制御部と、
を備え、
前記転送要求モジュールは、所定のイベントの発生に基づいてデータの転送要求を行なう転送要求部を有し、
前記チャネルは、前記チャネル毎に予め設定された前記１つの転送要求部からデータの転送要求を受け付けるよう予め設定され、
前記チャネル制御部は、前記チャネルに前記転送要求が入力されて前記チャネルから転送指示を受信する度に、一度のデータ転送を行なうことを特徴とするＤＭＡコントローラ。
【請求項２】
前記チャネルからの前記転送指示は、前記データ転送の転送元となる前記記憶装置または前記周辺モジュールのアドレス、および前記データ転送の転送先となる前記周辺モジュールまたは前記記憶装置のアドレスを含み、
前記転送元のアドレスおよび前記転送先のアドレスは、前記チャネル毎に予め設定されることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記チャネルからの前記転送指示に含まれる前記周辺モジュールのアドレスは、前記チャネル毎に固定して設定されることを特徴とする請求項２に記載のＤＭＡコントローラ。
【請求項４】
前記チャネルからの前記転送指示に含まれる前記記憶装置のアドレスは、前記チャネル毎に前記データ転送の都度、変更して設定されることを特徴とする請求項２または３に記載のＤＭＡコントローラ。
【請求項５】
前記チャネルは、前記転送要求部からの転送要求を受け付けるか否かを指定する受付レジスタをさらに有することを特徴とする請求項１〜４のいずれか１つに記載のＤＭＡコントローラ。
【請求項６】
前記チャネルは、前記チャネル制御部が前記周辺モジュールのデータを前記記憶装置に送信して前記記憶装置にリードに有効なデータを転送データとして格納させているか否かを示すデータ有効フラグをさらに有し、
前記ＣＰＵは、前記データ有効フラグが示す値に基づいて前記記憶装置からデータをリードするか否かを判断することを特徴とする請求項１〜５のいずれか１つに記載のＤＭＡコントローラ。
【請求項７】
前記チャネルは、前記ＣＰＵへの割り込み要求を許可するか否かを示す割り込み許可レジスタをさらに有し、
前記チャネル制御部は、前記割り込み許可レジスタが前記ＣＰＵへの割り込み要求を許可することを示す場合に、前記データ有効フラグが前記記憶装置に前記転送データが格納されていることを示すと、前記ＣＰＵにデータ転送の完了を示す割り込み要求を発生することを特徴とする請求項１〜６のいずれか１つに記載のＤＭＡコントローラ。
【請求項８】
前記チャネルは、前記共通制御部が行なう前記記憶装置と前記周辺装置との間のデータ転送の回数をカウントする転送カウントレジスタをさらに有し、
前記転送カウントレジスタが予め設定された所定回数のデータ転送をカウントすると、前記チャネルはデータの転送要求を受け付けないことを特徴とする請求項１〜７のいずれか１つに記載のＤＭＡコントローラ。
【請求項９】
前記チャネルは、
前記共通制御部が行なう前記記憶装置と前記周辺装置との間のデータ転送の回数をカウントする転送カウントレジスタと、
前記転送カウントレジスタに設定する値を指定する転送回数指定レジスタと、
をさらに有し、
前記転送カウントレジスタが予め設定された所定回数のデータ転送をカウントすると、前記転送回数指定レジスタに設定された値をデータ転送の回数として前記転送カウントレジスタに設定し、
前記チャネル制御部が指定する前記記憶部内の写像領域をリセットすることを特徴とする請求項１〜７のいずれか１つに記載のＤＭＡコントローラ。
【請求項１０】
前記チャネル制御部は、前記ＣＰＵからのデータまたは前記周辺モジュールからのデータを、前記記憶部内で前記転送データとしてリード／ライトする写像領域を指定して前記転送データをリード／ライトすることを特徴とする請求項１〜９のいずれか１つに記載のＤＭＡコントローラ。
【請求項１１】
前記チャネル制御部は、前記記憶装置に前記周辺モジュールからのデータを複数回数転送する際に、前記写像領域の先頭アドレスから順番に隣接した番地に前記転送データとしてライトさせることを特徴とする請求項１〜１０のいずれか１つに記載のＤＭＡコントローラ。
【請求項１２】
前記共通制御部は、前記チャネルの転送を許可するか否かを指定する制御レジスタを有し、
前記共通制御部は、前記制御レジスタで前記チャネルの転送が許可された場合に前記記憶装置と前記周辺装置との間のデータ転送を行なうことを特徴とする請求項１〜１１のいずれか１つに記載のＤＭＡコントローラ。
【請求項１３】
データの転送要求を行なう所定の転送要求モジュールからデータの転送要求が入力されるとともに、前記転送要求モジュール毎の転送要求を判別するセレクタと、
前記データ転送の転送先となる前記記憶装置または前記周辺モジュールのアドレスを保持する転送先アドレスレジスタと、
前記データ転送の転送元となる前記周辺モジュールまたは前記記憶装置のアドレスを保持する転送元アドレスレジスタと、
前記セレクタが判別した転送要求に応じたデータ転送の際に、前記転送先アドレスレジスタおよび前記転送元アドレスレジスタにアドレスレジスタの増減を指定してアドレスを設定するチャネル制御レジスタと、
前記データの転送要求毎に、前記転送先アドレスレジスタ、前記転送元アドレスレジスタおよび前記チャネル制御レジスタが有する値に基づいて、前記チャネル制御部に転送指示を送信する転送要求部と、
を有する判別転送チャネルをさらに備えることを特徴とする請求項１〜１２のいずれか１つに記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵバス上のＲＡＭと周辺モジュールとの間のデータ転送を行うＤＭＡコントローラに関するものである。
【背景技術】
【０００２】
近年の半導体集積回路の製造技術の進歩に伴う回路集積度の向上によって、ＣＰＵ（Central Processing Unit）、メモリデバイス、周辺モジュールが１チップ（回路チップ）に集積される傾向にある。ＣＰＵは、チップの演算処理性能を高めるため高い周波数で動作することが望まれる。一方、周辺モジュールは規格等によって動作速度が規定・律速されるためにＣＰＵよりも低速で動作することが多い。また、周辺モジュールはチップ全体として低電力・低ノイズ化を図るためＣＰＵよりも低速で動作することが多い。このような高速動作のＣＰＵと低速動作の周辺モジュールにおいては、ＣＰＵは高速なバンド幅の広いバスに接続され、周辺モジュール等は低速なバンド幅の狭いＩＯバスに接続される。そして、これらのバス間はブリッジで接続された階層的なバス構成となる。
【０００３】
このようなバス構成において高速動作するＣＰＵから低速動作するＩＯへアクセスする場合、ＣＰＵがウェイトサイクルを伴うことによってアクセスサイクルが増大し、処理性能や消費電力効率に悪影響を及ぼすといった問題が生じる。このため、ＣＰＵから周辺モジュールへアクセスする際のサイクル数を削減する技術の開発が進められている。
【０００４】
例えば、ＣＰＵから周辺モジュールへ高速アクセスする方法として、ＣＰＵと直接接続されるＣＰＵバス上のＲＡＭ（Random Access Memory）と周辺モジュールとの間のデータ転送をＤＭＡＣ（Direct memory access Controller）（ＤＭＡ制御装置）によって行い、かつＣＰＵがＲＡＭにアクセスすることによって周辺モジュールへのアクセスを仮想的に高速化する方法がある。しかしながら、この方法ではハードウェアが大きくなり、チップサイズが大きくなる。例えば数十個単位の周辺モジュールの制御レジスタに対してアクセスする場合、ＤＭＡＣモジュールを複数実装することが必要になり、ハードウェアが拡大化する。なお、ＣＰＵから周辺モジュールへのデータアクセスを高速化する技術としてデータキャッシュがあるが、データキャッシュはＣＰＵからのデータアクセスの高速化には寄与しない。
【０００５】
特許文献１に記載のコンピュータは、周辺モジュール（周辺デバイス）とバッファ（周辺デバイスデータ用スレーブ制御部）間をＤＭＡＣによってデータ転送するローカルなバス（ＣＰＵローカルバス）を設け、ＣＰＵによる周辺モジュールのアクセス以外の処理を前記のデータ転送と独立して実行可能とすることによってＣＰＵの負荷を軽減している。
【０００６】
また、特許文献２に記載のデータ処理装置は、バスブリッジを兼ねたバスコントローラ（バスステートコントローラ）の中にＣＰＵから高速アクセス可能なバッファを設け、ＣＰＵから周辺モジュールへの書き込みをバッファ（ライト用バッファ）に対して行うことによってＣＰＵの負荷を軽減している。
【０００７】
【特許文献１】特開平１０−２８９１９６号公報
【特許文献２】特開２００１−１４２５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記前者の従来の技術では、ＩＯ専用のローカルバスをＣＰＵに直接接続する必要があり、ＣＰＵの負荷を軽減するために大幅なハードウェアの変更を伴う。このため、バスの構成を変更できない場合には適用できないといった問題があった。
【０００９】
また、上記後者の従来の技術では、ＣＰＵからデータの読み出しを高速化できないといった問題があった。また、上記前者および後者の従来技術では、周辺モジュールへのアクセスの際のＣＰＵの負荷の軽減が不十分であるとともに、マイコンの応用分野においてＤＭＡコントローラを容易に使用できないといった問題があった。
【００１０】
本発明は、上記に鑑みてなされたものであって、簡易な構成でマイクロコンピュータの応用分野で容易に使用でき、ＣＰＵへの小さな負荷で使用可能なＤＭＡコントローラを得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、ＣＰＵバスに接続されるＣＰＵと、前記ＣＰＵバスよりも低い周波数で動作するＩＯバスに接続される周辺モジュールとの間で、前記ＣＰＵバス上に接続された記憶装置を介してデータ転送を行なうＤＭＡコントローラにおいて、データの転送要求を行なう予め設定された所定の転送要求モジュールからデータの転送要求が入力されるとともに、前記データの転送要求に対する転送指示を送信する転送制御部を有するチャネルと、前記チャネルからの転送指示を受信し、予め設定された所定の前記周辺モジュールと前記記憶装置との間のデータ転送を前記転送指示に基づいて制御するチャネル制御部と、を備え、前記転送要求モジュールは、所定のイベントの発生に基づいてデータの転送要求を行なう転送要求部を有し、前記チャネルは、前記チャネル毎に予め設定された前記１つの転送要求部からデータの転送要求を受け付けるよう予め設定され、前記チャネル制御部は、前記チャネルに前記転送要求が入力されて前記チャネルから転送指示を受信する度に、一度のデータ転送を行なうことを特徴とする。
【００１２】
この発明によれば、チャネルが、チャネル毎に予め設定された１つの転送要求部からデータの転送要求を受け付けるよう予め設定されているので、データ転送の際のＤＭＡコントローラの設定を簡易な構成で迅速に行なうことが可能となる。
【発明の効果】
【００１３】
この発明によれば、データ転送の際のＤＭＡコントローラの設定を簡易な構成で迅速に行なうことが可能となり、ＣＰＵへの小さな負荷のデータ転送を簡易な構成で行なうことが可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明に係るＤＭＡＣ（ＤＭＡコントローラ）の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１５】
実施の形態１．
図１は、実施の形態１に係るＤＭＡＣを備えたＭＣＵの構成を示す図である。同図に示すように、ＭＣＵ（Micro Controller Unit）１００は、高速動作（高い周波数での動作）するＣＰＵバス１とＣＰＵバス１よりも低速動作（低い周波数での動作）を行うＩＯバス２を含んでおり、１チップの半導体集積回路装置で構成されている。
【００１６】
ＣＰＵバス１には、ＣＰＵ１１から高速アクセス可能な内蔵ＲＡＭ（記憶装置）１０、ＭＣＵ１００を制御する中央演算処理装置（以下、ＣＰＵ１１という）、ＣＰＵ１１が実行するプログラムを格納する命令ＲＯＭ（Read Only Memory）１２が接続されている。
【００１７】
ＩＯバス２には、バス権要求の競合を調停するＢＳＣ（Bus State Controller）１４、計時用のタイマ１５、ＤＭＡ転送を制御するＤＭＡコントローラ（以下、ＤＭＡＣ２０という）が接続されている。また、ブリッジ１３は、ＣＰＵバス１およびＩＯバス２を接続している。ここでは、ＩＯバス２にＢＳＣ１４、タイマ１５、ＤＭＡＣ２０、ブリッジ１３が接続されている場合について説明するが、ＩＯバス２にはこれら以外の種々の周辺モジュールを接続してもよい。
【００１８】
命令ＲＯＭ１２は、図示しないＲＯＭキャッシュを介してＣＰＵ１１と接続している。内蔵ＲＡＭ１０は、ＣＰＵ１１からウェイトサイクル無しの１サイクルでアクセス可能なメモリであり、スクラッチメモリとしてＣＰＵ１１から頻繁にアクセスされるデータが格納されている。本実施の形態１においては、内蔵ＲＡＭ１０の一部を周辺モジュールからのデータの転送先として用いる。データ転送を行う際は、内蔵ＲＡＭ１０内のデータ転送先の写像領域のベースアドレスを指定してデータ転送が行われ、内蔵ＲＡＭ１０は指定されたベースアドレスで指定された領域に転送用のデータを格納する。
【００１９】
ＢＳＣ１４は、ＤＭＡＣ２０がデータ転送を行う際や、ブリッジ１３がＣＰＵ１１からのリード／ライト動作要求に応じて周辺モジュール（タイマ１５等）にアクセスする際に、ＤＭＡＣ２０やブリッジ１３からバス権要求される。ＢＳＣ１４は、ＤＭＡＣ２０やブリッジ１３からバス権要求されると、ＤＭＡＣ２０やブリッジ１３にバス権要求に対するバス権許可の信号を通知する。
【００２０】
ブリッジ１３は、ＣＰＵバス１とＩＯバス２の動作仕様（周波数、バス幅、バスプロトコル）の違いを吸収し、ＣＰＵバス１側およびＩＯバス２側のマスタモジュールおよびスレーブモジュールとして動作する。
【００２１】
ＤＭＡＣ２０、ブリッジ１３は、ＢＳＣ１４からバス権許可の信号が通知されると、ＩＯバス２の所定のプロトコルに従ってデータ転送や周辺モジュールへのアクセスを行う。ＤＭＡＣ２０は、複数チャネルを有している。本実施の形態１においては、ＤＭＡＣ２０が２チャネルで構成される場合について説明する。ＤＭＡＣ２０は、周辺モジュールと内蔵ＲＡＭ１０の間のデータ転送を行なう装置であり、チャネル０に対応するチャネルＣ０、チャネル１に対応するチャネルＣ１、各チャネルＣ０，Ｃ１に共通する動作を制御する共通制御部（チャネル制御部）３０、チャネルＣ０，Ｃ１と共通制御部３０を接続するバスインタフェース部４０からなる。
【００２２】
各チャネルＣ０，Ｃ１は、データ有効フラグ２１、イネーブルレジスタ（受付レジスタ）２２、割り込み許可レジスタ２３、転送制御部２４を有している。イネーブルレジスタ２２は、タイマ１５等の周辺モジュールからの転送要求をチャネル単位で設定するレジスタである。各チャネルＣ０，Ｃ１は、各チャネルＣ０，Ｃ１に対応するイネーブルレジスタ２２に転送許可（＝１）が設定されると、次にイネーブルレジスタ２２に転送禁止（＝０）が設定されるまで、周辺モジュールから転送要求が発生するたびに１回のデータ転送を行う。
【００２３】
データ有効フラグ２１は、データ転送先の内蔵ＲＡＭ１０に有効なデータ（転送されたデータ）が格納されているか否かを示すフラグである。データ有効フラグ２１は、周辺モジュールから転送要求を受け付けた後、１回の転送が終了するタイミングで初期値「０」から「１」にセットされる。ＭＣＵ１００のユーザ（ソフトウェア）は、データ有効フラグ２１を参照することによって、データ転送先の内蔵ＲＡＭ１０に有効なデータが格納されているか否かを判断することができる。
【００２４】
割り込み許可レジスタ２３は、ＣＰＵ１１への割り込み要求を許可するか否かを示すレジスタである。割り込み許可レジスタ２３が割り込み許可（＝１）に設定された状態で、データ有効フラグ２１が「１」にセットされると、データ有効フラグ２１が「１」にセットされるタイミングでＤＭＡＣ２０からＣＰＵ１１に割り込み要求を行う。一方、割り込み許可レジスタ２３が割り込み不許可（＝０）に設定された状態では、データ有効フラグ２１が「１」にセットされてもＤＭＡＣ２０からＣＰＵ１１への割り込み要求を行わない。ＭＣＵ１００のユーザへは、ＤＭＡＣ２０からＣＰＵ１１への割り込み要求によっても、データ転送先の内蔵ＲＡＭ１０に有効なデータが格納されているか否かを通知することが可能となる。
【００２５】
転送制御部２４は、転送受け付けが可能な状態で周辺モジュールから転送要求が発生した場合に、共通制御部３０にチャネルとして転送を受け付けたことを通知する。転送制御部２４は、共通制御部３０にチャネルとして転送を受け付けたことを通知する際に、データ転送の転送元（周辺モジュール）のアドレスと転送先（内蔵ＲＡＭ１０）のアドレスを共通制御部３０に通知する。
【００２６】
共通制御部３０は、マスタイネーブルレジスタ（制御レジスタ）３１、写像領域指定レジスタ３２、バッファ３３を有している。写像領域指定レジスタ３２は、データ転送先である内蔵ＲＡＭ１０内の写像領域を指定するレジスタである。データ転送先の写像領域は、例えば０ｘ１００単位で指定する。
【００２７】
写像領域指定レジスタ３２は、内蔵ＲＡＭ１０内の６４ＫＢ（Kilo Byte）を指定可能な１６ビットレジスタ（下位８ビットは０で固定）等で構成されている。マスタイネーブルレジスタ３１は、ＤＭＡＣ２０の動作のオン／オフを指定するレジスタである。バッファ３３は、転送元の周辺モジュールからリードしたデータを格納する。
【００２８】
共通制御部３０は、所定のチャネルを選択してデータ転送を行なう機能（図示せず）を有している。共通制御部３０は、マスタイネーブルレジスタ３１が転送許可（＝１）に設定された状態で、データ転送を受け付けしたことを示す信号がいずれかのチャネルＣ０，Ｃ１から通知された場合、予め設定された所定の優先度に基づいて起動するチャネルを選択する。本実施の形態１においては、チャネル選択の優先度の一例として、チャネル選択の優先度がチャネル番号の昇順（固定）である場合について説明する。したがって、チャネルＣ０とチャネルＣ１で同時に転送要求を受け付けた場合、共通制御部３０はチャネルＣ０を選択し、チャネルＣ０から通知されるアドレス情報（転送元のアドレス、転送先のアドレス）等に従ってデータ転送を行う。
【００２９】
共通制御部３０は、データ転送先の内蔵ＲＡＭ１０の絶対アドレスを生成する機能（図示せず）を有している。共通制御部３０は、選択したチャネルから通知される転送先の内蔵ＲＡＭ１０の相対アドレス、写像領域指定レジスタ３２によって指定される写像領域の先頭アドレス、ＭＣＵ１００の設計時に規定（予め設定）される内蔵ＲＡＭ１０の先頭アドレスに基づいて、データ転送先の内蔵ＲＡＭ１０の絶対アドレスを生成する。
【００３０】
共通制御部３０は、バスインタフェース部４０を介し、ＩＯバス２のプロトコルに従って、（１）転送元の周辺モジュールからデータをリードし、（２）リードしたデータを共通制御部３０のバッファ３３に格納し、（３）バッファ３３に格納したデータを内蔵ＲＡＭ１０へライトする。
【００３１】
つぎに、周辺モジュールの一例であるタイマ１５が有するチャネル０の構成を説明する。なお、本実施の形態１においては、タイマ１５が特許請求の範囲に記載の周辺モジュールおよび転送要求モジュールに対応する。
【００３２】
図２は、実施の形態１に係るタイマの構成を示すブロック図である。ここでのタイマ１５は、チャネル０を備えている。タイマ１５のチャネル０は、例えば１６ビットのカウンタ５２、例えば１６ビットのキャプチャレジスタ（転送要求部）５３Ａ，５３Ｂ、制御レジスタ５４、分周器５１、バスインタフェース部５５からなる。
【００３３】
制御レジスタ５４は、チャネル０のオン／オフの状態等を設定する。分周器５１は、ＭＣＵ１００のクロック生成器（図示せず）から提供されるクロックを適宜分周した信号を生成する。
【００３４】
カウンタ５２は、分周器５１が生成した信号をカウントする。カウンタ５２は、制御レジスタ５４によってチャネル０がオンの状態に設定された場合に、分周器５１が分周する信号に同期してインクリメントされる。
【００３５】
キャプチャレジスタ５３Ａ，５３Ｂは、イベント（ＴＩＡ０）、イベント（ＴＩＡ１）を入力する。イベント（ＴＩＡ０）の入力がインプットキャプチャ（ＩＣ（input capture）０）に対応し、イベント（ＴＩＡ０）の入力がインプットキャプチャ（ＩＣ１）に対応する。キャプチャレジスタ５３Ａ，５３Ｂは、それぞれのイベント（ＴＩＡ０）、イベント（ＴＩＡ１）に対応する転送要求を送信する。キャプチャレジスタ５３Ａからの転送要求（ＩＣ０）はインプットキャプチャ（ＩＣ０）に基づいて送信され、キャプチャレジスタ５３Ｂからの転送要求（ＩＣ１）はインプットキャプチャ（ＩＣ１）に基づいて送信される。
【００３６】
所定のイベント（ＴＩＡ０）がタイマ１５に通知されると、カウンタ５２の値がタイマ１５から送信する転送要求（ＩＣ０）にコピーされる。タイマ１５は、この転送要求（ＩＣ０）が更新されると同時に更新された転送要求（ＩＣ０）をＤＭＡＣ２０に通知する。また、所定のイベント（ＴＩＡ１）がタイマ１５に通知されると、カウンタ５２の値がタイマ１５から送信する転送要求（ＩＣ１）にコピーされる。タイマ１５は、この転送要求（ＩＣ１）が更新されると同時に更新された転送要求（ＩＣ１）をＤＭＡＣ２０に通知する。ここで、イベント（ＴＩＡ０）、イベント（ＴＩＡ１）は、ＭＣＵ１００の特定の端子からの入力信号が割り当てられている。
【００３７】
バスインタフェース部５５は、カウンタ５２、キャプチャレジスタ５３Ａ，５３Ｂ、制御レジスタ５４を接続する。バスインタフェース部５５は、ＩＯバス２と接続されており、ＩＯバス２を介したデータ（カウンタ５２の値、キャプチャレジスタ５３Ａの転送要求（ＩＣ０）、キャプチャレジスタ５３Ｂの転送要求（ＩＣ１）、制御レジスタ５４の値）の読み出しを管理する。すなわち、カウンタ５２の値、キャプチャレジスタ５３Ａの転送要求（ＩＣ０）、キャプチャレジスタ５３Ｂの転送要求（ＩＣ１）、制御レジスタ５４の値は、ＣＰＵ１１やＤＭＡＣ２０からＩＯバス２を介して読み出すことが可能な構成となっている。
【００３８】
つぎに、ＤＭＡＣ２０と周辺モジュールの関係を説明する。図３は、実施の形態１に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。ＤＭＡＣ２０は、チャネルＣ０，Ｃ１を有している。図３において、「転送要求元」の列は転送要求を発生する周辺モジュールのモジュール名を示す。ここでは、チャネルＣ０，Ｃ１に対し、タイマ１５のチャネル０から転送要求が行われる場合を示している。
【００３９】
また、「事象」の列は転送要求のトリガとなる周辺モジュール側の状態の変化を示す。ここでは、キャプチャレジスタ５３Ａがイベント（ＴＩＡ０）を入力（インプットキャプチャ（ＩＣ０））すると、ＤＭＡＣ２０のチャネルＣ０に対し転送要求を行う場合を示し、キャプチャレジスタ５３Ｂがイベント（ＴＩＡ１）を入力（インプットキャプチャ（ＩＣ１）すると、ＤＭＡＣ２０のチャネルＣ１に対し転送要求を行う場合を示している。
【００４０】
「転送レジスタ」の列は、転送要求に応じてＤＭＡＣ２０がアクセスする周辺モジュールのリソース（レジスタやローカルメモリ等）を示す。ここでは、転送要求に対してＤＭＡＣ２０のチャネルＣ０がキャプチャレジスタ５３Ａにアクセスし、ＤＭＡＣ２０のチャネルＣ１がキャプチャレジスタ５３Ｂにアクセスする場合を示している。
【００４１】
「転送方向」の列は、データ転送の方向を示す。ここでは、周辺モジュール（タイマ１５）のレジスタ（キャプチャレジスタ５３Ａ，５３Ｂ）からデータを読み出して内蔵ＲＡＭ１０へデータ転送する場合の動作（「ＲＥＧ→ＲＡＭ」）を示している。
【００４２】
「転送領域相対アドレス」の列は、写像領域指定レジスタ３２で指定される写像領域の先頭アドレスからの相対アドレスを示す。ここでは、ＤＭＡＣ２０のチャネルＣ０がデータ転送する際に、「０ｘ０」が写像領域の先頭アドレスからの相対アドレスとなる場合を示し、ＤＭＡＣ２０のチャネルＣ１がデータ転送する際に「０ｘ２」が写像領域指定レジスタ３２で指定される場合を示している。
【００４３】
「転送データ長」の列は、１回の転送要求によって転送されるデータ長をビット（ｂｉｔ）数で示す。ここでは、１回の転送要求によって転送されるデータ長が１６ビットである場合を示している。
【００４４】
「アドレス」の列は、データの転送先／転送元アドレスが変化するか否かを示す。ここでは、同じアドレス間でのデータ転送を繰り返す場合（「固定」）を示している。なお、ここでのＤＭＡＣ２０のチャネルＣ０，Ｃ１の属性は各チャネルで固定である。
【００４５】
つぎに、ＤＭＡＣ２０の動作処理手順について説明する。図４−１は、実施の形態１に係るＤＭＡＣ２０の動作処理手順を示すフローチャートである。ＤＭＡＣ２０の各チャネルＣ０，Ｃ１に共通した初期設定として、写像領域指定レジスタ３２の設定、マスタイネーブルレジスタ３１の設定を行なう（ステップＳ１１０）。写像領域指定レジスタ３２としては、例えば「００１００」を設定し、マスタイネーブルレジスタ３１としては、例えば転送許可（＝１）を設定する。
【００４６】
つぎに、例えば頻繁に読み出すＩＯリソースに対するＤＭＡＣ２０の各チャネルＣ０，Ｃ１の初期設定として、チャネル毎に割り込み許可レジスタ２３の設定、イネーブルレジスタ２２の設定を行なう（ステップＳ１２０）。例えば、チャネルＣ０の割り込み許可レジスタ２３としては割り込み許可（＝１）を設定し、イネーブルレジスタ２２としては転送許可（＝１）を設定する。
【００４７】
ＣＰＵ１１は、任意のソフトウェア処理を実行する（ステップＳ１３０）。この間、ＤＭＡＣ２０は周辺モジュールから内蔵ＲＡＭ１０へのデータ転送を行なう。これにより、その後にＤＭＡＣ２０の再設定を行なうことなく任意のソフトウェア処理の実行中は常に内蔵ＲＡＭ１０に最新のデータ（値）を反映させることが可能となる。ＣＰＵ１１によって任意のソフトウェア処理が終了すると、ＤＭＡＣ２０によるデータ転送処理を終了する（ステップＳ１４０）。
【００４８】
ここで、周辺モジュールから内蔵ＲＡＭ１０へのデータ転送の処理手順について説明する。図４−２は、実施の形態１に係るＭＣＵ内のデータ転送の処理手順を示すフローチャートである。ここでは、ＤＭＡＣ２０の初期設定として、マスタイネーブルレジスタ３１に転送許可（＝１）が設定され、チャネルＣ０の割り込み許可レジスタ２３に割り込み許可（＝１）が設定され、イネーブルレジスタ２２に転送許可（＝１）が設定されている場合について説明する。
【００４９】
ＭＣＵ１００の特定の端子からの入力信号として、イベント（ＴＩＡ０）、イベント（ＴＩＡ１）がタイマ１５に入力される。このイベント（ＴＩＡ０）、イベント（ＴＩＡ１）は、それぞれキャプチャレジスタ５３Ａ，５３Ｂに入力される（ステップＳ２１０）。ここでは、キャプチャレジスタ５３Ａにイベント（ＴＩＡ０）が入力された場合について説明する。キャプチャレジスタ５３Ａは、インプットキャプチャ（ＩＣ０）に対応した転送要求（ＩＣ０）を生成する。
【００５０】
また、所定のイベント（ＴＩＡ０）がタイマ１５に通知されると、カウンタ５２の値がタイマ１５から送信する転送要求（ＩＣ０）にコピーされる。タイマ１５は、この転送要求（ＩＣ０）が更新されると同時に更新された転送要求（ＩＣ０）をＤＭＡＣ２０に通知する（ステップＳ２２０）。これにより、タイマ１５からの転送要求（ＩＣ０）のアサートが発生する。
【００５１】
ＤＭＡＣ２０のチャネルＣ０は、イネーブルレジスタ２２に転送許可（＝１）が設定されているか否かを確認する（ステップＳ２３０）。ここでのＤＭＡＣ２０のチャネルＣ０は、イネーブルレジスタ２２に転送許可（＝１）が設定されているので、タイマ１５から内蔵ＲＡＭ１０へのデータ転送処理を開始する。
【００５２】
転送制御部２４は、共通制御部３０にチャネルＣ０として転送を受け付けたことを通知する。このとき、転送制御部２４はデータ転送の転送元（タイマ１５）のアドレスと転送先（内蔵ＲＡＭ１０）のアドレスを共通制御部３０に通知する（ステップＳ２４０）。
【００５３】
マスタイネーブルレジスタ３１が転送許可（＝１）の設定であるため、共通制御部３０の写像領域指定レジスタ３２は、データ転送先である内蔵ＲＡＭ１０内の写像領域を指定する（ステップＳ２５０）。共通制御部３０は、起動するチャネルＣ０を選択し、選択したチャネルＣ０から通知される転送先の内蔵ＲＡＭ１０の相対アドレス、写像領域指定レジスタ３２によって指定される写像領域の先頭アドレス、ＭＣＵ１００の設計時に規定される内蔵ＲＡＭ１０の先頭アドレスに基づいて、データ転送先の内蔵ＲＡＭ１０内の絶対アドレスを生成する（ステップＳ２６０）。
【００５４】
共通制御部３０は、バスインタフェース部４０を介し、ＩＯバス２のプロトコルに従って、転送元のタイマ１５からデータ（変更されたタイマ１５の内容に関する情報（ＩＣ０）をリードする。共通制御部３０は、リードしたデータをバッファ３３に格納し、バッファ３３に格納したデータをＩＯバス２、ブリッジ１３、ＣＰＵバス１を介して、生成した内蔵ＲＡＭ１０の絶対アドレスにライトする（ステップＳ２７０，Ｓ２８０）。
【００５５】
タイマ１５から転送要求を受け付けた後、１回のデータ転送が終了するタイミングでデータ有効フラグ２１が初期値０から１にセットされる。割り込み許可レジスタ２３が割り込み許可（＝１）に設定されているので、データ有効フラグ２１が「１」にセットされると、ＤＭＡＣ２０からＣＰＵ１１に割り込み要求を行う。この後、ＣＰＵ１１はＤＭＡＣ２０から転送されたデータを、ＣＰＵバス１を介して所定のタイミングで内蔵ＲＡＭ１０からリードする（ステップＳ２９０）。
【００５６】
このように、ＤＭＡＣ２０が内蔵ＲＡＭ１０にタイマ１５のデータを転送することによって、ＣＰＵ１１はＩＯバス２にアクセスする代わりに内蔵ＲＡＭ１０の所定のアドレスを参照すれば内蔵ＲＡＭ１０上にコピーされたＩＯバス２（タイマ１５）の最新値を読み出すことが可能となる。したがって、ＣＰＵ１１による１回のリード動作あたりで削減できるサイクル数は「（ＣＰＵ１１がＩＯバス２にアクセスするサイクル数）−（ＣＰＵ１１が内蔵ＲＡＭ１０にアクセスするサイクル数）」となる。
【００５７】
例えば、（ＣＰＵ１１がＩＯバス２にアクセスするサイクル数）が８サイクルの場合、（ＣＰＵ１１が内蔵ＲＡＭ１０にアクセスするサイクル数）は１サイクルであるため、ＣＰＵ１１による１回のリード動作あたりで削減できるサイクル数は「（８サイクル）−（１サイクル）＝（７サイクル）」となる。そして、この削減されるサイクル数はＣＰＵ１１の処理性能の向上に寄与する。
【００５８】
ここで、この実施の形態１におけるＤＭＡＣ２０と従来用いられていたＤＭＡＣの差異を明確にするため、ＭＣＵ１００をＤＭＡＣ２０で構成した場合と従来用いられていたＤＭＡＣで構成した場合の違いについて説明する。まず、従来のＤＭＡＣの構成について説明する。
【００５９】
図５は、従来のＤＭＡＣの構成の一例を示すブロック図である。ＤＭＡＣ１２０は、チャネル０に対応するチャネルＤ０、チャネル１に対応するＤ１、共通制御部１３０、チャネルＤ０，Ｄ１と共通制御部１３０を接続するバスインタフェース部１４０からなる。
【００６０】
各チャネルＤ０，Ｄ１は、転送先アドレスレジスタ（ＤＡＲ（destination address register））１２１、転送元アドレスレジスタ（ＳＡＲ（source address register））１２２、転送カウントレジスタ（ＴＣＲ（transport count register））１２３、チャネル制御レジスタ（ＣＨＣＲ（Channel Control register））１２５、転送制御部（転送要求部）１２４、セレクタ１２６を有している。
【００６１】
転送先アドレスレジスタ１２１は転送先のアドレスを保持するアドレスレジスタであり、転送元アドレスレジスタ１２２は転送元のアドレスを保持するアドレスレジスタである。転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２は、チャネル制御レジスタ１２５に指定されたアドレスレジスタの増減に従って、１回の転送が実行されるたびにレジスタの値を更新する機能を備えている。
【００６２】
転送カウントレジスタ１２３は、転送処理の回数をカウントする。転送カウントレジスタ１２３は、１回の転送要求に応じた処理を行なう毎にデクリメントされ、０にデクリメントされると転送要求の受付を禁止する状態となる。転送カウントレジスタ１２３は、転送要求の受付を禁止する状態となるとタイマ１５が転送要求を発生させても転送要求を受け付けない。ＤＭＡＣ１２０は、チャネル制御レジスタ１２５に割り当てられている割り込み許可ビットが割り込み許可（＝１）に設定された状態で転送カウントレジスタ１２３が０にデクリメントされると、転送カウントレジスタ１２３が０にデクリメントされるタイミングでＣＰＵ１１に割り込み要求を発生する。
【００６３】
チャネル制御レジスタ１２５は、ＤＭＡＣ２０のイネーブルレジスタ２２に相当するビットレジスタである。ここでのチャネル制御レジスタ１２５は、割り込み許可レジスタ２３に相当するビットに加えて、転送によるアドレスレジスタの増減の指定、転送終了における割り込みの生成のオン／オフの指定、転送サイズ、転送要因を指定するビットが割り当てられている。
【００６４】
セレクタ１２６は、チャネル制御レジスタ１２５で指定した転送要因を選択する。共通制御部１３０は、マスタイネーブルレジスタ３１に対応する機能に加え、オペレーションレジスタ１３１を備えている。オペレーションレジスタ１３１は、チャネルＤ０，Ｄ１間の優先度を（１）優先度固定、または（２）ラウンドロビン的な優先度の変更のいずれかに設定することを可能としている。
【００６５】
バスインタフェース部１４０は、ＤＭＡＣ２０のバスインタフェース部４０と同様の機能を備えている。従来のＤＭＡＣ１２０の転送制御部１２４と本実施の形態１に係る転送制御部２４は、アドレス生成以外の処理は同様の処理を行なう。すなわち、従来のＤＭＡＣ１２０の転送制御部１２４は転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２に格納されたアドレスを生成するのに対し、本実施の形態１に係る転送制御部２４は予め設定された固定のアドレスを生成する。
【００６６】
つぎに、本実施の形態１に係るＤＭＡＣ２０の構成と従来のＤＭＡＣ１２０の構成の違いについて説明する。従来のＤＭＡＣ１２０においては、各チャネルＤ０，Ｄ１が転送要求を選択するセレクタ１２６、転送先アドレスを記憶する転送先アドレスレジスタ１２１、転送元アドレスを記憶する転送元アドレスレジスタ１２２、これらのセレクタ１２６、転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２を制御する転送制御部１２４内の回路等のハードウェアが必要であったが、本実施の形態１に係るＤＭＡＣ２０においてはこれらのハードウェアが不要となる。また、本実施の形態１に係るＤＭＡＣ２０においては従来のＤＭＡＣ１２０のチャネル制御レジスタ１２５に設定する転送サイズ等の属性をチャネル毎に予め固定に設定することができるため、ＤＭＡＣ２０はこの設定を行なうためのハードウェア規模をＤＭＡＣ１２０よりも削減することが可能となる。
【００６７】
また、本実施の形態１に係るＤＭＡＣ２０は、転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２を備えていないため、ＤＭＡＣ２０のユーザが不正なアドレスを設定した場合に必要なエラー検出回路が不要となる。本実施の形態１に係るＤＭＡＣ２０は、これらのハードウェアを削減することが可能となるため、ＤＭＡＣ２０はＤＭＡＣ１２０よりも１チャネルあたりのハードウェア規模を縮小（例えば約１０分の１）することが可能となる。
【００６８】
つぎに、本実施の形態１に係るＤＭＡＣ２０の動作処理手順と従来のＤＭＡＣ１２０の動作処理手順の違いについて説明する。図６は、従来のＤＭＡＣの動作処理手順を示すフローチャートである。
【００６９】
ＤＭＡＣ１２０の各チャネルＤ０，Ｄ１に共通した初期設定として、オペレーションレジスタ１３１の設定を行なう（ステップＳ３１０）。つぎに、チャネルＤ０，Ｄ１毎の初期設定として、転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２、転送カウントレジスタ１２３、チャネル制御レジスタ１２５の設定を行なう（ステップＳ３２０）。そして、ＭＣＵ１００において任意のソフトウェア処理を開始する（ステップＳ３３０）。ＤＭＡＣ１２０においては転送回数を有限回にしか設定できない。このため、ＣＰＵ１１は任意のソフトウェア処理の途中で転送カウントレジスタ１２３の転送カウントが「０」になることを共通制御部１３０からＣＰＵ１１への割り込みによって検出する（ステップＳ３４０）。
【００７０】
割り込みが検出されると、ハードウェアによって割り込み処理ルーチンに分岐する。割り込み処理ルーチンに分岐すると、ＣＰＵ１１のレジスタを退避し（ステップＳ３５０）、チャネルＤ０，Ｄ１の各レジスタ（転送先アドレスレジスタ１２１、転送元アドレスレジスタ１２２、転送カウントレジスタ１２３、チャネル制御レジスタ１２５）を再設定する（ステップＳ３６０）。この後、ＣＰＵ１１のレジスタを復帰させ（ステップＳ３７０）、任意のソフトウェア処理を再開する（ステップＳ３８０）。ＣＰＵ１１によって任意のソフトウェア処理が終了するまでステップＳ３３０〜ステップＳ３８０の処理が繰り返される（ステップＳ３９０）。
【００７１】
このように、従来のＤＭＡＣ１２０においては、ステップＳ３６０の処理において少なくとも転送カウントレジスタ１２３を再設定する必要があるため、ＣＰＵ１１がＩＯバス２にアクセスするサイクル数（サイクル数８）に加えて転送時にアクセスする転送カウントレジスタの値を再設定するサイクルが必要となる。また、ステップＳ３５０、ステップＳ３７０の処理においても夫々１０サイクル程度の実行サイクルが必要となる。すなわち、本実施の形態１に係るＤＭＡＣ２０は、従来のＤＭＡＣ１２０の動作処理と比べてソフトウェアによる処理ステップ数が少なくなり、実行サイクル数が少なくなる。
【００７２】
なお、本実施の形態１においては、ＭＣＵ１００の実装上の工夫として図３に示すように転送先のアドレス（転送領域相対アドレス）を連続する領域にマッピングする構成としている。ここで、例えばタイマ１５からのデータ（ＩＣ０）、データ（ＩＣ１）が内蔵ＲＡＭ１０の不連続なアドレスにマッピングされ、ＣＰＵ１１がデータ（ＩＣ０）の読み出し、データ（ＩＣ１）の読み出しを処理するソフトウェアを実行する場合について説明する。この場合、転送先のアドレスを連続する領域にマッピングしなければ、（ＩＣ０）の読み出し後、（ＩＣ１）の読み出しのためのアドレス設定する命令が必要になるとともに、読み出し命令を２回行なう必要がある。
【００７３】
一方、本実施の形態１においては、転送先のアドレスを連続する領域にマッピングする構成としているので、データ（ＩＣ０）とデータ（ＩＣ１）の値は、写像領域上の相対アドレス（転送領域相対アドレス）０，２に転送される。このため、ＣＰＵ１１は４バイト（３２ビット）を１回の読み出し命令で行なうことが可能となる。したがって、ＤＭＡＣ２０を有するＭＣＵ１００は、従来のＤＭＡＣ１２０を有するＭＣＵ１００よりもＣＰＵ１１の実行する命令ステップ数を削減することが可能となる。
【００７４】
なお、本実施の形態１においては、データ転送の対象をタイマ１５としたが、ＩＯバス２を介して読み出し可能な周辺モジュールであればタイマ１５以外の周辺モジュールをデータ転送の対象としてもよい。また、ＤＭＡＣ２０を備えるＭＣＵ１００は、本実施の形態１で説明した階層よりも深い階層のバス構成を有するハードウェア構成であってもよい。
【００７５】
なお、本実施の形態１においては、ＤＭＡＣ２０を備えるＭＣＵ１００を１チップで構成する場合について説明したが、ＭＣＵ１００を１チップで構成する場合に限られずＭＣＵ１００を複数のチップで構成してもよい。例えば、ＤＭＡＣ２０を１つのチップで構成し、ＤＭＡＣ以外のＭＣＵ１００の構成要素とＤＭＡＣ２０を接続してもよい。この場合も、ＤＭＡＣ２０はＩＯバス２に接続する。
【００７６】
このように、実施の形態１によれば、タイマ１５等の周辺モジュールの内容が変更された際に、変更された周辺モジュールの内容に関する情報（ＩＣ０、ＩＣ１）がＤＭＡＣ２０によって内蔵ＲＡＭ１０に転送されるのでＣＰＵ１１は高速動作が可能なＣＰＵバス１上の内蔵ＲＡＭ１０の一部を周辺モジュールの写像領域（エイリアス）として利用することができるとともに、少ないサイクル数で仮想的に周辺モジュールの読み出しを行なうことが可能となる。
【００７７】
また、ＭＣＵ１００がＤＭＡＣ２０を備えるので、ＤＭＡＣ２０の初期設定、ＤＭＡＣ２０の再設定をソフトウェアによる少ないステップ数の処理で行なうことが可能となり、ＣＰＵ１１の負荷を軽減できるとともに、従来のＤＭＡＣよりもハードウェアの規模（サイズ）を小さく構成することが可能となる。
【００７８】
また、転送回数のカウンタを再設定する必要がないので、転送回数の再設定処理を行なう際のＣＰＵ１１の負荷がなくなる。また、ＤＭＡＣ２０は、転送回数のカウンタを備える必要がないため、ＤＭＡＣ２０のハードウェアを小さく構成することが可能となる。
【００７９】
また、ＤＭＡＣ２０がデータ有効フラグ２１を備えているので、ソフトウェアからはデータ有効フラグ２１を確認することによって、写像領域を参照した場合に有効なデータが格納されているか否かを認識することが可能となる。したがって、ソフトウェアによって写像領域を誤って読み出さないための手段を提供することができる。
【００８０】
また、ＭＣＵ１００のユーザへは、ＤＭＡＣ２０からＣＰＵ１１への割り込み要求によっても、データ転送先の内蔵ＲＡＭ１０に有効なデータが格納されているか否かを通知することが可能となる。これにより、データ有効フラグ２１とは異なる手段によって、ソフトウェアは写像領域のデータが有効であるか否かを認識することが可能となる。したがって、ソフトウェアが柔軟に動作可能なソフトウェアインタフェースを提供できる。
【００８１】
また、ＤＭＡＣ２０が写像領域指定レジスタ３２を備えるので、内蔵ＲＡＭ１０上でＤＭＡＣ２０がデータ転送に利用する領域を設定することが可能となる。これにより、同じＣＰＵ１１で時分割して動作するソフトウェア同士で内蔵ＲＡＭ１０の利用が競合しないよう管理、制御することが容易になる。したがって、ソフトウェア開発における自由度と移植性が高まる。
【００８２】
また、データ転送先のアドレスを内蔵ＲＡＭ１０上の連続した領域としているので、周辺モジュール側の設定を変更することなく、ユーザに使いやすいソフトウェアインタフェースを提供することが可能となる。
【００８３】
実施の形態２．
つぎに、図７〜図１１を用いてこの発明の実施の形態２について説明する。実施の形態２では、データ転送する回数をカウントしながら内蔵ＲＡＭ１０と周辺モジュールの間のデータ転送を行なう。
【００８４】
図７は実施の形態２に係るＭＣＵの構成を示す図であり、図８は実施の形態２に係るＤＭＡＣの構成を示す図である。図７および図８の各構成要素のうち図１に示す実施の形態１のＭＣＵ１００、ＤＭＡＣ２０と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００８５】
本実施の形態２においては、ＭＣＵ１００のＩＯバス２に、ＢＳＣ１４、タイマ１５、ＤＭＡＣ２０とともに非同期送受信装置（以下、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）６０という）が接続されている。ここでは、ＵＡＲＴ６０が特許請求の範囲に記載の周辺モジュールおよび転送要求モジュールに対応する。
【００８６】
本実施の形態２においては、ＤＭＡＣ２０が４チャネルで構成される場合について説明する。ＤＭＡＣ２０は、チャネルＣ０〜チャネルＣ３、共通制御部３０、バスインタフェース部４０からなる。なお、チャネルＣ０，Ｃ１は実施の形態１と同様の機能を有しており、図８においてその記載を省略している。
【００８７】
チャネルＣ２はチャネル２に対応し、チャネルＣ３はチャネル３に対応する。共通制御部３０は、チャネルＣ０〜Ｃ３に共通する動作を制御する。バスインタフェース部４０は、チャネルＣ０〜Ｃ３と共通制御部３０を接続する。
【００８８】
チャネルＣ２，Ｃ３は、それぞれ転送終了フラグ２５、転送カウントレジスタ（ＴＣＲ）２６、写像領域アドレスレジスタ２７、割り込み許可レジスタ２３、転送制御部２４を備えている。本実施の形態２においては、チャネルＣ２がＵＡＲＴ６０の後述するＲＤＲ６４から転送要求を受け付け、チャネルＣ３がＵＡＲＴ６０の後述するＴＤＲ６５から転送要求を受け付ける。ここでは、ＲＤＲ６４とＴＤＲ６５が特許請求の範囲に記載の転送要求部に対応する。
【００８９】
転送カウントレジスタ２６は、転送回数を指定する例えば５ビットのレジスタである。
転送カウントレジスタ２６において、例えば「０」〜「１６」を設定可能とし、「１７」〜「３１」を設定禁止とする。転送カウントレジスタ２６は、１回の転送要求に応じて１データの転送を行なうたびにデクリメントされ、「０」になると以降の転送要求を受け付けず転送処理を終了する。すなわち、転送カウントレジスタ２６は例えば最大１６回までの転送を、ＣＰＵ１１からの再設定をすることなく行なうことができる。
【００９０】
また、チャネルＣ２，Ｃ３は、チャネルＣ０，Ｃ１が備えていたイネーブルレジスタ２２を有しておらず、転送カウントレジスタ２６に「０」以外の値を指定することによって転送を許可する。
【００９１】
写像領域アドレスレジスタ２７は、例えば４ビットのレジスタである。写像領域アドレスレジスタ２７は、次に転送要求があった際に転送する写像領域のアドレスを、写像領域相対アドレスの先頭からの相対アドレスとして保持する。写像領域アドレスレジスタ２７は、１データの転送を行なうたびに１ずつインクリメントされる。写像領域アドレスレジスタ２７は、転送カウントレジスタ２６に「０」以外の値を書き込んで転送を設定した際に、０にリセットされる。
【００９２】
転送終了フラグ２５は、データ転送が終了したか否かを示すフラグである。ＤＭＡＣ２０は、転送カウントレジスタ２６が０にデクリメントされるタイミングで転送終了フラグ２５を初期値「０」から「１」にセットする。
【００９３】
割り込み許可レジスタ２３は、ＣＰＵ１１への割り込み要求を許可するか否かを示すレジスタである。割り込み許可レジスタ２３が割り込み許可（＝１）に設定された状態で、データ有効フラグ２１が「１」にセットされると、転送終了フラグ２５が「１」にセットされるタイミングでＤＭＡＣ２０からＣＰＵ１１に割り込み要求を行う。一方、割り込み許可レジスタ２３が割り込み不許可（＝０）に設定された状態では、転送終了フラグ２５が「１」にセットされてもＤＭＡＣ２０からＣＰＵ１１への割り込み要求を行わない。
【００９４】
ソフトウェア処理によって転送の終了を検出するには、転送終了フラグ２５をポーリングするか、又は割り込み許可レジスタ２３を「１」に設定することによってＤＭＡＣ２０からＣＰＵ１１への割り込みを行なう。
【００９５】
ＵＡＲＴ６０は、シリアル通信を行うためのデバイスであり、データの送信時はパラレル信号をシリアル信号に変換し、データの受信時はシリアル信号をパラレル信号に変換する。
【００９６】
図９は、ＵＡＲＴのチャネルの構成を示すブロック図である。ＵＡＲＴ６０の各チャネルはボーレート制御部６１、バスインタフェース部６２、送受信制御部６３からなる。バスインタフェース部６２は、ボーレート制御部６１、送受信制御部６３を接続する。バスインタフェース部６２は、ＩＯバス２に接続されている。
【００９７】
ボーレート制御部６１は、変復調の速度を制御する。送受信制御部６３は、受信データレジスタ（以下、ＲＤＲ（receive data register）６４という）、送信データレジスタ（以下、ＴＤＲ（transmit data register）６５という）、ステートレジスタ６６を備える。
【００９８】
ＭＣＵ１００の特定の端子から入力される受信データがＲＤＲ６４によって受信され、ＲＤＲ６４の値が更新されると、ＵＡＲＴ６０は「受信データフル」の状態となる。ＭＣＵ１００の特定の端子へＴＤＲ６５のデータが送信されると、ＵＡＲＴ６０は「送信データエンプティ」の状態となる。
【００９９】
これらの事象に同期して、ＤＭＡＣ２０へデータの転送要求やＣＰＵ１１への割り込み通知が行なわれる。すなわち、ＲＤＲ６４は「受信データフル」の状態になるとＤＭＡＣ２０のチャネルＣ２へデータの転送要求（Ｒｘ０）を送信し、ＴＤＲ６５は「送信データエンプティ」の状態になるとＤＭＡＣ２０のチャネルＣ３へデータの転送要求（Ｔｘ０）を送信する。これにより、ＤＭＡＣ２０がＵＡＲＴ６０と内蔵ＲＡＭ１０の間のデータ転送を行なう。
【０１００】
ステートレジスタ６６は、ＲＤＲ６４、ＴＤＲ６５の空き状態に関する情報を格納する。ＲＤＲ６４、ＴＤＲ６５、ステートレジスタ６６、ボーレート制御部６１に含まれる種々のレジスタ（図示せず）が格納する値は、ＣＰＵ１１やＤＭＡＣ２０からバスインタフェース部６２、ＩＯバス２を介して読み出すことが可能な構成となっている。
【０１０１】
ＴＤＲ６５が「送信データエンプティ」の状態でない場合に、ＴＤＲ６５に書き込みを行なうと、ＴＤＲ６５のデータが上書きされる。一方、ＲＤＲ６４が「受信データフル」の状態でない場合に、ＲＤＲ６４からデータの読み出しを行なうと無効なデータの読み出しを行なうこととなる。すなわち、これらの状態でのデータの書き込み、読み出しは無効な動作となる。
【０１０２】
したがって、ＣＰＵ１１によるソフトウェア処理によってＴＤＲ６５／ＲＤＲ６４に正しくアクセスするためには、送信データエンプティ／受信データフルの事象で起動される割り込みハンドラによってＴＤＲ６５／ＲＤＲ６４にアクセスする。または、ステートレジスタ６６が格納する値を読み出して、ＴＤＲ６５への書き込みやＲＤＲ６４からの読み出しが有効な状態であるか否かを判断した後、有効な状態であると判断された場合にＣＰＵ１１によるソフトウェア処理によってＴＤＲ６５／ＲＤＲ６４へのアクセスを行なう。
【０１０３】
図１０は、実施の形態２に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。ここでは、ＤＭＡＣ２０のチャネルＣ２が、転送要求元（ＵＡＲＴ６０のチャネル０）の事象（受信データフル（Ｒｘ０））によって、ＲＤＲ６４にアクセスし、ＲＤＲ６４からデータを読み出して内蔵ＲＡＭ１０へデータ転送する場合（「ＲＥＧ→ＲＡＭ」）を示している。また、ＤＭＡＣ２０のチャネルＣ２は、転送領域相対アドレス「０ｘ１０」番地から「０ｘ１Ｆ」番地までの１６バイト（転送データ８ｂｉｔ（１ｂｙｔｅ）の１６個分）の領域をチャネルＣ２用の写像領域として占有する場合を示している。
【０１０４】
また、ＤＭＡＣ２０のチャネルＣ３が、転送要求元（ＵＡＲＴ６０のチャネル０）の事象（送信データエンプティ（Ｔｘ０））によって、ＴＤＲ６５にアクセスし、内蔵ＲＡＭ１０の内容を読み出してＩＯバス２上のレジスタ（ＴＤＲ６５）に転送する（ＲＡＭ→ＲＥＧ）場合を示している。また、ＤＭＡＣ２０のチャネルＣ３は、転送領域相対アドレス「０ｘ２０」番地から「０ｘ２Ｆ」番地までの１６バイト（転送データ８ｂｉｔの１６個分）の領域をチャネルＣ３用の写像領域として占有する場合を示している。
【０１０５】
また、ＤＭＡＣ２０のチャネルＣ２，Ｃ３は、転送のたびに１バイト（１データ分）だけデータを格納する内蔵ＲＡＭ１０のアドレスが増加し（「ＲＡＭ：増加」）、周辺モジュール（ＵＡＲＴ６０）のレジスタ（ＲＤＲ６４）は同じアドレスが転送対象（ＲＥＧ：固定）である場合を示している。
【０１０６】
つぎに、ＤＭＡＣ２０の動作処理手順について説明する。図１１−１は、実施の形態２に係るＤＭＡＣ２０の動作処理手順を示すフローチャートである。ＤＭＡＣ２０の各チャネルＣ０〜Ｃ３に共通した初期設定として、写像領域指定レジスタ３２の設定、マスタイネーブルレジスタ３１の設定を行なう（ステップＳ４１０）。写像領域指定レジスタ３２としては、例えば「００１００」を設定し、マスタイネーブルレジスタ３１としては、例えば転送許可（＝１）を設定する。
【０１０７】
つぎに、例えば頻繁に読み出すＩＯリソースに対するＤＭＡＣ２０の各チャネルＣ２，Ｃ３の初期設定として、チャネル毎に転送カウントレジスタ２６の設定を行なう（ステップＳ４２０）。例えば、チャネルＣ２の割り込み許可レジスタ２３としては転送許可（＝１）を設定し、転送カウントレジスタ２６としては「１６」を設定する。
【０１０８】
ＣＰＵ１１は、任意のソフトウェア処理を実行する（ステップＳ４３０）。この間、ＤＭＡＣ２０は周辺モジュールと内蔵ＲＡＭ１０との間のデータ転送を行なう。ＤＭＡＣ２０においては転送回数を有限回にしか設定できない。このため、ＣＰＵ１１は任意のソフトウェア処理の途中で転送カウントレジスタ２６の転送カウントが「０」になることを共通制御部１３０からＣＰＵ１１への割り込みによって検出する（ステップＳ４４０）。
【０１０９】
この後、ＤＭＡＣ２０は図６で説明した従来のＤＭＡＣ１２０と同様の処理を行なう。すなわち、ここでのステップＳ４５０〜Ｓ４９０の処理が図６のステップＳ３５０〜Ｓ３９０の処理に対応する。なお、本実施の形態２に係るＤＭＡＣ２０はステップＳ４６０の処理において、転送先アドレスレジスタ１２１または転送元アドレスレジスタ１２２を設定する必要はなく、転送カウントレジスタ１２３の設定のみを行なえばよい。
【０１１０】
ここで、周辺モジュールと内蔵ＲＡＭ１０との間のデータ転送の処理手順について説明する。図１１−２および図１１−３は、実施の形態２に係るＭＣＵ内のデータ転送の処理手順を示すフローチャートである。図１１−２では、ＵＡＲＴ６０からの転送要求（Ｒｘ０）に応じてＵＡＲＴ６０のデータを内蔵ＲＡＭ１０に転送する場合について説明し、図１１−３では、ＵＡＲＴ６０からの転送要求（Ｔｘ０）に応じて内蔵ＲＡＭ１０のデータをＵＡＲＴ６０に転送する場合について説明する。
【０１１１】
ＭＣＵ１００の特定の端子からＵＡＲＴ６０に受信データが入力されると、ＵＡＲＴ６０のチャネル０のＲＤＲ６４が「受信データフル（Ｒｘ０）」の状態となる（ステップＳ５１０）。ＲＤＲ６４は、ＤＭＡＣ２０に「受信データフル（Ｒｘ０）」に対応する転送要求（Ｒｘ０）を送信し、ＤＭＡＣ２０のチャネルＣ２がこの転送要求（Ｒｘ０）をＩＯバス２を介して受信する（ステップＳ５２０）。
【０１１２】
ＤＭＡＣ２０のチャネルＣ２は、転送カウントレジスタ２６の値を確認する（ステップＳ５３０）。転送カウントレジスタ２６の値が「０」でなければ（ステップＳ５３０、Ｎｏ）、ＲＤＲ６４のデータをリードし（ステップＳ５４０）、共通制御部３０が内蔵ＲＡＭ１０にデータをライトする（ステップＳ５５０）。
【０１１３】
写像領域アドレスレジスタ２７は、１データの転送を行なうたびに１ずつインクリメントされる。写像領域アドレスレジスタ２７は、次に転送要求があった際に転送する写像領域のアドレスを、写像領域相対アドレスの先頭からの相対アドレスとして保持する（ステップＳ５６０）。
【０１１４】
転送カウントレジスタ２６は、データの転送を行なうたびに「１」デクリメントされ（ステップＳ５７０）、「０」になると以降の転送要求を受け付けず転送処理を終了する。すなわち、転送カウントレジスタ２６の値が「０」になるまで、転送要求（Ｒｘ０）がＤＭＡＣ２０に送信されるとＲＤＲ６４からのデータをリードし、共通制御部３０が写像領域アドレスレジスタ２７の値に基づいて内蔵ＲＡＭ１０にデータをライトする処理が繰り返される（ステップＳ５１０〜Ｓ５７０）。
【０１１５】
転送カウントレジスタ２６の値が「０」になると（ステップＳ５３０、Ｙｅｓ）、転送終了フラグ２５が「０」から「１」にセットされる（ステップＳ５８０）。この後、ＣＰＵ１１はＤＭＡＣ２０から転送されたデータを所定のタイミングでＣＰＵバス１を介して内蔵ＲＡＭ１０からリードする（ステップＳ５９０）。なお、写像領域アドレスレジスタ２７は、転送カウントレジスタ２６に「０」以外の値を書き込んで転送を設定した際に、「０」にリセットされる。
【０１１６】
また、ＣＰＵ１１においてＵＡＲＴ６０へ書き込むデータがある場合このデータを内蔵ＲＡＭ１０にライトする（ステップＳ６１０）。ＭＣＵ１００の特定の端子へＵＡＲＴ６０から送信データが出力されると、ＵＡＲＴ６０のチャネル０のＴＤＲ６５が「送信データエンプティ（Ｔｘ０）」の状態となる（ステップＳ６２０）。ＴＤＲ６５は、ＤＭＡＣ２０に「送信データエンプティ（Ｔｘ０）」に対応する転送要求（Ｔｘ０）を送信し、ＤＭＡＣ２０のチャネルＣ３がこの転送要求（Ｔｘ０）を受信する（ステップＳ６３０）。
【０１１７】
ＤＭＡＣ２０のチャネルＣ３は、転送カウントレジスタ２６の値を確認する（ステップＳ６４０）。転送カウントレジスタ２６の値が「０」でなければ（ステップＳ６４０、Ｎｏ）、内蔵ＲＡＭ１０のデータをリードし（ステップＳ６５０）、共通制御部３０がＵＡＲＴ６０のＴＤＲ６５にデータを送信する（ステップＳ６６０）。
【０１１８】
写像領域アドレスレジスタ２７は、１データの転送を行なうたびに１ずつインクリメントされる。写像領域アドレスレジスタ２７は、次に転送要求があった際にアクセスする写像領域のアドレスを、写像領域相対アドレスの先頭からの相対アドレスとして保持する（ステップＳ６７０）。
【０１１９】
転送カウントレジスタ２６は、データの転送を行なうたびに「１」デクリメントされ（ステップＳ６８０）、「０」になると以降の転送要求を受け付けず転送処理を終了する。すなわち、転送カウントレジスタ２６の値が「０」になるまで、転送要求（Ｔｘ０）がＤＭＡＣ２０に送信されると共通制御部３０が写像領域アドレスレジスタ２７の値に基づいて内蔵ＲＡＭ１０からのデータをリードし、ＵＡＲＴ６０にデータを送信する処理が繰り返される（ステップＳ６１０〜Ｓ６８０）。
【０１２０】
転送カウントレジスタ２６の値が「０」になると（ステップＳ６４０、Ｙｅｓ）、転送終了フラグ２５が「０」から「１」にセットされる（ステップＳ６９０）。なお、写像領域アドレスレジスタ２７は、転送カウントレジスタ２６に「０」以外の値を書き込んで転送を設定した際に、「０」にリセットされる。
【０１２１】
このように、ＣＰＵ１１は任意のソフトウェア処理の途中で周辺モジュール（ＵＡＲＴ６０）に直接アクセスする代わりに、周辺モジュールに書き込むデータを内蔵ＲＡＭ１０に設定することや、ＤＭＡＣ２０が周辺モジュールから読み出して内蔵ＲＡＭ１０に転送されたデータを内蔵ＲＡＭ１０上で参照することが可能となる。
【０１２２】
ここで、この実施の形態２におけるＤＭＡＣ２０と従来用いられていたＤＭＡＣの差異を明確にするため、ＭＣＵ１００を実施の形態２に係るＤＭＡＣ２０で構成した場合と従来用いられていたＤＭＡＣで構成した場合の違いについて説明する。
【０１２３】
従来のＤＭＡＣ１２０は、ステップＳ２６０の処理において、転送カウントレジスタ１２３の設定に加えて、転送先アドレスレジスタ１２１または転送元アドレスレジスタ１２２を設定するサブステップが必要となる。一方、本実施の形態２に係るＤＭＡＣ２０は、ＤＭＡＣ１２０のステップＳ２６０に対応するステップＳ３６０の処理において、転送カウントレジスタ２６の設定を行なえばよい。したがって、実施の形態２におけるＤＭＡＣ２０の処理は、従来のＤＭＡＣ１２０と比べて転送先アドレスレジスタ１２１または転送元アドレスレジスタ１２２を設定するサブステップの分だけ少ないステップ数によってデータ転送が可能となる。また、従来のＤＭＡＣ１２０と比べて実施の形態２に係るＤＭＡＣ２０は、ＤＭＡＣ１２０よりも１チャネルあたりのハードウェア規模を縮小することが可能となる。
【０１２４】
このように、実施の形態２によれば、ＣＰＵ１１がＵＡＲＴ６０等の周辺モジュールに書き込む複数のデータを予め内蔵ＲＡＭ１０に設定した後、ＤＭＡＣ２０が内蔵ＲＡＭ１０のデータを周辺モジュールに書き込むので、ＣＰＵ１１から周辺モジュールへの書き込み動作を仮想的に高速化することが可能となる。
【０１２５】
また、周辺モジュールから読み出された複数のデータを、ＤＭＡＣ２０が内蔵ＲＡＭ１０に転送することによって、ＣＰＵ１１による周辺モジュールからのデータの読み出しを仮想的に高速化することが可能となる。
【０１２６】
また、ＤＭＡＣ２０の初期設定（起動）、ＤＭＡＣ２０の再設定の際に、転送先アドレスレジスタ１２１または転送元アドレスレジスタ１２２を設定することなくデータ転送を行なうことが可能となるので、少ないステップ数によってデータ転送が可能となる。
【０１２７】
また、転送カウントレジスタ２６の設定によって、データの転送許可と内蔵ＲＡＭ１０のアドレスのリセットを兼ねたソフトウェアインタフェースを提供できるため、少ない処理ステップ数で転送処理の再開を行なうことが可能となり、ＣＰＵ１１の負荷を軽減することが可能となる。
【０１２８】
実施の形態３．
つぎに、図１２〜図１７−２を用いてこの発明の実施の形態３について説明する。実施の形態３では、データ転送する回数をカウントしながら内蔵ＲＡＭ１０と周辺モジュールの間のデータ転送を行なうとともに、転送カウントレジスタ２６の値が「０」になると転送カウントレジスタ２６の値を再設定する。
【０１２９】
図１２は実施の形態３に係るＭＣＵの構成を示す図であり、図１３は実施の形態３に係るＤＭＡＣの構成を示す図である。図１２および図１３の各構成要素のうち図１および図７に示す実施の形態１，２のＭＣＵ１００、図１および図８に示す実施の形態１，２のＤＭＡＣ２０と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【０１３０】
本実施の形態３においては、ＭＣＵ１００のＩＯバス２に、ＢＳＣ１４、タイマ１５、ＤＭＡＣ２０、ＵＡＲＴ６０とともにＩ／Ｏポート（以下、ＰＯＲＴ７０という）が接続されている。ここでは、ＰＯＲＴ７０が特許請求の範囲に記載の周辺モジュールに対応し、タイマ１５が転送要求モジュールに対応する。
【０１３１】
本実施の形態３においては、ＤＭＡＣ２０が６チャネルで構成される場合について説明する。ＤＭＡＣ２０は、チャネルＣ０〜チャネルＣ５、共通制御部３０、バスインタフェース部４０からなる。なお、チャネルＣ０，Ｃ１は実施の形態１と同様の機能を有するとともにチャネルＣ２，Ｃ３は実施の形態２と同様の機能を有するため、図８においてその記載を省略している。
【０１３２】
チャネルＣ４はチャネル４に対応し、チャネルＣ５はチャネル５に対応する。共通制御部３０は、チャネルＣ０〜Ｃ５に共通する動作を制御する。バスインタフェース部４０は、チャネルＣ０〜Ｃ５と共通制御部３０を接続する。
【０１３３】
チャネルＣ４，Ｃ５は、イネーブルレジスタ２２、転送カウントレジスタ（ＴＣＲ）２６、写像領域アドレスレジスタ２７、ループレジスタ（転送回数指定レジスタ）２８、転送制御部２４を備えている。本実施の形態３においては、チャネルＣ４がタイマ１５のチャネル１から転送要求を受け付け、チャネルＣ５がタイマ１５のチャネル２から転送要求を受け付ける。
【０１３４】
ループレジスタ２８は、転送処理のループ制御を指定する例えば５ｂｉｔのレジスタである。ループレジスタ２８は、例えば「０」〜「１６」を設定可能とし、「１７」〜「３１」を設定禁止とする。
【０１３５】
転送カウントレジスタ２６には、イネーブルレジスタ２２が「０」（転送禁止）から「１」（転送許可）に設定されると、ループレジスタ２８の値がコピーされる。転送カウントレジスタ２６は、１回の転送要求に応じて１データの転送を行なうたびにデクリメントされ、「０」になると再びループレジスタ２８の値がコピーされる。これにより、ＤＭＡＣ２０の転送処理が続行する。すなわち、ＣＰＵ１１がＤＭＡＣ２０へ再設定を行なうことなく、ＤＭＡＣ２０による無限回のＤＭＡ転送を行なうことが可能となる。ここでの写像領域アドレスレジスタ２７は、転送カウントレジスタ２６が「０」にデクリメントされると、「０」にデクリメントされるタイミングで「０」にリセットされる。
【０１３６】
図１４は、ＰＯＲＴの構成を示すブロック図である。ＰＯＲＴは、例えば８ｂｉｔのポートレジスタ７１Ａ（ＰＤＲ（Port data register）０）、ポートレジスタ７１Ｂ（ＰＤＲ１）、バスインタフェース部７２からなる。バスインタフェース部７２は、ポートレジスタ７１Ａとポートレジスタ７１Ｂを接続するとともにＩＯバス２と接続されている。バスインタフェース部７２を介してポートレジスタ７１Ａに書き込まれたデータは例えば８ｂｉｔからなる所定の出力端子に出力される。また、この出力端子とは異なる例えば８ｂｉｔからなる所定の入力端子に入力されたデータはポートレジスタ７１Ｂに反映され、バスインタフェース部７２を介してＤＭＡＣ２０等から読み出すことができる。
【０１３７】
本実施の形態３においては、タイマ１５がチャネル０〜２を有している。なお、タイマ１５のチャネル１とチャネル２は、同様の構成を有するので、ここではタイマ１５のチャネル１を例にとって説明する。図１５は、実施の形態３に係るタイマの構成を示すブロック図である。図１５においては、タイマ１５の１つのチャネル（チャネル１）の構成のみを図示し、チャネル０，２の記載を省略している。タイマ１５のチャネル１は、例えば１６ビットのカウンタ５９、分周器５１、バスインタフェース部５５、リロードレジスタ５７、イネーブルレジスタ５８からなる。
【０１３８】
カウンタ５９は、分周器５１が生成した信号をカウントする。カウンタ５９は、制御レジスタ５４によってチャネル１がオンの状態に設定された場合に、分周器５１が分周する信号に同期してデクリメントされる。カウンタ５９は、カウンタ５９が「０」にデクリメントされるタイミング（カウンタアンダーフロー（ＵＦ１）の発生）で、ＤＭＡＣ２０に転送要求（ＵＦ（Under Flow）１）を通知する。カウンタ５９がＤＭＡＣ２０に転送要求（ＵＦ１）を通知すると、このタイミングでリロードレジスタ５７の値がカウンタ５９に読み込まれ、カウンタ５９のデクリメントが再開される。ここでのカウンタ５９が特許請求の範囲に記載の転送要求部に対応する。
【０１３９】
タイマ１５のチャネル２は、カウンタ５９が「０」にデクリメントされるタイミング（カウンタアンダーフロー（ＵＦ２）の発生）で、ＤＭＡＣ２０に転送要求（ＵＦ２）を通知する。
【０１４０】
リロードレジスタ５７は、カウンタ５９がＤＭＡＣ２０に転送要求（ＵＦ１）、転送要求（ＵＦ２）を通知した際に、カウンタ５９にカウントする値を提供するレジスタである。イネーブルレジスタ５８は、リロードレジスタ５７の値をカウンタ５９にコピーするか否かを指定するレジスタである。
【０１４１】
つぎに、ＤＭＡＣ２０と周辺モジュールの関係を説明する。図１６は、実施の形態３に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。ここでは、ＤＭＡＣ２０のチャネルＣ４が、転送要求元（タイマ１５のチャネル１）の事象（カウンタアンダーフロー（ＵＦ１））によって、ＰＯＲＴ７０のポートレジスタ７１Ａ（ＰＤＲ０）にアクセスし、内蔵ＲＡＭ１０から読み出したデータをＰＯＲＴ７０のポートレジスタ７１Ａへデータ転送する場合（「ＲＡＭ→ＲＥＧ」）を示している。また、ＤＭＡＣ２０のチャネルＣ４は、内蔵ＲＡＭ１０内の転送領域相対アドレス「０ｘ３０」番地から「０ｘ３Ｆ」番地までの１６バイト（転送データ８ｂｉｔ（１ｂｙｔｅ）の１６個分）の領域をチャネルＣ４用の写像領域として占有する場合を示している。
【０１４２】
また、ＤＭＡＣ２０のチャネルＣ５が、転送要求元（タイマ１５のチャネル２）の事象（カウンタアンダーフロー（ＵＦ２））によって、ＰＯＲＴ７０のポートレジスタ７１Ｂ（ＰＤＲ１）にアクセスし、ＰＯＲＴ７０のポートレジスタ７１Ｂの内容を読み出して内蔵ＲＡＭ１０に転送する（ＲＥＧ→ＲＡＭ）場合を示している。また、ＤＭＡＣ２０のチャネルＣ５は、内蔵ＲＡＭ１０内の転送領域相対アドレス「０ｘ４０」番地から「０ｘ４Ｆ」番地までの１６バイト（転送データ８ｂｉｔの１６個分）の領域をチャネルＣ５用の写像領域として占有する場合を示している。
【０１４３】
また、ＤＭＡＣ２０のチャネルＣ４，Ｃ５は、転送のたびに１バイト（１データ分）だけ内蔵ＲＡＭ１０のアドレスが増加し（「ＲＡＭ：増加」）、周辺モジュール（ＰＯＲＴ７０）のポートレジスタ７１Ａ，７１Ｂは同じアドレスが転送対象（ＲＥＧ：固定）である場合を示している。
【０１４４】
本実施の形態３に係るＤＭＡＣ２０は、図４に示す実施の形態２と同様の動作手順を行なうためその説明は省略する。なお、本実施の形態３に係るＤＭＡＣ２０においては、ＤＭＡＣ２０の各チャネルＣ４，Ｃ５の初期設定として、チャネル毎に割り込み許可レジスタ２３の設定の代わりに、ループレジスタ２８の設定を行なう（ステップＳ１２０）。例えば、ループレジスタ２８として「１６」を設定する。
【０１４５】
ここで、周辺モジュールから内蔵ＲＡＭ１０へのデータ転送の処理手順について説明する。図１７−１および図１７−２は、実施の形態３に係るＭＣＵ内のデータ転送の処理手順を示すフローチャートである。図１７−１では、タイマ１５のチャネル１からの転送要求（ＵＦ１）に応じて内蔵ＲＡＭ１０のデータをＰＯＲＴ７０に転送する場合について説明し、図１７−２では、タイマ１５のチャネル２からの転送要求（ＵＦ２）に応じて、ＰＯＲＴ７０のデータを内蔵ＲＡＭ１０に転送する場合について説明する。
【０１４６】
ＣＰＵ１１においてＰＯＲＴ７０へ書き込むデータがある場合、このデータを内蔵ＲＡＭ１０にライトする（ステップＳ７０５）。タイマ１５のチャネル１において、イネーブルレジスタ５８がチャネルオンの状態にセットされると、リロードレジスタ５７の値がカウンタ５９にコピーされる。タイマ１５のチャネル１のカウンタ５９が「０」にデクリメントされると（カウンタアンダーフロー（ＵＦ１）の発生）（ステップＳ７１０）、チャネル１のカウンタ５９はＤＭＡＣ２０のチャネルＣ４に転送要求（ＵＦ１）を通知する（ステップＳ７２０）。
【０１４７】
カウンタ５９がＤＭＡＣ２０に転送要求（ＵＦ１）を通知すると、このタイミングでリロードレジスタ５７の値がカウンタ５９に読み込まれ（ステップＳ７３０）、カウンタ５９のデクリメントが再開される。
【０１４８】
ＤＭＡＣ２０のチャネルＣ４は、転送カウントレジスタ２６の値を確認する（ステップＳ７４０）。転送カウントレジスタ２６の値が「０」でなければ（ステップＳ７４０、Ｎｏ）、写像領域アドレスレジスタ２７に基づいて内蔵ＲＡＭ１０のデータをリードし（ステップＳ７５０）、共通制御部３０がポートレジスタ７１Ａに内蔵ＲＡＭ１０のデータを送信（ライト）する（ステップＳ７６０）。
【０１４９】
写像領域アドレスレジスタ２７は、１データの転送を行なうたびに１ずつインクリメントされる。写像領域アドレスレジスタ２７は、次に転送要求があった際にアクセスする写像領域のアドレスを、写像領域相対アドレスの先頭からの相対アドレスとして保持する（ステップＳ７７０）。
【０１５０】
転送カウントレジスタ２６は、１回の転送要求に応じて１データの転送を行なうたびにデクリメントされる（ステップＳ７８０）。転送カウントレジスタ２６の値が「０」になるまで、転送要求（ＵＦ１）がＤＭＡＣ２０に送信されると内蔵ＲＡＭ１０のデータをリードし、共通制御部３０がポートレジスタ７１Ａにデータを送信する処理が繰り返される（ステップＳ７０５〜Ｓ７８０）。
【０１５１】
転送カウントレジスタ２６の値が「０」になると（ステップＳ７４０、Ｙｅｓ）、ループレジスタ２８の値が転送カウントレジスタ２６にコピーされる（ステップＳ７９０）。これにより、内蔵ＲＡＭ１０のデータをリードし、ポートレジスタ７１Ａにデータをライトする処理が繰り返される（ステップＳ７０５〜Ｓ７９０）。写像領域アドレスレジスタ２７は、転送カウントレジスタ２６が「０」にデクリメントされるタイミングで「０」にリセットされる。
【０１５２】
タイマ１５のチャネル２において、イネーブルレジスタ５８がチャネルオンの状態にセットされると、リロードレジスタ５７の値がカウンタ５９にコピーされる。タイマ１５のチャネル２のカウンタ５９が「０」にデクリメントされると（カウンタアンダーフロー（ＵＦ２）の発生）（ステップＳ８１０）、チャネル２のカウンタ５９はＤＭＡＣ２０のチャネルＣ５に転送要求（ＵＦ２）を通知する（ステップＳ８２０）。
【０１５３】
カウンタ５９がＤＭＡＣ２０に転送要求（ＵＦ２）を通知すると、このタイミングでリロードレジスタ５７の値がカウンタ５９に読み込まれ（ステップＳ８３０）、カウンタ５９のデクリメントが再開される。
【０１５４】
ＤＭＡＣ２０のチャネルＣ５は、転送カウントレジスタ２６の値を確認する（ステップＳ８４０）。転送カウントレジスタ２６の値が「０」でなければ（ステップＳ８４０、Ｎｏ）、ＰＯＲＴ７０のポートレジスタ７１Ｂのデータをリードし（ステップＳ８５０）、共通制御部３０が内蔵ＲＡＭ１０にポートレジスタ７１Ｂのデータをライトする（ステップＳ８６０）。
【０１５５】
写像領域アドレスレジスタ２７は、１データの転送を行なうたびに１ずつインクリメントされる。写像領域アドレスレジスタ２７は、次に転送要求があった際に転送する写像領域のアドレスを、写像領域相対アドレスの先頭からの相対アドレスとして保持する（ステップＳ８７０）。
【０１５６】
転送カウントレジスタ２６は、１回の転送要求に応じて１データの転送を行なうたびにデクリメントされる（ステップＳ８８０）。転送カウントレジスタ２６の値が「０」になるまで、転送要求（ＵＦ２）がＤＭＡＣ２０に送信されるとポートレジスタ７１Ｂのデータをリードし、共通制御部３０が内蔵ＲＡＭ１０にポートレジスタ７１Ａのデータをライトする処理が繰り返される（ステップＳ８１０〜Ｓ８８０）。
【０１５７】
転送カウントレジスタ２６の値が「０」になると（ステップＳ８４０、Ｙｅｓ）、ループレジスタ２８の値が転送カウントレジスタ２６にコピーされる（ステップＳ８９０）。これにより、ポートレジスタ７１Ｂのデータをリードし、内蔵ＲＡＭ１０にポートレジスタ７１Ａのデータをライトする処理が繰り返される（ステップＳ８１０〜Ｓ８９０）。写像領域アドレスレジスタ２７は、転送カウントレジスタ２６が「０」にデクリメントされるタイミングで「０」にリセットされる。この後、ＣＰＵ１１はＤＭＡＣ２０から転送されたデータを所定のタイミングでＣＰＵバス１を介して内蔵ＲＡＭ１０からリードする（ステップＳ９００）。
【０１５８】
実施の形態４．
つぎに、図１８を用いてこの発明の実施の形態４について説明する。実施の形態４では、ＤＭＡＣ２０が従来のＤＭＡＣ１２０が備える汎用的な機能を有したチャネルＤ０，Ｄ１をさらに備えている。
【０１５９】
図１８は、実施の形態４に係るＤＭＡＣの構成を示す図である。図１８の各構成要素のうち図１、図７および図１３に示す実施の形態１〜３のＤＭＡＣ２０と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【０１６０】
本実施の形態４においては、ＤＭＡＣ２０が８チャネルで構成される場合について説明する。ＤＭＡＣ２０は、チャネルＣ０〜チャネルＣ７、共通制御部３０、バスインタフェース部４０からなる。
【０１６１】
チャネルＣ６はチャネル６に対応し、チャネルＣ７はチャネル７に対応する。共通制御部３０は、チャネルＣ０〜Ｃ７に共通する動作を制御する。バスインタフェース部４０は、チャネルＣ０〜Ｃ７と共通制御部３０を接続する。
【０１６２】
チャネルＣ６，Ｃ７は、実施の形態１の図５で説明したＤＭＡＣ１２０が備えるチャネルＤ０，Ｄ１と同様の機能を有している。すなわち、本実施の形態４に係るＤＭＡＣ２０は、従来のＤＭＡＣ１２０が備える汎用的な機能を有したチャネルＣ６（Ｄ０），Ｃ７（Ｄ１）と、実施の形態１〜３で説明した用途に特化したチャネルＣ０〜Ｃ５を含んで構成されている。なお、ここでのチャネルＣ６，Ｃ７が特許請求の範囲に記載の判別転送チャネルに対応する。
【０１６３】
なお、本実施の形態４においては、バスインタフェース部４０がチャネルＣ０〜チャネルＣ７と共通制御部３０を接続することとしたが、チャネルＣ０〜Ｃ７と共通制御部３０の接続はこの接続に限られず、ＤＭＡＣ２０が複数のバスインタフェース部４０を備え、一方のバスインタフェース部４０がチャネルＣ０〜Ｃ５と共通制御部３０接続し、他方のバスインタフェース部４０がチャネルＣ６，Ｃ７と共通制御部３０を接続する構成としてもよい。
【０１６４】
このように実施の形態４によれば、ＤＭＡＣ２０をハイブリッドな構成にすることによって、用途に特化したチャネルＣ０〜Ｃ５によるＤＭＡ転送と、汎用的なチャネルＣ６，Ｃ７によるＤＭＡ転送とを用途に応じて使い分けることが可能となる。したがって、用途に特化してハードウェア規模を削減したチャネルＣ０〜Ｃ５と汎用的な動作の可能なチャネルＣ６，Ｃ７を組み合わせることによって、用途に応じた適切なハードウェア規模のＤＭＡＣ２０を得ることが可能となる。
【産業上の利用可能性】
【０１６５】
以上のように、本発明に係るＤＭＡコントローラは、バスのバンド幅が異なる複数のバス間でのＤＭＡ転送に適している。
【図面の簡単な説明】
【０１６６】
【図１】実施の形態１に係るＤＭＡＣを備えたＭＣＵの構成を示す図である。
【図２】実施の形態１に係るタイマの構成を示すブロック図である。
【図３】実施の形態１に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。
【図４−１】実施の形態１に係るＤＭＡＣ２０の動作処理手順を示すフローチャートである。
【図４−２】実施の形態１に係るＭＣＵ内のデータ転送の処理手順を示すフローチャートである。
【図５】従来のＤＭＡＣの構成の一例を示すブロック図である。
【図６】従来のＤＭＡＣの動作処理手順を示すフローチャートである。
【図７】実施の形態２に係るＭＣＵの構成を示す図である。
【図８】実施の形態２に係るＤＭＡＣの構成を示す図である。
【図９】ＵＡＲＴのチャネルの構成を示すブロック図である。
【図１０】実施の形態２に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。
【図１１−１】実施の形態２に係るＤＭＡＣ２０の動作処理手順を示すフローチャートである。
【図１１−２】実施の形態２に係るＭＣＵ内のデータ転送の処理手順を示すフローチャート（１）である。
【図１１−３】実施の形態２に係るＭＣＵ内のデータ転送の処理手順を示すフローチャート（２）である。
【図１２】実施の形態３に係るＭＣＵの構成を示す図である。
【図１３】実施の形態３に係るＤＭＡＣの構成を示す図である。
【図１４】ＰＯＲＴの構成を示すブロック図である。
【図１５】実施の形態３に係るタイマの構成を示すブロック図である。
【図１６】実施の形態３に係るＤＭＡＣのチャネルの機能と特徴を説明するための図である。
【図１７−１】実施の形態３に係るＭＣＵ内のデータ転送の処理手順を示すフローチャート（１）である。
【図１７−２】実施の形態３に係るＭＣＵ内のデータ転送の処理手順を示すフローチャート（２）である。
【図１８】実施の形態４に係るＤＭＡＣの構成を示す図である。
【符号の説明】
【０１６７】
１  ＣＰＵバス
２  ＩＯバス
１０  内蔵ＲＡＭ
１１  ＣＰＵ
１２  命令ＲＯＭ
１３  ブリッジ
１４  ＢＳＣ
１５  タイマ
２０、１２０  ＤＭＡＣ
２１  データ有効フラグ
２２  イネーブルレジスタ
２３  割り込み許可レジスタ
２４、１２４  転送制御部
２５  転送終了フラグ
２６、１２３  転送カウントレジスタ
２７  写像領域アドレスレジスタ
２８  ループレジスタ
３０、１３０  共通制御部
３１  マスタイネーブルレジスタ
３２  写像領域指定レジスタ
３３  バッファ
４０、５５、６２、７２、１４０  バスインタフェース部
５１  分周器
５２、５９  カウンタ
５３Ａ、５３Ｂ  キャプチャレジスタ
５４  制御レジスタ
５７  リロードレジスタ
５８  イネーブルレジスタ
６０  ＵＡＲＴ
６１  ボーレート制御部
６３  送受信制御部
６６  ステートレジスタ
７０  ＰＯＲＴ
７１Ａ、７１Ｂ  ポートレジスタ
１００  ＭＣＵ
１２１  転送先アドレスレジスタ
１２２  転送元アドレスレジスタ
１２５  チャネル制御レジスタ
１２６  セレクタ
１３１  オペレーションレジスタ
Ｃ０〜Ｃ７、Ｄ０、Ｄ１  チャネル
【図１】
2006215812.tif 000003
【図２】
2006215812.tif 000004
【図３】
2006215812.tif 000005
【図４−１】
2006215812.tif 000006
【図４−２】
2006215812.tif 000007
【図５】
2006215812.tif 000008
【図６】
2006215812.tif 000009
【図７】
2006215812.tif 000010
【図８】
2006215812.tif 000011
【図９】
2006215812.tif 000012
【図１０】
2006215812.tif 000013
【図１１−１】
2006215812.tif 000014
【図１１−２】
2006215812.tif 000015
【図１１−３】
2006215812.tif 000016
【図１２】
2006215812.tif 000017
【図１３】
2006215812.tif 000018
【図１４】
2006215812.tif 000019
【図１５】
2006215812.tif 000020
【図１６】
2006215812.tif 000021
【図１７−１】
2006215812.tif 000022
【図１７−２】
2006215812.tif 000023
【図１８】
2006215812.tif 000024