JP4616292B2 - データ処理装置及びエラー訂正方法 - Google Patents

データ処理装置及びエラー訂正方法 Download PDF

Info

Publication number
JP4616292B2
JP4616292B2 JP2007031985A JP2007031985A JP4616292B2 JP 4616292 B2 JP4616292 B2 JP 4616292B2 JP 2007031985 A JP2007031985 A JP 2007031985A JP 2007031985 A JP2007031985 A JP 2007031985A JP 4616292 B2 JP4616292 B2 JP 4616292B2
Authority
JP
Japan
Prior art keywords
packet
data
endpoint
transaction
transfer request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007031985A
Other languages
English (en)
Other versions
JP2007179558A (ja
Inventor
一浩 青嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007031985A priority Critical patent/JP4616292B2/ja
Publication of JP2007179558A publication Critical patent/JP2007179558A/ja
Application granted granted Critical
Publication of JP4616292B2 publication Critical patent/JP4616292B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Systems (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)

Description

本発明は、データ処理装置及びエラー訂正方法に係り、詳しくは、USBインタフェースによりホストコンピュータとデータ通信を行う際に好適なデータ処理装置に関するものである。
近年、ホスト機能を有するコンピュータ(パソコン等)とそれに接続した周辺機器との間で通信を行うためのシリアルインタフェースの一種として、USB(Universal Serial Bus)インタフェース(以下、単にUSB)が普及している。このUSBを用いて行うパソコン(以下、USBホスト)と周辺機器(以下、USBデバイス)との間の通信では、エラーを早期に検出してデータ転送を効率よく行うことが求められている。
通常、USBを用いたデータ転送はトランザクションとよばれる転送単位で行われ、各トランザクションは主にトークンパケット、データパケット、ハンドシェイクパケットを使用して行われる。
図8は、各パケットのフォーマットを示す説明図である。
図8(a)に示すように、トークンパケットは、8ビットのパケットID(PID)と、7ビットのUSBアドレス(ADDR)と、4ビットのエンドポイント番号(ENDP)と、5ビットのCRC (Cyclic Redundancy Check)(CRC5)とから構成される24ビット(固定長)のパケットである。尚、パケットIDはパケットの判別、USBアドレスはUSBデバイスの判別、エンドポイント番号はUSBデバイスにおけるエンドポイント(転送型)の判別に用いられ、CRC5は、USBアドレスとエンドポイント番号のチェックに用いられる。
図8(b)に示すように、データパケットは、8ビットのPIDと、0〜8192ビットのデータフィールド(DATA)と、16ビットのCRC(CRC16)とから構成される24〜8216ビット(可変長)のパケットである。尚、CRC16は、データフィールドのチェックに用いられる。
図8(c)に示すように、ハンドシェイクパケットは、8ビットのPIDのみで構成される固定長のパケットである。
上記各パケット(トークンパケット、データパケット、ハンドシェイクパケット)の種類は、それらに含まれるPID(8ビット)のデータパターンによって判別される。
図9は、PIDのフォーマットを示す説明図である。
PIDは、PID0〜PID3(4ビット)と、それらのデータパターンと逆パターンを持つ/PID0〜/PID3(4ビット)とから構成され、USBホスト或いはUSBデバイスで受信されるパケットは、このPID(8ビット)のデータパターン(全16通り)によって認識される。
図10は、トランザクションの処理の流れを示すフローチャートである。
図10(a)は、USBデバイスからUSBホストへデータ転送を行うINトランザクションの処理を示す。
まず、USBホストは、USBデバイスにINトークンパケットを送信し、INトランザクションの転送の開始をUSBデバイスに通知する。それを受けて、USBデバイスは、固有のデータを含むデータパケットをUSBホストに送信する。USBホストは、そのデータパケットを受信すると、それを正常に受信した旨を示すACKハンドシェイクパケットをUSBデバイスに送信する。USBデバイスは、このACKハンドシェイクパケットを受け取ることにより、転送が正常に終了したことを確認する。
図10(b)は、USBホストからUSBデバイスへデータ転送を行うOUTトランザクションの処理を示す。
まず、USBホストは、USBデバイスにOUTトークンパケットを送信し、OUTトランザクションの転送の開始をUSBデバイスに通知する。その後、USBホストは、固有のデータを含むデータパケットをUSBデバイスに送信する。USBデバイスは、そのデータパケットを受信すると、それを正常に受信した旨を示すACKハンドシェイクパケットをUSBホストに送信する。USBホストは、このACKハンドシェイクパケットを受け取ることにより、転送が正常に終了したことを確認する。
図11は、従来のUSBデバイスにおけるパケット判別処理を説明するフローチャートである。
USBデバイスは、パケットを受信すると(ステップ91)、そのパケットの種類をPIDのデータパターンによって判定する(ステップ92)。このとき、PIDがトークンパケット、データパケット、ハンドシェイクパケットの何れのパケットにも該当しない場合はタイムアウト処理(転送処理の中止)を行う(ステップ93)。
一方、上記ステップ92において、PIDがトークンパケットに該当する場合には、USBデバイスは、受け取ったUSBアドレス(ADDR)が正しいか否かを判定する(ステップ94a)。
USBデバイスは、USBアドレスが正しい(即ち自デバイスのアドレスである)場合、エンドポイント番号(ENDP)と転送型とが一致するか否かを判断する(ステップ94b)。例えば、USBデバイスに設定されているエンドポイントの転送型が受信型である場合に、送信型を表すエンドポイント番号を受け取る場合にはエラーと判断する。
USBデバイスは、エンドポイント番号が自デバイスの転送型である場合、USBアドレス(ADDR)及びエンドポイント番号(ENDP)のデータ値が正しいか否かをCRC5によりチェックする(ステップ94c)。このとき、データ値が正しい場合、USBデバイスは、トランザクションを開始するための処理を行う(ステップ94d)。ちなみに、上記各ステップ94a〜94cのうち、少なくとも何れかでエラーと判断する場合には、タイムアウト処理を行う(上記ステップ93)。
また、上記ステップ92において、PIDがデータパケットに該当する場合には、USBデバイスは、受け取ったデータフィールド(DATA)のデータ値が正しいか否かをCRC16によりチェックする(ステップ95a)。このとき、データ値が正しい場合、USBデバイスは、データ受信処理を行う(ステップ95b)。逆に、データ値が正しくない場合にはタイムアウト処理を行う(上記ステップ93)。
また、上記ステップ92において、PIDがハンドシェイクパケットに該当する場合には、USBデバイスは、トランザクションを終了するための処理を行う(ステップ96)。
次に、従来のUSBデバイスのエラー検出・訂正機能について説明する。
図12は、従来のUSBデバイスにおけるエラー訂正回路を示す概略ブロック図である。
例えばパソコン等のホスト機能を有するUSBホスト101には、周辺装置としてのUSBデバイス102がUSBバス103を介して接続されている。USBデバイス102は、SIE(Serial Interface Engine) 104と、複数(図では簡略化して2つのみ示す)のエンドポイント105,106とを含む。
SIE104は、USBホスト101から受信したパケットをデコードしてデジタルデータに変換する機能及びUSBホスト101へ送信するパケットをフォーマット化する機能を持つ。
エンドポイント105,106は、それぞれ固有のデータ記憶領域及び転送機能を持つFIFO(First In First Out)である。即ち、上述したUSBデバイス102の転送型(受信型、送信型、送受信型等)は、各エンドポイント105,106のFIFOの特性によって決定され、各エンドポイント15,16には、それらのFIFOに対応したエンドポイント番号(ENDP)が割り当てられている。これらの各エンドポイント105,106には、それぞれデータトグルビットを記憶するための領域(図中、トグルビット)105a,106aが設定されている。
従来、このようなUSBデバイス102において、エラー検出・訂正機能は各エンドポイント105,106に記憶されるデータトグルビットにより実現される。
詳述すると、例えばエンドポイント105が送信型(送信機能を持つFIFO)であって、領域105aに記憶されているデータトグルビットの値が[0]の場合、USBデバイス102は、偶数データパケットとしての情報を持つデータパケット(以下、データ0パケット)を送信する。逆に、領域105aに記憶されているデータトグルビットの値が[1]の場合、USBデバイス102は、奇数データパケットとしての情報を持つデータパケット(以下、データ1パケット)を送信する。
また、USBデバイス102は、USBホスト101からのACKハンドシェイクパケットを受信すると、領域105aに記憶されているデータトグルビットの値を変更する。逆に、ACKハンドシェイクパケットを受信しない場合には、領域105aのデータトグルビットの値を変更しない(データトグルビットエラーが発生する)。
従って、USBデバイス102は、エンドポイント105,106記憶されているデータトグルビットの値が例えば[0],[1],[0],[1],…のようにトグルする場合には、転送が正常に行われていると判断する。逆に、USBデバイス102は、ACKハンドシェイクパケットを受信しなかった場合にはデータトグルビットの値を変更せず、データトグルビットエラーを発生させる。この場合、USBデバイス102は、USBホスト101から次のINトークンパケットを受け取ることでデータトグルビットエラーを検出し、データパケットの再送処理を行う。その後、USBデバイス102は、そのデータパケットに対するACKハンドシェイクパケットをUSBホスト101から受け取ることにより、データトグルビットの値を変更してエラーを訂正する(エラーから復帰する)。
ところで、上記のような従来の技術では、以下の問題がある。
[1:パケットの誤判定による転送効率の低下]
USBバス103を流れる信号は、そのバスケーブル(USBバス103)内での反射やノイズ等の影響によりデータ値が変移してしまう場合がある。上記したように、パケットの判別はPID(パケットID)のデータパターンによって行われる。このため、例えばノイズ等の影響により、PID0〜PID3とそれらと逆パターンを持つ/PID0〜/PID3のうち、対応する2つのビット値が互いに反転してしまう場合には、そのパケットが他の異なるパケットと間違って判定されてしまうことがあった。
例えば、図13に示すように、OUTトークンパケットとしてのデータパターンを持つPIDにおいて、PID3([0])とそれに対応する/PID3([1])の各ビット値が互いに反転してしまう場合、このPIDはデータ0パケットとしてのデータパターンを持つようになる。つまり、この場合、USBデバイス102は、USBホスト101から送信されたOUTトークンパケットをデータ0パケットと誤判定して受け取る。
こうしたパケットの誤判定は転送効率を低下させる原因であり、延いてはシステム全体の性能を低下させることになる。因みに、このようなパケットの誤判定は、USB2.0仕様などのハイ・スピードモードでは、転送速度が480Mbpsと高速であり、且つ信号振幅が400mVと小さいために、特に生じ易く、高速化を実現する上で支障があった。
[2:エラー検出・訂正処理の遅れによる転送効率の低下]
従来では、USBデバイス102がACKハンドシェイクパケットを受信できず、データトグルビットエラーとなる場合には、USBホスト101から次のトークンパケット(具体的にはINトークンパケット)を受け取るまでそのエラーから復帰できない。つまり、データトグルビットエラーが発生したエンドポイントは、USBホスト101から次の転送要求があるまでデータトグルビットエラーを起こしたままとなる。
図14は、従来のエラー訂正処理を説明するフローチャートである。尚、ここでは、説明の便宜上、各々のトランザクションで使用するUSBホスト101のエンドポイントを例えばエンドポイントh1,h2とし、USBデバイス102のエンドポイントを例えばエンドポイントd1,d2とする。
今、USBホスト101は、エンドポイントh1とUSBデバイス102のエンドポイントd1との間でトランザクションを開始する。具体的には、INトークンパケットを送信してデータの転送要求を行う(ステップ111)。それを受けて、USBデバイス102は、エンドポイントd1に記憶されているデータトグルビットの値([0])に従ってデータ0パケットをUSBホスト101に送信する(ステップ112)。USBホスト101は、そのデータ0パケットを受信すると、エンドポイントh1のデータトグルビットを[0]から[1]に変更するとともに、データを正常に受信した旨を通知するACKハンドシェイクパケットをUSBデバイス102に送信する(ステップ113)。
このとき、そのACKハンドシェイクパケットをUSBデバイス102が何らかの原因で受信できなかった場合(図中、その様子を破線で示す)、USBデバイス102は、エンドポイントd1のデータトグルビットを[0]のまま変更しない。つまり、エンドポイントd1はデータトグルビットエラーとなる。
この状態で、USBホスト101は、エンドポイントh2とUSBデバイス102のエンドポイントd2との間で次のトランザクションを開始する(ステップ114)(ここではそのトランザクションの具体的な処理については省略する)。このトランザクションが正常に終了する(即ちUSBホスト101、USBデバイス102の何れか一方が他方からのACKハンドシェイクパケットを受信する)と(ステップ115)、エンドポイントh2及びエンドポイントd2の各データトグルビットはそれぞれ[0]から[1]に変更される。
その後、USBホスト101は、エンドポイントh1とUSBデバイス102のエンドポイントd1との間でさらに次のトランザクションを開始する。具体的には、INトークンパケットを送信してデータの転送要求を行う(ステップ116)。それを受けて、USBデバイス102は、エンドポイントd1に記憶されているデータトグルビットの値([0])に対応したデータ0パケットをUSBホスト101に送信する(ステップ117)。即ち、USBデバイス102は、上記ステップ113でACKハンドシェイクパケットを受信しなかったために発生したデータトグルビットエラー(値が[0]のまま保持されているデータトグルビット)を検出し、データ0パケットの再送処理を行う。
USBホスト101は、そのデータ0パケットを受信すると、それを受信した旨を通知するACKハンドシェイクパケットをUSBデバイス102に送信する。しかしながら、このトランザクションに於いて、USBホスト101がUSBデバイス102に要求するデータはデータ1パケットであり、本来期待するデータとは異なる(即ちUSBホスト101は、ここで受信したデータ0パケットを有効なデータとしない)。従って、USBホスト101は、エンドポイントh1のデータトグルビットを変更しない(データトグルビットの値は[1]のまま)。
一方、USBデバイス102は、USBホスト101からのACKハンドシェイクパケットを受信すると(ステップ118)、エンドポイントd1のデータトグルビットの値を[0]から[1]に変更する。これにより、エンドポイントd1はデータトグルビットエラーから復帰する。
このように、USBホスト101ではデータ0パケットを正常に受信し、ACKハンドシェイクパケットを送信したにも関わらず、USBデバイス102がそのパケットを受信できなかったために、データトグルビットエラーが発生する場合には、エンドポイントd1は次の転送要求があるまでそのトランザクションの転送データ(即ちデータ0パケット)を保持しなければならない。
この場合、エラーが生じているエンドポイントd1は、新たな転送データ(即ちデータ1パケット)を用意することができなくなり、USBホスト101からの次のトランザクションに即座に対応することができなくなる。即ち、エンドポイントd1は、USBホスト101からの次の転送要求では、まずエラー検出・訂正処理のためのトランザクション(ステップ116〜118)を行う必要がある。これにより、USBホスト101は、エラー訂正後(即ちステップ118の後)に、エンドポイントd1に対して再度転送要求を行う必要がある。
従来では、このようにエラー検出・訂正のためのトランザクションが余分に行われることによってUSBバス103の帯域が損失し、転送効率が低下するという問題があった。その結果、システム全体の性能が低下するという問題を有していた。
本発明は上記問題点を解決するためになされたものであって、その目的は転送効率を向上させることのできるデータ処理装置及びエラー訂正方法を提供することにある。
上記目的を達成するため、請求項1,4に記載の発明によれば、トグルビット切り替え回路は、USBインタフェースを介してホストコンピュータからの転送要求に応じたトランザクションを処理する複数のエンドポイントのうち、前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断し、異なるエンドポイントへの転送要求であるときには前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させる。これにより、データトグルビットエラーが発生する場合にも、そのエラーを早期に検出して訂正することができるため、転送効率の低下を抑止することができる。また、エラーが早期に検出及び訂正されることにより、無用なトランザクションが実行されることが防止され、ホストコンピュータからの転送要求に対して即座に対応可能となる。従って、転送効率を向上させることができる。
請求項2に記載の発明によれば、前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるトークンパケットに含まれているエンドポイント番号を記憶するための記憶領域を有し、該記憶領域に記憶されているエンドポイント番号と、現在のトランザクションで転送要求を受けたエンドポイントのエンドポイント番号とを比較するようにした。
請求項3に記載の発明によれば、前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるハンドシェイクパケットを受け取ると、現在のトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットの値を反転させる。
請求項5に記載の発明によれば、前記前回のトランザクションで転送要求を受けたエンドポイントと前記現在のトランザクションで転送要求を受けたエンドポイントが同一である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値に従ってデータの再送処理を行うようにした。
以上詳述したように、本発明によれば、転送効率を向上させることのできるデータ処理装置及びエラー訂正方法を提供することができる。
(第一実施形態)
以下、本発明を具体化した第一実施形態を図1〜図3に従って説明する。
図1は、パケット判別回路の構成を示す概略ブロック図である。
USBによる通信を管理するホストコンピュータ(以下、USBホスト11)は、データ処理装置としてのUSBデバイス12とUSBバス13を介して相互に接続されている。尚、USBデバイス12は、USBホスト11としてのパソコン等に接続される例えばハードディスクやMO(Magneto Optic )、DVD(Digital Versatile Disk),CD(Compact Disk)などのATA/ATAPI(ATA Packet Interface)デバイス、あるいはプリンタ、スキャナ等の周辺装置である。図1は、そのUSBデバイス12におけるパケット判別回路の構成部分について示したものである。
USBデバイス12(パケット判別回路)は、SIE21、パケット判別手段としてのPIDデコーダ22、パケット長測定回路23、第1〜第3のパケットチェック回路24〜26及び複数(図では簡略化して例えば2つ示す)のエンドポイント27,28を備える。尚、本実施形態において、第1のパケットチェック回路24はトークンパケットチェック回路、第2のパケットチェック回路25はデータパケットチェック回路、第3のパケットチェック回路26はハンドシェイクパケットチェック回路である。
SIE21は、USBホスト11から受信したパケットをデコードしてデジタルデータに変換し、そのデータをPIDデコーダ22及びパケット長測定回路23に出力する。
PIDデコーダ22は、SIE21を介して受け取ったデータ(パケット)の種類をPID(パケットID)のデータパターンによって判別する。そして、PIDデコーダ22は、受信したパケットがトークンパケットの場合には、そのパケットデータを第1のパケットチェック回路24に出力する。また、データパケットの場合には、そのパケットデータを第2のパケットチェック回路25に出力する。また、ハンドシェイクパケットの場合には、そのパケットデータを第3のパケットチェック回路26に出力する。
パケット長測定回路23は、SIE21を介して受け取ったデータ(パケット)のパケット長を測定し、そのパケット長が上記PIDによって判別されたパケットの種類に適合しているか否かを判定する。
詳述すると、図8(a)に示すように、トークンパケットは、PID、USBアドレス(ADDR)、エンドポイント番号(ENDP)、CRC5から構成される24ビット(固定長)のパケットである。従って、パケット長測定回路23は、測定したパケット長が24ビットであるとき、トークンパケットとして判定する。
また、図8(b)に示すように、データパケットは、PID、データフィールド(DATA)、CRC16から構成される24〜8216ビット(可変長)のパケットである。従って、パケット長測定回路23は、測定したパケット長が24ビット以上、且つ8216ビット以下であるとき、データパケットとして判定する。
また、図8(c)に示すように、ハンドシェイクパケットは、PIDのみによって構成される8ビット(固定長)のパケットである。従って、パケット長測定回路23は、測定したパケット長が8ビットであるとき、ハンドシェイクパケットとして判定する。
このように、パケット長測定回路23は、測定したパケット長がPIDデコーダ22により判別されたパケットの種類に適合する場合には、そのパケットデータを受け取るパケットチェック回路での処理を開始させるための信号を出力する。逆に、適合しない場合には、そのパケットデータを受け取るパケットチェック回路での処理を中止させるための信号を出力する。
具体的には、第1のパケットチェック回路24は、PIDデコーダ22を介してトークンパケットを受け取ると、トランザクションを開始するための処理を行う。その際、パケット長測定回路23により測定されるパケット長がトークンパケットに適合しない場合(24ビット以外)は、処理を中止する。
第2のパケットチェック回路25は、PIDデコーダ22を介してデータパケットを受け取ると、データ受信のための処理を行う。その際、パケット長測定回路23により測定されるパケット長がデータパケットに適合しない場合(24ビット未満、或いは8217ビット以上)は、処理を中止する。
第3のパケットチェック回路26は、PIDデコーダ22を介してハンドシェイクパケットを受け取ると、トランザクションを終了するための処理を行う。その際、パケット長測定回路23により測定されるパケット長がハンドシェイクパケットに適合しない場合(8ビット以外)は、処理を中止する。
エンドポイント27,28は、それぞれ固有のデータ記憶領域及び転送機能を持つFIFOであり、各トランザクション(INトランザクション、OUTトランザクション等)は対応するエンドポイント27,28を使用して行われる。例えば、INトランザクション(USBデバイス12からUSBホスト11へのデータ転送)は、FIFOが送信型の転送機能を有するエンドポイントを使用して行われる。これらの各エンドポイント27,28には、それらのFIFOの特性を表すエンドポイント番号(ENDP)が割り当てられている。
図2は、USBデバイス12におけるパケット判別処理を説明するフローチャートである。
USBデバイス12がパケットを受信すると(ステップ31)、PIDデコーダ22は、パケットの種類をPIDのデータパターンによって判別する(ステップ32)。このとき、PIDがトークンパケット、データパケット、ハンドシェイクパケットの何れのパケットにも該当しない場合はタイムアウト処理(転送処理の中止)を行う(ステップ33)。
一方、上記ステップ32において、PIDがトークンパケットに該当する場合には、パケット長測定回路23は、そのパケット長が24ビットであるか否かを判定する(ステップ34a)。このとき、24ビット以外である場合はタイムアウト処理を行う(上記ステップ33)。
パケット長が24ビットである場合、第1のパケットチェック回路24は、USBアドレス(ADDR)が正しいか否か(ステップ34b)、エンドポイント番号(ENDP)と転送型が一致するか否か(ステップ34c)及びCRC5のチェック(ステップ34d)をそれぞれ行う。尚、これらの各ステップ34b〜34dは、図11のステップ94a〜94cと同様であるため、詳細な説明を省略する。
即ち、第1のパケットチェック回路24は、各ステップ34b〜34dにてエラーが検出されない場合にのみトランザクションを開始するための処理を開始する(ステップ34e)。逆に、何れかのステップにてエラーが検出される場合にはタイムアウト処理を行う(上記ステップ33)。
また、上記ステップ32において、PIDがデータパケットに該当する場合には、パケット長測定回路23は、そのパケット長が24ビット以上であるか否かを判定する(ステップ35a)。このとき、24ビット未満である場合はエラーと判定し、タイムアウト処理を行う(上記ステップ33)。
パケット長が24ビット以上の場合、第2のパケットチェック回路25は、データフィールド(DATA)が正しいか否かをCRC16によりチェックする(ステップ35b)。尚、このステップ35bは、図11のステップ95aと同様である。即ち、ステップ35bにてエラーが検出される場合にはタイムアウト処理を行う(上記ステップ33)。
一方、上記ステップ35bにてエラーが検出されない(DATAが正当なデータである)場合、パケット長測定回路23は、このパケットが8216ビット以下であるか否かを判定する(ステップ35c)。このとき、8217ビット以上である場合はタイムアウト処理を行う(上記ステップ33)。そして、パケット長が8216ビット以下である場合には、第2のパケットチェック回路25は、データ受信処理を行う(ステップ35d)。
尚、本実施形態では、データパケットのパケット長が8216ビット以下であるか否かの判定処理をCRC16のチェック後に行うようにしたが、上記ステップ45aの実行時、或いは同ステップ45aの実行後に行うようにしてもよい。
また、上記ステップ32において、PIDがハンドシェイクパケットに該当する場合には、パケット長測定回路23は、そのパケット長が8ビットであるか否かを判定する(ステップ36a)。このとき、8ビット以外である場合はタイムアウト処理を行う(上記ステップ33)。一方、パケット長が8ビットの場合、第3のパケットチェック回路26は、トランザクションを終了するための処理を行う(ステップ36b)。
図3は、本実施形態のパケット判別回路の構成をUSBハードディスクデバイスに適用した例を示すブロック図である。尚、図1と同様の構成部分については同一符号を付して図示する。
このUSBハードディスクデバイス41は、USB Mass Storage Class Bulk Only Mode 1.0 に準拠したものであり、第1〜第3のエンドポイント42〜44を有する。各エンドポイント42〜44にはハードディスク制御回路45が接続され、そのハードディスク制御回路45にはデータ記録部46が接続されている。
第1のエンドポイント42(図中、Control EP)は、送受信型の転送機能を持つFIFOであって、主にデバイスの初期化を行うために用いられる。
第2のエンドポイント43(図中、Bulk OUT EP )、第3のエンドポイント44(図中、Bulk IN EP)は、それぞれ受信型の転送機能、送信型の転送機能を持つFIFOであって、これらのエンドポイント43,44はハードディスクへのデータの読み書き及びコマンドの転送に用いられる。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)USBデバイス12(パケット判別回路)は、受信したパケットの種類をPIDのデータパターンによって判別するPIDデコーダ22と、そのPIDデコーダ22の判別結果が正しいか否かをパケット長を測定して判定するパケット長測定回路23とを備える。この構成では、USBバス13を伝送する信号のデータ値が、ケーブル(USBバス13)内での反射やノイズ等の影響により変移してしまう場合にもパケットを正しく判別することができる。これにより、USBデバイス12におけるパケットの誤判定を低減させることができるため、転送効率の低下を抑止することができる。延いてはシステム全体のパフォーマンスが低下することを抑止できる。
(2)パケット長測定回路23にて測定したパケット長がPIDデコーダ22にて判別されるパケットの種類に適合しない場合には、そのパケットに対応する第1〜第3のパケットチェック回路24〜26での処理を中止するようにした。これにより、パケットの誤判定が生じている場合にはそのエラーを早期に検出することができるため、転送効率の向上化に貢献できる。
(第二実施形態)
以下、本発明を具体化した第二実施形態を図4〜図7に従って説明する。
図4は、データトグルビットエラー訂正回路(以下、単にエラー訂正回路という)の構成を示す概略ブロック図である。尚、同図は、USBデバイス51におけるエラー訂正回路の構成部分について示したものである。本実施形態の構成(図4)において、第一実施形態の構成(図1)と同様の構成部分には同一符号を付し、それらの詳細な説明を一部省略する。
USBデバイス51(エラー訂正回路)は、第一実施形態同様、USBホスト11とUSBバス13を介して相互に接続されている。このUSBデバイス51は、SIE21、PIDデコーダ22、第1及び第2のパケットチェック回路52,53、トグルビット切り替え回路54及び複数(図では簡略化して例えば3つ示す)のエンドポイント55〜57を備える。
尚、本実施形態において、第1のパケットチェック回路52はトークンパケットチェック回路であり、第2のパケットチェック回路53はハンドシェイクパケットチェック回路である。また、図4では省略しているが、このUSBデバイス51は、第一実施形態同様、データパケットチェック回路を有している。
PIDデコーダ22は、SIE21を介してデジタルデータに変換されたデータ(パケット)の種類をPIDのデータパターンによって判別し、そのパケットデータを対応するパケットチェック回路に出力する。詳しくは、PIDデコーダ22は、受信したパケットがトークンパケットの場合は、そのパケットデータを第1のパケットチェック回路52に出力する。また、受信したパケットがハンドシェイクパケットの場合は、そのパケットデータを第2のパケットチェック回路53に出力する。
エンドポイント55〜57は、それぞれ固有のデータ記憶領域及び転送機能(受信型、送信型、送受信型等)を持つFIFOであり、第一実施形態同様、各トランザクションは対応するエンドポイント55〜57を使用して行われる。これらの各エンドポイント55〜57に対しては、各FIFOの特性を示すエンドポイント番号(ENDP)が割り当てられている。
また、各エンドポイント55〜57には、それぞれのトランザクションが正常に終了したか否かを示すデータトグルビットを記憶するための領域(図中、トグルビット)55a〜57aが設けられている。即ち、これらの各領域55a〜57aには、トランザクションの処理状況に応じて値が[0]もしくは[1]のデータトグルビットが記憶される。
トグルビット切り替え回路54は、第1及び第2のパケットチェック回路52,53と接続されるとともに、各エンドポイント55〜57に接続されている。
このトグルビット切り替え回路54には、第1のパケットチェック回路52が受け取ったトークンパケットのエンドポイント番号(ENDP)を記憶するための記憶領域54aが設けられている。即ち、領域54aには、現在実行中のトランザクションで転送に使用されている(転送要求を受け付けている)エンドポイントを表すエンドポイント番号(ENDP)が記憶されている。
また、トグルビット切り替え回路54は、第2のパケットチェック回路53がハンドシェイクパケットを受け取る場合には、そのトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットを変更(反転)する。
図5は、USBデバイス51(エラー訂正回路)におけるデータトグルビットエラー訂正処理(以下、単にエラー訂正処理という)を説明するフローチャートである。
今、USBホスト11とUSBデバイス51との間でINトランザクションが実行されており、USBホスト11からUSBデバイス51にACKハンドシェイクパケットが送信される。尚、ここでは、このINトランザクションで転送要求を受け付けているエンドポイントが例えばエンドポイント55であるとする。
トグルビット切り替え回路54は、第2のパケットチェック回路53がACKハンドシェイクパケットを受信したか否かを判定し(ステップ61)、それを受信している場合にはエンドポイント55に記憶されているデータトグルビットの値を反転する。例えばデータトグルビットの値を[0]から[1]に変更する(ステップ62)。これにより、INトランザクションが終了する。
一方、上記ステップ61において、第2のパケットチェック回路53がACKハンドシェイクパケットを受信していない場合には、エンドポイント55はデータトグルビットエラーとなる。この場合、領域55aに記憶されているデータトグルビットの値は変更されない。即ち、データトグルビットの値は[0]のままとなる。
次いで、このデータトグルビットエラーが発生している状態で、USBホスト11とUSBデバイス51との間で次のトランザクションが開始され、USBホスト11からUSBデバイス51にトークンパケットが送信される。
第1のパケットチェック回路52は、トークンパケットを受け取ると、そのパケットデータに含まれているエンドポイント番号(ENDP)をトグルビット切り替え回路54に通知する。トグルビット切り替え回路54は、その第1のパケットチェック回路52から受け取ったエンドポイント番号と、記憶領域54aに記憶されている前回のトランザクションで使用したエンドポイント番号(この例ではエンドポイント55に対応するエンドポイント番号)とを比較する。即ち、トグルビット切り替え回路54は、現在のトランザクションが前回のトランザクションと同一のエンドポイント55に対する転送要求であるか否かを判断する(ステップ63)。
このとき、同一のエンドポイント55への転送要求(即ちデータトグルビットエラーが発生しているエンドポイント55への転送要求)である場合には、USBホスト11へのデータパケットの再送処理を行う(ステップ64)。
詳述すると、同一のエンドポイント55に連続して転送要求(INトランザクション)が行われる場合は、先のINトランザクションにおいて、USBデバイス51から送信されたデータパケットがUSBホスト11にて正常に受信されなかったことを意味する。つまり、USBホスト11は、先のINトランザクションでデータパケットを受信できなかったために、同一のエンドポイント55に対して再度転送要求を行ったことになる。従って、この場合、USBデバイス51は、エラーが発生しているエンドポイント55のデータトグルビット(この例では[0])に従ってUSBホスト11にデータパケットを再送する。
一方、上記ステップ63において、異なるエンドポイントへの転送要求(即ちデータトグルビットエラーが発生しているエンドポイント55とは異なるエンドポイントへの転送要求)である場合には、該エラーとなっているエンドポイント55のデータトグルビットの値を反転する(ステップ65)。
詳述すると、異なるエンドポイントへの転送要求が行われる場合は、先のINトランザクションにおいて、USBホスト11から送信されたACKハンドシェイクパケットが何らかの理由でUSBデバイス51にて受信することができなかったことを意味する。つまり、USBホスト11は、先のINトランザクションでデータパケットを正常に受信し、ACKハンドシェイクパケットを送信している。従って、この場合、USBデバイス51は、エラーが発生しているエンドポイント55のデータトグルビットの値を反転する。つまり、この例では、領域55aにデータトグルビットエラーとして記憶されている、値が[0]のデータトグルビットを[1]に変更する。
図6は、エラー訂正処理の具体例を示すフローチャートである。
尚、ここでは、説明の便宜上、各々のトランザクションで使用するUSBホスト11のエンドポイントを例えばエンドポイントh1,h2とし、USBデバイス51のエンドポイントを例えばエンドポイントd1,d2とする。
今、USBホスト11は、エンドポイントh1とUSBデバイス51のエンドポイントd1との間でトランザクションを開始する。具体的には、INトークンパケットを送信してデータの転送要求を行う(ステップ71)。それを受けて、USBデバイス51は、エンドポイントd1に記憶されているデータトグルビットの値([0])に対応したデータ0パケットをUSBホスト11に送信する(ステップ72)。USBホスト11は、そのデータ0パケットを受信すると、エンドポイントh1のデータトグルビットを[0]から[1]に変更するとともに、データを正常に受信した旨を通知するACKハンドシェイクパケットをUSBデバイス51に送信する(ステップ73)。
このとき、そのACKハンドシェイクパケットをUSBデバイス51が何らかの原因で受信できなかった場合(図中、その様子を破線で示す)、USBデバイス51は、エンドポイントd1のデータトグルビットの値を[0]のまま変更しない。つまり、エンドポイントd1はデータトグルビットエラーとなる。
この状態で、USBホスト11は、エンドポイントh2とUSBデバイス51のエンドポイントd2との間で次のトランザクションを開始する(ステップ74)(ここではそのトランザクションの具体的な処理については省略する)。このとき、USBデバイス51は、USBホスト11が先のINトランザクション(上記ステップ73)において、ACKハンドシェイクパケットを送信したと判断し、エラーとなっているエンドポイントd1の値を反転させる。つまり、エンドポイントd1の値([0])を[1]に訂正する。
その後、このトランザクションが正常に終了する(即ちUSBホスト11、USBデバイス51の何れか一方が他方からのACKハンドシェイクパケットを受信する)と(ステップ75)、エンドポイントh2及びエンドポイントd2の各データトグルビットはそれぞれ[0]から[1]に変更される。
その後、USBホスト11は、エンドポイントh1とUSBデバイス51のエンドポイントd1との間で更に次のトランザクションを開始する。具体的には、INトークンパケットを送信してデータの転送要求を行う(ステップ76)。それを受けて、USBデバイス51は、エンドポイントd1に記憶されているデータトグルビットの値([1])に従ってデータ1パケットをUSBホスト11に送信する(ステップ77)。即ち、USBデバイス51は、上記ステップ74にてエンドポイントd1のデータトグルビットエラーを訂正している。従って、USBホスト11は、このINトランザクションでUSBデバイス51に要求していたデータ、つまりデータ1パケットを受け取ることができる。
これにより、USBホスト11は、データ1パケットを受信すると、それを正常に受信した旨を通知するACKハンドシェイクパケットをUSBデバイス51に送信するとともに(ステップ78)、エンドポイントh1のデータトグルビットの値を[1]から[0]に変更する。また、USBデバイス51は、そのACKハンドシェイクパケットを受信すると、エンドポイントd1のデータトグルビットの値を[1]から[0]に変更する。
図7は、本実施形態のエラー訂正回路の構成をUSBハードディスクデバイスに適用した例を示すブロック図である。尚、図4と同様の構成部分については同一符号を付して図示する。
このUSBハードディスクデバイス81は、USB Mass Storage Class Bulk Only Mode 1.0 に準拠したものであり、第1〜第3のエンドポイント82〜84を有する。各エンドポイント82〜84には、それぞれデータトグルビットを記憶するための領域82a〜84aが設けられている。これらの各エンドポイント82〜84にはハードディスク制御回路85が接続され、そのハードディスク制御回路85にはデータ記録部86が接続されている。
第1のエンドポイント82(図中、Control EP)は、送受信型の転送機能を持つFIFOであって、主にデバイスの初期化を行うために用いられる。
第2のエンドポイント83(図中、Bulk OUT EP )、第3のエンドポイント84(図中、Bulk IN EP)は、それぞれ受信型の転送機能、送信型の転送機能を持つFIFOであって、これらのエンドポイント83,84はハードディスクへのデータの読み書き及びコマンドの転送に用いられる。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)USBデバイス51(エラー訂正回路)は、第2のパケットチェック回路53がACKハンドシェイクパケットを受信すると、そのトランザクションで転送要求を受け付けているエンドポイント55〜57のデータトグルビットの値を反転させるトグルビット切り替え回路54を備えている。このトグルビット切り替え回路54は、第1のパケットチェック回路52がトークンパケットを受信すると、そのトランザクションで転送要求を受けたエンドポイントと、前回のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断する。そして、異なるエンドポイントへの転送要求である場合には、前回のトランザクションで転送要求を受けたエンドポイントのデータトグルビットを反転してエラーを訂正する。この構成では、データトグルビットエラーが発生する場合にも、そのエラーを早期に検出して訂正することができるため、転送効率の低下を抑止することができる。延いてはシステム全体のパフォーマンスが低下することを抑止できる。
(2)エラーを早期に検出及び訂正するようにしたことで、無用なトランザクションが実行されることが防止され、USBホスト11からの転送要求に対して即座に対応可能となる。従って、転送効率の向上化に貢献できる。
尚、上記各実施形態は、以下の態様で実施してもよい。
・各実施形態においては、USBデバイスがパケット判別回路とエラー訂正回路とをそれぞれ個別に備える場合について説明したが、両回路をともに備える構成としてもよい。即ち、第一実施形態のUSBデバイス12(パケット判別回路)の機能と第二実施形態のUSBデバイス51(エラー訂正回路)の機能とを有するように構成してもよい。
・第一実施形態では、パケット判別回路の構成をUSBハードディスクデバイスに適用したが、MOや、DVD,CDなどのATA/ATAPIデバイス、或いはプリンタ,スキャナなどのパソコン周辺装置等、他のデバイスに適用してもよい。
・第二実施形態では、エラー訂正回路の構成をUSBハードディスクデバイスに適用したが、MOや、DVD,CDなどのATA/ATAPIデバイス、或いはプリンタ,スキャナなどのパソコン周辺装置等、他のデバイスに適用してもよい。
パケット判別回路の構成を示すブロック図である。 パケット判別処理を説明するフローチャートである。 パケット判別回路をハードディスクデバイスに適用した例を示すブロック図である。 データトグルビットエラー訂正回路の構成を示すブロック図である。 データトグルビットエラー訂正処理を説明するフローチャートである。 データトグルビットエラー訂正処理の具体例を示すフローチャートである。 データトグルビットエラー訂正回路をハードディスクデバイスに適用した例を示すブロック図である。 (a)〜(c)はパケットのフォーマットを示す説明図である。 PIDのフォーマットを示す説明図である。 (a),(b)はトランザクションの処理の流れを示すフローチャートである。 従来のパケット判別処理を説明するフローチャートである。 従来のデータトグルビットエラー訂正回路の概略構成を示すブロック図である。 パケットの誤判定が生じる場合を示す説明図である。 従来のデータトグルビットエラー訂正処理を示すフローチャートである。
符号の説明
11 ホストコンピュータとしてのUSBホスト
12,51 データ処理装置としてのUSBデバイス
22 パケット判別手段としてのPIDデコーダ
23 パケット長測定回路
27,28,55〜57 複数のエンドポイント
54 トグルビット切り替え回路
54a 記憶領域

Claims (5)

  1. USBインタフェースを介してホストコンピュータとデータ通信を行うデータ処理装置であって、
    前記ホストコンピュータからの転送要求に応じたトランザクションを処理する複数のエンドポイントと、
    前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントとが同一であるか否かを判断し、異なるエンドポイントへの転送要求であるとき、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させるトグルビット切り替え回路と、
    を備えたことを特徴とするデータ処理装置。
  2. 前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるトークンパケットに含まれているエンドポイント番号を記憶するための記憶領域を有し、該記憶領域に記憶されているエンドポイント番号と、現在のトランザクションで転送要求を受けたエンドポイントのエンドポイント番号とを比較することを特徴とする請求項1記載のデータ処理装置。
  3. 前記トグルビット切り替え回路は、前記ホストコンピュータから送信されるハンドシェイクパケットを受け取ると、現在のトランザクションで転送要求を受け付けているエンドポイントのデータトグルビットの値を反転させることを特徴とする請求項1又は2記載のデータ処理装置。
  4. USBインタフェースを介してホストコンピュータとデータ
    通信を行う複数のエンドポイントのうち、前回のトランザクションで転送要求を受けたエンドポイントと現在のトランザクションで転送要求を受けたエンドポイントが同一であるか否かを判断し、異なるエンドポイントへの転送要求である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値を反転させるようにしたことを特徴とするエラー訂正方法。
  5. 前記前回のトランザクションで転送要求を受けたエンドポイントと前記現在のトランザクションで転送要求を受けたエンドポイントが同一である場合には、前記前回のトランザクションで転送要求を受けたエンドポイントに記憶されているデータトグルビットの値に従ってデータの再送処理を行うことを特徴とする請求項4記載のエラー訂正方法。
JP2007031985A 2007-02-13 2007-02-13 データ処理装置及びエラー訂正方法 Expired - Fee Related JP4616292B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007031985A JP4616292B2 (ja) 2007-02-13 2007-02-13 データ処理装置及びエラー訂正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007031985A JP4616292B2 (ja) 2007-02-13 2007-02-13 データ処理装置及びエラー訂正方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002247060A Division JP3955512B2 (ja) 2002-08-27 2002-08-27 データ処理装置及びパケット判別方法

Publications (2)

Publication Number Publication Date
JP2007179558A JP2007179558A (ja) 2007-07-12
JP4616292B2 true JP4616292B2 (ja) 2011-01-19

Family

ID=38304624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007031985A Expired - Fee Related JP4616292B2 (ja) 2007-02-13 2007-02-13 データ処理装置及びエラー訂正方法

Country Status (1)

Country Link
JP (1) JP4616292B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002009849A (ja) * 2000-06-21 2002-01-11 Nec Microsystems Ltd Usb転送制御方法およびusbコントローラ
JP2002055937A (ja) * 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd Usb装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002009849A (ja) * 2000-06-21 2002-01-11 Nec Microsystems Ltd Usb転送制御方法およびusbコントローラ
JP2002055937A (ja) * 2000-08-07 2002-02-20 Matsushita Electric Ind Co Ltd Usb装置

Also Published As

Publication number Publication date
JP2007179558A (ja) 2007-07-12

Similar Documents

Publication Publication Date Title
JP3955512B2 (ja) データ処理装置及びパケット判別方法
US7343545B2 (en) Method for processing noise interference
KR101099471B1 (ko) PCI.Express 통신 시스템, 및 그 통신 방법
JP4925659B2 (ja) アクセス時間が減少したフラッシュメモリ装置
JP4391954B2 (ja) ファイル制御システムおよびファイル制御装置
JP2007300619A (ja) 異なるデータ保護方法間で切換えにおいてデータの完全性を維持する方法、装置及びプログラム
US20070089031A1 (en) Methods and arrangements to remap degraded storage blocks
US20060036897A1 (en) Data storage device
US8281189B2 (en) SATA primitive prediction and correction
CN104699576B (zh) 串行通信测试装置、包括该装置的系统及其方法
US7430619B2 (en) Communication device, host apparatus, and communication method
JPH10133962A (ja) 外部記録装置を備えたデータ処理装置における転送データ検証方法および装置
JP4616292B2 (ja) データ処理装置及びエラー訂正方法
US20080184090A1 (en) Storage apparatus
EP2075943B1 (en) Methods and systems for error detection of data transmission
JP4455393B2 (ja) プログラマブルロジックコントローラ
JP4563834B2 (ja) データ通信システム
JP2000155737A (ja) デ―タパケット受信装置
JP4649304B2 (ja) 通信制御装置およびその制御方法
JP2009271594A (ja) 記憶装置
JP2007201786A (ja) 伝送誤り検出方式および伝送装置
JP2002055887A (ja) 伝送制御装置及び伝送制御方法、情報処理装置並びに情報記録媒体
KR19990034372A (ko) 데이터 전송시의 에러 검출 장치
KR19980075967A (ko) 데이터 전송 장치
JP2005303489A (ja) 通信装置および通信方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101021

R150 Certificate of patent or registration of utility model

Ref document number: 4616292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees