(57)【要約】【課題】複数のデータの転送先アドレスが１語もしくは数語間隔に存在した場合でも一度のバスサイクルで複数のデータを転送する。【解決手段】バーストデータ転送を開始し、データフェーズが転送先でないアドレスにきたときは、バイトイネーブル信号をディアサートした状態にし、データフェーズがデータを転送しようとするアドレスにきたときは、バイトイネーブル信号をアサートし、このデータフェーズの完了時にのみ転送しようとするデータを更新することにより、数語間隔に存在する転送先のアドレスにのみ、データを転送することを可能とする。【選択図】  図１
2004280191.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を行うバスサイクル制御手段を備える
ことを特徴とするデータ転送制御装置。
【請求項２】
バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
データを保持するデータ記憶手段と、
データの転送ワード数を保持する転送ワード数記憶手段と、
１ワードデータの転送先のアドレスの間隔を保持する転送間隔記憶手段と、
バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段とを備える
ことを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
さらに、
バスサイクルの開始アドレスを保持するサイクル開始アドレス保持手段と、
書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、第２のデータの転送先のアドレスを計算する再開アドレス計算手段と、
書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、前記再開アドレス計算手段で計算されたアドレスを前記サイクル開始アドレス保持手段に転送し、前記サイクル開始アドレスレジスタに格納されたアドレスから新たなバスサイクルを発生させる中断サイクル再開手段とを備える
ことを特徴とするデータ転送制御装置。
【請求項４】
請求項２または請求項３において、
さらに、
ターゲットデバイスのデバイス応答速度を保持する応答速度記憶手段と、
前記転送間隔記憶手段と前記応答速度記憶手段の値からバースト転送によるデータ転送速度と、転送先アドレスへの１ワードのデータ転送の繰り返しによるデータ転送を比較する転送速度比較手段と、
前記転送速度比較手段によりバースト転送の方が転送先アドレスへの１ワードのデータ転送の繰り返しによるデータ転送よりも速い場合、バースト転送を選択し、そうでない場合、転送先アドレスへの１ワードデータ転送バスサイクルの繰り返しを選択する転送形式選択手段とを備える
ことを特徴とするデータ転送制御装置。
【請求項５】
請求項２から請求項４のいずれか１つにおいて、
前記バスサイクル制御手段は、
前記書き込み制御線が書き込み禁止の状態である時には、データ線に次に転送しようとする１ワードのデータをドライブする
ことを特徴とするデータ転送制御装置。
【請求項６】
バスの書き込み制御線が書き込み禁止の状態であるときにデータの書き込み動作を受けた場合、前記書き込み制御線が書き込みが有効な状態であるときよりも早くデータの受理を通知するバス応答手段を備える
ことを特徴とするデータ転送制御装置。
【請求項７】
データの転送先のアドレスの間隔を保持する記憶手段と、
バスの書き込み制御線が書き込み禁止の状態であるときにデータの転送動作を受けた場合、前記記憶手段に格納された値から次に前記書き込み制御線が書き込み許可の状態となるアドレスを求め、データ線にドライブされている信号の値を前記アドレスに書き込む書き込み制御手段とを備える
ことを特徴とするデータ転送制御装置。
【請求項８】
バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
データを保持するデータ記憶手段と、
データの転送ワード数を保持する転送ワード数記憶手段と、
データの転送を行わないアドレスの間隔を保持する非転送間隔記憶手段と、
バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込み禁止状態にし、その他の期間は書込みが有効な状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段とを備える
ことを特徴とするデータ転送制御装置。
【請求項９】
バスに接続され、前記バス上のデバイスへのデータ転送を制御する方法であって、
データを保持するデータ記憶工程と、
データの転送数を保持する転送ワード数記憶工程と、
データの転送先のアドレスの間隔を保持する転送間隔記憶工程と、
バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御工程とを備える
ことを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ転送制御方法および装置に関するものである。
【０００２】
【従来の技術】
従来、バースト転送を制御するデータ転送制御方法および装置は、例えば特開平６−１６１９４４に見られるように、転送先開始アドレス、転送ワード数をそれぞれ、転送先開始アドレスレジスタ、転送ワード数レジスタに設定することにより、転送先開始アドレスから連続したアドレス空間へ指定した転送ワード数のデータを１度のバスサイクル（バストランザクション）の中で連続して転送していた。
【０００３】
ＰＣＩバスインタフェースを持った従来のデータ転送制御装置を図１９に示す。ＰＣＩバスは３２ビット、すなわち４バイトのデータ幅を持つので、１ワードは４バイトの大きさを表し、１ワードのデータという場合には４バイト大のデータを表す。転送先開始アドレスから連続したアドレス空間へデータを転送する場合、バースト転送制御部１０５ａがバースト転送を発生させ、１ワードのデータ転送が完了するたびに転送ワード数カウンタ１０９の値をインクリメントし、転送ワード数カウンタ１０９の値が転送ワード数レジスタ１０６に保持された値に一致するまで、１度のバスサイクルですべてのデータを転送していた。
【０００４】
図２０ＡにタイムフレームＴ０からＴ１１までの、図２０ＢにタイムフレームＴ１２からＴ２３までの、従来のデータ転送制御装置を用いた場合のデータ転送のタイミングチャートを示す。図２０Ａ、２０Ｂに示すように、４０００００００番地と４００００００８番地のように連続していないアドレスにそれぞれ１ワードずつのデータを転送する場合には、バスサイクルを２回発生させて、２回のシングル転送を行うことによりデータを転送していた。
【０００５】
【特許文献１】
特開平６−１６１９４４号公報
【０００６】
【発明が解決しようとする課題】
従来のデータ転送制御装置では、データの転送先のアドレスが連続していないとき、バースト転送できないので高速にデータを転送することができない。
【０００７】
本発明は、かかる点に鑑み、１ワード単位のデータを等間隔離れたアドレス位置に書き込むにあたり、バースト転送による書き込みを利用し、データ転送を高速に行うことのできる転送制御方法および装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
（１）本発明の請求項１記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を行うバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
（２）本発明の請求項２記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、データを保持するデータ記憶手段と、データの転送ワード数を保持する転送ワード数記憶手段と、１ワードデータの転送先のアドレスの間隔を保持する転送間隔記憶手段と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
（３）本発明の請求項３記載のデータ転送制御装置は、バスサイクルの開始アドレスを保持するサイクル開始アドレス保持手段と、書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、第２のデータの転送先のアドレスを計算する再開アドレス計算手段と、書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、前記再開アドレス計算手段で計算されたアドレスを前記サイクル開始アドレス保持手段に転送し、前記サイクル開始アドレスレジスタに格納されたアドレスから新たなバスサイクルを発生させる中断サイクル再開手段と、を具備することを特徴とするデータ転送制御装置である。
（４）本発明の請求項４記載のデータ転送制御装置は、ターゲットデバイスのデバイス応答速度を保持する応答速度記憶手段と、前記転送間隔記憶手段と前記応答速度記憶手段の値からバースト転送によるデータ転送速度と、転送先アドレスへの１ワードのデータ転送の繰り返しによるデータ転送を比較する転送速度比較手段と、前記転送速度比較手段によりバースト転送の方が転送先アドレスへの１ワードのデータ転送の繰り返しによるデータ転送よりも速い場合、バースト転送を選択し、そうでない場合、転送先アドレスへの１ワードデータ転送バスサイクルの繰り返しを選択する転送形式選択手段とを具備することを特徴とするデータ転送制御装置である。
（５）本発明の請求項５記載のデータ転送装置は、前記バスサイクル制御手段は、前記書き込み制御線が書き込み禁止の状態である時には、データ線に次に転送しようとする１ワードのデータをドライブすることを特徴とするデータ転送制御装置である。
（６）本発明の請求項６記載のデータ転送制御装置は、バスの書き込み制御線が書き込み禁止の状態であるときにデータの書き込み動作を受けた場合、前記書き込み制御線が書き込みが有効な状態であるときよりも早くデータの受理を通知するバス応答手段を具備することを特徴とするデータ転送制御装置である。
（７）本発明の請求項７記載のデータ転送制御装置は、データの転送先のアドレスの間隔を保持する記憶手段と、バスの書き込み制御線が書き込み禁止の状態であるときにデータの転送動作を受けた場合、前記記憶手段に格納された値から次に前記書き込み制御線が書き込み許可の状態となるアドレスを求め、データ線にドライブされている信号の値を前記アドレスに書き込む書き込み制御手段と
を具備することを特徴とするデータ転送制御装置である。
（８）本発明の請求項８記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、データを保持するデータ記憶手段と、データの転送ワード数を保持する転送ワード数記憶手段と、データの転送を行わないアドレスの間隔を保持する非転送間隔記憶手段と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込み禁止状態にし、その他の期間は書込みが有効な状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
（９）本発明の請求項９記載のデータ転送制御方法は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御方法において、データを保持するデータ記憶工程と、データの転送数を保持する転送ワード数記憶工程と、データの転送先のアドレスの間隔を保持する転送間隔記憶工程と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御工程を具備することを特徴とするデータ転送制御方法である。
【０００９】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【００１０】
（第１の実施形態）
本実施の形態では、等間隔に離れたアドレスに１ワードずつデータを転送する場合でも、バースト転送により複数ワードのデータを高速に転送することのできるデータ転送制御装置について説明する。すなわち、書き込みを行う先頭アドレスからバースト転送を開始し、指定されたクロックサイクル期間はバスを書き込み禁止の状態にしておき、その後、書き込みを行うタイミングでバスを書き込み可能な状態に戻し、再び、指定されたクロックサイクル期間はバスを書き込み禁止の状態にするといった動作を、すべてのデータを転送し終わるまで繰り返す。これにより、等間隔に離れたアドレスへのデータのバースト転送を可能にする。
【００１１】
図１は本発明の第１の実施形態によるデータ転送制御装置である。
【００１２】
ＰＣＩローカルバス（以下、ＰＣＩバスと呼ぶ）のマスタデバイス１０１は、複数ワードのデータを連続したアドレスに１度のバスサイクルで転送するいわゆるバースト転送をサポートし、転送開始レジスタ１０６への書き込みが発生すると、転送先開始アドレスレジスタ１０２に設定されたバースト転送の転送先の開始アドレスから、転送ワード数レジスタ１０３が示すワード数だけデータバッファ１０４に格納されたデータをバースト転送する。このバースト転送の際に、一回目のデータ転送が完了すると、転送間隔レジスタ１１３に格納された値が指定する期間、ＰＣＩバス１８０のコマンド・バイトイネーブル線（Ｃ＿ＢＥ＃線）１８０ｂの４バイトそれぞれの書き込みの許可／禁止を指定する各ビットすべてを１すなわち無効状態にすることにより、ＰＣＩターゲットデバイス１４０がメモリ１４６にデータを書き込まないようにする。その後、Ｃ＿ＢＥ＃線１８０ｂのすべてのビットの値を０にして２番目のデータを転送する。そして、再び、転送間隔レジスタ１１３に格納された値が指定する期間、Ｃ＿ＢＥ＃線１８０ｂをオール１にする。これを、転送ワード数レジスタ１０３が示すワード数のデータが転送されるまで繰り返す。
【００１３】
転送先開始アドレスレジスタ１０２には、ＣＰＵ１６０からソフトウエアによりバースト転送の転送先の開始アドレスを設定することが可能である。
【００１４】
転送ワード数レジスタ１０３には、ＣＰＵ１６０からソフトウエアにより転送したいデータのワード数を設定することが可能である。
【００１５】
データバッファ１０４は、ＰＣＩターゲットデバイス１４０に転送しようとするデータを保持し、転送ワード数レジスタ１０３で指定されるワード数のデータが１回の転送動作で読み出される。また、その先頭データは、ＰＣＩバスサイクル実行中はＡＤ線１８０ａにドライブされる。
【００１６】
サイクル制御部１０５は、転送開始レジスタ１０６に転送開始の書き込みがされると、バスリクエスト信号線１９０を用いてＰＣＩバス１８０の使用権を要求し、バスグラント信号線１９１のアサートによりＰＣＩバス１８０の使用権を獲得してからバースト転送制御部１０５ａを用いてバースト転送を開始し、まず、アドレスフェーズで転送先開始アドレスレジスタ１０２に設定されたアドレスをサイクル開始アドレスレジスタ１０８を通じてＡＤ線１８０ａにドライブし、次に、第１のデータフェーズで、データバッファ１０４に格納された第１のデータをＡＤ線１８０ａにドライブし、データ転送が完了すると、インクリメント部１１０を用いて転送ワード数カウンタ１０９の値をインクリメントし、サイクル開始アドレスレジスタ１０８の値をインクリメントし、インクリメント部１１５を用いて転送間隔カウンタ１１４をインクリメントし、データバッファ１０４から第１のデータを消去して更新し、転送ワード数カウンタ１０９と転送ワード数レジスタ１０３の値が一致すれば転送ワード数カウンタ１０９と転送間隔カウンタ１１４を０に初期化して終了し、一致しなければ転送間隔カウンタ１１４と転送間隔レジスタ１１３の値を比較部１１６を用いて比較し、一致すればカウンタ初期化部１１７を用いて転送間隔カウンタ１１４を０に初期化し、次に、第２のデータフェーズで、転送間隔カウンタ１１４の値が初期値０であれば、Ｃ＿ＢＥ＃線１８０ｂを有効な値に設定し、データ転送が完了すると、インクリメント部１１０を用いて転送ワード数カウンタ１０９の値をインクリメントし、サイクル開始アドレスレジスタ１０８の値をインクリメントし、インクリメント部１１５を用いて転送間隔カウンタ１１４をインクリメントし、データバッファ１０４から第２のデータを消去して更新し、比較部１１１から転送ワード数カウンタ１０９と転送ワード数レジスタ１０３の値が一致したという通知を受ければ、転送ワード数カウンタ１０９と転送間隔カウンタ１１４を０に初期化して終了し、転送間隔カウンタ１１４の値が初期値０でなければ、ＢＥ＃線無効化部１０５ｄによって、Ｃ＿ＢＥ＃線１８０ｂをオール１すなわち無効な値に設定し、データ転送が完了すると、サイクル開始アドレスレジスタ１０８の値をインクリメントし、インクリメント部１１５を用いて転送間隔カウンタ１１４をインクリメントし、次に第３以降のデータフェーズで、Ｃ＿ＢＥ＃線１８０ｂをオール１に設定して転送したデータのワード数が転送ワード数レジスタ１０３の値に一致するまで第２のデータフェーズと同様の動作を繰り返す。また、ターゲットデバイスによりバースト転送が中断された場合、中断サイクル再開部１０５ｃにより、２クロックサイクルのウエイト後、サイクルを再開するようにサイクル制御部１０５を制御する。
【００１７】
バースト転送制御部１０５ａは、ＰＣＩバス１８０へのバースト転送を制御する。
【００１８】
データ更新部１０５ｂは、書き込みを有効としたデータの転送が完了すると、転送が終了したデータをデータバッファ１０４から消去し、データバッファ１０４に格納されたデータを更新する。更新されたデータはバス上に出力される。
【００１９】
中断サイクル再開部１０５ｃは、ＰＣＩターゲットデバイス１４０により、バスサイクルが中断された場合、２クロックサイクルの間ウエイトしてからＰＣＩバスインタフェース１０７を通じてバスサイクルを再開する。
【００２０】
ＢＥ線無効化部１０５ｄは、データフェーズにおいて、転送間隔カウンタ１１４の値が０でないとき、Ｃ＿ＢＥ＃線１８０ｂを無効な値、すなわちオール１にし、このデータフェーズが完了するときにはデータ更新部１０５ｂにはデータバッファ１０４のデータを更新しないように通知する。
【００２１】
転送開始レジスタ１０６に転送開始を指示する書き込みがされると、サイクル制御部１０５がバースト転送を開始する。
【００２２】
ＰＣＩバスインタフェース１０７は、ＰＣＩマスタデバイスとしてのＰＣＩバス１８０の制御を行う。
【００２３】
サイクル開始アドレスレジスタ１０８には、バースト転送を開始する場合、転送先開始アドレスレジスタ１０２の値がコピーされ、また、ＰＣＩターゲットデバイス１４０へのバースト転送がディスコネクトされた場合、バスサイクルを再開するアドレスが保持される。
【００２４】
転送ワード数カウンタ１０９は、転送されたデータのワード数をカウントする。
【００２５】
インクリメント部１１０は、バースト転送が完了すると転送ワード数カウンタ１０９を初期化する。
【００２６】
比較部１１１は、転送ワード数カウンタ１０９の値と転送ワード数レジスタ１０３の値を比較し、一致するときは、送ろうとするデータのワード数と、既に送られたデータのワード数が一致することになり、サイクル制御部１０５に通知するとともに、カウンタ初期化部１１２を用いて転送ワード数カウンタ１０９を初期化し、また、転送ワード数カウンタ１０９が転送ワード数レジスタ１０３よりも１小さいときは、サイクル制御部１０５への通知だけを行う。サイクル制御部１０５は比較部１１１から転送ワード数カウンタ１０９の値と転送ワード数レジスタ１０３の値が一致することを通知されたときはＰＣＩバスサイクルをＰＣＩバスインタフェース１０７にバスサイクルを終了するように通知し、転送ワード数カウンタ１０９が転送ワード数レジスタ１０３よりも１小さいことを通知されたときは、ＰＣＩバスインタフェース１０７にＦＲＡＭＥ＃線１８０ｃをディアサートして、バースト転送を次のデータフェーズで終了させるように通知する。
【００２７】
カウンタ初期化部１１２は、比較部１１１により転送ワード数レジスタ１０３と転送ワード数カウンタ１０９の値が一致すると判別されると、転送ワード数カウンタ１０９を初期化する。
【００２８】
転送間隔レジスタ１１３には、データを転送しようとする転送先のアドレスの間隔をＣＰＵ１６０からソフトウエアにより設定することが可能であり、１ワード分書き込みを行うデータ転送をした後、ｎワード続けて書き込みを行わないデータ転送を行う場合、この値は（ｎ＋１）となる。
【００２９】
転送間隔カウンタ１１４は、１ワードのデータ書き込みを行った後何ワード分データの書き込みを行わないデータ転送が行われたかをカウントするものであり、バースト転送中にデータフェーズが完了するたびに値がインクリメント部１１５によりインクリメントされ、値が転送間隔レジスタ１１３の値に一致したとき、およびバスサイクルが完了したときはカウンタ初期化部１１７により初期値０が書き込まれ、値が０であるときはサイクル制御部１０５により、Ｃ＿ＢＥ＃線１８０ｂが有効な値に設定されてデータが転送される。
【００３０】
インクリメント部１１５は、バースト転送中にデータフェーズが完了するたびに転送間隔カウンタ１１４の値をインクリメントする。
【００３１】
比較部１１６は、転送間隔レジスタ１１３と転送間隔カウンタ１１４の値を比較し、一致するときはサイクル制御部１０５とカウンタ初期化部１１７に通知し、また、転送間隔カウンタ１１４が転送間隔レジスタ１１３よりも１小さいときは、サイクル制御部１０５への通知だけを行う。
【００３２】
カウンタ初期化部１１７は、比較部１１６から、転送間隔レジスタ１１３と転送間隔カウンタ１１４の値が一致したという通知を受けると、転送間隔カウンタ１１４を０に初期化する。
【００３３】
ＰＣＩターゲットデバイス１４０は、ＰＣＩマスタデバイス１０１からＰＣＩバス１８０を通じてデータを転送されると、ＰＣＩバスサイクルの各データフェーズでＣ＿ＢＥ＃線１８０ｂがオール１である場合を除き、データをメモリ１４６に格納する。
【００３４】
ＰＣＩバスインタフェース１４１は、ＰＣＩターゲットデバイスとしてのＰＣＩバス１８０の制御を行う。このとき、ＴＲＤＹ＃１８０ｅのアサートは、アクノリッジ信号制御部１４２ｂからアクノリッジ信号を受け取ってから行う。
【００３５】
メモリ書き込み制御部１４２は、ＰＣＩバス１８０からメモリ１４６への書き込みを制御する。
【００３６】
アドレスデコーダ１４２ａは、ＰＣＩバス１８０のアドレスフェーズでＡＤ線１８０ａにドライブされている値を取り込んでデコードし、ＰＣＩターゲットデバイス１４０に割り当てられたアドレスであるかどうかを調べ、そうである場合はＰＣＩバスインタフェース１４１に対してＰＣＩバスサイクルに応答するように通知し、また、メモリ書き込み制御部１４２でメモリ１４６に書き込み動作を実行させる。
【００３７】
アクノリッジ信号制御部１４２ｂは、メモリ書き込み制御部１４２によりメモリ１４６への書き込みが完了すると、ＰＣＩバスインタフェース１４１にアクノリッジ信号を出す。
【００３８】
データレジスタ１４３は、ＰＣＩバス１８０から転送されたデータを内部メモリ１４６に書き込むために一時的にデータを格納するレジスタである。
【００３９】
アドレスレジスタ１４４は、ＰＣＩバス１８０の各データフェーズに対応するアドレスを記憶するためのレジスタである。
【００４０】
バイトイネーブルレジスタ１４５は、４ビットの値を保持するレジスタであり、メモリ１４６に４バイト書き込みをする場合、各バイトに対応するビットが０のバイト位置にだけ書き込みを行うためのものである。
【００４１】
メモリ１４６は、ＰＣＩマスタデバイス１０１から転送され、データレジスタ１４３に一時的に格納されたデータを、バイトイネーブルレジスタ１４５に保持された値に従って、アドレスレジスタ１４４の値が示すアドレスの位置に格納する。
【００４２】
ＣＰＵ１６０は、メモリ１７０をメインメモリに使用し、ＰＣＩマスタデバイス１０１からＰＣＩターゲットデバイス１４０へのバースト転送を行う際には、転送開始アドレスを転送先開始アドレスレジスタ１０２に設定し、転送間隔を転送間隔レジスタ１１３に設定し、転送ワード数を転送ワード数レジスタ１０３に設定し、最後に転送開始レジスタ１０６に転送開始の書き込みをしてバースト転送を起動する。
【００４３】
メモリ１７０は、ＣＰＵ１６０のメインメモリとして使用される。
【００４４】
ＰＣＩバス１８０は、３２ビットのアドレス・データ線（ＡＤ線）１８０ａ、４ビットのコマンド・バイトイネーブル線（Ｃ＿ＢＥ＃線）１８０ｂ、１ビットのフレーム線（ＦＲＡＭＥ＃線）１８０ｃ、イニシエータ・レディ線（ＩＲＤＹ＃線）１８０ｄ、ターゲット・レディ線（ＴＲＤＹ＃線）１８０ｅ、デバイス・セレクト線（ＤＥＶＳＥＬ＃線）１８０ｆ、ストップ線（ＳＴＯＰ＃線）１８０ｇを持ち、ＰＣＩマスタデバイス１０１、ＰＣＩターゲットデバイス１４０、ＣＰＵ１６０、メモリ１７０が接続している。
【００４５】
バスリクエスト線１９０は、ＰＣＩマスタデバイス１１０がＣＰＵ１６０に対してＰＣＩバス１８０のバス使用権をリクエストするための信号線である。
【００４６】
バスグラント線１９１は、ＣＰＵ１６０がＰＣＩマスタデバイス１１０に対してＰＣＩバス１８０のバス使用権をグラントするための信号線である。
【００４７】
図２は本実施の形態の動作のフローを示す図である。
【００４８】
ステップＳＴ２０１において、ＣＰＵ１６０からＰＣＩバス１８０を通じて転送先開始アドレスレジスタ１０２を設定し、ステップＳＴ２０２に進む。
【００４９】
ステップＳＴ２０２において、ＣＰＵ１６０からＰＣＩバス１８０を通じて転送ワード数レジスタ１０３を設定し、ステップＳＴ２０３に進む。
【００５０】
ステップＳＴ２０３において、ＣＰＵ１６０からＰＣＩバス１８０を通じて転送間隔レジスタ１１３を設定し、ステップＳＴ２０４に進む。
【００５１】
ステップＳＴ２０４において、ＣＰＵ１６０からＰＣＩバス１８０を通じて転送開始レジスタ１０６への書き込みを行い、ステップＳＴ２０５に進む。
【００５２】
ステップＳＴ２０５において、サイクル制御部１０５により、転送先開始アドレスレジスタ１０２の値をサイクル開始アドレスレジスタ１０８に転送し、ステップＳＴ２０６に進む。
【００５３】
ステップＳＴ２０６において、ＰＣＩマスタデバイス１１０がバスリクエスト線１９０をアサートしてＣＰＵ１６０に対してＰＣＩバス１８０のバス使用権をリクエストし、ＣＰＵ１６０がバスグラント線１９１をアサートしてＰＣＩマスタデバイス１１０に対してＰＣＩバス１８０のバス使用権をグラントすることにより、ＰＣＩマスタデバイス１１０がＰＣＩバス１８０のバス使用権を獲得し、ステップＳＴ２０７に進む。
【００５４】
ステップＳＴ２０７において、ＰＣＩバスインタフェース１４１により、ＰＣＩバスサイクルを開始して、アドレスフェーズを実行し、サイクル開始アドレスレジスタ１０８の値をアドレスとしてＰＣＩバスインタフェース１８０のＡＤ線１８０ａにドライブし、Ｃ＿ＢＥ＃線１８０ｂにメモリライトコマンドを発行し、ステップＳＴ２０８に進む。
【００５５】
ステップＳＴ２０８において、サイクル制御部１０５により、転送間隔カウンタ１１４の値が０であるか否かを判別し、０であればステップＳＴ２０９に進み、０でなければステップＳＴ２１９に進む。
【００５６】
ステップＳＴ２０９において、比較部１１１，１１６、サイクル制御部１０５により、最終データフェーズであるか否かを判別し、最終データフェーズであれば、ステップＳＴ２１０に進み、そうでなければステップＳＴ２１１に進む。
【００５７】
ステップＳＴ２１０において、ＰＣＩバスインタフェース１０７により、ＦＲＡＭＥ＃線１８０ｃをディアサートして最終データフェーズであることを通知し、ステップＳＴ２１１に進む。
【００５８】
ステップＳＴ２１１において、ＰＣＩバスインタフェース１０７により、Ｃ＿ＢＥ＃線１８０ｂを有効な値にし、データバッファ１０４の先頭データをＡＤ線１８０ａにドライブしてデータフェーズを実行し、ステップＳＴ２１２に進む。
【００５９】
ステップＳＴ２１２において、ＰＣＩバスインタフェース１０７により、ＴＲＤＹ＃またはＳＴＯＰ＃がアサートされるまでウエイトし、どちらかがアサートされるとステップＳＴ２１３に進む。
【００６０】
ステップＳＴ２１３において、ＰＣＩバスインタフェース１０７により、ステップＳＴ２１２でＴＲＤＹ＃がアサートされた場合、データ転送が完了していると判別し、ステップＳＴ２１４に進み、ステップＳＴ２１２でＳＴＯＰ＃のみがアサートされ、ＴＲＤＹ＃がアサートされなかった場合、データ転送が完了しなかったと判別し、ステップＳＴ２２４に進む。
【００６１】
ステップＳＴ２１４において、インクリメント部１１０により、転送ワード数カウンタ１０９をインクリメントし、ステップＳＴ２１５に進む。
【００６２】
ステップＳＴ２１５において、サイクル制御部１０５により、サイクル開始アドレスレジスタ１０８の値をＰＣＩのバス幅である４バイト分インクリメントし、ステップＳＴ２１６に進む。
【００６３】
ステップＳＴ２１６において、インクリメント部１１５により、転送間隔カウンタ１１４の値をインクリメントし、ステップＳＴ２１７に進む。
【００６４】
ステップＳＴ２１７において、データ更新部１０５ｂにより、データバッファ１０４から転送完了済みのデータを消去し、ステップＳＴ２１８に進む。
【００６５】
ステップＳＴ２１８において、比較部１１１により、転送ワード数レジスタ１０３と転送ワード数カウンタ１０８の値を比較し、一致すればステップＳＴ２２８に進み、一致しなければステップＳＴ２２４に進む。
【００６６】
ステップＳＴ２１９において、ＢＥ線無効化部１０５ｄおよびＰＣＩバスインタフェース１０７により、Ｃ＿ＢＥ＃線１８０ｂを無効な値、すなわちオール１にし、データバッファ１０４の先頭データをＡＤ線１８０ａにドライブしてデータフェーズを実行し、ステップＳＴ２２０に進む。
【００６７】
ステップＳＴ２２０において、ＴＲＤＹ＃またはＳＴＯＰ＃がアサートされるまでウエイトし、どちらかがアサートされるとステップＳＴ２２１に進む。
【００６８】
ステップＳＴ２２１において、ステップＳＴ２２０でＴＲＤＹ＃がアサートされた場合、データ転送が完了していると判別し、ステップＳＴ２２２に進み、ステップＳＴ２２０でＳＴＯＰ＃のみがアサートされ、ＴＲＤＹ＃がアサートされなかった場合、データ転送が完了しなかったと判別し、ステップＳＴ２２４に進む。
【００６９】
ステップＳＴ２２２において、サイクル制御部１０５により、サイクル開始アドレスレジスタ１０８の値をＰＣＩのバス幅である４バイト分インクリメントし、ステップＳＴ２２３に進む。
【００７０】
ステップＳＴ２２３において、インクリメント部１１５により、転送間隔カウンタ１１４の値をインクリメントし、ステップＳＴ２２４に進む。
【００７１】
ステップＳＴ２２４において、比較部１１６により、転送間隔レジスタ１１３と転送間隔カウンタ１１４の値を比較し、一致すればステップＳＴ２２５に進み、一致しなければステップＳＴ２２６に進む。
【００７２】
ステップＳＴ２２５において、カウンタ初期化部１１７により、転送間隔カウンタ１１４を初期化し、ステップＳＴ２２６に進む。
【００７３】
ステップＳＴ２２６において、ＳＴＯＰ＃線１８０ｇのアサートにより、バスサイクルが中断された場合、ステップＳＴ２０６に戻り、そうでない場合、ステップＳＴ２０８に進む。
【００７４】
ステップＳＴ２２８において、カウンタ初期化部１１２により、転送ワード数カウンタ１０９を０に初期化し、ステップＳＴ２２９に進む。
【００７５】
ステップＳＴ２２９において、カウンタ初期化部１１７により、転送間隔カウンタ１１４を０に初期化し、バースト転送処理を終了する。
【００７６】
次に、データ例を用いて本実施の形態の動作を説明する。
【００７７】
図３ＡにタイムフレームＴ０からＴ１１までの、図３ＢにタイムフレームＴ１１からＴ１５までの、メモリ１４６の４０００００００番地にデータ１を、４００００００８番地にデータ２を転送する場合のタイミングチャートを示す。同図では、ＰＣＩマスタデバイス１０１が、ＰＣＩターゲットデバイス１４０を通じてメモリ１４６に対して、バースト転送によって、まず、４０００００００番地にデータ１を転送し、次に、４００００００４番地にＣ＿ＢＥ＃線を無効な値にしてデータ２を転送し、最後に、４００００００８番地にデータ２を転送する。
【００７８】
図中、
３００ａは１クロックサイクルを単位としたタイムフレームを示し、
３００ｂはＰＣＩバス１８０のバスサイクルを実行しているイニシエータを示し、
３００ｃはＰＣＩバス１８０の状態を示し、
３０１ａはクロック線（ＣＬＫ）の状態を示し、
３０１ｂはバスリクエスト線（ＲＥＱ＃）１９０の状態を示し、
３０１ｃはバスグラント線（ＧＮＴ＃）１９１の状態を示し、
３０２はアドレス・データ線（ＡＤ）１８０ａの状態を示し、
３０３はコマンド・バイトイネーブル線（Ｃ＿ＢＥ＃）１８０ｂの状態を示し、
３０４はＦＲＡＭＥ＃線１８０ｃの状態を示し、
３０５はＩＲＤＹ＃線１８０ｄの状態を示し、
３０６はＴＲＤＹ＃線１８０ｅの状態を示し、
３０７はＤＥＶＳＥＬ＃線１８０ｆの状態を示し、
３０８は転送ワード数レジスタ１０３の値を示し、
３０９は転送ワード数カウンタ１０９の値を示し、
３１０は転送間隔レジスタ１１３の値を示し、
３１１は転送間隔カウンタ１１４の値を示し、
３１２は転送先開始アドレスレジスタ１０２の値を示し、
３１３はデータバッファ１０４の先頭の２ワードのデータを示し、
３１３ａはデータバッファ１０４の先頭の１ワードのデータを示し、
３１３ｂはデータバッファ１０４の２番目の１ワードのデータを示し、
３１４はアドレスデコーダ１４２ａの状態を示し、
３１５はアドレスレジスタ１４４の値を示し、
３１６はデータレジスタ１４３の値を示し、
３１７はバイトイネーブルレジスタ１４５の値を示し、
３１８はメモリ１４６の４０００００００番地の値を示し、
３１９はメモリ１４６の４００００００４番地の値を示し、
３２０はメモリ１４６の４００００００８番地の値を示す。
【００７９】
また、ＰＣＩターゲットデバイス１４０は低速応答のデバイスであるとする。すなわち、アドレスフェーズの３サイクル後にＤＥＶＳＥＬ＃線１８０ｆをアサートするデバイスであるとする。さらに、メモリ１４６はＰＣＩバス１８０のクロック１サイクル分の時間で書き込みが完了するメモリであり、これに合わせて、アクノリッジ信号制御部１４２ｂはアドレスデコーダ１４２ａでアドレスのデコードが完了した後はウエイトなしでＰＣＩバスインタフェース１４１に出すことができるとする。
【００８０】
各メモリおよびレジスタのメモリマップを図４に示す。
【００８１】
以下、図３Ａ、図３Ｂを用いて、タイムフレーム３００ａに記す時刻の順に動作を説明する。
【００８２】
（Ｔ０）
ＰＣＩバス１１０はアイドル状態である。
【００８３】
３１３が示すように、データバッファ１０４には転送しようとするそれぞれ１ワードの２つのデータ、データ１およびデータ２がこの順に格納されている。
【００８４】
転送ワード数カウンタ１０９、転送間隔カウンタ１１４には、それぞれ３０９、３１１に示すように初期値０が保持されている。
【００８５】
（Ｔ１−Ｔ５）
ステップＳＴ２０１からステップＳＴ２０５の処理で、ＣＰＵ１６０からの書き込みによって、３０８に示すように転送ワード数レジスタ１０３に２が、３１０に示すように転送間隔レジスタ１１３に２が、３１２に示すように転送開始アドレスレジスタ１０２に４０００００００が、それぞれ設定される。
【００８６】
（Ｔ６−Ｔ７）
次に、ステップＳＴ２０６に進み、３０１ｂ、３０１ｃに示すように、タイムフレームＴ６でＲＥＱ＃線１９０をアサートしてＰＣＩバス１８０の使用権をリクエストし、タイムフレームＴ７でＧＮＴ＃１９１がアサートされ、ＰＣＩマスタデバイス１０１が使用権を獲得する。
【００８７】
（Ｔ８）
次に、ステップＳＴ２０７に進み、ＰＣＩバス１８０はアドレスフェーズに入る。ＰＣＩバスインタフェース１０７は、３０２、３０３、３０４に示すように、ＡＤ線１８０ａにアドレス４０００００００をドライブし、Ｃ＿ＢＥ＃線１８０ｂにメモリ・ライトコマンドをドライブし、ＦＲＡＭＥ＃線１８０ｃをアサートすることによって、バスサイクルを開始する。
【００８８】
（Ｔ９）
次に、ステップＳＴ２０８，２０９，２１０を経てステップＳＴ２１１に進み、ＰＣＩバス１８０はデータフェーズに入る。タイムフレームがＴ２のとき、まだＰＣＩターゲットデバイス１４０は応答しないのでデータ転送は成立しない。
【００８９】
ＰＣＩターゲットデバイス１４０のアドレスデコーダ１４２ａは３１４に示すように、Ｔ１でＡＤ線１８０ａにドライブされていたアドレス値４０００００００のデコードを開始する。
【００９０】
ＰＣＩバスインタフェース１０７は、３０２、３０３、３０４に示すように、ＡＤ線１８０ａの値をデータ１に、Ｃ＿ＢＥ＃線１８０ｂの値を００００にし、ＩＲＤＹ＃線１８０ｄをアサートする。
【００９１】
（Ｔ１０）
ステップＳＴ２１２にとどまり、ＰＣＩバス１８０はデータ転送が成立しないデータフェーズにある。
【００９２】
（Ｔ１１）
３１４に示すように、アドレスデコーダ１４２ａはアドレス４０００００００のデコードを完了し、ＰＣＩバスインタフェース１４１は、３０６、３０７に示すようにＴＲＤＹ＃線１８０ｅ、ＤＥＶＳＥＬ＃線１８０ｆをアサートしてターゲットデバイスとしての応答通知およびデータ転送の完了通知を行う。
【００９３】
（Ｔ１２）
前のタイムフレーム、Ｔ４でＴＲＤＹ＃線１８０ｅがアサートされたので、ステップＳＴ２１３を経てステップ２１４に進む。
【００９４】
ステップＳＴ２１４により、転送ワード数カウンタ１０９の値をインクリメントし、３０９に示すように、１にする。
【００９５】
次に、ステップＳＴ２１５を経てステップＳＴ２１６により、転送間隔カウンタ１４４の値をインクリメントし、３１１に示すように、１にする。
【００９６】
次に、ステップＳＴ２１７により、３１３に示すように、データバッファ１０４から先頭データであるデータ１を削除し、データ２を先頭データとする。
【００９７】
ＰＣＩターゲットデバイス１４０は、３１６に示すように、前のタイムフレームでＡＤ線１８０ａにドライブされていたデータ１をデータレジスタ１４３に取り込む。また、３１７に示すように、Ｃ＿ＢＥ＃線１８０ｂにドライブされていた値００００をバイトイネーブルレジスタ１４５に取り込む。さらに、３１５に示すように、アドレス４０００００００をアドレスレジスタ１４４に取り込む。
【００９８】
次に、ステップＳＴ２１８，ＳＴ２２４，ＳＴ２２６を経て、ステップＳＴ２０８に戻り、転送間隔カウンタ１０９の値が０ではないので、ステップＳＴ２１９で、ＢＥ線無効化部１０５ｄはバースト転送制御部１０５ａにＣ＿ＢＥ＃線を無効値にするよう通知し、３０３に示すように、Ｃ＿ＢＥ＃線１８０ｂには無効な値、１１１１がドライブされる。
【００９９】
（Ｔ１３）
メモリ書き込み制御部１４２は３１７に示すように、前のタイムフレームでバイトイネーブルレジスタ１４５の値が００００となっているので、データレジスタ１４３の値、データ１を、３１８に示すように、アドレスレジスタ１４４に保持された値、４０００００００が示すメモリ１４６のアドレスに書き込む。
【０１００】
ＰＣＩターゲットデバイス１４０は、アドレスレジスタ１４４の値をインクリメントして４０００００４とし、データレジスタ１４３に前のタイムフレームでＡＤ線１８０ａにドライブされていたデータ２を取り込む。また、Ｃ＿ＢＥ＃線１８０ｂにドライブされていた値１１１１をバイトイネーブルレジスタ１４５に取り込む。
【０１０１】
また、ＰＣＩターゲットデバイス１４０のＰＣＩバスインタフェース１４１は、ＴＲＤＹ＃１８０ｅのアサートを続けて、最終のデータフェーズがこのタイムフレームで終了することをＰＣＩマスタデバイス１０１に通知する。
【０１０２】
ＰＣＩマスタデバイス１０１では、ステップＳＴ２２０，ＳＴ２２１，ＳＴ２２２を経て、ステップＳＴ２２３で転送間隔カウンタ１１４の値をインクリメントし、ステップ２２４で比較部１１６が転送間隔レジスタ１１３の値２と転送間隔カウンタ１１４の値２を比較し、一致するので、ステップＳＴ２２５に進み、カウンタ初期化部１１７は３１１に示すように転送間隔カウンタ１１４を０に初期化する。
【０１０３】
ステップＳＴ２２６を経てステップＳＴ２０８に戻り、転送間隔カウンタ１１４の値が０なので、ステップＳＴ２０９に進み、このデータフェーズが最終のデータフェーズであるので、ステップＳＴ２１０で、３０４に示すようにＦＲＡＭＥ＃線１８０ｃをディアサートして最終データフェーズであることをＰＣＩターゲットデバイスに通知する。
【０１０４】
次に、ステップＳＴ２１１で、３０２、３０３に示すように、ＰＣＩバスインタフェース１０７はＡＤ線１８０ａにデータ２を、Ｃ＿ＢＥ＃線１８０ｂにオール０をドライブする。
【０１０５】
（Ｔ１４）
メモリ書き込み制御部１４２は前のタイムフレームでバイトイネーブルレジスタ１４５の値が１１１１となっているので、アドレスレジスタ１４４に保持された値、４００００００４が示すメモリのアドレスに対しては書き込みを行わない。
【０１０６】
ＰＣＩターゲットデバイス１４０は、アドレスレジスタ１４４の値をインクリメントして４０００００８とし、データレジスタ１４３に前のタイムフレームでＡＤ線１８０ａにドライブされていたデータ２を取り込む。また、Ｃ＿ＢＥ＃線１８０ｂにドライブされていた値００００をバイトイネーブルレジスタ１４５に取り込む。
【０１０７】
ＰＣＩマスタデバイス１０１は前のタイムフレームで３０６に示すようにＴＲＤＹ＃線１８０ｅがアサートされたので、ステップＳＴ２１２を経てステップＳＴ２１３，ＳＴ２１４，ＳＴ２１５，ＳＴ２１６，ＳＴ２１７に進み、転送ワード数カウンタ１０９をインクリメントして２にし、データバッファ１０４からデータ２を削除する。さらに、ステップ２１８で転送ワード数レジスタ１０３と転送ワード数カウンタ１０９の値が一致することからステップＳＴ２２８，ＳＴ２２９に進み、３０９、３１１に示すように、これらを０に初期化する。
【０１０８】
（Ｔ１５）
メモリ書き込み制御部１４２は前のタイムフレームでバイトイネーブルレジスタ１４５の値が００００となっているので、データレジスタ１４３の値、データ２を、３２０に示すように、アドレスレジスタ１４４に保持された値、４００００００８が示すメモリ１４６のアドレスに書き込む。
【０１０９】
以上示したような動作の繰り返しにより、本実施の形態に示すＰＣＩマスタデバイス１０１は、サイクル制御部１０５が、Ｃ＿ＢＥ＃線１８０ｂを無効な値にしてバースト転送を行うことにより、等間隔に離れたアドレスへのデータの転送を高速に行うことができる。
【０１１０】
（第２の実施形態）
第１の実施形態のＰＣＩマスタデバイスの構成では、バースト転送中にターゲット側からディスコネクト応答により転送が中断された場合、中断された転送は、中断された時点でのアドレスから再開されるが、再開時のアドレスが、書き込みを行わないアドレスである場合には、開始時のデータフェーズは無駄なデータフェーズを実行してしまう。そこで、本実施の形態では、データ転送を再開する際、次に有効なデータ転送を行おうとするアドレスからはじめる機能を第１の実施形態に追加したＰＣＩマスタデバイスを説明する。
【０１１１】
図５は本発明の第２の実施形態のデータ転送制御装置である。図中、１０５ｅは再開アドレス計算部であり、バースト転送中にターゲットデバイスにより転送を中断された場合、次に有効なデータを転送するアドレスを計算してサイクル開始アドレスレジスタ１０８に書き込む。このアドレスは、（サイクル開始アドレスレジスタの値）＋（（転送間隔レジスタの値）―（転送間隔カウンタの値））×４で求められる。
【０１１２】
図６は本実施の形態の動作のフローを示す図である。第１の実施形態のフローとの違いは、ステップＳＴ２２６からステップＳＴ２０６に戻る際に、ステップＳＴ２２７ａ，ステップＳＴ２２７ｂの処理が追加されている点である。
【０１１３】
ステップＳＴ２２６において、ＳＴＯＰ＃線１８０ｇのアサートにより、バスサイクルが中断された場合、ステップＳＴ２２７ａに進み、そうでない場合、ステップＳＴ２０８に進む。
【０１１４】
ステップＳＴ２２７ａにおいて、次に有効なデータを転送するアドレスを計算し、サイクル開始アドレスレジスタ１０８に設定し、ステップＳＴ２２７ｂに進む。
【０１１５】
ステップＳＴ２２７ｂにおいて、転送間隔カウンタ１１４を初期化し、ステップＳＴ２０６に戻る。
【０１１６】
図７は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、３２１はＳＴＯＰ＃線１８０ｇの状態を示し、３２２はサイクル開始アドレスレジスタ１０８の値を示す。
【０１１７】
タイムフレームＴ４で３２１に示すようにＳＴＯＰ＃線１８０ｇがアサートされ、ＰＣＩターゲットデバイスからディスコネクト応答があるので、次のタイムフレームＴ５で３０４に示すように、ＦＲＡＭＥ＃線１８０ｃをディアサートしてバスサイクルの終了処理を行う。ここで、３１１に示すように、転送間隔カウンタ１１１の値が１となっているので、この次のタイムフレームＴ６では、再開アドレス計算手段１０５ｅで次に有効なアドレスを、
４００００００４＋（２−１）×４
により計算し、結果の値、４００００００８を３２２に示すようにサイクル開始アドレスレジスタ１０８に転送する。
【０１１８】
バスサイクルの再開後は、タイムフレームＴ７のＡＤ線１８０ａの値が示すように、アドレスは有効なデータ転送の転送先アドレス４００００００８から、データは転送中断時に次に書き込みを行うデータとしてデータバッファ１０４に格納されていた先頭データから、データ転送を行う。
【０１１９】
再開アドレス計算部１０５ｃが存在しない場合、図８Ａ，図８Ｂに示すように、Ｃ＿ＢＥ＃線１８０ｂの値が無効な値、１１１１からデータ転送が再開される（タイムフレームＴ８参照）ため、データ２がアドレス４００００００８に格納されるタイミングがタイムフレームＴ１３と、１クロックサイクル分だけ遅くなる。
【０１２０】
以上示したように、本実施の形態に示すＰＣＩマスタデバイス１０１は、データ転送を中断された場合、次に転送したいデータを転送するデータフェーズからバスサイクルを再開するので、データ転送を高速化することができる。
【０１２１】
（第３の実施形態）
第１の実施形態のＰＣＩマスタデバイスの構成では、転送先のアドレスの間隔が大きくなると、次第にデータ転送速度が遅くなる。このような場合、１ワードのデータ転送が完了するたびに一旦バスサイクルを終了したあと直ぐに次にデータを転送すべき転送先のアドレスへジャンプし、そのアドレスからバスサイクルを再開し、これを繰り返すことによってすべてのデータを転送する方法の方がデータ転送が速くなる。本実施の形態では、このようなデータ転送方法と第１の実施形態に示したデータ転送方法の２つの方法から常に高速に転送できる方を選択するＰＣＩマスタデバイスについて説明する。
【０１２２】
図９は本発明の第３の実施形態のデータ転送制御装置である。図中、１０５ｆは１ワードデータ転送制御部であり、転送形式選択部１２０により、すべてのデータを１ワードずつ個別のバスサイクルで転送すると判断した場合、転送ワード数レジスタ１０３に格納された転送ワード数の回数だけ、１ワードのデータを転送するバスサイクル（以下、１ワードデータ転送バスサイクルと呼ぶ）を発生させる。このとき、各データの転送先アドレスは、ＰＣＩバスが３２ビットバス、すなわち、４バイト幅のバスであることから、
（転送間隔レジスタ１１３の値）×４
で求まる値だけ離れているので、２回目以降のアドレスは、この値をサイクル開始アドレスレジスタ１０８の値に加算して、次のサイクルの転送先アドレス値とする。
【０１２３】
ＤＥＶＳＥＬ＃応答情報レジスタ１１８には、ターゲットデバイスのＤＥＶＳＥＬ＃の応答速度に応じて値が設定される。アドレスフェーズの次のタイムフレームでＤＥＶＳＥＬ＃がアサートされる場合、すなわち、応答速度が高速である場合、ＤＥＶＳＥＬ＃の応答遅延による１ワードデータ転送バスサイクルのバスサイクル間の遅延は発生しないので、０を設定し、応答速度が高速の場合に比べて１クロックサイクル遅くなる場合、すなわち、応答速度が中速である場合、１ワードデータ転送バスサイクルのバスサイクル間の遅延が１クロックサイクル分発生するので１を設定し、さらに１クロックサイクル遅い低速の場合は２を、それよりもさらに１クロックサイクル遅いサブトラクティブ・デコーディングのデバイスである場合は３を設定する。
【０１２４】
転送速度比較部１１９は、１ワードデータ転送バスサイクルの２つのバスサイクルの先行するバスサイクルでのデータ転送が完了してから、後のバスサイクルでのデータ転送が完了するまでのクロックサイクル数からバースト転送を行った場合の、先行するデータの書き込みを有効にしたデータ転送の完了から後のデータの書き込みを有効にしたデータ転送の完了までのクロックサイクル数を引いた値を転送形式選択部１２０に通知する。このとき、１ワードデータ転送バスサイクルのバスサイクル間のクロックサイクル数は、前回のデータ転送後のＰＣＩバスのアイドルフェーズの１サイクルと、アドレスフェーズの１サイクルと、ＤＥＶＳＥＬ＃の応答遅延の値、すなわち、ＤＥＶＳＥＬ＃応答情報レジスタ１１８の値と、次のデータ転送が行われるデータフェーズの１サイクルとなるので、結局、ＤＥＶＳＥＬ＃応答情報レジスタ１１８の値に３を加えた値となる。そこで、この値から転送間隔レジスタ１１３の値を引き、結果を転送形式選択部１２０に通知する。図１０は本実施の形態の動作の例を示すタイミングチャートを示す図である。同図において、タイムフレームＴ１およびＴ４がアドレスフェーズであり、それぞれ、直後のタイムフレームＴ２およびＴ５で３０７に示すようにＤＥＶＳＥＬ＃がアサートされており、ＤＥＶＳＥＬ＃応答速度が高速の場合を示している。タイムフレームＴ２で１回目の１ワードデータ転送バスサイクルのデータ転送が完了すると、タイムフレームＴ３でバスは一旦アイドルフェーズに入る。そして、タイムフレームＴ４で再び２回目の１ワードデータ転送バスサイクルのアドレスフェーズに入り、タイムフレームＴ５で２回目のデータ転送が完了する。すなわち、この場合はＤＥＶＳＥＬ＃応答速度が高速で、ＤＥＶＳＥＬ＃応答情報レジスタ１１８の値は０であり、１ワードデータ転送バスサイクルの２つのバスサイクルの先行するバスサイクルでのデータ転送が完了してから、後のバスサイクルでのデータ転送が完了するまでのクロックサイクル数は３サイクルとなっている。３１０の転送間隔レジスタ１１３の値４が示すように、この場合は転送速度比較部１１９によって求められる値は３から４を引いた−１が転送形式選択部１２０に通知される。
【０１２５】
転送形式選択部１２０は、転送速度比較部１１９から通知された値が１以上の場合、バースト転送を利用した方が速いので、バースト転送制御部１０５ａにデータ転送を実行するように通知し、それ以外の場合、１ワードデータ転送バスサイクルを連続的に起動した方がデータの転送が速いので、１ワードデータ転送制御部１０５ｆにデータ転送を実行するように通知する。
【０１２６】
また、本実施の形態では、ＰＣＩターゲットデバイス１４０はＤＥＶＳＥＬ＃応答が高速であるとする。
【０１２７】
図１０の３１０に示すように、転送間隔レジスタ１１３の値が４で、ＰＣＩターゲットデバイス１４０のＤＥＶＳＥＬ＃応答が高速であることから、転送速度比較部１１９の計算結果が−１となり、１以下であるので、転送形式選択部１２０で１ワードデータ転送バスサイクルを繰り返すように判断し、タイムフレームＴ１、Ｔ２に示す１回目の１ワードデータ転送バスサイクルと、タイムフレームＴ４、Ｔ５に示す２回目の１ワードデータ転送バスサイクルで２つのデータ転送を完了する。
【０１２８】
このデータ転送において、転送形式をバースト転送にした場合、図１１に示すように、ＰＣＩバス上で最後のデータ転送が完了するのがタイムフレームＴ６となるので、１サイクル遅くなる。
【０１２９】
以上示したように、本実施の形態に示すＰＣＩマスタデバイス１０１は、データ転送の間隔の値とＤＥＶＳＥＬ＃応答速度から１ワードデータ転送バスサイクルにおけるデータ転送間のサイクル数とバースト転送におけるデータ転送間のサイクル数を比較するので、アドレスジャンプによる１ワードデータ転送バスサイクルの繰り返しとバースト転送との間で常に高速なほうの転送形式を選択することができる。
【０１３０】
（第４の実施形態）
ＰＣＩターゲットデバイスに接続しているメモリがＰＣＩバスでデータが転送される速度よりも書き込み速度が遅いデバイスである場合、バースト転送中にアクノリッジを遅くすることによってウエイトを入れる。本実施の形態はそのメモリの書き込み速度に律速し、第１の実施形態で説明したものに比べてバースト転送時に２倍の転送時間がかかるシステムを想定する。その上で、Ｃ＿ＢＥ＃線がオール１で書き込みを行わないデータフェーズでウエイトサイクルを除去し、データ転送を高速化するＰＣＩターゲットデバイスについて説明する。
【０１３１】
図１２は本発明の第４の実施形態のデータ転送制御装置である。図中、１４２ｃはバイトイネーブルデコーダであり、ＰＣＩバスインタフェース１４１を通じてＣ＿ＢＥ＃線１８０ｂの値を受け取ると、その値が書き込み無効な値、すなわち１１１１であるかどうかをチェックし、１１１１である場合はＡＣＫ制御部１４２ｂに対して、直ちにＰＣＩバスインタフェース１４１にＴＲＤＹ＃線１８０ｃをアサートさせるように通知する。ＡＣＫ制御部１４２ｂはこの通知を受け取ると直ちにＰＣＩバスインタフェース１４１にＴＲＤＹ＃１８０ｃをアサートさせる。
【０１３２】
また、本実施の形態では、メモリ１４６は遅いデバイスであり、書き込みにはＰＣＩクロックの２サイクル分の時間を要するものとし、ＰＣＩバスインタフェース１４１は各データフェーズで１クロックサイクル分のウエイトを入れるものとする。
【０１３３】
図１３は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、３２４はアクノリッジ制御部１４２ｂからＰＣＩバスインタフェース１４１へのアクノリッジ信号であり、ＰＣＩバスインタフェースはこの信号が１にアサートされると、同じタイムフレームで直ちにＴＲＤＹ＃線１８０ｃを０にアサートする。メモリ１４６が書き込みに２サイクル要するデバイスなので、アクノリッジ信号は１クロックサイクルの間隔を置いてアサートされるが、バイトイネーブルデコーダ１４２ｃがＣ＿ＢＥ＃線１８０ｂの値が１１１１であると判別した場合は、メモリ１４６への書き込みが発生しないので、３２４に示すように、タイムフレームＴ６に続いてタイムフレームＴ７でもアサートされる。この結果、タイムフレームＴ６、Ｔ７と連続してＴＲＤＹ＃線１８０ｃがアサートされる。
ＰＣＩターゲットデバイス１４０にバイトイネーブルデコーダ１４２ｃがない場合、図１４に示すように、タイムフレームＴ７ではアクノリッジ信号をアサートしないので、データの転送が遅れることになる。
【０１３４】
以上示したように、本実施の形態に示すＰＣＩターゲットデバイス１４０は、メモリ１４６への実際の書き込みが発生しないタイミングでＰＣＩバスにウエイトを入れないので、データ転送を高速化することができる。
【０１３５】
（実施の形態５）
第４の実施形態で説明したＰＣＩターゲットデバイスでは、Ｃ＿ＢＥ＃線の値がオール１で、データの書き込みが行われないデータフェーズが入ると、その間ＰＣＩターゲットデバイスはメモリへの書き込み処理を行わない。つまり、Ｃ＿ＢＥ＃線の値が有効な値となるまで次の書き込みが待たされる。本実施の形態では、第４の実施形態と同様、メモリ１４６は遅いデバイスであり、書き込みにはＰＣＩクロックの２サイクル分の時間を要するものとし、ＰＣＩバスインタフェース１４１は各データフェーズで１クロックサイクル分のウエイトを入れるものとし、第４の実施形態で示したＰＣＩターゲットデバイスに、Ｃ＿ＢＥ＃線の値がオール１の間に次にデータ転送が有効となるアドレスまで書き込みアドレスを更新してＡＤ線にドライブされている次に書き込まれるべきデータを先行的にメモリに書き込む機能を追加し、Ｃ＿ＢＥ＃線の値が有効な値となるまでのメモリ書き込みの待ち時間を短縮するＰＣＩターゲットデバイスについて説明する。
【０１３６】
図１５は本発明の第５の実施形態のデータ転送制御装置である。
【０１３７】
先行書き込み制御部１４２は、先行データ転送情報レジスタ１４８ａに１が書き込まれているとき、先行書き込み情報レジスタ１４９の値が０で、有効なデータ転送が発生したタイムフレームの次のタイムフレームでＣ＿ＢＥ＃線１８０ｂが１１１１となった場合、先行書き込みアドレス計算部１４７が保持する値をアドレスレジスタ１４４に書き込むとともに、メモリ書き込み制御部１４２に対してメモリ１４２への書き込み処理を行うよう通知し、先行書き込み情報レジスタ１４９に１を書き込む。先行書き込み情報レジスタ１４９の値が１である場合、メモリ書き込み制御部１４２に対してメモリ１４６への書き込みを行わないように通知する。また、Ｃ＿ＢＥ＃線１８０ｂが有効な値でデータの転送が完了した場合、先行書き込み情報レジスタ１４９に０を書き込む。
【０１３８】
先行書き込みアドレス計算部１４７は、有効なデータ転送が発生したタイムフレームの次のタイムフレームでＣ＿ＢＥ＃線１８０ｂが１１１１となった場合、次に有効なデータが転送されるアドレスを、ＰＣＩバスが３２ビット幅、すなわち、４バイト幅なので、（データ転送間隔情報レジスタ１４８ｂの値）×４をアドレスレジスタ１４４の値に加算することによって求め、保持する。
【０１３９】
先行データ転送情報レジスタ１４８ａには、ＰＣＩマスタデバイスがＣ＿ＢＥ＃線が１１１１のタイムフレームで、ＡＤ線上に次に転送しようとする有効なデータをドライブをする場合、ＣＰＵ１６０から１が書き込まれる。
【０１４０】
データ転送間隔情報レジスタ１４８ｂには、Ｃ＿ＢＥ＃線が書き込み有効な値になるデータフェーズの間隔をＣＰＵ１６０から設定することが可能である。
【０１４１】
先行書き込み情報レジスタ１４９の値が１の場合、メモリ１４６に対してＣ＿ＢＥ＃線が１１１１の状態でＡＤ線にアサートされている値を次に転送しようとするアドレスへの書き込みがされていることを示す。
【０１４２】
図１６は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、
３２５は先行データ転送情報レジスタ１４８ａの値を示し、
３２６はデータ転送間隔情報レジスタ１４８ｂの値を示し、
３２７は先行書き込み情報レジスタ１４９の値を示す。
【０１４３】
本実施の形態では、３２５が示すように、先行データ転送情報レジスタ１４９に１が書き込まれており、ＰＣＩマスタデバイスがＣ＿ＢＥ＃線１８０ｂが１１１１のときに、次に有効なデータ転送を行いたいデータをＡＤ線１８０ａにドライブすることを示している。
【０１４４】
また、３２６に示すように、データ転送間隔情報レジスタ１４８ｂに、転送間隔レジスタ１１３と同じ値、２が書き込まれている。
【０１４５】
タイムフレームＴ６でＣ＿ＢＥ＃線１８０ｂに１１１１がアサートされると、次のタイムフレームＴ７で先行書き込みアドレス計算部１４７が有効なデータが転送されるアドレスを、
（データ転送間隔情報レジスタ１４８ｂの値）×４
すなわち、８をアドレスレジスタ３１５が前タイムフレームで保持していた値、４０００００００に加算して４００００００８であると算出し、この値を先行書き込み制御部１４２ｄが３１５に示すようにアドレスレジスタ３１５に書き込む。メモリ書き込み制御部１４２はメモリ１４６のアドレス４００００００８へデータ２の書き込みを開始し、タイムフレームＴ９で書き込みが完了する。先行書き込み情報レジスタ１４９には、３２７に示すように、タイムフレームＴ７で１が書き込まれるので、実際にバイトイネーブルレジスタ１４５が００００となるタイムフレームＴ８ではメモリ１４６への書き込みは発生しない。
【０１４６】
ＰＣＩターゲットデバイス１４０に先行書き込み制御部１４２ｄがない場合、図１３に示すように、タイムフレームＴ１０で４００００００８番地への書き込みが完了するので、本実施の形態の方が１クロックサイクル分早くデータの書き込みを完了することが出来る。
【０１４７】
以上示したように、本実施の形態に示すＰＣＩターゲットデバイス１４０は、メモリ１４６への実際の書き込みをＣ＿ＢＥ＃線が無効な値の間に先行的に行うので、データ転送を高速化することができる。
【０１４８】
（第６の実施形態）
第１の実施形態では、データの転送先のアドレスの間に一定の間隔がある場合にバースト転送が可能なデータ転送制御装置を示したが、本実施の形態では、一連のデータの転送先の中に、一定の間隔を置いてデータを転送しないアドレスがある場合にバースト転送が可能なデータ転送制御装置を示す。
【０１４９】
図１７は本発明の第６の実施形態のデータ転送制御装置である。第１の実施形態との違いは、サイクル制御部１０５がサイクル制御部１７０５に、転送間隔レジスタ１１３が本実施の形態では非転送間隔レジスタ１７１３に、転送間隔カウンタ１１４が本実施の形態では非転送間隔カウンタ１７１４に、取って代わっている点である。
【０１５０】
サイクル制御部１７０５は、第１の実施形態のサイクル制御部１０５との動作の違いは、サイクル制御部１０５が転送間隔カウンタ１１４の値が初期値０であれば、Ｃ＿ＢＥ＃線を有効な値に設定するのに対し、非転送間隔カウンタ１７１４の値が初期値０であれば、ＢＥ＃線無効化部１０５ｄによって、Ｃ＿ＢＥ＃線を無効な値に設定する点と、サイクル制御部１０５が転送間隔カウンタ１１４の値が初期値０でなければ、ＢＥ＃線無効化部１０５ｄによって、Ｃ＿ＢＥ＃線を無効な値に設定するのに対し、非転送間隔カウンタ１７１４の値が初期値０でなければ、Ｃ＿ＢＥ＃線を有効な値に設定する点である。
【０１５１】
非転送間隔レジスタ１７１３は、データを転送しないアドレスの間隔をＣＰＵ１６０からソフトウエアにより設定することが可能である。
【０１５２】
非転送間隔カウンタ１７１４は、バースト転送中にデータフェーズが完了するたびに値がインクリメント部１１５によりインクリメントされ、値が非転送間隔レジスタ１７１３の値に一致したとき、およびバスサイクルが完了したときはカウンタ初期化部１１７により初期値０が書き込まれ、値が０であるときはサイクル制御部１０５により、Ｃ＿ＢＥ＃線が無効な値に設定される。
【０１５３】
図１８は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、
３１３はデータバッファ１０４の先頭の４ワードのデータを示し、
３１３ａはデータバッファ１０４の先頭の１ワードのデータを示し、
３１３ｂはデータバッファ１０４の２番目の１ワードのデータを示し、
３１３ｃはデータバッファ１０４の３番目の１ワードのデータを示し、
３１３ｄはデータバッファ１０４の４番目の１ワードのデータを示し、
１８１０は非転送間隔レジスタ１７１３の値を示し、
１８１１は非転送間隔カウンタ１７１４の値を示す。
【０１５４】
本実施の形態では、非転送間隔レジスタ１７１３に３が設定されているので、タイムフレームＴ２からＴ４に示す３回の有効なデータフェーズの後に、タイムフレームＴ５で１度Ｃ＿ＢＥ線が１１１１となるデータフェーズが発生している。
【０１５５】
【発明の効果】
以上示したように、本発明のデータ転送制御装置によれば、所定の間隔以下に等間隔に離れたアドレスに１ワードずつ複数ワードのデータを転送する場合、転送先のアドレスが連続していない二つの１ワードデータの転送の間に、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を挿入することによって、バースト転送によるデータ転送が可能となり、シングル転送の繰り返しによるデータ転送よりも高速にデータを転送することが可能である。
【０１５６】
また、バスの書き込み制御線の書き込み禁止の状態でのデータの書き込み動作中にデータ転送の中断を通知された場合、次にデータを転送しようとするアドレスから新たなバスサイクルを開始して第２のデータの転送から実行することにより、無駄なデータフェーズを省略することができ、高速にデータを転送することが可能である。
【０１５７】
また、転送先のアドレスが連続していない第１のデータと第２のデータを順に転送する場合に、二つのデータの転送の間に、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を挿入する第１のデータ転送形式と、第１のデータの転送後に一旦バスサイクルを終了し、アドレスを次にデータを転送したいアドレスから新たにバスサイクルを開始して第２のデータを転送する第２のデータ転送形式との所要時間を比較して、所要時間が長くない方のデータ転送形式を用いてデータを転送することにより、常に最も速いデータ転送形式を選択することが可能である。
【０１５８】
また、書き込み制御線が書き込み禁止の状態である時には、マスタデバイスはデータ線に次に転送しようとするデータをドライブし、ターゲットデバイスは先行的にデータを受理することにより、データ転送の高速化が可能である。
【図面の簡単な説明】
【図１】第１の実施形態のデータ転送制御装置を示す図である。
【図２】図１に示した装置の動作のフローを示す図である。
【図３Ａ】図１に示した装置のタイミングチャートである。
【図３Ｂ】図１に示した装置のタイミングチャートである。
【図４】図１に示した装置のメモリマップを示す図である。
【図５】第２の実施形態のデータ転送制御装置を示す図である。
【図６】図５に示した装置の動作のフローを示す図である。
【図７】図５に示した装置のタイミングチャートである。
【図８Ａ】第２の実施形態の効果を示すためのタイミングチャートである。
【図８Ｂ】第２の実施形態の効果を示すためのタイミングチャートである。
【図９】第３の実施形態のデータ転送制御装置を示す図である。
【図１０】図９に示した装置のタイミングチャートである。
【図１１】第３の実施形態の効果を示すためのタイミングチャートである。
【図１２】第４の実施形態のデータ転送制御装置を示す図である。
【図１３】図１２に示した装置のタイミングチャートである。
【図１４】第４の実施形態の効果を示すためのタイミングチャートである。
【図１５】第５の実施形態のデータ転送制御装置を示す図である。
【図１６】図１５に示した装置のタイミングチャートである。
【図１７】第６の実施形態のデータ転送制御装置を示す図である。
【図１８】図１７に示した装置のタイミングチャートである。
【図１９】従来のデータ転送制御装置を示す図である。
【図２０Ａ】図１９に示した装置のタイミングチャートである。
【図２０Ｂ】図１９に示した装置のタイミングチャートである。
【符号の説明】
１０１  ＰＣＩマスタデバイス
１０２  転送先開始アドレスレジスタ
１０３  転送ワード数レジスタ
１０４  データバッファ
１０５  サイクル制御部
１０５ａ  バースト転送制御部
１０５ｂ  データ更新部
１０５ｃ  中断サイクル再開部
１０５ｄ  ＢＥ線無効化部
１０５ｅ  再開アドレス計算部
１０５ｆ  １ワードデータ転送制御部
１０４  転送間隔レジスタ
１０５  ターゲット情報レジスタ
１０６  転送開始レジスタ
１０７  ＰＣＩバスインタフェース
１０８  サイクル開始アドレスレジスタ
１０９  転送ワード数カウンタ
１１０  インクリメント部
１１１  比較部
１１２  カウンタ初期化部
１１３  転送間隔レジスタ
１１４  転送間隔カウンタ
１１５  インクリメント部
１１６  比較部
１１７  カウンタ初期化部
１１８  ＤＥＶＳＥＬ＃応答情報レジスタ
１１９  転送速度比較部
１２０  転送形式選択部
１４０  ＰＣＩターゲットデバイス
１４１  ＰＣＩバスインタフェース
１４２ａ  アドレスデコーダ
１４２ｂ  アクノリッジ信号制御部
１４２ｃ  バイトイネーブルデコーダ
１４２ｄ  先行書き込み制御部
１４３  データレジスタ
１４４  アドレスレジスタ
１４５  バイトイネーブルレジスタ
１４６  メモリ
１４７  先行書き込みアドレス計算部
１４８ａ  先行データ転送情報レジスタ
１４８ｂ  データ転送間隔情報レジスタ
１４９  先行書き込み情報レジスタ
１６０  ＣＰＵ
１７０  メモリ
１８０  ＰＣＩバス
１８０ａ  ＡＤ線
１８０ｂ  Ｃ＿ＢＥ＃線
１８０ｃ  ＦＲＡＭＥ＃線
１８０ｄ  ＩＲＤＹ＃線
１８０ｅ  ＴＲＤＹ＃線
１８０ｆ  ＤＥＶＳＥＬ＃線
１８０ｇ  ＳＴＯＰ＃線
１９０  バスリクエスト線
１９１  バスグラント線
【図１】
2004280191.tif 000003
【図２】
2004280191.tif 000004
【図３Ａ】
2004280191.tif 000005
【図３Ｂ】
2004280191.tif 000006
【図４】
2004280191.tif 000007
【図５】
2004280191.tif 000008
【図６】
2004280191.tif 000009
【図７】
2004280191.tif 000010
【図８Ａ】
2004280191.tif 000011
【図８Ｂ】
2004280191.tif 000012
【図９】
2004280191.tif 000013
【図１０】
2004280191.tif 000014
【図１１】
2004280191.tif 000015
【図１２】
2004280191.tif 000016
【図１３】
2004280191.tif 000017
【図１４】
2004280191.tif 000018
【図１５】
2004280191.tif 000019
【図１６】
2004280191.tif 000020
【図１７】
2004280191.tif 000021
【図１８】
2004280191.tif 000022
【図１９】
2004280191.tif 000023
【図２０Ａ】
2004280191.tif 000024
【図２０Ｂ】
2004280191.tif 000025