JP2005202794A - データ通信システム - Google Patents

データ通信システム Download PDF

Info

Publication number
JP2005202794A
JP2005202794A JP2004009801A JP2004009801A JP2005202794A JP 2005202794 A JP2005202794 A JP 2005202794A JP 2004009801 A JP2004009801 A JP 2004009801A JP 2004009801 A JP2004009801 A JP 2004009801A JP 2005202794 A JP2005202794 A JP 2005202794A
Authority
JP
Japan
Prior art keywords
data
buffer memory
endpoint
shared
fifo memory
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
Application number
JP2004009801A
Other languages
English (en)
Inventor
Sunao Nakabachi
直 中鉢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2004009801A priority Critical patent/JP2005202794A/ja
Publication of JP2005202794A publication Critical patent/JP2005202794A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 バッファメモリの一部を複数のエンドポイント部で共有し、共有するバッファメモリを、バッファメモリの使用状況に応じて変更することで、回路規模を抑えつつデータ転送速度を向上させることができるデータ通信システムを提供する。
【解決手段】 USB規格に準拠したデータ通信システムにおいて、2つのエンドポイント部13a、13bがFIFOメモリ20cを共有する構成とし、共有FIFOメモリ20cを使用するエンドポイント部を決定する際、エンドポイント部13a、13b毎に各FIFOメモリ20を用いて転送されたデータ量を計数することにより共有FIFOメモリ20cを用いるエンドポイント部を決定するとともに、共有FIFOメモリ20cの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有FIFOメモリ20cの接続先変更タイミングを遅らせる構成にした。
【選択図】 図1

Description

本発明は、例えばパーソナルコンピュータとプリンタなどの複数の周辺機器間で、USB規格に準拠したデータ通信を行うデータ通信システムに関する。
近年、パーソナルコンピュータ(以下、PCと称す)と周辺機器を接続するインターフェースとしてUSB(Universal Serial Bus)規格が使用されている。USB規格ではPCが一つしか存在しないホスト装置となり、そのホスト装置の下に複数のデバイス(周辺機器など)がツリー状に接続され、各デバイス内のUSBコントローラがそれぞれ固有のアドレスを持つ。
図19はUSB通信システムの接続概念図である。図19に示したように、ルートハブ(HUB)機能(集配信機能など)をもつUSBホスト装置(以下、ホスト装置と略す)1、ハブ(HUB)2(2a、2b)、デバイス3(3a〜3d)などがUSBバス4により接続されている。このように、USB通信システムでは一つのホスト装置1の下に複数のハブ(HUB)2またはデバイス3がツリー状に接続される。また、各デバイス3は図20に示したようにUSBコントローラ6、ターゲット機器7から構成される。
ホスト装置1であるPCは固有のアドレスのUSBコントローラ6に対してデータ送受信の要求とデータの送受信を行う。USBコントローラ6は、ホスト装置1からデータ送受信の要求を受信すると、割込み信号などを用いてターゲット機器7内のユーザ回路に対してホスト装置1からデータ送受信の要求を受けたことを示す。そして、ユーザ回路はUSBコントローラ6からデータ送受信の要求の内容を読み出して、USBコントローラ6がホスト装置1から受信したデータを読み出したり、ホスト装置1に対する送信データをUSBコントローラ6に書き込んだりする。なお、USBコントローラ6は、ホスト装置1に対してデータを送信したり、ホスト装置からデータを受信したりする際にデータを一時的に記憶する、通常FIFOメモリ(First In First Out Memory)からなるエンドポイント部を複数もつ(その数は規格によって決められている)。ターゲット機器7は、デバイス3のUSBコントローラ6のローカルバスに接続され、エンドポイント部であるFIFOメモリに対してアクセスするのである。
ところで、USBバスを用いたデータ転送は、パケットという単位で行われる。パケットの種類としては、転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果(成功・失敗など)を送るハンドシェークパケットがある。また、転送のモードも、エンドポイント部ゼロを介して行われる、デバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのようにまとまった量のデータを転送するバルク転送、マウスやキーボードのステータスを送るような低周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送の4モードある。
図21はUSBコントローラ21の構成例である。図21において、USBトランシーバ11は、USBバス4に接続され、図中には示されないホスト装置1から送信されたパケットをUSBバス4の信号から論理信号に変換して次に説明するシリアル入力エンジン12に出力すると同時に、シリアル入力エンジン12からホスト装置1へ送信するパケットを論理信号からUSBバスの信号に変換してUSBホストに出力する。
また、シリアル入力エンジン12は、USBトランシーバ11から入力されるホスト装置1から送信されたパケットのうちトークンパケットおよびハンドシェークパケットをデコードし、それを基にホスト装置1との通信を制御し、必要に応じてハンドシェークパケットをUSBトランシーバ11に出力するとともに、ホスト装置1へ出力するデータを次に説明するエンドポイント群13から読み出し、制御データを付加してデータパケットとしてUSBトランシーバ11へ出力し、USBトランシーバ11から入力するホスト装置1からのデータパケットの中のデータをエンドポイント群13に書き込む制御を行う。
また、エンドポイント群13はローカルバスから受信しホスト装置1へ送信するデータをバッファリングするとともに、ホスト装置1から受信しローカルバスへ出力するデータをバッファリングし、I/Oコントローラ15は図中には示されないユーザ回路とエンドポイント群13、および次に述べるレジスタとの間におけるデータ転送を制御し、レジスタ16はUSBコントローラ内部モジュールの各種設定を行うとともに、コントロール転送の自動応答リクエストを格納しておく。
なお、エンドポイント群13は、エンドポイント部ゼロ130とコントロール転送以外の転送に使用される複数のエンドポイント部131、・・・、13nから構成される。ここで、エンドポイント部ゼロ130はコントロール転送で使用される双方向のエンドポイント部で、ホスト装置1から見た場合のエンドポイント番号は0に固定されている。それを除いては単一の転送方向(ホスト装置1に対して出力または入力)のエンドポイント部で、転送方法、転送の向き、ホスト装置1から見た場合のエンドポイント番号は0以外に固定、または、レジスタ16に利用者が設定して使用する。
図22はエンドポイント群13の構成例である。図22に示したように、ホスト装置1に対して送信するデータやホスト装置1から受信したデータを格納するFIFO200、201、そのFIFO200、201に対するデータ書き込みの制御を行うライトコントローラ21、FIFO200、201からのデータ読み出しの制御を行うリードコントローラ22、データを読み出すFIFOを選択するマルチプレクサ23を備える。
このように、各エンドポイント部は、FIFOメモリを二つ持ち、FIFOメモリの一方をデータ書き込み用、他方をデータ読み出し用とする。そして、ライトコントローラ21とリードコントローラ22との間でFIFOメモリの状態を表す信号を授受し、データ書き込み用に設定されたFIFOメモリへのデータ書き込み終了時にデータ読み出し用に設定されているFIFOメモリからのデータ読み出しが終了しているときは直ぐに、また、データ読み出しが終了していないときは、データ読み出しの終了を待って、データ書き込み用FIFOメモリとデータ読み出し用FIFOメモリを切り換えることによりデータ転送速度を向上させる。なお、このような構成を持つUSBコントローラとしては例えば沖電気のML60851Cがある。また、一つのFIFOを複数のエンドポイントで共有する関連発明として特許文献1がある。
特表2001−512870公報
しかしながら、前記した従来技術においては、エンドポイント部毎にFIFOメモリを二つ使用するので、FIFOメモリの数が多くなり、したがって、回路規模が大きくなるという問題点があった。また、共有バッファメモリの接続先変更タイミングは必ずしも適切なタイミングではなかった。
本発明の目的は、このような従来技術の問題を解決することにあり、具体的には、FIFOメモリなどバッファメモリの一部を複数のエンドポイント部で共有し、共有するバッファメモリを、バッファメモリの使用状況(データ転送状況)に応じて変更することにより、回路規模を小さく抑えつつデータ転送速度を向上させることができるデータ通信システムを提供することにある。
また、共有バッファメモリの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有バッファメモリの接続先変更タイミングを遅らせることにより大容量データを送受信しているエンドポイント部の方に共有バッファメモリが接続されるようにして、さらにデータ転送速度を向上させることができるデータ通信システムを提供することにある。
前記した課題を解決するために、請求項1記載の発明では、USB規格に準拠したデータ通信を行うデータ通信システムにおいて、一つのエンドポイント部に対してバッファメモリを複数用意し、その複数のバッファメモリのうち一つ以上のバッファメモリを他のエンドポイント部との共有バッファメモリとし、この共有バッファメモリを使用するエンドポイント部を決定する際、その共有バッファメモリを共有可能な各エンドポイント部についてバッファメモリを用いて転送されたデータ量を計数することによりその共有バッファメモリを用いるエンドポイント部を決定する構成とし、共有バッファメモリの接続先変更の際、共有バッファメモリの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とする。
また、請求項2記載の発明では、請求項1記載の発明において、バッファメモリを共有する複数のエンドポイント部のいずれかが所定のデータ量を転送する毎に所定のデータ量を転送したエンドポイント部に共有バッファメモリを与える構成とし、共有バッファメモリの接続先変更の際、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送し、しかも直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とする。
また、請求項3記載の発明では、請求項1記載の発明において、所定時間が経過する毎に共有バッファメモリを共有するエンドポイント部についてバッファメモリを介して転送されたデータ量を比較し、そのとき、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で転送されたデータ量の方が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのデータパケットのデータサイズが設定された最大の大きさの場合、共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とする。
また、請求項4記載の発明では、請求項1記載の発明において、共有バッファメモリを共有する複数のエンドポイント部のいずれかが所定のデータ量を転送するか、または所定時間が経過するか、そのどちらかの条件を満たす毎に、所定のデータ量を転送したエンドポイント部に共有バッファメモリを与えるか、共有するエンドポイント部についてバッファメモリを介して転送されたデータ量を比較して共有バッファメモリを用いるエンドポイント部を決定し、しかも共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送した場合で直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、または、所定時間が経過した際に共有バッファメモリの現在接続されているエンドポイント部とは別のエンドポイント部のデータパケットで転送されたデータ量の方が多く、且つ直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部でありそのデータパケットのデータサイズが設定された最大の大きさのとき、共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とする。
また、請求項5記載の発明では、請求項2または請求項4記載の発明において、共有バッファメモリの接続先変更タイミングを遅らせるためのデータ量の設定値を変更可能な構成としたことを特徴とする。
また、請求項6記載の発明では、請求項3または請求項4記載の発明において、共有バッファメモリの接続先変更タイミングを遅らせるための所定時間の設定値を変更可能な構成としたことを特徴とする。
また、請求項7記載の発明では、請求項1乃至請求項6のいずれか1項に記載の発明において、バッファメモリがFIFOメモリである構成としたことを特徴とする。
本発明によれば、請求項1記載の発明では、一つのエンドポイント部に対してバッファメモリを複数用意し、その複数のバッファメモリのうち一つ以上のバッファメモリを他のエンドポイント部と共有する構成とし、共有バッファメモリを使用するエンドポイント部を決定する際、その共有バッファメモリを共有可能な各エンドポイント部についてバッファメモリを用いて転送されたデータ量を計数することによりその共有バッファメモリを用いるエンドポイント部を決定できるので、バッファメモリを用いて転送されたデータ量の多いエンドポイント部に共有バッファメモリを与えることができ、したがって、回路規模を抑えつつデータ転送速度を向上させることができ、共有バッファメモリの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有バッファメモリの接続先変更タイミングを遅らせることができるので、大容量データを送受信しているエンドポイント部の方に共有バッファメモリが接続され、したがって、データ転送速度をさらに向上させることができる。
また、請求項2記載の発明では、請求項1記載の発明において、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送した場合、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、共有バッファメモリの接続先変更タイミングを遅らせるので、続いては送受信が行なわれないエンドポイント部へ直ちに共有メモリを接続する不合理を回避でき、したがって、データ転送速度をさらに向上させることができる。
また、請求項3記載の発明では、請求項1記載の発明において、所定時間が経過した際に共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で転送されたデータ量の方が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのデータパケットのデータサイズが設定された最大の大きさの場合、共有バッファメモリの接続先変更タイミングを遅らせることができるので、続きのデータパケットを送受信しようとしているエンドポイント部から共有バッファメモリを取り上げてしまう不合理を回避でき、したがって、データ転送速度をさらに向上させることができる。
また、請求項4記載の発明では、請求項1記載の発明において、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送した場合で直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、または、所定時間が経過した際に共有バッファメモリの現在接続されているエンドポイント部とは別のエンドポイント部のデータパケットで転送されたデータ量の方が多く、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのデータパケットのデータサイズが設定された最大の大きさのとき、共有バッファメモリの接続先変更タイミングを遅らせることができるので、共有バッファメモリの接続先変更がきめ細かくなっても大容量データを送受信しているエンドポイント部の方に共有バッファメモリが接続され、したがって、データ転送速度をさらに向上させることができる。
また、請求項5記載の発明では、請求項2または請求項4記載の発明において、共有バッファメモリの接続先変更タイミングを遅らせるためのデータ量の設定値を変更できるので、状況に合わせてより適切な設定値にすることができ、したがって、データ転送速度をさらに向上させることができる。
また、請求項6記載の発明では、請求項3または請求項4記載の発明において、共有バッファメモリの接続先変更タイミングを遅らせるための所定時間の設定値を変更できるので、同様に、状況に合わせてより適切な設定値にすることができ、したがって、データ転送速度をさらに向上させることができる。
また、請求項7記載の発明では、請求項1乃至請求項6のいずれか1項に記載の発明において、バッファメモリがFIFOメモリであるので、このような構成の場合で、請求項1乃至請求項6のいずれか1項に記載の発明の効果を得ることができる。
以下、図面により本発明の実施形態を詳細に説明する。但し、この実施形態に記載される構成要素、種類、組み合わせ、形状、その相対位置などは特定的な記載がない限りこの説明の範囲をそれのみに限定する主旨ではなく、単なる説明例に過ぎない。
図1に、本発明の実施形態として、イン(IN:ホスト装置から見て入力)転送用のエンドポイント部とアウト(OUT:ホスト装置から見て出力)転送用のエンドポイント部を同時に使用する際にバッファメモリとして用いるFIFOメモリを共有する構成を示す。図示したように、シリアル入力エンジン12、エンドポイント群13、およびI/Oコントローラ15を備えている。なお、ここでは、図を簡略化するために、エンドポイント部としてFIFOメモリを共有するエンドポイント部13a、13bのみを示す。エンドポイント部13aはイン転送のエンドポイント部、エンドポイント13bはアウト転送のエンドポイント部であり、それぞれ1つの占有FIFOメモリと1つの共有FIFOメモリを持つ。つまり、FIFOメモリ20aはエンドポイント部13aの占有FIFOメモリ、FIFO20bはエンドポイント部13bの占有FIFOメモリ、FIFOメモリ20cはエンドポイント部13aとエンドポイント部13bの共有FIFOメモリである。
図1では、イン転送においてエンドポイント部13aからホスト装置1へ送るデータ数が、アウト転送においてエンドポイント部13bがホスト装置1から受け取るデータ数より多い場合、(a)図に示したようにFIFOメモリ20cをエンドポイント部13a側で使用して、エンドポイント部13aではFIFOメモリ20aとFIFOメモリ20cを用いてユーザ回路からのデータを交互に受け取ることによりホスト装置1へデータを送り、エンドポイント部13bではFIFOメモリ20bのみ用いてホスト装置1からのデータを受け取りユーザ回路へ送る。
一方、アウト転送においてエンドポイント部13bのホスト装置1から受け取るデータ数がイン転送においてエンドポイント部13aからホスト装置1へ送るデータ数より多い場合は(b)図に示したようにFIFOメモリ20cをエンドポイント部13b側で使用して、エンドポイント部13bではFIFOメモリ20bとFIFOメモリ20cを用いてホスト装置1からのデータを交互に受け取りユーザ回路へ送り、エンドポイント部13aではFIFOメモリ20aのみ用いてユーザ回路からのデータを受け取りホスト装置1へデータを送る。
なお、このようにイン転送用のエンドポイント部とアウト転送用のエンドポイント部を同時に使用する際にホスト装置1へのデータ送信とホスト装置1からのデータ受信のデータ数に差が生じる例としては、ハードディスク記憶装置や光ディスク記憶装置などストレージデバイスで大容量のデータリードやデータライトを行う場合とか、ファクシミリ装置やスキャナ機能付きプリンタにおけるデータスキャン入力やプリント出力を行う場合などがある。また、ここでは説明しないが、例えば一つのUSBコントローラ6に対して複数のユーザ回路が接続されるような場合などにおいてホスト装置1へのデータ送信を行うエンドポイント部同士、ホスト装置1からのデータ受信を行うエンドポイント部同士でデータ数に差が生じる場合もあり得る。
図2に、この実施形態のUSBコントローラ6の構成を示す。図2に示したUSBコントローラ6が図21に示した従来技術のUSBコントローラ6aと異なる点はエンドポイント群13の中に共有FIFOコントローラ17を持つことである。
この共有FIFOコントローラ17は複数のエンドポイント部で共有するFIFOメモリをどのエンドポイント部に接続するかを制御するものであり、転送されたデータ量をエンドポイント部毎に計数し、先に所定のデータ量を転送したエンドポイント部に共有するFIFOメモリを与えるとか、所定時間毎に転送データ量を比較して共有FIFOメモリを転送データ量の多いエンドポイント部に接続するように決定する。なお、データ量の計数は共有FIFOメモリを接続する対象のエンドポイント部または共有FIFOコントローラ17にカウンタを設けて行う。
図3は本発明の第1の実施例を示すUSBコントローラ6のエンドポイント群の構成である。この実施例では、二つのエンドポイント部EPA、EPBが一つのFIFOメモリを共有する。図3に示したFIFOメモリ20aにはエンドポイント部EPAのデータを格納し、FIFOメモリ20bにはエンドポイント部EPBのデータを格納し、FIFO メモリ20cはエンドポイント部EPA、EPBが共有する。FIFOメモリ20cはデータ転送の状況に応じてエンドポイント部EPA、EPBのうちどちらかのデータを格納するように制御される。
そのため、この実施例では、図3に示したように、エンドポイント部EPAのFIFOメモリに対するデータ書き込みの制御を行うライトコントローラ21a、エンドポイント部EPBのFIFOメモリに対するデータ書き込みの制御を行うライトコントローラ21b、エンドポイント部EPAのFIFOメモリからのデータ読み出しの制御を行うリードコントローラ22a、エンドポイント部EPBのFIFOメモリからのデータ読み出しの制御を行うリードコントローラ22b、エンドポイント部EPAのデータを読み出すFIFOメモリを選択するマルチプレクサ23a、エンドポイント部EPBのデータを読み出すFIFOメモリを選択するマルチプレクサ23b、エンドポイント部EPA、EPBが共有するFIFOメモリに入力するライト制御信号を切り換えるマルチプレクサ24、エンドポイント部EPA、EPBが共有するFIFOメモリに入力するライトデータ信号を切り換えるマルチプレクサ25、エンドポイント部EPA、EPBで共有するFIFOメモリに入力するリード制御信号を切り換えるマルチプレクサ26、エンドポイント部EPAで転送したデータ量を計数するカウンタ27a、エンドポイント部EPBで転送したデータ量を計数するカウンタ27bなどを備える。
図4に、この実施例のエンドポイント群におけるデータリード/ライトの動作フローを示す。以下、図4に従ってこの動作フローを説明する。
まず、エンドポイント部EPA、EPBにより共有されるFIFOメモリ20cの接続されるエンドポイント部が共有FIFOコントローラ17から入力する共有FIFO制御信号によってエンドポイント部EPAに設定される場合(S1でYes)、ライトコントローラ21aからの制御信号によってマルチプレクサ24はエンドポイント部EPAのライト制御信号を出力し、マルチプレクサ25はFIFOメモリ20aに入力するものと同一のエンドポイント部EPAのライトデータ信号を出力する。また、リードコントローラ22aからの制御信号によってマルチプレクサ26はリードコントローラ22aから出力されるエンドポイント部EPAのリード制御信号を出力し、これらはFIFOメモリ20cに接続される(S2)。
そして、FIFOメモリ20cがこのようにエンドポイント部EPAに接続される場合、ライトコントローラ21aはエンドポイント部EPAのライト制御信号をFIFOメモリ20aに出力するように設定され、リードコントローラ22aは、エンドポイント部EPAのリード制御信号をFIFOメモリ20cに出力するように設定される。同時に、エンドポイント部EPAのリードデータを読み出すFIFOメモリを選択するマルチプレクサ23aの制御信号の値をFIFOメモリ20cのリードデータ信号を出力するように設定する(S3)。
この後、エンドポイント部EPAのライト制御信号がライトコントローラ21aに入力すると、ライトコントローラ21aはFIFOメモリ20aに対してライト制御信号を出力し、FIFOメモリ20aではライトコントローラ21aから入力されるライト制御信号に基づいてライトデータをFIFOメモリに書き込む(S4)。
そして、FIFOメモリ20aへのデータ書き込みが終了すると(S5でYes)、FIFOメモリ20cからのデータ読み出しが終了しているかどうかの判断を行うが(S6)、最初は読み出し側FIFOメモリ(FIFOメモリ20c)には元々データが入っておらず、その状態を示す信号がデータ読み出し終了であるので(S6でYes)、FIFOメモリ20cが共有FIFO制御信号でエンドポイント部EPAに設定されている場合(S7でYes)、ライトコントローラ21aは、ライト制御信号出力先FIFOメモリをFIFOメモリ20aからFIFOメモリ20cに変更する。また、リードコントローラ22aは、リード制御信号出力先FIFOメモリをFIFOメモリ20cからFIFOメモリ20aに変更し、同時にエンドポイント部EPAのリードデータを読み出すFIFOメモリを選択するマルチプレクサ23aの制御信号の値をFIFOメモリ20aのリードデータ信号を出力するように設定する(S8)。
この後、エンドポイント部EPAのライト制御信号がライトコントローラ21aに入力すると、ライトコントローラ21aは今度はFIFOメモリ20cに対してライト制御信号を出力し、FIFOメモリ20cではライトコントローラ21aから入力されるライト制御信号に基づいてライトデータをFIFOメモリに書き込む。
一方、FIFOメモリ20aへのデータ書き込みが終了したとき、FIFOメモリ20aの状態を示す信号はデータ書き込み中からデータ書き込み終了へと変化するが、その変化は読み出し先(シリアル入力エンジン12またはユーザ回路(I/Oコントーラ15経由の割込み信号、またはエンドポイント部EPAがDMAをサポートする場合はそのリクエスト信号によって))に示される。そして、エンドポイント部EPAのリード制御信号がリードコントローラ22aに入力すると、リードコントローラ22aはFIFOメモリ20aに対してリード制御信号を出力し、FIFOメモリ20aではリードコントローラ22aから入力されるライト制御信号に基づいてリードデータをFIFOメモリから読み出す(S9)。
こうして、FIFOメモリ20cへのデータ書き込みが終了したとき(S10でYes)、読み出し側FIFOメモリ(FIFOメモリ20a)の状態を示す信号がデータ読み出し終了状態であり(S11でYes)、FIFOメモリ20cが共有FIFO制御信号でエンドポイント部EPAに設定されている場合(S1でYes)、FIFOメモリ20cの接続はエンドポイント部EPAのままに保つ(S2)。
そして、ライトコントローラ21aはライト制御信号を出力するFIFOメモリをFIFOメモリ20cからFIFOメモリ20aに変更する。また、リードコントローラ22aは、リード制御信号を出力するFIFOメモリをFIFOメモリ20aからFIFOメモリ20cに変更し、同時にエンドポイント部EPAのリードデータを読み出すFIFOメモリを選択するマルチプレクサ23aの制御信号の値をFIFOメモリ20cのリードデータ信号を出力するように設定する(S3)。
それに対して、FIFOメモリ20cへのデータ書き込みが終了した時点でFIFOメモリ20aのデータ読み出しが未だ終了していない場合(S11でNo)は、FIFOメモリ20aの読み出しが終わるのを待ち(S9〜S11、この間FIFOメモリ20cへのデータ書き込みは禁止)、FIFOメモリ20aのデータ読み出しが終了した場合(S11でYes)、FIFOメモリ20cが共有FIFO制御信号でエンドポイント部EPAに設定されている場合(S1でYes)、FIFOメモリ20cの接続はエンドポイント部EPAのまま保持する(S2)。
そして、ライトコントローラ21aはライト制御信号を出力するFIFOメモリをFIFOメモリ20cからFIFOメモリ20aに変更する。また、リードコントローラ22aはリード制御信号を出力するFIFOメモリをFIFOメモリ20aからFIFOメモリ20cに変更し、同時にエンドポイント部EPAのリードデータを読み出すFIFOメモリを選択するマルチプレクサ23aの制御信号の値をFIFOメモリ20cのリードデータ信号を出力するように設定する(S3)。
以後、FIFOメモリ20cがエンドポイント部EPAに接続されている間は、同様に、データ書き込みを行うFIFOメモリとデータ読み出しを行うFIFOメモリをライトコントローラ21aとリードコントローラ22aによってFIFOメモリ20aとFIFOメモリ20cの間で切り換えながらデータ転送を行う(S1〜S11)。
それに対して、ステップS1またはS7においてFIFOメモリ20cがエンドポイント部EPAに接続されない(EPBに接続される)と判定された場合、ライトコントローラ21bからの制御信号によってマルチプレクサ24はエンドポイント部EPBのライト制御信号を出力し、マルチプレクサ25はFIFOメモリ20bに入力するものと同一のエンドポイント部EPBのライトデータを出力する。また、リードコントローラ22bからの制御信号によってマルチプレクサ26はリードコントローラ22bから出力されるエンドポイント部EPBのリード制御信号を出力し、これらはFIFOメモリ20cに接続される。そのため、エンドポイント部EPAでは、ライトコントローラ21aは共有FIFO制御信号によってライト制御信号をFIFOメモリ20aのみに出力するように設定され、リードコントローラ22aはリード制御信号をFIFOメモリ20aのみに出力するように設定される。同時に、エンドポイント部EPAのリードデータを読み出すFIFOメモリを選択するマルチプレクサ23aの制御信号の値はFIFOメモリ20aのリードデータを出力するように設定される(S12)。そして、FIFOメモリ20aはデータ書き込み用に設定される(S13)。
こうして、エンドポイント部EPAのライト制御信号がライトコントローラ21aに入力すると、ライトコントローラ21aはFIFOメモリ20aに対してライト制御信号を出力し、FIFOメモリ20aではライトコントローラ21aから入力するライト制御信号に基づいてライトデータをFIFOメモリに書き込む(S14、S15でNo)。そして、FIFOメモリ20aへのデータ書き込みが終了すると(S15でYes)、FIFOメモリ20aはデータ読み出し用に設定され(S16)、その状態変化を示す信号が読み出し先(シリアル入力エンジン12またはユーザ回路)に示される。
続いて、読み出し先から、エンドポイント部EPAに対するリード制御信号がリードコントローラ22aに入ると、リードコントローラ22aはFIFOメモリ20aに対してリード制御信号を出力し、FIFOメモリ20aではリードコントローラ22aから入力されるリード制御信号に基づいてリードデータをFIFOメモリから読み出す(S17、S18でNo、この間ライトデータは書き込み禁止)。
そして、FIFOメモリ20aからのデータ読み出しが終了し(S18でYes)、FIFOメモリ20cが共有FIFO制御信号でエンドポイント部EPAに設定されない(EPBに接続される)場合(S1でNo)、FIFOメモリ20cはEPBに接続された状態を保持する(S12)。
こうして、FIFOメモリ20aは再び書き込み用に設定され(S13)、エンドポイント部EPAのライト制御信号がライトコントローラ21aに入力するとライトコントローラ21aはFIFOメモリ20aに対してライト制御信号を出力し、FIFOメモリ20aではライトコントローラ21aから入力されるライト制御信号に基づいてライトデータをFIFOメモリに書き込む(S14、S15でNo)。以後、ステップS1においてFIFOメモリ20cがエンドポイント部EPAに接続されない(エンドポイント部EPBに接続される)と判定される限り、ステップS13〜S18を繰り返す。
なお、エンドポイント部EPBにおいては、FIFOメモリ20cがエンドポイント部EPAに接続される間、ステップS13〜S18と同様な動作をFIFOメモリ20bを用いて実行し、FIFOメモリ20cがエンドポイント部EPBに接続される間は、ステップS3〜S11と同様の動作をFIFOメモリ20bとFIFOメモリ20cを用いて実行する。
こうして、エンドポイント部EPA、EPBが共有するFIFOメモリ20cの接続されるエンドポイント部が共有FIFOコントローラ17から入力される共有FIFO制御信号によって変更される度に、マルチプレクサ24、25、26によってFIFOメモリ20cに接続されるエンドポイント部のライト制御、ライトデータ、リード制御の各信号が変更され、それにより、エンドポイント部EPA、EPBにおけるデータ転送方法(FIFOメモリ20c使用の有無)が変更される。
なお、それぞれのエンドポイント部のライト制御信号およびライトデータ信号は、イン転送の場合、I/Oコントローラ15との間で接続され、アウト転送の場合はシリアル入力エンジン12との間で接続される。また、エンドポイント部のリード制御信号およびリードデータ信号は、イン転送のエンドポイントの場合、シリアル入力エンジン12との間で接続され、アウト転送の場合はI/Oコントローラ15との間で接続される。
また、図3に示したこの実施例の構成では、エンドポイント部EPA、EPBにおける転送の方向は、両方ともイン転送、両方ともアウト転送、一方がイン転送で他方がアウト転送のいずれも可能で、また、転送の種類の組合せに依存するものではない。さらに、この実施例では、二つのエンドポイント部で一つの共有FIFOメモリを持つ場合を示したが、本発明はこのような場合だけに限定されず、他のエンドポイント部と共有しないFIFOメモリを少なくとも一つ持ちさえすれば、例えば三つのエンドポイント部で一つの共有FIFOメモリを持つような構成でもよいし、また、二つのエンドポイント部が二つの共有FIFOメモリを持つような構成でもよい。
また、エンドポイント部EPA、EPBが共有するFIFOメモリ20cの接続されるエンドポイント部の決定については、カウンタ27a、27bから入力される各エンドポイント部のデータ転送量を所定時間が経過する毎に、または、カウンタ27a、27bから入力される各エンドポイント部のデータ転送量の一方が予め設定する値に達する毎に、または所定時間が経過するかあるいは一方が予め設定する値に達する毎に、EPAとEPBのデータ転送量を比較して行う。そして、データ転送量が多いエンドポイント部に共有FIFOメモリ20cを接続することで、データ転送量の多いエンドポイント部のデータ転送速度を向上させることができる。
次に、図3に示した共有FIFOメモリ20cの接続先エンドポイント部の切換え動作を図3および図5〜図7に示した動作フロー図により説明する。
図5はFIFOメモリを共有するエンドポイント部のうちの一方のデータ転送量が設定値に達した場合に共有FIFOメモリ20cの接続先を変更する場合の動作フローである。
この場合、共有FIFOメモリ20cはまず共有FIFOコントローラ17によって初期設定されているエンドポイント部に接続される(S21)。続いて、共有FIFOコントローラ17はエンドポイント部EPA、EPB毎のデータ量を計数するカウンタ27a、27bをリセットし(S22)、転送されたデータ量のカウントを開始する(S23)。そして、エンドポイント部EPAの転送データ量が設定値に達せず(S24でNo)、エンドポイント部EPBの転送データ量も設定値に達しない限り(S25でNo)、カウンタ27a、27bにおけるカウントを続行する(S23)。
こうして、エンドポイント部EPAの転送データ量が設定値に達した場合(S24でYes)、共有FIFOコントローラ17は共有FIFOメモリ20cの接続先をエンドポイント部EPAに設定し(S27)、その後、ステップS22以下を繰り返す。また、エンドポイント部EPBの転送データ量が設定値に達した場合(S25でYes)、共有FIFOコントローラ17は共有FIFOメモリ20cの接続先をエンドポイント部EPBに設定し(S26)、その後、ステップS22以下を繰り返す。
こうして、この動作フローの構成のシステムでは、バッファメモリを共有する複数のエンドポイント部のいずれかが所定のデータ量を転送する毎に所定のデータ量を転送したエンドポイント部にバッファメモリを与えるので、バッファメモリを用いて転送されたデータ量の多いエンドポイント部に共有バッファメモリを与えることができ、したがって、回路規模を抑えつつデータ転送速度を向上させることができる。
図6はデータ転送量のカウント開始後、設定された一定時間経過後に双方のデータ転送量を比較して共有FIFOメモリ20cの接続先を変更する場合の動作フロー図である。
この場合も、共有FIFOコントローラ17は、まず共有FIFOメモリ20cを初期設定されたエンドポイント部に接続する(S31)。そして、エンドポイント部EPA、EPB毎のデータ量をカウントするカウンタ27a、27bをリセットし、同時に共有FIFOコントローラ17内にあるデータ転送量カウント開始後の経過時間を計測するタイムカウンタもリセットし(S32)、それぞれ転送されたデータ量のカウントと経過時間の計測を開始させる(S33)。そして、経過時間を計測するタイムカウンタの値が設定値に達しない間は(S34でNo)、カウンタ27a、27bによる転送データ量のカウントとタイムカウンタによる経過時間の計測を続行する。
こうして、経過時間を計測するタイムカウンタの値が設定値に達すると(S34でYes)、共有FIFOコントローラ17はエンドポイント部EPAにおける転送データ量とエンドポイント部EPBにおける転送データ量を比較する(S35)。そして、エンドポイント部EPAの転送データ量の方が多い場合(S35でYes)、共有FIFOコントローラ17は共有FIFOメモリ20cの接続先をエンドポイント部EPAに設定し(S36)、その後、ステップS32以下を繰り返す。また、エンドポイント部EPBの転送データ量の方が多い場合は(S35でNo)、共有FIFOメモリ20cの接続先をエンドポイント部EPBに設定し(S37)、その後、ステップS32以下を繰り返す。
このように、この動作フローの構成のシステムでは、所定時間が経過する毎に共有バッファメモリを共有するエンドポイント部についてバッファメモリを介して転送されたデータ量が比較され、バッファメモリを用いて転送されたデータ量の多いエンドポイント部に共有バッファメモリが与えられるので、図5に示した動作フローのシステムと同様に回路規模を抑えつつデータ転送速度を向上させることができる。
図7はFIFOメモリを共有するエンドポイント部のうちの一方のデータ転送量が設定値に達した場合、またはデータ転送量のカウント開始後設定された一定時間経過後に双方のデータ転送量を比較して共有FIFOメモリ20cの接続先を変更する場合の動作フロー図である。
この場合、共有FIFOコントローラ17はまず共有FIFOメモリ20cを初期設定されるエンドポイント部に接続する(S41)。そして、共有FIFOコントローラ17はエンドポイント部EPA、EPB毎のデータ量をカウントするカウンタ27a、27bをリセットし、同時にFIFOコントローラ17内にあるデータ転送量カウント開始後の経過時間を計測するタイムカウンタもリセットし(S42)、それぞれ転送されたデータ量のカウントを開始させる(S43)。
そして、エンドポイント部EPAの転送データ量が設定値に達せず(S44でNo)、エンドポイント部EPBの転送データ量も設定値に達せず(S45でNo)、さらに経過時間を計測するタイムカウンタの値も設定値に達しない(S46でNo)間は、カウンタ27a、27bにおける転送データ量のカウントとタイムカウンタにおける経過時間の計測を続行する。
こうして、エンドポイント部EPAの転送データ量が設定値に達した場合(S44でYes)、共有FIFOコントローラ17は共有FIFOメモリ20cの接続先をエンドポイント部EPAに設定し(S49)、その後、ステップS42以下を繰り返す。また、エンドポイント部EPBの転送データ量が設定値に達した場合(S45でYes)、共有FIFOコントローラ17は共有FIFOメモリ20cの接続先をエンドポイント部EPBに設定し(S48)、その後、ステップS42以下を繰り返す。
また、経過時間を計測するタイムカウンタの値が設定値に達した場合(S46でYes)、共有FIFOコントローラ17はエンドポイント部EPAにおける転送データ量とエンドポイント部EPBにおける転送データ量を比較し(S47)、エンドポイント部EPAの転送データ量の方が多い場合は(S47でYes)、共有FIFOメモリ20cの接続先をエンドポイント部EPAに設定し(S49)、その後、ステップS42以下を繰り返す。また、エンドポイント部EPBの転送データ量の方が多い場合は(S47でNo)、共有FIFOメモリ20cの接続先をエンドポイント部EPBに設定し(S48)、その後、ステップS42以下を繰り返す。
こうして、このような構成のシステムでは、より効果的にデータ転送速度を向上させることができる。
なお、図5〜図7に示した動作フロー図では、一つのエンドポイント部の転送データ数が設定値に達する度に、または経過時間が設定値に達する度に、共有FIFOメモリ20cの接続先エンドポイント部が前回と異なれば、共有FIFOメモリ20cの接続先エンドポイント部を変更したが、例えば同一エンドポイント部の所定時間当たりの転送データ量が続けて所定回数(例えば2度)多くなってはじめて接続先のエンドポイント部を変更するようにしてもよい。
また、所定のデータ量を転送するに要した所要時間を共有メモリを共有する各エンドポイント部について比較し、所要時間の短いエンドポイント部に共通FIFOメモリを接続する構成でもよい。
また、転送データ量の設定値、経過時間の設定値をUSBコントローラ内部のレジスタなどを用いて変更できるようにしてもよい。例えば、経過時間の設定値については、バッファメモリを介して転送された所定時間におけるデータ量が少な過ぎる場合には所定時間を長くし、データ量が多すぎれば所定時間を短くするのである。
また、転送データ量の設定値は全てのエンドポイント部で同一である必要はない。
また、転送されたデータ量をエンドポイント部間で比較する代わりに、転送されたデータ量の差を求め、その差が予め設定した所定値以上になった場合に接続先のエンドポイントを変更するようにしてもよい。
また、所定のデータ量を転送するのに要する時間が大幅に変わるような場合は転送データ量の設定値または経過時間の設定値を変更するようにして共有FIFOメモリを接続するエンドポイント部の制御効率を上げることも可能である。
次に、本発明の第2の実施例について説明する。
この実施例では、共有バッファメモリの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有バッファメモリの接続先変更タイミングを遅らせることにより大容量データを送受信しているエンドポイント部の方に共有バッファメモリが接続されるようにして、さらにデータ転送速度を向上させる。以下、第2の実施例の動作フローを説明する。
図8に示した動作フローでは、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量が転送された場合、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないときに共有バッファメモリの接続先変更タイミングを遅らせる。
この場合、共有FIFOコントローラ17はまず、共有FIFOメモリ20cを初期設定されたエンドポイント部に接続する(S51)。そして、共有FIFOコントローラ17はEPA、EPB毎の転送データ量を計数するカウンタ27a、27bをリセットし、同時に共有FIFOコントローラ17内にある共有FIFOメモリ20cの接続先変更タイミングを遅らせる延長フラグもリセットし(S52)、転送データ量の計数を開始する(S53)。
そして、EPAの転送データ量が設定値(延長フラグがセットされていない状態における設定値であり、以下、初期設定値と称す)に達せず(S54でNo)、且つEPBの転送データ量も初期設定値に達しない(S55でNo)間、カウンタ27a、27bによる転送データ量の計数を続ける(S53)。
それに対して、EPAの転送データ量が初期設定値に達した場合には(S54でYes)、図9に示したS56における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当しないとき(S56でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPAに設定し(S57)、S52以下を繰り返す。一方、図9に示したS56における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当する場合は(S56でYes)、延長フラグをセットし(S58)、S53以下を繰り返す。
また、EPBの転送データ量が初期設定値に達した場合は(S55でYes)、図10に示したS59における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当しないとき(S59でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPBに設定し(S60)、S52以下を繰り返す。一方、図10に示したS59における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当するときは(S59でYes)、延長フラグをセットし(S61)、S53以下を繰り返す。
なお、S58、S61で延長フラグがセットされた後のS54におけるEPAのデータ転送量の設定値、S55におけるEPBのデータ転送量の設定値は、初期設定値とは別の設定値(以下、延長設定値と称す)を用いる。
図11は、所定時間が経過した際に共有バッファメモリの現在接続されているエンドポイント部とは別のエンドポイント部のデータ転送量の方が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのときのデータサイズが設定された最大の大きさの場合に共有バッファメモリの接続先変更タイミングを遅らせる動作を示す動作フロー図である。以下、図11に従って、この動作フローを説明する。
この動作フローでは、共有FIFOコントローラ17は共有FIFOメモリ20cをまず初期設定されているエンドポイント部に接続する(S71)。そして、共有FIFOコントローラ17はEPA、EPB毎の転送データ量を計数するカウンタ27a、27bをリセットし、同時に共有FIFOコントローラ17内にあるデータ転送量カウント開始後の経過時間を計数するタイムカウンタと共有FIFOメモリ20cの接続先変更タイミングを遅らせる延長フラグもリセットし(S72)、転送されたデータ量の計数と経過時間の計数を開始する(S73)。そして、タイムカウンタの値(経過時間)が初期設定値に達しない間(S74でNo)、カウンタ27a、27bによる転送データ量の計数とタイムカウンタによる経過時間の計数を行う。
こうして、タイムカウンタの値(経過時間)が初期設定値に達したならば(S74でYes)、共有FIFOコントローラ17はEPAにおける転送データ量とEPBにおける転送データ量を比較する(S75)。そして、EPAの転送データ量の方が多い場合は(S75でYes)、図12に示したS76における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当しないとき(S76でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPAに設定し(S77)、S72以下を繰り返す。一方、図12に示したS76における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当するときは(S76でYes)、延長フラグをセットし(S78)、S73以下を繰り返す。
また、EPBの転送データ量の方が多い場合は(S75でNo)、図13に示したS79における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当しないとき(S79でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPBに設定し(S80)、S72以下を繰り返す。一方、図13に示したS79における共有FIFOメモリ20cの接続先変更の延長フラグセット条件に該当するときは(S79でYes)、延長フラグをセットし(S81)、S73以下を繰り返す。
なお、S78、S81において延長フラグがセットされた後のS74におけるタイムカウンタの値(経過時間)の設定値は延長設定値を用いる。
また、図14に示した動作フローでは、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量が転送された場合、直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないときに共有バッファメモリの接続先変更タイミングを遅らせるとともに、所定時間が経過した際に共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部のデータ転送量の方が多く、且つ、直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのデータパケットのデータサイズが設定された最大の大きさの場合に共有バッファメモリの接続先変更タイミングを遅らせる。以下、図14に従って、この動作フローを説明する。
この実施例では、共有FIFOコントローラ17はまず共有FIFOメモリ20cを初期設定されているエンドポイント部に接続する(S91)。そして、共有FIFOコントローラ17はEPA、EPB毎の転送データ量を計数するカウンタ27a、27bをリセットし、同時に共有FIFOコントローラ17内にある転送データ量のカウント開始後の経過時間を計数するタイムカウンタと共有FIFOメモリ20cの接続先変更タイミングを遅らせる転送データ量延長フラグ、タイム延長フラグもリセットし(S92)、各カウンタの計数を開始する(S93)。そして、EPBの転送データ量が初期設定値に達せず(S94でNo)、EPAの転送データ量も初期設定値に達しないで(S95でNo)、且つタイムカウンタの値(経過時間)も初期設定値に達しない間(S96でNo)、カウンタ27a、27bによる転送データ量の計数とタイムカウンタによる経過時間の計数を続行する(S93)。
こうして、EPAの転送データ量が初期設定値に達したならば(S95でYes)、図15に示したS97における共有FIFOメモリ20cの接続先変更の転送データ量延長フラグをセットする条件に該当しない場合(S97でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPAに設定し(S98)、S92以下を繰り返す。
一方、図15に示したS97における共有FIFOメモリ20cの接続先変更の転送データ量延長フラグのセット条件に該当する場合は(S97でYes)、転送データ量延長フラグをセットし(S99)、S93以下を繰り返す。
また、EPBの転送データ量が初期設定値に達したならば(S94でYes)、図16に示したS100における共有FIFOメモリ20cの接続先変更の転送データ量延長フラグのセット条件に該当しない場合(S100でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPBに設定し(S101)、S92以下を繰り返す。一方、図16に示したS100における共有FIFOメモリ20cの接続先変更の転送データ量延長フラグのセット条件に該当する場合は(S100でYes)、転送データ量延長フラグをセットし(S102)、S93以下を繰り返す。
また、タイムカウンタの値(経過時間)が初期設定値に達した場合は(S96でYes)、共有FIFOコントローラ17はEPAで転送されたデータ量とEPBで転送されたデータ量を比較し(S103)、EPAで転送されたデータ量の方が多い場合(S103でYes)、図17に示したS104における共有FIFOメモリ20cの接続先変更のタイム延長フラグセット条件に該当しないとき(S104でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPAに設定し(S98)、S92以下を繰り返す。一方、図17に示したS104における共有FIFOメモリ20cの接続先変更のタイム延長フラグセット条件に該当する場合は(S104でYes)、タイム延長フラグをセットし(S105)、S93以下を繰り返す。
また、EPBで転送されたデータ量の方が多い場合は(S103でNo)、図18に示したS106における共有FIFOメモリ20cの接続先変更のタイム延長フラグセット条件に該当しないとき(S106でNo)、共有FIFOコントローラ17は共有FIFOメモリ20cをEPBに設定し(S101)、S92以下を繰り返す。一方、図18に示したS106における共有FIFOメモリ20cの接続先変更のタイム延長フラグセット条件に該当する場合は(S106でYes)、タイム延長フラグをセットし(S107)、S93以下を繰り返す。
なお、S99、S102で転送データ量延長フラグがセットされた後のS95におけるEPAの転送データ量の設定値、S94におけるEPBの転送データ量の設定値、およびS105、S107でタイム延長フラグがセットされた後のS96におけるタイムカウンタの値(経過時間)の設定値は延長設定値を用いる。
以上、第2の実施例について説明したが、前記において、エンドポイント部の転送データ数が設定値に達するエンドポイント部、または経過時間が設定値に達するエンドポイント部が変わる度に共有FIFOメモリ20cの接続先エンドポイント部を変更している点については、例えば同一エンドポイント部の転送データ量が続けて2度多くなってはじめて接続先エンドポイント部を変更するようにしてもよい。
また、転送データ量の設定値および経過時間の設定値をUSBコントローラ内部のレジスタなどにより変更できるようにしてもよい。また、転送データ量の設定値は全てのエンドポイント部で同一である必要はない。
また、所定のデータ量を転送するのに要する時間が大幅に変わるような場合は転送データ量の設定値または経過時間の設定値を変更するようにして共有FIFOメモリを接続するエンドポイント部の制御効率を上げることも可能である。
また、前記においては、延長フラグセット後の共有FIFOメモリ20cの接続先のエンドポイント部変更の延長回数は1回であるが、複数のフラグを用いたり、フラグの代わりにカウンタを用いたりして、延長回数を複数回にしてもよい。
本発明の一実施形態を示すUSB通信システム要部の構成ブロック図。 本発明の一実施形態を示すUSB通信システム要部の他の構成ブロック図。 本発明の第1の実施例を示すUSB通信システム要部の構成ブロック図。 本発明の第1の実施例を示すUSB通信システム要部の動作フロー図。 本発明の第1の実施例を示すUSB通信システム要部の他の動作フロー図。 本発明の第1の実施例を示すUSB通信システム要部の他の動作フロー図。 本発明の第1の実施例を示すUSB通信システム要部の他の動作フロー図。 本発明の第2の実施例を示すUSB通信システム要部の動作フロー図。 本発明の第2の実施例を示すUSB通信システム要部の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の動作フロー図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の動作フロー図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 本発明の第2の実施例を示すUSB通信システム要部の他の説明図。 従来技術の一例を示すUSB通信システムの接続概念図。 従来技術の一例を示すUSB通信システム要部の構成ブロック図。 従来技術の一例を示すUSB通信システム要部の他の構成ブロック図。 従来技術の一例を示すUSB通信システム要部の他の構成ブロック図。
符号の説明
1 USBホスト装置
2 ハブ
3 デバイス
4 USBバス
6 USBコントローラ
11 USBトランシーバ
12 シリアル入力エンジン
13 エンドポイント部
15 I/Oコントローラ
17 共有FIFOコントローラ
20 FIFOメモリ
21 ライトコントローラ
22 リードコントローラ
23 マルチプレクサ
24 マルチプレクサ
25 マルチプレクサ
26 マルチプレクサ
27 カウンタ

Claims (7)

  1. USB規格に準拠したデータ通信を行うデータ通信システムにおいて、一つのエンドポイント部に対してバッファメモリを複数用意し、その複数のバッファメモリのうち一つ以上のバッファメモリを他のエンドポイント部との共有バッファメモリとし、この共有バッファメモリを使用するエンドポイント部を決定する際、その共有バッファメモリを共有可能な各エンドポイント部についてバッファメモリを用いて転送されたデータ量を計数することによりその共有バッファメモリを用いるエンドポイント部を決定する構成とし、共有バッファメモリの接続先変更の際、共有バッファメモリの接続先変更直前にデータパケットを送受信したエンドポイント部とそのデータパケットのデータサイズの組合せに応じて共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とするデータ通信システム。
  2. 請求項1記載のデータ通信システムにおいて、バッファメモリを共有する複数のエンドポイント部のいずれかが所定のデータ量を転送する毎に所定のデータ量を転送したエンドポイント部に共有バッファメモリを与える構成とし、共有バッファメモリの接続先変更の際、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送し、しかも直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とするデータ通信システム。
  3. 請求項1記載のデータ通信システムにおいて、所定時間が経過する毎に共有バッファメモリを共有するエンドポイント部についてバッファメモリを介して転送されたデータ量を比較し、そのとき、共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で転送されたデータ量の方が多く、しかも直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部であり、そのデータパケットのデータサイズが設定された最大の大きさの場合、共有バッファメモリの接続先変更タイミングを遅らせる構成としたことを特徴とするデータ通信システム。
  4. 請求項1記載のデータ通信システムにおいて、共有バッファメモリを共有する複数のエンドポイント部のいずれかが所定のデータ量を転送するか、または所定時間が経過するか、そのどちらかの条件を満たす毎に、
    所定のデータ量を転送したエンドポイント部に共有バッファメモリを与えるか、共有するエンドポイント部についてバッファメモリを介して転送されたデータ量を比較して共有バッファメモリを用いるエンドポイント部を決定し、しかも共有バッファメモリが現在接続されているエンドポイント部とは別のエンドポイント部で所定のデータ量を転送した場合で直前に送受信したデータパケットのデータサイズが設定された最大の大きさでないとき、
    または、所定時間が経過した際に共有バッファメモリの現在接続されているエンドポイント部とは別のエンドポイント部のデータパケットで転送されたデータ量の方が多く、しかも直前にデータパケットを送受信したエンドポイント部が共有バッファメモリの現在接続されているエンドポイント部でありそのデータパケットのデータサイズが設定された最大の大きさのとき、
    共有バッファメモリの接続先変更タイミングを遅らせる構成にしたことを特徴とするデータ通信システム。
  5. 請求項2または請求項4記載のデータ通信システムにおいて、共有バッファメモリの接続先変更タイミングを遅らせるためのデータ量の設定値を変更可能な構成としたことを特徴とするデータ通信システム。
  6. 請求項3または請求項4記載のデータ通信システムにおいて、共有バッファメモリの接続先変更タイミングを遅らせるための所定時間の設定値を変更可能な構成としたことを特徴とするデータ通信システム。
  7. 請求項1乃至請求項6のいずれか1項に記載のデータ通信システムにおいて、バッファメモリがFIFOメモリであることを特徴とするデータ通信システム。
JP2004009801A 2004-01-16 2004-01-16 データ通信システム Pending JP2005202794A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004009801A JP2005202794A (ja) 2004-01-16 2004-01-16 データ通信システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004009801A JP2005202794A (ja) 2004-01-16 2004-01-16 データ通信システム

Publications (1)

Publication Number Publication Date
JP2005202794A true JP2005202794A (ja) 2005-07-28

Family

ID=34822714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004009801A Pending JP2005202794A (ja) 2004-01-16 2004-01-16 データ通信システム

Country Status (1)

Country Link
JP (1) JP2005202794A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198126A (ja) * 2007-02-15 2008-08-28 Fuji Xerox Co Ltd データ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、及び、データ受信方法
US7761620B2 (en) 2006-07-06 2010-07-20 Citizen Holdings Co., Ltd. Communications device, and communications method for enabling reception of real-time execution commands when a receive buffer is full
CN111930648A (zh) * 2020-08-07 2020-11-13 山东云海国创云计算装备产业创新中心有限公司 一种缓存配置方法、装置及电子设备和存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761620B2 (en) 2006-07-06 2010-07-20 Citizen Holdings Co., Ltd. Communications device, and communications method for enabling reception of real-time execution commands when a receive buffer is full
JP2008198126A (ja) * 2007-02-15 2008-08-28 Fuji Xerox Co Ltd データ通信システム、データ通信プログラム、データ受信装置、データ受信プログラム、及び、データ受信方法
CN111930648A (zh) * 2020-08-07 2020-11-13 山东云海国创云计算装备产业创新中心有限公司 一种缓存配置方法、装置及电子设备和存储介质

Similar Documents

Publication Publication Date Title
JP2002009849A (ja) Usb転送制御方法およびusbコントローラ
KR100485294B1 (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
JP4452690B2 (ja) 電子装置、その制御方法、ホスト装置及びその制御方法
KR20010051014A (ko) 데이터 전송 제어 장치 및 전자 기기
US9471521B2 (en) Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
KR100944892B1 (ko) 버스 시스템 및 버스 인터페이스
WO2010093529A2 (en) Memory interface with reduced read-write turnaround delay
JP3680763B2 (ja) データ転送制御装置及び電子機器
US7484028B2 (en) Burst-capable bus bridges for coupling devices to interface buses
US7334061B2 (en) Burst-capable interface buses for device-to-device communications
JP2005202794A (ja) データ通信システム
JP4072215B2 (ja) 画像処理装置及びその制御方法、画像処理システム
JP2004280199A (ja) データ通信システム
JP2004070423A (ja) Usbコントローラおよびそのデータ転送制御方法
JP4902570B2 (ja) 画像処理コントローラ及び画像処理装置
JP2004054437A (ja) データ通信システム
JPH11328069A (ja) Usbインタフェース装置
JP5381476B2 (ja) ファクシミリ通信装置、及び直列信号伝送線割当プログラム
JP6785009B2 (ja) 通信装置、及び、通信装置の制御方法
JP4862593B2 (ja) データ転送装置及び画像形成装置
JP2002288115A (ja) Usbコントローラ
JP2001338286A (ja) 画像処理方法と装置
EP1459191B1 (en) Communication bus system
KR20030089480A (ko) 통신 컨트롤러 및 통신 방법
KR20080019866A (ko) 칩들간의 통신을 위한 인터페이스 장치 및 방법