JP2004070423A - Usbコントローラおよびそのデータ転送制御方法 - Google Patents
Usbコントローラおよびそのデータ転送制御方法 Download PDFInfo
- Publication number
- JP2004070423A JP2004070423A JP2002225088A JP2002225088A JP2004070423A JP 2004070423 A JP2004070423 A JP 2004070423A JP 2002225088 A JP2002225088 A JP 2002225088A JP 2002225088 A JP2002225088 A JP 2002225088A JP 2004070423 A JP2004070423 A JP 2004070423A
- Authority
- JP
- Japan
- Prior art keywords
- usb
- fifo memory
- data
- endpoint
- controller
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】FIFOメモリの一部を複数のエンドポイントで共有し、外部のユーザ回路、USBホストから共有するFIFOメモリを使用するエンドポイントをデータ転送の状況に応じて変更することで、回路規模を小さく抑えつつデータ転送速度を向上させるUSBコントローラとそのデータ転送制御方法を提供することにある。
【解決手段】1つのエンドポイント13に対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリ(20−a,20−b,20−c)を他のエンドポイント13と共有し、バッファメモリ(20−a,20−b,20−c)が接続されるエンドポイント13を変更可能としたUSBコントローラ。
【選択図】 図3
【解決手段】1つのエンドポイント13に対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリ(20−a,20−b,20−c)を他のエンドポイント13と共有し、バッファメモリ(20−a,20−b,20−c)が接続されるエンドポイント13を変更可能としたUSBコントローラ。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、USBインタ−フェースを有する機器に応用できるUSBコントローラおよびそのデータ転送制御方法に関するものである。
【0002】
【従来の技術】
近年、PC(パソコン)と周辺機器を接続するインターフェースとしてUSB(Universal Serial Bus)が使用されている。USBではPCが1つしか存在しないホストとなり、ホストの下に複数のデバイスがツリー状に接続され、デバイスのUSBコントローラがそれぞれ固有のアドレスを有している。
本発明に関連する従来技術として、1つのFIFOメモリを複数のエンドポイントで共有するという点で特開2001−512870公報のユニバーサルシリアルバス(USB)デバイスコントローラが挙げられる。また、1つのエンドポイントに複数のFIFOメモリを対応させた既存の製品としては沖電気のML60851C等があげられる。
図5はUSBバスの接続概念図である。図5において、ルートHUB(マルチポートリピータ)機能を有するUSBホスト1、HUB2a、2b、デバイス3(3a〜3d)が存在している。このようにUSBでは1つのホストの下に複数のHUBまたはデバイスがツリー状に接続される。
図6はデバイスの構成を示す概略図である。デバイス3(3a〜3d)は図6のようにUSBコントローラ21、ターゲットの機器22から構成される。
ホストであるPCは固有のアドレスのUSBコントローラ21に対してデータ送受信の要求とデータの送受信を行う。USBコントローラ21ではUSBホスト1からのデータ送受信の要求を受信した時に、割込み信号等の手段でユーザ回路に対してUSBホスト1からデータ送受信の要求を受けたことを示す。
そして、ユーザ回路はUSBコントローラ21からデータ送受信の要求の内容を読み出して、USBコントローラ21がUSBホスト1から受信したデータを読み出し、また、USBホスト1に対する送信データをUSBコントローラ21に書き込む。
なお、USBコントローラ21はUSBホスト1に対してデータを送信する、または、USBホスト1からのデータを受信する、通常FIFOメモリ(First In First Out Memory)からなるエンドポイントを複数有している(その数は規格によって決められている)。そして、デバイス3のUSBコントローラ21のローカルバスに接続される機器22は、エンドポイントのFIFOメモリに対してアクセスすることになる。
ところで、USBバスでのデータの転送は、パケットという単位で行われる。このパケットには転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果(成功・失敗)を送るハンドシェイクパケットの種類がある。また、転送の種類も、エンドポイントゼロを介して行われるデバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのようにまとまった量のデータを転送するバルク転送、マウス、キーボードのステータスを送るような定周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送の4つのデータ転送のモードがある。
【0003】
図7はUSBコントローラの構成例を示す回路図である。図7において、USBトランシーバ11はUSBバスに接続され、図中には示されないUSBホストから送信されたパケットをUSBバスの信号から論理信号に変換して次に説明するシリアル入力エンジン12に出力する。それと同時に、シリアル入力エンジン12からUSBホストに送信するパケットを論理信号からUSBバスの信号に変換してUSBホストに出力する。
シリアル入力エンジン12はUSBトランシーバ11から入力するUSBホストから送信されたパケットのうちトークンパケット、ハンドシェークパケットをデコードする。シリアル入力エンジン12はデコードされたパケットを基にUSBホスト1との通信制御を行い、必要に応じてハンドシェークパケットをUSBトランシーバ11に出力する。
それとともに、USBホストに出力するデータを以下で説明するエンドポイント群13から読み出して、制御データを付加し、データパケットとしてUSBトランシーバ11に出力する。また、シリアル入力エンジン12はUSBトランシーバ11から入力するUSBホストからのデータパケットの中のデータをエンドポイント群13(13−0,13−1...13n)に書き込む制御を行う。エンドポイント群13はローカルバスから受信しUSBホストへ送信するデータをバッファリングするとともに、USBホストから受信しローカルバスに送信するデータをバッファリングする。
I/Oコントローラ15は図中には示されないユーザ回路とエンドポイント群13、次に述べるレジスタの間でのデータ転送の制御を行う。レジスタ16はUSBコントローラ内部モジュールの各種設定を行い、またコントロール転送の自動応答リクエストを格納しておくレジスタである。
エンドポイント群13は、エンドポイントゼロ(図中の13−0)とコントロール転送以外の転送に使用される複数のエンドポイント13−1,・・・,13−nから構成される。ここでエンドポイントゼロ13−0はコントロール転送で使用される双方向のエンドポイントでUSBホストから見た場合のエンドポイント番号は0に固定されている。
それを除いては単一の転送方向(USBホストに対して出力または入力)のエンドポイントで、転送方法、転送の向き、USBホストから見た場合のエンドポイント番号は0以外に固定、もしくは、レジスタ16にユーザが設定して使用する。
【0004】
図8はエンドポイントの構成例を示す回路図である。図8において、FIFOメモリ(先入れ先出し)メモリ20−0、20−1はUSBホストに対して送信するデータ、USBホストから受信したデータを格納する。書き込みコントローラ21はFIFOメモリに対するデータ書き込みの制御を行う。読み出しコントローラ22はFIFOメモリからのデータ読み出しの制御を行い、マルチプレクサ23はデータを読み出すFIFOメモリを選択する。
図8のエンドポイント13は、2つのFIFOメモリ(20−0,20−1)を有し、これらのFIFOメモリの一方をデータ書き込み用、他方をデータ読み出し用とするものである。そして、書き込みコントローラ21と読み出しコントローラ22の間でFIFOメモリ(20−0,20−1)の状態を表す信号を授受する。
データ書き込み用に設定されたFIFOメモリへのデータ書き込み終了時に、データ読み出し用に設定されているFIFOメモリからのデータ読み出しが終了しているときは直ぐに、また、データ読み出しが終了していないときは、データ読み出しの終了を待って、データ書き込み用FIFOメモリとデータ読み出し用FIFOメモリを切り換え、データ転送速度を向上させる。
【0005】
【発明が解決しようとする課題】
このようなエンドポイント構成を有するUSBコントローラとしては例えば沖電気のML60851Cが上げられる。しかし、この構成のエンドポイントではエンドポイント毎にFIFOメモリを2つ使用するため、エンドポイントの数が多くなると回路規模が大きくなるという問題点があった。
そこで、本発明の目的は、FIFOメモリの一部を複数のエンドポイントで共有し、外部のユーザ回路、USBホストから共有するFIFOメモリを使用するエンドポイントをデータ転送の状況に応じて変更することで、回路規模を小さく抑えつつデータ転送速度を向上させるUSBコントローラとそのデータ転送制御方法を提供することにある。
【0006】
【課題を解決するための手段】
前記の課題を解決するために、請求項1記載の発明では、USBインタ−フェースを有する機器に応用できるUSBコントローラにおいて、USBバスに接続されUSBホストから送信されたバケットを論理信号に変換するUSBトランシーバと、該USBトランシーバから入力する前記USBホストから送信されたバケットをデコードするシリアル入力エンジンと、複数のエンドポイントを有するエンドポイント群と、ユーザ回路、前記エンドポイント群、及びレジスタ間でのデータ転送の制御を行うI/Oコントローラと、を備え、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリが接続されるエンドポイントを変更可能としたことを特徴とする。
請求項2記載の発明では、共有するバッファメモリが接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換える請求項1記載のUSBコントローラを主要な特徴とする。
請求項3記載の発明では、共有するバッファメモリが接続されるエンドポイントを内部のレジスタで切り換える請求項1記載のUSBコントローラを主要な特徴とする。
請求項4記載の発明では、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換える請求項3記載のUSBコントローラを主要な特徴とする。
請求項5記載の発明では、USBホストからUSBコントローラに対して送られるUSBデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへ接続されるエンドポイントを切り換える請求項3記載のUSBコントローラを主要な特徴とする。
請求項6記載の発明では、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更する、USBコントローラのデータ転送制御方法を最も主要な特徴とする。
【0007】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。本発明のUSBコントローラの全体構成は基本的には図7に示される従来のUSBコントローラと同一であるが、特徴的なことは2つのエンドポイントで1つのFIFOメモリを共有するものである。
図1は本発明のUSBコントローラのエンドポイントをイン転送用として説明する回路図である。図1において、シリアル入力エンジン12、I/Oコントローラ15、レジスタ16、そしてエンドポイント群13を示し、ここでは図を簡略化するためFIFOメモリ(バッファメモリ)を共有するエンドポイントのみを示す。
エンドポイント群13において、エンドポイント13−aはイン転送のエンドポイント、エンドポイント13−bはアウト転送のエンドポイントで、それぞれ1つの占有FIFOメモリ(バッファメモリ)と1つの共有FIFOメモリ(バッファメモリ)を有するエンドポイントである。FIFOメモリ20−aはエンドポイント13−aの占有FIFOメモリ、FIFOメモリ20−bはエンドポイント13−bの占有FIFOメモリ、FIFOメモリ20−cはエンドポイント13−aとエンドポイント13−bの共有FIFOメモリ(バッファメモリ)である。
図1では、イン転送でエンドポイント13−aからUSBホスト(図示せず)に送るデータ数がアウト転送でエンドポイント13−bがUSBホストから受け取るデータ数より多い。この場合は図のようにFIFOメモリ20−cをエンドポイント13−aで使用して、エンドポイント13−aではFIFOメモリ20−aとFIFOメモリ20−cでユーザ回路からのデータを交互に受け取りUSBホストに送り、エンドポイント13−bではFIFOメモリ20−bのみでUSBホストからのデータを受け取りユーザ回路(図示せず)に送る。
【0008】
図2は本発明のUSBコントローラのエンドポイントをアウト転送用として説明する路図である。図2では、アウト転送でエンドポイント13−bがUSBホストから受け取るデータ数がイン転送でエンドピント13−aからUSBホストに送るデータ数より多い。この場合は図のようにFIFOメモリ20−cをエンドポイント13−bで使用して、エンドポイント13−bではFIFOメモリ20−bとFIFOメモリ20−cでUSBホストからのデータを交互に受け取りユーザに送り、エンドポイント13−aではFIFOメモリ20−aのみでユーザ回路からのデータを受け取りUSBホストに送る。
このようなイン転送用のエンドポイントとアウト転送用のエンドポイントを同時に使用しUSBホストへのデータ送信とUSBホストからのデータ受信のデータ数に差ができる例としてはHDD、光ディスク等のストレージデバイスで大容量のデータ読み出し、データ書き込みを行う場合やFAX/スキャナ機能付きのプリンタでのデータスキャン、プリント時が上げられる。
また、ここでは説明しないが、例えば1つのUSBコントローラに対して複数のユーザ回路が接続されるような場合などでUSBホストへのデータ送信を行うエンドポイント同士、USBホストからのデータ受信を行うエンドポイント同士でデータ数に差ができる場合も有り得る。
【0009】
図3は本発明のUSBコントローラのエンドポイントの実施の形態を示す回路図である。図3は2つのエンドポイントEPA、EPBで1つのFIFOメモリメモリを共有する場合を示している。
図3において、20−aはEPAのデータを格納するFIFOメモリ、20−bはEPBのデータを格納するFIFOメモリそして20−cはEPA、EPBで共有し、データ転送の状況に応じてどちらかのデータを格納するようにユーザ回路またはUSBホストなどの外部の回路によって制御されるFIFOメモリである。
書き込みコントローラ21−aはEPAのFIFOメモリに対するデータ書き込みの制御を行い、書き込みコントローラ21−bはEPBのFIFOメモリに対するデータ書き込みの制御を行う。読み出しコントローラ22−aはEPAのFIFOメモリからのデータ読み出しの制御を行い、読み出しコントローラ22−bはEPBのFIFOメモリからのデータ読み出しの制御を行う。
マルチプレクサ23−aはEPAのデータを読み出すFIFOメモリを選択し、マルチプレクサ23−bはEPBのデータを読み出すFIFOメモリを選択する。また、マルチプレクサ24はEPA、EPBで共有するFIFOメモリに入力する書き込み制御信号を切り換え、マルチプレクサ25はEPA、EPBで共有するFIFOメモリに入力する書き込みデータ信号を切り換え、そしてマルチプレクサ26はEPA、EPBで共有するFIFOメモリに入力する読み出し制御信号を切り換える。
【0010】
図4はエンドポイントでのデータの読み出し/書き込みを説明するフローチャートである。図3の構成のエンドポイントでのデータの読み出し/書き込みを図4のフローチャートに基づいて説明する。
まず、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントがUSBコントローラの外部のユーザ回路またはUSBコントローラのレジスタから入力する共有FIFOメモリ制御信号によってEPAに設定される場合(S11でYes)、書き込みコントローラ21−aからの制御信号によってマルチプレクサ24はEPAの書き込み制御信号を出力し、マルチプレクサ25はFIFOメモリ20−aに入力するデータ信号と同一のEPAの書き込みデータ信号を出力する。
読み出しコントローラ22−aからの制御信号によってマルチプレクサ26は読み出しコントローラ22−aから出力されるEPAの読み出し制御信号を出力し、これらはFIFOメモリ20−cに接続される(S12)。
そして、FIFOメモリ20−cがEPAに接続される場合、書き込みコントローラ21−aはEPAの書き込み制御信号をFIFOメモリ20−aに出力するように設定される。読み出しコントローラ22−aは、EPAの読み出し制御信号をFIFOメモリ20−cに出力するように設定される。それと同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
この後EPAの書き込み制御信号を書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aはFIFOメモリ20−aに対して書き込み制御信号を出力し、FIFOメモリ20−aでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S14−S15でNo)。
FIFOメモリ20−aへのデータ書き込みが終了すると(S15でYes)、FIFOメモリ20−cでのデータ読み出しが終了しているかどうかの判断を行う。最初は読み出しコントローラ22−aから入力する読み出し側FIFOメモリ(FIFOメモリ20−c)には元々データが入っておらず、その状態を示す信号がデータ読み出し終了であるので(S16でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S17でYes)、書き込みコントローラ21−aは、書き込み制御信号を出力するFIFOメモリを、FIFOメモリ20−aからFIFOメモリ20−cに変更する。
【0011】
読み出しコントローラ22−aは、読み出し制御信号を出力するFIFOメモリをFIFOメモリ20−cからFIFOメモリ20−aに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−aの読み出しデータ信号を出力するように設定する(S18)。
この後EPAの書き込み制御信号を書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aは今度はFIFOメモリ20−cに対して書き込み制御信号を出力し、FIFOメモリ20−cでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む。
一方、FIFOメモリ20−aへのデータ書き込みが終了した際の書き込み側FIFOメモリの状態を示す信号のデータ書き込み中からデータ書き込み終了への変化は、読み出し先(シリアル入力エンジン12またはユーザ回路(I/Oコントローラ15経由で割込み信号またはEPAがDMAをサポートする場合はそのリクエスト信号によって))に示される。
そして、EPAの読み出し制御信号を読み出しコントローラ22−aに入力すると、読み出しコントローラ22−aはFIFOメモリ20−aに対して読み出し制御信号を出力し、FIFOメモリ20−aでは読み出しコントローラ22−aから入力する書き込み制御信号に基づいて読み出しデータをメモリから読み出す(S19)。
ここで、FIFOメモリ20−cへのデータ書き込みが終了した時点(S20でYes)で、読み出しコントローラ22−aから入力する読み出し側FIFOメモリ(FIFOメモリ20−a)の状態を示す信号がデータ読み出し終了状態で(S21でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S11でYes)、FIFOメモリ20−cの接続はEPAのままである(S12)。
そして、書き込みコントローラ21−aは、書き込み制御信号を出力するFIFOメモリをデータ書き込みが終了と同時に、FIFOメモリ20−cからFIFOメモリ20−aに変更する。読み出しコントローラ22−aは、読み出し制御信号を出力するFIFOメモリをFIFOメモリ20−aからFIFOメモリ20−cに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
【0012】
FIFOメモリ20−cへのデータ書き込みが終了した時点でFIFOメモリ20−aのデータ読み出しが未だ終了していない場合(S21でNo)は、FIFOメモリ20−aの読み出しが終わるのを待ち(S19−S21:この間FIFOメモリ20−cへのデータ書き込みは禁止)、FIFOメモリ20−aのデータ読み出し終了した場合(S21でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S11でYes)、FIFOメモリ20−cの接続はEPAのままである(S12)。
そして、書き込みコントローラ21−aは書き込み制御信号を出力するFIFOメモリを、FIFOメモリ20−cからFIFOメモリ20−aに変更する。読み出しコントローラは読み出し制御信号を出力するFIFOメモリを、FIFOメモリ20−aからFIFOメモリ20−cに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
以後FIFOメモリ20−cがEPAに接続されている間は、同様にデータ書き込みを行うFIFOメモリと、データ読み出しを行う読み出しコントローラ22−aによってFIFOメモリ20−aとFIFOメモリ20−cの間で切り換えながらデータ転送を行う(S11−S21)。
【0013】
S11またはS17でFIFOメモリ20−cがEPAに接続されない(EPBに接続される)場合、書き込みコントローラ21−bからの制御信号によってマルチプレクサ24はEPBの書き込み制御信号を出力し、マルチプレクサ25はFIFOメモリ20−bに入力するデータ信号と同一のEPBの書き込みデータ信号を出力する。読み出しコントローラ22−bからの制御信号によってマルチプレクサ26は読み出しコントローラ22−bから出力されるEPBの読み出し制御信号を出力し、これらはFIFOメモリ20−cに接続される。
このため、EPAでは書き込みコントローラは共有FIFOメモリ制御信号によって書き込み制御信号をFIFOメモリ20−aのみに出力するように設定される。読み出しコントローラ22−aは読み出し制御信号をFIFOメモリ20−aのみに出力するように設定される。それと同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値がFIFOメモリ20−aの読み出しデータ信号を出力するように設定される(S22)。そしてFIFOメモリ20−aはデータ書き込み用に設定される(S23)。
ここでEPAの書き込み制御信号が書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aはFIFOメモリ20−aに対して書き込み制御信号を出力し、FIFOメモリ20−aでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S24−S25でNo)。
【0014】
FIFOメモリ20−aへのデータ書き込みが終了すると、FIFOメモリ20−aはデータ読み出し用に設定され、その状態変化を示す信号が読み出し先(シリアル入力エンジン12またはユーザ回路(I/Oコントーラ15経由で割込み信号またはEPAがDMAをサポートする場合はそのリクエスト信号によって))に示される(S26)。
そして、読み出し先からEPAに対するEPAの読み出し制御信号が読み出しコントローラ22−aに入力すると、読み出しコントローラ22−aはFIFOメモリ20−aに対して読み出し制御信号を出力し、FIFOメモリ20−aでは読み出しコントローラ22−aから入力する読み出し制御信号に基づいて読み出しデータをメモリから読み出す(S27−S28でNo:この間書き込みデータは書き込み禁止)。
そして、FIFOメモリ20−bからのデータ読み出しが終了し(S28でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されない(EPBに接続される)場合(S11でNo)、FIFOメモリ20−cはEPBに接続されたままである。
そしてFIFOメモリ20−aは再び書き込み用に設定され(S23)、EPAの書き込み制御信号が書き込みコントローラ21−bに入力すると、書き込みコントローラ21−bはFIFOメモリ20−bに対して書き込み制御信号を出力し、FIFOメモリ20−bでは書き込みコントローラ21−bから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S24−S25でNo)。以後S11でFIFOメモリ20−cがEPAに接続されない(EPBに接続される)間はS23−S28を繰り返す。
なお、EPBにおいてはFIFOメモリ20−cがEPAに接続される間は図4のS23−S28と同様な動作をFIFOメモリ20−bで、FIFOメモリ20−cがEPBに接続される間は、図4のS13−S21と同様の動作をFIFOメモリ20−bとFIFOメモリ20−cで行う。
【0015】
そして、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントがUSBコントローラの外部のユーザ回路またはUSBコントローラのレジスタ16から入力する共有FIFOメモリ制御信号によって変更される度に、マルチプレクサ24、25、26によってFIFOメモリ20−cに接続されるエンドポイントの書き込み制御、書き込みデータ、読み出し制御の各信号の変更とEPA、EPBでのデータ転送方式(FIFOメモリ20−c使用の有無)が変更される。
なお、それぞれのエンドポイントの書き込み制御信号、書き込みデータ信号の接続先であるが、イン転送の場合はI/Oコントローラ15との間で、アウト転送のエンドポイントの場合は図2のシリアル入力エンジン12との間で接続される。そして、エンドポイントの読み出し制御信号、読み出しデータ信号の接続先であるが、イン転送のエンドポイントの場合は図1のシリアル入力エンジン12との間で、アウト転送の場合はI/Oコントローラ15との間で接続される。
また、図3ではEPA、EPBの転送の方向は両方ともイン転送の場合、両方ともアウト転送の場合、一方がイン転送で他方がアウト転送の場合のいずれも可能で、また転送の種類の組み合わせにもよらない。さらに図3では2つのエンドポイントで1つの共有FIFOメモリを持つ場合を示したが、これは本発明を限定するものでなく、他のエンドポイントと共有しないFIFOメモリを少なくとも1つ持つのであれば、例えば3つのエンドポイントで1つの共有FIFOメモリを持つような構成でも、また2つのエンドポイントで2つの共有FIFOメモリを持つような構成でもよい。
それから、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントを決定する方法であるが、各エンドポイントのデータ転送量をユーザ回路でカウントして一定時間に比較するか、各エンドポイントのデータ転送量またはデータパケットの送受信の成功した回数をUSBホストでカウントし、一定時間毎に比較し、データ転送量またはデータパケットの送受信の成功した回数が多いエンドポイントに次の一定時間共有FIFOメモリ20−cを接続すれば良い。このようにすることでデータ転送量の多いエンドポイントのデータ転送速度を向上することができる。
【0016】
【発明の効果】
以上説明したように、請求項1のUSBコ−ントローラは、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリの接続されるエンドポイントを変更可能としたことで従来よりも回路規模を抑えつつデータ転送速度を向上させるUSBコントローラを実現できる。
請求項2のUSBコントローラは、共有するバッファメモリの接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換えることでUSBコントローラを具体的に実現できる。
請求項3のUSBコントローラは、共有するバッファメモリの接続されるエンドポイントを内部のレジスタで切り換えることUSBコントローラを具体的に実現できる。
請求項4のUSBコントローラは、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換えることでUSBコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項5のUSBコントローラは、USBホストからUSBコントローラに対して送られるUSBデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへの接続されるエンドポイントを切り換えることによって、請求項3のUSBコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項6のUSBコントローラは、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更することで従来よりもデータ転送速度を向上させるUSBコントローラのデータ転送制御方法を実現できる。
【図面の簡単な説明】
【図1】本発明のUSBコントローラのエンドポイントをイン転送用として説明する回路図である。
【図2】本発明のUSBコントローラのエンドポイントをアウト転送用として説明する回路図である。
【図3】本発明のUSBコントローラのエンドポイントの実施の形態を示す回路図である。
【図4】エンドポイントでのデータの読み出し/書き込みを説明するフローチャートである。
【図5】USBバスの接続概念図である。
【図6】デバイスの構成を示す概略図である。
【図7】USBコントローラの構成例を示す回路図である。
【図8】エンドポイントの構成例を示す回路図である。
【符号の説明】
1 USBホスト、3 デバイス、13 エンドポイント、16 レジスタ、20−a 占有FIFOメモリ(バッファメモリ)、20−b 占有FIFOメモリ(バッファメモリ)、20−c 共有FIFOメモリ(バッファメモリ)、21 USBコントローラ(書き込みコントローラ)、21−a 書き込みコントローラ、21−b 書き込みコントローラ、22 ターゲットの機器(読み出しコントローラ)、22−a 読み出しコントローラ、22−b 読み出しコントローラ
【発明の属する技術分野】
本発明は、USBインタ−フェースを有する機器に応用できるUSBコントローラおよびそのデータ転送制御方法に関するものである。
【0002】
【従来の技術】
近年、PC(パソコン)と周辺機器を接続するインターフェースとしてUSB(Universal Serial Bus)が使用されている。USBではPCが1つしか存在しないホストとなり、ホストの下に複数のデバイスがツリー状に接続され、デバイスのUSBコントローラがそれぞれ固有のアドレスを有している。
本発明に関連する従来技術として、1つのFIFOメモリを複数のエンドポイントで共有するという点で特開2001−512870公報のユニバーサルシリアルバス(USB)デバイスコントローラが挙げられる。また、1つのエンドポイントに複数のFIFOメモリを対応させた既存の製品としては沖電気のML60851C等があげられる。
図5はUSBバスの接続概念図である。図5において、ルートHUB(マルチポートリピータ)機能を有するUSBホスト1、HUB2a、2b、デバイス3(3a〜3d)が存在している。このようにUSBでは1つのホストの下に複数のHUBまたはデバイスがツリー状に接続される。
図6はデバイスの構成を示す概略図である。デバイス3(3a〜3d)は図6のようにUSBコントローラ21、ターゲットの機器22から構成される。
ホストであるPCは固有のアドレスのUSBコントローラ21に対してデータ送受信の要求とデータの送受信を行う。USBコントローラ21ではUSBホスト1からのデータ送受信の要求を受信した時に、割込み信号等の手段でユーザ回路に対してUSBホスト1からデータ送受信の要求を受けたことを示す。
そして、ユーザ回路はUSBコントローラ21からデータ送受信の要求の内容を読み出して、USBコントローラ21がUSBホスト1から受信したデータを読み出し、また、USBホスト1に対する送信データをUSBコントローラ21に書き込む。
なお、USBコントローラ21はUSBホスト1に対してデータを送信する、または、USBホスト1からのデータを受信する、通常FIFOメモリ(First In First Out Memory)からなるエンドポイントを複数有している(その数は規格によって決められている)。そして、デバイス3のUSBコントローラ21のローカルバスに接続される機器22は、エンドポイントのFIFOメモリに対してアクセスすることになる。
ところで、USBバスでのデータの転送は、パケットという単位で行われる。このパケットには転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果(成功・失敗)を送るハンドシェイクパケットの種類がある。また、転送の種類も、エンドポイントゼロを介して行われるデバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのようにまとまった量のデータを転送するバルク転送、マウス、キーボードのステータスを送るような定周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送の4つのデータ転送のモードがある。
【0003】
図7はUSBコントローラの構成例を示す回路図である。図7において、USBトランシーバ11はUSBバスに接続され、図中には示されないUSBホストから送信されたパケットをUSBバスの信号から論理信号に変換して次に説明するシリアル入力エンジン12に出力する。それと同時に、シリアル入力エンジン12からUSBホストに送信するパケットを論理信号からUSBバスの信号に変換してUSBホストに出力する。
シリアル入力エンジン12はUSBトランシーバ11から入力するUSBホストから送信されたパケットのうちトークンパケット、ハンドシェークパケットをデコードする。シリアル入力エンジン12はデコードされたパケットを基にUSBホスト1との通信制御を行い、必要に応じてハンドシェークパケットをUSBトランシーバ11に出力する。
それとともに、USBホストに出力するデータを以下で説明するエンドポイント群13から読み出して、制御データを付加し、データパケットとしてUSBトランシーバ11に出力する。また、シリアル入力エンジン12はUSBトランシーバ11から入力するUSBホストからのデータパケットの中のデータをエンドポイント群13(13−0,13−1...13n)に書き込む制御を行う。エンドポイント群13はローカルバスから受信しUSBホストへ送信するデータをバッファリングするとともに、USBホストから受信しローカルバスに送信するデータをバッファリングする。
I/Oコントローラ15は図中には示されないユーザ回路とエンドポイント群13、次に述べるレジスタの間でのデータ転送の制御を行う。レジスタ16はUSBコントローラ内部モジュールの各種設定を行い、またコントロール転送の自動応答リクエストを格納しておくレジスタである。
エンドポイント群13は、エンドポイントゼロ(図中の13−0)とコントロール転送以外の転送に使用される複数のエンドポイント13−1,・・・,13−nから構成される。ここでエンドポイントゼロ13−0はコントロール転送で使用される双方向のエンドポイントでUSBホストから見た場合のエンドポイント番号は0に固定されている。
それを除いては単一の転送方向(USBホストに対して出力または入力)のエンドポイントで、転送方法、転送の向き、USBホストから見た場合のエンドポイント番号は0以外に固定、もしくは、レジスタ16にユーザが設定して使用する。
【0004】
図8はエンドポイントの構成例を示す回路図である。図8において、FIFOメモリ(先入れ先出し)メモリ20−0、20−1はUSBホストに対して送信するデータ、USBホストから受信したデータを格納する。書き込みコントローラ21はFIFOメモリに対するデータ書き込みの制御を行う。読み出しコントローラ22はFIFOメモリからのデータ読み出しの制御を行い、マルチプレクサ23はデータを読み出すFIFOメモリを選択する。
図8のエンドポイント13は、2つのFIFOメモリ(20−0,20−1)を有し、これらのFIFOメモリの一方をデータ書き込み用、他方をデータ読み出し用とするものである。そして、書き込みコントローラ21と読み出しコントローラ22の間でFIFOメモリ(20−0,20−1)の状態を表す信号を授受する。
データ書き込み用に設定されたFIFOメモリへのデータ書き込み終了時に、データ読み出し用に設定されているFIFOメモリからのデータ読み出しが終了しているときは直ぐに、また、データ読み出しが終了していないときは、データ読み出しの終了を待って、データ書き込み用FIFOメモリとデータ読み出し用FIFOメモリを切り換え、データ転送速度を向上させる。
【0005】
【発明が解決しようとする課題】
このようなエンドポイント構成を有するUSBコントローラとしては例えば沖電気のML60851Cが上げられる。しかし、この構成のエンドポイントではエンドポイント毎にFIFOメモリを2つ使用するため、エンドポイントの数が多くなると回路規模が大きくなるという問題点があった。
そこで、本発明の目的は、FIFOメモリの一部を複数のエンドポイントで共有し、外部のユーザ回路、USBホストから共有するFIFOメモリを使用するエンドポイントをデータ転送の状況に応じて変更することで、回路規模を小さく抑えつつデータ転送速度を向上させるUSBコントローラとそのデータ転送制御方法を提供することにある。
【0006】
【課題を解決するための手段】
前記の課題を解決するために、請求項1記載の発明では、USBインタ−フェースを有する機器に応用できるUSBコントローラにおいて、USBバスに接続されUSBホストから送信されたバケットを論理信号に変換するUSBトランシーバと、該USBトランシーバから入力する前記USBホストから送信されたバケットをデコードするシリアル入力エンジンと、複数のエンドポイントを有するエンドポイント群と、ユーザ回路、前記エンドポイント群、及びレジスタ間でのデータ転送の制御を行うI/Oコントローラと、を備え、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリが接続されるエンドポイントを変更可能としたことを特徴とする。
請求項2記載の発明では、共有するバッファメモリが接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換える請求項1記載のUSBコントローラを主要な特徴とする。
請求項3記載の発明では、共有するバッファメモリが接続されるエンドポイントを内部のレジスタで切り換える請求項1記載のUSBコントローラを主要な特徴とする。
請求項4記載の発明では、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換える請求項3記載のUSBコントローラを主要な特徴とする。
請求項5記載の発明では、USBホストからUSBコントローラに対して送られるUSBデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへ接続されるエンドポイントを切り換える請求項3記載のUSBコントローラを主要な特徴とする。
請求項6記載の発明では、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更する、USBコントローラのデータ転送制御方法を最も主要な特徴とする。
【0007】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。本発明のUSBコントローラの全体構成は基本的には図7に示される従来のUSBコントローラと同一であるが、特徴的なことは2つのエンドポイントで1つのFIFOメモリを共有するものである。
図1は本発明のUSBコントローラのエンドポイントをイン転送用として説明する回路図である。図1において、シリアル入力エンジン12、I/Oコントローラ15、レジスタ16、そしてエンドポイント群13を示し、ここでは図を簡略化するためFIFOメモリ(バッファメモリ)を共有するエンドポイントのみを示す。
エンドポイント群13において、エンドポイント13−aはイン転送のエンドポイント、エンドポイント13−bはアウト転送のエンドポイントで、それぞれ1つの占有FIFOメモリ(バッファメモリ)と1つの共有FIFOメモリ(バッファメモリ)を有するエンドポイントである。FIFOメモリ20−aはエンドポイント13−aの占有FIFOメモリ、FIFOメモリ20−bはエンドポイント13−bの占有FIFOメモリ、FIFOメモリ20−cはエンドポイント13−aとエンドポイント13−bの共有FIFOメモリ(バッファメモリ)である。
図1では、イン転送でエンドポイント13−aからUSBホスト(図示せず)に送るデータ数がアウト転送でエンドポイント13−bがUSBホストから受け取るデータ数より多い。この場合は図のようにFIFOメモリ20−cをエンドポイント13−aで使用して、エンドポイント13−aではFIFOメモリ20−aとFIFOメモリ20−cでユーザ回路からのデータを交互に受け取りUSBホストに送り、エンドポイント13−bではFIFOメモリ20−bのみでUSBホストからのデータを受け取りユーザ回路(図示せず)に送る。
【0008】
図2は本発明のUSBコントローラのエンドポイントをアウト転送用として説明する路図である。図2では、アウト転送でエンドポイント13−bがUSBホストから受け取るデータ数がイン転送でエンドピント13−aからUSBホストに送るデータ数より多い。この場合は図のようにFIFOメモリ20−cをエンドポイント13−bで使用して、エンドポイント13−bではFIFOメモリ20−bとFIFOメモリ20−cでUSBホストからのデータを交互に受け取りユーザに送り、エンドポイント13−aではFIFOメモリ20−aのみでユーザ回路からのデータを受け取りUSBホストに送る。
このようなイン転送用のエンドポイントとアウト転送用のエンドポイントを同時に使用しUSBホストへのデータ送信とUSBホストからのデータ受信のデータ数に差ができる例としてはHDD、光ディスク等のストレージデバイスで大容量のデータ読み出し、データ書き込みを行う場合やFAX/スキャナ機能付きのプリンタでのデータスキャン、プリント時が上げられる。
また、ここでは説明しないが、例えば1つのUSBコントローラに対して複数のユーザ回路が接続されるような場合などでUSBホストへのデータ送信を行うエンドポイント同士、USBホストからのデータ受信を行うエンドポイント同士でデータ数に差ができる場合も有り得る。
【0009】
図3は本発明のUSBコントローラのエンドポイントの実施の形態を示す回路図である。図3は2つのエンドポイントEPA、EPBで1つのFIFOメモリメモリを共有する場合を示している。
図3において、20−aはEPAのデータを格納するFIFOメモリ、20−bはEPBのデータを格納するFIFOメモリそして20−cはEPA、EPBで共有し、データ転送の状況に応じてどちらかのデータを格納するようにユーザ回路またはUSBホストなどの外部の回路によって制御されるFIFOメモリである。
書き込みコントローラ21−aはEPAのFIFOメモリに対するデータ書き込みの制御を行い、書き込みコントローラ21−bはEPBのFIFOメモリに対するデータ書き込みの制御を行う。読み出しコントローラ22−aはEPAのFIFOメモリからのデータ読み出しの制御を行い、読み出しコントローラ22−bはEPBのFIFOメモリからのデータ読み出しの制御を行う。
マルチプレクサ23−aはEPAのデータを読み出すFIFOメモリを選択し、マルチプレクサ23−bはEPBのデータを読み出すFIFOメモリを選択する。また、マルチプレクサ24はEPA、EPBで共有するFIFOメモリに入力する書き込み制御信号を切り換え、マルチプレクサ25はEPA、EPBで共有するFIFOメモリに入力する書き込みデータ信号を切り換え、そしてマルチプレクサ26はEPA、EPBで共有するFIFOメモリに入力する読み出し制御信号を切り換える。
【0010】
図4はエンドポイントでのデータの読み出し/書き込みを説明するフローチャートである。図3の構成のエンドポイントでのデータの読み出し/書き込みを図4のフローチャートに基づいて説明する。
まず、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントがUSBコントローラの外部のユーザ回路またはUSBコントローラのレジスタから入力する共有FIFOメモリ制御信号によってEPAに設定される場合(S11でYes)、書き込みコントローラ21−aからの制御信号によってマルチプレクサ24はEPAの書き込み制御信号を出力し、マルチプレクサ25はFIFOメモリ20−aに入力するデータ信号と同一のEPAの書き込みデータ信号を出力する。
読み出しコントローラ22−aからの制御信号によってマルチプレクサ26は読み出しコントローラ22−aから出力されるEPAの読み出し制御信号を出力し、これらはFIFOメモリ20−cに接続される(S12)。
そして、FIFOメモリ20−cがEPAに接続される場合、書き込みコントローラ21−aはEPAの書き込み制御信号をFIFOメモリ20−aに出力するように設定される。読み出しコントローラ22−aは、EPAの読み出し制御信号をFIFOメモリ20−cに出力するように設定される。それと同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
この後EPAの書き込み制御信号を書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aはFIFOメモリ20−aに対して書き込み制御信号を出力し、FIFOメモリ20−aでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S14−S15でNo)。
FIFOメモリ20−aへのデータ書き込みが終了すると(S15でYes)、FIFOメモリ20−cでのデータ読み出しが終了しているかどうかの判断を行う。最初は読み出しコントローラ22−aから入力する読み出し側FIFOメモリ(FIFOメモリ20−c)には元々データが入っておらず、その状態を示す信号がデータ読み出し終了であるので(S16でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S17でYes)、書き込みコントローラ21−aは、書き込み制御信号を出力するFIFOメモリを、FIFOメモリ20−aからFIFOメモリ20−cに変更する。
【0011】
読み出しコントローラ22−aは、読み出し制御信号を出力するFIFOメモリをFIFOメモリ20−cからFIFOメモリ20−aに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−aの読み出しデータ信号を出力するように設定する(S18)。
この後EPAの書き込み制御信号を書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aは今度はFIFOメモリ20−cに対して書き込み制御信号を出力し、FIFOメモリ20−cでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む。
一方、FIFOメモリ20−aへのデータ書き込みが終了した際の書き込み側FIFOメモリの状態を示す信号のデータ書き込み中からデータ書き込み終了への変化は、読み出し先(シリアル入力エンジン12またはユーザ回路(I/Oコントローラ15経由で割込み信号またはEPAがDMAをサポートする場合はそのリクエスト信号によって))に示される。
そして、EPAの読み出し制御信号を読み出しコントローラ22−aに入力すると、読み出しコントローラ22−aはFIFOメモリ20−aに対して読み出し制御信号を出力し、FIFOメモリ20−aでは読み出しコントローラ22−aから入力する書き込み制御信号に基づいて読み出しデータをメモリから読み出す(S19)。
ここで、FIFOメモリ20−cへのデータ書き込みが終了した時点(S20でYes)で、読み出しコントローラ22−aから入力する読み出し側FIFOメモリ(FIFOメモリ20−a)の状態を示す信号がデータ読み出し終了状態で(S21でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S11でYes)、FIFOメモリ20−cの接続はEPAのままである(S12)。
そして、書き込みコントローラ21−aは、書き込み制御信号を出力するFIFOメモリをデータ書き込みが終了と同時に、FIFOメモリ20−cからFIFOメモリ20−aに変更する。読み出しコントローラ22−aは、読み出し制御信号を出力するFIFOメモリをFIFOメモリ20−aからFIFOメモリ20−cに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
【0012】
FIFOメモリ20−cへのデータ書き込みが終了した時点でFIFOメモリ20−aのデータ読み出しが未だ終了していない場合(S21でNo)は、FIFOメモリ20−aの読み出しが終わるのを待ち(S19−S21:この間FIFOメモリ20−cへのデータ書き込みは禁止)、FIFOメモリ20−aのデータ読み出し終了した場合(S21でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されている場合(S11でYes)、FIFOメモリ20−cの接続はEPAのままである(S12)。
そして、書き込みコントローラ21−aは書き込み制御信号を出力するFIFOメモリを、FIFOメモリ20−cからFIFOメモリ20−aに変更する。読み出しコントローラは読み出し制御信号を出力するFIFOメモリを、FIFOメモリ20−aからFIFOメモリ20−cに変更し、同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値を、FIFOメモリ20−cの読み出しデータ信号を出力するように設定する(S13)。
以後FIFOメモリ20−cがEPAに接続されている間は、同様にデータ書き込みを行うFIFOメモリと、データ読み出しを行う読み出しコントローラ22−aによってFIFOメモリ20−aとFIFOメモリ20−cの間で切り換えながらデータ転送を行う(S11−S21)。
【0013】
S11またはS17でFIFOメモリ20−cがEPAに接続されない(EPBに接続される)場合、書き込みコントローラ21−bからの制御信号によってマルチプレクサ24はEPBの書き込み制御信号を出力し、マルチプレクサ25はFIFOメモリ20−bに入力するデータ信号と同一のEPBの書き込みデータ信号を出力する。読み出しコントローラ22−bからの制御信号によってマルチプレクサ26は読み出しコントローラ22−bから出力されるEPBの読み出し制御信号を出力し、これらはFIFOメモリ20−cに接続される。
このため、EPAでは書き込みコントローラは共有FIFOメモリ制御信号によって書き込み制御信号をFIFOメモリ20−aのみに出力するように設定される。読み出しコントローラ22−aは読み出し制御信号をFIFOメモリ20−aのみに出力するように設定される。それと同時にEPAの読み出しデータを読み出すFIFOメモリを選択するマルチプレクサ23−aの制御信号の値がFIFOメモリ20−aの読み出しデータ信号を出力するように設定される(S22)。そしてFIFOメモリ20−aはデータ書き込み用に設定される(S23)。
ここでEPAの書き込み制御信号が書き込みコントローラ21−aに入力すると、書き込みコントローラ21−aはFIFOメモリ20−aに対して書き込み制御信号を出力し、FIFOメモリ20−aでは書き込みコントローラ21−aから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S24−S25でNo)。
【0014】
FIFOメモリ20−aへのデータ書き込みが終了すると、FIFOメモリ20−aはデータ読み出し用に設定され、その状態変化を示す信号が読み出し先(シリアル入力エンジン12またはユーザ回路(I/Oコントーラ15経由で割込み信号またはEPAがDMAをサポートする場合はそのリクエスト信号によって))に示される(S26)。
そして、読み出し先からEPAに対するEPAの読み出し制御信号が読み出しコントローラ22−aに入力すると、読み出しコントローラ22−aはFIFOメモリ20−aに対して読み出し制御信号を出力し、FIFOメモリ20−aでは読み出しコントローラ22−aから入力する読み出し制御信号に基づいて読み出しデータをメモリから読み出す(S27−S28でNo:この間書き込みデータは書き込み禁止)。
そして、FIFOメモリ20−bからのデータ読み出しが終了し(S28でYes)、FIFOメモリ20−cが共有FIFOメモリ制御信号でEPAに設定されない(EPBに接続される)場合(S11でNo)、FIFOメモリ20−cはEPBに接続されたままである。
そしてFIFOメモリ20−aは再び書き込み用に設定され(S23)、EPAの書き込み制御信号が書き込みコントローラ21−bに入力すると、書き込みコントローラ21−bはFIFOメモリ20−bに対して書き込み制御信号を出力し、FIFOメモリ20−bでは書き込みコントローラ21−bから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む(S24−S25でNo)。以後S11でFIFOメモリ20−cがEPAに接続されない(EPBに接続される)間はS23−S28を繰り返す。
なお、EPBにおいてはFIFOメモリ20−cがEPAに接続される間は図4のS23−S28と同様な動作をFIFOメモリ20−bで、FIFOメモリ20−cがEPBに接続される間は、図4のS13−S21と同様の動作をFIFOメモリ20−bとFIFOメモリ20−cで行う。
【0015】
そして、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントがUSBコントローラの外部のユーザ回路またはUSBコントローラのレジスタ16から入力する共有FIFOメモリ制御信号によって変更される度に、マルチプレクサ24、25、26によってFIFOメモリ20−cに接続されるエンドポイントの書き込み制御、書き込みデータ、読み出し制御の各信号の変更とEPA、EPBでのデータ転送方式(FIFOメモリ20−c使用の有無)が変更される。
なお、それぞれのエンドポイントの書き込み制御信号、書き込みデータ信号の接続先であるが、イン転送の場合はI/Oコントローラ15との間で、アウト転送のエンドポイントの場合は図2のシリアル入力エンジン12との間で接続される。そして、エンドポイントの読み出し制御信号、読み出しデータ信号の接続先であるが、イン転送のエンドポイントの場合は図1のシリアル入力エンジン12との間で、アウト転送の場合はI/Oコントローラ15との間で接続される。
また、図3ではEPA、EPBの転送の方向は両方ともイン転送の場合、両方ともアウト転送の場合、一方がイン転送で他方がアウト転送の場合のいずれも可能で、また転送の種類の組み合わせにもよらない。さらに図3では2つのエンドポイントで1つの共有FIFOメモリを持つ場合を示したが、これは本発明を限定するものでなく、他のエンドポイントと共有しないFIFOメモリを少なくとも1つ持つのであれば、例えば3つのエンドポイントで1つの共有FIFOメモリを持つような構成でも、また2つのエンドポイントで2つの共有FIFOメモリを持つような構成でもよい。
それから、EPA、EPBで共有するFIFOメモリ20−cの接続されるエンドポイントを決定する方法であるが、各エンドポイントのデータ転送量をユーザ回路でカウントして一定時間に比較するか、各エンドポイントのデータ転送量またはデータパケットの送受信の成功した回数をUSBホストでカウントし、一定時間毎に比較し、データ転送量またはデータパケットの送受信の成功した回数が多いエンドポイントに次の一定時間共有FIFOメモリ20−cを接続すれば良い。このようにすることでデータ転送量の多いエンドポイントのデータ転送速度を向上することができる。
【0016】
【発明の効果】
以上説明したように、請求項1のUSBコ−ントローラは、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリの接続されるエンドポイントを変更可能としたことで従来よりも回路規模を抑えつつデータ転送速度を向上させるUSBコントローラを実現できる。
請求項2のUSBコントローラは、共有するバッファメモリの接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換えることでUSBコントローラを具体的に実現できる。
請求項3のUSBコントローラは、共有するバッファメモリの接続されるエンドポイントを内部のレジスタで切り換えることUSBコントローラを具体的に実現できる。
請求項4のUSBコントローラは、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換えることでUSBコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項5のUSBコントローラは、USBホストからUSBコントローラに対して送られるUSBデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへの接続されるエンドポイントを切り換えることによって、請求項3のUSBコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項6のUSBコントローラは、1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更することで従来よりもデータ転送速度を向上させるUSBコントローラのデータ転送制御方法を実現できる。
【図面の簡単な説明】
【図1】本発明のUSBコントローラのエンドポイントをイン転送用として説明する回路図である。
【図2】本発明のUSBコントローラのエンドポイントをアウト転送用として説明する回路図である。
【図3】本発明のUSBコントローラのエンドポイントの実施の形態を示す回路図である。
【図4】エンドポイントでのデータの読み出し/書き込みを説明するフローチャートである。
【図5】USBバスの接続概念図である。
【図6】デバイスの構成を示す概略図である。
【図7】USBコントローラの構成例を示す回路図である。
【図8】エンドポイントの構成例を示す回路図である。
【符号の説明】
1 USBホスト、3 デバイス、13 エンドポイント、16 レジスタ、20−a 占有FIFOメモリ(バッファメモリ)、20−b 占有FIFOメモリ(バッファメモリ)、20−c 共有FIFOメモリ(バッファメモリ)、21 USBコントローラ(書き込みコントローラ)、21−a 書き込みコントローラ、21−b 書き込みコントローラ、22 ターゲットの機器(読み出しコントローラ)、22−a 読み出しコントローラ、22−b 読み出しコントローラ
Claims (6)
- USBインタ−フェースを有する機器に応用できるUSBコントローラにおいて、
USBバスに接続されUSBホストから送信されたバケットを論理信号に変換するUSBトランシーバと、該USBトランシーバから入力する前記USBホストから送信されたバケットをデコードするシリアル入力エンジンと、複数のエンドポイントを有するエンドポイント群と、ユーザ回路、前記エンドポイント群、及びレジスタ間でのデータ転送の制御を行うI/Oコントローラと、を備え、
1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリが接続されるエンドポイントを変更可能としたことを特徴とするUSBコントローラ。 - 共有するバッファメモリが接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換えることを特徴とする請求項1記載のUSBコントローラ。
- 共有するバッファメモリが接続されるエンドポイントを内部のレジスタで切り換えることを特徴とする請求項1記載のUSBコントローラ。
- 外部のユーザ回路から前記内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換えることを特徴とする請求項3記載のUSBコントローラ。
- 前記USBホストからUSBコントローラに対して送られるUSBデバイスリクエストによって内部のレジスタの値を変更し、前記共有するバッファメモリへ接続されるエンドポイントを切り換えることを特徴とする請求項3記載のUSBコントローラ。
- 1つのエンドポイントに対してバッファメモリを複数用意して少なくとも1つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更することを特徴とするUSBコントローラのデータ転送制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002225088A JP2004070423A (ja) | 2002-08-01 | 2002-08-01 | Usbコントローラおよびそのデータ転送制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002225088A JP2004070423A (ja) | 2002-08-01 | 2002-08-01 | Usbコントローラおよびそのデータ転送制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004070423A true JP2004070423A (ja) | 2004-03-04 |
Family
ID=32012862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002225088A Pending JP2004070423A (ja) | 2002-08-01 | 2002-08-01 | Usbコントローラおよびそのデータ転送制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004070423A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244194A (ja) * | 2005-03-04 | 2006-09-14 | Kyocera Mita Corp | Usb制御装置、デバイス制御装置 |
JP2008078762A (ja) * | 2006-09-19 | 2008-04-03 | Ricoh Co Ltd | 複合機 |
KR101138674B1 (ko) | 2008-03-19 | 2012-04-25 | 르네사스 일렉트로닉스 가부시키가이샤 | Usb 제어기 및 버퍼 메모리 제어 방법 |
JP2016071448A (ja) * | 2014-09-26 | 2016-05-09 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
CN113127399A (zh) * | 2019-12-31 | 2021-07-16 | 新唐科技股份有限公司 | 一种通用串列汇流排装置以及存取方法 |
-
2002
- 2002-08-01 JP JP2002225088A patent/JP2004070423A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244194A (ja) * | 2005-03-04 | 2006-09-14 | Kyocera Mita Corp | Usb制御装置、デバイス制御装置 |
JP2008078762A (ja) * | 2006-09-19 | 2008-04-03 | Ricoh Co Ltd | 複合機 |
US7606949B2 (en) | 2006-09-19 | 2009-10-20 | Ricoh Company, Ltd. | Multifunction machine and a control method of the multifunction machine |
KR101138674B1 (ko) | 2008-03-19 | 2012-04-25 | 르네사스 일렉트로닉스 가부시키가이샤 | Usb 제어기 및 버퍼 메모리 제어 방법 |
JP2016071448A (ja) * | 2014-09-26 | 2016-05-09 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
CN113127399A (zh) * | 2019-12-31 | 2021-07-16 | 新唐科技股份有限公司 | 一种通用串列汇流排装置以及存取方法 |
CN113127399B (zh) * | 2019-12-31 | 2024-02-20 | 新唐科技股份有限公司 | 一种通用串列汇流排装置以及存取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3415567B2 (ja) | Usb転送制御方法およびusbコントローラ | |
KR101077900B1 (ko) | 네트워크 효율성을 고려한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법 및 그에 의해 통신하는 인터페이스 장치 | |
JP3680762B2 (ja) | データ転送制御装置及び電子機器 | |
KR100934227B1 (ko) | 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치 | |
JP3680763B2 (ja) | データ転送制御装置及び電子機器 | |
JP2001236304A (ja) | マイクロコンピュータ | |
KR100944892B1 (ko) | 버스 시스템 및 버스 인터페이스 | |
JP2005504392A (ja) | バス・システムおよびバス・インターフェース | |
JP2004070423A (ja) | Usbコントローラおよびそのデータ転送制御方法 | |
EP1253520B1 (en) | Apparatus for issuing command for high-speed serial interface | |
JP2000029826A (ja) | 多重レベルキャッシングを有する3ポ―トfifoデ―タバッファ | |
KR100487199B1 (ko) | 직접 메모리 접근매체의 데이터 전송 장치 및 방법 | |
KR100563418B1 (ko) | 통신 컨트롤러 및 통신 방법 | |
JP2005202794A (ja) | データ通信システム | |
JP4514411B2 (ja) | バス間通信インタフェース装置 | |
JP2004054437A (ja) | データ通信システム | |
JPH07271654A (ja) | コントローラ | |
KR101345437B1 (ko) | 칩들간의 통신을 위한 인터페이스 장치 및 방법 | |
JP2003022248A (ja) | バスブリッジ回路及びデータ転送方法 | |
JP2004280199A (ja) | データ通信システム | |
JP2002288115A (ja) | Usbコントローラ | |
US7177997B2 (en) | Communication bus system | |
JP2002041451A (ja) | 半導体集積回路装置 | |
JP2004295594A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003242096A (ja) | Usbコントローラ |