(57)【特許請求の範囲】
【請求項１】
ＵＳＢインタフェースを介してホストコンピュータとデータ通信を行うデータ処理装置であって、
前記ホストコンピュータからの転送要求に応じたトランザクションを処理する複数のエンドポイントと、
前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断し、異なるエンドポイントへの転送要求であるとき、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させるトグルビット切り替え回路と、
を備えたことを特徴とするデータ処理装置。
【請求項２】
前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるトークンパケットに含まれているエンドポイント番号を記憶するための記憶領域を有し、該記憶領域に記憶されているエンドポイント番号と、現在のトランザクションで転送要求を受けたエンドポイントのエンドポイント番号とを比較することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるハンドシェイクパケットを受け取ると、現在のトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットの値を反転させることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
ＵＳＢインタフェースを介してホストコンピュータとデータ
通信を行う複数のエンドポイントのうち、前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントが同一であるか否かを判断し、異なるエンドポイントへの転送要求である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させるようにしたことを特徴とするエラー訂正方法。
【請求項５】
前記前回のトランザクションで転送要求を受けたエンドポイントと前記現在のトランザクションで転送要求を受けたエンドポイントが同一である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値に従ってデータの再送処理を行うことを特徴とする請求項４記載のエラー訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びエラー訂正方法に係り、詳しくは、ＵＳＢインタフェースによりホストコンピュータとデータ通信を行う際に好適なデータ処理装置に関するものである。
【０００２】
近年、ホスト機能を有するコンピュータ（パソコン等）とそれに接続した周辺機器との間で通信を行うためのシリアルインタフェースの一種として、ＵＳＢ（Universal Serial Bus）インタフェース（以下、単にＵＳＢ）が普及している。このＵＳＢを用いて行うパソコン（以下、ＵＳＢホスト）と周辺機器（以下、ＵＳＢデバイス）との間の通信では、エラーを早期に検出してデータ転送を効率よく行うことが求められている。
【背景技術】
【０００３】
通常、ＵＳＢを用いたデータ転送はトランザクションとよばれる転送単位で行われ、各トランザクションは主にトークンパケット、データパケット、ハンドシェイクパケットを使用して行われる。
【０００４】
図８は、各パケットのフォーマットを示す説明図である。
図８（ａ）に示すように、トークンパケットは、８ビットのパケットＩＤ（ＰＩＤ）と、７ビットのＵＳＢアドレス（ＡＤＤＲ）と、４ビットのエンドポイント番号（ＥＮＤＰ）と、５ビットのＣＲＣ (Cyclic Redundancy Check)（ＣＲＣ５）とから構成される２４ビット（固定長）のパケットである。尚、パケットＩＤはパケットの判別、ＵＳＢアドレスはＵＳＢデバイスの判別、エンドポイント番号はＵＳＢデバイスにおけるエンドポイント（転送型）の判別に用いられ、ＣＲＣ５は、ＵＳＢアドレスとエンドポイント番号のチェックに用いられる。
【０００５】
図８（ｂ）に示すように、データパケットは、８ビットのＰＩＤと、０〜８１９２ビットのデータフィールド（ＤＡＴＡ）と、１６ビットのＣＲＣ（ＣＲＣ１６）とから構成される２４〜８２１６ビット（可変長）のパケットである。尚、ＣＲＣ１６は、データフィールドのチェックに用いられる。
【０００６】
図８（ｃ）に示すように、ハンドシェイクパケットは、８ビットのＰＩＤのみで構成される固定長のパケットである。
上記各パケット（トークンパケット、データパケット、ハンドシェイクパケット）の種類は、それらに含まれるＰＩＤ（８ビット）のデータパターンによって判別される。
【０００７】
図９は、ＰＩＤのフォーマットを示す説明図である。
ＰＩＤは、ＰＩＤ０〜ＰＩＤ３（４ビット）と、それらのデータパターンと逆パターンを持つ／ＰＩＤ０〜／ＰＩＤ３（４ビット）とから構成され、ＵＳＢホスト或いはＵＳＢデバイスで受信されるパケットは、このＰＩＤ（８ビット）のデータパターン（全１６通り）によって認識される。
【０００８】
図１０は、トランザクションの処理の流れを示すフローチャートである。
図１０（ａ）は、ＵＳＢデバイスからＵＳＢホストへデータ転送を行うＩＮトランザクションの処理を示す。
【０００９】
まず、ＵＳＢホストは、ＵＳＢデバイスにＩＮトークンパケットを送信し、ＩＮトランザクションの転送の開始をＵＳＢデバイスに通知する。それを受けて、ＵＳＢデバイスは、固有のデータを含むデータパケットをＵＳＢホストに送信する。ＵＳＢホストは、そのデータパケットを受信すると、それを正常に受信した旨を示すＡＣＫハンドシェイクパケットをＵＳＢデバイスに送信する。ＵＳＢデバイスは、このＡＣＫハンドシェイクパケットを受け取ることにより、転送が正常に終了したことを確認する。
【００１０】
図１０（ｂ）は、ＵＳＢホストからＵＳＢデバイスへデータ転送を行うＯＵＴトランザクションの処理を示す。
まず、ＵＳＢホストは、ＵＳＢデバイスにＯＵＴトークンパケットを送信し、ＯＵＴトランザクションの転送の開始をＵＳＢデバイスに通知する。その後、ＵＳＢホストは、固有のデータを含むデータパケットをＵＳＢデバイスに送信する。ＵＳＢデバイスは、そのデータパケットを受信すると、それを正常に受信した旨を示すＡＣＫハンドシェイクパケットをＵＳＢホストに送信する。ＵＳＢホストは、このＡＣＫハンドシェイクパケットを受け取ることにより、転送が正常に終了したことを確認する。
【００１１】
図１１は、従来のＵＳＢデバイスにおけるパケット判別処理を説明するフローチャートである。
ＵＳＢデバイスは、パケットを受信すると（ステップ９１）、そのパケットの種類をＰＩＤのデータパターンによって判定する（ステップ９２）。このとき、ＰＩＤがトークンパケット、データパケット、ハンドシェイクパケットの何れのパケットにも該当しない場合はタイムアウト処理（転送処理の中止）を行う（ステップ９３）。
【００１２】
一方、上記ステップ９２において、ＰＩＤがトークンパケットに該当する場合には、ＵＳＢデバイスは、受け取ったＵＳＢアドレス（ＡＤＤＲ）が正しいか否かを判定する（ステップ９４ａ）。
【００１３】
ＵＳＢデバイスは、ＵＳＢアドレスが正しい（即ち自デバイスのアドレスである）場合、エンドポイント番号（ＥＮＤＰ）と転送型とが一致するか否かを判断する（ステップ９４ｂ）。例えば、ＵＳＢデバイスに設定されているエンドポイントの転送型が受信型である場合に、送信型を表すエンドポイント番号を受け取る場合にはエラーと判断する。
【００１４】
ＵＳＢデバイスは、エンドポイント番号が自デバイスの転送型である場合、ＵＳＢアドレス（ＡＤＤＲ）及びエンドポイント番号（ＥＮＤＰ）のデータ値が正しいか否かをＣＲＣ５によりチェックする（ステップ９４ｃ）。このとき、データ値が正しい場合、ＵＳＢデバイスは、トランザクションを開始するための処理を行う（ステップ９４ｄ）。ちなみに、上記各ステップ９４ａ〜９４ｃのうち、少なくとも何れかでエラーと判断する場合には、タイムアウト処理を行う（上記ステップ９３）。
【００１５】
また、上記ステップ９２において、ＰＩＤがデータパケットに該当する場合には、ＵＳＢデバイスは、受け取ったデータフィールド（ＤＡＴＡ）のデータ値が正しいか否かをＣＲＣ１６によりチェックする（ステップ９５ａ）。このとき、データ値が正しい場合、ＵＳＢデバイスは、データ受信処理を行う（ステップ９５ｂ）。逆に、データ値が正しくない場合にはタイムアウト処理を行う（上記ステップ９３）。
【００１６】
また、上記ステップ９２において、ＰＩＤがハンドシェイクパケットに該当する場合には、ＵＳＢデバイスは、トランザクションを終了するための処理を行う（ステップ９６）。
【００１７】
次に、従来のＵＳＢデバイスのエラー検出・訂正機能について説明する。
図１２は、従来のＵＳＢデバイスにおけるエラー訂正回路を示す概略ブロック図である。
【００１８】
例えばパソコン等のホスト機能を有するＵＳＢホスト１０１には、周辺装置としてのＵＳＢデバイス１０２がＵＳＢバス１０３を介して接続されている。ＵＳＢデバイス１０２は、ＳＩＥ(Serial Interface Engine) １０４と、複数（図では簡略化して２つのみ示す）のエンドポイント１０５，１０６とを含む。
【００１９】
ＳＩＥ１０４は、ＵＳＢホスト１０１から受信したパケットをデコードしてデジタルデータに変換する機能及びＵＳＢホスト１０１へ送信するパケットをフォーマット化する機能を持つ。
【００２０】
エンドポイント１０５，１０６は、それぞれ固有のデータ記憶領域及び転送機能を持つＦＩＦＯ(First In First Out)である。即ち、上述したＵＳＢデバイス１０２の転送型（受信型、送信型、送受信型等）は、各エンドポイント１０５，１０６のＦＩＦＯの特性によって決定され、各エンドポイント１５，１６には、それらのＦＩＦＯに対応したエンドポイント番号（ＥＮＤＰ）が割り当てられている。これらの各エンドポイント１０５，１０６には、それぞれデータトグルビットを記憶するための領域（図中、トグルビット）１０５ａ，１０６ａが設定されている。
【００２１】
従来、このようなＵＳＢデバイス１０２において、エラー検出・訂正機能は各エンドポイント１０５，１０６に記憶されるデータトグルビットにより実現される。
詳述すると、例えばエンドポイント１０５が送信型（送信機能を持つＦＩＦＯ）であって、領域１０５ａに記憶されているデータトグルビットの値が[０]の場合、ＵＳＢデバイス１０２は、偶数データパケットとしての情報を持つデータパケット（以下、データ０パケット）を送信する。逆に、領域１０５ａに記憶されているデータトグルビットの値が[１]の場合、ＵＳＢデバイス１０２は、奇数データパケットとしての情報を持つデータパケット（以下、データ１パケット）を送信する。
【００２２】
また、ＵＳＢデバイス１０２は、ＵＳＢホスト１０１からのＡＣＫハンドシェイクパケットを受信すると、領域１０５ａに記憶されているデータトグルビットの値を変更する。逆に、ＡＣＫハンドシェイクパケットを受信しない場合には、領域１０５ａのデータトグルビットの値を変更しない（データトグルビットエラーが発生する）。
【００２３】
従って、ＵＳＢデバイス１０２は、エンドポイント１０５，１０６記憶されているデータトグルビットの値が例えば[０]，[１]，[０]，[１]，…のようにトグルする場合には、転送が正常に行われていると判断する。逆に、ＵＳＢデバイス１０２は、ＡＣＫハンドシェイクパケットを受信しなかった場合にはデータトグルビットの値を変更せず、データトグルビットエラーを発生させる。この場合、ＵＳＢデバイス１０２は、ＵＳＢホスト１０１から次のＩＮトークンパケットを受け取ることでデータトグルビットエラーを検出し、データパケットの再送処理を行う。その後、ＵＳＢデバイス１０２は、そのデータパケットに対するＡＣＫハンドシェイクパケットをＵＳＢホスト１０１から受け取ることにより、データトグルビットの値を変更してエラーを訂正する（エラーから復帰する）。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
ところで、上記のような従来の技術では、以下の問題がある。
［１：パケットの誤判定による転送効率の低下］
ＵＳＢバス１０３を流れる信号は、そのバスケーブル（ＵＳＢバス１０３）内での反射やノイズ等の影響によりデータ値が変移してしまう場合がある。上記したように、パケットの判別はＰＩＤ（パケットＩＤ）のデータパターンによって行われる。このため、例えばノイズ等の影響により、ＰＩＤ０〜ＰＩＤ３とそれらと逆パターンを持つ／ＰＩＤ０〜／ＰＩＤ３のうち、対応する２つのビット値が互いに反転してしまう場合には、そのパケットが他の異なるパケットと間違って判定されてしまうことがあった。
【００２５】
例えば、図１３に示すように、ＯＵＴトークンパケットとしてのデータパターンを持つＰＩＤにおいて、ＰＩＤ３（[０]）とそれに対応する／ＰＩＤ３（[１]）の各ビット値が互いに反転してしまう場合、このＰＩＤはデータ０パケットとしてのデータパターンを持つようになる。つまり、この場合、ＵＳＢデバイス１０２は、ＵＳＢホスト１０１から送信されたＯＵＴトークンパケットをデータ０パケットと誤判定して受け取る。
【００２６】
こうしたパケットの誤判定は転送効率を低下させる原因であり、延いてはシステム全体の性能を低下させることになる。因みに、このようなパケットの誤判定は、ＵＳＢ２．０仕様などのハイ・スピードモードでは、転送速度が４８０Ｍｂｐｓと高速であり、且つ信号振幅が４００ｍＶと小さいために、特に生じ易く、高速化を実現する上で支障があった。
【００２７】
［２：エラー検出・訂正処理の遅れによる転送効率の低下］
従来では、ＵＳＢデバイス１０２がＡＣＫハンドシェイクパケットを受信できず、データトグルビットエラーとなる場合には、ＵＳＢホスト１０１から次のトークンパケット（具体的にはＩＮトークンパケット）を受け取るまでそのエラーから復帰できない。つまり、データトグルビットエラーが発生したエンドポイントは、ＵＳＢホスト１０１から次の転送要求があるまでデータトグルビットエラーを起こしたままとなる。
【００２８】
図１４は、従来のエラー訂正処理を説明するフローチャートである。尚、ここでは、説明の便宜上、各々のトランザクションで使用するＵＳＢホスト１０１のエンドポイントを例えばエンドポイントｈ１，ｈ２とし、ＵＳＢデバイス１０２のエンドポイントを例えばエンドポイントｄ１，ｄ２とする。
【００２９】
今、ＵＳＢホスト１０１は、エンドポイントｈ１とＵＳＢデバイス１０２のエンドポイントｄ１との間でトランザクションを開始する。具体的には、ＩＮトークンパケットを送信してデータの転送要求を行う（ステップ１１１）。それを受けて、ＵＳＢデバイス１０２は、エンドポイントｄ１に記憶されているデータトグルビットの値（[０]）に従ってデータ０パケットをＵＳＢホスト１０１に送信する（ステップ１１２）。ＵＳＢホスト１０１は、そのデータ０パケットを受信すると、エンドポイントｈ１のデータトグルビットを[０]から[１]に変更するとともに、データを正常に受信した旨を通知するＡＣＫハンドシェイクパケットをＵＳＢデバイス１０２に送信する（ステップ１１３）。
【００３０】
このとき、そのＡＣＫハンドシェイクパケットをＵＳＢデバイス１０２が何らかの原因で受信できなかった場合（図中、その様子を破線で示す）、ＵＳＢデバイス１０２は、エンドポイントｄ１のデータトグルビットを[０]のまま変更しない。つまり、エンドポイントｄ１はデータトグルビットエラーとなる。
【００３１】
この状態で、ＵＳＢホスト１０１は、エンドポイントｈ２とＵＳＢデバイス１０２のエンドポイントｄ２との間で次のトランザクションを開始する（ステップ１１４）（ここではそのトランザクションの具体的な処理については省略する）。このトランザクションが正常に終了する（即ちＵＳＢホスト１０１、ＵＳＢデバイス１０２の何れか一方が他方からのＡＣＫハンドシェイクパケットを受信する）と（ステップ１１５）、エンドポイントｈ２及びエンドポイントｄ２の各データトグルビットはそれぞれ[０]から[１]に変更される。
【００３２】
その後、ＵＳＢホスト１０１は、エンドポイントｈ１とＵＳＢデバイス１０２のエンドポイントｄ１との間でさらに次のトランザクションを開始する。具体的には、ＩＮトークンパケットを送信してデータの転送要求を行う（ステップ１１６）。それを受けて、ＵＳＢデバイス１０２は、エンドポイントｄ１に記憶されているデータトグルビットの値（[０]）に対応したデータ０パケットをＵＳＢホスト１０１に送信する（ステップ１１７）。即ち、ＵＳＢデバイス１０２は、上記ステップ１１３でＡＣＫハンドシェイクパケットを受信しなかったために発生したデータトグルビットエラー（値が[０]のまま保持されているデータトグルビット）を検出し、データ０パケットの再送処理を行う。
【００３３】
ＵＳＢホスト１０１は、そのデータ０パケットを受信すると、それを受信した旨を通知するＡＣＫハンドシェイクパケットをＵＳＢデバイス１０２に送信する。しかしながら、このトランザクションに於いて、ＵＳＢホスト１０１がＵＳＢデバイス１０２に要求するデータはデータ１パケットであり、本来期待するデータとは異なる（即ちＵＳＢホスト１０１は、ここで受信したデータ０パケットを有効なデータとしない）。従って、ＵＳＢホスト１０１は、エンドポイントｈ１のデータトグルビットを変更しない（データトグルビットの値は[１]のまま）。
【００３４】
一方、ＵＳＢデバイス１０２は、ＵＳＢホスト１０１からのＡＣＫハンドシェイクパケットを受信すると（ステップ１１８）、エンドポイントｄ１のデータトグルビットの値を[０]から[１]に変更する。これにより、エンドポイントｄ１はデータトグルビットエラーから復帰する。
【００３５】
このように、ＵＳＢホスト１０１ではデータ０パケットを正常に受信し、ＡＣＫハンドシェイクパケットを送信したにも関わらず、ＵＳＢデバイス１０２がそのパケットを受信できなかったために、データトグルビットエラーが発生する場合には、エンドポイントｄ１は次の転送要求があるまでそのトランザクションの転送データ（即ちデータ０パケット）を保持しなければならない。
【００３６】
この場合、エラーが生じているエンドポイントｄ１は、新たな転送データ（即ちデータ１パケット）を用意することができなくなり、ＵＳＢホスト１０１からの次のトランザクションに即座に対応することができなくなる。即ち、エンドポイントｄ１は、ＵＳＢホスト１０１からの次の転送要求では、まずエラー検出・訂正処理のためのトランザクション（ステップ１１６〜１１８）を行う必要がある。これにより、ＵＳＢホスト１０１は、エラー訂正後（即ちステップ１１８の後）に、エンドポイントｄ１に対して再度転送要求を行う必要がある。
【００３７】
従来では、このようにエラー検出・訂正のためのトランザクションが余分に行われることによってＵＳＢバス１０３の帯域が損失し、転送効率が低下するという問題があった。その結果、システム全体の性能が低下するという問題を有していた。
【００３８】
本発明は上記問題点を解決するためになされたものであって、その目的は転送効率を向上させることのできるデータ処理装置及びエラー訂正方法を提供することにある。
【課題を解決するための手段】
【００３９】
上記目的を達成するため、請求項１，４に記載の発明によれば、トグルビット切り替え回路は、ＵＳＢインタフェースを介してホストコンピュータからの転送要求に応じたトランザクションを処理する複数のエンドポイントのうち、前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断し、異なるエンドポイントへの転送要求であるときには前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させる。これにより、データトグルビットエラーが発生する場合にも、そのエラーを早期に検出して訂正することができるため、転送効率の低下を抑止することができる。また、エラーが早期に検出及び訂正されることにより、無用なトランザクションが実行されることが防止され、ホストコンピュータからの転送要求に対して即座に対応可能となる。従って、転送効率を向上させることができる。
【００４０】
請求項２に記載の発明によれば、前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるトークンパケットに含まれているエンドポイント番号を記憶するための記憶領域を有し、該記憶領域に記憶されているエンドポイント番号と、現在のトランザクションで転送要求を受けたエンドポイントのエンドポイント番号とを比較するようにした。
【００４１】
請求項３に記載の発明によれば、前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるハンドシェイクパケットを受け取ると、現在のトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットの値を反転させる。
【００４２】
請求項５に記載の発明によれば、前記前回のトランザクションで転送要求を受けたエンドポイントと前記現在のトランザクションで転送要求を受けたエンドポイントが同一である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値に従ってデータの再送処理を行うようにした。
【発明の効果】
【００４３】
以上詳述したように、本発明によれば、転送効率を向上させることのできるデータ処理装置及びエラー訂正方法を提供することができる。
【発明を実施するための最良の形態】
【００４４】
（第一実施形態）
以下、本発明を具体化した第一実施形態を図１〜図３に従って説明する。
図１は、パケット判別回路の構成を示す概略ブロック図である。
【００４５】
ＵＳＢによる通信を管理するホストコンピュータ（以下、ＵＳＢホスト１１）は、データ処理装置としてのＵＳＢデバイス１２とＵＳＢバス１３を介して相互に接続されている。尚、ＵＳＢデバイス１２は、ＵＳＢホスト１１としてのパソコン等に接続される例えばハードディスクやＭＯ(Magneto Optic )、ＤＶＤ(Digital Versatile Disk)，ＣＤ(Compact Disk)などのＡＴＡ／ＡＴＡＰＩ(ATA Packet Interface)デバイス、あるいはプリンタ、スキャナ等の周辺装置である。図１は、そのＵＳＢデバイス１２におけるパケット判別回路の構成部分について示したものである。
【００４６】
ＵＳＢデバイス１２（パケット判別回路）は、ＳＩＥ２１、パケット判別手段としてのＰＩＤデコーダ２２、パケット長測定回路２３、第１〜第３のパケットチェック回路２４〜２６及び複数（図では簡略化して例えば２つ示す）のエンドポイント２７，２８を備える。尚、本実施形態において、第１のパケットチェック回路２４はトークンパケットチェック回路、第２のパケットチェック回路２５はデータパケットチェック回路、第３のパケットチェック回路２６はハンドシェイクパケットチェック回路である。
【００４７】
ＳＩＥ２１は、ＵＳＢホスト１１から受信したパケットをデコードしてデジタルデータに変換し、そのデータをＰＩＤデコーダ２２及びパケット長測定回路２３に出力する。
ＰＩＤデコーダ２２は、ＳＩＥ２１を介して受け取ったデータ（パケット）の種類をＰＩＤ（パケットＩＤ）のデータパターンによって判別する。そして、ＰＩＤデコーダ２２は、受信したパケットがトークンパケットの場合には、そのパケットデータを第１のパケットチェック回路２４に出力する。また、データパケットの場合には、そのパケットデータを第２のパケットチェック回路２５に出力する。また、ハンドシェイクパケットの場合には、そのパケットデータを第３のパケットチェック回路２６に出力する。
【００４８】
パケット長測定回路２３は、ＳＩＥ２１を介して受け取ったデータ（パケット）のパケット長を測定し、そのパケット長が上記ＰＩＤによって判別されたパケットの種類に適合しているか否かを判定する。
【００４９】
詳述すると、図８（ａ）に示すように、トークンパケットは、ＰＩＤ、ＵＳＢアドレス（ＡＤＤＲ）、エンドポイント番号（ＥＮＤＰ）、ＣＲＣ５から構成される２４ビット（固定長）のパケットである。従って、パケット長測定回路２３は、測定したパケット長が２４ビットであるとき、トークンパケットとして判定する。
【００５０】
また、図８（ｂ）に示すように、データパケットは、ＰＩＤ、データフィールド（ＤＡＴＡ）、ＣＲＣ１６から構成される２４〜８２１６ビット（可変長）のパケットである。従って、パケット長測定回路２３は、測定したパケット長が２４ビット以上、且つ８２１６ビット以下であるとき、データパケットとして判定する。
【００５１】
また、図８（ｃ）に示すように、ハンドシェイクパケットは、ＰＩＤのみによって構成される８ビット（固定長）のパケットである。従って、パケット長測定回路２３は、測定したパケット長が８ビットであるとき、ハンドシェイクパケットとして判定する。
【００５２】
このように、パケット長測定回路２３は、測定したパケット長がＰＩＤデコーダ２２により判別されたパケットの種類に適合する場合には、そのパケットデータを受け取るパケットチェック回路での処理を開始させるための信号を出力する。逆に、適合しない場合には、そのパケットデータを受け取るパケットチェック回路での処理を中止させるための信号を出力する。
【００５３】
具体的には、第１のパケットチェック回路２４は、ＰＩＤデコーダ２２を介してトークンパケットを受け取ると、トランザクションを開始するための処理を行う。その際、パケット長測定回路２３により測定されるパケット長がトークンパケットに適合しない場合（２４ビット以外）は、処理を中止する。
【００５４】
第２のパケットチェック回路２５は、ＰＩＤデコーダ２２を介してデータパケットを受け取ると、データ受信のための処理を行う。その際、パケット長測定回路２３により測定されるパケット長がデータパケットに適合しない場合（２４ビット未満、或いは８２１７ビット以上）は、処理を中止する。
【００５５】
第３のパケットチェック回路２６は、ＰＩＤデコーダ２２を介してハンドシェイクパケットを受け取ると、トランザクションを終了するための処理を行う。その際、パケット長測定回路２３により測定されるパケット長がハンドシェイクパケットに適合しない場合（８ビット以外）は、処理を中止する。
【００５６】
エンドポイント２７，２８は、それぞれ固有のデータ記憶領域及び転送機能を持つＦＩＦＯであり、各トランザクション（ＩＮトランザクション、ＯＵＴトランザクション等）は対応するエンドポイント２７，２８を使用して行われる。例えば、ＩＮトランザクション（ＵＳＢデバイス１２からＵＳＢホスト１１へのデータ転送）は、ＦＩＦＯが送信型の転送機能を有するエンドポイントを使用して行われる。これらの各エンドポイント２７，２８には、それらのＦＩＦＯの特性を表すエンドポイント番号（ＥＮＤＰ）が割り当てられている。
【００５７】
図２は、ＵＳＢデバイス１２におけるパケット判別処理を説明するフローチャートである。
ＵＳＢデバイス１２がパケットを受信すると（ステップ３１）、ＰＩＤデコーダ２２は、パケットの種類をＰＩＤのデータパターンによって判別する（ステップ３２）。このとき、ＰＩＤがトークンパケット、データパケット、ハンドシェイクパケットの何れのパケットにも該当しない場合はタイムアウト処理（転送処理の中止）を行う（ステップ３３）。
【００５８】
一方、上記ステップ３２において、ＰＩＤがトークンパケットに該当する場合には、パケット長測定回路２３は、そのパケット長が２４ビットであるか否かを判定する（ステップ３４ａ）。このとき、２４ビット以外である場合はタイムアウト処理を行う（上記ステップ３３）。
【００５９】
パケット長が２４ビットである場合、第１のパケットチェック回路２４は、ＵＳＢアドレス（ＡＤＤＲ）が正しいか否か（ステップ３４ｂ）、エンドポイント番号（ＥＮＤＰ）と転送型が一致するか否か（ステップ３４ｃ）及びＣＲＣ５のチェック（ステップ３４ｄ）をそれぞれ行う。尚、これらの各ステップ３４ｂ〜３４ｄは、図１１のステップ９４ａ〜９４ｃと同様であるため、詳細な説明を省略する。
【００６０】
即ち、第１のパケットチェック回路２４は、各ステップ３４ｂ〜３４ｄにてエラーが検出されない場合にのみトランザクションを開始するための処理を開始する（ステップ３４ｅ）。逆に、何れかのステップにてエラーが検出される場合にはタイムアウト処理を行う（上記ステップ３３）。
【００６１】
また、上記ステップ３２において、ＰＩＤがデータパケットに該当する場合には、パケット長測定回路２３は、そのパケット長が２４ビット以上であるか否かを判定する（ステップ３５ａ）。このとき、２４ビット未満である場合はエラーと判定し、タイムアウト処理を行う（上記ステップ３３）。
【００６２】
パケット長が２４ビット以上の場合、第２のパケットチェック回路２５は、データフィールド（ＤＡＴＡ）が正しいか否かをＣＲＣ１６によりチェックする（ステップ３５ｂ）。尚、このステップ３５ｂは、図１１のステップ９５ａと同様である。即ち、ステップ３５ｂにてエラーが検出される場合にはタイムアウト処理を行う（上記ステップ３３）。
【００６３】
一方、上記ステップ３５ｂにてエラーが検出されない（ＤＡＴＡが正当なデータである）場合、パケット長測定回路２３は、このパケットが８２１６ビット以下であるか否かを判定する（ステップ３５ｃ）。このとき、８２１７ビット以上である場合はタイムアウト処理を行う（上記ステップ３３）。そして、パケット長が８２１６ビット以下である場合には、第２のパケットチェック回路２５は、データ受信処理を行う（ステップ３５ｄ）。
【００６４】
尚、本実施形態では、データパケットのパケット長が８２１６ビット以下であるか否かの判定処理をＣＲＣ１６のチェック後に行うようにしたが、上記ステップ４５ａの実行時、或いは同ステップ４５ａの実行後に行うようにしてもよい。
【００６５】
また、上記ステップ３２において、ＰＩＤがハンドシェイクパケットに該当する場合には、パケット長測定回路２３は、そのパケット長が８ビットであるか否かを判定する（ステップ３６ａ）。このとき、８ビット以外である場合はタイムアウト処理を行う（上記ステップ３３）。一方、パケット長が８ビットの場合、第３のパケットチェック回路２６は、トランザクションを終了するための処理を行う（ステップ３６ｂ）。
【００６６】
図３は、本実施形態のパケット判別回路の構成をＵＳＢハードディスクデバイスに適用した例を示すブロック図である。尚、図１と同様の構成部分については同一符号を付して図示する。
【００６７】
このＵＳＢハードディスクデバイス４１は、USB Mass Storage Class Bulk Only Mode 1.0 に準拠したものであり、第１〜第３のエンドポイント４２〜４４を有する。各エンドポイント４２〜４４にはハードディスク制御回路４５が接続され、そのハードディスク制御回路４５にはデータ記録部４６が接続されている。
【００６８】
第１のエンドポイント４２（図中、Control EP）は、送受信型の転送機能を持つＦＩＦＯであって、主にデバイスの初期化を行うために用いられる。
第２のエンドポイント４３（図中、Bulk OUT EP ）、第３のエンドポイント４４（図中、Bulk IN EP）は、それぞれ受信型の転送機能、送信型の転送機能を持つＦＩＦＯであって、これらのエンドポイント４３，４４はハードディスクへのデータの読み書き及びコマンドの転送に用いられる。
【００６９】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）ＵＳＢデバイス１２（パケット判別回路）は、受信したパケットの種類をＰＩＤのデータパターンによって判別するＰＩＤデコーダ２２と、そのＰＩＤデコーダ２２の判別結果が正しいか否かをパケット長を測定して判定するパケット長測定回路２３とを備える。この構成では、ＵＳＢバス１３を伝送する信号のデータ値が、ケーブル（ＵＳＢバス１３）内での反射やノイズ等の影響により変移してしまう場合にもパケットを正しく判別することができる。これにより、ＵＳＢデバイス１２におけるパケットの誤判定を低減させることができるため、転送効率の低下を抑止することができる。延いてはシステム全体のパフォーマンスが低下することを抑止できる。
【００７０】
（２）パケット長測定回路２３にて測定したパケット長がＰＩＤデコーダ２２にて判別されるパケットの種類に適合しない場合には、そのパケットに対応する第１〜第３のパケットチェック回路２４〜２６での処理を中止するようにした。これにより、パケットの誤判定が生じている場合にはそのエラーを早期に検出することができるため、転送効率の向上化に貢献できる。
【００７１】
（第二実施形態）
以下、本発明を具体化した第二実施形態を図４〜図７に従って説明する。
図４は、データトグルビットエラー訂正回路（以下、単にエラー訂正回路という）の構成を示す概略ブロック図である。尚、同図は、ＵＳＢデバイス５１におけるエラー訂正回路の構成部分について示したものである。本実施形態の構成（図４）において、第一実施形態の構成（図１）と同様の構成部分には同一符号を付し、それらの詳細な説明を一部省略する。
【００７２】
ＵＳＢデバイス５１（エラー訂正回路）は、第一実施形態同様、ＵＳＢホスト１１とＵＳＢバス１３を介して相互に接続されている。このＵＳＢデバイス５１は、ＳＩＥ２１、ＰＩＤデコーダ２２、第１及び第２のパケットチェック回路５２，５３、トグルビット切り替え回路５４及び複数（図では簡略化して例えば３つ示す）のエンドポイント５５〜５７を備える。
【００７３】
尚、本実施形態において、第１のパケットチェック回路５２はトークンパケットチェック回路であり、第２のパケットチェック回路５３はハンドシェイクパケットチェック回路である。また、図４では省略しているが、このＵＳＢデバイス５１は、第一実施形態同様、データパケットチェック回路を有している。
【００７４】
ＰＩＤデコーダ２２は、ＳＩＥ２１を介してデジタルデータに変換されたデータ（パケット）の種類をＰＩＤのデータパターンによって判別し、そのパケットデータを対応するパケットチェック回路に出力する。詳しくは、ＰＩＤデコーダ２２は、受信したパケットがトークンパケットの場合は、そのパケットデータを第１のパケットチェック回路５２に出力する。また、受信したパケットがハンドシェイクパケットの場合は、そのパケットデータを第２のパケットチェック回路５３に出力する。
【００７５】
エンドポイント５５〜５７は、それぞれ固有のデータ記憶領域及び転送機能（受信型、送信型、送受信型等）を持つＦＩＦＯであり、第一実施形態同様、各トランザクションは対応するエンドポイント５５〜５７を使用して行われる。これらの各エンドポイント５５〜５７に対しては、各ＦＩＦＯの特性を示すエンドポイント番号（ＥＮＤＰ）が割り当てられている。
【００７６】
また、各エンドポイント５５〜５７には、それぞれのトランザクションが正常に終了したか否かを示すデータトグルビットを記憶するための領域（図中、トグルビット）５５ａ〜５７ａが設けられている。即ち、これらの各領域５５ａ〜５７ａには、トランザクションの処理状況に応じて値が[０]もしくは[１]のデータトグルビットが記憶される。
【００７７】
トグルビット切り替え回路５４は、第１及び第２のパケットチェック回路５２，５３と接続されるとともに、各エンドポイント５５〜５７に接続されている。
このトグルビット切り替え回路５４には、第１のパケットチェック回路５２が受け取ったトークンパケットのエンドポイント番号（ＥＮＤＰ）を記憶するための記憶領域５４ａが設けられている。即ち、領域５４ａには、現在実行中のトランザクションで転送に使用されている（転送要求を受け付けている）エンドポイントを表すエンドポイント番号（ＥＮＤＰ）が記憶されている。
【００７８】
また、トグルビット切り替え回路５４は、第２のパケットチェック回路５３がハンドシェイクパケットを受け取る場合には、そのトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットを変更（反転）する。
【００７９】
図５は、ＵＳＢデバイス５１（エラー訂正回路）におけるデータトグルビットエラー訂正処理（以下、単にエラー訂正処理という）を説明するフローチャートである。
今、ＵＳＢホスト１１とＵＳＢデバイス５１との間でＩＮトランザクションが実行されており、ＵＳＢホスト１１からＵＳＢデバイス５１にＡＣＫハンドシェイクパケットが送信される。尚、ここでは、このＩＮトランザクションで転送要求を受け付けているエンドポイントが例えばエンドポイント５５であるとする。
【００８０】
トグルビット切り替え回路５４は、第２のパケットチェック回路５３がＡＣＫハンドシェイクパケットを受信したか否かを判定し（ステップ６１）、それを受信している場合にはエンドポイント５５に記憶されているデータトグルビットの値を反転する。例えばデータトグルビットの値を[０]から[１]に変更する（ステップ６２）。これにより、ＩＮトランザクションが終了する。
【００８１】
一方、上記ステップ６１において、第２のパケットチェック回路５３がＡＣＫハンドシェイクパケットを受信していない場合には、エンドポイント５５はデータトグルビットエラーとなる。この場合、領域５５ａに記憶されているデータトグルビットの値は変更されない。即ち、データトグルビットの値は[０]のままとなる。
【００８２】
次いで、このデータトグルビットエラーが発生している状態で、ＵＳＢホスト１１とＵＳＢデバイス５１との間で次のトランザクションが開始され、ＵＳＢホスト１１からＵＳＢデバイス５１にトークンパケットが送信される。
【００８３】
第１のパケットチェック回路５２は、トークンパケットを受け取ると、そのパケットデータに含まれているエンドポイント番号（ＥＮＤＰ）をトグルビット切り替え回路５４に通知する。トグルビット切り替え回路５４は、その第１のパケットチェック回路５２から受け取ったエンドポイント番号と、記憶領域５４ａに記憶されている前回のトランザクションで使用したエンドポイント番号（この例ではエンドポイント５５に対応するエンドポイント番号）とを比較する。即ち、トグルビット切り替え回路５４は、現在のトランザクションが前回のトランザクションと同一のエンドポイント５５に対する転送要求であるか否かを判断する（ステップ６３）。
【００８４】
このとき、同一のエンドポイント５５への転送要求（即ちデータトグルビットエラーが発生しているエンドポイント５５への転送要求）である場合には、ＵＳＢホスト１１へのデータパケットの再送処理を行う（ステップ６４）。
【００８５】
詳述すると、同一のエンドポイント５５に連続して転送要求（ＩＮトランザクション）が行われる場合は、先のＩＮトランザクションにおいて、ＵＳＢデバイス５１から送信されたデータパケットがＵＳＢホスト１１にて正常に受信されなかったことを意味する。つまり、ＵＳＢホスト１１は、先のＩＮトランザクションでデータパケットを受信できなかったために、同一のエンドポイント５５に対して再度転送要求を行ったことになる。従って、この場合、ＵＳＢデバイス５１は、エラーが発生しているエンドポイント５５のデータトグルビット（この例では[０]）に従ってＵＳＢホスト１１にデータパケットを再送する。
【００８６】
一方、上記ステップ６３において、異なるエンドポイントへの転送要求（即ちデータトグルビットエラーが発生しているエンドポイント５５とは異なるエンドポイントへの転送要求）である場合には、該エラーとなっているエンドポイント５５のデータトグルビットの値を反転する（ステップ６５）。
【００８７】
詳述すると、異なるエンドポイントへの転送要求が行われる場合は、先のＩＮトランザクションにおいて、ＵＳＢホスト１１から送信されたＡＣＫハンドシェイクパケットが何らかの理由でＵＳＢデバイス５１にて受信することができなかったことを意味する。つまり、ＵＳＢホスト１１は、先のＩＮトランザクションでデータパケットを正常に受信し、ＡＣＫハンドシェイクパケットを送信している。従って、この場合、ＵＳＢデバイス５１は、エラーが発生しているエンドポイント５５のデータトグルビットの値を反転する。つまり、この例では、領域５５ａにデータトグルビットエラーとして記憶されている、値が[０]のデータトグルビットを[１]に変更する。
【００８８】
図６は、エラー訂正処理の具体例を示すフローチャートである。
尚、ここでは、説明の便宜上、各々のトランザクションで使用するＵＳＢホスト１１のエンドポイントを例えばエンドポイントｈ１，ｈ２とし、ＵＳＢデバイス５１のエンドポイントを例えばエンドポイントｄ１，ｄ２とする。
【００８９】
今、ＵＳＢホスト１１は、エンドポイントｈ１とＵＳＢデバイス５１のエンドポイントｄ１との間でトランザクションを開始する。具体的には、ＩＮトークンパケットを送信してデータの転送要求を行う（ステップ７１）。それを受けて、ＵＳＢデバイス５１は、エンドポイントｄ１に記憶されているデータトグルビットの値（[０]）に対応したデータ０パケットをＵＳＢホスト１１に送信する（ステップ７２）。ＵＳＢホスト１１は、そのデータ０パケットを受信すると、エンドポイントｈ１のデータトグルビットを[０]から[１]に変更するとともに、データを正常に受信した旨を通知するＡＣＫハンドシェイクパケットをＵＳＢデバイス５１に送信する（ステップ７３）。
【００９０】
このとき、そのＡＣＫハンドシェイクパケットをＵＳＢデバイス５１が何らかの原因で受信できなかった場合（図中、その様子を破線で示す）、ＵＳＢデバイス５１は、エンドポイントｄ１のデータトグルビットの値を[０]のまま変更しない。つまり、エンドポイントｄ１はデータトグルビットエラーとなる。
【００９１】
この状態で、ＵＳＢホスト１１は、エンドポイントｈ２とＵＳＢデバイス５１のエンドポイントｄ２との間で次のトランザクションを開始する（ステップ７４）（ここではそのトランザクションの具体的な処理については省略する）。このとき、ＵＳＢデバイス５１は、ＵＳＢホスト１１が先のＩＮトランザクション（上記ステップ７３）において、ＡＣＫハンドシェイクパケットを送信したと判断し、エラーとなっているエンドポイントｄ１の値を反転させる。つまり、エンドポイントｄ１の値（[０]）を[１]に訂正する。
【００９２】
その後、このトランザクションが正常に終了する（即ちＵＳＢホスト１１、ＵＳＢデバイス５１の何れか一方が他方からのＡＣＫハンドシェイクパケットを受信する）と（ステップ７５）、エンドポイントｈ２及びエンドポイントｄ２の各データトグルビットはそれぞれ[０]から[１]に変更される。
【００９３】
その後、ＵＳＢホスト１１は、エンドポイントｈ１とＵＳＢデバイス５１のエンドポイントｄ１との間で更に次のトランザクションを開始する。具体的には、ＩＮトークンパケットを送信してデータの転送要求を行う（ステップ７６）。それを受けて、ＵＳＢデバイス５１は、エンドポイントｄ１に記憶されているデータトグルビットの値（[１]）に従ってデータ１パケットをＵＳＢホスト１１に送信する（ステップ７７）。即ち、ＵＳＢデバイス５１は、上記ステップ７４にてエンドポイントｄ１のデータトグルビットエラーを訂正している。従って、ＵＳＢホスト１１は、このＩＮトランザクションでＵＳＢデバイス５１に要求していたデータ、つまりデータ１パケットを受け取ることができる。
【００９４】
これにより、ＵＳＢホスト１１は、データ１パケットを受信すると、それを正常に受信した旨を通知するＡＣＫハンドシェイクパケットをＵＳＢデバイス５１に送信するとともに（ステップ７８）、エンドポイントｈ１のデータトグルビットの値を[１]から[０]に変更する。また、ＵＳＢデバイス５１は、そのＡＣＫハンドシェイクパケットを受信すると、エンドポイントｄ１のデータトグルビットの値を[１]から[０]に変更する。
【００９５】
図７は、本実施形態のエラー訂正回路の構成をＵＳＢハードディスクデバイスに適用した例を示すブロック図である。尚、図４と同様の構成部分については同一符号を付して図示する。
【００９６】
このＵＳＢハードディスクデバイス８１は、USB Mass Storage Class Bulk Only Mode 1.0 に準拠したものであり、第１〜第３のエンドポイント８２〜８４を有する。各エンドポイント８２〜８４には、それぞれデータトグルビットを記憶するための領域８２ａ〜８４ａが設けられている。これらの各エンドポイント８２〜８４にはハードディスク制御回路８５が接続され、そのハードディスク制御回路８５にはデータ記録部８６が接続されている。
【００９７】
第１のエンドポイント８２（図中、Control EP）は、送受信型の転送機能を持つＦＩＦＯであって、主にデバイスの初期化を行うために用いられる。
第２のエンドポイント８３（図中、Bulk OUT EP ）、第３のエンドポイント８４（図中、Bulk IN EP）は、それぞれ受信型の転送機能、送信型の転送機能を持つＦＩＦＯであって、これらのエンドポイント８３，８４はハードディスクへのデータの読み書き及びコマンドの転送に用いられる。
【００９８】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）ＵＳＢデバイス５１（エラー訂正回路）は、第２のパケットチェック回路５３がＡＣＫハンドシェイクパケットを受信すると、そのトランザクションで転送要求を受け付けているエンドポイント５５〜５７のデータトグルビットの値を反転させるトグルビット切り替え回路５４を備えている。このトグルビット切り替え回路５４は、第１のパケットチェック回路５２がトークンパケットを受信すると、そのトランザクションで転送要求を受けたエンドポイントと、前回のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断する。そして、異なるエンドポイントへの転送要求である場合には、前回のトランザクションで転送要求を受けたエンドポイントのデータトグルビットを反転してエラーを訂正する。この構成では、データトグルビットエラーが発生する場合にも、そのエラーを早期に検出して訂正することができるため、転送効率の低下を抑止することができる。延いてはシステム全体のパフォーマンスが低下することを抑止できる。
【００９９】
（２）エラーを早期に検出及び訂正するようにしたことで、無用なトランザクションが実行されることが防止され、ＵＳＢホスト１１からの転送要求に対して即座に対応可能となる。従って、転送効率の向上化に貢献できる。
【０１００】
尚、上記各実施形態は、以下の態様で実施してもよい。
・各実施形態においては、ＵＳＢデバイスがパケット判別回路とエラー訂正回路とをそれぞれ個別に備える場合について説明したが、両回路をともに備える構成としてもよい。即ち、第一実施形態のＵＳＢデバイス１２（パケット判別回路）の機能と第二実施形態のＵＳＢデバイス５１（エラー訂正回路）の機能とを有するように構成してもよい。
【０１０１】
・第一実施形態では、パケット判別回路の構成をＵＳＢハードディスクデバイスに適用したが、ＭＯや、ＤＶＤ，ＣＤなどのＡＴＡ／ＡＴＡＰＩデバイス、或いはプリンタ，スキャナなどのパソコン周辺装置等、他のデバイスに適用してもよい。
【０１０２】
・第二実施形態では、エラー訂正回路の構成をＵＳＢハードディスクデバイスに適用したが、ＭＯや、ＤＶＤ，ＣＤなどのＡＴＡ／ＡＴＡＰＩデバイス、或いはプリンタ，スキャナなどのパソコン周辺装置等、他のデバイスに適用してもよい。
【図面の簡単な説明】
【０１０３】
【図１】パケット判別回路の構成を示すブロック図である。
【図２】パケット判別処理を説明するフローチャートである。
【図３】パケット判別回路をハードディスクデバイスに適用した例を示すブロック図である。
【図４】データトグルビットエラー訂正回路の構成を示すブロック図である。
【図５】データトグルビットエラー訂正処理を説明するフローチャートである。
【図６】データトグルビットエラー訂正処理の具体例を示すフローチャートである。
【図７】データトグルビットエラー訂正回路をハードディスクデバイスに適用した例を示すブロック図である。
【図８】（ａ）〜（ｃ）はパケットのフォーマットを示す説明図である。
【図９】ＰＩＤのフォーマットを示す説明図である。
【図１０】（ａ），（ｂ）はトランザクションの処理の流れを示すフローチャートである。
【図１１】従来のパケット判別処理を説明するフローチャートである。
【図１２】従来のデータトグルビットエラー訂正回路の概略構成を示すブロック図である。
【図１３】パケットの誤判定が生じる場合を示す説明図である。
【図１４】従来のデータトグルビットエラー訂正処理を示すフローチャートである。
【符号の説明】
【０１０４】
１１  ホストコンピュータとしてのＵＳＢホスト
１２，５１  データ処理装置としてのＵＳＢデバイス
２２  パケット判別手段としてのＰＩＤデコーダ
２３  パケット長測定回路
２７，２８，５５〜５７  複数のエンドポイント
５４  トグルビット切り替え回路
５４ａ  記憶領域
【図１】
0004616292.tif 000002
【図２】
0004616292.tif 000003
【図３】
0004616292.tif 000004
【図４】
0004616292.tif 000005
【図５】
0004616292.tif 000006
【図６】
0004616292.tif 000007
【図７】
0004616292.tif 000008
【図８】
0004616292.tif 000009
【図９】
0004616292.tif 000010
【図１０】
0004616292.tif 000011
【図１１】
0004616292.tif 000012
【図１２】
0004616292.tif 000013
【図１３】
0004616292.tif 000014
【図１４】
0004616292.tif 000015