JP2004334417A - データ転送制御装置、電子機器及びデータ転送制御方法 - Google Patents
データ転送制御装置、電子機器及びデータ転送制御方法 Download PDFInfo
- Publication number
- JP2004334417A JP2004334417A JP2003127806A JP2003127806A JP2004334417A JP 2004334417 A JP2004334417 A JP 2004334417A JP 2003127806 A JP2003127806 A JP 2003127806A JP 2003127806 A JP2003127806 A JP 2003127806A JP 2004334417 A JP2004334417 A JP 2004334417A
- Authority
- JP
- Japan
- Prior art keywords
- hub
- packet
- data
- data transfer
- transfer
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
【解決手段】データ転送制御装置100は、ハブとの間で転送されるパケットが格納されるハブ専用データ記憶部110と、ハブの状態の変化の有無を問い合わせるトークンパケットを前記ハブに対して周期的に発行するパケット送信部120と、前記トークンパケットに対応して、前記ハブが返信した応答パケットを受信するパケット受信部130と、前記パケット受信部により受信された前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行う転送コントローラ160とを含む。
【選択図】 図4
Description
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【0002】
【従来の技術】
従来より、パーソナルコンピュータと周辺機器(広義には電子機器)とを接続するためのインターフェース規格としてUSB(Universal Serial Bus)が知られている。USB(高速シリアルバス)には、マウスやキーボードやプリンタ等の機器を同じ規格のコネクタで接続できると共に、いわゆるプラグ&プレイやホットプラグも実現できるという利点がある。また、従来のUSB1.1の規格に対する互換性を持ちながら、USB1.1に比べて格段に高速な480Mbps(ビット毎秒)(HSモード)のデータ転送速度を実現できる規格としてUSB2.0規格が策定され、注目を浴びている。
【0003】
【特許文献1】
特開平10−303948号公報
【0004】
【発明が解決しようとする課題】
USBでは、パーソナルコンピュータに代表されるホストを中心とした接続形態(バストポロジ)が採用される。ホストは、バスに接続されるデバイスに関する情報(デバイスディスクリプタ)を取得し、デバイスに対して固有のアドレスを割り当てる。そしてホストは、デバイス間のデータ転送のスケジューリングを行って、各デバイスのエンドポイントとの間でデータ転送を行う。
【0005】
またUSBでは、ハブ(HUB)を設けることにより、ホストと複数のデバイスとを接続することができる。USBでは、いわゆるプラグ&プレイやホットプラグを実現するため、電源投入後等にハブに新たにデバイスが接続されたりデバイスが抜かれた場合に、ホストがハブの状態を取得して、再度スケジューリング等を行う。このためホストは、他のデバイスと同様にハブとの間で論理的な通信路であるパイプを設定し、周期的にハブに対してその状態の変化を監視する。
【0006】
しかしながら、ハブを監視するために設定されるパイプに対しても、他のデバイスとの間で設定されるパイプと同様にホスト上のリソースが割り当てられる。従って、ハブの状態の変化の頻度が低いにも関わらず、ハブを監視するためにホスト上の有限なリソースを用いることになり、リソースの有効活用を図ることができなかった。
【0007】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ハブが接続された場合でも効率的にリソースを活用することができるデータ転送制御装置、これを含む電子機器、及びデータ転送制御方法を提供することにある。
【0008】
【課題を解決するための手段】
上記課題を解決するために本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、ハブとの間で転送されるパケットが格納されるハブ専用データ記憶部と、前記ハブの状態の変化の有無を問い合わせるトークンパケットを前記ハブに対して周期的に発行するパケット送信部と、前記トークンパケットに対応して、前記ハブが返信した応答パケットを受信するパケット受信部と、前記パケット受信部により受信された前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行う転送コントローラとを含むデータ転送制御装置に関係する。
【0009】
また本発明に係るデータ転送制御装置では、前記転送コントローラは、前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に、前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行ってもよい。
【0010】
ここでハブは、複数のポートを有し、ポートにデバイスが接続される。このようなハブを介して複数のデバイスを接続することで、本発明に係るデータ転送制御装置と複数のデバイスとの間でデータ転送を行うことができる。
【0011】
本発明においては、トークンパケットを発行してハブの状態の変化の有無を周期的に問い合わせる場合に、該ハブとの間の転送専用に用いられるハブ専用データ記憶部が設けられる。そして、ハブがトークンパケットに対応して返信した応答パケットを受信すると、該応答パケットがNAKパケットであるか否かを判別し、NAKパケットではないと判別したとき、受信した応答パケットをハブ専用データ記憶部に書き込み、かつハブの状態が変化したことを示す割り込みを発生させる。従って、割り込みにより通知された処理部が、例えばハブ専用データ記憶部を読み出し、ハブの状態の変化を認識し、その変化に対応した設定をデータ転送制御装置に対して行うことができるようになる。
【0012】
なお応答パケットがNAKパケットのとき、受信した応答パケットに対する処理を行わなくてもよい。
【0013】
本発明によれば、ハブの状態の変化を監視するための転送に対し、他のデバイスとの間の転送に対して確保されるリソースを割り当てることなく、専用のデータ記憶部が割り当てられる。ハブの状態の変化の頻度が低い場合、他のデバイスとの間の転送に確保可能なリソースを消費してしまうことなく、設定できる転送の自由度を低下させることがない。
【0014】
また、ハブの状態の変化があったと判断されたときのみ、応答パケットをハブ専用データ記憶部に書き込むようにしたので、ハブ専用データ記憶部の記憶領域を最低限に抑えることができる。
【0015】
また本発明に係るデータ転送制御装置では、各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファを含み、前記ハブ専用データ記憶部の記憶領域は、前記パケットバッファの記憶領域とは別の領域に設けられてもよい。
【0016】
本発明によれば、ハブ専用データ記憶部が、各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファと物理的に異なるように構成したので、汎用的に用いられるパケットバッファの記憶領域を削減することなく、ハブの状態を監視するデータ転送制御装置を提供することができる。
【0017】
また本発明に係るデータ転送制御装置では、各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファと、ハブ専用転送モード又は通常転送モードを指定するための設定データが設定される転送モード設定レジスタとを含み、前記転送モード設定レジスタによりハブ専用転送モードが設定されたとき、エンドポイントであるハブとの間の転送に対して前記ハブ専用データ記憶部の記憶領域が割り当てられ、前記転送モード設定レジスタにより通常転送モードが設定されたとき、エンドポイントであるハブとの間の転送に対して前記パケットバッファの記憶領域が割り当てられてもよい。
【0018】
本発明においては、転送モード設定レジスタを設けてハブ専用転送モード又は通常転送モードを指定できるようにし、ハブ専用転送モードに指定されたときのみ、エンドポイントであるハブとの間の転送に対して前記ハブ専用データ記憶部の記憶領域が割り当てられる。これにより、ハブの監視のために固定的にリソースが割り当てられることなく、リソースを有効に活用してデータ転送の設定の自由度を向上させることができる。
【0019】
また本発明に係るデータ転送制御装置では、前記ハブ専用データ記憶部を用いたデータ転送の開始を指定するための指定ビットを有する転送条件レジスタを含み、前記指定ビットがアクティブのとき、前記パケット送信部が前記トークンパケットを発行してもよい。
【0020】
また本発明に係るデータ転送制御装置では、前記指定ビットがアクティブになってから非アクティブになるまでの間、前記パケット送信部が前記トークンパケットを周期的に発行し続けてもよい。
【0021】
本発明によれば、転送条件レジスタに含まれる指定ビットを用いて、周期的にトークンパケットの発行を続けるようにしたので、頻度が低い割り込みに対する処理部の制御を簡素化できる。
【0022】
また本発明に係るデータ転送制御装置では、USB(Universal Serial Bus)規格に準拠したデータ転送を行ってもよい。
【0023】
また本発明に係るデータ転送制御装置では、ホストとして動作するホスト動作を制御するためのステートと、ペリフェラルとして動作するペリフェラル動作を制御するためのステートとを含む複数のステートの遷移によりホスト動作又はペリフェラル動作の制御を行うステートコントローラを含み、前記転送コントローラが、ホスト動作時において、ホストとしてデータ転送を行うホストコントローラと、ペリフェラル動作時において、ペリフェラルとしてデータ転送を行うペリフェラルコントローラとを含み、ホスト動作時には、各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域がパケットバッファに確保され、前記ホストコントローラが、パイプ領域と該パイプ領域に対応するエンドポイントとの間でパケットを転送し、ペリフェラル動作時には、ホストとの間で転送されるパケットが各エンドポイント領域に記憶される複数のエンドポイント領域がパケットバッファに確保され、前記ペリフェラルコントローラが、エンドポイント領域とホストとの間でパケットを転送し、前記ホストコントローラが、ホスト動作時に、前記パケット送信部により前記ハブに対して前記トークンパケットを周期的に発行し、該トークンパケットに対応した前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に前記転送コントローラにより前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行ってもよい。
【0024】
また本発明に係るデータ転送制御装置では、USBのOTG(On−The−Go)規格に準拠したデータ転送を行ってもよい。
【0025】
本発明によれば、いわゆるデュアルロール・デバイスの機能を実現することができる。そして、このようなデュアルロール・デバイスの機能を実現した上で、ハブの監視のために無駄にリソースを消費することがないデータ転送制御装置を提供することができる。
【0026】
また本発明は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置を制御するプロセッサとを含む電子機器に関係する。
【0027】
また本発明は、バスを介したデータ転送のためのデータ転送制御方法であって、ハブの状態の変化の有無を問い合わせるトークンパケットを周期的に発行し、前記トークンパケットに対応して、前記ハブからの応答パケットを受信し、前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に、前記応答パケットを前記ハブ専用データ記憶部に書き込むと共に前記ハブの状態が変化したことを示す割り込みを発生するデータ転送制御方法に関係する。
【0028】
【発明の実施の形態】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【0029】
1. USBのデータ転送
まず、USB(広義にはシリアルバス)のデータ転送について簡単に説明する。USBではデータ転送の主導権をホストが有している。即ち、データ転送のトランザクションを起動するのはホストであり、データ転送に関する大部分の制御はホストが行う。従って、デバイス(ターゲット)はホストからの要求に対して単に応えるだけでよい。このため、デバイス側の処理、構成を簡素化でき、デバイスが内蔵するCPU(Central Processing Unit)(広義にはプロセッサ)としても低価格なものを用いることが可能になる。
【0030】
USBでは、このようなホスト主導のデータ転送を実現するために、図1に示すようなエンドポイント(Endpoint)(EP0〜EP15)がデバイス側に用意される。USBでは、ホストと1つのデバイスとの間に、複数の論理的な通信路(パイプ)を持たせることができ、各パイプのデバイス側の端がエンドポイントと呼ばれる。各エンドポイントは、物理的には、少なくとも1パケット分のデータを格納できるFIFOメモリで実現される。
【0031】
エンドポイントは、デバイスアドレスとエンドポイント番号とにより一義的にアドレス指定できる。即ちホストは、デバイスアドレスとエンドポイント番号とを指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。また、エンドポイントの構成の仕方はデバイス側の任意であり、エンドポイント番号の割り当てや、各エンドポイントに割り当てられる記憶領域のデータサイズ等は、エニュメレーション(enumeration)処理時にホストが知ることができる。
【0032】
2. USBのOTG(On−The−Go)規格
USBでは、ホストに接続されていたデバイスにホスト機能を持たせることができるOTG規格と呼ばれるインターフェース規格が策定された。OTG規格によれば、デバイス同士を接続してUSB規格に従ったデータ転送を行うことができる。例えばデジタルカメラとプリンタとをダイレクトに接続してデジタルカメラの画像を印刷することが可能となる。また、デジタルカメラやデジタルビデオカメラをストレージ装置に接続して、データを保存することが可能となる。
【0033】
2.1 Aデバイス、Bデバイス
OTG規格では、コネクタの規格として、図2(A)に示すようなMini−Aプラグ、Mini−Bプラグが定義されている。また、これらのMini−Aプラグ、Mini−Bプラグの両方を接続できるコネクタとして、Mini−ABレセプタクル(receptacle)が定義されている。
【0034】
そして例えば図2(B)のように、USBケーブルのMini−Aプラグに電子機器Pが接続され、Mini−Bプラグに電子機器Qが接続されると、電子機器PはAデバイスに設定され、電子機器QはBデバイスに設定される。一方、図2(C)に示すように、Mini−Bプラグ、Mini−Aプラグが電子機器P、Qに接続されると、電子機器P、Qは、それぞれBデバイス、Aデバイスに設定される。
【0035】
Mini−Aプラグ内ではIDピンがGNDに接続されており、Mini−Bプラグ内ではIDピンがフローティング状態になっている。電子機器は、内蔵するプルアップ抵抗を用いて、IDピンの電圧レベルを検出することで、自身がMini−Aプラグに接続されたのか、或いはMini−Bプラグに接続されたのかを判断する。
【0036】
OTG規格では、Aデバイス(マスタ)が、電源(VBUS)を供給する側(供給元)になり、Bデバイス(スレーブ)が、電源の供給を受ける側(供給先)になる。またAデバイスは、デフォルトでホストとなり、Bデバイスは、デフォルトでペリフェラル(周辺機器)になる。ペリフェラルは、USB2.0規格におけるデバイスとして動作する。
【0037】
2.2 デュアルロール・デバイス
OTG規格では、ホスト(簡易ホスト)としての役割とペリフェラルとしての役割の両方を持つことができるデュアルロール・デバイス(Dual−Role Device)が定義されている。
【0038】
デュアルロール・デバイスは、ホストとしてホスト動作を行うことができ、またペリフェラルとしてペリフェラル動作を行うことができる。そして、デュアルロール・デバイスに接続された相手が、従来のUSB規格におけるホストやペリフェラルである場合には、デュアルロール・デバイスの役割は一意に定まる。つまり、接続相手がホストであれば、デュアルロール・デバイスはペリフェラルになり、接続相手がペリフェラルであれば、デュアルロール・デバイスはホストになる。
【0039】
一方、接続相手がデュアルロール・デバイスである場合には、両方のデュアルロール・デバイスは、互いにホストとペリフェラルの役割を交換できる。
【0040】
2.3 SRP、HNP
デュアルロール・デバイスは、図3(A)、(B)に示すようなセッション開始要求手順SRP(Session Request Protocol)やホスト交換手順HNP(Host Negotiation Protocol)の機能を持つ。
【0041】
ここでセッション開始要求手順SRPは、BデバイスがAデバイスに対して、VBUS(電源)の供給を要求するプロトコルである。
【0042】
OTG規格では、バスを使用しないAデバイスは、VBUSの供給を停止できる。これにより、Aデバイスが例えば小型の携帯機器であった場合に、無駄な電力消費を防止できる。そして、AデバイスがVBUSの供給を停止した場合に、BデバイスがVBUSを供給してもらいたい場合には、このSRPを使用して、Aデバイスに対してVBUSの供給の再開を要求する。
【0043】
図3(A)に、SRPの概要を示す。図3(A)に示すように、Bデバイスは、データラインパルシング(Data−line Pulsing)又はVBUSパルシングを行うことで、Aデバイスに対してVBUSの供給を要求する。そして、AデバイスによるVBUSの供給の開始後に、Bデバイスのペリフェラル動作(peripheral operation)と、Aデバイスのホスト動作(host operation)が開始する。
【0044】
図2(A)〜図2(C)で説明したように、デュアルロール・デバイス同士の接続では、Mini−Aプラグが接続された側であるAデバイスがデフォルトのホストとなり、Mini−Bプラグが接続された側であるBデバイスがデフォルトのペリフェラルになる。そして、OTGでは、プラグの抜き差しを行わなくても、ホストとペリフェラルの役割を交換できる。HNPは、このホストとペリフェラルの役割を交換するためのプロトコルである。
【0045】
図3(B)に、HNPの概要を示す。デフォルトのホストとして動作するAデバイスが、バスの使用を終了すると、バスがアイドル状態になる。その後に、Bデバイスがデータ信号線DP(D+)のプルアップ抵抗を無効にすると、Aデバイスがデータ信号線DPのプルアップ抵抗を有効にする。これにより、Aデバイスの役割はホストからペリフェラルに変わり、ペリフェラルとしての動作を開始する。また、Bデバイスの役割はペリフェラルからホストに変わり、ホストとしての動作を開始する。
【0046】
その後、Bデバイスがバスの使用を終了し、Aデバイスがデータ信号線DPのプルアップ抵抗を無効にすると、Bデバイスがデータ信号線DPのプルアップ抵抗を有効にする。これにより、Bデバイスの役割はホストからペリフェラルに戻り、ペリフェラルとしての動作を再開する。また、Aデバイスの役割はペリフェラルからホストに戻り、ホストとしての動作を再開する。
【0047】
以上説明したOTGによれば、携帯電話やデジタルカメラなどの携帯機器をUSBのホストとして動作させ、携帯機器同士をポイント・ツー・ポイント(ピア・ツー・ピア)で接続してデータ転送を行うことが可能になる。これにより、USBインターフェースに新たな付加価値を生むことができ、これまでに存在しなかったアプリケーションを創出できる。
【0048】
3. データ転送制御装置
図4に、本実施形態におけるデータ転送制御装置の構成の要部を示す。図4では、本実施形態におけるデータ転送制御装置100を含む電子機器10にハブ200が接続されている。電子機器10は、バス20を介してハブ200との間でデータ(パケット)転送を行う。このデータ転送は、電子機器10に含まれるデータ転送制御装置100によって制御される。ハブ200は、各ポートが他の電子機器(周辺機器)に接続される複数のポートP1〜Pn(nは2以上の整数)を含み、電子機器10と各ポートに接続される他の電子機器との間のデータ転送を実現させる。
【0049】
電子機器10は、処理部50と、データ転送制御装置100とを含む。処理部50は、データ転送制御装置100等の電子機器10の全体を制御する。処理部50は、ASIC(Application Specific Integrated Circuit)等で構成されるアプリケーションデバイス(アプリケーション層のデバイス)、CPU(広義にはプロセッサ)、ROM(Read Only Memory)、RAM(Random Access Memory)を含む。アプリケーションデバイスとしては、例えばハードディスクドライバや光ディスクドライブ等のメディアドライブを制御するデバイスや、プリンタやスキャナを制御するデバイスや、MPEGエンコーダ、MPEGデコーダ等を含むデバイス等がある。
【0050】
データ転送制御装置100を制御するファームウェア(プログラム)は、CPU上で動作させることができる。処理部50のROMは、制御プログラムや各種のデータを記憶する。処理部50のRAMは、CPUやデータ転送制御装置100のワーク領域やデータ格納領域となる。
【0051】
また電子機器10は、表示部、操作部を含むことができる。電子機器10の表示部は、種々の情報をユーザに対して表示出力する。操作部はユーザが電子機器を操作するためのものである。このような電子機器として、光ディスクドライバ(CD−ROM、DVD)、光磁気ディスク(MO)、ハードディスクドライブ、TV、TVチューナ、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、PDA、或いはワードプロセッサ等の種々のものがある。
【0052】
データ転送制御装置100は、ハブ専用データ記憶部110と、パケット送信部120と、パケット受信部140と、パケットバッファ150と、転送コントローラ160、トランシーバ部162とを含む。
【0053】
処理部50は、バス20を介して接続されるデバイスとの間に論理的な通信路を設定する。即ち処理部50は、デバイスとの間で行われる転送の種類、転送の方向、転送量等の設定を行う。図4に示すようにバス20にハブ200が接続される場合、処理部50は、ハブ200のポートに接続されるデバイスとの間に通信路を設定する。このため処理部50は、ハブ200のポートの状態を把握して各ポートに接続されるデバイスを認識する必要がある。
【0054】
そこでデータ転送制御装置100は、ハブ200との間に監視用の通信路を設定し、ハブ200に対してトークンパケット(広義にはトークン)を周期的に発行して、ハブ200の状態を応答パケット(広義には応答データ)として取り込む。ここで、ハブ200の状態とは、例えばハブ200のポートの使用状態又はポートの接続状態ということができる。そして、処理部50は、データ転送制御装置100に取り込まれた応答パケットを解析して、ハブ200の各ポートに接続されるデバイスを把握して通信路の設定を行う。
【0055】
このとき、処理部50は、設定した通信路の一端のハブ又はデバイス(エンドポイント)ごとにリソースを確保して、データ転送制御装置100によるデータ転送を制御する。即ちデータ転送制御装置100では、エンドポイントごとにパケットバッファ150の領域が確保される。
【0056】
このようにしてリソースが割り当てられたデータ転送制御装置100は、転送コントローラ160が制御するパケット送信部120及びパケット受信部140により、トランシーバ部162及びバス20を介してエンドポイントとの間でデータ転送を行う。より具体的には、データ転送制御装置100は、パケットバッファ150を用いてデータ転送を行う。パケットバッファ150には、各エンドポイントとの間で転送されるパケット(データ)が各パイプ領域に記憶される複数のパイプ領域が確保される。そして、データ転送制御装置100は、エンドポイントごとにパケットバッファ150に設けられた領域にパケットの書き込み及び読み出しを行いながら、データ転送を行う。
【0057】
これに対して、エンドポイントがハブ200の場合、データ転送制御装置100では、当該エンドポイントに対してハブ専用データ記憶部110が割り当てられる。ハブ専用データ記憶部110には、ハブ200との間で設定された通信路を介してハブ200との間で転送されるパケット(広義にはデータ)が格納される。
【0058】
パケット送信部120は、トークンパケット生成部122、データパケット生成部124、ハンドシェークパケット生成部126を含む。パケット送信部120のトークンパケット生成部122は、トークン発行部として、ハブ200の状態の変化の有無を問い合わせるトークンパケットをハブ200に対して周期的に発行する。なお、データパケット生成部124は、データパケットを生成する。生成されたデータパケットは、パケット送信部120によりバス20を介して送信される。ハンドシェークパケット生成部126は、ハンドシェークパケットを生成する。ハンドシェークパケットは、パケット送信部120によりバス20を介して送信される。
【0059】
ハブ200は、バス20を介してデータ転送制御装置100からのトークンパケットを受信すると、該トークンパケットに対応した応答パケットを返信する。応答パケットは、ハブ200の状態が変化したこと、又はハブ200の状態が変化しないことを表わすデータを含む。なおハブ200の状態が変化しないことを表わすデータとしては、ハブ200が返信すべきデータがないことを示すNAKパケットがある。
【0060】
ハブ200によって返信された応答パケットは、データ転送制御装置100のトランシーバ部162を介してパケット受信部140により受信される。即ちパケット受信部140は、トークンパケットに対応し、ハブ200によって返信された応答パケットを受信する。パケット受信部140によって受信された応答パケットは、転送コントローラ160によって解析される。
【0061】
転送コントローラ160は、ハブ200からの応答パケットが、ハブ200の状態が変化しないことを表わすNAKパケット(第1のパケット)であるか否かを判別する。応答パケットがNAKパケットであると判別されたとき、転送コントローラ160は、ハブ200の状態が変化していないと判断し、次回に発行されるトークンパケットに対応する応答パケットの受信を待つ。一方、応答パケットがNAKパケットではないと判別されたとき、転送コントローラ160は、ハブ200の状態が変化したと判断し、該応答パケットをハブ専用データ記憶部110に書き込む制御を行うと共に、処理部50に対してハブ200の状態が変化したことを示す割り込みを発生する制御を行う。こうして発生した割り込みにより、処理部50にその旨を通知する。
【0062】
転送コントローラからの制御により発生した割り込みを受信した処理部50はファームウェアにより制御される。処理部50は、例えばハブ専用データ記憶部110に格納された応答パケットを読み出し、ハブ200の状態がどのように変化したかを解析し、変化後のハブ200の状態に対応した通信路の再構築や、ハブ200に接続されたデバイスの過電流発生に対する対処等を行う。
【0063】
このようにデータ転送制御装置100では、ハブ専用データ記憶部110を設けている。そして、ハブの監視用に設定される通信路を介して行われるデータ転送にはパケットバッファ150を割り当てずに、ハブ専用データ記憶部110を割り当てる。即ちハブ専用データ記憶部110の記憶領域が、パケットバッファ150とは別の領域に設けられている。こうすることで、ハブの状態が変化する頻度が少ないにも関わらず、汎用的に用いられる有限なリソースを割り当てる必要がなくなり、リソースの有効活用を図ることができるようになる。またハブの状態が変化したことを示すパケットのサイズは小さいため、ハブ専用データ記憶部110をレジスタ等のハードウェアにより構成してもその影響は小さいため、ハードウェアの増加よりもリソースの有効活用により得られる効果が大きい。
【0064】
またデータ転送制御装置100は、更に転送モード設定レジスタ170を含んでも良い。この場合、転送モード設定レジスタ170には、ハブ専用転送モードの転送又は通常転送モードを指定するための設定データが、例えば処理部50によって設定される。
【0065】
転送モード設定レジスタ170に、ハブ専用転送モードの転送制御を行うように指定する設定データが設定された場合、ハブ200との間に設定される通信路を介して行われる転送がハブ専用転送モードの転送となる。ハブ専用転送モードの転送では、リソースとして、データ転送制御装置100のハブ専用データ記憶部110が割り当てられる。即ち、エンドポイントであるハブとの間の転送に対してハブ専用データ記憶部110の記憶領域がリソースとして割り当てられる。
【0066】
転送モード設定レジスタ170に、通常転送モードの転送制御を行うように指定する設定データが設定された場合、ハブ200との間に設定される通信路を介して行われる転送が通常転送モードの転送となる。通常転送モードの転送では、リソースとして、データ転送制御装置100のパケットバッファ150が割り当てられる。即ち、エンドポイントであるハブとの間の転送に対してパケットバッファ150の記憶領域がリソースとして割り当てられる。
【0067】
こうすることで、汎用のパケットバッファ150にリソースを割り当てることなく、ハブとの間で通信路が設定された場合にだけリソースとしてハブ専用データ記憶部110を割り当てることができるようになり、リソースを有効に活用することができる。
【0068】
更にデータ転送制御装置100は、転送条件レジスタ180を含んでもよい。そして転送条件レジスタ180は、ハブ専用データ記憶部110を用いたデータ転送の開始を指定するための指定ビットを有する。
【0069】
パケット送信部120は、指定ビットがアクティブのとき、トークンパケットを発行(送信)する。そして、指定ビットがアクティブになってから非アクティブになるまでの間、パケット送信部120がトークン発行部として、トークンパケットを周期的に発行し続ける。このようにしてハブ200の監視をすることで、頻度が低い割り込みに対する処理部50の制御を簡素化できる。
【0070】
4. データ転送制御装置の構成例
以下では、本実施形態におけるデータ転送制御装置100が、USBのOTG規格に準拠したデータ転送制御を行う場合を例に、具体的な構成について説明する。この場合、データ転送制御装置100がホストとして動作する場合に、データ転送制御装置100がハブ200の状態の変化を監視する。
【0071】
まず、ハブ200について説明する。
【0072】
図5に、ハブ200の機能ブロックの構成例の概要を示す。ハブ200は、USB規格におけるハブとして機能し、図4に示すようにバス20を介してデータ転送制御装置100と接続される。
【0073】
ハブ200は、ポートP1〜Pnを含む。各ポートには、USB(バス)を介してデバイスが接続される。ハブ200は、トークン受信部210、ステータス変化ビット生成部220、データパケット生成部230、NAK(Negative AcKnowledgement)パケット生成部240、応答パケット送信部250を含む。
【0074】
トークン受信部210は、データ転送制御装置100からのトークンパケットを受信する。USB規格に準拠したデータ転送制御装置100では、後述するようにパケット送信部120が、転送の種類がインタラプト(Interrupt)転送で、転送方向がIN方向のトークンパケットを発行する。
【0075】
ステータス変化ビット生成部220は、ハブ200の状態の変化の様子を示すステータス変化ビットを生成する。ハブ200の状態は、ポートP1〜Pnの状態ということができる。ポートに新たにケーブルが刺されたとき、或いは新たにケーブルが抜かれたときに、ステータス変化ビットは、そのポートの状態が変化したことを示す。
【0076】
図6に、ステータス変化ビットの説明図を示す。ステータス変化ビットは、各ポートの変化が検出されたときに「1」となる変化検出ビットと、ハブ200の状態が変化したことを示すハブ変化検出ビットとを含む。例えば、ハブ変化検出ビットによりハブの状態が変化したか否かを判断することができる。そして、ハブ変化検出ビットにより、どのポートが変化したかを判別することができる。
【0077】
ハブ200との通信路を構築するときに、ハブディスクリプタでハブ200のポート数がデータ転送制御装置100において認識される。従って、バイト長単位で扱われるステータス変化ビットは、ハブ200のポート数が8の倍数でなくても、どのポートが変化したかを容易に判別することができる。
【0078】
図5において、データパケット生成部230は、トークン受信部210で受信されたトークンパケットに対応した応答パケットとして、ステータス変化ビット生成部220により生成されたステータス変化ビットを含む応答パケットを生成する。
【0079】
またNAKパケット生成部240は、NAKパケットを生成する。NAKパケットは、トークン受信部210でデータ転送制御装置100からのトークンパケットに対応して、ハブ200から転送すべきデータがない場合に返信される。
【0080】
応答パケット送信部250は、トークン受信部210で受信されたトークンパケットに対応して、データパケット生成部230で生成された応答パケット、又はNAKパケット生成部240で生成されたNAKパケットを、バス20を介してデータ転送制御装置100に対して送信する。
【0081】
図7(A)、(B)に、データ転送制御装置100とハブ200との間で行われるトランザクションの説明図を示す。図7(A)は、ハブ200の状態の変化があったときに行われるトランザクションの例を模式的に示したものである。図7(B)は、ハブ200の状態の変化がなかったときに行われるトランザクションの例を模式的に示したものである。
【0082】
USBでは、データ転送制御装置100がハブ200に対してその状態の変化を問い合わせる場合に、転送方向がIN方向のインタラプト転送が用いられる。インタラプト転送では、原則的にトークン・フェーズ、データ・フェーズ及びハンドシェーク・フェースの3フェーズに区分される。各フェーズで、USBで規定されたパケットが転送される。USBのパケットは、SYNCフィールドで始まり、EOP(End−of−Packet)で終了する。
【0083】
まずトークン・フェーズにおいて、データ転送制御装置100が、INトークンパケットをハブ200に対して送信する。INトークンパケットは、パケット識別子PID(Packet Identifier Field)、アドレスフィールドADDR、エンドポイントフィールドENDP及びCRC(Cyclic Redundancy Check)を含む。アドレスフィールドADRとエンドポイントフィールドENDPとにより、エンドポイントが指定される。転送方向はPIDによって指定される。
【0084】
データ転送制御装置100からのINトークンパケットを受信したハブ200は、その状態の変化があったとき、データ・フェーズにおいて、応答パケットとしてINデータを返信する。INデータは、パケット識別子PID、データフィールドDATA及びCRCを含む。パケット識別子PIDには、DATA0の識別子とDATA1の識別子とが交互に付与される。そして、データフィールドDATAに図6に示したステータス変化ビットを含むパケットが設定される。
【0085】
ハブ200からINデータを受信したデータ転送制御装置100は、ハンドシェーク・フェーズにおいてACK(positive ACKnowledge)パケットをハブ200に対して返信する。ACKパケットを返信することで、正常に受信されたたことをハブ200に対して通知する。ACKパケットは、パケット識別子PIDのみで構成される。パケット識別子PIDには、ACKパケットであることを表わす識別子が設定される。
【0086】
またデータ転送制御装置100からのINトークンパケットを受信したハブ200は、その状態の変化がなかったとき、図7(B)に示すように、データ・フェーズにおいて、応答パケットとしてNAKパケットを返信する。NAKパケットは、図5のNAKパケット生成部240において生成される。NAKパケットを返信することで、返信すべきデータがないことをデータ転送制御装置100に対して通知する。NAKパケットもACKパケットと同様に、パケット識別子PIDのみで構成される。パケット識別子PIDには、NAKパケットであることを表わす識別子が設定される。
【0087】
次に、図5に示すようなハブ200を監視することができ、かつUSBのOTG規格に準拠したデータ転送制御装置100の詳細な構成例について説明する。
【0088】
図8に、データ転送制御装置100の詳細な構成例を示す。
【0089】
データ転送制御装置100は、トランシーバ310、OTGコントローラ320、HC/PC切り替え回路330、転送コントローラ340、レジスタ部370、バッファコントローラ380、パケットバッファ390、インターフェース回路400、クロックコントローラ410を含む。なおデータ転送制御装置100は、図8のすべての回路ブロックを含む必要はなく、その一部の回路ブロックを省略してもよい。
【0090】
図4におけるパケット送信部120、パケット受信部140及び転送コントローラ160は、転送コントローラ340によりその機能が実現される。図4におけるトランシーバ部162は、トランシーバ310、HC/PC切り替え回路330及び転送コントローラ340によりその機能が実現される。図4におけるハブ専用データ記憶部110は、レジスタ部370によりその機能が実現される。図4におけるパケットバッファ150は、パケットバッファ390によりその機能が実現される。図4における転送モード設定レジスタ170及び転送条件レジスタ180は、レジスタ部370によりその機能が実現される。
【0091】
トランシーバ310(以下、適宜Xcvrと呼ぶ)は、差動データ信号DP、DMを用いてUSB規格に準拠して転送されるデータを送受信する回路であり、USBの物理層(PHY)回路312を含む。より具体的には、トランシーバ310は、DP、DMのラインステート(J、K、SE0等)の生成、シリアル/パラレル変換、パラレル/シリアル変換、ビットスタッフィング、ビットアンスタッフィング、NRZIデコード、NRZIエンコード等を行う。なお、トランシーバ310をデータ転送制御装置の外部に設けるようにしてもよい。
【0092】
OTGコントローラ320(広義にはステートコントローラ。以下、適宜OTGCと呼ぶ)は、OTGのSRP機能やHNP機能(図3(A)、(B)参照)を実現するための種々の処理を行う。即ち、OTGコントローラ320は、ホストの役割として動作するホスト動作のステートや、ペリフェラルの役割として動作するペリフェラル動作のステートなどを含む複数のステートの遷移によりホスト動作又はペリフェラル動作の制御を行うと共に、これらステートの遷移によりホスト動作とペリフェラル動作との切り替え制御を行う。
【0093】
より具体的には、OTG規格には、デュアルロール・デバイスのAデバイス時(図2(B)、(C)参照)のステート遷移や、Bデバイス時のステート遷移が定義されている。OTGコントローラ320は、これらのステート遷移を実現するためのステートマシーンを含む。また、OTGコントローラ320は、USBのデータラインステートや、VBUSレベルや、IDピンのステートを検出(監視)する回路を含む。そして、OTGコントローラ320が含むステートマシーンは、これらの検出情報に基づいて、そのステート(例えば、ホスト、ペリフェラル、サスペンド又はアイドル等のステート)を変化させる。この場合のステートの遷移は、ハードウェアにより実現してもよいし、ファームウェアがステートコマンドをレジスタに設定することで実現してもよい。そして、ステートが遷移すると、OTGコントローラ320は、遷移後にステートに基づいて、VBUSを制御したり、DP、DMのプルアップ抵抗又はプルダウン抵抗の接続又は非接続を制御したりする。また、転送コントローラ340に含まれるホストコントローラ350(以下、適宜HCと呼ぶ)、ペリフェラルコントローラ360(以下、適宜PCと呼ぶ)のイネーブル又はディセーブルを制御する。
【0094】
HC/PC切り替え回路330(HC/PC・コモン回路)は、トランシーバ310と、ホストコントローラ350又はペリフェラルコントローラ360との間の接続の切り替え制御を行う。また、USBのデータ(DP、DM)のラインステートの生成の指示をトランシーバ310に対して行う。なお、接続の切り替え制御は、HC/PCセレクタ332により実現され、ラインステートの生成指示は、ラインステートコントローラ334により実現される。
【0095】
例えばOTGコントローラ320が、ホスト動作時(ホストステート時)にHCイネーブル信号をアクティブにすると、HC/PC切り替え回路330(HC/PCセレクタ332)は、トランシーバ310とホストコントローラ350を接続する。一方、OTGコントローラ320が、ペリフェラル動作時に(ペリフェラルステート時)にPCイネーブル信号をアクティブにすると、HC/PC切り替え回路330は、トランシーバ310とペリフェラルコントローラ360を接続する。このようにすることで、ホストコントローラ350とペリフェラルコントローラ360とを排他的に動作させることが可能になる。
【0096】
転送コントローラ340は、USB(広義にはバス)を介したデータ転送を制御する回路であり、ホストコントローラ350(HC)とペリフェラルコントローラ360(PC)を含む。
【0097】
ここでホストコントローラ350は、ホスト動作時(OTGコントローラ320からのHCイネーブルのアクティブ時)に、ホストの役割としてのデータ転送制御を行う回路である。
【0098】
即ちホストコントローラ350は、ホスト動作時に、HC/PC切り替え回路330によりトランシーバ310に接続される。そしてホストコントローラ350は、レジスタ部370の転送条件レジスタ部372に設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを発生する。そして、パケットバッファ390に確保(allocate)されたパイプ領域(PIPE0〜PIPEe。以下、適宜PIPEと呼ぶ)と、そのパイプ領域に対応するエンドポイントとの間で、データ(パケット)の転送を行う。
【0099】
より具体的にはホストコントローラ350は、複数のパイプ転送間の調停、フレームにおける時間管理、転送のスケジューリング、再送の管理等を行う。また、パイプ転送の転送条件情報(オペレーション情報)をレジスタ部370を介して管理する。また、トランザクションの管理を行ったり、パケットを生成又は分解したり、サスペンド、レジューム或いはリセット状態生成の指示を行う。
【0100】
一方、ペリフェラルコントローラ360は、ペリフェラル動作時(OTGコントローラ320からのPCイネーブル信号のアクティブ時)に、ペリフェラルの役割としてのデータ転送制御を行う回路である。
【0101】
即ち、ペリフェラルコントローラ360は、ペリフェラル動作時に、HC/PC切り替え回路330によりトランシーバ310に接続される。そして、レジスタ部370の転送条件レジスタ部372に設定された転送条件情報に基づいて、パケットバッファ390に確保されたエンドポイント領域(EP0〜EPe。以下適宜EPと呼ぶ)とホストとの間でデータを転送する。
【0102】
より具体的には、ペリフェラルコントローラ360は、エンドポイント転送の転送条件情報(オペレーション情報)をレジスタ部370を介して管理する。また、トランザクションの管理を行ったり、パケットを生成又は分解したり、リモート・ウェイクアップ信号生成の指示を行う。
【0103】
なお、エンドポイントは、ユニークなアドレスを割り当てることができる、ペリフェラル(デバイス)上のポイント(部分)である。ホストとペリフェラル(デバイス)との間のデータ転送は、すべて、このエンドポイントを経由して行われる。また、トランザクションは、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットとにより構成される。
【0104】
レジスタ部370は、データ転送(パイプ転送、エンドポイント転送)制御、バッファアクセス制御、バッファ管理、割り込み制御、ブロック制御、或いはDMA制御等を行うための種々のレジスタを含む。なおレジスタ部370が含むレジスタは、RAMなどのメモリにより実現してもよいし、Dフリップフロップ等により実現してもよい。また、レジスタ部370のレジスタは、1つにまとめず、各ブロック(HC、PC、OTGC、Xcvr等)に分散して配置してもよい。
【0105】
レジスタ部370は、転送条件レジスタ部372、ハブ専用データ記憶部374を含む。そして、転送条件レジスタ部372は、ホスト動作時にパケットバッファ390に確保されるパイプ領域(PIPE0〜PIPEe)とエンドポイントとの間でのデータ転送の転送条件情報(転送制御情報)を記憶するレジスタを含む。このような転送条件情報を記憶するレジスタとして、図4における転送モード設定レジスタ170を含めてもよい。各転送条件レジスタは、パケットバッファ390の各パイプ領域に対応して設けられる。
【0106】
なお、ペリフェラル動作時には、パケットバッファ390にエンドポイント領域(EP0〜EPe)が確保される。そして、転送条件レジスタ部372に設定された転送条件情報に基づいて、データ転送制御装置とホストとの間でのデータ転送が行われる。
【0107】
ハブ専用データ記憶部374は、ホスト動作時に、パケットバッファ390に確保されるパイプ領域とは物理的に異なる領域として、エンドポイントであるハブとの間の転送データ(パケット)をバッファリングする。
【0108】
バッファコントローラ380(FIFOマネージャ)は、パケットバッファ390に対するアクセス(リード/ライト)制御や領域管理を行う。より具体的には、CPU(広義には処理部)、DMA、USBによるパケットバッファ390へのアクセス・アドレスの生成及び管理を行う。また、CPU、DMA、USBによるパケットバッファ390へのアクセスの調停を行う。
【0109】
例えば、ホスト動作時には、バッファコントローラ380は、インターフェース回路400(CPU又はDMA)とパケットバッファ390の間のデータ転送経路と、パケットバッファ390とホストコントローラ350(USB)の間のデータ転送経路を設定(確立)する。
【0110】
一方、ペリフェラル動作時には、バッファコントローラ380は、インターフェース回路400(CPU又はDMA)とパケットバッファ390の間のデータ転送経路と、パケットバッファ390とペリフェラルコントローラ360(USB)の間のデータ転送経路を設定する。
【0111】
パケットバッファ390(FIFO、パケットメモリ、バッファ)は、USBを介して転送されるデータ(送信データ又は受信データ)を一時的に記憶(バッファリング)するものである。このパケットバッファ390は、例えばRAM等により構成できる。なお、パケットバッファ390をデータ転送制御装置の外部に設けてもよい(外付けメモリにしてもよい)。
【0112】
ホスト動作時には、パケットバッファ390はパイプ転送用のFIFO(First−In First−Out)として使用される。即ちパケットバッファ390には、USB(バス)の各エンドポイントに対応するように、パイプ領域PIPE0〜PIPEe(広義にはバッファ領域)が確保される。また、各パイプ領域PIPE0〜PIPEeには、各パイプ領域に対応する各エンドポイントとの間で転送されるデータ(送信データ又は受信データ)が記憶される。
【0113】
なお、パケットバッファ390に確保されるバッファ領域(ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域)は、先に入力された情報が先に出力されるような記憶領域(FIFO領域)に設定されている。
【0114】
また、PIPE0は、コントロール転送用のエンドポイント0に専用のパイプ領域であり、PIPEa〜PIPEeは、任意のエンドポイントに割り当て可能な汎用のパイプ領域である。
【0115】
即ちUSBでは、エンドポイント0がコントロール転送に専用のエンドポイントに設定される。従って、本実施形態のようにPIPE0をコントロール転送に専用のパイプ領域にすることで、ユーザが混乱するのを防止できる。また、PIPEa〜PIPEeを、任意のエンドポイントに割り当て可能なパイプ領域にすることで、エンドポイントに対応するパイプ領域を動的に変化させることが可能になる。これにより、パイプ転送のスケジューリングの自由度を向上でき、データ転送の効率化を図ることができる。
【0116】
また本実施形態では、ホスト動作時に、USBに接続されるハブを監視するためのバッファ領域が、パケットバッファ390とは物理的に異なるハブ専用データ記憶部110に設定される。これにより、パケットバッファ390に割り当てられるパイプ領域を無駄に消費することがなくなる。
【0117】
インターフェース回路400は、USBとは異なる他のバスであるDMA(システムメモリ)バスやCPUバスと、パケットバッファ390との間でのデータ転送を行うための回路である。インターフェース回路400は、パケットバッファ390と外部のシステムメモリとの間で、DMA転送を行うためのDMAハンドラ回路402を含む。また、パケットバッファ390と外部のCPUとの間でPIO(Parallel I/O)転送を行うためのCPUインターフェース回路404を含む。なお、CPU(処理部)をデータ転送制御装置100に内蔵させてもよい。
【0118】
クロックコントローラ410は、内蔵PLL又は外部入力クロックに基づいて、データ転送制御装置の内部で使用する各種のクロックを生成する。
【0119】
4.1 パイプ領域、エンドポイント領域
本実施形態では図9(A)に示すように、ホスト動作時に、パケットバッファ390にパイプ領域PIPE0〜PIPEeが確保(allocate)される。そして、この各パイプ領域PIPE0〜PIPEeとペリフェラルの各エンドポイントの間で、データ(パケット)が転送される。
【0120】
ここで、本実施形態のパイプ領域の「パイプ」は、USBで定義される「パイプ」(デバイス上のエンドポイントとホスト上のソフトウェアとの間の関連を表す論理的な抽象化、論理的な経路)とは若干意味合いが異なる。
【0121】
本実施形態のパイプ領域は、図9(A)に示すように、USB(バス)に接続されるペリフェラルが有する各エンドポイントに対応して、パケットバッファ390上に確保される。例えば図9(A)において、パイプ領域PIPEaはペリフェラル1のエンドポイント1(バルクIN)に対応し、PIPEbはペリフェラル1のエンドポイント2(バルクOUT)に対応する。また、PIPEcはペリフェラル2のエンドポイント1(バルクIN)に対応し、PIPEdはペリフェラル2のエンドポイント2(バルクOUT)に対応する。また、PIPEeはペリフェラル3のエンドポイント1(インタラプトIN)に対応する。なお、PIPE0は、コントロール転送のエンドポイント0に専用のパイプ領域である。そして、ハブ専用データ記憶部374は、ハブ200をエンドポイント(インタラプトIN)とし、ハブ専用に割り当てられるパイプ領域である。
【0122】
そして図9(A)の例では、パイプ領域PIPEaとペリフェラル1のエンドポイント1との間でUSBのバルクIN転送が行われ、PIPEbとペリフェラル1のエンドポイント2との間ではバルクOUT転送が行われる。また、PIPEcとペリフェラル2のエンドポイント1との間ではバルクIN転送が行われ、PIPEdとペリフェラル2のエンドポイント2との間ではバルクOUT転送が行われる。また、PIPEeとペリフェラル3のエンドポイント1との間ではインタラプトIN転送が行われる。また、ハブ専用データ記憶部374とハブ200との間ではインタラプトIN転送が行われる。
【0123】
このように本実施形態では、パイプ領域(汎用)とそれに対応するエンドポイントとの間では、任意のデータ転送(アイソクロナス転送、バルク転送、インタラプト転送)を行うことができる。またハブ200をエンドポイントとする場合には、ハブ専用のパイプ領域とハブ200との間でインタラプト転送を行うことができる。
【0124】
本実施形態では、パイプ領域とそれに対応するエンドポイントの間では、所与のデータ単位(トータルサイズで指定されるデータ単位)のデータが転送される。この場合のデータ単位としては、例えばIRP(I/Oリクエストパケット)により転送要求されるデータ単位又はそれを適当なサイズに分割したデータ単位などを考えることができる。エンドポイントに対するこのデータ単位のデータ転送(一連のトランザクション)を、本実施形態における「パイプ」と呼ぶことができる。そして、そのような「パイプ」のデータ(送信データ、受信データ)を記憶する領域がパイプ領域になる。
【0125】
汎用のパイプ領域を用いた所与のデータ単位の転送が終了すると、そのパイプ領域は解放することができる。そして、解放された汎用のパイプ領域は、任意のエンドポイントに割り当てることができる。このように本実施形態では、パイプ領域とエンドポイントとの対応づけを、動的に変化させることができる。
【0126】
また本実施形態では図9(B)に示すように、ペリフェラル動作時には、パケットバッファ390にエンドポイント領域EP0〜EPeが確保(設定)される。そして、この各エンドポイント領域EP0〜EPeとホスト(ホストコントローラ、システムメモリ)との間で、データが転送される。
【0127】
このように本実施形態では、パケットバッファ100のバッファ領域を、ホスト動作時にはパイプ領域に割り当て、ペリフェラル動作時にはエンドポイント領域に割り当てている。これにより、ホスト動作時とペリフェラル動作時とでパケットバッファ390のリソースを共用(兼用)することが可能になり、パケットバッファ390の使用記憶容量を節約できる。
【0128】
なおパイプ領域、エンドポイント領域の個数は6個に限定されず任意である。
【0129】
4.2 各ブロックの詳細な構成例
次に各ブロックの詳細な構成例について説明する。
【0130】
4.2.1 OTGコントローラ
図10にOTGコントローラ320の構成例を示す。
【0131】
OTGコントローラ320は、OTGレジスタ部322を含む。このOTGレジスタ部322は、OTGコントローラ320のモニタレジスタや制御レジスタを含む。またファームウェア(CPU)により書き込まれるOTGステートコマンドをデコードする回路を含む。
【0132】
またOTGコントローラ320は、OTG制御回路323を含む。そして、OTG制御回路323は、OTGステートの管理を行うOTG管理回路324、IDピンの電圧レベルを検出するID検出回路325、VBUSの電圧レベルを検出するVBUS検出回路326を含む。また、トランシーバ310からのラインステート情報(J、K、SE0等)に基づいて、USBバスの状態(リセット、レジューム等)を検出するラインステート検出回路327を含む。
またOTGコントローラ320は時間計測を行うタイマ328を含む。ラインステート検出回路327は、トランシーバ310からのラインステート情報とタイマ328からの時間計測情報に基づいて、USBバスの状態を検出する。
【0133】
OTGステートを遷移させるために検出すべき情報は、ID、VBUSの電圧レベル、DP/DMのラインステートである。本実施形態のOTGコントローラ320は、これらの情報を検出し、モニタレジスタを介してファームウェア(CPU)に伝える。
【0134】
ファームウェアは、これらの検出情報に基づいて自身のステートを遷移させると共に、次に遷移すべきステートを、OTGステートコマンドを用いてOTGコントローラ320に伝える。
【0135】
OTGコントローラ320は、OTGステートコマンドをデコードし、そのデコード結果に基づいて、VBUSのドライブ制御、プルアップ/プルダウン抵抗の接続制御等を行い、図3(A)、(B)で説明したSRPやHNPを実現する。
【0136】
このように本実施形態では、ステート毎のOTG制御はOTGコントローラ320が担当し、ファームウェアはステートの遷移管理に専念できる。この結果、すべてのステート制御をファームウェアで実現する場合に比べて、ファームウェア(CPU)の処理負荷を軽減できると共に、効率的なファームウェア開発が可能になる。
【0137】
なお、OTGのステート遷移の判断を、ファームウェアが行わずに、ハードウェア回路が行うようにしてもよい。或いは、OTGコントローラ320のほとんどすべての処理(例えばVBUS制御、プルアップ/プルダウン抵抗制御、ID検出、VBUS検出、ラインステート検出以外の処理)をファームウェア(ソフトウェア)により実現してもよい。
【0138】
4.2.2 ホストコントローラ
図11に、ホストコントローラ350の構成例を示す。図11では、ホストコントローラ350と、トランシーバ310及びレジスタ部370との論理的な接続関係をも示している。
【0139】
レジスタ部370は、パイプx(xは0、a〜eのいずれか)に対するパイプ転送を制御するためのパイプ制御レジスタ部420を含む。パイプ制御レジスタ部420は、パイプ設定レジスタ422を含む。パイプ設定レジスタ422は、ファームウェアによって、予め定められたフィールドに所定の設定データが設定されたとき、パイプxのトランザクションを開始するトランザクション開始信号TranGoをホストコントローラ350に対して出力する。また、パイプ設定レジスタ422には、ファームウェアによって、通常転送モード又はハブ専用転送モードのいずれかの転送モードが設定され、設定された転送モードに対応した転送モード信号をホストコントローラ350に対して出力する。即ちパイプ設定レジスタ422は、図4における転送モード設定レジスタ170として機能する。更にパイプ設定レジスタ422には、ファームウェアによって、ハブを監視するためのインタラプト転送の転送周期が設定され、設定された転送周期設定値に対応した信号をホストコントローラ350に対して出力する。
【0140】
なおパイプ制御レジスタ部420は、ハブデータ受信割り込みレジスタ424と、ハブ受信データ格納レジスタ426とを含む。ホストコントローラ350によってハブデータ受信割り込みレジスタ424にハブ割り込み信号が設定されると、ファームウェアに対してハブデータ受信割り込みを発生し、監視するハブの状態が変化したことを通知することができる。またハブ受信データ格納レジスタ426には、監視するハブからの応答パケットのうち少なくとも該ハブの状態の変化を検出するためのステータス変化ビットが格納される。即ちハブ受信データ格納レジスタ426は、図4におけるハブ専用データ記憶部110、或いは図8におけるハブ専用データ記憶部374として機能する。ファームウェア(CPU)は、ハブ受信データ格納レジスタ426に格納されたステータス変化ビットを読み出すことで、ハブの状態がどのように変化したかを認識することができる。
【0141】
このようなパイプ制御レジスタ部420では、ハブ専用転送モードに設定されると、パイプxの転送の種類がインタラプト転送、その転送の方向がIN方向(インタラプトIN転送)として固定的に設定されることが望ましい。
【0142】
以上のような構成のパイプ制御レジスタ部420は、パイプごとに設けてもよいし、パイプ0、a〜eのいずれか1つに対して設けてもよい。
【0143】
上述のような構成のパイプ制御レジスタ部420を用いるホストコントローラ350は、HCシーケンス管理回路352を含む。HCシーケンス管理回路352は、パイプ転送(パイプ領域を用いたデータ転送)の調停、時間管理、パイプ転送のスケジューリング、再送管理などを行う。
【0144】
より具体的にはHCシーケンス管理回路352は、フレーム番号のカウントや、SOF(Start−Of−Frame)パケットの送信指示を行う。また、アイソクロナス転送を各フレームの先頭で優先的に実行するための処理を行ったり、インタラプト転送をアイソクロナス転送の次に優先的に取り扱うための処理を行う。また、パイプ転送の順序に従って各パイプ転送を指示する処理を行う。また、トランザクションの連続実行回数を管理したり、残りフレーム時間の確認処理を行う。また、ペリフェラルから返ってきたハンドシェークパケット(ACK、NAK)に対する処理を行う。また、トランザクション実行時のエラー処理を行う。
【0145】
ホストコントローラ350は、ターゲットパイプ管理回路354を含む。ターゲットパイプ管理回路354は、レジスタ部370の転送条件レジスタに設定された転送条件情報のハンドリング処理等を行う。また、トランザクション管理回路358への転送指示を行う。
【0146】
より具体的にはターゲットパイプ管理回路354は、転送条件情報の選択処理や、割り込み信号の生成処理を行う。そのためターゲットパイプ管理回路354は、パイプ転送制御回路355、ハブデータ受信割り込み生成回路356を含む。
【0147】
パイプ設定レジスタ422によりハブ専用転送モードに設定されると、パイプ転送制御回路355は、パイプ設定レジスタ422に設定された転送周期でインタラプトIN転送を周期的に行う制御を行う。ハブデータ受信割り込み生成回路356は、トランザクション管理回路358を介して受信パケットを解析して、ハブの状態が変化したと判断されたときにはハブ割り込みを発生し、ハブデータ受信割り込みレジスタ424にハブ割り込み信号を設定する。
【0148】
ホストコントローラ350は、トランザクション管理回路358を含む。トランザクション管理回路358は、転送パケットの種類や転送順序の管理(トランザクションのシーケンス管理)を行う。また、タイムアウトの監視処理を行う。また、トランザクション終了の通知処理を行う。
【0149】
ホストコントローラ350は、パケットハンドラ回路359を含む。パケットハンドラ回路359は、パケットの生成、分解処理を行う。また、PIDのチェックやCRCのデコード、エンコードを行う。また、バッファ領域のパケットのペイロードのリード、ライト処理や、SOFパケットの送信処理を行う。また、送受信データのカウント処理を行う。
【0150】
ハブに対して送信したINトークンに対応して受信された該ハブからの応答パケットは、パケットハンドラ回路359によりPIDのチェックが行われる。そして、該応答パケットがNAKパケットであると判別されたときは、応答パケットに対する処理を行うことなく、次の応答パケットの受信を待つ。一方、パケットハンドラ回路359によりPIDのチェックが行われた応答パケットがNAKパケットではないと判別されたとき、該応答パケットをハブデータとしてハブ受信データ格納レジスタ426に格納する。
【0151】
図12に、ホストコントローラ350における転送モードの設定動作の概要を示す。
【0152】
まず、ホストコントローラ350の初期状態では、パイプxのパイプ転送が通常転送モードに設定される(ステップS10)。
【0153】
続いて、ファームウェアによってパイプ設定レジスタ422に対する書き込みがあった場合(ステップS11:Y)、書き込みデータがハブ専用転送モードへの設定データのとき(ステップS12:Y)、パイプxのパイプ転送をハブ専用転送モードに設定する(ステップS13)。その後、リセット信号の入力等の所定の終了条件を満たしたことを条件に(ステップS14:Y)、一連の処理を終了する(エンド)。
【0154】
ステップS11でパイプ設定レジスタ422に対する書き込みがない場合(ステップS11:N)、或いはステップS12でパイプ設定レジスタ422への書き込みデータがハブ専用転送モードに設定するためのデータはないとき(ステップS12:N)、ステップS14に進み、所定の終了条件を満たさないとき(ステップS14:N)、ステップS11に戻る。
【0155】
図13に、ホストコントローラ350におけるハブ専用転送モードにおける動作の概要を示す。
【0156】
まず、転送モードがハブ専用転送モードであるか否かを確認する(ステップS20)。パイプ設定レジスタ422により、パイプxのパイプ転送がハブ専用転送モードに設定されているとき(ステップS21:Y)、パイプ設定レジスタ422によりトランザクション開始信号TranGoが設定され、かつ転送条件レジスタにパイプxについてデータ転送の開始を指定するための指定ビットがアクティブに設定されたこと(ステップS22:Y)を条件に、例えばターゲットパイプ管理回路354がインタラプトIN転送のトランザクションを開始する(ステップS23)。これにより、インタラプトINトークンパケットが発行される。これ以降、転送条件レジスタの指定ビットが非アクティブになるまで、パイプ転送制御回路355が、パイプ設定レジスタ422に設定された転送周期設定値で、周期的にトランザクションを開始して、インタラプトIN転送を行う。
【0157】
その後、パケットハンドラ回路359は、トランシーバ310を介して、ハブからの応答パケットの受信を待つ(ステップS24:N)。そして、応答パケットが受信されたとき(ステップS24:Y)、NAKパケット(第1のパケット)であるか否かを判別する(ステップS25)。
【0158】
受信パケットがNAKパケットであると判別されたとき(ステップS25:Y)、ステップS22に戻る。
【0159】
一方、受信パケットがNAKパケットではないと判別されたとき(ステップS25:N)、パケットハンドラ回路359は、受信パケットをハブ受信データ格納レジスタ426に格納する(ステップS26)。そして、その旨をトランザクション管理回路358、ターゲットパイプ管理回路354に通知する。
【0160】
続いて、トランザクション管理回路358は、ハンドシェークパケットを発行し(ステップS27)、ターゲットパイプ管理回路354は、ハブデータ受信割り込み生成回路356によりハブ割り込みを発生する(ステップS28)。
【0161】
またステップS21で、パイプ設定レジスタ422によってパイプxのパイプ転送がハブ専用転送モードに設定されていないとき(ステップS21:N)、通常転送モードとしてUSBのOTG規格に準拠したデータ転送を行う(ステップS29)。
【0162】
ステップS28、ステップS29に続いて、リセット信号の入力等の所定の終了条件を満たしたことを条件に(ステップS30:Y)、一連の処理を終了する(エンド)。ステップS30で所定の終了条件を満たさないとき(ステップS30:N)、又はステップS22において転送条件レジスタの指定ビットが非アクティブになったとき(ステップS22:N)、ステップS20に戻る。
【0163】
このように本実施形態によれば、ハブ専用転送モードにおいて、ハブを監視するためにハブ受信データ格納レジスタ426のみを用い、パケットバッファ390のリソースを確保する必要がなくなる。
【0164】
図14に、ペリフェラルコントローラ360の構成例を示す。
【0165】
ペリフェラルコントローラ360は、トランザクション管理回路362、パケットハンドラ回路364を含む。トランザクション管理回路362、パケットハンドラ回路364は、ホストコントローラ350のトランザクション管理回路358、パケットハンドラ回路359とほぼ同様の処理を行う。
【0166】
4.2.3 バッファコントローラ
図15にバッファコントローラ380の構成例を示す。
【0167】
バッファコントローラ380は、領域確保(allocation)回路382を含む。この領域確保回路382は、パケットバッファ390に、バッファ領域(ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域)を確保する回路である。
【0168】
領域確保回路382では、マックスパケットサイズ(広義にはページサイズ)やページ数に基づいて、バッファ領域の領域サイズ、スタートアドレス、エンドアドレスなどが計算される。そして、各バッファ領域の書き込みポインタ、読み出しポインタが、データの転送方向に合わせて、DMA用ポインタ、CPU用ポインタ、USB用ポインタに割り当てられる
なお、各バッファ領域の書き込みポインタ、読み出しポインタのポインタ情報(位置情報)は、レジスタ部370の各転送条件レジスタ(PIPE/EPレジスタ)に保持される。
【0169】
ポインタ管理回路384は、ポインタの更新を行いながら、パケットバッファ390にアクセスするための実アドレスを生成する回路である。より具体的には、領域確保回路382によって割り当てられた各種ポインタに基づいて、CPU用アドレス、DMA用アドレス、USB用アドレスを生成する。また、CPU(CPUインターフェース回路)、DMA(DMAハンドラ回路)からのアクセス毎に、或いはUSB(HC又はPC)のトランザクション終了(ACK、NAKなどのハンドシェーク送受信)毎に、ポインタを更新する処理を行う。なお、更新後のポインタの情報は、領域確保回路382を介してレジスタ部370の各転送条件レジスタに書き戻される。
【0170】
バッファ管理回路386は、パケットバッファ390へのアクセスを管理する回路である。バッファ管理回路386は、ポインタ管理回路384からのアドレスなどを受け、パケットバッファ390へのデータの入出力や、アドレス、出力イネーブル、ライトイネーブル、リードイネーブルなどの出力を行う。
【0171】
またバッファ管理回路386は、CPU(CPUインターフェース回路)、DMA(DMAハンドラ回路)、USB(ホストコントローラ又はペリフェラルコントローラ)からのアクセスを調停する。この調停結果に基づいて、CPU用アドレス、DMA用アドレス、USB用アドレスのいずれかが、パケットバッファ390のアクセス・アドレスとして出力され、CPU、DMA又はUSBとパケットバッファ390との間のデータ転送経路が設定される。
【0172】
HC/PCセレクタ388は、バッファ管理回路386(バッファコントローラ380)とホストコントローラ350(HC)又はペリフェラルコントローラ360(PC)との間の接続の切り替え制御を行う。例えばホスト動作時には、ホストコントローラ350とバッファ管理回路386を接続し、ペリフェラル動作時には、ペリフェラルコントローラ360とバッファ管理回路386とを接続する。なお、この接続の切り替え制御は、OTGコントローラ320(OTGC)からのHC/PCイネーブル信号に基づいて行う。
【0173】
5. 電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【0174】
例えば図16(A)に電子機器の1つであるプリンタの内部ブロック図を示し、図17(A)にその外観図を示す。CPU510(処理部)はシステム全体の制御などを行う。操作部511はプリンタをユーザが操作するためのものである。ROM516には、制御プログラム、フォントなどが格納され、RAM517(システムメモリ)はCPU510のワーク領域として機能する。DMAC518は、CPU510を介さずにデータ転送を行うためのDMAコントローラである。表示パネル519はプリンタの動作状態をユーザに知らせるためのものである。
【0175】
USBを介してパーソナルコンピュータ、デジタルカメラ、デジタルビデオカメラなどの他の機器から送られてきたシリアルの印刷データ(印字データ、画像データ)は、データ転送制御装置500によりパラレルの印刷データに変換される。そして、変換後のパラレル印刷データは、CPU510又はDMAC518により、印刷処理部(プリンタエンジン)512に送られる。そして、印刷処理部512においてパラレル印刷データに対して所与の処理が施され、プリントヘッダなどからなる印刷部(データの出力処理を行う装置)514により紙に印刷されて出力される。
【0176】
図16(B)に電子機器の1つであるデジタルカメラの内部ブロック図を示し、図17(B)にその外観図を示す。CPU520はシステム全体の制御などを行う。操作部521(シャッターボタン、操作ボタン等)はデジタルカメラをユーザが操作するためのものである。ROM526には制御プログラムなどが格納され、RAM527はCPU520のワーク領域として機能する。DMAC528はDMAコントローラである。
【0177】
CCD、レンズなどからなる撮像部(データの取り込み処理を行う装置)522により画像が撮像され、撮像された画像のデータは画像処理部524により処理される。そして、処理後の画像データは、CPU520又はDMAC528によりデータ転送制御装置500に送られる。データ転送制御装置500は、このパラレルの画像データをシリアルデータに変換し、USBを介してプリンタ、ストレージ装置、パーソナルコンピュータなどの他の機器に送信する。
【0178】
図16(C)に電子機器の1つであるCD−RWドライブ(ストレージ装置)の内部ブロック図を示し、図17(C)にその外観図を示す。CPU530はシステム全体の制御などを行う。操作部531はCD−RWをユーザが操作するためのものである。ROM536には制御プログラムなどが格納され、RAM537はCPU530のワーク領域として機能する。DMAC538はDMAコントローラである。
【0179】
レーザ、モータ、光学系などからなる読み取り&書き込み部(データの取り込み処理を行う装置又はデータの記憶処理を行うための装置)533によりCD−RW532から読み取られたデータは、信号処理部534に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、CPU530又はDMAC538によりデータ転送制御装置500に送られる。データ転送制御装置500は、このパラレルのデータをシリアルデータに変換し、USBを介して他の機器に送信する。
【0180】
一方、USBを介して他の機器から送られてきたシリアルのデータは、データ転送制御装置500によりパラレルのデータに変換される。そして、このパラレルデータは、CPU530又はDMAC538により信号処理部534に送られる。そして、信号処理部534においてこのパラレルデータに対して所与の信号処理が施され、読み取り&書き込み部533によりCD−RW532に記憶される。
【0181】
なお、図16(A)、(B)、(C)において、CPU510、520、530の他に、データ転送制御装置500でのデータ転送制御のためのCPUを別に設けるようにしてもよい。
【0182】
本実施形態のデータ転送制御装置を電子機器に用いれば、OTG機能を有する電子機器を実現できる。即ち、電子機器にホストとしての役割を持たせたり、デバイスとしての役割を持たせることが可能になり、これまでに存在しなかったアプリケーションを創出できる。
【0183】
また本実施形態のデータ転送制御装置を電子機器に用いれば、電子機器に組み込まれるCPU(処理部)の処理負荷が軽減され、安価なCPUを用いることが可能になる。また、CPUが、データ転送制御処理以外の他の処理を余裕を持って行うことが可能になり、電子機器の性能向上や低コスト化を図れる。また、CPU上で動作するファームウェアのプログラムを簡素化でき、電子機器の開発期間の短縮化を図れる。
【0184】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、デジタルビデオカメラ、携帯電話、スキャナ、TV、VTR、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなど種々のものを考えることができる。
【0185】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0186】
例えば、本発明のデータ転送制御装置の構成は、図4等で説明した構成に限定されるものではなく、種々の変形実施が可能である。
【0187】
また、データ転送制御装置は、ハブ専用のデータ記憶部を設けるようにしたが、これに限定されるものではなく、デバイス専用のデータ記憶部を設けるようにしてもよい。
【0188】
また、データ転送制御装置の各ブロック(HC、PC、OTGC等)の構成も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【0189】
また、明細書中の記載において広義な用語(ステートコントローラ、処理部、転送コントローラ、バス、バッファ領域等)として引用された用語(OTGコントローラ、CPU・ファームウェア、ホストコントローラ・ペリフェラルコントローラ、USB、パイプ領域・エンドポイント領域等)は、明細書中の他の記載においても広義な用語に置き換えることができる。
【0190】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0191】
また、本実施形態ではUSBのOTG規格への適用例を説明したが、本発明が適用されるのはOTG規格に限定されない。即ち、USBのOTGのみならず、従来のUSB1.1、USB2.0や、これらの規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図1】ホストとデバイスとの接続関係を示す説明図。
【図2】図2(A)、(B)、(C)はUSBのOTG規格についての説明図。
【図3】図3(A)、(B)はSRP及びHNPの手順についての説明図。
【図4】本実施形態のデータ転送制御装置の構成の概要のブロック図。
【図5】ハブの構成例を示すブロック図。
【図6】ステータス変化ビットの構成例を示す説明図。
【図7】図7(A)、(B)はインタラプトIN転送のトランザクションの説明図。
【図8】本実施形態のデータ転送制御装置の詳細な構成例を示す図。
【図9】図9(A)、(B)はパイプ領域、エンドポイント領域についての説明図。
【図10】OTGコントローラの詳細な構成例を示す図。
【図11】ホストコントローラの詳細な構成例を示す図。
【図12】ホストコントローラの転送モードの設定動作に概要を示すフロー図。
【図13】ホストコントローラのハブ専用転送モードの動作の概要を示すフロー図。
【図14】ペリフェラルコントローラの詳細な構成例を示す図。
【図15】バッファコントローラの詳細な構成例を示す図。
【図16】図16(A)、(B)、(C)は種々の電子機器の内部ブロック図の例。
【図17】図17(A)、(B)、(C)は種々の電子機器の外観図の例。
【符号の説明】
10 電子機器、20 バス、50 処理部(プロセッサ)、
100 データ転送制御装置、110 ハブ専用データ記憶部、
120 パケット送信部、122 トークンパケット生成部、
124 データパケット生成部、126 ハンドシェークパケット生成部、
140 パケット受信部、150 パケットバッファ、
160 転送コントローラ、170 転送モード設定レジスタ、
180 転送条件レジスタ、200 ハブ
Claims (11)
- バスを介したデータ転送のためのデータ転送制御装置であって、
ハブとの間で転送されるパケットが格納されるハブ専用データ記憶部と、
前記ハブの状態の変化の有無を問い合わせるトークンパケットを前記ハブに対して周期的に発行するパケット送信部と、
前記トークンパケットに対応して、前記ハブが返信した応答パケットを受信するパケット受信部と、
前記パケット受信部により受信された前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行う転送コントローラと、
を含むことを特徴とするデータ転送制御装置。 - 請求項1において、
前記転送コントローラは、
前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に、前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行うことを特徴とするデータ転送制御装置。 - 請求項1又は2において、
各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファを含み、
前記ハブ専用データ記憶部の記憶領域は、
前記パケットバッファの記憶領域とは別の領域に設けられていることを特徴とするデータ転送制御装置。 - 請求項1又は2において、
各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファと、
ハブ専用転送モード又は通常転送モードを指定するための設定データが設定される転送モード設定レジスタとを含み、
前記転送モード設定レジスタによりハブ専用転送モードが設定されたとき、エンドポイントであるハブとの間の転送に対して前記ハブ専用データ記憶部の記憶領域が割り当てられ、
前記転送モード設定レジスタにより通常転送モードが設定されたとき、エンドポイントであるハブとの間の転送に対して前記パケットバッファの記憶領域が割り当てられることを特徴とするデータ転送制御装置。 - 請求項1乃至4のいずれかにおいて、
前記ハブ専用データ記憶部を用いたデータ転送の開始を指定するための指定ビットを有する転送条件レジスタを含み、
前記指定ビットがアクティブのとき、前記パケット送信部が前記トークンパケットを発行することを特徴とするデータ転送制御装置。 - 請求項5において、
前記指定ビットがアクティブになってから非アクティブになるまでの間、前記パケット送信部が前記トークンパケットを周期的に発行し続けることを特徴とするデータ転送制御装置。 - 請求項1乃至6のいずれかにおいて、
USB(Universal Serial Bus)規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。 - 請求項1乃至6のいずれかにおいて、
ホストとして動作するホスト動作を制御するためのステートと、ペリフェラルとして動作するペリフェラル動作を制御するためのステートとを含む複数のステートの遷移によりホスト動作又はペリフェラル動作の制御を行うステートコントローラを含み、
前記転送コントローラが、
ホスト動作時において、ホストとしてデータ転送を行うホストコントローラと、
ペリフェラル動作時において、ペリフェラルとしてデータ転送を行うペリフェラルコントローラとを含み、
ホスト動作時には、各エンドポイントとの間で転送されるパケットが各パイプ領域に記憶される複数のパイプ領域がパケットバッファに確保され、前記ホストコントローラが、パイプ領域と該パイプ領域に対応するエンドポイントとの間でパケットを転送し、
ペリフェラル動作時には、ホストとの間で転送されるパケットが各エンドポイント領域に記憶される複数のエンドポイント領域がパケットバッファに確保され、前記ペリフェラルコントローラが、エンドポイント領域とホストとの間でパケットを転送し、
前記ホストコントローラが、
ホスト動作時に、前記パケット送信部により前記ハブに対して前記トークンパケットを周期的に発行し、該トークンパケットに対応した前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に前記転送コントローラにより前記応答パケットを前記ハブ専用データ記憶部に書き込む制御を行うと共に前記ハブの状態が変化したことを示す割り込みを発生する制御を行うことを特徴とするデータ転送制御装置。 - 請求項8において、
USBのOTG(On−The−Go)規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。 - 請求項1乃至9のいずれかのデータ転送制御装置と、
前記データ転送制御装置を制御するプロセッサと、
を含むことを特徴とする電子機器。 - バスを介したデータ転送のためのデータ転送制御方法であって、
ハブの状態の変化の有無を問い合わせるトークンパケットを周期的に発行し、
前記トークンパケットに対応して、前記ハブからの応答パケットを受信し、
前記応答パケットが、返信すべきデータがないことを示すNAKパケットではないことを条件に、前記応答パケットをハブ専用データ記憶部に書き込むと共に前記ハブの状態が変化したことを示す割り込みを発生することを特徴とするデータ転送制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003127806A JP3632695B2 (ja) | 2003-05-06 | 2003-05-06 | データ転送制御装置、電子機器及びデータ転送制御方法 |
US10/834,192 US7505461B2 (en) | 2003-05-06 | 2004-04-29 | Data transfer control device, electronic instrument, and data transfer control method |
CN2004100372903A CN1551592B (zh) | 2003-05-06 | 2004-04-30 | 数据传输控制装置、电子设备及数据传输控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003127806A JP3632695B2 (ja) | 2003-05-06 | 2003-05-06 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004334417A true JP2004334417A (ja) | 2004-11-25 |
JP3632695B2 JP3632695B2 (ja) | 2005-03-23 |
Family
ID=33504183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003127806A Expired - Fee Related JP3632695B2 (ja) | 2003-05-06 | 2003-05-06 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7505461B2 (ja) |
JP (1) | JP3632695B2 (ja) |
CN (1) | CN1551592B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006164209A (ja) * | 2004-12-08 | 2006-06-22 | Cheng-Chun Chang | ホスト機能を有するデジタル画像入力装置 |
JP2007011780A (ja) * | 2005-06-30 | 2007-01-18 | Seiko Epson Corp | データ転送制御装置及び電子機器 |
JP2011090485A (ja) * | 2009-10-22 | 2011-05-06 | Renesas Electronics Corp | パイプ調停回路、パイプ調停方法 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI247216B (en) * | 2004-04-09 | 2006-01-11 | Prolific Technology Inc | USB transmission interface device capable of reducing working current |
US8386648B1 (en) | 2003-06-26 | 2013-02-26 | Nvidia Corporation | Hardware support system for accelerated disk I/O |
US8683132B1 (en) | 2003-09-29 | 2014-03-25 | Nvidia Corporation | Memory controller for sequentially prefetching data for a processor of a computer system |
US8356142B1 (en) | 2003-11-12 | 2013-01-15 | Nvidia Corporation | Memory controller for non-sequentially prefetching data for a processor of a computer system |
US8700808B2 (en) | 2003-12-01 | 2014-04-15 | Nvidia Corporation | Hardware support system for accelerated disk I/O |
US8356143B1 (en) | 2004-10-22 | 2013-01-15 | NVIDIA Corporatin | Prefetch mechanism for bus master memory access |
US9015368B2 (en) * | 2006-12-22 | 2015-04-21 | Qualcomm Incorporated | Enhanced wireless USB protocol |
US8356128B2 (en) | 2008-09-16 | 2013-01-15 | Nvidia Corporation | Method and system of reducing latencies associated with resource allocation by using multiple arbiters |
US8370552B2 (en) | 2008-10-14 | 2013-02-05 | Nvidia Corporation | Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions |
US7895385B2 (en) * | 2008-12-09 | 2011-02-22 | Nvidia Corporation | Establishing communication over serial buses in a slave device |
WO2010087829A1 (en) | 2009-01-29 | 2010-08-05 | Hewlett-Packard Development Company, L.P. | Selectively communicating data of a peripheral device to plural sending computers |
US8698823B2 (en) | 2009-04-08 | 2014-04-15 | Nvidia Corporation | System and method for deadlock-free pipelining |
JP5521620B2 (ja) * | 2010-02-19 | 2014-06-18 | 富士通株式会社 | 中継装置、仮想マシンシステム及び中継方法 |
US9330031B2 (en) | 2011-12-09 | 2016-05-03 | Nvidia Corporation | System and method for calibration of serial links using a serial-to-parallel loopback |
US9569385B2 (en) | 2013-09-09 | 2017-02-14 | Nvidia Corporation | Memory transaction ordering |
JP6266308B2 (ja) * | 2013-11-07 | 2018-01-24 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US10122576B2 (en) | 2015-03-17 | 2018-11-06 | Microsoft Technology Licensing, Llc | Intelligent role selection for dual-role devices |
JP6578899B2 (ja) * | 2015-11-13 | 2019-09-25 | 株式会社ジェイテクト | 通信システムおよび通信ネットワークの情報生成方法 |
CN106250785A (zh) * | 2016-08-17 | 2016-12-21 | 成都市和平科技有限责任公司 | 一种数据中断传输的保护方法和基于该保护方法的数据存储器 |
US10354501B2 (en) * | 2016-11-08 | 2019-07-16 | The Boeing Company | Autonomous, low energy, access indication system |
CN106649161B (zh) * | 2016-12-13 | 2023-11-14 | 广东工业大学 | 一种电脑与电脑之间的数据传输装置 |
JP2023108954A (ja) | 2022-01-26 | 2023-08-07 | 東芝テック株式会社 | 監視装置及びプログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4982400A (en) * | 1988-12-29 | 1991-01-01 | Intel Corporation | Ring bus hub for a star local area network |
JPH10303948A (ja) | 1997-04-28 | 1998-11-13 | Canon Inc | 通信装置およびその方法 |
US6941326B2 (en) * | 2001-01-24 | 2005-09-06 | Microsoft Corporation | Accounting for update notifications in synchronizing data that may be represented by different data structures |
CN1175362C (zh) * | 2001-04-09 | 2004-11-10 | 华邦电子股份有限公司 | 具有多个上游端口的usb集线器及使用该集线器的电脑系统 |
JP3558059B2 (ja) | 2001-08-10 | 2004-08-25 | セイコーエプソン株式会社 | 電源制御回路及び電子機器 |
US6732171B2 (en) * | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
US7469343B2 (en) * | 2003-05-02 | 2008-12-23 | Microsoft Corporation | Dynamic substitution of USB data for on-the-fly encryption/decryption |
-
2003
- 2003-05-06 JP JP2003127806A patent/JP3632695B2/ja not_active Expired - Fee Related
-
2004
- 2004-04-29 US US10/834,192 patent/US7505461B2/en not_active Expired - Fee Related
- 2004-04-30 CN CN2004100372903A patent/CN1551592B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006164209A (ja) * | 2004-12-08 | 2006-06-22 | Cheng-Chun Chang | ホスト機能を有するデジタル画像入力装置 |
JP2007011780A (ja) * | 2005-06-30 | 2007-01-18 | Seiko Epson Corp | データ転送制御装置及び電子機器 |
JP2011090485A (ja) * | 2009-10-22 | 2011-05-06 | Renesas Electronics Corp | パイプ調停回路、パイプ調停方法 |
US8756356B2 (en) | 2009-10-22 | 2014-06-17 | Renesas Electronics Corporation | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size |
Also Published As
Publication number | Publication date |
---|---|
US20050002391A1 (en) | 2005-01-06 |
US7505461B2 (en) | 2009-03-17 |
JP3632695B2 (ja) | 2005-03-23 |
CN1551592B (zh) | 2011-07-06 |
CN1551592A (zh) | 2004-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3632695B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP3636157B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2004021613A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP3649226B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US7337382B2 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
JP4837659B2 (ja) | 分割トランザクションを処理するためのバス・コントローラ | |
JP3726898B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2002342261A (ja) | データ転送制御装置及び電子機器 | |
JP3755594B2 (ja) | データ転送制御装置及び電子機器 | |
JP3636158B2 (ja) | データ転送制御装置及び電子機器 | |
JP3636160B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP3614161B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP4127069B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP4127071B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2005122303A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003316734A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2004021976A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003323391A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003323399A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20040917 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20041006 |
|
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: 20041130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041213 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3632695 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: 20090107 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100107 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110107 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120107 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120107 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130107 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130107 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140107 Year of fee payment: 9 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |