JP2004295594A - データ転送制御装置、電子機器及びデータ転送制御方法 - Google Patents
データ転送制御装置、電子機器及びデータ転送制御方法 Download PDFInfo
- Publication number
- JP2004295594A JP2004295594A JP2003088222A JP2003088222A JP2004295594A JP 2004295594 A JP2004295594 A JP 2004295594A JP 2003088222 A JP2003088222 A JP 2003088222A JP 2003088222 A JP2003088222 A JP 2003088222A JP 2004295594 A JP2004295594 A JP 2004295594A
- Authority
- JP
- Japan
- Prior art keywords
- descriptor
- area
- data
- host
- packet
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】効率的なディスクリプタ返信処理を実現できるデータ転送制御装置、これを含む電子機器、及びデータ転送制御方法を提供すること。
【解決手段】データ転送制御装置は、コントロールエンドポイント領域EP0などのエンドポイント領域が確保されるデータバッファ160と、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、領域EP0とは別領域に確保されたディスクリプタ領域Descにアクセスし、ディスクリプタを読み出すアクセスコントローラ140と、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎に自動送信する転送コントローラ130を含む。ホストからのSETUP又はOUTトークンパケットの受信時に自動送信を停止する。ディスクリプタ返信のイネーブルやディスクリプタの読み出し開始アドレスや読み出しサイズが設定されるレジスタを含む。
【選択図】 図10
【解決手段】データ転送制御装置は、コントロールエンドポイント領域EP0などのエンドポイント領域が確保されるデータバッファ160と、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、領域EP0とは別領域に確保されたディスクリプタ領域Descにアクセスし、ディスクリプタを読み出すアクセスコントローラ140と、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎に自動送信する転送コントローラ130を含む。ホストからのSETUP又はOUTトークンパケットの受信時に自動送信を停止する。ディスクリプタ返信のイネーブルやディスクリプタの読み出し開始アドレスや読み出しサイズが設定されるレジスタを含む。
【選択図】 図10
Description
【0001】
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【0002】
【背景技術】
従来より、パーソナルコンピュータと周辺機器(広義には電子機器)とを接続するためのインターフェース規格としてUSB(Universal Serial Bus)が知られている。このUSB(高速シリアルバス)には、マウスやキーボードやプリンタなどの機器を同じ規格のコネクタで接続できると共に、いわゆるプラグ&プレイやホットプラグも実現できるという利点がある。また、従来のUSB1.1の規格に対する互換性を持ちながら、USB1.1に比べて格段に高速な480Mbps(HSモード)のデータ転送速度を実現できる規格として、USB2.0規格が策定され、注目を浴びている。
【0003】
【特許文献1】
特開2002−135132号公報
【0004】
【発明が解決しようとする課題】
USBでは4種類の転送方式が定義されており、その1つとしてコントロール転送と呼ばれる転送方式が定義されている。このコントロール転送では、ホストがUSBのデバイスに対してデバイスリクエストを送信し、デバイスはそのリクエストを解釈、実行して、レスポンスをホストに返す。
【0005】
デバイスリクエストには、標準デバイスリクエスト、デバイスクラス固有のリクエスト、ベンダ固有のリクエストがある。そして標準デバイスリクエストの中には、GET−DESCRIPTOR(ディスクリプタ取得を要求するデバイスリクエスト)と呼ばれるものがある。このGET−DESCRIPTORがコントロール転送を用いてホストから要求されると、デバイスは自身のディスクリプタをホストに返信する。即ちUSBのデバイスは、電源投入後やバス接続後に、自身がどのような能力、特性、属性を持つデバイスであるかをホストに報告する必要があり、この報告する情報がディスクリプタと呼ばれる。
【0006】
しかしながら、ホストのOS(Operating System)のデバイスドライバの仕様によっては、ホストからのGET−DESCRIPTORの要求が、電源投入後やバス接続後に複数回行われる場合がある。このため、USBのデバイスが内蔵するデータ転送装置を制御するファームウェア(プロセッサ)は、GET−DESCRIPTORの要求が来る毎に同じ処理を繰り返さなければならず、ファームウェアの処理のリソースが無駄に消費されてしまう。
【0007】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、効率的なディスクリプタ返信処理を実現できるデータ転送制御装置、これを含む電子機器、及びデータ転送制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域が確保されるデータバッファと、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出すアクセスコントローラと、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信する転送コントローラとを含むデータ転送制御装置に関係する。
【0009】
本発明によれば、コントロールエンドポイント領域などの複数のエンドポイント領域がデータバッファに確保される。またコントロールエンドポイント領域とは別の領域にディスクリプタ領域が確保される。そしてディスクリプタ取得を要求するデバイスリクエストをホストから受信すると、アクセスコントローラは、ディスクリプタ領域にアクセスしてディスクリプタを読み出す。そして転送コントローラは、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに送信する。このようにすれば、INトークンパケットをホストから受信する毎にプロセッサ等がコントロールエンドポイント領域にディスクリプタを書き込むというような煩雑な処理を不要にできる。これにより、プロセッサ等の処理負荷を軽減でき、効率の良いディスクリプタ返信を実現できる。
【0010】
なおディスクリプタ領域は、データバッファに確保してもよいし、データバッファとは物理的に別のメモリに確保してもよい。また電源投入後(バス接続後)にディスクリプタ領域にディスクリプタを予め書き込んでおくことができる。また、ディスクリプタの残り送信サイズがマックスパケットサイズ以上の場合には、ディスクリプタを、ペイロードがマックスパケットサイズとなるパケットに分割して送信することができる。そしてディスクリプタの残り送信サイズがマックスパケットサイズよりも小さい場合には、残りのディスクリプタをショートパケット(ゼロ長パケットを含む)で自動送信することができる。またコントロールエンドポイント領域などのエンドポイント領域については、先に入力された情報が先に出力される領域に設定し、ディスクリプタ領域については、ランダムアクセスが可能な領域(所望のアドレスに自由にアクセスできる領域)に設定することができる。
【0011】
また本発明では、前記転送コントローラが、ディスクリプタのデータパケットを送信するデータステージにおいて、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止するようにしてもよい。
【0012】
このようにすれば、全てのディスクリプタの送信が完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合にも、適正にこれに対応できるようになる。
【0013】
また本発明では、ディスクリプタ領域からのディスクリプタ返信のイネーブル、ディスエーブルが設定されるディスクリプタ返信イネーブルレジスタを含み、前記アクセスコントローラが、前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のイネーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記ディスクリプタ領域にアクセスし、前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のディスエーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記コントロールエンドポイント領域にアクセスするようにしてもよい。
【0014】
本発明によれば、ディスクリプタ返信イネーブルレジスタにプロセッサ等によりイネーブルが設定されると、ディスクリプタの自動送信が許可される。そしてディスクリプタ取得のデバイスリクエストの受信時に、ディスクリプタ領域からディスクリプタが自動的に読み出され、ホストに自動送信されるようになる(ディスクリプタがハードウェア回路により読み出されて送信されるようになる)。これによりプロセッサ等の処理の簡素化と処理負荷の軽減化を図れる。
【0015】
また本発明では、前記ディスクリプタ領域からのディスクリプタの読み出し開始アドレスが設定されるデイスクリプタアドレスレジスタと、前記ディスクリプタ領域からのディスクリプタの読み出しサイズが設定されるディスクリプタサイズレジスタとを含み、前記アクセスコントローラが、前記ディスクリプタアドレスレジスタに設定された開始アドレスから、前記ディスクリプタサイズレジスタに設定されたサイズのディスクリプタを読み出し、前記転送コントローラが、読み出されたディスクリプタのデータパケットをホストに自動送信するようにしてもよい。
【0016】
このようにすれば、ディスクリプタ領域の任意の開始アドレスから、任意のサイズのディスクリプタを読み出して、ホストに自動送信できるようになる。これにより、階層化された複数種類のディスクリプタをディスクリプタ領域に書き込んでおき、これらの複数種類のディスクリプタの中から所望のディスクリプタを自動送信することが可能になる。
【0017】
また本発明では、前記転送コントローラが、前記ディスクリプタサイズレジスタに設定されるサイズのディスクリプタの送信完了前に、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止するようにしてもよい。
【0018】
このようにすれば、全てのディスクリプタの送信が完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合にも、適正にこれに対応できるようになる。
【0019】
また本発明では、前記ディスクリプタ領域が、前記データバッファに確保されるようにしてもよい。
【0020】
また本発明では、コントロールエンドポイント領域と次のエンドポイント領域との間に空き領域がある場合に、その空き領域に、前記ディスクリプタ領域が確保されるようにしてもよい。
【0021】
このようにすれば、データバッファの記憶領域を無駄なく使用できるようになる。
【0022】
また本発明では、前記ディスクリプタ領域が、前記データバッファのメモリとは別のメモリに確保されるようにしてもよい。
【0023】
この場合の別メモリは、例えば、電源供給がオフされても、ディスクリプタの情報が消失しないようなメモリ(EEPROM、ROM等)を採用できる。
【0024】
また本発明は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置を制御するプロセッサとを含む電子機器に関係する。
【0025】
また本発明では、前記プロセッサが、電子機器への電源投入後に、前記ディスクリプタ領域にディスクリプタを書き込むようにしてもよい。
【0026】
なおデータ転送制御装置を含むデバイスがバス接続された後の初期段階に、ディスクリプタ領域にディスクリプタを書き込むようにしてもよい。またディスクリプタ領域へのディスクリプタの書き込みは、電源投入後(バス接続後)、ディスクリプタ領域からのディスクリプタの自動返信前に行うことができる。
【0027】
また本発明は、バスを介したデータ転送のためのデータ転送制御方法であって、コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域を、データバッファに確保し、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出し、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信するデータ転送制御方法に関係する。
【0028】
【発明の実施の形態】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0029】
1.USBのデータ転送手法
USB(広義にはシリアルバス)のデータ転送手法について簡単に説明する。USBではデータ転送の主導権をホストが有している。即ち、データ転送のトランザクションを起動するのはホスト側であり、データ転送に関する大部分の制御はホストが行う。従って、デバイス(ターゲット)はホストからの要求に対して単に応えるだけでよい。このため、デバイス側の処理、構成を簡素化でき、デバイスが内蔵するCPU(広義にはプロセッサ)としても低価格なものを用いることが可能になる。
【0030】
USBでは、このようなホスト主導のデータ転送を実現するために、図1に示すようなエンドポイント(EP0〜EP15)がデバイス側に用意される。USBでは、1つのデバイスとホストとの間に、複数の論理的な通信路(パイプ)を持たせることができ、各パイプのデバイス側の端がエンドポイントと呼ばれる。各エンドポイントは、物理的には、少なくとも1パケット分のデータを格納できるFIFOメモリで実現される。
【0031】
エンドポイントは、デバイスアドレスとエンドポイント番号により一義的にアドレス指定できる。即ちホストは、デバイスアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。また、エンドポイントの構成の仕方はデバイス側の任意であり、エンドポイント番号の割り当てや、各エンドポイントに割り当てられる記憶領域のデータサイズ等は、エニミュレーション(enumeration)処理時にホストは知ることができる。
【0032】
2.コントロール転送
USBにおいては、データ転送のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送が用意されている。
【0033】
ここで、コントロール転送は、ホストとデバイス(ターゲット、ペリフェラル)との間でコントロールエンドポイント(エンドポイント番号が0のエンドポイントEP0)を介して行われる制御用の転送モードである。このコントロール転送により、デバイスの初期化のためのコンフィグレーション情報等が転送される。このため、USBのデバイスは、コントロールエンドポイント(EP0)については必ず具備する必要がある。
【0034】
図2に示すようにコントロール転送は、ホストがデバイスにデバイスリクエストを送るセットアップステージと、デバイスリクエストで指定される転送方向でデータを転送するデータステージと、データ転送が成功したか否かを伝えるステータスステージとにより構成される。また、各ステージは少なくとも1つ以上のトランザクションにより構成される。ここでトランザクションは、トークンパケット、オプショナルなデータパケット、オプショナルなハンドシェークパケットにより構成される。このコントロール転送により、デバイスのエニュミレーション(enumeration)、コンフィギュレーション(configuration)などが行われる。
【0035】
デバイスリクエストは、USBのデバイスに対するホストからのコマンドである。このデバイスリクエストには、標準デバイスリクエスト、デバイスクラス固有のリクエスト、ベンダ固有のリクエストがある。図3に、標準デバイスリクエストの代表例を示す。
【0036】
図2に示すように、セットアップステージでは、ホストがSETUPトークパケットを生成して、デバイスに送信(発行)する。次に、図2に例示されるデバイスリクエストを含むSETUPデータのパケットを、ホストがデバイスに送信する。SETUPデータパケットを受信したデバイスは、SETUPデータパケットに含まれるデバイスリクエストを解析し、ACK(ACKnowledgement)のハンドシェークパケットをホストに送信する。デバイスからACKのハンドシェークパケットが返ってくると、ホストはセットアップステージを終了する。なお図2の「H→D」は「ホストからデバイスにパケットが送信されること」を表し、「D→H」は「デバイスからホストにパケットが送信されること」を表す(他の図面においても同様)。
【0037】
セットアップステージが終了するとデータステージに移行する。なおデータステージが無いデバイスリクエスト(図3のSET−ADDRESS、SET−FEATURE)では、データステージは省略されてステータスステージに移行する。
【0038】
データステージでの転送方向が「IN」であるデバイスリクエスト(図3のGET−DESCRIPTOR)では、データステージにおいてホストがINトランザクションを発生する。このINトランザクションでは、ホストがINトークンパケットをデバイスに送信する。そしてINトークンパケットを受けたデバイスは、ホストにINデータを送信する。例えばデバイスリクエストがGET−DESCRIPTORである場合、デバイスは、ディスクリプタをINデータに含ませてホストに送信する。ホストは、データパケットをデバイスから受信すると、ACKのハンドシェークパケットをデバイスに返す。そして、このINトランザクションを繰り返して、トータルサイズ分のデータの転送が完了すると、データステージが終了する。
【0039】
データステージでの転送方向が「OUT」であるデバイスリクエスト(図3のSET−DESCRIPTOR)では、データステージにおいてホストがOUTトランザクションを発生する。このOUTトランザクションでは、ホストがOUTトークンパケットをデバイスに送信し、データパケットをデバイスに送信する。デバイスは、データパケットを受信すると、ACKのハンドシェークパケットをホストに返す。そして、このOUTトランザクションを繰り返して、トータルサイズ分のデータの転送が完了すると、データステージが終了する。
【0040】
データステージが終了するとステータスステージに移行する。データステージがINトランザクションであった場合には、ホストは、OUTトークンパケットを送信した後、ゼロ長のデータパケットをデバイスに送信する。そしてホストがACKのハンドシェークパケットをデバイスから受信すると、ステータスステージが終了する。一方、データステージがOUTトランザクションであった場合やデータステージ無しの場合には、ホストは、INトークンパケットをデバイスに送信する。そしてホストは、ゼロ長のデータパケットをデバイスから受信すると、ACKのハンドシェークパケットをデバイスに送信し、これによりステータスステージが終了する。以上のようにしてコントロール転送が終了する。
【0041】
3.ディスクリプタ
セットアップステージで転送されるSETUPデータのフォーマットを図4に示す。ホストは図4のbRequestでデバイスリクエストのタイプを指定する。そしてディスクリプタ取得を要求するGET−DESCRIPTORのデバイスリクエストが指定されると、デバイスは図5に示すようなディスクリプタをホストに返信する。
【0042】
デバイスが返信するディスクリプタとしては、図5に示すようにデバイスディスクリプタ、コンフィギュレーションディスクリプタ、インターフェースディスクリプタ、エンドポイントディスクリプタ、ストリングディスクリプタがある。ホストは図4のwValueなどでディスクリプタのタイプを指定する。
【0043】
デバイスディスクリプタにはUSBデバイスの一般的な情報が記述される。コンフィギュレーションディスクリプタにはデバイス構成についての情報が記述される。USBでは1つの構成(例えばCDドライブ)が複数のインターフェース(CDROMドライブ、ビデオCDドライブ)を持つことができ、インターフェースディスクリプタには構成内のインターフェースについての情報が記述される。エンドポイントディスクリプタにはエンドポイントについての情報が記述される。ストリングディスクリプタにはオプショナルのディスクリプタである。
【0044】
図5に示すようにディスクリプタの内容はディスクリプタ毎に一義的に決めることができる内容である。従って本来ならば、デバイスはホストに対してディスクリプタを1度だけ報告すればよいはずである。ところがホストのデバイスドライバは階層構造になっているため、各階層毎にディスクリプタの報告を要求してくる場合がある。また階層毎に必要とするディスクリプタのタイプも異なる。このため、電源投入後やバス接続後(バスリセット後)に、GET−DESCRIPTOR要求が複数回行われる場合がある。
【0045】
一方、ディスクリプタのデータは、エンドポイント番号が0であるコントロールエンドポイントを介したコントロール転送により転送される。そしてデバイスのデータバッファに確保されるコントロールエンドポイント領域EP0は、FIFO(リングバッファ構造のFIFO)メモリにより構成されるため、前回にEP0に書き込まれたデータは上書きにより消失してしまう。
【0046】
例えばホストからGET−DESCRIPTORを受信すると、デバイスのデータ転送制御装置を制御するファームウェアは、コントロールエンドポイント領域EP0にディスクリプタを書き込む。そしてデータ転送制御装置は、書き込まれたディスクリプタをホストに送信する。その後、ホストから例えばGET−STATUSを受信すると、データ転送制御装置のファームウェアは、コントロールエンドポイント領域EP0にデバイスのステータスを書き込む。すると、領域EP0に既に書き込まれていたディスクリプタは上書きにより消失してしまう。従って、その後、GET−DESCRIPTORをホストから再び受信した場合には、ファームウェアは、前回に書き込んだものと同内容のディスクリプタを領域EP0に再度書き込まなければならない。従って、ファームウェアの処理のリソースが無駄に消費されてしまう課題があることが判明した。
【0047】
4.データ転送制御装置及び電子機器の構成
図6に本実施形態のデータ転送制御装置100及びこれを含む電子機器110の構成例を示す。なおデータ転送制御装置100及び電子機器110は、図6の全ての構成要素を含む必要はなく、その一部を省略する構成にしてもよい。
【0048】
電子機器110は、データ転送制御装置100と、ASICなどで構成されるアプリケーションデバイス210(アプリケーション層のデバイス)と、CPU220と、ROM230と、RAM240と、表示部250と、操作部260を含む。なおこれらの構成要素の一部を省略する構成にしてもよい。ここでアプリケーションデバイス210としては、例えばハードディスクドライブや光ディスクドライブなどのメディアドライブを制御するデバイスや、プリンタやスキャナを制御するデバイスや、MPEGエンコーダ、MPEGデコーダ等を含むデバイスなどがある。
【0049】
CPU220(広義にはプロセッサ)は機器全体の制御などを行う。データ転送制御装置100を制御するファームウェア(プログラム)は、CPU220上で動作させることができる。ROM230は制御プログラムや各種のデータを記憶する。RAM240はCPU220やデータ転送制御装置100のワーク領域やデータ格納領域として機能する。表示部250は種々の情報をユーザに表示する。操作部260はユーザが電子機器を操作するためのものである。
【0050】
なお図6ではDMAバスとCPUバスが分離されているが、これらを共通化してもよい。またデータ転送制御装置100の制御に専用のCPUを設けてもよい。また本実施形態が適用できる電子機器としては、光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、TVチューナ、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなどの種々のものがある。
【0051】
データ転送制御装置100はトランシーバ120を含む。このトランシーバ120は、USB(シリアルバス)のFS(フルスピード)モードやHS(ハイスピード)モードでのデータ転送を実現する。このトランシーバ120としては、例えばUSB2.0の物理層回路や、論理層回路の一部についてのインターフェースを定義したUTMI(USB2.0 Transceiver Macrocell Interface)に準拠したマクロセルを用いることができる。このトランシーバ120には、例えば、差動信号DP、DMを用いてUSB上のデータを送受信するアナログフロントエンド回路(受信回路、送信回路)を含ませることができる。また、ビットスタッフィング、ビットアンスタッフィング、シリアル・パラレル変換、パラレル・シリアル変換、NRZIデコード、NRZIエンコード、サンプリングクロック生成などの処理を行う回路を含ませることができる。またデータ転送制御装置100が使用する動作クロックや、サンプリングクロックの生成に使用されるクロックなどを生成するPLLを含ませることができる。
【0052】
データ転送制御装置100は転送コントローラ130(Serial Interface Engine)を含む。この転送コントローラ130は、USBのパケット転送処理などの種々の処理を行う。この転送コントローラ130(第1のインターフェース)はパケットハンドラ回路132、サスペンド&レジューム制御回路134、トランザクション管理回路136を含む。ここでパケットハンドラ回路132は、ヘッダ及びデータからなるパケットの組み立て(生成)や分解などを行ったり、CRCの生成や解読を行う。またサスペンド&レジューム制御回路134は、サスペンドやレジューム時のシーケンス制御を行う。またトランザクション管理回路136は、トークン、データ、ハンドシェークなどのパケットにより構成されるトランザクションを管理する。そしてトランザクション管理回路136は、トークンパケットを受信した場合には、自分宛か否かを確認し、自分宛の場合には、データパケットの転送処理を行い、その後に、ハンドシェークパケットの転送処理を行う。
【0053】
データ転送制御装置100はアクセスコントローラ140を含む。このアクセスコントローラ130はデータバッファ160へのアクセス制御(書き込みアクセス制御、読み出しアクセス制御)を行う。より具体的には、アクセスコントローラ140は、データバッファ160にエンドポイント領域を確保したり管理する処理を行う。またデータバッファ160の書き込みアドレスや読み出しアドレスを生成し、データバッファ160へのデータの書き込み処理やデータバッファ160からのデータの読み出し処理を行う。またデータバッファ160に対するUSB側、DMA側、CPU側からのアクセスを調停する処理を行う。
【0054】
データ転送制御装置100はデータバッファ160を含む。このデータバッファ160(パケットバッファ、FIFOメモリ)は、USBを介して転送されるデータ(パケット)を一時的に記憶するものであり、USBでのデータ転送速度とDMAバスやCPUバスでのデータ転送速度との速度差を補償する機能などを有する。なおデータバッファ160の一部又は全部を外付けのメモリにより構成することも可能である。
【0055】
データ転送制御装置100はバルク転送管理回路170を含む。このバルク転送管理回路170は、USBにおけるバルク転送を管理する。またデータ転送制御装置180はDMAインターフェース180やCPUインターフェース190を含む。このDMAインターフェース180は、DMAバスに接続され、外部のアプリケーションデバイス210との間でのDMA転送(CPU220が介在しないデータ転送)を実現する。またCPUインターフェース190はCPUバスに接続され、CPU220とのインターフェース処理を実現する。
【0056】
そして本実施形態では、ディスクリプタ取得を要求するデバイスリクエスト(GET−DESCRIPTOR)をホストから受信すると、アクセスコントローラ140が、データバッファ160のコントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、ディスクリプタ(ディスクリプタデータ)を読み出す。そして転送コントローラ130が、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信する。即ちディスクリプタを複数のデータパケットに分割して自動送信する。なお「自動送信」とは、データ送信中にファームウェア(CPU)が介在しないハードウェア回路による送信の意味である。
【0057】
5.データバッファ
図7(A)にデータバッファ160(FIFOメモリ)のメモリマップの例を示す。図7(A)に示すようにデータバッファ160は複数の領域(エンドポイント領域、ディスクリプタ領域)に分割され、複数のエンドポイント領域EP0、EPa、EPb、EPcが確保(allocate)される。より具体的にはデータバッファ160には、コントロール転送用のコントロールエンドポイント領域EP0(エンドポイント0の領域)が確保される。また領域EP0とは別の領域にディスクリプタ領域Descが確保される。更に汎用のエンドポイント領域EPa、EPb、EPcが確保される。なお汎用エンドポイント領域の数は3個に限定されず、1個、2個でもよく、或いは4個以上でもよい。
【0058】
これらのデータバッファ160の各領域(area)の境界は、レジスタ10、11、12、13、14により設定される。ここでレジスタ10は領域EP0のマックスサイズEP0MSを設定するためのレジスタ(ポインタレジスタ)であり、レジスタ11、12、13、各々、領域EPa、EPb、EPcの開始アドレスEPaSA、EPbSA、EPcSAを設定するためのレジスタである。またレジスタ14は領域EPcの終了アドレスEPcEAを設定するためのレジスタである。これらのレジスタ10〜14はデータ転送制御装置100のアクセスコントローラ140に含ませることができる。そしてファームウェア(CPU)がこれらのレジスタ10〜14にアドレスを設定することで、データバッファ160に領域Desc、EP0〜EPCが確保される。
【0059】
領域EP0は、USBで必須のエンドポイント0に使用する領域であり、IN及びOUTの両方向の転送に使用される。この領域EP0のサイズは、レジスタ10に設定されたエンドポイント0のマックスパケットサイズ(EP0MS)により一義に決められる。そして領域EP0で送受信できるパケットは例えば1つになる(シングルバッファ)。但し、領域EP0はこのような構成に限定されない。
【0060】
領域EPa、EPb、EPcは、エンドポイント番号と、IN又はOUTの転送方向を指定できる汎用のエンドポイント領域である。領域EPaの開始アドレス、終了アドレスはレジスタ11、12により設定され、領域EPbの開始アドレス、終了アドレスはレジスタ12、13により設定される。また領域EPcの開始アドレス、終了アドレスはレジスタ13、14により設定される。これらの領域EPa、EPb、EPcのサイズは、各転送モード(FSモード、HSモード)での最大パケットサイズ以上に設定される。
【0061】
ディスクリプタ領域Descの開始アドレス、終了アドレスは、レジスタ10、11により設定される。なお領域Descを、図7(A)に示す場所とは異なる場所(例えばフリー領域)に確保してもよい。
【0062】
本実施形態では図7(A)において、エンドポイント領域EP0、EPa、EPb、EPcは、リングバッファ構造のFIFO領域になっている。即ち、これらの各領域にデータが書き込まれる毎(或いは読み出される毎)に、書き込みポインタ(或いは読み出しポインタ)の指すアドレスがインクリメントされる(デクリメントでもよい)。そして書き込みポインタの指すアドレスが終了アドレスに達すると、書き込みポインタの指すアドレスは開始アドレスに戻される。このリングバッファ構造のFIFOでは、過去に各領域に書き込まれたデータは、その後にデータが上書きされることで消失することになる。
【0063】
一方、ディスクリプタ領域DescはFIFO領域になっておらず、ランダムアクセスが可能な領域になっている。即ちファームウェアは、領域Descの任意のアドレスからデータを読み出すことができる。また領域Descの任意のアドレスにデータを書き込むことができる。
【0064】
6.ディスクリプタ領域からの自動返信
本実施形態の特徴は、コントロールエンドポイント領域EP0とは別の領域にディスクリプタ領域Descを設けた点にある。この領域Descは、標準デバイスリクエストの動作の一部を簡易且つ高速に行うための領域である。本実施形態では、標準デバイスリクエストのうち、デバイス毎に一義に決定される内容を、電源投入後の初期設定時に領域Descにファームウェア(CPU)が書き込む。このようにすれば、この書き込んでおいた内容を問うデバイスリクエストがホストから来た場合に、読み出すべきディスクリプタの開始アドレスとサイズを設定するだけで、データ転送制御装置100が自動的にデバイスリクエストについてのデータステージのデータ転送を行うようになる。従って、ホストからデバイスリクエストを受けてから領域EP0にデータを書き込むといった処理を行わなくて済むため、簡易且つ高速にホストからのデバイスリクエストに応答できるようになる。
【0065】
より具体的には本実施形態では、電源投入後(バス接続後)に、ファームウェアが、ディスクリプタ領域Descに、図5に示すようなディスクリプタを書き込む。ここでファームウェアはCPU(電子機器の汎用のCPU又はデータ転送制御装置に専用のCPU)上で動作するソフトウェアである。
【0066】
またデータ転送制御装置100は図7(B)(C)に示すように、領域Descからのディスクリプタ返信のイネーブル又はディスエーブルを設定できるレジスタ147を含む。そして図7(B)に示すようにファームウェアによりレジスタ147に対してディスクリプタ返信のディスエーブル(ReplyDesc=0)が設定されると、アクセスコントローラ140はコントロールエンドポイント領域EP0にアクセスするようになる。即ちGET−DESCRIPTORをホストから受信した場合に領域EP0にアクセスする。
【0067】
一方、ファームウェアによりレジスタ147に対してイネーブル(ReplyDesc=1)が設定されると、アクセスコントローラ140は、領域EP0ではなく領域Descにアクセスするようになる。即ちGET−DESCRIPTORをホストから受信した場合に領域Descにアクセスし、領域Descに書き込まれたディスクリプタを読み出す。
【0068】
そして読み出されたディスクリプタは、転送コントローラ130により、複数のパケット(マックスパケットサイズのパケット及びショートパケット)に分割されてホストに送信される。
【0069】
従って、電源投入後にGET−DESCRIPTOR要求をホストが複数回行った場合にも、領域Descのディスクリプタが自動的にホストに返信されるようになる。従ってファームウェアは、領域Descにデスクリプタを、一旦、書き込めば、その後に複数回のGET−DESCRIPTOR要求が来た場合にも、領域EP0にディスクリプタを書き込まなくても済むようになる。従って、ファームウェアの処理負荷を軽減できると共にディスクリプタ転送を高速化できる。
【0070】
なおディスクリプタ領域Descは、図8(A)に示すようにデータバッファ160に確保してもよいが、図8(B)に示すように、データバッファ160のメモリとは物理的に別のメモリ169に確保してもよい。このような別メモリ169としては例えばROMやEEPROM(電気的にデータの消去が可能なメモリ)などを想定できる。このように、ROMやEEPROMなどの別メモリ169に領域Descを設定するようにすれば、電源が投入される毎に(バスが接続される毎に)、領域Descにディスクリプタを書き込まなくても済むようになる。
【0071】
なお、データバッファ160に領域Descを確保する場合には、コントロールエンドポイント領域EP0と、EP0の次のエンドポイント領域EPa(アドレス順で並べた時の次のエンドポイント領域)の間に、領域Descを確保することが望ましい。
【0072】
即ち、通常、コントロールエンドポイント領域EP0のサイズは、エンドポイント領域EPaよりも小さなサイズに設定される。例えばUSB2.0のHS(ハイスピード)モードでは、領域EP0のサイズは64バイトに設定される一方で、領域EPaのサイズは例えば512バイト(最大パケットサイズ)に設定される。この場合に図9(A)に示すように、領域EP0に隣接するように領域EPaを確保すると、領域境界が、EPaSA=64、EPbSA=576というように、ファームウェアにとって取り扱いにくい値になってしまう。
【0073】
これに対して図9(B)では、領域EP0と次の領域EPaとの間の空き領域に、ディスクリプタ領域Descを確保している。即ち領域EP0のサイズが、EP0の次の領域EPaのサイズよりも小さい場合に(EP0の終了アドレスが、EPaの開始アドレスよりも小さい場合に)、EP0とEPaの間の空き領域にDescを確保する。このようにすれば、領域境界を、例えばEPaSA=512、EPbSA=1024というように、512(最大パケットサイズ)の倍数に設定することが可能になり、ファームウェアにとって取り扱い値に設定できる。これによりファームウェアの処理の簡素化等を図れる。
【0074】
なお、領域Descを例えば、領域EPa、EPb間や領域EPb、EPc間に確保したり、領域EPcの上のフリー領域に確保するようにしてもよい。
【0075】
7.詳細例
図10にアクセスコントローラ140の詳細な構成例を示す。アクセスコントローラ140はエンドポイント管理回路141とバッファ管理回路150を含む。エンドポイント管理回路141は、データバッファ160の各記憶領域の入り口となるエンドポイントを管理する回路である。バッファ管理回路150は、データバッファ160へのアクセス(書き込みアクセス、読み出しアクセス)を管理する回路である。より具体的にはバッファ管理回路150は、書き込みアドレスや読み出しアドレスを生成し、データバッファ160へのデータの書き込み処理やデータバッファ160からのデータの読み出し処理を行う。
【0076】
転送コントローラ130(トランザクション管理回路136)は、USBを介して転送される書き込みデータUSBWrDataをデータバッファ160に出力し、読み出しデータUSBRdDataをデータバッファ160から入力する。また転送コントローラ130は、バッファ管理回路150に対して書き込み要求信号USBWrReq、読み出し要求信号USBRdReqを出力し、バッファ管理回路150から書き込みアクノリッジ信号USBWrAck、読み出しアクノリッジ信号USBRdAckを受ける。
【0077】
また転送コントローラ130は、エンドポイント管理回路141に対して、トランザクション終了信号TranEndPulse、トランザクションステータス信号TranStatus、エンドポイント番号指定信号EPnum、転送方向指定信号Directionを出力し、エンドポイント管理回路141から、エンドポイント存在信号EPexistを受ける。
【0078】
エンドポイント管理回路141は、エンドポイント(EP0、EPa、EPb、EPc)の属性情報(エンドポイント番号、最大パケットサイズ等)を記述するためのレジスタ(レジスタセット)142、143、144、145を含む。またエンドポイント管理回路141は、ディスクリプタ領域用のレジスタ146(Desc)を含む。そしてこのレジスタ146は、レジスタ147、148、149により構成される。
【0079】
レジスタ147は、ディスクリプタ領域Descからのディスクリプタ返信のイネーブル(ReplyDesc=1)又はディスエーブル(ReplyDesc=0)を設定するためのレジスタである。レジスタ148は、領域Descからのディスクリプタの読み出し開始アドレス(DescAdrs)を設定するためのレジスタである。レジスタ149は、領域Descからのディスクリプタの読み出しサイズ(DescSize)を設定するためのレジスタである。
【0080】
ファームウェアによりレジスタ147にイネーブル(ReplyDesc=1)が設定されると、アクセスコントローラ140(バッファ管理回路150)が、レジスタ148に設定された開始アドレス(DescAdrs)から、レジスタ149に設定されたサイズのディスクリプタを読み出す。そして転送コントローラ130が、読み出されたディスクリプタデータのパケットをホストに送信する。
【0081】
図5に示すようにディスクリプタには、デバイスディスクリプタ、コンフィギュレーションディスクリプタ、インターフェースディスクリプタ等の階層化された複数種類のディスクリプタがある。このようにディスクリプタが階層化されている場合には、レジスタ148、149を設けることで、処理を効率化できる。
【0082】
即ち電源投入後(バス接続後)にファームウェアは図5の全てのディスクリプタを領域Descに書き込んでおく。そしてホストが例えばデバイスディスクリプタの報告を要求して来た場合には、レジスタ148、149にデバイスディスクリプタの開始アドレスとサイズをファームウェアが設定する。このようにすれば、領域Descに書き込まれている全ディスクリプタのうちデバイスディスクリプタだけをホストに送信できるようになる。またホストがインターフェースディスクリプタの報告を要求して来た場合には、レジスタ148、149にインターフェースディスクリプタの開始アドレスとサイズをファームウェアが設定する。このようにすれば、領域Descに書き込まれている全ディスクリプタのうちインターフェースディスクリプタだけをホストに送信できるようになる。
【0083】
エンドポイント管理回路141は、転送コントローラ130からの各種信号とレジスタの情報とに基づいて、エンドポイント選択信号EPsel、ディスクリプタ返信イネーブル信号ReplyDesc、ディスクリプタアドレス信号DescAdrs、ディスクリプタサイズ信号DescSizeを生成して、バッファ管理回路150に出力する。またエンドポイント管理回路141は、バッファ管理回路150に対して、CPUからの書き込み要求信号CPUWrReq、読み出し要求信号CPURdReqを出力し、バッファ管理回路150から、CPUへの書き込みアクノリッジ信号CPUWrAck、読み出しアクノリッジ信号CPURdAckを受ける。
【0084】
バッファ管理回路150は、転送コントローラ130やエンドポイント管理回路141からの書き込み・読み出し要求信号や、エンドポイント管理回路141からの信号EPsel、ReplyDesc、DescAdrs、DescSizeを受け、アドレスAddressや書き込みパルスxWR(xは負論理を意味する)をデータバッファ160に出力する。このバッファ管理回路150は、アドレス生成回路151、152、153、154、155とセレクタ156を含む。
【0085】
ここDescアドレス生成回路151は、領域Descについての、USBWrData、USBRdDataの書き込み又は読み出しアドレスAD0を生成する。この場合のアドレス生成は信号DescAdrs、DescSizeなどに基づいて行う。即ちDescAdrsで特定される開始アドレスから、DescSizeで特定される終了アドレスに至るまで、アドレスAD0を順次インクリメント(又はデクリメント)する。
【0086】
またアドレス生成回路152、153、154、55は、各々、領域EP0、EPa、EPb、EPcについての、USBWrData、USBRdDataの書き込み又は読み出しアドレスAD1、AD2、AD3、AD4を生成する。具体的には、各領域の開始アドレス(図7(A)参照)からアドレスAD1、AD2、AD3、AD4を順次インクリメント(又はデクリメント)する。
【0087】
セレクタ156は、信号EPselに基づいてアドレスAD0〜AD4のいずれかを選択し、Addressとしてデータバッファ160に出力すると共に、書き込みパルスxWRをデータバッファ160に出力する。具体的には、EPselにより領域Descが選択指示された場合にはAD0を選択し、領域EP0が選択指示された場合にはAD1を選択し、領域EPaが選択指示された場合にはAD2を選択し、領域EPbが選択指示された場合にはAD3を選択し、領域EPcが選択指示された場合にはAD4を選択して、Addressとしてデータバッファ160に出力する。
【0088】
8.動作
次に本実施形態のデータ転送制御装置100の詳細な動作例について説明する。図11はデータステージの最終パケットがショートパケット(ゼロ長パケットを含む)で終わった場合のパケット転送の様子を示した図である。
【0089】
まず図11のA1に示すようにセットアップステージにおいてホストからデバイス(データ転送制御装置100)にGET−DESCRIPTOR要求が送信される。次にA2に示すようにファームウェア(F/W)が図10のレジスタ147、148、149にReplyDesc、DescAdrs、DescSizeを設定する。するとA3、A4に示すように、データステージにおいて、ホストからINトークパケットが受信される毎に、領域Descから読み出されたディスクリプタが、最大パケットサイズのデータパケットに分割されて、ホストに送信される。そしてA5に示すように、最後のトランザクションでの残りデータサイズがマックパケットサイズに満たない場合には、自動的にショートパケットが生成されてホストに送信される。するとA6に示すようにディスクリプタ返信完了信号DescCmpがハードウェア(データ転送制御装置100)によりアクティブにされ、ディスクリプタの自動送信が完了する。そしてA7に示すようにステータスステージに移行する。
【0090】
図12は、図11のA3、A4の期間での詳細な信号波形例である。図12ではマックパケットサイズを64バイトと仮定している。
【0091】
図12のB1で信号ReplyDescがアクティブ(「1」)に変化し、これによりB2に示すように信号EPselが、領域EP0の選択指示から領域Descの選択指示に切り替わる。またB3、B4に示すようにAddresとして、Descアドレス生成回路151からのAD0が選択出力されるようになる。
【0092】
なおB5、B6に示すように、ディスクリプタアドレスDescAdrsにはa0が設定され、ディスクリプタサイズDescSizeにはNが設定されている。従ってB4に示すようにAD0は、a0を開始アドレスとして順次インクリメントされる。
【0093】
図12のB7に示すように、USB(DP、DM)上においてホストからINトークンを受信すると、B8に示すようにUSBRdReq、USBRdAckがアクティブになり、B9に示すようにうUSBRdDATAがデータバッファ160から読み出される。これによりB10に示すように、USB上でINデータがデバイス(データ転送制御装置100)からホストに転送される。そしてB11に示すようにホストからACKが返ってくると、B12に示すようにトランザクション終了信号TranEndPulseがアクティブになり、B11に示すように信号TranStatusがトランザクションの成功を示すようになる。これにより図11のA3に示すINデータのトランザクションが終了し、次のトランザクションに移行する。
【0094】
図13は、図11のA5、A7の期間での詳細な信号波形例である。図13のC1に示すように最終のショートパケットがUSB上で転送され、C2に示すようにホストからACKが返ってくると、C3に示すように信号TranEndPulseがアクティブになる。またこの時、DescSizeで指定されたサイズのディスクリプタの転送が完了したため、C4に示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりハードウェア回路によるディスクリプタの自動返信処理が完了する。そしてC5に示すようにホストからセロ長のデータが転送されるステータスステージに移行する。
【0095】
図14は、データステージの最終トランザクションでショートパケットが転送されない場合のパケット転送の様子を示した図である。図14のD1の最終トランザクションにおいて最大パケットサイズのINデータパケットが転送される以外は、図11と同様である。
【0096】
図15、図16はデータステージの途中でホストからSETUPトークンパケットやOUTトークンパケットを受信した場合のパケット転送の様子を示した図である。図15のE1、図16のF1に示すように本実施形態では、ディスクリプタの自動返信のデータステージにおいて、ホストからSETUPトークンパケットやOUTトークンパケットを受信すると、図15のE2、図16のF2示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりディスクリプタのデータパケットの自動送信が停止する。即ちディスクリプタサイズDescSizeのディスクリプタの送信を完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合に、ディスクリプタの自動返信が停止する。このようにすることで、ディスクリプタの自動返信中も、ホストからのSETUPトークンパケットやOUTトークンパケットを受け付けることが可能になり、適正なデータ転送処理を実現できる。
【0097】
図17は、図15のE3、E4の期間での詳細な信号波形例である。図17のG1では信号TranEndPulseがアクティブになって、前回のトランザクションが終了している。その後、G2に示すように、USB上においてホストからSETUPトークンを受信すると、G3に示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりG4に示すようにReplyDescが「0」(ディスエーブル)に戻され、ディスクリプタの自動返信機能が停止する。そしてG5に示すように信号EPselも、領域Descの選択指示から領域EP0の選択指示に切り替わる。これにより、コントロールエンドポイント領域EP0を用いたコントロール転送が可能になり、適正なデータ転送を実現できる。
【0098】
以上のように説明した本実施形態のデータ転送制御装置100によれば次のような効果を得ることができる。
【0099】
例えば本実施形態の比較例となる手法では、ホストからINトークンを受信する毎にコントロールエンドポイント領域EP0にデータを書き込んでINトークンに応答するという処理を、全てのディスクリプタの転送完了まで繰り返さなければならない。従ってファームウェアの処理負荷が過大になる。
【0100】
これに対して本実施形態では、開始アドレスDescAdrs、サイズDescSizeを設定し、ReplyDescをイネーブルにするだけで、領域Descに予め書き込んでおいたディスクリプタが、ホストからのINトークンを受信する毎(INトランザクション毎)に最大パケットサイズのパケットに自動分割されて、ホストに自動送信される。また最大パケットサイズに対して端数が生じる場合には、自動的にショートパケットが生成されてホストに送信される。従ってファームウェアは、ホストからのINトークン毎にデータを書き込むという作業を省略できるようになり、上述の比較例に比べてファームウェアの処理負荷を格段に軽減できる。
【0101】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0102】
例えばデータ転送制御装置、電子機器、アクセスコントローラ、転送コントローラの構成は、図6、図10等で説明した構成に限定されず、種々の変形実施が可能である。
【0103】
また、明細書又は図面中の記載において広義な用語(プロセッサ、シリアルバス、電子機器等)として引用された用語(CPU、USB、周辺機器等)は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【0104】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0105】
また本発明はUSB1.1、USB2.0を発展した規格やUSBと同様の思想に基づく規格に準拠したデータ転送制御装置にも適用できる。例えば本発明はOTG(On−The−Go)規格に準拠したデータ転送制御装置にも適用できる。OTG(デュアルロールデバイス)に本発明を適用する場合には、ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラをデータ転送制御装置に含ませる。またホスト動作時にホストとしてのデータ転送を行うホストコントローラと、ペリフェラル動作時にペリフェラルとしてのデータ転送を行うペリフェラルコントローラを、転送コントローラに含ませる。そしてこのペリフェラルコントローラが、ペリフェラル動作時に、ディスクリプタの自動返信処理を行うようにすればよい。
【図面の簡単な説明】
【図1】エンドポイントについての説明図である。
【図2】コントロール転送についての説明図である。
【図3】デバイスリクエストの代表例である。
【図4】SETUPデータのフォーマット例である。
【図5】ディスクリプタの例である。
【図6】本実施形態のデータ転送制御装置、電子機器の構成例である。
【図7】図7(A)(B)(C)はメモリマップ等の説明図である。
【図8】図8(A)(B)はディスクリプタ領域確保の説明図である。
【図9】図9(A)(B)もディスクリプタ領域確保の説明図である。
【図10】アクセスコントローラの詳細な構成例である。
【図11】本実施形態でのパケット転送の様子を示す説明図である。
【図12】本実施形態の詳細な動作を説明する信号波形図である。
【図13】本実施形態の詳細な動作を説明する信号波形図である。
【図14】本実施形態でのパケット転送の様子を示す説明図である。
【図15】本実施形態でのパケット転送の様子を示す説明図である。
【図16】本実施形態でのパケット転送の様子を示す説明図である。
【図17】本実施形態の詳細な動作を説明する信号波形図である。
【符号の説明】
100 データ転送制御装置、110 電子機器、120 トランシーバ、
130 転送コントローラ、132 パケットハンドラ回路、
134 サスペンド&レジューム回路、136 トランザクション管理回路
140 アクセスコントローラ、141 エンドポイント管理回路、
142〜146 レジスタ、150 バッファ管理回路、
151〜155 アドレス生成回路、156 セレクタ、
160 データバッファ、170 バルク転送管理回路、
180 DMAインターフェース、190 CPUインターフェース、
210 アプリケーションデバイス、220 CPU、230 ROM、
240 RAM、250 表示部、260 操作部、
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【0002】
【背景技術】
従来より、パーソナルコンピュータと周辺機器(広義には電子機器)とを接続するためのインターフェース規格としてUSB(Universal Serial Bus)が知られている。このUSB(高速シリアルバス)には、マウスやキーボードやプリンタなどの機器を同じ規格のコネクタで接続できると共に、いわゆるプラグ&プレイやホットプラグも実現できるという利点がある。また、従来のUSB1.1の規格に対する互換性を持ちながら、USB1.1に比べて格段に高速な480Mbps(HSモード)のデータ転送速度を実現できる規格として、USB2.0規格が策定され、注目を浴びている。
【0003】
【特許文献1】
特開2002−135132号公報
【0004】
【発明が解決しようとする課題】
USBでは4種類の転送方式が定義されており、その1つとしてコントロール転送と呼ばれる転送方式が定義されている。このコントロール転送では、ホストがUSBのデバイスに対してデバイスリクエストを送信し、デバイスはそのリクエストを解釈、実行して、レスポンスをホストに返す。
【0005】
デバイスリクエストには、標準デバイスリクエスト、デバイスクラス固有のリクエスト、ベンダ固有のリクエストがある。そして標準デバイスリクエストの中には、GET−DESCRIPTOR(ディスクリプタ取得を要求するデバイスリクエスト)と呼ばれるものがある。このGET−DESCRIPTORがコントロール転送を用いてホストから要求されると、デバイスは自身のディスクリプタをホストに返信する。即ちUSBのデバイスは、電源投入後やバス接続後に、自身がどのような能力、特性、属性を持つデバイスであるかをホストに報告する必要があり、この報告する情報がディスクリプタと呼ばれる。
【0006】
しかしながら、ホストのOS(Operating System)のデバイスドライバの仕様によっては、ホストからのGET−DESCRIPTORの要求が、電源投入後やバス接続後に複数回行われる場合がある。このため、USBのデバイスが内蔵するデータ転送装置を制御するファームウェア(プロセッサ)は、GET−DESCRIPTORの要求が来る毎に同じ処理を繰り返さなければならず、ファームウェアの処理のリソースが無駄に消費されてしまう。
【0007】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、効率的なディスクリプタ返信処理を実現できるデータ転送制御装置、これを含む電子機器、及びデータ転送制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域が確保されるデータバッファと、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出すアクセスコントローラと、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信する転送コントローラとを含むデータ転送制御装置に関係する。
【0009】
本発明によれば、コントロールエンドポイント領域などの複数のエンドポイント領域がデータバッファに確保される。またコントロールエンドポイント領域とは別の領域にディスクリプタ領域が確保される。そしてディスクリプタ取得を要求するデバイスリクエストをホストから受信すると、アクセスコントローラは、ディスクリプタ領域にアクセスしてディスクリプタを読み出す。そして転送コントローラは、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに送信する。このようにすれば、INトークンパケットをホストから受信する毎にプロセッサ等がコントロールエンドポイント領域にディスクリプタを書き込むというような煩雑な処理を不要にできる。これにより、プロセッサ等の処理負荷を軽減でき、効率の良いディスクリプタ返信を実現できる。
【0010】
なおディスクリプタ領域は、データバッファに確保してもよいし、データバッファとは物理的に別のメモリに確保してもよい。また電源投入後(バス接続後)にディスクリプタ領域にディスクリプタを予め書き込んでおくことができる。また、ディスクリプタの残り送信サイズがマックスパケットサイズ以上の場合には、ディスクリプタを、ペイロードがマックスパケットサイズとなるパケットに分割して送信することができる。そしてディスクリプタの残り送信サイズがマックスパケットサイズよりも小さい場合には、残りのディスクリプタをショートパケット(ゼロ長パケットを含む)で自動送信することができる。またコントロールエンドポイント領域などのエンドポイント領域については、先に入力された情報が先に出力される領域に設定し、ディスクリプタ領域については、ランダムアクセスが可能な領域(所望のアドレスに自由にアクセスできる領域)に設定することができる。
【0011】
また本発明では、前記転送コントローラが、ディスクリプタのデータパケットを送信するデータステージにおいて、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止するようにしてもよい。
【0012】
このようにすれば、全てのディスクリプタの送信が完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合にも、適正にこれに対応できるようになる。
【0013】
また本発明では、ディスクリプタ領域からのディスクリプタ返信のイネーブル、ディスエーブルが設定されるディスクリプタ返信イネーブルレジスタを含み、前記アクセスコントローラが、前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のイネーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記ディスクリプタ領域にアクセスし、前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のディスエーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記コントロールエンドポイント領域にアクセスするようにしてもよい。
【0014】
本発明によれば、ディスクリプタ返信イネーブルレジスタにプロセッサ等によりイネーブルが設定されると、ディスクリプタの自動送信が許可される。そしてディスクリプタ取得のデバイスリクエストの受信時に、ディスクリプタ領域からディスクリプタが自動的に読み出され、ホストに自動送信されるようになる(ディスクリプタがハードウェア回路により読み出されて送信されるようになる)。これによりプロセッサ等の処理の簡素化と処理負荷の軽減化を図れる。
【0015】
また本発明では、前記ディスクリプタ領域からのディスクリプタの読み出し開始アドレスが設定されるデイスクリプタアドレスレジスタと、前記ディスクリプタ領域からのディスクリプタの読み出しサイズが設定されるディスクリプタサイズレジスタとを含み、前記アクセスコントローラが、前記ディスクリプタアドレスレジスタに設定された開始アドレスから、前記ディスクリプタサイズレジスタに設定されたサイズのディスクリプタを読み出し、前記転送コントローラが、読み出されたディスクリプタのデータパケットをホストに自動送信するようにしてもよい。
【0016】
このようにすれば、ディスクリプタ領域の任意の開始アドレスから、任意のサイズのディスクリプタを読み出して、ホストに自動送信できるようになる。これにより、階層化された複数種類のディスクリプタをディスクリプタ領域に書き込んでおき、これらの複数種類のディスクリプタの中から所望のディスクリプタを自動送信することが可能になる。
【0017】
また本発明では、前記転送コントローラが、前記ディスクリプタサイズレジスタに設定されるサイズのディスクリプタの送信完了前に、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止するようにしてもよい。
【0018】
このようにすれば、全てのディスクリプタの送信が完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合にも、適正にこれに対応できるようになる。
【0019】
また本発明では、前記ディスクリプタ領域が、前記データバッファに確保されるようにしてもよい。
【0020】
また本発明では、コントロールエンドポイント領域と次のエンドポイント領域との間に空き領域がある場合に、その空き領域に、前記ディスクリプタ領域が確保されるようにしてもよい。
【0021】
このようにすれば、データバッファの記憶領域を無駄なく使用できるようになる。
【0022】
また本発明では、前記ディスクリプタ領域が、前記データバッファのメモリとは別のメモリに確保されるようにしてもよい。
【0023】
この場合の別メモリは、例えば、電源供給がオフされても、ディスクリプタの情報が消失しないようなメモリ(EEPROM、ROM等)を採用できる。
【0024】
また本発明は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置を制御するプロセッサとを含む電子機器に関係する。
【0025】
また本発明では、前記プロセッサが、電子機器への電源投入後に、前記ディスクリプタ領域にディスクリプタを書き込むようにしてもよい。
【0026】
なおデータ転送制御装置を含むデバイスがバス接続された後の初期段階に、ディスクリプタ領域にディスクリプタを書き込むようにしてもよい。またディスクリプタ領域へのディスクリプタの書き込みは、電源投入後(バス接続後)、ディスクリプタ領域からのディスクリプタの自動返信前に行うことができる。
【0027】
また本発明は、バスを介したデータ転送のためのデータ転送制御方法であって、コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域を、データバッファに確保し、ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出し、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信するデータ転送制御方法に関係する。
【0028】
【発明の実施の形態】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0029】
1.USBのデータ転送手法
USB(広義にはシリアルバス)のデータ転送手法について簡単に説明する。USBではデータ転送の主導権をホストが有している。即ち、データ転送のトランザクションを起動するのはホスト側であり、データ転送に関する大部分の制御はホストが行う。従って、デバイス(ターゲット)はホストからの要求に対して単に応えるだけでよい。このため、デバイス側の処理、構成を簡素化でき、デバイスが内蔵するCPU(広義にはプロセッサ)としても低価格なものを用いることが可能になる。
【0030】
USBでは、このようなホスト主導のデータ転送を実現するために、図1に示すようなエンドポイント(EP0〜EP15)がデバイス側に用意される。USBでは、1つのデバイスとホストとの間に、複数の論理的な通信路(パイプ)を持たせることができ、各パイプのデバイス側の端がエンドポイントと呼ばれる。各エンドポイントは、物理的には、少なくとも1パケット分のデータを格納できるFIFOメモリで実現される。
【0031】
エンドポイントは、デバイスアドレスとエンドポイント番号により一義的にアドレス指定できる。即ちホストは、デバイスアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。また、エンドポイントの構成の仕方はデバイス側の任意であり、エンドポイント番号の割り当てや、各エンドポイントに割り当てられる記憶領域のデータサイズ等は、エニミュレーション(enumeration)処理時にホストは知ることができる。
【0032】
2.コントロール転送
USBにおいては、データ転送のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送が用意されている。
【0033】
ここで、コントロール転送は、ホストとデバイス(ターゲット、ペリフェラル)との間でコントロールエンドポイント(エンドポイント番号が0のエンドポイントEP0)を介して行われる制御用の転送モードである。このコントロール転送により、デバイスの初期化のためのコンフィグレーション情報等が転送される。このため、USBのデバイスは、コントロールエンドポイント(EP0)については必ず具備する必要がある。
【0034】
図2に示すようにコントロール転送は、ホストがデバイスにデバイスリクエストを送るセットアップステージと、デバイスリクエストで指定される転送方向でデータを転送するデータステージと、データ転送が成功したか否かを伝えるステータスステージとにより構成される。また、各ステージは少なくとも1つ以上のトランザクションにより構成される。ここでトランザクションは、トークンパケット、オプショナルなデータパケット、オプショナルなハンドシェークパケットにより構成される。このコントロール転送により、デバイスのエニュミレーション(enumeration)、コンフィギュレーション(configuration)などが行われる。
【0035】
デバイスリクエストは、USBのデバイスに対するホストからのコマンドである。このデバイスリクエストには、標準デバイスリクエスト、デバイスクラス固有のリクエスト、ベンダ固有のリクエストがある。図3に、標準デバイスリクエストの代表例を示す。
【0036】
図2に示すように、セットアップステージでは、ホストがSETUPトークパケットを生成して、デバイスに送信(発行)する。次に、図2に例示されるデバイスリクエストを含むSETUPデータのパケットを、ホストがデバイスに送信する。SETUPデータパケットを受信したデバイスは、SETUPデータパケットに含まれるデバイスリクエストを解析し、ACK(ACKnowledgement)のハンドシェークパケットをホストに送信する。デバイスからACKのハンドシェークパケットが返ってくると、ホストはセットアップステージを終了する。なお図2の「H→D」は「ホストからデバイスにパケットが送信されること」を表し、「D→H」は「デバイスからホストにパケットが送信されること」を表す(他の図面においても同様)。
【0037】
セットアップステージが終了するとデータステージに移行する。なおデータステージが無いデバイスリクエスト(図3のSET−ADDRESS、SET−FEATURE)では、データステージは省略されてステータスステージに移行する。
【0038】
データステージでの転送方向が「IN」であるデバイスリクエスト(図3のGET−DESCRIPTOR)では、データステージにおいてホストがINトランザクションを発生する。このINトランザクションでは、ホストがINトークンパケットをデバイスに送信する。そしてINトークンパケットを受けたデバイスは、ホストにINデータを送信する。例えばデバイスリクエストがGET−DESCRIPTORである場合、デバイスは、ディスクリプタをINデータに含ませてホストに送信する。ホストは、データパケットをデバイスから受信すると、ACKのハンドシェークパケットをデバイスに返す。そして、このINトランザクションを繰り返して、トータルサイズ分のデータの転送が完了すると、データステージが終了する。
【0039】
データステージでの転送方向が「OUT」であるデバイスリクエスト(図3のSET−DESCRIPTOR)では、データステージにおいてホストがOUTトランザクションを発生する。このOUTトランザクションでは、ホストがOUTトークンパケットをデバイスに送信し、データパケットをデバイスに送信する。デバイスは、データパケットを受信すると、ACKのハンドシェークパケットをホストに返す。そして、このOUTトランザクションを繰り返して、トータルサイズ分のデータの転送が完了すると、データステージが終了する。
【0040】
データステージが終了するとステータスステージに移行する。データステージがINトランザクションであった場合には、ホストは、OUTトークンパケットを送信した後、ゼロ長のデータパケットをデバイスに送信する。そしてホストがACKのハンドシェークパケットをデバイスから受信すると、ステータスステージが終了する。一方、データステージがOUTトランザクションであった場合やデータステージ無しの場合には、ホストは、INトークンパケットをデバイスに送信する。そしてホストは、ゼロ長のデータパケットをデバイスから受信すると、ACKのハンドシェークパケットをデバイスに送信し、これによりステータスステージが終了する。以上のようにしてコントロール転送が終了する。
【0041】
3.ディスクリプタ
セットアップステージで転送されるSETUPデータのフォーマットを図4に示す。ホストは図4のbRequestでデバイスリクエストのタイプを指定する。そしてディスクリプタ取得を要求するGET−DESCRIPTORのデバイスリクエストが指定されると、デバイスは図5に示すようなディスクリプタをホストに返信する。
【0042】
デバイスが返信するディスクリプタとしては、図5に示すようにデバイスディスクリプタ、コンフィギュレーションディスクリプタ、インターフェースディスクリプタ、エンドポイントディスクリプタ、ストリングディスクリプタがある。ホストは図4のwValueなどでディスクリプタのタイプを指定する。
【0043】
デバイスディスクリプタにはUSBデバイスの一般的な情報が記述される。コンフィギュレーションディスクリプタにはデバイス構成についての情報が記述される。USBでは1つの構成(例えばCDドライブ)が複数のインターフェース(CDROMドライブ、ビデオCDドライブ)を持つことができ、インターフェースディスクリプタには構成内のインターフェースについての情報が記述される。エンドポイントディスクリプタにはエンドポイントについての情報が記述される。ストリングディスクリプタにはオプショナルのディスクリプタである。
【0044】
図5に示すようにディスクリプタの内容はディスクリプタ毎に一義的に決めることができる内容である。従って本来ならば、デバイスはホストに対してディスクリプタを1度だけ報告すればよいはずである。ところがホストのデバイスドライバは階層構造になっているため、各階層毎にディスクリプタの報告を要求してくる場合がある。また階層毎に必要とするディスクリプタのタイプも異なる。このため、電源投入後やバス接続後(バスリセット後)に、GET−DESCRIPTOR要求が複数回行われる場合がある。
【0045】
一方、ディスクリプタのデータは、エンドポイント番号が0であるコントロールエンドポイントを介したコントロール転送により転送される。そしてデバイスのデータバッファに確保されるコントロールエンドポイント領域EP0は、FIFO(リングバッファ構造のFIFO)メモリにより構成されるため、前回にEP0に書き込まれたデータは上書きにより消失してしまう。
【0046】
例えばホストからGET−DESCRIPTORを受信すると、デバイスのデータ転送制御装置を制御するファームウェアは、コントロールエンドポイント領域EP0にディスクリプタを書き込む。そしてデータ転送制御装置は、書き込まれたディスクリプタをホストに送信する。その後、ホストから例えばGET−STATUSを受信すると、データ転送制御装置のファームウェアは、コントロールエンドポイント領域EP0にデバイスのステータスを書き込む。すると、領域EP0に既に書き込まれていたディスクリプタは上書きにより消失してしまう。従って、その後、GET−DESCRIPTORをホストから再び受信した場合には、ファームウェアは、前回に書き込んだものと同内容のディスクリプタを領域EP0に再度書き込まなければならない。従って、ファームウェアの処理のリソースが無駄に消費されてしまう課題があることが判明した。
【0047】
4.データ転送制御装置及び電子機器の構成
図6に本実施形態のデータ転送制御装置100及びこれを含む電子機器110の構成例を示す。なおデータ転送制御装置100及び電子機器110は、図6の全ての構成要素を含む必要はなく、その一部を省略する構成にしてもよい。
【0048】
電子機器110は、データ転送制御装置100と、ASICなどで構成されるアプリケーションデバイス210(アプリケーション層のデバイス)と、CPU220と、ROM230と、RAM240と、表示部250と、操作部260を含む。なおこれらの構成要素の一部を省略する構成にしてもよい。ここでアプリケーションデバイス210としては、例えばハードディスクドライブや光ディスクドライブなどのメディアドライブを制御するデバイスや、プリンタやスキャナを制御するデバイスや、MPEGエンコーダ、MPEGデコーダ等を含むデバイスなどがある。
【0049】
CPU220(広義にはプロセッサ)は機器全体の制御などを行う。データ転送制御装置100を制御するファームウェア(プログラム)は、CPU220上で動作させることができる。ROM230は制御プログラムや各種のデータを記憶する。RAM240はCPU220やデータ転送制御装置100のワーク領域やデータ格納領域として機能する。表示部250は種々の情報をユーザに表示する。操作部260はユーザが電子機器を操作するためのものである。
【0050】
なお図6ではDMAバスとCPUバスが分離されているが、これらを共通化してもよい。またデータ転送制御装置100の制御に専用のCPUを設けてもよい。また本実施形態が適用できる電子機器としては、光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、TVチューナ、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなどの種々のものがある。
【0051】
データ転送制御装置100はトランシーバ120を含む。このトランシーバ120は、USB(シリアルバス)のFS(フルスピード)モードやHS(ハイスピード)モードでのデータ転送を実現する。このトランシーバ120としては、例えばUSB2.0の物理層回路や、論理層回路の一部についてのインターフェースを定義したUTMI(USB2.0 Transceiver Macrocell Interface)に準拠したマクロセルを用いることができる。このトランシーバ120には、例えば、差動信号DP、DMを用いてUSB上のデータを送受信するアナログフロントエンド回路(受信回路、送信回路)を含ませることができる。また、ビットスタッフィング、ビットアンスタッフィング、シリアル・パラレル変換、パラレル・シリアル変換、NRZIデコード、NRZIエンコード、サンプリングクロック生成などの処理を行う回路を含ませることができる。またデータ転送制御装置100が使用する動作クロックや、サンプリングクロックの生成に使用されるクロックなどを生成するPLLを含ませることができる。
【0052】
データ転送制御装置100は転送コントローラ130(Serial Interface Engine)を含む。この転送コントローラ130は、USBのパケット転送処理などの種々の処理を行う。この転送コントローラ130(第1のインターフェース)はパケットハンドラ回路132、サスペンド&レジューム制御回路134、トランザクション管理回路136を含む。ここでパケットハンドラ回路132は、ヘッダ及びデータからなるパケットの組み立て(生成)や分解などを行ったり、CRCの生成や解読を行う。またサスペンド&レジューム制御回路134は、サスペンドやレジューム時のシーケンス制御を行う。またトランザクション管理回路136は、トークン、データ、ハンドシェークなどのパケットにより構成されるトランザクションを管理する。そしてトランザクション管理回路136は、トークンパケットを受信した場合には、自分宛か否かを確認し、自分宛の場合には、データパケットの転送処理を行い、その後に、ハンドシェークパケットの転送処理を行う。
【0053】
データ転送制御装置100はアクセスコントローラ140を含む。このアクセスコントローラ130はデータバッファ160へのアクセス制御(書き込みアクセス制御、読み出しアクセス制御)を行う。より具体的には、アクセスコントローラ140は、データバッファ160にエンドポイント領域を確保したり管理する処理を行う。またデータバッファ160の書き込みアドレスや読み出しアドレスを生成し、データバッファ160へのデータの書き込み処理やデータバッファ160からのデータの読み出し処理を行う。またデータバッファ160に対するUSB側、DMA側、CPU側からのアクセスを調停する処理を行う。
【0054】
データ転送制御装置100はデータバッファ160を含む。このデータバッファ160(パケットバッファ、FIFOメモリ)は、USBを介して転送されるデータ(パケット)を一時的に記憶するものであり、USBでのデータ転送速度とDMAバスやCPUバスでのデータ転送速度との速度差を補償する機能などを有する。なおデータバッファ160の一部又は全部を外付けのメモリにより構成することも可能である。
【0055】
データ転送制御装置100はバルク転送管理回路170を含む。このバルク転送管理回路170は、USBにおけるバルク転送を管理する。またデータ転送制御装置180はDMAインターフェース180やCPUインターフェース190を含む。このDMAインターフェース180は、DMAバスに接続され、外部のアプリケーションデバイス210との間でのDMA転送(CPU220が介在しないデータ転送)を実現する。またCPUインターフェース190はCPUバスに接続され、CPU220とのインターフェース処理を実現する。
【0056】
そして本実施形態では、ディスクリプタ取得を要求するデバイスリクエスト(GET−DESCRIPTOR)をホストから受信すると、アクセスコントローラ140が、データバッファ160のコントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、ディスクリプタ(ディスクリプタデータ)を読み出す。そして転送コントローラ130が、読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信する。即ちディスクリプタを複数のデータパケットに分割して自動送信する。なお「自動送信」とは、データ送信中にファームウェア(CPU)が介在しないハードウェア回路による送信の意味である。
【0057】
5.データバッファ
図7(A)にデータバッファ160(FIFOメモリ)のメモリマップの例を示す。図7(A)に示すようにデータバッファ160は複数の領域(エンドポイント領域、ディスクリプタ領域)に分割され、複数のエンドポイント領域EP0、EPa、EPb、EPcが確保(allocate)される。より具体的にはデータバッファ160には、コントロール転送用のコントロールエンドポイント領域EP0(エンドポイント0の領域)が確保される。また領域EP0とは別の領域にディスクリプタ領域Descが確保される。更に汎用のエンドポイント領域EPa、EPb、EPcが確保される。なお汎用エンドポイント領域の数は3個に限定されず、1個、2個でもよく、或いは4個以上でもよい。
【0058】
これらのデータバッファ160の各領域(area)の境界は、レジスタ10、11、12、13、14により設定される。ここでレジスタ10は領域EP0のマックスサイズEP0MSを設定するためのレジスタ(ポインタレジスタ)であり、レジスタ11、12、13、各々、領域EPa、EPb、EPcの開始アドレスEPaSA、EPbSA、EPcSAを設定するためのレジスタである。またレジスタ14は領域EPcの終了アドレスEPcEAを設定するためのレジスタである。これらのレジスタ10〜14はデータ転送制御装置100のアクセスコントローラ140に含ませることができる。そしてファームウェア(CPU)がこれらのレジスタ10〜14にアドレスを設定することで、データバッファ160に領域Desc、EP0〜EPCが確保される。
【0059】
領域EP0は、USBで必須のエンドポイント0に使用する領域であり、IN及びOUTの両方向の転送に使用される。この領域EP0のサイズは、レジスタ10に設定されたエンドポイント0のマックスパケットサイズ(EP0MS)により一義に決められる。そして領域EP0で送受信できるパケットは例えば1つになる(シングルバッファ)。但し、領域EP0はこのような構成に限定されない。
【0060】
領域EPa、EPb、EPcは、エンドポイント番号と、IN又はOUTの転送方向を指定できる汎用のエンドポイント領域である。領域EPaの開始アドレス、終了アドレスはレジスタ11、12により設定され、領域EPbの開始アドレス、終了アドレスはレジスタ12、13により設定される。また領域EPcの開始アドレス、終了アドレスはレジスタ13、14により設定される。これらの領域EPa、EPb、EPcのサイズは、各転送モード(FSモード、HSモード)での最大パケットサイズ以上に設定される。
【0061】
ディスクリプタ領域Descの開始アドレス、終了アドレスは、レジスタ10、11により設定される。なお領域Descを、図7(A)に示す場所とは異なる場所(例えばフリー領域)に確保してもよい。
【0062】
本実施形態では図7(A)において、エンドポイント領域EP0、EPa、EPb、EPcは、リングバッファ構造のFIFO領域になっている。即ち、これらの各領域にデータが書き込まれる毎(或いは読み出される毎)に、書き込みポインタ(或いは読み出しポインタ)の指すアドレスがインクリメントされる(デクリメントでもよい)。そして書き込みポインタの指すアドレスが終了アドレスに達すると、書き込みポインタの指すアドレスは開始アドレスに戻される。このリングバッファ構造のFIFOでは、過去に各領域に書き込まれたデータは、その後にデータが上書きされることで消失することになる。
【0063】
一方、ディスクリプタ領域DescはFIFO領域になっておらず、ランダムアクセスが可能な領域になっている。即ちファームウェアは、領域Descの任意のアドレスからデータを読み出すことができる。また領域Descの任意のアドレスにデータを書き込むことができる。
【0064】
6.ディスクリプタ領域からの自動返信
本実施形態の特徴は、コントロールエンドポイント領域EP0とは別の領域にディスクリプタ領域Descを設けた点にある。この領域Descは、標準デバイスリクエストの動作の一部を簡易且つ高速に行うための領域である。本実施形態では、標準デバイスリクエストのうち、デバイス毎に一義に決定される内容を、電源投入後の初期設定時に領域Descにファームウェア(CPU)が書き込む。このようにすれば、この書き込んでおいた内容を問うデバイスリクエストがホストから来た場合に、読み出すべきディスクリプタの開始アドレスとサイズを設定するだけで、データ転送制御装置100が自動的にデバイスリクエストについてのデータステージのデータ転送を行うようになる。従って、ホストからデバイスリクエストを受けてから領域EP0にデータを書き込むといった処理を行わなくて済むため、簡易且つ高速にホストからのデバイスリクエストに応答できるようになる。
【0065】
より具体的には本実施形態では、電源投入後(バス接続後)に、ファームウェアが、ディスクリプタ領域Descに、図5に示すようなディスクリプタを書き込む。ここでファームウェアはCPU(電子機器の汎用のCPU又はデータ転送制御装置に専用のCPU)上で動作するソフトウェアである。
【0066】
またデータ転送制御装置100は図7(B)(C)に示すように、領域Descからのディスクリプタ返信のイネーブル又はディスエーブルを設定できるレジスタ147を含む。そして図7(B)に示すようにファームウェアによりレジスタ147に対してディスクリプタ返信のディスエーブル(ReplyDesc=0)が設定されると、アクセスコントローラ140はコントロールエンドポイント領域EP0にアクセスするようになる。即ちGET−DESCRIPTORをホストから受信した場合に領域EP0にアクセスする。
【0067】
一方、ファームウェアによりレジスタ147に対してイネーブル(ReplyDesc=1)が設定されると、アクセスコントローラ140は、領域EP0ではなく領域Descにアクセスするようになる。即ちGET−DESCRIPTORをホストから受信した場合に領域Descにアクセスし、領域Descに書き込まれたディスクリプタを読み出す。
【0068】
そして読み出されたディスクリプタは、転送コントローラ130により、複数のパケット(マックスパケットサイズのパケット及びショートパケット)に分割されてホストに送信される。
【0069】
従って、電源投入後にGET−DESCRIPTOR要求をホストが複数回行った場合にも、領域Descのディスクリプタが自動的にホストに返信されるようになる。従ってファームウェアは、領域Descにデスクリプタを、一旦、書き込めば、その後に複数回のGET−DESCRIPTOR要求が来た場合にも、領域EP0にディスクリプタを書き込まなくても済むようになる。従って、ファームウェアの処理負荷を軽減できると共にディスクリプタ転送を高速化できる。
【0070】
なおディスクリプタ領域Descは、図8(A)に示すようにデータバッファ160に確保してもよいが、図8(B)に示すように、データバッファ160のメモリとは物理的に別のメモリ169に確保してもよい。このような別メモリ169としては例えばROMやEEPROM(電気的にデータの消去が可能なメモリ)などを想定できる。このように、ROMやEEPROMなどの別メモリ169に領域Descを設定するようにすれば、電源が投入される毎に(バスが接続される毎に)、領域Descにディスクリプタを書き込まなくても済むようになる。
【0071】
なお、データバッファ160に領域Descを確保する場合には、コントロールエンドポイント領域EP0と、EP0の次のエンドポイント領域EPa(アドレス順で並べた時の次のエンドポイント領域)の間に、領域Descを確保することが望ましい。
【0072】
即ち、通常、コントロールエンドポイント領域EP0のサイズは、エンドポイント領域EPaよりも小さなサイズに設定される。例えばUSB2.0のHS(ハイスピード)モードでは、領域EP0のサイズは64バイトに設定される一方で、領域EPaのサイズは例えば512バイト(最大パケットサイズ)に設定される。この場合に図9(A)に示すように、領域EP0に隣接するように領域EPaを確保すると、領域境界が、EPaSA=64、EPbSA=576というように、ファームウェアにとって取り扱いにくい値になってしまう。
【0073】
これに対して図9(B)では、領域EP0と次の領域EPaとの間の空き領域に、ディスクリプタ領域Descを確保している。即ち領域EP0のサイズが、EP0の次の領域EPaのサイズよりも小さい場合に(EP0の終了アドレスが、EPaの開始アドレスよりも小さい場合に)、EP0とEPaの間の空き領域にDescを確保する。このようにすれば、領域境界を、例えばEPaSA=512、EPbSA=1024というように、512(最大パケットサイズ)の倍数に設定することが可能になり、ファームウェアにとって取り扱い値に設定できる。これによりファームウェアの処理の簡素化等を図れる。
【0074】
なお、領域Descを例えば、領域EPa、EPb間や領域EPb、EPc間に確保したり、領域EPcの上のフリー領域に確保するようにしてもよい。
【0075】
7.詳細例
図10にアクセスコントローラ140の詳細な構成例を示す。アクセスコントローラ140はエンドポイント管理回路141とバッファ管理回路150を含む。エンドポイント管理回路141は、データバッファ160の各記憶領域の入り口となるエンドポイントを管理する回路である。バッファ管理回路150は、データバッファ160へのアクセス(書き込みアクセス、読み出しアクセス)を管理する回路である。より具体的にはバッファ管理回路150は、書き込みアドレスや読み出しアドレスを生成し、データバッファ160へのデータの書き込み処理やデータバッファ160からのデータの読み出し処理を行う。
【0076】
転送コントローラ130(トランザクション管理回路136)は、USBを介して転送される書き込みデータUSBWrDataをデータバッファ160に出力し、読み出しデータUSBRdDataをデータバッファ160から入力する。また転送コントローラ130は、バッファ管理回路150に対して書き込み要求信号USBWrReq、読み出し要求信号USBRdReqを出力し、バッファ管理回路150から書き込みアクノリッジ信号USBWrAck、読み出しアクノリッジ信号USBRdAckを受ける。
【0077】
また転送コントローラ130は、エンドポイント管理回路141に対して、トランザクション終了信号TranEndPulse、トランザクションステータス信号TranStatus、エンドポイント番号指定信号EPnum、転送方向指定信号Directionを出力し、エンドポイント管理回路141から、エンドポイント存在信号EPexistを受ける。
【0078】
エンドポイント管理回路141は、エンドポイント(EP0、EPa、EPb、EPc)の属性情報(エンドポイント番号、最大パケットサイズ等)を記述するためのレジスタ(レジスタセット)142、143、144、145を含む。またエンドポイント管理回路141は、ディスクリプタ領域用のレジスタ146(Desc)を含む。そしてこのレジスタ146は、レジスタ147、148、149により構成される。
【0079】
レジスタ147は、ディスクリプタ領域Descからのディスクリプタ返信のイネーブル(ReplyDesc=1)又はディスエーブル(ReplyDesc=0)を設定するためのレジスタである。レジスタ148は、領域Descからのディスクリプタの読み出し開始アドレス(DescAdrs)を設定するためのレジスタである。レジスタ149は、領域Descからのディスクリプタの読み出しサイズ(DescSize)を設定するためのレジスタである。
【0080】
ファームウェアによりレジスタ147にイネーブル(ReplyDesc=1)が設定されると、アクセスコントローラ140(バッファ管理回路150)が、レジスタ148に設定された開始アドレス(DescAdrs)から、レジスタ149に設定されたサイズのディスクリプタを読み出す。そして転送コントローラ130が、読み出されたディスクリプタデータのパケットをホストに送信する。
【0081】
図5に示すようにディスクリプタには、デバイスディスクリプタ、コンフィギュレーションディスクリプタ、インターフェースディスクリプタ等の階層化された複数種類のディスクリプタがある。このようにディスクリプタが階層化されている場合には、レジスタ148、149を設けることで、処理を効率化できる。
【0082】
即ち電源投入後(バス接続後)にファームウェアは図5の全てのディスクリプタを領域Descに書き込んでおく。そしてホストが例えばデバイスディスクリプタの報告を要求して来た場合には、レジスタ148、149にデバイスディスクリプタの開始アドレスとサイズをファームウェアが設定する。このようにすれば、領域Descに書き込まれている全ディスクリプタのうちデバイスディスクリプタだけをホストに送信できるようになる。またホストがインターフェースディスクリプタの報告を要求して来た場合には、レジスタ148、149にインターフェースディスクリプタの開始アドレスとサイズをファームウェアが設定する。このようにすれば、領域Descに書き込まれている全ディスクリプタのうちインターフェースディスクリプタだけをホストに送信できるようになる。
【0083】
エンドポイント管理回路141は、転送コントローラ130からの各種信号とレジスタの情報とに基づいて、エンドポイント選択信号EPsel、ディスクリプタ返信イネーブル信号ReplyDesc、ディスクリプタアドレス信号DescAdrs、ディスクリプタサイズ信号DescSizeを生成して、バッファ管理回路150に出力する。またエンドポイント管理回路141は、バッファ管理回路150に対して、CPUからの書き込み要求信号CPUWrReq、読み出し要求信号CPURdReqを出力し、バッファ管理回路150から、CPUへの書き込みアクノリッジ信号CPUWrAck、読み出しアクノリッジ信号CPURdAckを受ける。
【0084】
バッファ管理回路150は、転送コントローラ130やエンドポイント管理回路141からの書き込み・読み出し要求信号や、エンドポイント管理回路141からの信号EPsel、ReplyDesc、DescAdrs、DescSizeを受け、アドレスAddressや書き込みパルスxWR(xは負論理を意味する)をデータバッファ160に出力する。このバッファ管理回路150は、アドレス生成回路151、152、153、154、155とセレクタ156を含む。
【0085】
ここDescアドレス生成回路151は、領域Descについての、USBWrData、USBRdDataの書き込み又は読み出しアドレスAD0を生成する。この場合のアドレス生成は信号DescAdrs、DescSizeなどに基づいて行う。即ちDescAdrsで特定される開始アドレスから、DescSizeで特定される終了アドレスに至るまで、アドレスAD0を順次インクリメント(又はデクリメント)する。
【0086】
またアドレス生成回路152、153、154、55は、各々、領域EP0、EPa、EPb、EPcについての、USBWrData、USBRdDataの書き込み又は読み出しアドレスAD1、AD2、AD3、AD4を生成する。具体的には、各領域の開始アドレス(図7(A)参照)からアドレスAD1、AD2、AD3、AD4を順次インクリメント(又はデクリメント)する。
【0087】
セレクタ156は、信号EPselに基づいてアドレスAD0〜AD4のいずれかを選択し、Addressとしてデータバッファ160に出力すると共に、書き込みパルスxWRをデータバッファ160に出力する。具体的には、EPselにより領域Descが選択指示された場合にはAD0を選択し、領域EP0が選択指示された場合にはAD1を選択し、領域EPaが選択指示された場合にはAD2を選択し、領域EPbが選択指示された場合にはAD3を選択し、領域EPcが選択指示された場合にはAD4を選択して、Addressとしてデータバッファ160に出力する。
【0088】
8.動作
次に本実施形態のデータ転送制御装置100の詳細な動作例について説明する。図11はデータステージの最終パケットがショートパケット(ゼロ長パケットを含む)で終わった場合のパケット転送の様子を示した図である。
【0089】
まず図11のA1に示すようにセットアップステージにおいてホストからデバイス(データ転送制御装置100)にGET−DESCRIPTOR要求が送信される。次にA2に示すようにファームウェア(F/W)が図10のレジスタ147、148、149にReplyDesc、DescAdrs、DescSizeを設定する。するとA3、A4に示すように、データステージにおいて、ホストからINトークパケットが受信される毎に、領域Descから読み出されたディスクリプタが、最大パケットサイズのデータパケットに分割されて、ホストに送信される。そしてA5に示すように、最後のトランザクションでの残りデータサイズがマックパケットサイズに満たない場合には、自動的にショートパケットが生成されてホストに送信される。するとA6に示すようにディスクリプタ返信完了信号DescCmpがハードウェア(データ転送制御装置100)によりアクティブにされ、ディスクリプタの自動送信が完了する。そしてA7に示すようにステータスステージに移行する。
【0090】
図12は、図11のA3、A4の期間での詳細な信号波形例である。図12ではマックパケットサイズを64バイトと仮定している。
【0091】
図12のB1で信号ReplyDescがアクティブ(「1」)に変化し、これによりB2に示すように信号EPselが、領域EP0の選択指示から領域Descの選択指示に切り替わる。またB3、B4に示すようにAddresとして、Descアドレス生成回路151からのAD0が選択出力されるようになる。
【0092】
なおB5、B6に示すように、ディスクリプタアドレスDescAdrsにはa0が設定され、ディスクリプタサイズDescSizeにはNが設定されている。従ってB4に示すようにAD0は、a0を開始アドレスとして順次インクリメントされる。
【0093】
図12のB7に示すように、USB(DP、DM)上においてホストからINトークンを受信すると、B8に示すようにUSBRdReq、USBRdAckがアクティブになり、B9に示すようにうUSBRdDATAがデータバッファ160から読み出される。これによりB10に示すように、USB上でINデータがデバイス(データ転送制御装置100)からホストに転送される。そしてB11に示すようにホストからACKが返ってくると、B12に示すようにトランザクション終了信号TranEndPulseがアクティブになり、B11に示すように信号TranStatusがトランザクションの成功を示すようになる。これにより図11のA3に示すINデータのトランザクションが終了し、次のトランザクションに移行する。
【0094】
図13は、図11のA5、A7の期間での詳細な信号波形例である。図13のC1に示すように最終のショートパケットがUSB上で転送され、C2に示すようにホストからACKが返ってくると、C3に示すように信号TranEndPulseがアクティブになる。またこの時、DescSizeで指定されたサイズのディスクリプタの転送が完了したため、C4に示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりハードウェア回路によるディスクリプタの自動返信処理が完了する。そしてC5に示すようにホストからセロ長のデータが転送されるステータスステージに移行する。
【0095】
図14は、データステージの最終トランザクションでショートパケットが転送されない場合のパケット転送の様子を示した図である。図14のD1の最終トランザクションにおいて最大パケットサイズのINデータパケットが転送される以外は、図11と同様である。
【0096】
図15、図16はデータステージの途中でホストからSETUPトークンパケットやOUTトークンパケットを受信した場合のパケット転送の様子を示した図である。図15のE1、図16のF1に示すように本実施形態では、ディスクリプタの自動返信のデータステージにおいて、ホストからSETUPトークンパケットやOUTトークンパケットを受信すると、図15のE2、図16のF2示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりディスクリプタのデータパケットの自動送信が停止する。即ちディスクリプタサイズDescSizeのディスクリプタの送信を完了する前に、ホストからSETUPトークンパケットやOUTトークンパケットを受信した場合に、ディスクリプタの自動返信が停止する。このようにすることで、ディスクリプタの自動返信中も、ホストからのSETUPトークンパケットやOUTトークンパケットを受け付けることが可能になり、適正なデータ転送処理を実現できる。
【0097】
図17は、図15のE3、E4の期間での詳細な信号波形例である。図17のG1では信号TranEndPulseがアクティブになって、前回のトランザクションが終了している。その後、G2に示すように、USB上においてホストからSETUPトークンを受信すると、G3に示すようにディスクリプタ返信完了信号DescCmpがアクティブになる。これによりG4に示すようにReplyDescが「0」(ディスエーブル)に戻され、ディスクリプタの自動返信機能が停止する。そしてG5に示すように信号EPselも、領域Descの選択指示から領域EP0の選択指示に切り替わる。これにより、コントロールエンドポイント領域EP0を用いたコントロール転送が可能になり、適正なデータ転送を実現できる。
【0098】
以上のように説明した本実施形態のデータ転送制御装置100によれば次のような効果を得ることができる。
【0099】
例えば本実施形態の比較例となる手法では、ホストからINトークンを受信する毎にコントロールエンドポイント領域EP0にデータを書き込んでINトークンに応答するという処理を、全てのディスクリプタの転送完了まで繰り返さなければならない。従ってファームウェアの処理負荷が過大になる。
【0100】
これに対して本実施形態では、開始アドレスDescAdrs、サイズDescSizeを設定し、ReplyDescをイネーブルにするだけで、領域Descに予め書き込んでおいたディスクリプタが、ホストからのINトークンを受信する毎(INトランザクション毎)に最大パケットサイズのパケットに自動分割されて、ホストに自動送信される。また最大パケットサイズに対して端数が生じる場合には、自動的にショートパケットが生成されてホストに送信される。従ってファームウェアは、ホストからのINトークン毎にデータを書き込むという作業を省略できるようになり、上述の比較例に比べてファームウェアの処理負荷を格段に軽減できる。
【0101】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0102】
例えばデータ転送制御装置、電子機器、アクセスコントローラ、転送コントローラの構成は、図6、図10等で説明した構成に限定されず、種々の変形実施が可能である。
【0103】
また、明細書又は図面中の記載において広義な用語(プロセッサ、シリアルバス、電子機器等)として引用された用語(CPU、USB、周辺機器等)は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【0104】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0105】
また本発明はUSB1.1、USB2.0を発展した規格やUSBと同様の思想に基づく規格に準拠したデータ転送制御装置にも適用できる。例えば本発明はOTG(On−The−Go)規格に準拠したデータ転送制御装置にも適用できる。OTG(デュアルロールデバイス)に本発明を適用する場合には、ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラをデータ転送制御装置に含ませる。またホスト動作時にホストとしてのデータ転送を行うホストコントローラと、ペリフェラル動作時にペリフェラルとしてのデータ転送を行うペリフェラルコントローラを、転送コントローラに含ませる。そしてこのペリフェラルコントローラが、ペリフェラル動作時に、ディスクリプタの自動返信処理を行うようにすればよい。
【図面の簡単な説明】
【図1】エンドポイントについての説明図である。
【図2】コントロール転送についての説明図である。
【図3】デバイスリクエストの代表例である。
【図4】SETUPデータのフォーマット例である。
【図5】ディスクリプタの例である。
【図6】本実施形態のデータ転送制御装置、電子機器の構成例である。
【図7】図7(A)(B)(C)はメモリマップ等の説明図である。
【図8】図8(A)(B)はディスクリプタ領域確保の説明図である。
【図9】図9(A)(B)もディスクリプタ領域確保の説明図である。
【図10】アクセスコントローラの詳細な構成例である。
【図11】本実施形態でのパケット転送の様子を示す説明図である。
【図12】本実施形態の詳細な動作を説明する信号波形図である。
【図13】本実施形態の詳細な動作を説明する信号波形図である。
【図14】本実施形態でのパケット転送の様子を示す説明図である。
【図15】本実施形態でのパケット転送の様子を示す説明図である。
【図16】本実施形態でのパケット転送の様子を示す説明図である。
【図17】本実施形態の詳細な動作を説明する信号波形図である。
【符号の説明】
100 データ転送制御装置、110 電子機器、120 トランシーバ、
130 転送コントローラ、132 パケットハンドラ回路、
134 サスペンド&レジューム回路、136 トランザクション管理回路
140 アクセスコントローラ、141 エンドポイント管理回路、
142〜146 レジスタ、150 バッファ管理回路、
151〜155 アドレス生成回路、156 セレクタ、
160 データバッファ、170 バルク転送管理回路、
180 DMAインターフェース、190 CPUインターフェース、
210 アプリケーションデバイス、220 CPU、230 ROM、
240 RAM、250 表示部、260 操作部、
Claims (12)
- バスを介したデータ転送のためのデータ転送制御装置であって、
コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域が確保されるデータバッファと、
ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出すアクセスコントローラと、
読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信する転送コントローラと、
を含むことを特徴とするデータ転送制御装置。 - 請求項1において、
前記転送コントローラが、
ディスクリプタのデータパケットを送信するデータステージにおいて、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止することを特徴とするデータ転送制御装置。 - 請求項1又は2において、
ディスクリプタ領域からのディスクリプタ返信のイネーブル、ディスエーブルが設定されるディスクリプタ返信イネーブルレジスタを含み、
前記アクセスコントローラが、
前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のイネーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記ディスクリプタ領域にアクセスし、
前記ディスクリプタ返信イネーブルレジスタにディスクリプタ返信のディスエーブルが設定された場合には、ディスクリプタ取得のデバイスリクエストの受信時に、前記コントロールエンドポイント領域にアクセスすることを特徴とするデータ転送制御装置。 - 請求項1乃至3のいずれかにおいて、
前記ディスクリプタ領域からのディスクリプタの読み出し開始アドレスが設定されるデイスクリプタアドレスレジスタと、
前記ディスクリプタ領域からのディスクリプタの読み出しサイズが設定されるディスクリプタサイズレジスタとを含み、
前記アクセスコントローラが、
前記ディスクリプタアドレスレジスタに設定された開始アドレスから、前記ディスクリプタサイズレジスタに設定されたサイズのディスクリプタを読み出し、
前記転送コントローラが、
読み出されたディスクリプタのデータパケットをホストに自動送信することを特徴とするデータ転送制御装置。 - 請求項4において、
前記転送コントローラが、
前記ディスクリプタサイズレジスタに設定されるサイズのディスクリプタの送信完了前に、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止することを特徴とするデータ転送制御装置。 - 請求項1乃至5のいずれかにおいて、
前記ディスクリプタ領域が、前記データバッファに確保されることを特徴とするデータ転送制御装置。 - 請求項6において、
コントロールエンドポイント領域と次のエンドポイント領域との間に空き領域がある場合に、その空き領域に、前記ディスクリプタ領域が確保されることを特徴とするデータ転送制御装置。 - 請求項1乃至5のいずれかにおいて、
前記ディスクリプタ領域が、前記データバッファのメモリとは別のメモリに確保されることを特徴とするデータ転送制御装置。 - 請求項1乃至8のいずれかのデータ転送制御装置と、
前記データ転送制御装置を制御するプロセッサと、
を含むことを特徴とする電子機器。 - 請求項9において、
前記プロセッサが、
電子機器への電源投入後に、前記ディスクリプタ領域にディスクリプタを書き込むことを特徴とする電子機器。 - バスを介したデータ転送のためのデータ転送制御方法であって、
コントロール転送用のコントロールエンドポイント領域を含む複数のエンドポイント領域を、データバッファに確保し、
ディスクリプタ取得のデバイスリクエストをホストから受信した場合に、前記コントロールエンドポイント領域とは別の領域に確保されたディスクリプタ領域にアクセスし、前記ディスクリプタ領域からディスクリプタを読み出し、
読み出されたディスクリプタのデータパケットを、INトークンパケットをホストから受信する毎にホストに自動送信することを特徴とするデータ転送制御方法。 - 請求項11において、
ディスクリプタのデータパケットを送信するデータステージにおいて、ホストからSETUPトークンパケット又はOUTトークンパケットを受信した場合に、ディスクリプタのデータパケットの自動送信を停止することを特徴とするデータ転送制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003088222A JP2004295594A (ja) | 2003-03-27 | 2003-03-27 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003088222A JP2004295594A (ja) | 2003-03-27 | 2003-03-27 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004295594A true JP2004295594A (ja) | 2004-10-21 |
Family
ID=33402412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003088222A Withdrawn JP2004295594A (ja) | 2003-03-27 | 2003-03-27 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004295594A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007011780A (ja) * | 2005-06-30 | 2007-01-18 | Seiko Epson Corp | データ転送制御装置及び電子機器 |
-
2003
- 2003-03-27 JP JP2003088222A patent/JP2004295594A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007011780A (ja) * | 2005-06-30 | 2007-01-18 | Seiko Epson Corp | データ転送制御装置及び電子機器 |
US7730233B2 (en) | 2005-06-30 | 2010-06-01 | Seiko Epson Corporation | Data transfer control device and electronic instrument |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3649226B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US6947442B1 (en) | Data transfer control device and electronic equipment | |
JP3636157B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US7237047B2 (en) | Data transfer control device, electronic equipment, and data transfer control method | |
EP1389760B1 (en) | Data transfer control system, program and data transfer control method | |
KR100485294B1 (ko) | 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법 | |
US7505461B2 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
JP2002342261A (ja) | データ転送制御装置及び電子機器 | |
EP1389761B1 (en) | Data transfer control system, program and data transfer control method | |
US20050044291A1 (en) | Data transfer control device and electronic equipment | |
JP2007501472A (ja) | 転送ディスクリプタ用メモリを備えるusbホストコントローラ | |
JP3636158B2 (ja) | データ転送制御装置及び電子機器 | |
EP1253520B1 (en) | Apparatus for issuing command for high-speed serial interface | |
JP3614161B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
EP1351459B1 (en) | Data transfer control device and electronic equipment | |
JP2004295594A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US20040230734A1 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
JP4127071B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051104 |
|
A977 | Report on retrieval |
Effective date: 20080801 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090202 |