JP3649226B2 - データ転送制御装置、電子機器及びデータ転送制御方法 - Google Patents
データ転送制御装置、電子機器及びデータ転送制御方法 Download PDFInfo
- Publication number
- JP3649226B2 JP3649226B2 JP2003142194A JP2003142194A JP3649226B2 JP 3649226 B2 JP3649226 B2 JP 3649226B2 JP 2003142194 A JP2003142194 A JP 2003142194A JP 2003142194 A JP2003142194 A JP 2003142194A JP 3649226 B2 JP3649226 B2 JP 3649226B2
- Authority
- JP
- Japan
- Prior art keywords
- pipe area
- data
- reconstruction
- address
- pipe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Description
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【0002】
【背景技術】
近年、USB(Universal Serial Bus)1.1の規格に対する互換性を持ちながら、USB1.1に比べて格段に高速な480Mbps(HSモード)のデータ転送速度を実現できる規格として、USB2.0規格が策定され、注目を浴びている。
【0003】
【特許文献1】
特開2002−135132号公報
【0004】
【発明が解決しようとする課題】
さて、HS(High Speed)モードをサポートするUSB(Universal Serial Bus)2.0の市場が順調に拡大しているなか、USB Implementers Forum(USB−IF)によって、USBの簡易ホストを実現する規格の1つとしてUSBOn−The−Go(OTG)が策定された。USB2.0を拡張する形で策定されたOTG規格(OTG1.0)は、USBインターフェースの新たな付加価値を生む可能性を秘めており、その特質を生かしたアプリケーションの登場が待たれている。
【0005】
OTGなどにより実現される簡易ホストを利用すれば、これまでUSBを介してホスト(パーソナルコンピュータ等)に接続されていたペリフェラル(周辺機器)に、ホスト機能を持たせることができる。これにより、ペリフェラル同士をUSBで接続してデータを転送することが可能になり、例えばデジタルカメラとプリンタとをダイレクトに接続して、デジタルカメラの画像を印刷したり、デジタルカメラやデジタルビデオカメラをストレージ装置に接続して、データを保存することが可能になる。
【0006】
しかしながら、OTGなどの簡易ホストを利用してホスト機能を持たせるペリフェラルには、低性能のCPU(広義には処理部)が組み込まれているのが一般的である。従って、ホスト機能の追加により、ペリフェラルが有するCPU(ファームウェア)の処理負荷が重くなったり、処理が複雑化すると、他の処理に支障が生じたり、機器の設計期間が長期化する。
【0007】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、処理の効率化を図ることができるデータ転送制御装置、電子機器及びデータ転送制御方法を提供することにある。
【0008】
【課題を解決するための手段】
本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行うバッファコントローラと、パイプ領域とそのパイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラとを含み、パイプ領域とエンドポイントとの間でのデータ転送をポーズするポーズ処理を行い、データ転送のポーズ処理が完了した後に、確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、パイプ領域の再構築処理後に、ポーズしていたデータ転送を再開するデータ転送制御装置に関係する。
【0009】
本発明では、例えば処理部からポーズ等の指示があると、データ転送がその途中で一時的にポーズされる。そして例えば全てのパイプ領域(一部の例外があってもよい)についてのデータ転送のポーズ処理が完了すると、パイプ領域の再構築処理が行われる。この再構築処理は、既存のパイプ領域(バッファ領域)を削除する処理や新たなパイプ領域を追加する処理や既存のパイプ領域のサイズを変更する処理を含む。或いは再構築処理には、再構築の前後に存在するパイプ領域のデータをコピー(待避、移動)する処理や、パイプ領域の削除によりパケットバッファに生じた空き領域を他のパイプ領域に割り当てる処理や、パイプ領域の論理アドレスと物理アドレスの対応付けを変化させる処理などを含めることができる。そして本発明では、再構築処理が完了すると、ポーズされたデータ転送が再開され、残りのデータ転送が実行される。このように本発明によれば、パイプ領域についてのデータ転送の全てが完了するのを待つことなく、パイプ領域を再構築でき、処理の効率化を図れる。
【0010】
また本発明では、データ転送のポーズ処理の指示情報を記憶するレジスタと、全てのパイプ領域についてのポーズ処理が完了したことを示す情報を記憶するレジスタを含んでもよい。
【0011】
このようなレジスタ(指示手段、通知手段)を設けることで、ポーズ処理が確実に完了したことを待ってから、パイプ領域の再構築を開始できる。
【0012】
また本発明では、第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うようにしてもよい。
【0013】
このようにすれば第1のパイプ領域のデータが破壊(消去)されてしまう事態を防止できる。なお再構築の前後でスタートアドレスやエンドアドレスが変化した第1のパイプ領域のみについて、コピー処理を行ってもよい。
【0014】
また本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行うバッファコントローラと、パイプ領域とそのパイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラとを含み、確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うデータ転送制御装置に関係する。
【0015】
本発明によれば、例えばエンドポイントの増減があった場合に、パイプ領域(バッファ領域)の再構築処理が行われる。そしてこの再構築処理の際に第1のパイプ領域のデータのコピー処理が行われるため、第1のパイプ領域のデータが破壊(消去)されてしまう事態を防止できる。
【0016】
また本発明では、再構築前の第1のパイプ領域のスタートアドレスよりも再構築後の第1のパイプ領域のスタートアドレスの方が大きい場合には、再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスをデクリメントしながら、再構築前の第1のパイプ領域からデータを読み出し、再構築後の第1のパイプ領域の書き込みアドレスであるディスティネーションアドレスをデクリメントしながら、読み出されたデータを再構築後の第1のパイプ領域に書き込み、再構築前の第1のパイプ領域のスタートアドレスよりも再構築後の第1のパイプ領域のスタートアドレスの方が小さい場合には、ソースアドレスをインクリメントしながら、再構築前の第1のパイプ領域からデータを読み出し、ディスティネーションアドレスをインクリメントしながら、読み出されたデータを再構築後の第1のパイプ領域に書き込むようにしてもよい。
【0017】
このようにすれば、再構築前の第1のパイプ領域のデータが上書きされてしまう事態を防止しながら、再構築前の第1のパイプ領域から読み出したデータを再構築後の第1のパイプ領域に書き込むコピー処理を実現できる。
【0018】
また本発明では、再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスを生成し、再構築後の第1のパイプ領域の書き込みアドレスであるディスネーションアドレスを生成し、生成されたソースアドレス、ディスティネーションアドレスのいずれかを選択して、再構築用アドレスとして出力する再構築用アドレス生成回路と、前記再構築用アドレス生成回路からの再構築用アドレスと、前記転送コントローラからのアクセスアドレスと、データ転送制御装置を制御する処理部からのアクセスアドレスと、アプリケーション層デバイスからのアクセスアドレスのいずれかを選択して、パケットバッファに出力するアドレスセレクタと、パケットバッファから読み出されたデータをラッチするラッチ回路と、前記ラッチ回路にラッチされたデータと、前記転送コントローラからの書き込みデータと、前記処理部からの書き込みデータと、前記アプリケーション層デバイスからの書き込みデータのいずれかを選択し、選択されたデータをパケットバッファに出力する書き込みデータセレクタを含むようにしてもよい。
【0019】
また本発明では、再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスの初期値を記憶するレジスタと、再構築後の第1のパイプ領域の書き込みアドレスであるディスティネーションアドレスの初期値を記憶するレジスタと、ソースアドレス、ディスティネーションアドレスをインクリメントするか或いはデクリメントするかの指示情報を記憶するレジスタを含むようにしてもよい。このようなレジスタ(設定手段、指示手段)を設けて、データ転送制御装置と処理部との間で役割分担を行うことで、処理の効率化を図れる。
【0020】
また本発明では、パイプ領域でのデータの書き込みアドレス、読み出しアドレスを指す書き込みポインタ、読み出しポインタの制御を行うと共に、再構築前の第1のパイプ領域でのデータの書き込みアドレス、読み出しアドレスに対応する位置を、再構築後の第1のパイプ領域においても指すように、第1のパイプ領域の書き込みポインタ、読み出しポインタの移動処理を行うようにしてもよい。
【0021】
このようにすれば、パイプ領域の再構築後に、データ転送の途中の続きからデータ転送を適正に再開できる。
【0022】
また本発明では、再構築前の第1のパイプ領域でのデータの書き込みアドレス、読み出しアドレスに対応する位置を再構築後の第1のパイプ領域においても指すように、書き込みポインタ、読み出しポインタを移動するモードと、再構築後の第1のパイプ領域のスタートアドレス、エンドアドレスの位置を指すように、書き込みポインタ、読み出しポインタをクリアするモードとの切り替えの指示情報を記憶するレジスタを含むようにしてもよい。
【0023】
このようにすればデータ転送の途中から再開するモードと、ポインタをクリアするモードとをパイプ領域毎に切り替えることが可能になる。
【0024】
また本発明では、書き込みポインタ、読み出しポインタが指す絶対書き込みアドレス、絶対読み出しアドレスを、再構築前の第1のパイプ領域のスタートアドレス、エンドアドレスを基準とした相対書き込みアドレス、相対読み出しアドレスに変換し、該相対書き込みアドレス、相対読み出しアドレスを、再構築後の第1のパイプ領域のスタートアドレス、エンドアドレスに基づいて、絶対書き込みアドレス、絶対読み出しアドレスに変換することで、書き込みポインタ、読み出しポインタの移動処理を行うようにしてもよい。
【0025】
また本発明では、各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報が各転送条件レジスタに設定される複数の転送条件レジスタを含むレジスタ部を含み、前記転送コントローラが、転送条件レジスタに設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを自動発生し、パイプ領域と、そのパイプ領域に対応するエンドポイントとの間で、データを自動転送するようにしてもよい。
【0026】
本発明では、各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報(エンドポイント情報、パイプ情報)が各転送条件レジスタ(パイプレジスタ)に設定される。そして、各転送条件レジスタに設定された転送条件情報に基づいて、各エンドポイントに対するトランザクションが自動発生し、各パイプ領域と各エンドポイントとの間でデータが自動転送される。これにより、データ転送制御装置の制御等を行う処理部の処理負荷を軽減できる。
【0027】
また本発明では、ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラを含み、前記転送コントローラが、ホスト動作時において、ホストとしてのデータ転送を行うホストコントローラと、ペリフェラル動作時において、ペリフェラルとしてのデータ転送を行うペリフェラルコントローラとを含み、ホスト動作時において、前記バッファコントローラが、パケットバッファに対して複数のパイプ領域を確保し、前記ホストコントローラが、確保されたパイプ領域とそのパイプ領域に対応するエンドポイントとの間で、データを転送するようにしてもよい。
【0028】
本発明によれば、ステートコントローラにより制御されるステートがホスト動作のステートになると、ホストコントローラによりホストの役割としてのデータ転送が行われる。またステートコントローラにより制御されるステートがペリフェラル動作のステートになると、ペリフェラルコントローラによりペリフェラルの役割としてのデータ転送が行われる。これによりデュアルロール・デバイス機能を実現できる。そして本発明では、ホスト動作時においてパケットバッファに対して複数のパイプ領域が確保され、確保されたパイプ領域とエンドポイントとの間でデータが自動転送される。これによりデュアルロール・デバイス機能を実現できると共にホスト動作時における処理部の処理負荷を軽減できる。
【0029】
また本発明では、USB(Universal Serial Bus)のOTG(On−The−Go)規格に準拠したデータ転送を行うようにしてもよい。
【0030】
また本発明は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、前記データ転送制御装置のデータ転送を制御する処理部とを含む電子機器に関係する。
【0031】
【発明の実施の形態】
以下、本実施形態について説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【0032】
1.簡易ホスト
1.1 Aデバイス、Bデバイス
まず、簡易ホストを実現する規格の一例としてOTG(USB On−The−Go)について説明する。但し本発明の手法は、このようなOTG規格のデータ転送制御手法に限定されるものではない。
【0033】
OTGでは、コネクタの規格として、図1(A)に示すようなMini-Aプラグ、Mini-Bプラグが定義されている。また、これらのMini-Aプラグ、Mini−Bプラグ(広義にはケーブルの第1、第2のプラグ)の両方を接続できるコネクタとして、Mini-ABレセプタクル(receptacle)が定義されている。
【0034】
そして図1(B)のように、USBケーブルのMini-Aプラグに電子機器Pが接続され、Mini-Bプラグに電子機器Qが接続されると、電子機器P、Qは、各々、Aデバイス、Bデバイスに設定される。一方、図1(C)に示すように、Mini-Bプラグ、Mini-Aプラグが電子機器P、Qに接続されると、電子機器P、Qは、各々、Bデバイス、Aデバイスに設定される。電子機器は、内蔵するプルアップ抵抗回路を用いてIDピンの電圧レベルを検出することで、自身がどちらのタイプのプラグに接続されたのか判断する。
【0035】
なおOTGでは、Aデバイス(マスター)が、電源(VBUS)を供給する側(供給元)になり、Bデバイス(スレーブ)が、電源の供給を受ける側(供給先)になる。また、Aデバイスは、デフォルトのステートがホストになり、Bデバイスは、デフォルトのステートがペリフェラル(周辺機器)になる。
【0036】
1.2 デュアルロール・デバイス
OTGでは、ホスト(簡易ホスト)としての役割とペリフェラルとしての役割の両方を持つことができるデュアルロール・デバイス(Dual-Role Device)が定義されている。
【0037】
デュアルロール・デバイスは、ホストにもペリフェラルにもなれる。そして、デュアルロール・デバイスに接続された相手が、従来のUSB規格におけるホストやペリフェラルである場合には、デュアルロール・デバイスの役割は一意に定まる。つまり、接続相手がホストであれば、デュアルロール・デバイスはペリフェラルになり、接続相手がペリフェラルであれば、デュアルロール・デバイスはホストになる。一方、接続相手がデュアルロール・デバイスである場合には、両方のデュアルロール・デバイスは、お互いにホストとペリフェラルの役割を交換できる。
【0038】
デュアルロール・デバイスは、セッション開始要求手順SRP(Session Request Protocol)やホスト交換手順HNP(Host Negotiation Protocol)の機能を持つ。ここでSRPは、BデバイスがAデバイスに対して、VBUS(電源)の供給を要求するプロトコルである。またHNPは、ホストとペリフェラルの役割を交換するためのプロトコルである。
【0039】
即ち前述のようにデュアルロール・デバイス同士の接続では、Mini-Aプラグが接続された側であるAデバイスがデフォルトのホストとなり、Mini-Bプラグが接続された側であるBデバイスがデフォルトのペリフェラルになる。そしてOTGでは、プラグの抜き差しを行わなくても、ホストとペリフェラルの役割を交換でき、HNPはこの役割交換を実現するプロトコルである。
【0040】
2.OHCI
従来のUSBでは、ホストであるパーソナルコンピュータが有するホストコントローラは、マイクロソフト社が提唱したOHCI(Open Host Controller Interface)や、UHCI(Universal Host Controller Interface)といった規格に準拠していた。また使用されるOS(Operating System)も、マイクロソフト社やアップル社のOSに限定されていた。
【0041】
しかしながら、OTGのターゲット・アプリケーションである小型携帯機器では、組み込まれるCPUのアーキテクチャや使用されるOSは千差万別である。また、パーソナルコンピュータのホストコントローラ向けに規格化されたOHCIやUHCIは、USBホストとしての機能をフルに実装することを前提としており、小型携帯機器への実装に最適であるとは言い難い。更に、OHCI準拠のデータ転送制御装置(ホストコントローラ)では、CPU上で動作するファームウェア(ホストコントローラ・ドライバ)が、複雑なリスト構造のディスクリプタを作成しなければならないため、CPUの処理負荷が重い。
【0042】
そして小型携帯機器(デジタルカメラ、携帯電話等)に組み込まれるCPU(embedded CPU)は、パーソナルコンピュータのCPUに比べて低性能であるのが一般的である。従って携帯機器にOTGのホスト動作を行わせると、携帯機器に組み込まれるCPUに過大な負荷がかかり、他の処理に支障が生じたり、データ転送のパフォーマンスが低下する。
【0043】
3.構成例
図2に、以上のような問題を解決できる本実施形態のデータ転送制御装置(データ転送制御回路)の構成例を示す。なお本実施形態のデータ転送制御装置は、図2の一部の機能ブロックを省略する構成としてもよい。また図2の機能ブロックはハードウェア回路のみにより実現してもよいし、ハードウェア回路とファームウェア(ソフトウェア)の両方により実現してもよい。また以下ではOTG規格に準拠したデータ転送制御装置への本発明の適用例を説明するが、OTG規格を発展させた規格に準拠したデータ転送制御装置やOTG規格に準拠しないデータ転送制御装置にも本発明は適用できる。例えばデュアルロール・デバイスの機能は持たず、簡易ホストとしての機能だけを持つようなデータ転送制御装置にも本発明は適用できる。
【0044】
データ転送制御装置はトランシーバ10(以下、適宜Xcvrと呼ぶ)を含む。このトランシーバ10は、差動データ信号DP、DMを用いてUSB(広義にはバス)のデータを送受信する回路であり、USBの物理層(PHY)回路12を含む。より具体的にはトランシーバ10は、DP、DMのラインステート(J、K、SE0等)の生成、シリアル/パラレル変換、パラレル/シリアル変換、ビットスタッフィング、ビットアンスタッフィング、NRZIデコード、NRZIエンコードなどを行う。なお、トランシーバ10をデータ転送制御装置の外部に設けるようにしてもよい。
【0045】
データ転送制御装置はOTGコントローラ20(広義にはステートコントローラ。以下、適宜OTGCと呼ぶ)を含む。このOTGコントローラ20は、OTGのSRP機能やHNP機能を実現するための処理を行う。即ちOTGコントローラ20は、ホストの役割として動作するホスト動作のステートや、ペリフェラルの役割として動作するペリフェラル動作のステートなどを含む複数のステートの制御を行う。
【0046】
より具体的には、OTG規格には、デュアルロール・デバイスのAデバイス時のステート遷移やBデバイス時のステート遷移が定義されている。OTGコントローラ20は、これらのステート遷移を実現するためのステートマシーンを含む。またOTGコントローラ20は、USBのデータラインステートやVBUSレベルやIDピンのステートを検出(監視)する回路を含む。そして、OTGコントローラ20が含むステートマシーンは、これらの検出情報に基づいてそのステート(例えば、ホスト、ペリフェラル、サスペンド又はアイドルなどのステート)を変化させる。この場合のステートの遷移は、ハードウェア回路により実現してもよいし、ファームウェアがステートコマンドをレジスタに設定することで実現してもよい。そしてステートが遷移すると、OTGコントローラ20は、遷移後のステートに基づいて、VBUSを制御したり、DP、DMのプルアップ抵抗/プルダウン抵抗の接続/非接続を制御する。また、ホストコントローラ50(以下、適宜HCと呼ぶ)、ペリフェラルコントローラ60(以下、適宜PCと呼ぶ)のイネーブル/ディスエーブルを制御する。
【0047】
データ転送制御装置はHC/PC切り替え回路30(HC/PC・コモン回路)を含む。このHC/PC切り替え回路30は、トランシーバ10と、ホストコントローラ50又はペリフェラルコントローラ60との間の接続の切り替えを制御する。またUSBのデータ(DP、DM)のラインステートの生成の指示をトランシーバ10に対して行う。なお接続の切り替え制御は、HC/PCセレクタ32により実現され、ラインステートの生成指示は、ラインステートコントローラ34により実現される。
【0048】
例えばOTGコントローラ20がホスト動作時にHCイネーブル信号をアサートすると、HC/PC切り替え回路30(HC/PCセレクタ32)は、トランシーバ10とホストコントローラ50を接続する。一方、OTGコントローラ20が、ペリフェラル動作時にPCイネーブル信号をアサートすると、HC/PC切り替え回路30は、トランシーバ10とペリフェラルコントローラ60を接続する。これにより、ホストコントローラ50とペリフェラルコントローラ60とを排他的に動作させることが可能になる。
【0049】
データ転送制御装置は転送コントローラ40を含む。この転送コントローラ40は、USB(広義にはバス)を介したデータ転送を制御する回路であり、ホストコントローラ50(HC)とペリフェラルコントローラ60(PC)を含む。なお簡易ホスト機能だけを実現する場合には、転送コントローラ40にペリフェラルコントローラ60を含ませない構成としてもよい。
【0050】
ホストコントローラ50は、ホスト動作時(HCイネーブル信号のアサート時)にホストの役割としてのデータ転送制御を行う回路である。即ちホストコントローラ50はホスト動作時にHC/PC切り替え回路30によりトランシーバ10に接続される。そしてホストコントローラ50は、レジスタ部70の転送条件レジスタ部72に設定された転送条件情報に基づき、エンドポイントに対するトランザクションを自動発生する。そしてパケットバッファ100に確保(allocate)されたパイプ領域(PIPE0〜PIPEe。以下、適宜PIPEと呼ぶ)と、そのパイプ領域に対応するエンドポイントとの間で、データ(パケット)の自動転送(処理部が介在しないハードウェア回路によるデータ転送)を行う。
【0051】
より具体的にはホストコントローラ50は、複数のパイプ転送間の調停、フレームにおける時間管理、転送のスケジューリング、再送の管理などを行う。またパイプ転送の転送条件情報(オペレーション情報)をレジスタ部70を介して管理する。また、トランザクションの管理を行ったり、パケットを生成/分解したり、サスペンド/レジューム/リセット状態生成の指示を行う。
【0052】
ペリフェラルコントローラ60はペリフェラル動作時(PCイネーブル信号のアサート時)にペリフェラルの役割としてのデータ転送制御を行う回路である。
【0053】
即ちペリフェラルコントローラ60は、ペリフェラル動作時にHC/PC切り替え回路30によりトランシーバ10に接続される。そしてレジスタ部70の転送条件レジスタ部72に設定された転送条件情報に基づき、パケットバッファ100に確保されたエンドポイント領域(EP0〜EPe。以下適宜EPと呼ぶ)とホストとの間でデータを転送する。
【0054】
より具体的には、ペリフェラルコントローラ60は、エンドポイント転送の転送条件情報(オペレーション情報)をレジスタ部70を介して管理する。また、トランザクションの管理を行ったり、パケットを生成/分解したり、リモート・ウェイクアップ信号生成の指示を行う。
【0055】
なおエンドポイントは、ユニークなアドレスを割り当てることができる、ペリフェラル(デバイス)上のポイント(部分)である。ホストとペリフェラル(デバイス)との間でのデータ転送は、全て、このエンドポイントを経由して行われる。またトランザクションは、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【0056】
データ転送制御装置はレジスタ部70を含む。このレジスタ部70は、データ転送(パイプ転送、エンドポイント転送)制御、バッファアクセス制御、バッファ管理、割り込み制御、ブロック制御、或いはDMA制御などを行うための種々のレジスタを含む。なおレジスタは、RAMなどのメモリにより実現してもよいし、Dフリップフロップなどにより実現してもよい。またレジスタ部70のレジスタは、1つにまとめずに、各ブロック(HC、PC、OTGC、Xcvr等)に分散して配置してもよい。
【0057】
レジスタ部70は、転送条件レジスタ部72を含む。この転送条件レジスタ部72は、ホスト動作時にパケットバッファ100に確保されるパイプ領域(PIPE0〜PIPEe)とエンドポイントとの間でのデータ転送の転送条件情報を記憶するレジスタを含む。これらの各転送条件レジスタは、パケットバッファ100の各パイプ領域に対応して設けられる。
【0058】
なおペリフェラル動作時には、パケットバッファ100にはエンドポイント領域(EP0〜EPe)が確保される。そして転送条件レジスタ部72に設定された転送条件情報に基づいて、データ転送制御装置とホストとの間でのデータ転送が行われる。
【0059】
データ転送制御装置はバッファコントローラ80(FIFOマネージャ)を含む。このバッファコントローラ80は、パケットバッファ100にパイプ領域やエンドポイント領域を確保する処理を行う。またパケットバッファ100に対するアクセス制御や領域管理を行う。より具体的にはバッファコントローラ80は、CPUからのアクセス(処理部側からのアクセス)、DMAからのアクセス(アプリケーション層デバイスからのアクセス)、USBからのアクセス(転送コントローラからのアクセス)の制御を行ったり、これらのアクセスの調停を行ったり、アクセス・アドレスの生成・管理を行う。
【0060】
データ転送制御装置はパケットバッファ100(FIFO、パケットメモリ、データバッファ)を含む。このパケットバッファ100は、USBを介して転送されるデータ(送信データ又は受信データ)を一時的に記憶(バッファリング)するものである。このパケットバッファ100は、例えばRAM(Random Access Memory)などにより構成できる。なおパケットバッファ100の一部又は全部をデータ転送制御装置の外部に設けてもよい(外付けメモリにしてもよい)。
【0061】
ホスト動作時には、パケットバッファ100はパイプ転送用のFIFO(First-In First-Out)として使用される。即ち、パケットバッファ100には、USB(バス)の各エンドポイントに対応するように、パイプ領域PIPE0〜PIPEe(広義にはバッファ領域)が確保される。また、各パイプ領域PIPE0〜PIPEeには、それに対応する各エンドポイントとの間で転送されるデータ(送信データ又は受信データ)が記憶される。
【0062】
一方、ペリフェラル動作時には、パケットバッファ100はエンドポイント転送用のFIFOとして使用される。即ち、パケットバッファ100には、エンドポイント領域EP0〜EPe(広義にはバッファ領域)が確保される。また各エンドポイント領域EP0〜EPeには、ホストとの間で転送されるデータ(送信データ又は受信データ)が記憶される。
【0063】
なおパケットバッファ100に確保されるバッファ領域(ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域)は、先に入力された情報が先に出力されるような記憶領域(FIFO領域)に設定されている。またPIPE0は、コントロール転送用のエンドポイント0に専用のパイプ領域であり、PIPEa〜PIPEeは、任意のエンドポイントに割り当て可能な汎用のパイプ領域である。即ち、USBでは、エンドポイント0がコントロール転送に専用のエンドポイントに設定される。従って本実施形態のようにPIPE0をコントロール転送に専用のパイプ領域にすることで、ユーザが混乱するのを防止できる。またPIPEa〜PIPEeを任意のエンドポイントに割り当て可能なパイプ領域にすることで、エンドポイントに対応するパイプ領域を動的に変化させることが可能になる。これにより、パイプ転送のスケジューリングの自由度を向上でき、データ転送を効率化できる。
【0064】
なお本実施形態では、バッファ領域は、マックスパケットサイズMaxPktSize(広義にはページサイズ)とページ数BufferPageにより、その領域サイズRSizeが設定される(RSize=MaxPktSize×BufferPage)。このようにすることで、バッファ領域の領域サイズや面数(ページ数)を任意に設定できるようになり、パケットバッファ100のリソースの有効利用を図れる。
【0065】
データ転送制御装置はインターフェース回路110を含む。このインターフェース回路110は、USBとは異なる他のバスであるDMA(DirectMemoryAccess)バスやCPUバスと、パケットバッファ100との間でのデータ転送を行うための回路である。このインターフェース回路110は、パケットバッファ100と外部のシステムメモリとの間でDMA転送を行うためのDMAハンドラ回路112(広義には第1のインターフェース回路)を含む。またパケットバッファ100と外部のCPUとの間でPIO(Parallel I/O)転送を行うためのCPUインターフェース回路114(広義には第2のインターフェース回路)を含む。なお、CPU(広義には処理部)をデータ転送制御装置に内蔵させてもよい。
【0066】
データ転送制御装置はクロックコントローラ120を含む。このクロックコントローラ120は、内蔵PLL又は外部入力クロックに基づいて、データ転送制御装置の内部で使用する各種のクロックを生成する。
【0067】
4.パイプ領域
本実施形態では図3(A)に示すように、ホスト動作時にパケットバッファ100にパイプ領域PIPE0〜PIPEeが確保される。そしてこの各パイプ領域とペリフェラルの各エンドポイントの間でデータが転送される。
【0068】
ここで、本実施形態のパイプ領域の「パイプ」は、USBで定義される「パイプ」(デバイス上のエンドポイントとホスト上のソフトウェアとの間の関連を表す論理的な抽象化、論理的な経路)とは若干意味合いが異なる。
【0069】
本実施形態のパイプ領域は、図3(A)に示すように、USB(バス)に接続されるペリフェラルが有する各エンドポイントに対応して、パケットバッファ100上に確保される。例えば図3(A)において、パイプ領域PIPEaはペリフェラル1のエンドポイント1(バルクIN)に対応し、PIPEbはペリフェラル1のエンドポイント2(バルクOUT)に対応する。またPIPEcはペリフェラル2のエンドポイント1(バルクIN)に対応し、PIPEdはペリフェラル2のエンドポイント2(バルクOUT)に対応する。またPIPEeはペリフェラル3のエンドポイント1(インタラプトIN)に対応する。なおPIPE0は、コントロール転送のエンドポイント0に専用のパイプ領域である。
【0070】
そして図3(A)の例では、パイプ領域PIPEaとペリフェラル1のエンドポイント1との間でUSBのバルクIN転送が行われ、PIPEbとペリフェラル1のエンドポイント2との間ではバルクOUT転送が行われる。またPIPEcとペリフェラル2のエンドポイント1との間ではバルクIN転送が行われ、PIPEdとペリフェラル2のエンドポイント2との間ではバルクOUT転送が行われる。またPIPEeとペリフェラル3のエンドポイント1との間ではインタラプトIN転送が行われる。以上のように本実施形態では、パイプ領域(汎用)とそれに対応するエンドポイントとの間では、任意のデータ転送(アイソクロナス転送、バルク転送、インタラプト転送)を行うことができる。
【0071】
そして本実施形態では、パイプ領域とそれに対応するエンドポイントの間では所与のデータ単位(トータルサイズで指定されるデータ単位)のデータが転送される。このデータ単位としては、例えばIRP(I/Oリクエストパケット)により転送要求されるデータ単位又はそれを適当なサイズに分割したデータ単位を想定できる。エンドポイントに対するこのデータ単位のデータ転送(一連のトランザクション)を本実施形態における「パイプ」と呼ぶことができ、「パイプ」のデータ(送信データ、受信データ)を記憶する領域がパイプ領域になる。
【0072】
パイプ領域を用いた所与のデータ単位の転送が終了すると、そのパイプ領域は解放できる。そして解放されたパイプ領域は新たに任意のエンドポイントに割り当てることができる。このように本実施形態では、パイプ領域とエンドポイントとの対応づけを動的に変化させることができる。
【0073】
また本実施形態では図3(B)に示すように、ペリフェラル動作時にはパケットバッファ100にエンドポイント領域EP0〜EPeが確保される。そして各エンドポイント領域とホストとの間でデータが転送される。
【0074】
このように本実施形態では、パケットバッファ100のバッファ領域を、ホスト動作時にはパイプ領域に割り当て、ペリフェラル動作時にはエンドポイント領域に割り当てている。これにより、ホスト動作時とペリフェラル動作時とでパケットバッファ100のリソースを共用(兼用)することができ、パケットバッファ100の使用記憶容量を節約できる。なおパイプ領域、エンドポイント領域の個数は6個に限定されず任意である。
【0075】
5.パイプ領域の再構築
5.1 再構築処理
さて図3(A)(B)のようにパケットバッファ100にパイプ領域を確保してデータ転送を行う手法では、USB上に新たなエンドポイントが追加されたり、既に存在していたエンドポイントが削除された場合には、パイプ領域の再構築(reconstruction)処理が必要になる。ここで再構築処理は、確保されていたパイプ領域(現存するパイプ領域)を削除する処理、新たなパイプ領域(現存しないパイプ領域)を追加する処理、及び確保されていたパイプ領域のサイズを変更する処理の少なくとも一方を含むものである。
【0076】
例えば図4(A)では、USBハブに対してペリフェラル1だけが接続されている。このペリフェラル1(電子機器)はエンドポイントa、b、eを有しているため、パケットバッファ100には、これらのエンドポイントa、b、eに対応するパイプ領域PIPEa、PIPEb、PIPEeが確保されている。
【0077】
一方、図4(B)では、新たなペリフェラル2がUSBハブに接続されており、ペリフェラル2のエンドポイントcが追加されている。この場合は、パケットバッファ100に対して、エンドポイントcに対応するPIPEcを追加して、パイプ領域を再構築する必要がある。逆に図4(B)のようにペリフェラル2が接続されている状態から、ペリフェラル2の接続が外されると、エンドポイントcに対応するPIPEcを削除して、パイプ領域を再構築する必要がある。
【0078】
この場合の再構築の1つの手法として、全てのパイプ領域についての全てのデータ転送が終了した後に、図4(B)に示すようなパイプ構成になるように、パイプ領域PIPEa〜PIPEeの再確保処理を行う手法が考えられる。
【0079】
しかしながらこの手法では、パイプ領域についてのデータ転送を停止した後、パイプ領域の有効データが空になるのを待ったり、パイプ領域に残っているデータを吸い出し、その後にパイプ領域の再確保処理を行う必要がある。ところがインタラプト転送などでは、転送周期が1〜255msecというように長く、パイプ領域を用いて転送されるIRPデータのサイズが非常に大きい場合もある。このような場合にパイプ領域が空になるまで待つようにすると、パイプ領域の再構築が完了するまでに長時間を要してしまい、ユーザの利便性を害する。またパイプ領域が空になるまで待つ処理や、パイプ領域からデータを吸い出す処理のために、CPU(処理部)の処理が複雑化し、処理負荷が重くなってしまう。更に、相手デバイスがどの程度の転送レートでデータを転送してくるかが不明であるため、どの程度の待ち時間が必要かを予測できないという問題もある。
【0080】
そこで本実施形態では次のような手法を採用している。即ち再構築を行う場合に(処理部により再構築が指示された場合に)、図2の転送コントローラ40(ホストコントローラ50)が、パイプ領域(望ましくは全てのパイプ領域)とエンドポイントとの間で現在行われているデータ転送をポーズ(pause)する。具体的にはトランザクション途中で再構築を行う場合には、そのトランザクションが終了した時点でデータ転送をポーズする。なお所与の数のトランザクションの終了後に、データ転送をポーズしてもよい。
【0081】
そして例えば全てのパイプ領域(一部の例外があってもよい)についてのデータ転送のポーズ処理が完了した後に、バッファコントローラ80がパイプ領域の再構築処理を行う。具体的には、パイプ領域を削除する処理や追加する処理やサイズを変更する処理を行う。また再構築の前後に存在するパイプ領域については、格納されているデータが破壊(消去)されないようにする処理を行う。即ちそのパイプ領域に格納されるデータのコピー(移動)処理を行う。或いはパイプ領域の物理アドレスは変えずに、論理アドレスだけを変える処理を行うようにしてもよい。その後、パイプ領域の再確保(ReAllocation、SetBuffer)処理を行う。そして例えば全てのパイプ領域の再確保処理の終了後に、転送コントローラ40が、ポーズしていたデータ転送を再開する。例えば既に完了したトランザクションの次のトランザクションからデータ転送を再開する。
【0082】
このようにすれば、パイプ領域が受信用なのか送信用なのかを区別して処理する必要もなくなる。またパイプ領域が空になるのを待つ必要もなくなり、パイプ領域の再構築に要する時間も容易に把握できる。従って再構築処理を短時間で終了でき、ファームウェアの処理の簡素化や負荷の軽減化を図れる。
【0083】
5.2 コピー処理による再構築
本実施形態では、再構築の前後で存在するパイプ領域については、そのパイプ領域に格納されるデータが破壊(消去、上書き)されないように、そのデータをコピー(移動)している。具体的には図5(A)(C)において、エンドポイントe(第1のエンドポイント)に対応して再構築前にパケットバッファ100に確保されていたパイプ領域PIPEe(第1のパイプ領域)は、図5(B)(D)に示すように再構築後もパケットバッファ100に確保されている。この場合に本実施形態では、図5(A)(C)に示すように、再構築前のパイプ領域PIPEeからデータを読み出し、図5(B)(D)に示すように、読み出されたデータを再構築後のパイプ領域PIPEe’に書き込むコピー処理を行っている。
【0084】
例えば図5(A)(B)では、再構築前のパイプ領域PIPEeのスタートアドレスStAdr(或いはエンドアドレスEnAdr)よりも、再構築後のPIPEe'のスタートアドレスStAdr'(或いはエンドアドレスEnAdr)の方が大きい。この場合には図5(A)に示すように再構築前のPIPEeの読み出しアドレスであるソースアドレスをデクリメントしながら、PIPEeからデータを読み出す。具体的にはソースアドレスをその初期値(CopySourceAdr, EnAdr)から順次デクリメントしながら、複数バイト毎にデータを順次読み出す。そして図5(B)に示すように、再構築後のPIPEe'の書き込みアドレスであるディスティネーションアドレスをデクリメントしながら、図5(A)で読み出されたデータを再構築後のPIPEe'に書き込む。具体的には、ディスティネーションアドレスをその初期値(CopyDestAdr, EnAdr')から順次デクリメントしながら、複数バイト毎にデータを順次書き込む。
【0085】
一方、図5(C)(D)では、再構築前のPIPEeのStAdr(或いはEnAdr)よりも、再構築後のPIPEe'のStAdr'(或いはEnAdr)の方が小さい。この場合には図5(C)に示すように、ソースアドレスをその初期値(CopySourceAdr, StAdr)からインクリメントしながら、再構築前のPIPEeからデータを読み出す。そして図5(D)に示すように、ディスティネーションアドレスをその初期値(CopyDestAdr, StAdr')からデクリメントしながら、図5(C)で読み出されたデータを再構築後のPIPEe'に書き込む。
【0086】
以上のようにすれば再構築前にPIPEeに格納されていたデータを破壊することなく、このデータを再構築後のPIPEe'にコピーできる。従ってパイプ領域の適正な再構築処理を少ない処理負荷で実現できる。
【0087】
なおコピー処理のソースアドレス、ディスティネーションアドレスの初期値は、CopySourceAdr、CopyDestAdrにより設定される。またソースアドレス、ディスティネーションアドレスをデクリメントするか或いはインクリメントするかは、CopyIncxDecにより設定される。またコピーされるデータのサイズはCopySizeにより設定される。これらの設定は、ファームウェア(CPU、処理部)が、CopySourceAdr、CopyDestAdr、CopyIncxDec、CopySizeのレジスタに所望の値を設定することで実現できる。
【0088】
またコピー処理の対象となるパイプ領域は、PIPEeのように、再構築処理の前後でスタートアドレスStAdrやエンドアドレスEnAdrが変化するパイプ領域だけであってもよい。或いはPIPEa、PIPEbのようにStAdrやEnAdrが変化しないパイプ領域もコピー処理の対象としてもよい。
【0089】
また本実施形態では図5(A)〜(E)に示すように、再構築処理の際に書き込みポインタWPtrや読み出しポインタRPtrの移動(コピー、変換)処理も行っている。ここでWPtrは、パイプ領域でのデータの書き込みアドレス(書き込み位置)を指すポインタであり、RPtrは、パイプ領域でのデータの読み出しアドレス(読み出し位置)を指すポインタである。本実施形態では、再構築前のPIPEeにおいてWPtr、RPtrが指していたデータの書き込みアドレス、読み出しアドレスに対応する位置を、再構築後のPIPEe’においても再構築後のWPtr'、RPtr'が指すように、ポインタの移動処理を行っている。これにより、再構築後に、データ転送がポーズしていた書き込みアドレス、読み出しアドレスの位置から、データの書き込み処理、読み出し処理を適正に再開できるようになる。
【0090】
5.3 動作
次に再構築処理時の具体的な動作について図6のフローチャート、図7のタイミング波形図を用いて説明する。まず図7のF1に示すように、データ転送(USB転送、DMA転送)のポーズ(一時停止)を指示する信号TranPauseを、ファームウェア(F/W)が1(アサート)に設定する(ステップS51)。この設定は、データ転送のポーズ処理を指示するためのレジスタであるTranPauseのレジスタに、ファームウェア(広義にはデータ転送制御装置を制御する処理部。他の説明でも同様)がTranPause=1を書き込むことで実現される。このレジスタは例えば図2のレジスタ部70に設けられる。
【0091】
次に図7のF2に示すようにファームウェアが再構築条件(CopyIncxDec, CopySourceAdr, CopyDestAdr, CopySize, MaxPktSize, BufferPage)を設定する(ステップS52)。この設定はCopyIncxDec, CopySourceAdr, CopyDestAdr, CopySize, MaxPktSize, BufferPageのレジスタに、ファームウェアがレジスタ値を書き込むことで実現される。これらのレジスタは例えばレジスタ部70に設けられる。
【0092】
ここでCopyIncxDecのレジスタ(信号)は、コピー処理の読み出しアドレスであるソースアドレスや書き込みアドレスであるディスティネーションアドレスを、インクリメントするか或いはデクリメントするかを、ファームウェアが指示するためのレジスタ(信号)である。例えば図5(A)(B)ではCopyIncxDecが0に設定され、ソースアドレス、ディスティネーションアドレスのデクリメントが指示される。一方、図5(C)(D)ではCopyIncxDecが1に設定され、ソースアドレス、ディスティネーションアドレスのインクリメントが指示される。
【0093】
CopySourceAdr, CopyDestAdrのレジスタ(信号)は、ソースアドレス、ディスティネーションアドレスの初期値を、ファームウェアが指示するためのレジスタ(信号)である。例えば図5(A)(B)では、CopySourceAdrは再構築前のPIPEeのエンドアドレスEnAdrに設定され、CopyDestAdrは再構築後のPIPEe'のエンドアドレスEnAdr'に設定される。一方、図5(C)(D)では、CopySourceAdrはPIPEeのスタートアドレスStAdrに設定され、CopyDestAdrはPIPEe'のスタートアドレスStAdr'に設定される。
【0094】
CopySizeのレジスタは、コピーすべきデータのサイズを設定するためのレジスタである。MaxPktSize, BufferPageのレジスタは、パイプ領域のマックスパケットサイズ、ページ数を設定するためのレジスタである。
【0095】
再構築条件を設定した後、図7のF3に示すようにファームウェアはCopyGoを1に設定する(ステップS53)。この設定は、パイプ領域についてのコピー処理の開始を指示するためのレジスタであるCopyGoのレジスタに、ファームウェアがCopyGo=1を書き込むことで実現される。
【0096】
次にファームウェアは、データ転送(USB転送、DMA転送)がポーズされるのを待つ(ステップS54)。具体的には、全てのパイプ領域についてのポーズ処理が完了したことをファームウェアに知らせるためのレジスタであるCopyGoOKのレジスタに、ハードウェア回路(H/W)により1が書き込まれるのを待つ。そして図7のF4に示すようにCopyGoOK=1になると、1つのパイプ領域についてのデータのコピーが終了するのを待つ(ステップS55)。具体的には、ハードウェア回路によりCopyGoが0に設定されるのを待つ。
【0097】
そして図7のF5に示すようにCopyGoが0に設定されると、全てのパイプ領域のデータのコピーが終了したか否かが判断され(ステップS56)、終了していない場合にはステップS52に戻る。一方、終了した場合には、図7のF5に示すようにファームウェアがPtlClrのレジスタへの設定を行う(ステップS57)。
【0098】
ここでPtlClrのレジスタは、書き込みポインタWPtr、読み出しポインタRPtrの移動(コピー)処理を行うモードと、これらのポインタをクリアするモードの切り替えを、ファームウェアが設定するためのレジスタである。より具体的には、図5(A)〜(D)に示すように、再構築前のPIPEeでの書き込みアドレス、読み出しアドレスの位置に対応する位置を、再構築後のPIPEe'においても指すように、WPtr、RPtrを移動するモードと、PIPEe'のスタートアドレスStAdr'、エンドアドレスEnAdr'を指すように、WPtr、RPtrをクリアするモードとの切り替えを、ファームウェアが設定するためのレジスタである。このレジスタは各パイプ領域毎に設けられる。
【0099】
次に、図7のF7に示すようにファームウェアが、パイプ領域の再確保処理をハードウェア回路に指示するためのレジスタであるSetBufferのレジスタに1を設定する(ステップS58)。これにより、各パイプ領域のスタートアドレス、エンドアドレスの再設定処理や、ポインタの移動処理が実行される。そしてファームウェアはSetBuffer(領域再確保)処理が終了するのを待つ(ステップS59)。そしてF8に示すようにハードウェア回路によりSetBufferが0(ネゲート)に設定されると、F9に示すようにファームウェアはTranPauseを0に設定する(ステップS60)。すると、F10に示すようにハードウェア回路によりCopyGoOKが0に設定され、ポーズされていたデータ転送が再開される(ステップS61)。
【0100】
図6、図7のようにファームウェア(ソフトウェア)とハードウェア回路(バッファコントローラ、転送コントローラ)の役割分担を行うことで、効率的で信頼性の高い再構築処理を実現できる。即ち図7のF2に示すように再構築条件の設定をファームウェアが行うことで、ハードウェア回路の構成の簡素化、小規模化を図れる。また図7のF5に示すように、1つのパイプ領域のコピー処理が終了する毎にハードウェア回路がCopyGoをネゲートして、コピー処理の終了をファームウェアに知らせることで、複数のパイプ領域のコピー処理を少ないレジスタ数で効率良く実行できる。また図7のF1、F9に示すようにデータ転送のポーズ処理の開始と終了をファームウェアがハードウェア回路に指示することで、信頼性の高いポーズ処理と再開処理を実現できる。
【0101】
なお複数のパイプ領域のコピー処理を並列に行うようにしてもよい。また再構築条件(CopyIncxDec, CopySourceAdr, CopyDestAdr等)の設定を、ハードウェア回路により自動的に行ってもよい。このようにすると、ハードウェア回路の構成は複雑化するが、ファームウェアは再構築の開始を指示するだけで済むため、ファームウェアの処理負荷を軽減できる。
【0102】
5.4 詳細な構成例
次に再構成処理を実現する回路の具体例を説明する。図8にバッファコントローラ80の構成例を示す。なおバッファコントローラ80は図8の一部の機能ブロックを省略する構成としてもよい。またこれらの機能ブロックの一部をソフトウェアにより実現してもよい。
【0103】
バッファコントローラ80は領域確保(allocation)回路81を含む。この領域確保回路81は、パケットバッファ100に、バッファ領域を確保する回路である。なおバッファ領域は、ホスト動作時にはパイプ領域に設定され、ペリフェラル動作時にはエンドポイント領域に設定される領域である。
【0104】
領域確保回路81は、領域計算回路82、ポインタ割り当て回路83、ポインタ移動回路84、セットバッファ用シーケンサ85を含む。なおこれらの一部を省略する構成にしてもよい。
【0105】
領域計算回路82は、マックスパケットサイズ(ページサイズ)やページ数に基づいて、バッファ領域(パイプ領域、エンドポイント領域)の領域サイズ、スタートアドレス、エンドアドレスなどを計算する回路である。
【0106】
例えば図9(A)に示すバッファ領域PIPE0/EP0、PIPEa/EPa、PIPEb/EPb、PIPEc/EPcでは、マックスパケットサイズ(MaxPktSize)が、各々、32、64、64、64バイトに設定され、ページ数(BufferPage)が、各々、1、1、3、2ページに設定されている。領域計算回路82は、これらのマックスパケットサイズ、ページ数などに基づいて、バッファ領域PIPE0/EP0〜PIPEc/EPcの領域サイズ、スタートアドレス、エンドアドレスを計算する。例えば図9(A)において、PIPE0/EP0、PIPEa/EPa、PIPEb/EPb、PIPEc/EPcの領域サイズは、各々、32(=32×1)、64(=64×1)、192(=64×3)、128(=64×2)バイトと計算されることになる。
【0107】
ポインタ割り当て回路83は、各バッファ領域の書き込みポインタWPtr(WPtr0、WPtra、WPtrb、WPtrc)、読み出しポインタRPtr(RPtr0、RPtra、RPtrb、RPtrc)を、DMA用ポインタ、CPU用ポインタ、USB用ポインタに割り当てる回路である。
【0108】
例えば図9(B)に示すように、データ送信時(DMA又はCPUからパケットバッファ100を介してUSB側にデータが転送される時)であり、且つ、DMA転送使用時には、そのバッファ領域の書き込みポインタWPtrはDMA(DMAアクセス)用のポインタに割り当てられ、読み出しポインタRPtrはUSB(USBアクセス)用のポインタに割り当てられる。また、データ送信時であり且つCPU(PIO)転送使用時には、そのバッファ領域の書き込みポインタWPtrはCPU(CPUアクセス)用のポインタに割り当てられ、読み出しポインタRPtrはUSB用のポインタに割り当てられる。
【0109】
一方、図9(C)に示すように、データ受信時(USBからパケットバッファ100を介してDMA又はCPU側にデータが転送される時)であり、且つ、DMA転送使用時には、そのバッファ領域の書き込みポインタWPtrはUSB用ポインタに割り当てられ、読み出しポインタRPtrはDMA用ポインタに割り当てられる。また、データ受信時であり且つCPU転送使用時には、そのバッファ領域の書き込みポインタWPtrはUSB用ポインタに割り当てられ、読み出しポインタRPtrはCPU用ポインタに割り当てられる。
【0110】
なお、各バッファ領域のWPtr、RPtrの情報(アドレス情報)は、レジスタ部70の各転送条件レジスタ(PIPE/EPレジスタ)に保持される。
【0111】
ポインタ移動回路84は再構築時に書き込みポインタや読み出しポインタを移動する処理を行う回路である。即ち、再構築前のパイプ領域でのデータの書き込みアドレス、読み出しアドレスに対応する位置を、再構築後のパイプ領域においても指すように、書き込みポインタ、読み出しポインタの移動処理を行う。別の言い方をすれば、再構築の前後で、パイプ領域のスタートアドレスやエンドアドレスからの相対アドレス値が変化しないように、書き込みポインタ、読み出しポインタの移動処理を行う。またポインタ移動回路84は、図7のF6でPtlClrが1に設定された場合には、書き込みポインタ、読み出しポインタをクリアする処理(スタートアドレスやエンドアドレスに移動する処理)も行う。
【0112】
セットバッファ用シーケンサ85は、図7のF7に示すようにSetBufferがファームウェアにより1に設定された場合に、バッファ領域の再確保処理のシーケンスを制御する。
【0113】
バッファコントローラ80はポインタ管理回路86を含む。このポインタ管理回路86は、ポインタの更新を行いながら、パケットバッファ100にアクセスするための実アドレスを生成する回路である。このポインタ管理回路86は、CPU用アドレス生成回路87、DMA用アドレス生成回路88、USB用アドレス生成回路89を含む。これらの生成回路87、88、89は、各々、ポインタ割り当て回路83により割り当てられたCPU用ポインタ、DMA用ポインタ、USB用ポインタに基づいて、CPU用アドレスCPUAdr、DMA用アドレスDMAAdr、USB用アドレスUSBAdrを生成する。また、CPU(処理部)、DMA(アプリケーション層デバイス)からのアクセス毎に、或いはUSB(転送コントローラ)のトランザクション終了(ACK、NAKなどのハンドシェーク送受信)毎に、ポインタを更新する処理を行う。なお、更新後のポインタの情報(UpdateWP, UpdateRP)は、領域確保回路81を介してレジスタ部70の各転送条件レジスタに書き戻される。
【0114】
バッファコントローラ80はバッファ管理回路90を含む。このバッファ管理回路90は、パケットバッファ100へのアクセス(書き込みアクセス、読み出しアクセス)を管理、制御する回路である。このバッファ管理回路90は、バッファインターフェース回路91、再構築用アドレス生成回路92、アドレスセレクタ93、読み出しデータラッチ回路94、書き込みデータセレクタ95、シーケンサ96、調停回路97を含む。なおこれらの一部を省略する構成にしてもよい。
【0115】
バッファインターフェース回路91は、ポインタ管理回路86からのCPU用アドレス、DMA用アドレス、USB用アドレスなどを受け、パケットバッファ100へのデータの入出力や、アドレス、出力イネーブル、ライトイネーブル、リードイネーブルなどの出力を行う。
【0116】
再構築用アドレス生成回路92は、図5(A)〜(D)で説明したコピー処理のソースアドレスとディスティネーションアドレスを生成し、生成されたソースアドレス、ディスティネーションアドレスのいずれかを選択して、再構築用アドレスとして出力する。
【0117】
アドレスセレクタ93は、再構築用アドレス生成回路92からの再構築用アドレスと、CPU用アドレスCPUAdr(処理部からのアクセスアドレス)と、DMA用アドレスDMAAdr(アプリケーション層デバイスからのアクセスアドレス)と、USB用アドレスUSBAdr(転送コントローラからのアクセスアドレス)のいずれかを選択して、パケットバッファ100に出力する。
【0118】
読み出しデータラッチ回路94は、パケットバッファ100から読み出されたデータをラッチする。また書き込みデータセレクタ95は、読み出しデータラッチ回路94にラッチされたデータと、CPU(処理部)側からの書き込みデータCPUWdataと、DMA(アプリケーション層デバイス)側からの書き込みデータDMAWdataと、USB(転送コントローラ)側からの書き込みデータUSBWdataのいずれかを選択し、選択されたデータをパケットバッファ100に出力する。シーケンサ96はバッファ管理回路90内の各回路のシーケンスを制御する。
【0119】
調停回路97は、CPU(CPUインターフェース回路)、DMA(DMAハンドラ回路)、USB(HC、PC)からのアクセス(CPUReq, DMAReq, USBReq)を調停する回路である。この調停結果に基づいて、CPU用アドレス、DMA用アドレス、USB用アドレスのいずれかが、パケットバッファ100のアクセス・アドレスとして出力され、CPU、DMA又はUSBとパケットバッファ100との間のデータ転送経路が設定される。
【0120】
なお図8に示すように、レジスタ部70は、各バッファ領域の転送条件を設定する転送条件レジスタ部72と、再構築用レジスタ部74を含む。この再構築用レジスタ部74は、図6、図7などで説明したTranPause, TargetPIPENumber, CopyIncxDec, CopySourceAdr, CopyDestAdr, CopySize, CopyGo, PtrClr, SetBufferなどを設定するためのレジスタを含む。そしてこれらのレジスタにはCPU(処理部)がアクセス可能になっており、CPUは、レジスタ値の書き込みや読み出しができる。
【0121】
図10に図8のバッファ管理回路90の詳細な構成例を示し、図11にその動作を説明するためのタイミング波形図を示す。
【0122】
図11のG1に示すようにCopyGoがアサートされると、図10のシーケンサ96がコピー処理のシーケンスを開始する。そしてソースアドレス生成回路300が、ソースアドレスSourceAdrをその初期値CopySourceAdrからインクリメント又はデクリメントする処理を行う。またディスティネーションアドレス生成回路302が、ディスティネーションアドレスDestAdrをその初期値CopyDestAdrからインクリメント又はデクリメントする処理を行う。即ちCopyIncxDecがHレベルの場合にはインクリメント(カウントアップ)処理を行い、Lレベルの場合にはデクリメント(カウントダウン)処理を行う。またソースアドレス生成回路300、ディスティネーションアドレス生成回路302は図11のG2、G3に示すように、カウントパルス信号SourceAdrCtPls、DestAdrCtPlsの立ち下がりに同期して、インクリメント又はデクリメント処理を行う。なおSCLKはクロック信号でありSTAEはステート信号である。
【0123】
セレクタ306は図11のG4、G5に示すように、シーケンサ96からのアドレス選択信号AdrSxDに基づいて、SourceAdr、DestAdrのいずれかを選択して、再構築用アドレスRestructAdrとして出力する。例えばAdrSxDがHレベルの場合にはSourceAdrを選択し、Lレベルの場合にはDestAdrを選択する。
【0124】
アドレスセレクタ93は、CPU用アドレスCPUAdr、DMA用アドレスDMAAdr、USB用アドレスUSBAdr、再構築用アドレスRestructAdrのいずれかを選択して、パケットバッファ100へのアクセスアドレスSRAMAdrを出力する。具体的にはCopyGoOKがHレベルの場合にはRestructAdrを選択して出力する。
【0125】
読み出しデータラッチ回路94は、バッファインターフェース回路91を介してパケットバッファ100から読み出されたデータを、シーケンサ96からのラッチ信号RDatLtの立ち下がりでラッチする。そしてラッチしたデータを各ブロックや書き込みデータセレクタ95に出力する。
【0126】
なお図11のRAMCLKはパケットバッファ100(RAM)へのアクセスクロックであり、その立ち上がりでパケットバッファ100へのデータの書き込み又は読み出しが行われる。具体的にはRxWがHレベルの場合はデータが読み出され、Lレベルの場合はデータが書き込まれる。またRawCSはチップセレクト信号である。
【0127】
書き込みデータセレクタ95は、CPU、DMA、USBからの書き込みデータCPUWData、DMAWData、USBWData、読み出しデータラッチ回路94からの読み出しデータRDataのいずれかを選択し、パケットバッファ100への書き込みデータSRAMWDataとして出力する。具体的にはCopyGoOKがHレベルの場合は図11のG6のようにRDataを選択し、SRAMWDataとしてパケットバッファ100に出力する。
【0128】
以上のようにすることで、図5(A)(C)においてPIPEeのソースアドレスSourceAdrから読み出されたデータRDataが、SRAMWDataとして、図5(B)(D)のようにディスティネーションアドレスDestAdrに書き込まれるようになり、コピー処理が実現される。
【0129】
6.ポインタの移動処理
6.1 相対アドレスを用いたポインタの移動処理
本実施形態では以下に説明する手法により再構築時のポインタ移動処理を実現している。具体的には図12のH1に示すように、書き込みポインタWPtr、読み出しポインタRPtrが指す絶対書き込みアドレス、絶対読み出しアドレスを、再構築前のPIPEのスタートアドレスStAdr、エンドアドレスEnAdrを基準とした相対書き込みアドレス、相対読み出しアドレスに変換する。即ちRelWPtr=WPtr−StAdr、RelRPtr=EnAdr−RPtrという相対アドレスへの変換処理(PtrConve1)を行う。
【0130】
次に図12のH2に示すように再構築後のPIPE'の領域の再計算処理を行い、PIPE'のスタートアドレスStAdr'、エンドアドレスEnAdr'を求める。そしてH3に示すように、相対書き込みアドレス、相対読み出しアドレスを、再構築後のPIPE'のStAdr'、EnAdr'に基づいて、絶対書き込みアドレス、絶対読み出しアドレスに変換する。即ちWPtr'=StAdr'+RelWPtr、RPtr'=EnAdr'−RelRPtrという絶対アドレスへの変換処理(PtrConve2)を行い、ポインタの移動処理を実現する。
【0131】
このようにすれば、再構築処理以外の通常の動作時には、ポインタのアドレスとして絶対アドレスを使用できるため、演算量を減らすことができ、処理の高速化を図れる。またアドレス生成回路の小規模化も図れる。また相対アドレスへの変換処理と絶対アドレスの変換処理は、後述するように1つの回路を用いて実現できるため、回路を規模化できる。
【0132】
6.2 詳細な構成例
図13に、本実施形態のポインタの移動処理を実現する領域確保回路81の詳細な構成例を示す。TranPause, SerBufferがアサートされると、セットバッファ用シーケンサ85がセットバッファ処理のシーケンスを開始する。そしてセットバッファ用シーケンサ85が信号PtrConve1Goをアサートすると、ポインタ移動回路84は、レジスタ部70のレジスタからのポインタの情報WPtr,RPtr(絶対アドレス情報),WPtrTg, RPtrTg(トグルビット)に基づいて、図12のH1に示す相対アドレスへの変換処理を行い、ポインタを更新する。そして更新後のポインタの情報(相対アドレス情報)は、UpdateWP, UpdateRPとして、更新ポインタセレクタ310を介してレジスタ部70のレジスタに書き戻される。なお信号PtrClrがアサートされた場合にはポインタのクリア処理(スタートアドレス又はエンドアドレスに戻す処理)を行う。またWPUpdatePls, RPUpdatePlsは、ポインタの情報をレジスタ部70のレジスタに書き込むためのパルス信号である。
【0133】
次に、セットバッファ用シーケンサ85が信号MemAllocGoをアサートすると、領域計算回路82は領域確保のための計算処理を行う。具体的には図12のH2に示すように再構築後のPIPE'のStAdr、EnAdrをMaxPktSize, BufferPageに基づき計算する(図9(A)参照)。そして得られたStAdr、EnAdrは、レジスタ部70のレジスタに書き戻されると共にポインタ移動回路84に出力される。
【0134】
次に、セットバッファ用シーケンサ85が信号PtrConve2Goをアサートすると、ポインタ移動回路84は、レジスタ部70のレジスタからのポインタの情報WPtr,RPtr(相対アドレス情報),WPtrTg, RPtrTg(トグルビット)に基づいて、図12のH3に示す絶対アドレスへの変換処理を行い、ポインタを更新する。そして更新後のポインタの情報(絶対アドレス情報)は、UpdateWP, UpdateRPとして、更新ポインタセレクタ310を介してレジスタ部70のレジスタに書き戻される。
【0135】
なお本実施形態のパイプ領域(バッファ領域)はリングバッファ構造になっている。そしてトグルビットWPtrTg, RPtrTgは、書き込みポインタ、読み出しポインタがパイプ領域を1周する毎に、0から1或いは1から0というようにビット反転する。そしてWPtrとRPtrが一致し、且つ、WPtrTgとRPtrTgも一致していた場合には、パイプ領域のデータはエンプティであると判断できる。一方、WPtrとRPtrが一致し、且つ、WPtrTgとRPtrTgが一致していなかった場合には、パイプ領域のデータはフルであると判断できる。またこれらのWPtrTg,とRPtrTgを用いることで、図12のH1、H3での演算順序を判別できる。
【0136】
図14にポインタ移動回路84の構成例を示す。PtrConve1Goがアサートされると、演算シーケンサ320からの制御信号に基づいて、ポインタセレクタ322、スタート・エンドアドレスセレクタ324が、処理対象となるパイプ領域のポインタ情報、スタート・エンドアドレス情報を選択する。そして選択された情報に基づいて加減算器326が加減算処理を行うことで、図12のH1で説明したRelWPtr=WPtr−StAdr、RelRPtr=EnAdr−RPtrという相対アドレスへの変換処理が行われる。そして得られた更新後のポインタ情報(相対アドレス情報)は、演算結果セレクタ328を介してレジスタ部70のレジスタに書き戻される。以上の処理が、対象となる全てのパイプ領域について行われる。
【0137】
次に、PtrConve2Goがアサートされると、演算シーケンサ320からの制御信号に基づいて、ポインタセレクタ322、スタート・エンドアドレスセレクタ324が、処理対象となるパイプ領域のポインタ情報、スタート・エンドアドレス情報を選択する。そして選択された情報に基づいて加減算器326が加減算処理を行うことで、図12のH3で説明したWPtr'=StAdr'+RelWPtr、RPtr'=EnAdr'−RelRPtrという絶対アドレスへの変換処理が行われる。そして得られた更新後のポインタ情報(絶対アドレス情報)は、演算結果セレクタ328を介してレジスタ部70のレジスタに書き戻される。以上の処理が、対象となる全てのパイプ領域について行われる。
【0138】
6.3 動作
次にポインタ移動処理時の動作について図15のフローチャート、図16のタイミング波形図を用いて説明する。まずファームウェアにより各パイプ領域についてのPtrClrの設定が行われ、図16のI1に示すようにSetBufferが1に設定される(ステップS71、S72)。
【0139】
次に、処理対象となるパイプ領域のPtrClrが1か否かを判断し(ステップS72)、PtrClrが1である場合にはポインタのクリア処理を行う(ステップS74)。即ちWPtr'=0、RPtr'=0というように相対アドレス値を0に設定する。
【0140】
一方、PtrClrが1ではない場合には、図16のI2に示すようにPtrConve1Goがアサートされ、図12にH1に示す相対アドレス変換処理が行われる(ステップS75)。そして相対アドレス変換処理が全てのパイプ領域について終了したか否かを判断し(ステップS76)、終了していない場合はステップS73に戻る。
【0141】
次に図16のI3に示すようにMemAllocGoがアサートされ、図12のH2に示す領域計算処理が行われる(ステップS77)。そして領域計算処理が全てのパイプ領域について終了したか否かを判断し(ステップS78)、終了していない場合はステップS77に戻る。
【0142】
次に、図16のI4に示すようにPtrConve2Goがアサートされ、図12にH3に示す絶対アドレス変換処理が行われる(ステップS79)。そして絶対アドレス変換処理が全てのパイプ領域について終了したか否かを判断し(ステップS80)、終了していない場合はステップS79に戻る。一方、終了した場合には、図16のI5に示すようにハードウェア回路によりSetBufferが0に設定される(ステップS81)。
【0143】
7.転送条件レジスタ(共用レジスタ)
本実施形態では図17に示すように、ホスト動作時には、パイプ領域PIPE0〜PIPEeとエンドポイントとの間で行われるデータ転送の転送条件情報が、転送条件レジスタTREG0〜TREGeに設定される。即ち、PIPE0、PIPEa、PIPEb、PIPEc、PIPEd、PIPEeの転送条件情報は、各々、TREG0、TREGa、TREGb、TREGc、TREGd、TREGeに設定(記憶)される。この設定は、例えばファームウェア(CPU、処理部)により行われる。
【0144】
そしてホストコントローラ50(広義には転送コントローラ)は、転送条件レジスタTREG0〜TREGeに設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを発生する。そして、パイプ領域とそれに対応するエンドポイントとの間で、データ(パケット)を自動転送する。
【0145】
このように本実施形態では、各パイプ領域(バッファ領域)に対応して各転送条件レジスタが設けられ、この各転送条件レジスタに設定された転送条件情報に基づいて、各パイプ領域のパイプ転送(所与のデータ単位の転送)がホストコントローラ50により自動的に行われる。従って、ファームウェア(ドライバ、ソフトウェア)は、転送条件レジスタに転送条件情報を設定した後は、データ転送が完了するまで、データ転送制御に関わらなくて済むようになる。そして、所与のデータ単位のパイプ転送が完了すると割り込みが発生し、転送の完了がファームウェアに伝えられる。これにより、ファームウェア(CPU)の処理負荷を格段に低減できる。
【0146】
なお、本実施形態では図18に示すようにペリフェラル動作時には、エンドポイント領域EP0〜EPeとホストとの間で行われるデータ転送の転送条件情報が、転送条件レジスタTREG0〜TREGeに設定される。そしてペリフェラルコントローラ60(広義には転送コントローラ)は、転送条件レジスタTREG0〜TREGeに設定された転送条件情報に基づいて、エンドポイント領域とホストとの間でのデータ転送を行う。
【0147】
このように本実施形態では、転送条件レジスタTREG0〜TREGeが、ホスト動作時とペリフェラル動作時とで共用(兼用)される。これにより、レジスタ部70のリソースを節約でき、データ転送制御装置を小規模化できる。
【0148】
図19に、レジスタ部70のレジスタ構成例を示す。なおレジスタ部70のレジスタの一部を、各ブロック(OTGC、HC、PC、Xcvr等)内に含ませてもよい。
【0149】
図19に示すように、レジスタ部70の転送条件レジスタ(TREG0〜TREGeの各々)は、ホスト動作時(HC、PIPE)とペリフェラル動作時(PC、EP)で共用されるHC/PC共用レジスタ(共用転送条件レジスタ)を含む。また、ホスト動作時にのみ使用されるHC(PIPE)用レジスタ(ホスト用転送条件レジスタ)を含む。また、ペリフェラル動作時にのみ使用されるPC(EP)用レジスタ(ペリフェラル用転送条件レジスタ)を含む。また、パケットバッファ(FIFO)のアクセス制御などを行うためのレジスタであり、ホスト動作時とペリフェラル動作時で共用されるアクセス制御レジスタを含む。
【0150】
例えばデュアルロール・デバイスのホスト動作時にホストコントローラ50(HC)は、HC/PC共用レジスタとHC用レジスタに設定される転送条件情報に基づいてデータ(パケット)を転送する。一方、ペリフェラル動作時にはペリフェラルコントローラ60(PC)が、HC/PC共用レジスタとPC用レジスタに設定される転送条件情報に基づいて、データ(パケット)を転送する。
【0151】
また、ホスト動作時、ペリフェラル動作時の両方において、バッファコントローラ80は、共用アクセス制御レジスタに基づいて、パケットバッファ100へのアクセス制御(リード/ライト・アドレスの発生、データのリード/ライト、アクセスの調停等)を行う。
【0152】
図19のHC/PC共用レジスタには、データの転送方向(IN、OUT又はSETUP等)、転送種別(アイソクロナス、バルク、インタラプト、コントロールなどのトランザクションの種別)、エンドポイント番号(各USBデバイスのエンドポイントに関連づけられる番号)、マックスパケットサイズ(エンドポイントが送信又は受信可能なパケットの最大ペイロードサイズ。ページサイズ)が設定される。また、バッファ領域(パイプ領域、エンドポイント領域)のページ数(バッファ領域の面数)が設定される。また、DMA接続の有無(DMAハンドラ回路112によるDMA転送の使用の有無)を指示する情報が設定される。
【0153】
HC(PIPE)用レジスタには、インタラプト転送のトークン発行周期(インタラプト・トランザクションを起動する周期、インターバル)が設定される。また、トランザクションの連続実行回数(パイプ領域間の転送比率を設定する情報。各パイプ領域のトランザクションの連続実行回数)が設定される。また、ファンクションアドレス(エンドポイントを有するファンクションのUSBアドレス)、転送データのトータルサイズ(各パイプ領域を介して転送されるデータのトータルサイズ。IRPなどのデータ単位)が設定される。また、自動トランザクションの開始指示(ホストコントローラに対する自動トランザクション処理の開始指示)が設定される。また、自動コントロール転送モードの指示(コントロール転送のセットアップステージ、データステージ、ステータスステージのトランザクションを自動発生するモードの指示)が設定される。
【0154】
PC(EP)用レジスタには、エンドポイントイネーブル(エンドポイントのイネーブルやディスエーブルの指示)、ハンドシェーク指定(各トランザクションで行われるハンドシェークの指定)が設定される。
【0155】
パケットバッファ(FIFO)用の共用アクセス制御レジスタには、バッファ・I/Oポート(CPUによりPIO転送を行う場合のI/Oポート)が設定される。また、バッファ・フル/エンプティ(各バッファ領域のフル、エンプティの通知)、バッファ・残りデータサイズ(各バッファ領域の残りデータサイズ)が設定される。なおレジスタ部70は、図19に示すようにインタラプト系レジスタ、ブロック系レジスタ、DMA制御レジスタなども含む。
【0156】
以上のように本実施形態では、ホスト動作時とペリフェラル動作時で共用されるレジスタ(HC/PC共用レジスタ、共用アクセス制御レジスタ)をレジスタ部70に設けている。これにより、ホスト動作時用のレジスタとペリフェラル動作時用のレジスタを全く別個に設ける場合に比べて、レジスタ部70を小規模化できる。また、CPU上で動作するファームウェア(処理部)から見た共用レジスタのアクセスアドレスを、ホスト動作時とペリフェラル動作時とで同一にできる。従って、ファームウェアは、これらの共用レジスタを同一アドレスで管理できるようになり、ファームウェア処理を簡素化できる。
【0157】
また、HC用レジスタや、PC用レジスタを設けることで、ホスト動作時(PIPE)の転送やペリフェラル動作時(EP)の転送に特有の転送条件を設定できる。例えば、トークン発行周期を設定することで、ホスト動作時にインタラプト転送のトークンを所望の周期で発行することが可能になる。また、連続実行回数を設定することで、ホスト動作時にパイプ領域間の転送比率を任意に設定できる。また、トータルサイズを設定することで、ホスト動作時にパイプ領域を介して自動転送されるデータのサイズを任意に設定できる。またファームウェアは、ホスト動作時に、自動トランザクションの開始を指示したり、自動コントロール転送モードのオン/オフを指示できるようになる。
【0158】
8.自動トランザクション
図20に、ホストコントローラ50の自動トランザクション(IN、OUT)処理時におけるファームウェア処理のフローチャート例を示す。
【0159】
まず、ファームウェア(処理部、ドライバ)は、図19等で説明した転送条件レジスタに転送条件情報(パイプ情報)を設定する(ステップS1)。より具体的には、転送データのトータルサイズ、マックスパケットサイズ(MaxPktSize)、ページ数(BufferPage)、転送方向(IN、OUT又はSETUP)、転送種別(アイソクロナス、バルク、コントロール、インタラプト)、エンドポイント番号、パイプ領域のトランザクションの連続実行回数(転送比率)、インタラプト転送のトークン発行周期などを、転送条件レジスタに設定する。
【0160】
次に、外部のシステムメモリとパケットバッファ100の間に転送経路を設定する(ステップS2)。即ち図2のDMAハンドラ回路112を介したDMA転送経路を設定する。
【0161】
次に、ファームウェアは、DMA転送の開始指示を行う(ステップS3)。即ち、図19のDMA制御レジスタのDMA転送開始指示ビットをアサートする。なお、CPUによる転送では、図19のバッファ・I/Oポートにアクセスすることで、パケットバッファ100にアクセスすることが可能になる。
【0162】
次に、ファームウェアは、自動トランザクションの開始指示を行う(ステップS4)。即ち、図19のHC用レジスタ(パイプレジスタ)の自動トランザクション開始指示ビットをアサートする。これにより、ホストコントローラ50による、自動トランザクション処理、パケット処理(パケットの生成、分解)、スケジューリング処理が行われる。即ち、ホストコントローラ50は、トータルサイズで指定されるデータを、マックスパケットサイズのペイロードのパケットを用いて、転送方向で指定される方向(IN、OUT)で、自動転送する。
【0163】
なお、図20のステップS3、S4の処理の順序は問わず、自動トランザクション開始指示の後にDMA転送の開始指示を行ってもよい。
【0164】
次に、ファームウェアは、パイプ転送の完了を知らせる割り込みが発生するのを待つ(ステップS5)。そして、割り込みが発生すると、ファームウェアは、図19のインタラプト系レジスタの割り込みステータス(要因)を調べる。そして、処理が正常完了又はエラー終了する(ステップS6)。
【0165】
このように本実施形態によれば、ファームウェアは、各パイプ領域毎に転送条件情報を設定し(ステップS1)、DMA転送開始の指示(ステップS3)と自動トランザクション開始の指示(ステップS4)を行うだけで、その後のデータ転送処理はホストコントローラ50のハードウェア回路により自動的に行われるようになる。従って、OHCI準拠の手法に比べて、ファームウェアの処理負荷が軽減され、低性能のCPUが組み込まれる携帯機器に最適なデータ転送制御装置を提供できる。
【0166】
図21、図22に、ホストコントローラ50による自動トランザクション処理時の信号波形例を示す。なお、これらの図において、「H→P」は「ホストからペリフェラルにパケットが転送されること」を表し、「P→H」は「ペリフェラルからホストにパケットが転送されること」を表す。
【0167】
図21は、INトランザクションの場合(転送種別がINの場合)の信号波形例である。図20のステップS4で、ファームウェアが自動トランザクションの開始指示を行うと、図21のC1に示すように、PipeXTranGo(PipeXについてのファームウェアからの転送要求信号)がアサートされる。これにより、そのPipeX(X=0〜e)についての、ホストコントローラ50による自動トランザクション処理が開始する。
【0168】
そして、C2に示すようにPipeTranGo(ホストコントローラ50内のHCシーケンス管理回路からの転送要求信号)がアサートされると、C3に示すように、ホストコントローラ50がINトークンパケットを生成して、USBを介してペリフェラルに転送する。そして、C4に示すようにペリフェラルからホストコントローラ50にINデータパケットが転送されると、ホストコントローラ50は、C5に示すようにハンドシェークパケット(ACK)を生成して、ペリフェラルに転送する。これにより、C6に示すようにTranCmpACKがアサートされる。
【0169】
同様にして、C7に示すようにPipeTranGoがアサートされると、C8、C9、C10に示すパケット転送が行われ、C11に示すようにTranCmpACKがアサートされる。そして、C12に示すようにPipeXTranComp(ファームウェアへのIRPのデータ単位の転送終了通知信号)がアサートされる。このPipeXTranCompによる割り込みにより、ファームウェアは、そのパイプについての転送が完了したことを知ることができる。
【0170】
なお、PipeXTranCompがアサートされると、C13に示すようにPipeXTranGoがネゲートされ、そのパイプが非転送状態であることが示されるようになる。
【0171】
図22は、OUTトランザクションの場合(転送種別がOUTの場合)の信号波形例である。ファームウェアが自動トランザクションの開始指示を行うと、E1に示すようにPipeXTranGoがアサートされ、E2に示すようにPipeTranGoがアサートされる。すると、ホストコントローラ50は、E3に示すようにOUTトークンパケットをペリフェラルに転送し、E4に示すようにOUTデータパケットを転送する。そして、E5に示すようにペリフェラルからハンドシェークパケット(ACK)が返ってくると、E6に示すようにTranCmpACKがアサートされる。
【0172】
同様にして、E7に示すようにPipeTranGoがアサートされると、E8、E9、E10に示すパケット転送が行われ、E11に示すようにTranCmpACKがアサートされる。そして、E12に示すようにPipeXTranCompがアサートされる。このPipeXTranCompによる割り込みにより、ファームウェアは、そのパイプについての転送が完了したことを知ることができる。なお、PipeXTranCompがアサートされると、E13に示すようにPipeXTranGoがネゲートされる。
【0173】
9.電子機器
図23に本実施形態のデータ転送制御装置を含む電子機器の構成例を示す。この電子機器200は、本実施形態で説明したデータ転送制御装置210、ASICなどで構成されるアプリケーション層デバイス220、CPU230、ROM240、RAM250、表示部260、操作部270を含む。なおこれらの機能ブロックの一部を省略する構成としてもよい。
【0174】
ここでアプリケーション層デバイス220は、例えばハードディスクドライブ、光ディスクドライブ、或いはプリンタを制御するデバイスや、MPEGエンコーダ、MPEGデコーダ等を含むデバイスなどである。CPU230(処理部)はデータ転送制御装置210や電子機器全体の制御を行う。ROM240は制御プログラムや各種データを記憶する。RAM250はCPU230やデータ転送制御装置210のワーク領域やデータ格納領域として機能する。表示部260は種々の情報をユーザに表示する。操作部270はユーザが電子機器を操作するためのものである。
【0175】
なお図23ではDMAバスとCPUバスが分離されているが、これらを共通化してもよい。またCPU230をデータ転送制御装置210に内蔵させたり、データ転送制御装置210を制御するCPUと、電子機器を制御するCPUとを別々に設けてもよい。また本実施形態が適用できる電子機器としては、光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、TVチューナ、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなどの種々のものがある。
【0176】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0177】
例えば、本発明のデータ転送制御装置の構成は図2等で説明した構成に限定されるものではなく、種々の変形実施が可能である。例えば図2のOTGコントローラ20、HC/PC切り替え回路30、ペリフェラルコントローラ60などの構成が省略され、ペリフェラル機能を持たず簡易ホスト機能だけを持つデータ転送制御装置にも、本発明は適用できる。
【0178】
また、明細書や図面中の記載において広義な用語(ステートコントローラ、処理部、転送コントローラ、バス、バッファ領域等)として引用された用語(OTGコントローラ、CPU・ファームウェア、ホストコントローラ・ペリフェラルコントローラ、USB、パイプ領域・エンドポイント領域等)は、明細書や図面中の他の記載においても広義な用語に置き換えることができる。
【0179】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【0180】
また、本実施形態ではUSBのOTG規格への適用例を説明したが、本発明が適用されるのはOTG規格に限定されない。例えばOTG規格と同様の思想に基づく規格やOTG規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図1】 図1(A)(B)(C)はUSBのOTG規格の説明図である。
【図2】 本実施形態のデータ転送制御装置の構成例である。
【図3】 図3(A)(B)はパイプ・エンドポイント領域の説明図である。
【図4】 図4(A)(B)はパイプ領域の再構築についての説明図である。
【図5】 図5(A)〜(D)はコピー処理による再構築の説明図である。
【図6】 再構築処理時の動作を説明するフローチャートである。
【図7】 再構築処理時の動作を説明するタイミング波形図である。
【図8】 バッファコントローラの詳細な構成例である。
【図9】 図9(A)、(B)、(C)は領域確保手法、ポインタ割り当て手法の説明図である。
【図10】 バッファ管理回路の詳細な構成例である。
【図11】 バッファ管理回路の動作を説明するタイミング波形図である。
【図12】 本実施形態のポインタ移動処理の説明図である。
【図13】 領域確保回路の詳細な構成例である。
【図14】 ポインタ移動回路の詳細な構成例である。
【図15】 ポインタ移動処理時の動作を説明するフローチャートである。
【図16】 ポインタ移動処理時の動作を説明するタイミング波形図である。
【図17】 データ転送制御装置のホスト時の動作の説明図である。
【図18】 データ転送制御装置のペリフェラル時の動作の説明図である。
【図19】 レジスタ部の説明図である。
【図20】 ファームウェアの処理を説明するフローチャートである。
【図21】 自動INトランザクション処理の信号波形例である。
【図22】 自動OUTトランザクション処理の信号波形例である。
【図23】 電子機器の構成例である。
【符号の説明】
PIPE0〜PIPEe パイプ(バッファ)領域、
EP0〜EPe エンドポイント(バッファ)領域、
TREG0〜TREGe 転送条件レジスタ(共用レジスタ)、
10 トランシーバ、12 物理層回路、20 OTGコントローラ、
30 HC/PC切り替え回路、32 HC/PCセレクタ、
34 ラインステートコントローラ、40 転送コントローラ、
50 ホストコントローラ、60 ペリフェラルコントローラ、
70 レジスタ部、72 転送条件レジスタ部、80 バッファコントローラ、
100 パケットバッファ、110 インターフェース回路、
112 DMAハンドラ回路、114 CPUインターフェース回路、
120 クロックコントローラ
Claims (16)
- バスを介したデータ転送のためのデータ転送制御装置であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行うバッファコントローラと、
パイプ領域とそのパイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラとを含み、
パイプ領域とエンドポイントとの間でのデータ転送をポーズするポーズ処理を行い、
データ転送のポーズ処理が完了した後に、確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、
パイプ領域の再構築処理後に、ポーズしていたデータ転送を再開することを特徴とするデータ転送制御装置。 - 請求項1において、
データ転送のポーズ処理の指示情報を記憶するレジスタと、
全てのパイプ領域についてのポーズ処理が完了したことを示す情報を記憶するレジスタを含むことを特徴とするデータ転送制御装置。 - 請求項1又は2において、
第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うことを特徴とするデータ転送制御装置。 - バスを介したデータ転送のためのデータ転送制御装置であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行うバッファコントローラと、
各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報が各転送条件レジスタに設定される複数の転送条件レジスタを含むレジスタ部と、
転送条件レジスタに設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを自動発生し、パイプ領域と、そのパイプ領域に対応するエンドポイントとの間で、データを自動転送する転送コントローラとを含み、
確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、
第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うことを特徴とするデータ転送制御装置。 - バスを介したデータ転送のためのデータ転送制御装置であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行うバッファコントローラと、
ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラと、
パイプ領域とそのパイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラとを含み、
前記転送コントローラが、
ホスト動作時において、ホストとしてのデータ転送を行うホストコントローラと、
ペリフェラル動作時において、ペリフェラルとしてのデータ転送を行うペリフェラルコ ントローラとを含み、
ホスト動作時において、前記バッファコントローラが、パケットバッファに対して複数のパイプ領域を確保し、前記ホストコントローラが、確保されたパイプ領域とそのパイプ領域に対応するエンドポイントとの間で、データを転送すると共に、
確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、
第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うことを特徴とするデータ転送制御装置。 - 請求項4又は5において、
再構築前の第1のパイプ領域のスタートアドレスよりも再構築後の第1のパイプ領域のスタートアドレスの方が大きい場合には、再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスをデクリメントしながら、再構築前の第1のパイプ領域からデータを読み出し、再構築後の第1のパイプ領域の書き込みアドレスであるディスティネーションアドレスをデクリメントしながら、読み出されたデータを再構築後の第1のパイプ領域に書き込み、
再構築前の第1のパイプ領域のスタートアドレスよりも再構築後の第1のパイプ領域のスタートアドレスの方が小さい場合には、ソースアドレスをインクリメントしながら、再構築前の第1のパイプ領域からデータを読み出し、ディスティネーションアドレスをインクリメントしながら、読み出されたデータを再構築後の第1のパイプ領域に書き込むことを特徴とするデータ転送制御装置。 - 請求項4乃至6のいずれかにおいて、
再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスを生成し、再構築後の第1のパイプ領域の書き込みアドレスであるディスネーションアドレスを生成し、生成されたソースアドレス、ディスティネーションアドレスのいずれかを選択して、再構築用アドレスとして出力する再構築用アドレス生成回路と、
前記再構築用アドレス生成回路からの再構築用アドレスと、前記転送コントローラからのアクセスアドレスと、データ転送制御装置を制御する処理部からのアクセスアドレスと、アプリケーション層デバイスからのアクセスアドレスのいずれかを選択して、パケットバッファに出力するアドレスセレクタと、
パケットバッファから読み出されたデータをラッチするラッチ回路と、
前記ラッチ回路にラッチされたデータと、前記転送コントローラからの書き込みデータと、前記処理部からの書き込みデータと、前記アプリケーション層デバイスからの書き込みデータのいずれかを選択し、選択されたデータをパケットバッファに出力する書き込みデータセレクタを含むことを特徴とするデータ転送制御装置。 - 請求項4乃至7のいずれかにおいて、
再構築前の第1のパイプ領域の読み出しアドレスであるソースアドレスの初期値を記憶するレジスタと、
再構築後の第1のパイプ領域の書き込みアドレスであるディスティネーションアドレスの初期値を記憶するレジスタと、
ソースアドレス、ディスティネーションアドレスをインクリメントするか或いはデクリメントするかの指示情報を記憶するレジスタを含むことを特徴とするデータ転送制御装置。 - 請求項1乃至8のいずれかにおいて、
パイプ領域でのデータの書き込みアドレス、読み出しアドレスを指す書き込みポインタ、読み出しポインタの制御を行うと共に、再構築前の第1のパイプ領域でのデータの書き込みアドレス、読み出しアドレスに対応する位置を、再構築後の第1のパイプ領域においても指すように、第1のパイプ領域の書き込みポインタ、読み出しポインタの移動処理を行うことを特徴とするデータ転送制御装置。 - 請求項9において、
再構築前の第1のパイプ領域でのデータの書き込みアドレス、読み出しアドレスに対応する位置を再構築後の第1のパイプ領域においても指すように、書き込みポインタ、読み出しポインタを移動するモードと、再構築後の第1のパイプ領域のスタートアドレス、エンドアドレスの位置を指すように、書き込みポインタ、読み出しポインタをクリアするモードとの切り替えの指示情報を記憶するレジスタを含むことを特徴とするデータ転送制御装置。 - 請求項9又は10において、
書き込みポインタ、読み出しポインタが指す絶対書き込みアドレス、絶対読み出しアドレスを、再構築前の第1のパイプ領域のスタートアドレス、エンドアドレスを基準とした相対書き込みアドレス、相対読み出しアドレスに変換し、該相対書き込みアドレス、相対読み出しアドレスを、再構築後の第1のパイプ領域のスタートアドレス、エンドアドレスに基づいて、絶対書き込みアドレス、絶対読み出しアドレスに変換することで、書き込みポインタ、読み出しポインタの移動処理を行うことを特徴とするデータ転送制御装置。 - 請求項1乃至11のいずれかにおいて、
USB(Universal Serial Bus)のOTG(On−The−Go)規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。 - 請求項1乃至12のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
前記データ転送制御装置のデータ転送を制御する処理部と、
を含むことを特徴とする電子機器。 - バスを介したデータ転送のためのデータ転送制御方法であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行い、
パイプ領域とそのパイプ領域に対応するエンドポイントとの間でのデータ転送を制御すると共に、
パイプ領域とエンドポイントとの間でのデータ転送をポーズするポーズ処理を行い、
データ転送のポーズ処理が完了した後に、確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つを含むパイプ領域の再構築処理を行い、
パイプ領域の再構築処理後に、ポーズしていたデータ転送を再開することを特徴とするデータ転送制御方法。 - バスを介したデータ転送のためのデータ転送制御方法であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行い、
各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報を、複数の転送条件レジスタの各転送条件レジスタに設定し、
転送条件レジスタに設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを自動発生し、パイプ領域と、そのパイプ領域に対応するエンドポイントとの間で、データを自動転送すると共に、
確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つ含むパイプ領域の再構築処理を行い、
第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うことを特徴とするデータ転送制御方法。 - バスを介したデータ転送のためのデータ転送制御方法であって、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域を、パケットバッファに確保すると共に、パケットバッファのアクセス制御を行い、
ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行い、
ホスト動作時においては、ホストコントローラが、ホストとしてのデータ転送を行い、ペリフェラル動作時においては、ペリフェラルコントローラが、ペリフェラルとしてのデータ転送を行い、
ホスト動作時において、パケットバッファに対して複数のパイプ領域を確保し、ホストコントローラが、確保されたパイプ領域とそのパイプ領域に対応するエンドポイントとの間で、データを転送すると共に、
確保されていたパイプ領域を削除する処理、新たなパイプ領域を追加する処理、及びパイプ領域のサイズを変更する処理の少なくとも1つ含むパイプ領域の再構築処理を行い、
第1のエンドポイントに対応して再構築前にパケットバッファに確保されていた第1のパイプ領域が、再構築後もパケットバッファに確保される場合に、再構築前の第1のパイプ領域からデータを読み出し、読み出されたデータを再構築後の第1のパイプ領域に書き込むコピー処理を行うことを特徴とするデータ転送制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003142194A JP3649226B2 (ja) | 2003-05-20 | 2003-05-20 | データ転送制御装置、電子機器及びデータ転送制御方法 |
US10/847,586 US7272676B2 (en) | 2003-05-20 | 2004-05-18 | Data transmission controller that restarts data transmission when reconstruction is completed |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003142194A JP3649226B2 (ja) | 2003-05-20 | 2003-05-20 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004348246A JP2004348246A (ja) | 2004-12-09 |
JP3649226B2 true JP3649226B2 (ja) | 2005-05-18 |
Family
ID=33530351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003142194A Expired - Fee Related JP3649226B2 (ja) | 2003-05-20 | 2003-05-20 | データ転送制御装置、電子機器及びデータ転送制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7272676B2 (ja) |
JP (1) | JP3649226B2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262777B2 (en) | 2002-02-05 | 2016-02-16 | Square, Inc. | Card reader with power efficient architecture that includes a wake-up circuit |
US9305314B2 (en) | 2002-02-05 | 2016-04-05 | Square, Inc. | Methods of transmitting information to mobile devices using cost effective card readers |
US9286635B2 (en) | 2002-02-05 | 2016-03-15 | Square, Inc. | Method of transmitting information from efficient communication protocol card readers to mobile devices |
US9495676B2 (en) | 2002-02-05 | 2016-11-15 | Square, Inc. | Method of transmitting information from a power efficient card to a mobile device |
US9224142B2 (en) | 2002-02-05 | 2015-12-29 | Square, Inc. | Card reader with power efficient architecture that includes a power supply and a wake up circuit |
US9262757B2 (en) | 2002-02-05 | 2016-02-16 | Square, Inc. | Method of transmitting information from a card reader with a power supply and wake-up circuit to a mobile device |
JP2004310672A (ja) * | 2003-04-10 | 2004-11-04 | Seiko Epson Corp | データ入力装置および画像出力システム |
US7340550B2 (en) * | 2004-12-02 | 2008-03-04 | Intel Corporation | USB schedule prefetcher for low power |
US20060206631A1 (en) * | 2005-03-09 | 2006-09-14 | Chin-Chen Kuo | Data duplication method and system used between USB devices |
JP4075898B2 (ja) * | 2005-03-23 | 2008-04-16 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
US7433975B2 (en) * | 2005-03-24 | 2008-10-07 | Intel Corporation | Integrated circuit capable of marker stripping |
US20070005815A1 (en) * | 2005-05-23 | 2007-01-04 | Boyd William T | System and method for processing block mode I/O operations using a linear block address translation protection table |
US7464189B2 (en) * | 2005-05-23 | 2008-12-09 | International Business Machines Corporation | System and method for creation/deletion of linear block address table entries for direct I/O |
US20060265525A1 (en) * | 2005-05-23 | 2006-11-23 | Boyd William T | System and method for processor queue to linear block address translation using protection table control based on a protection domain |
US7502872B2 (en) * | 2005-05-23 | 2009-03-10 | International Bsuiness Machines Corporation | Method for out of user space block mode I/O directly between an application instance and an I/O adapter |
US7552240B2 (en) * | 2005-05-23 | 2009-06-23 | International Business Machines Corporation | Method for user space operations for direct I/O between an application instance and an I/O adapter |
US7502871B2 (en) * | 2005-05-23 | 2009-03-10 | International Business Machines Corporation | Method for query/modification of linear block address table entries for direct I/O |
US7577761B2 (en) * | 2005-08-31 | 2009-08-18 | International Business Machines Corporation | Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation |
US7657662B2 (en) * | 2005-08-31 | 2010-02-02 | International Business Machines Corporation | Processing user space operations directly between an application instance and an I/O adapter |
US7500071B2 (en) * | 2005-08-31 | 2009-03-03 | International Business Machines Corporation | Method for out of user space I/O with server authentication |
US20070168567A1 (en) * | 2005-08-31 | 2007-07-19 | Boyd William T | System and method for file based I/O directly between an application instance and an I/O adapter |
KR100678905B1 (ko) * | 2005-09-27 | 2007-02-06 | 삼성전자주식회사 | 무선 usb 호스트, 무선 usb 디바이스, 이중 역할장치 호스트의 기능을 제공하는 방법 및 이중 역할 장치호스트의 기능을 수행하는 방법 |
KR20070076726A (ko) * | 2006-01-19 | 2007-07-25 | 삼성전자주식회사 | 엔드포인트 제어 장치 및 방법 |
US7668107B2 (en) * | 2006-03-22 | 2010-02-23 | Marvell Israel (M.I.S.L.) Ltd. | Hardware implementation of network testing and performance monitoring in a network device |
US7707349B1 (en) | 2006-06-26 | 2010-04-27 | Marvell International Ltd. | USB isochronous data transfer for a host based laser printer |
CN101136000B (zh) * | 2006-09-01 | 2011-01-05 | 飞思卡尔半导体公司 | 实现sd主机/从属设备的应用处理器电路和电子设备 |
EP2015194A1 (en) * | 2007-06-29 | 2009-01-14 | Thomson Licensing | Method for data transfer between host and device |
US8156220B1 (en) * | 2007-09-28 | 2012-04-10 | Emc Corporation | Data storage system |
CN101420573B (zh) * | 2007-10-23 | 2010-06-02 | 佛山普立华科技有限公司 | 利用数码摄影设备进行文件传输的系统及方法 |
US7908421B2 (en) * | 2008-09-30 | 2011-03-15 | Intel Corporation | Universal serial bus endpoint context caching |
TW201216069A (en) * | 2010-10-13 | 2012-04-16 | Asix Electronic Corp | Universal serial bus device and bulk transfer control circuit and control method thereof |
US9576159B1 (en) | 2011-01-24 | 2017-02-21 | Square, Inc. | Multiple payment card reader system |
EP2923279B1 (en) * | 2012-11-21 | 2016-11-02 | Coherent Logix Incorporated | Processing system with interspersed processors; dma-fifo |
US8910868B1 (en) | 2013-11-27 | 2014-12-16 | Square, Inc. | Firmware management |
US8931699B1 (en) | 2013-12-11 | 2015-01-13 | Square, Inc. | Bidirectional audio communication in reader devices |
US9633236B1 (en) | 2013-12-11 | 2017-04-25 | Square, Inc. | Power harvesting in reader devices |
US9256769B1 (en) | 2014-02-25 | 2016-02-09 | Square, Inc. | Mobile reader device |
US10304043B1 (en) | 2014-05-21 | 2019-05-28 | Square, Inc. | Multi-peripheral host device |
USD762651S1 (en) | 2014-06-06 | 2016-08-02 | Square, Inc. | Mobile device case |
US9760740B1 (en) | 2014-06-23 | 2017-09-12 | Square, Inc. | Terminal case with integrated dual reader stack |
US9256770B1 (en) | 2014-07-02 | 2016-02-09 | Square, Inc. | Terminal case with integrated reader and shortened base |
US9799025B2 (en) | 2014-08-19 | 2017-10-24 | Square, Inc. | Energy harvesting bidirectional audio interface |
CN104281542B (zh) * | 2014-09-26 | 2017-12-05 | 中兴通讯股份有限公司 | 多功能usb终端设备的适配方法、装置及系统 |
US10140623B1 (en) | 2014-10-27 | 2018-11-27 | Square, Inc. | Detection and explanation of lifts in merchant data |
US9355285B1 (en) | 2015-02-12 | 2016-05-31 | Square, Inc. | Tone-based wake up circuit for card reader |
KR20170083868A (ko) * | 2016-01-11 | 2017-07-19 | 삼성전자주식회사 | 데이터 이동 장치 및 데이터 이동 방법 |
US11210721B1 (en) | 2018-10-15 | 2021-12-28 | Square, Inc. | Converting items into vectors to determine optimized locations |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5849881B2 (ja) * | 1975-12-05 | 1983-11-07 | 株式会社日立製作所 | デ−タシヨリソウチ |
JPH0695993A (ja) | 1991-10-17 | 1994-04-08 | Nec Corp | 通信用メッセージバッファ状態通知装置 |
JP2793399B2 (ja) | 1991-12-09 | 1998-09-03 | 日本電気株式会社 | バッファ装置 |
JPH06274425A (ja) | 1993-03-17 | 1994-09-30 | Hitachi Ltd | ネットワークアダプタ装置 |
JPH07175698A (ja) | 1993-12-17 | 1995-07-14 | Fujitsu Ltd | ファイルシステム |
JPH09326832A (ja) | 1996-06-05 | 1997-12-16 | Matsushita Electric Ind Co Ltd | 共用バッファ装置及びその制御方法 |
GB9626752D0 (en) * | 1996-12-23 | 1997-02-12 | Northern Telecom Ltd | Management of data structures |
US6317815B1 (en) * | 1997-12-30 | 2001-11-13 | Emc Corporation | Method and apparatus for formatting data in a storage device |
JP2000305825A (ja) | 1999-04-19 | 2000-11-02 | Mitsubishi Electric Corp | バッファ管理装置 |
JP3598923B2 (ja) * | 1999-12-20 | 2004-12-08 | セイコーエプソン株式会社 | データ転送制御装置、情報記憶媒体及び電子機器 |
JP2001184176A (ja) | 1999-12-27 | 2001-07-06 | Toshiba Corp | ディスク制御装置 |
JP2001282711A (ja) | 2000-03-29 | 2001-10-12 | Ricoh Co Ltd | データ転送制御装置 |
JP3580242B2 (ja) * | 2000-10-25 | 2004-10-20 | セイコーエプソン株式会社 | シリアル/パラレル変換回路、データ転送制御装置及び電子機器 |
JP3755594B2 (ja) * | 2002-04-19 | 2006-03-15 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
JP3636157B2 (ja) * | 2002-04-19 | 2005-04-06 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
JP3636160B2 (ja) * | 2002-04-26 | 2005-04-06 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
JP3614161B2 (ja) | 2003-05-20 | 2005-01-26 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
-
2003
- 2003-05-20 JP JP2003142194A patent/JP3649226B2/ja not_active Expired - Fee Related
-
2004
- 2004-05-18 US US10/847,586 patent/US7272676B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004348246A (ja) | 2004-12-09 |
US7272676B2 (en) | 2007-09-18 |
US20050010702A1 (en) | 2005-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3649226B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP3636157B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US7505461B2 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
US7349973B2 (en) | Data transfer control device, electronic equipment, and data transfer control method | |
JP3726898B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US7337382B2 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
JP2004070571A (ja) | データ転送制御システム、電子機器、プログラム及びデータ転送制御方法 | |
JP3755594B2 (ja) | データ転送制御装置及び電子機器 | |
US7469304B2 (en) | Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation | |
JP3614161B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP3636160B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US20070005847A1 (en) | Data transfer control device and electronic instrument | |
JP4127069B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP4127071B2 (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003316734A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003323399A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2003323391A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
JP2004295594A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 | |
US20070005846A1 (en) | Data transfer control device and electronic instrument | |
JP2004021976A (ja) | データ転送制御装置、電子機器及びデータ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20040906 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20041014 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041102 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041224 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050125 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050207 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080225 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090225 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090225 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100225 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110225 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110225 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120225 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130225 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |