JP3685151B2 - クロック制御回路、データ転送制御装置及び電子機器 - Google Patents

クロック制御回路、データ転送制御装置及び電子機器 Download PDF

Info

Publication number
JP3685151B2
JP3685151B2 JP2002127159A JP2002127159A JP3685151B2 JP 3685151 B2 JP3685151 B2 JP 3685151B2 JP 2002127159 A JP2002127159 A JP 2002127159A JP 2002127159 A JP2002127159 A JP 2002127159A JP 3685151 B2 JP3685151 B2 JP 3685151B2
Authority
JP
Japan
Prior art keywords
clock
state
control
output
circuit
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
Application number
JP2002127159A
Other languages
English (en)
Other versions
JP2003323226A (ja
Inventor
伸之 ▲斎▼藤
洋昭 下野
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2002127159A priority Critical patent/JP3685151B2/ja
Priority to US10/379,686 priority patent/US7039826B2/en
Publication of JP2003323226A publication Critical patent/JP2003323226A/ja
Application granted granted Critical
Publication of JP3685151B2 publication Critical patent/JP3685151B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Information Transfer Systems (AREA)
  • Power Sources (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、クロック制御回路、データ転送制御装置及び電子機器に関する。
【0002】
【背景技術及び発明が解決しようとする課題】
近年、パーソナルコンピュータと周辺機器(広義には電子機器)とを接続するためのインタフェース規格として、USB(Universal Serial Bus)規格が注目を集めている。ところが、USB規格では必ずホストが必要であり、これまで周辺機器間でUSB規格のデータ転送を行うことができなかった。そこでUSB2.0規格の追加規格として、「USB On−The−Go(OTG)1.0」規格(以下では、OTG規格と略す。)が策定され、周辺機器間でもUSB規格のデータ転送を行うことができる。
【0003】
OTG規格では、USB規格におけるデバイスとして動作するペリフェラルに、ホストとして動作するために必要なホスト機能を持たせることができる。これによって、従来のUSB規格におけるデバイスだった周辺機器同士を相互に接続することができ、従来のUSB規格におけるホストを介することなく、データ転送を行うことができる。
【0004】
そのためOTG規格では、デュアルロールデバイス(Dual-role Device)が規定される。デュアルロールデバイスとなる機器は、ホストとしてもペリフェラルとしても動作することができるようになる。デュアルロールデバイスとなる場合、例えばOTG規格において示されるステート遷移により制御が行われる。したがって、OTG規格では数多くのステートが存在し、各ステートに対応した信号状態の生成や検出の制御を行う必要がある。
【0005】
ところが、ステートごとに使用される機能ブロックが異なり、未使用の機能ブロックに対してもクロックが供給されると消費電力の増大を招く。したがって、所与のブロック単位でクロック供給制御を行って、低消費電力化を図ることが望ましい。しかしながら、この場合数多くのステートが存在するため、遷移後のステートにおいて使用する機能ブロックと未使用の機能ブロックとを判別してクロック供給制御を行うと、処理の複雑化を招く。また各ステートにおいても、クロックの供給制御タイミングが異なり、遷移したステート内において一定の手続後にクロック供給制御を行う場合には、ハードウェアでクロック供給制御を行うと回路規模を増大させる。
【0006】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、簡素化されたクロック供給制御により低消費電力化を図るクロック制御回路、データ転送制御装置及び電子機器を提供することにある。
【0007】
【課題を解決するための手段】
上記課題を解決するために本発明は、デフォルト状態においてホストとして動作する第1のデバイスのステート遷移又はデフォルト状態においてペリフェラルとして動作する第2のデバイスのステート遷移により、少なくともホスト及びペリフェラルのステートの切り替え制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、前記クロック出力制御回路は、前記第2のデバイスのステート遷移においてアイドルステートのとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うクロック制御回路に関係する。
【0008】
ここで、第1のデバイスは、デフォルト状態においてホストとして動作するデバイスということができる。或いは、データ転送を行う相手方の電源を用いることなく自己の電源を用いて(セルフパワー電源で)データ転送を行うデバイスといってもよい。また第2のデバイスは、デフォルト状態においてペリフェラルとして動作するデバイスということができる。或いは、自己の電源又はデータ転送を行う相手方の電源を用いて(バスパワー電源で)データ転送を行うデバイスといってもよい。例えば、データ転送に先立って、第1又は第2のデバイスのいずれかに設定するようにしてもよい。
【0009】
またホストとは、データ転送制御の主導権を有するデバイスの機能をいう。またペリフェラルは、データ転送制御の主導権がなく、ホストからの指示に従うデバイスの機能をいう。
【0010】
本発明においては、第1又は第2のデバイスのステート遷移により、少なくともホスト及びペリフェラルのステートの切り替え制御を行うステートコントローラを含むデータ転送制御装置において、クロック生成回路により回路ブロックごとにクロックを生成すると共に、回路ブロック単位でクロックの出力制御を行う。第1のデバイスでは、ホストとしてデータ転送制御を行うため、アイドルステートにおいても、ステートコントローラにクロックを供給することが望ましい。一方、第2のデバイスでは、デフォルト状態としてペリフェラルとして動作するため、アイドルステートにおいて、ホストからの指示がない限りデータ転送を行うことができず、無駄な電力を消費してしまう。したがって、第2のデバイスのアイドルステートにおいてステートコントローラに供給されるクロック出力の停止又はクロック周波数の低減を行うことで、不要な消費電力を削減することができる。
【0011】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、前記第1のデバイスのステート遷移を行うとき、前記ステートコントローラへのクロックの出力制御を省略することができる。
【0012】
本発明によれば、第1のデバイスがホストとして動作するために、ステートコントローラへのクロックを供給することができる。したがって、上述した低消費電力化を図る一方で、ホスト及びペリフェラルのステートの切り替え制御を行うことができる。
【0013】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、前記第2のデバイスのステート遷移においてアイドルステートのとき、ホストとして動作するための動作制御を行うホストコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うと共に、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことができる。
【0014】
本発明によれば、第2のデバイスのアイドルステートでは、ホストコントローラ及びペリフェラルコントローラは動作させないため、不要な消費電力を削減することができる。
【0015】
また本発明は、デフォルト状態においてホストとして動作する第1のデバイスのステート遷移又はデフォルト状態においてペリフェラルとして動作する第2のデバイスのステート遷移により、少なくともホスト及びペリフェラルのステートの切り替え制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、前記クロック出力制御回路は、前記第2のデバイスのペリフェラルのステート遷移において接続相手からのデータ転送がサスペンドになったとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行い、前記第1のデバイスのステート遷移においてサスペンドステートのとき、前記ステートコントローラへのクロックの出力制御を省略するクロック制御回路に関係する。
【0016】
本発明によれば、第2のデバイスがペリフェラルとして動作中に接続相手からのデータ転送がサスペンドになったとき、第2のデバイスとしては接続相手からの指示がない限りデータ転送制御を行うことができないために不要なステートコントローラの動作を停止させることができる。また、第1のデバイスのサスペンドステートにおいては、ホストとしてステート切り替え制御を行う必要がある。そのため、ホスト及びペリフェラルのステート切り替え制御を行うと共に、不要な消費電力を削減することができる。
【0017】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、前記第1のデバイスのステート遷移においてサスペンドステートのとき、前記出力制御信号に基づいて、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことができる。
【0018】
本発明によれば、第1のデバイスがホストとして動作する場合には、ペリフェラルコントローラへのクロック出力を停止、又はクロック周波数を低減させることにより、ペリフェラルコントローラの不要な消費電力を削減することができる。
【0019】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、ペリフェラルとして動作するとき、前記出力制御信号に基づいて、ホストとして動作するための動作制御を行うホストコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行い、ホストとして動作するとき、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことができる。
【0020】
本発明によれば、ホスト及びペリフェラルのステートを切り替え制御できるため、ホストとして動作しているときにはペリフェラルコントローラの動作を停止させ、ペリフェラルとして動作しているときにはホストコントローラの動作を停止させることにより、排他的に制御される回路ブロックの不要な消費電力を削減することができる。
【0021】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、前記データ転送制御装置の各回路ブロックに供給されるクロックごとに出力停止させるか否か、又はクロック周波数を低減させるか否かを示すクロック制御パターンに基づいて、前記出力制御信号を生成することができる。
【0022】
本発明によれば、クロック制御パターンを用いて出力制御信号を生成するようにしたので、ステートを遷移した後に制御すべきクロックを判別する処理を不要とすることができ、処理の簡素化を図ることができる。
【0023】
また本発明に係るクロック制御回路では、前記クロック出力制御回路は、前記クロック制御パターンに対応したクロックコマンドが設定されるクロックコマンドレジスタと、前記クロックコマンドレジスタの設定内容を監視するためのクロックモニタレジスタとを含み、前記出力制御信号は、前記クロックコマンドレジスタに設定されたクロックコマンドのデコード結果に基づいて生成されてもよい。
【0024】
本発明によれば、クロック制御パターンを用いたクロック制御を、簡素な回路で実現することができる。
【0025】
また本発明に係るクロック制御回路では、前記クロックコマンドは、前記ステートコントローラに設定される遷移先のステートに応じて生成されてもよい。
【0026】
本発明によれば、第1及び第2のデバイスのホスト又はペリフェラルのステートに応じて、クロック制御パターンを規定しておくことで、処理の簡素化を図ることができる。
【0027】
また本発明に係るクロック制御回路では、前記第1のデバイスは、USB(Universal Serial Bus)のOTG(On-The-Go)規格のAデバイスであり、前記第2のデバイスは、USBのOTG規格のBデバイスであり、前記ステートコントローラは、USBのOTG規格にしたがって、ホスト及びペリフェラルのステートの切り替え制御を行うことができる。
【0028】
本発明によれば、USBのOTG規格による携帯機器を用いたUSB転送に伴う消費電力を、簡素な処理で低減することができる。
【0029】
また本発明は、所与の回路ブロックごとにクロックを生成するクロック生成回路と、前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、前記クロック出力制御回路は、各回路ブロックに供給されるクロックごとに出力を停止するか又はその周波数を低減するか否かを示すクロック制御パターンに基づいて生成された出力制御信号を用いて、回路ブロックごとにクロックの出力を制御するクロック制御回路に関係する。
【0030】
本発明によれば、クロック制御パターンを用いて出力制御信号を生成するようにしたので、ステートを遷移した後に制御すべきクロックを判別する処理を不要とすることができ、処理の簡素化を図ることができる。
【0031】
また本発明は、USB(Universal Serial Bus)のOTG(On-The-Go)規格のステート切り替え制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、前記クロック出力制御回路は、USBのOTG規格のBデバイスのアイドルステートのとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うクロック制御回路に関係する。
【0032】
また本発明は、USB(Universal Serial Bus)のOTG(On-The-Go)規格のステート切り替え制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、前記クロック出力制御回路は、OTG規格のBデバイスでペリフェラルとして動作している場合に接続相手からのデータ転送がサスペンドになったとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行い、OTG規格のAデバイスのサスペンドステートのとき、前記ステートコントローラへのクロックの出力制御を省略するクロック制御回路に関係する。
【0033】
なお、ステートコントローラは、USBのOTG規格を発展させた規格のステート切り替え制御を行うようにすることができる。
【0034】
また本発明に係るデータ転送制御装置は、上記いずれか記載のクロック制御回路と、第1又は第2のデバイスのステート遷移により、少なくともホスト及びペリフェラルのステートの切り替え制御を行うステートコントローラと、ホストとして動作するための動作制御を行うホストコントローラと、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラとを含むことができる。
【0035】
本発明によれば、処理を簡素化して低消費電力化を図るデータ転送制御装置を提供することができる。
【0036】
また本発明に係る電子機器は、上記記載のデータ転送制御装置と、前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置とを含むことができる。
【0037】
本発明によれば、処理を簡素化して低消費電力化を図るデータ転送制御装置を含む電子機器を提供することができる。
【0038】
【発明の実施の形態】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【0039】
1. OTG(On-The-Go)規格
1.1 AデバイスとBデバイス
まず、OTG規格について簡単に説明する。
【0040】
USB(Universal Serial Bus)規格は、ホスト(host)(例えばパーソナルコンピュータ)と1又は複数のペリフェラル(peripheral)(例えば周辺機器)との間のデータ転送を行うための規格であり、ホスト側でデータ転送制御が行われる。その一方で、USB規格においてペリフェラルであった携帯機器等において処理するデータ量が増大し、ホストを介在させることなく、低消費電力でUSB規格のデータ転送する要求が高まっている。
【0041】
このような背景の下、OTG規格はUSB2.0規格の追加規格として策定された。OTG規格では、コネクタの小型化や、ホストとして動作するために必要なホスト機能をペリフェラルに持たせるデュアルロールデバイス等についての規格が新たに盛り込まれている。
【0042】
OTG規格によるデータ転送を行う場合、例えば図1(A)に示すように、その両端にMini−Aプラグ(plug)及びMini−Bプラグが設けられたUSBケーブルにより、ホストとペリフェラルとが接続される。Mini−Aプラグは、Mini−Aレセプタクル(receptacle)及びMini−ABレセプタクルに挿入可能な構造を有している。Mini−Bプラグは、Mini−Bレセプタクル及びMini−ABレセプタクルに挿入可能な構造を有している。デュアルロールデバイスの場合、Mini−ABレセプタクルを備えておく必要がある。
【0043】
ところで、USB規格では、VBUS(電源)、GND(グラウンド)及び2本のデータ信号線(D+、D−)のみでホストとペリフェラルとを接続することができる。VBUSは、ホスト側から供給される。データ信号線D+、D−は、差動で用いられる。
【0044】
OTG規格では、図1(B)に示すようにMini−Aプラグが接続されたデュアルロールデバイスは、Aデバイス(A-Device)となる。Aデバイスは、セッション開始時においてホストとして動作し、所与の条件の下で、Bデバイスに対してホスト機能を譲ることができる。一方、Mini−Bプラグが接続されたデュアルロールデバイスは、Bデバイス(B-Device)となる。Bデバイスは、セッション開始時においてペリフェラルとして動作し、Aデバイスからホストとして動作することが許可される。なおAデバイスが、VBUSを供給する。
【0045】
デュアルロールデバイスにおいて、Mini−ABレセプタクルに挿入されたプラグの種類を判別するため、図1(C)に示すように、これまでのコネクタの端子(VBUS、D−、D+、GND)の他に、ID端子が定義されている。Mini−AプラグではID端子がGNDに接続され、Mini−BプラグではID端子がオープン状態である。
【0046】
図2に、USBケーブルが接続されたデュアルロールデバイスの例を模式的に示す。
【0047】
Mini−Aプラグが接続されたデュアルロールデバイス10と、Mini−Bプラグが接続されたデュアルロールデバイス20とは、USBケーブルを介して接続されている。デュアルロールデバイス10、20は、ID検出回路12、22を含む。ID検出回路12、22は、それぞれID端子と電気的に接続される信号線をプルアップし、該信号線の電圧に応じて、ID端子が接地されているか否かを検出する。図2におけるID検出回路12は、ID端子に接続される信号線が接地されるため、Mini−Aプラグであることを検出することができる。一方、ID検出回路22は、ID端子に接続される信号線がプルアップされるため、Mini−Bプラグであることを検出する。
【0048】
デュアルロールデバイス10では、ホスト及びペリフェラルとして動作するため、データ信号線D+をプルアップするためのプルアップ抵抗R1と、データ信号線D+をプルダウンするためのプルダウン抵抗R2とを有している。プルアップ抵抗R1は、プルアップのオン/オフを切り替えるために、スイッチ回路SW1を介して電源電圧線に接続される。プルダウン抵抗R2は、プルダウンのオン/オフを切り替えるために、スイッチ回路SW2を介して接地線に接続される。スイッチ回路SW1、SW2については、いずれか一方がオンのとき、他方がオフとなるように排他的に制御される。
【0049】
デュアルロールデバイス20も同様に、データ信号線D+をプルアップするためのプルアップ抵抗R3と、データ信号線D+をプルダウンするためのプルダウン抵抗R4とを有している。プルアップ抵抗R3は、プルアップのオン/オフを切り替えるために、スイッチ回路SW3を介して電源電圧線に接続される。プルダウン抵抗R4は、プルダウンのオン/オフを切り替えるために、スイッチ回路SW4を介して接地線に接続される。スイッチ回路SW3、SW4については、いずれか一方がオンのとき、他方がオフとなるように排他的に制御される。
【0050】
デュアルロールデバイス10、20では、データ信号線D−はプルダウンされている。
【0051】
またデュアルロールデバイス10、20は、共にAデバイスになり得るため、VBUSに電流を供給する電源制御回路VBA、VBBを含む。図2では、デュアルロールデバイス10が、電源制御回路VBAによりVBUSに電流を供給する。
【0052】
1.2 SRP(Session Request Protocol)
OTG規格では、バス上でやり取りがないとき、AデバイスがVBUSへの電流供給を停止することができる。したがって、バッテリで動作する携帯機器等がホストとして動作した場合でも無駄な電力消費を削減し、低消費電力化を図ることができるようになっている。この状態でBデバイスがセッションを開始してデータ転送を行う場合、SRPと呼ばれる手順にしたがってAデバイスに対しVBUSへの電流供給を要求することができる。ここで、セッションとはVBUSの電圧が所与の閾値電圧を越えている期間をいう。
【0053】
図3に、図2に示したデュアルロールデバイスの構成を参照しながら、FSモードにおけるSRPの実行手順を説明するための図を示す。
【0054】
FSモードでは、ホスト側のデータ信号線D+はプルダウンされ(スイッチ回路SW1がオフ、スイッチ回路SW2がオン)、ペリフェラル側のデータ信号線D+はプルアップされている(スイッチ回路SW3がオン、スイッチ回路SW4がオフ)。
【0055】
バス上のやり取りがなくAデバイスがVBUSへの電流供給を停止すると(S10)、VBUSの電圧が下がり「Vb_sess_vld」レベル(B-Device Session Valid未満)となる(S11)。Bデバイスは、これを検出すると、スイッチ回路SW3によりデータ信号線D+のプルアップ抵抗を無効にする(S12)。これにより、データ信号線のラインステートは「SE0」状態(FSモードでは、データ信号線D+が「L」レベル、データ信号線D−が「L」レベルの状態)となる(S13)。
【0056】
VBUSの電圧が「Vb_sess_end」(B-Device Session End)より小さく、かつラインステートの「SE0」状態が2ms以上継続すると、BデバイスがSRPを開始(initiate)することができる。SRPは、データラインパルシング(Data-line Pulsing)又はVBUSパルシング(VBUS Pulsing)により行うことができる。データラインパルシングは、ラインステートを「SE0」状態、「J」状態(FSモードでは、データ信号線D+が「H」レベル、データ信号線D−が「L」レベルの状態)、「SE0」状態に遷移させる方法である。VBUSパルシングは、BデバイスからVBUSに電流を供給し、VBUSの電圧を「L」レベル(Vb_sess_vld未満)、「H」レベル(Va_sess_vldより大)、「L」レベルの状態に遷移させる方法である(S14、S15)。
【0057】
Aデバイスは、データ信号線又はVBUSの電圧を監視して、いずれかの方法によりSRPが行われたことを検出すると、AデバイスがVBUSへの電流供給を開始する(S16)。これにより、VBUSの電圧が「Vb_sess_vld」以上となる(S17)。
【0058】
Bデバイスは、VBUSの電圧が「Vb_sess_end」以上になったことを検出すると、スイッチ回路SW3によりデータ信号線D+のプルアップ抵抗を有効にして(S18)、ラインステートを「J」状態に遷移させ(S19)、ペリフェラルとして動作開始する。
【0059】
Aデバイスは、ラインステートが「J」状態になったことを検出すると、ホストとして動作開始する(S20)。
【0060】
1.3 HNP(Host Negotiation Protocol)
OTG規格では、接続されたプラグによりAデバイスかBデバイスかが決まるが、そのプラグを差し替えることなく、ホスト機能とペリフェラル機能とを交換することができる。HNPは、このホスト機能とペリフェラル機能とを交換するための手順である。
【0061】
図4に、図2に示したデュアルロールデバイスの構成を参照しながら、FSモードにおけるHNPの実行手順を説明するための図を示す。
【0062】
Aデバイスがホストとして動作し、Bデバイスがペリフェラルとして動作し、HNPがイネーブルの状態であるものとする。
【0063】
Aデバイスがバスの使用を終了すると(S30)、ラインステートをアイドル状態(FSモードでは、「J」状態)にする(S31)。
【0064】
Bデバイスは、3ms以上「J」状態であることを検出すると、スイッチ回路SW3によりデータ信号線D+のプルアップ抵抗を無効にして(S32)、ラインステートを「SE0」状態にする(S33)。Aデバイスは、ラインステートが「SE0」状態であることを検出すると、スイッチ回路SW1によりデータ信号線D+のプルアップ抵抗を有効(プルダウン抵抗を無効)にする(S34)。これにより、ラインステートが「J」状態となるので(S35)、Aデバイスはペリフェラルとして動作を開始し、Bデバイスはラインステートが「J」状態であることを検出してホストとして動作を開始することができる(S36)。
【0065】
Bデバイスが、ホストとしてバスの使用を終了すると(S37)、スイッチ回路SW3、SW4によりラインステートをアイドル状態にする(S38)。Aデバイスは、これを検出するとデータ信号線D+のプルアップ抵抗を無効にして(S39)、ラインステートを「SE0」状態に遷移させる(S40)。Bデバイスは、ラインステートが「SE0」状態であることを検出すると、スイッチ回路SW3によりデータ信号線D+のプルアップ抵抗を有効(プルダウン抵抗を無効)にする(S41)。これにより、ラインステートが「J」状態となるので(S42)、Bデバイスはペリフェラルとして動作を開始し、Aデバイスはラインステートが「J」状態であることを検出してホストとして動作を開始することができる(S43)。
【0066】
このようなプロトコルによるデータ転送制御は、それぞれの状態を規定したステート間を遷移条件にしたがって遷移させることで、実現することができる。
【0067】
以下では、Aデバイス及びBデバイスのステート遷移について説明する。
【0068】
1.4 Aデバイスのステート遷移
図5に、Aデバイスのステート遷移を説明するための図を示す。
【0069】
Aデバイスは、a_idleステートが開始ステートである(ST1)。
【0070】
デュアルロールデバイスのMini−ABレセプタクルに、USBケーブルのMini−Aプラグが挿入されていないとき、プルアップされたID端子は「H」レベル(id)となるため、b_idleステートに遷移する(ST2)。すなわち、デュアルロールデバイスでは、デフォルトでBデバイスとなる。一方、Mini−Aプラグが挿入されると、ID端子が「L」レベル(id/)となるためa_idleステートとなる(ST1)。
【0071】
a_idleステートでは、VBUSへの電流供給が停止される。またデータ信号線D+のプルアップが無効化(オフ)される(プルダウンが有効化される。より具体的には、スイッチ回路SW1がオフ、スイッチ回路SW2がオン)。したがって、ラインステートは「SE0」状態となる。上位アプリケーションからVBUSの電圧を落とす要求がないとき(a_bus_drop/)であって、USB転送を行いたいとき(a_bus_req)又はBデバイスからのSRPを検出したとき(a_srp_det)、a_wait_vriseステートに遷移する(ST3)。
【0072】
a_wait_vriseステートでは、VBUSへの電流供給が開始され、VBUSの電圧が上がる。Mini−Aプラグが抜かれたとき(id)、上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、VBUSの電圧が所与の閾値電圧を越えたとき(a_vbus_vld)、又は当該ステートに規定時間以上経過したとき(a_wait_vrise_tmout)、a_wait_bconステートに遷移する(ST4)。
【0073】
a_wait_bconステートでは、Aデバイス側のデータ信号線D+のプルアップがオフとなる。このときBデバイスによりデータ信号線D+のプルアップが有効化(オン)(Bデバイスのスイッチ回路SW3がオン、スイッチ回路SW4がオフ)され、データ信号線D+が「H」レベルになったとき(ラインステートが「J」状態)(b_conn)、a_hostステートに遷移する(ST5)。なお、Mini−Aプラグが抜かれたとき(id)、上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、又は当該ステートで規定時間以上経過したとき(a_wait_bcon_tmout)、a_wait_vfallステートに遷移する(ST6)。また、何らかの原因で、VBUSの電圧が所与の閾値電圧を下回ったとき(a_vbus_vld/)、a_vbus_errステートに遷移する(ST7)。
【0074】
すなわちデュアルロールデバイスは、デフォルト状態ではBデバイスであるため、Aデバイスについては、a_wait_bconステートまで、データ信号線D+はプルダウンされた状態のままである。a_wait_vriseステートにおいてVBUSへの電流供給が開始されると、Bデバイスのプルアップがオンとなる。これにより、データ信号線D+がプルダウンされた状態であるAデバイスはホストとして動作し、データ信号線D+がプルアップされた状態であるBデバイスはペリフェラルとして動作する。
【0075】
a_hostステートでは、AデバイスがUSB規格のホストとして動作する。より具体的には、ホストとしてペリフェラルをエニュメレート(enumerate)するため、バスリセットするためのリセット信号として、「SE0」状態にデータ信号線を駆動する。そして、所与の規定時間だけその状態を継続させることにより、ペリフェラルではリセット処理が行われる。その後、ホストは、コントロール転送を用いて、コンフィギュレーション情報の転送やアドレスの割り当てなどを行い、USB転送を開始する。当該ステートにおいて、ホストになったがバスを使わなくなったとき(a_bus_req/)、又はサスペンド状態への遷移要求があるとき(a_suspend_req)、a_suspendステートに遷移する(ST8)。また、Mini−Aプラグが抜かれたとき(id)、ラインステートが「J」状態から「SE0」の状態になったとき(b_conn/)、又は上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、a_wait_bconステートに遷移する(ST9)。また、何らかの原因で、VBUSの電圧が所与の閾値電圧を下回ったとき(a_vbus_vld/)、a_vbus_errステートに遷移する(ST10)。
【0076】
a_suspendステートでは、SOF(Start Of Frame)パケットの送出が停止される。このとき、Bデバイスはペリフェラルとして動作しており、Bデバイスではb_peripheralステートのままである。このとき、AデバイスがBデバイスに対して上述のHNPを許可し(a_set_b_hnp_en)、Bデバイスにおいてプルアップがオフされてラインステートが「SE0」状態になると(b_conn/)、a_peripheralステートに遷移する(ST11)。また、Aデバイスがバスを使用したいとき(a_bus_req)、又はBデバイスがラインステートを「K」状態にしたとき(b_bus_resume)、a_hostステートに遷移する(ST12)。更にまたAデバイスがBデバイスに対して上述のHNPを許可せず(a_set_b_hnp_en/)、Bデバイスにおいてプルアップがオフされてラインステートが「SE0」状態になると(b_conn/)、a_wait_bconステートに遷移する(ST13)。更にまたMini−Aプラグが抜かれたとき(id)、上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、又はa_suspendステートで規定時間以上経過したとき(a_aidl_bdis_tmout)、a_wait_vfallステートに遷移する(ST14)。また、何らかの原因で、VBUSの電圧が所与の閾値電圧を下回ったとき(a_vbus_vld/)、a_vbus_errステートに遷移する(ST15)。
【0077】
a_peripheralステートでは、Aデバイスではプルアップをオンにし、Bデバイスでは後述するようにAデバイスからHNPのイネーブルによりBデバイス側のプルアップがオフされるため、Aデバイスがペリフェラルとなり、Bデバイスがホストになる。ホストとなったBデバイスがデータ転送を終えた場合のようにBデバイスがバスを使わないとき(b_bus_suspend)、a_wait_bconステートに遷移する(ST16)。a_wait_bconステートでは、上述したようにAデバイスのプルアップがオフされる。また、a_peripheralステートにおいて、Mini−Aプラグが抜かれたとき(id)、又は上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、a_wait_vfallステートに遷移する(ST17)。また、何らかの原因で、VBUSの電圧が所与の閾値電圧を下回ったとき(a_vbus_vld/)、a_vbus_errステートに遷移する(ST18)。
【0078】
a_bus_errステートでは、過電流状態となるため、例えばファームウェアによりVBUSの電圧を落とすように要求される。このようなステートにおいては、Mini−Aプラグが抜かれたとき(id)、又は上位アプリケーションからVBUSの電圧を落とす要求があったとき(a_bus_drop)、a_wait_vfallステートに遷移する(ST19)。
【0079】
a_wait_vfallステートでは、VBUSへの電流供給が停止される。Mini−Aプラグが抜かれたとき(id)、バスを使いたいとき(a_bus_req)、又はVBUSの電圧が所与の閾値電圧を下回った状態で(a_sess_vld/)Bデバイスにおいてプルアップがオフされてラインステートが「SE0」状態になると(b_conn/)、a_idleステートに遷移する(ST20)。
【0080】
1.5 Bデバイスのステート遷移
図6に、Bデバイスのステート遷移を説明するための図を示す。
【0081】
Bデバイスは、b_idleステートが開始ステートである(ST30)。
【0082】
b_idleステートでは、VBUSへの電流供給は停止される。したがって、VBUSの電圧は、所与の閾値電圧を下回る。またデータ信号線D+のプルアップがオフされる。このとき、Mini−Aプラグが挿入されると、ID端子が「L」レベル(id/)となるためa_idleステートとなる(ST31)。またVBUSの電圧が所与の閾値電圧を越えると(b_sess_vld)、b_peripheralステートに遷移する(ST32)。
【0083】
b_peripheralステートでは、データ信号線D+のプルアップがオンとなるため、Aデバイスのa_wait_bconステートにおいてb_connの検出を行うことができる。b_periheralステートでは、Aデバイスからの要求に応答して、ペリフェラルとして動作する。Bデバイスがホストになるときは、Aデバイスがa_suspendになったことを検出し(a_bus_suspend)、Bデバイスの上位アプリケーションからのホスト動作要求(b_bus_req)があって、かつAデバイスからHNPをイネーブルに設定されているとき(b_hnp_en)、b_wait_aconステートに遷移する(ST33)。またb_peripheralステートにおいて、Mini−Aプラグが挿入されたとき(id/)、又はVBUSの電圧が所与の閾値電圧を下回ったとき(b_sess_vld/)、b_idleステートに遷移する(ST34)。この結果、b_idleステートにおいてプルアップがオフされ、例えばAデバイスはa_wait_vfallステートからa_idleステートに遷移することができる。
【0084】
b_wait_aconステートでは、Bデバイスのデータ信号線D+のプルアップがオフされ、Aデバイス側でデータ信号線D+がプルアップされるのを待つ。そして、Aデバイス側でデータ信号線D+のプルアップがオンされると(a_conn)、b_hostステートに遷移する(ST35)。またb_wait_aconステートにおいて、Aデバイスがラインステートを「K」状態にしたことを検出したとき(a_bus_resume)、又はb_wait_aconステートで規定時間以上経過すると(b_ase0_brst_tmout)、b_peripheralステートに遷移する(ST36)。また、Mini−Aプラグが挿入されたとき(id/)、又はVBUSの電圧が所与の閾値電圧を下回るとき(b_sess_vld/)、b_idleステートに遷移する(ST37)。
【0085】
b_hostステートでは、ホスト処理が行われる。すなわち、バスリセットを行って、SOFパケットの生成を開始する。Aデバイスは、ホストとして動作するBデバイスからの要求に応答することになる。Bデバイスが、ホストとして転送するデータがなくなりバスを使用しないとき(b_bus_req/)、又はAデバイスにおいてプルアップがオフされたことが検出されたとき(a_conn/)、b_peripheralに遷移する(ST38)。このとき、Aデバイスは、Bデバイスのb_bus_suspendとして検出することができ、Aデバイスではa_peripheralステートからa_wait_bconステートに遷移する。この結果、Aデバイスのプルアップがオフされる。b_peripheralステートでは、Bデバイスはプルアップがオンされる。また、b_hostステートにおいて、Mini−Aプラグが挿入されたとき(id/)、又はVBUSの電圧が所与の閾値電圧を下回るとき(b_sess_vld/)、b_idleステートに遷移する(ST39)。
【0086】
Bデバイスは、Aデバイスがサスペンド状態のときSRPによりセッション開始を要求することができる。すなわち、b_idleステートにおいて、Bデバイスの上位アプリケーションからのバス使用要求があり(b_bus_req)、VBUSの電圧がBデバイスのセッション終了閾値電圧を下回った状態で(b_sess_end)、かつラインステートが「SE0」の状態で規定時間以上経過したとき(b_se0_srp)、b_srp_initステートに遷移する(ST40)。
【0087】
b_srp_initステートでは、SRPによりセッション開始をAデバイスに対して要求する。BデバイスがSRPを終了したとき(b_srp_done)、又はMini−Aプラグが挿入されたとき(id/)、b_idleステートに遷移する(ST41)。
【0088】
2. データ転送制御装置
次に、上述したステート遷移によりホスト機能及びペリフェラル機能を切り替えてUSB転送のデータ転送制御を行うOTGデバイスコントローラIC(広義にはデータ転送制御装置)について説明する。
【0089】
図7に、OTGデバイスコントローラICの機能ブロック図を示す。
【0090】
OTGデバイスコントローラIC200は、OTGコントローラ(広義には、ステートコントローラ)210、HC220、PC230、レジスタ部240、パケットバッファ250、バッファコントローラ260、ホスト/ペリフェラル切り替え回路270、トランシーバ280、CPUインタフェース(InterFace:I/F)290、DMAハンドラ292、クロックコントローラ(広義にはクロック制御回路)294、テストモジュール296を含む。
【0091】
OTGコントローラ210は、データライン及びVBUSの状態を監視しながら図5及び図6に示したステート遷移により、各ステートに応じたコントロール信号を生成し、例えばホスト及びペリフェラルの切り替え制御を行ってデータライン制御を行う。
【0092】
このようなOTGコントローラ210は、OTG管理回路212、ID検出回路214、VBUS検出回路216、ラインステート検出回路218を含む。OTG管理回路212は、デュアルロールデバイスとして機能するためのOTGステート(図5及び図6に示す各ステート)の管理を行う。より具体的には、OTG管理回路212は、CPUから設定されたOTGステートに対応したOTGステートコマンドに基づいて、当該OTGステートに対応したコントロール信号を生成する。ID検出回路214は、図2に示したようにID端子の状態を検出する。VBUS検出回路216は、VBUSの状態が、OTGステートに応じた検出条件を満たしたか否かを検出する。ラインステート検出回路218は、トランシーバ280から通知されるラインステートが、OTGステートに応じた検出条件を満たしたか否かを検出する。
【0093】
ID信号は、ID端子に接続される信号である。ID検出回路214は、ID信号によりAデバイスかBデバイスかを判別することができる。
【0094】
1.0Vレベル検出信号COMPIN10は、VBUS/2の電圧が1.0V以上であるか否かを示す検出信号である。2.2Vレベル検出信号COMPIN22は、VBUS/2の電圧が2.2V以上であるか否かを示す検出信号である。VBUS検出回路216は、1.0Vレベル検出信号COMPIN10又は2.2Vレベル検出信号COMPIN22を参照することで、VBUSの状態が、所与のステートにおける検出条件を満たすか否かを検出することができる。
【0095】
VBUSドライブ信号BUSPWRSELは、5V電源使用時において、VBUSに供給する電流の8mA又は500mAのいずれかに切り替えるためのイネーブル信号である。VBUSドライブ信号VBUSDRV5は、5V電源でVBUSに電流を供給するためのイネーブル信号である。VBUSドライブ信号VBUSDRV3は、3.3V電源でVBUSに電流を供給するためのイネーブル信号である。Rpuイネーブル信号xRPUENは、データ信号線D+のプルアップのイネーブル信号である。Rpdイネーブル信号RPDENは、データ信号線D+のプルダウンのイネーブル信号である。
【0096】
OTG管理回路212は、当該OTGステートに対応して、コントロール信号(VBUSドライブ信号BUSPWRSEL、VBUSDRV5、VBUSDRV3、Rpuイネーブル信号xRPUEN、Rpdイネーブル信号RPDEN、HCイネーブル信号HCEnb、PCイネーブル信号PCEnbなど)を生成することができる。
【0097】
HC220は、OTGコントローラ210からのHCイネーブル信号HCEnbによりイネーブルにされたときホスト機能の動作制御を行う。HC220のステート制御は、CPU(ファームウェア)により行うことができる。より具体的には、ファームウェアが、種々のイベント(例えばOTGステートa_hostに遷移したことを示すイベント)をトリガとしてホストのステート遷移を行い、ホストの遷移先のステート(Suspend、Reset、Oprational、Resume)に対応したHCステートコマンドを所与のコントロールレジスタに設定することによって各ステートにおけるUSBデータライン状態(「J」、「K」、「SE0」)の生成をHCに指示することができる。HC220は、設定されたステートコマンドに応じて、データライン状態の生成を行う。当該ステートにおいて時間制限(タイムアウト条件)がある場合にはファームウェアが時間計測を行ってステート遷移制御を行うことができる。HC220がAデバイスでイネーブルにされたとき、図8に示すようなフローでホストのステート遷移を行う。「Operational」ステートにおいて、USB転送が行われる。またHC220がBデバイスでイネーブルにされたとき、図9に示すようなフローでホストのステート遷移を行う。
【0098】
PC230は、OTGコントローラ210からのPCイネーブル信号PCEnbによりイネーブルにされたときペリフェラル機能の動作制御を行う。PC230は、OTGコントローラ210によって検出されたラインステート等に基づくOTGステートの遷移においてペリフェラルのとき、リセット検出、サスペンド検出及びレジューム検出を行い、割り込みによりCPUに通知する。またOTGステートの遷移においてホストのとき、リモートウェイクアップ検出が有効になる。HC220とPC230とは、排他的にイネーブル制御される。
【0099】
レジスタ部240は、ホスト及びペリフェラルとして動作制御するためのレジスタ群である。
【0100】
パケットバッファ250は、ホスト又はペリフェラルとして転送されるパケットを蓄積するバッファである。
【0101】
バッファコントローラ260は、CPU I/F290又はDMAハンドラ292を介して入出力されるパケットバッファ250へのアクセスアドレスの管理や、USB転送を行う場合に入出力されるパケットバッファ250へのアクセスアドレスの管理の制御を行う。
【0102】
ホスト/ペリフェラル切り替え回路270は、ラインステートコントローラ272、HC/PCセレクタ274を含む。ラインステートコントローラ272は、トランシーバ280に対して信号ライン状態の生成の指示を行う。UTMIセレクタ274は、トランシーバ280と、HC220又はPC230とを接続するための、経路切り替えを行う。
【0103】
トランシーバ280は、USBデータ信号の送受信、USBデータライン状態の生成、パラレル/シリアル変換処理やビットスタッフィング/アンスタッフィング処理等を行う。USB正極信号DPは、データ信号線D+に出力される。USB負極信号DMは、データ信号線D−に出力される。
【0104】
CPUインタフェース290は、PIO転送の制御を行うと共に、CPUへの割り込み信号を生成する。CPUアドレスCA[7:0]は、CPUアドレスバスである。CPUデータCD[15:0]は、CPUデータバスであり、DMAデータバスと共用される。チップセレクトxCSは、チップセレクト信号である。リードストローブxRDは、CPUリートストローブであり、DMAリードストローブと共用される。ライトストローブxWRは、CPUライトストローブであり、DMAライトストローブと共用される。ウェイト信号xWAITは、CPUへのウェイト信号である。割り込み信号xINTは、CPUへの割り込み信号である。
【0105】
DMAハンドラ292は、DMA転送制御を行う。DMA要求xDREQは、DMA転送要求信号である。DMAアクノリッジxDACKは、DMA転送許可信号である。
【0106】
クロックコントローラ(クロック制御回路)294は、上述した各機能ブロックに供給されるクロック信号の分配や動作制御を行う。クロックコントローラ294は、発振子入力XI及び発振子出力XOに接続された発振子を用いた発振出力を、PLL回路で逓倍してクロック信号を生成する。なお、クロックコントローラ294は、PLLフィルタVCにPLLフィルタ回路を接続するようにしてもよいし、クロック選択信号CLKSEL[1:0]により外部クロック入力CLKINからのクロック信号、又は発振子を使用したクロック信号のいずれかを選択することができるようにしてもよい。
【0107】
テストモジュール296は、OTGデバイスコントローラIC200の各部の動作確認テストを行うためのモジュールである。テストイネーブルTESTによりテストモードに設定されると、テストモードTIN[1:0]で選択されたテストモードでテストを行い、テストモニタTESTMONを介して内部テストをモニタすることができる。
【0108】
このような構成のOTGデバイスコントローラIC200では、OTGコントローラ210によって検出された遷移条件が、CPUインタフェース290を介してCPUに対し割り込み信号として通知され、CPU(ファームウェア)にステート遷移を制御させる。そして、CPUにより、CPUインタフェース290を介して、遷移先のOTGステートに対応したOTGステートコマンドがOTGコントローラ210に設定される。OTGコントローラ210は、設定されたOTGステートコマンドに対応したコントロール信号を生成し、各機能ブロックを制御する。すなわち、各ステート間は、ファームウェアにより遷移制御される。上述したH/W割り込み信号又は上位アプリケーション(ソフトウェア)からの指示が、ステートの遷移条件となる。
【0109】
またHC220において、ホスト機能を実行するための各ステートを遷移させる場合にも同様に制御することができる。より具体的には、図8及び図9に示したように、ファームウェアによりHCステートのステート遷移制御を行い、遷移先のHCステートに対応したHCステートコマンドが設定されたHC220が、該HCステートコマンドに応じたコントロール信号によりホスト制御を行う。
【0110】
こうすることで、図10に示すように、HNPによりホスト機能及びペリフェラル機能を切り替えながらデュアルロールデバイスとしての動作を実現することができる。図10では、割り込み信号により、ファームウェアがOTGステートコマンド及びHCステートコマンドを設定して、デュアルロールデバイスの動作制御を行っている。
【0111】
3. クロックコントローラ(クロック制御回路)
上述したOTGデバイスコントローラIC200は、デュアルロールデバイスとしての機能を実現する場合に、図5及び図6に示すような複数のステート間の遷移を行って、ホスト機能とペリフェラル機能を切り替える。ところがOTGデバイスコントローラIC200は、これら機能を排他的に切り替えるため、図7に示した各機能ブロックにクロックを定常的に供給することは消費電力の増大を招く。そこでクロックコントローラ294は、OTGデバイスコントローラIC200の各部について共通にクロックを供給することができる複数の機能ブロックを制御単位とする回路ブロックごとに、ステート遷移に応じてその出力を停止させ、又はその周波数を低減させる出力制御可能なクロックを生成することができる。
【0112】
更に、遷移後のステートにおいて、使用する機能ブロックと未使用の機能ブロックとを判別してクロック供給制御を行うと処理の複雑化を招く。その上、各ステートにおいてもクロックの供給制御タイミングが異なり、遷移したステート内において一定の手続後にクロック供給制御を行う場合には、ハードウェアでクロック供給制御を行うことは困難である。そのためクロックコントローラ294では、ファームウェアにより回路ブロック単位に供給するか否かを示すクロック制御パターンが設定され、該クロック制御パターンをデコードして回路ブロック単位にクロックの出力制御を行うことができるようになっている。こうすることで、多数のステート遷移により制御され、かつ各ステートに応じて使用する機能ブロック及び未使用の機能ブロックがある場合に、処理が簡素化されたクロック供給制御により無駄な電力消費を抑えることができる。
【0113】
3.1 構成の概要
図11に、クロックコントローラ294に適用されるクロック制御回路の構成の概要を示す。
【0114】
クロック制御回路300は、クロック生成回路310と、クロック出力制御回路320とを含む。
【0115】
クロック生成回路310は、発振回路312と、PLL回路314と、クロック分配制御回路316とを含む。発振回路312は、外部に接続された発振子318の発振周波数に応じた発振出力をPLL回路314に供給する。PLL回路314は、その発振出力を逓倍したPLLクロックを生成する。クロック分配制御回路316は、PLLクロックを用いて回路ブロックごとに供給される複数のクロック(CLK、CLK、・・・、CLK)を生成し、各回路ブロックに分配する。
【0116】
発振回路312は、発振イネーブル信号OSCen(広義には出力制御信号)により、発振動作を開始又は停止する。
【0117】
PLL回路314は、PLLイネーブル信号PLLen(広義には出力制御信号)により、PLL発振動作を開始又は停止し、或いはPLLクロックの出力を停止する。
【0118】
クロック分配制御回路316は、クロック出力制御回路320からのクロック分配制御信号(広義には出力制御信号)により、回路ブロックごとにクロックの出力制御を行って、回路ブロックにクロックを供給する。
【0119】
クロック出力制御回路320は、クロックコントロールレジスタ322、クロックモニタレジスタ324、クロックコマンドレジスタ326、クロックコマンドデコーダ328、起動回路330を含むことができる。
【0120】
クロックコントロールレジスタ322には、ファームウェアによりクロックコントロールデータが設定される。クロックコントロールデータとして、例えば発振回路又はPLL回路を安定させるまでのウェイト数がある。
【0121】
クロックモニタレジスタ324には、クロック出力制御回路320によるクロック生成回路310の監視結果が設定される。この監視結果として、例えば起動回路330から出力される発振イネーブル信号OSCenの状態が設定されたり、クロックコマンドデコーダ328から出力される出力制御信号の状態が設定されたりする。ファームウェアを処理するCPUは、例えばクロックモニタレジスタ324から読み出されたクロックモニタデータを参照することができる。
【0122】
クロックコマンドレジスタ326には、ファームウェア若しくはハードウェアによりクロックコマンドが設定される。クロックコマンドは、回路ブロック単位にクロック(CLK〜CLK)の出力を制御するか否かを示すクロック制御パターンである。
【0123】
クロックコマンドデコーダ328は、クロックコマンドレジスタ326に設定されたクロック制御パターンをデコードして出力制御信号を生成する。この出力制御信号により、発振回路312、PLL回路314又はクロック分配制御回路316の出力制御を行うことができる。
【0124】
起動回路330は、トリガ信号が入力されると、発振回路312の発振動作を開始させる発振イネーブル信号OSCenとPLLイネーブル信号PLLenを出力する。起動回路330は、クロックコマンドデコーダ328のデコード結果を用いて、発振制御又はPLL発振制御が行われる。また起動回路330は、クロックコントロールレジスタ322の設定内容に基づき、発振制御又はPLL発振制御を行うことができるようにしてもよい。
【0125】
また起動回路330は、例えば発振回路ウェイクアップ回路やPLL回路ウェイクアップ回路を含むことができる。この場合、トリガ信号が入力されると発振回路312の発振動作を開始させ、発振回路ウェイクアップ回路により、発振回路312の発振動作が安定するまでの時間をカウントさせることができる。そして、タイムアウトになったときに、発振回路ウェイクアップ回路は、発振回路312の後段に接続されるPLL回路に対し、発振クロックが安定していることを通知することができる。そして、PLL回路の発振動作を開始させ、PLL回路ウェイクアップ回路により、PLL回路314の発振動作が安定するまでの時間をカウントさせることができる。更にタイムアウトになったときに、PLL回路ウェイクアップ回路は、PLL回路314の出力をイネーブルにして、安定したPLLクロックを出力させることができる。
【0126】
発振回路312及びPLL回路314の内部の所与の発振ノードを固定するか否かを制御することで、発振開始及び停止の制御が可能である。またPLL回路314の出力を「L」レベルに固定するか否かを制御することで、PLL回路の出力開始及び停止の制御が可能である。
【0127】
ところで、OTGデバイスコントローラIC200では、USBケーブルの接続により、セルフパワーで動作するAデバイス(広義には、第1のデバイス)、又はバスパワーで動作可能なBデバイス(広義には、第2のデバイス)のいずれかに設定される。更にAデバイス及びBデバイスのいずれかに設定された後に、ホスト(データ転送制御の主導権を有するホスト)機能及びペリフェラル(データ転送制御の主導権を有しないペリフェラル)機能の切り替え制御が行われる。そのため、OTGデバイスコントローラIC200の各部に対し、複雑なステート遷移に応じたクロック供給制御を行うことは、重要な課題となる。以下では、OTGデバイスコントローラIC200のクロック供給制御について詳細に説明する。
【0128】
3.2 回路ブロック
図12に、クロック制御回路300が適用されるクロックコントローラ294の出力制御単位である回路ブロックの一例を説明するための図を示す。
【0129】
ここでは、図7に示すOTGデバイスコントローラIC200の機能ブロックと同一部分には同一符号をしている。
【0130】
本実施形態では、OTGデバイスコントローラIC200を例えば5つの回路ブロックに分割し、各回路ブロック単位にクロックを生成すると共に出力制御を行う。より具体的には、クロックコントローラ294は、トランシーバクロックXcvr_CLK、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、OTGCクロックOTGC_CLKを生成する。トランシーバクロックXcvr_CLKは、トランシーバ280に供給される。HCクロックHC_CLKは、HC220に供給される。PCクロックPC_CLKは、PC230に供給される。メインクロックMain_CLKは、レジスタ部240、パケットバッファ250、バッファコントローラ260及びDMAハンドラ292に供給される。OTGコントローラ210は、OTGコントローラ210、ホスト/ペリフェラル切り替え回路270及びCPUインタフェース290に供給される。
【0131】
3.3 クロック制御パターン
図13に、クロック制御パターンの一例を示す。
【0132】
クロック制御パターンは、図5及び図6に示したOTGステートに応じて、回路ブロック単位に出力制御を行うか否かを示す。
【0133】
OTGデバイスコントローラIC200では、ファームウェアでステート遷移制御が行われる。そして、遷移先のステートに応じたステートコマンドがOTGコントローラ210に設定され、該ステートコマンドをデコードして当該ステートの制御を行うコントロール信号が生成される。そのためOTGデバイスコントローラIC200では、原則としてファームウェアによりステートコマンドが設定されるため、ステートに応じたコントロール信号を生成するOTGコントローラ210と、該ステートに対応したステートコマンドを設定するためのCPUインタフェース290に対してはクロック供給を行う必要がある。したがって、OTGCクロックOTGC_CLKは、ほとんどのステートで供給される。
【0134】
Aデバイスに設定された場合、a_idleステートでは、VBUSへの電流供給が行われず、かつデータ信号線D+、D−が駆動されない。しかしながらAデバイスとしては、接続相手のBデバイスからのSRPを検出する必要があるため、OTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。そこで、a_idleステートでは、OTGCクロックOTGC_CLKのみ供給する。
【0135】
a_wait_vriseステートはVBUSの電圧が所与の閾値電圧に達するのを待つステートであり、a_wait_bconステートはBデバイスでデータ信号線がプルアップされるのを待つステートである。そのため、両ステートではOTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。
【0136】
a_hostステートでは、HC220によりホスト動作が行われる。したがって、ホスト機能と排他的に切り替えられるペリフェラル機能の動作制御を行うPC230についてはクロックを供給する必要がない。そのためa_hostステートでは、PCクロックPC_CLKのみ供給を停止させることにより、低消費電力化を図ることができる。
【0137】
a_suspendステートでは、BデバイスはSRPやHNPを開始することができる。そのため、OTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。
【0138】
a_peripheralステートでは、PC230によりペリフェラル動作が行われる。したがって、ペリフェラル機能と排他的に切り替えられるホスト機能の動作制御を行うHC220についてはクロックを供給する必要がない。そのためa_peripheralステートでは、HCクロックHC_CLKのみ供給を停止させることにより、低消費電力化を図ることができる。
【0139】
a_wait_vfallステートは、VBUSの電圧が所与の閾値電圧を下回るのを待つステートである。そのため、OTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。
【0140】
a_vbus_errステートでは、過電流によりVBUSの電圧が下がるのを待つステートである。そのため、OTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。
【0141】
一方、Bデバイスに設定された場合、b_idleステートは、USBケーブルが接続されていないときのデフォルトのステートである。したがって、データ転送制御を行うことなく電流が消費されてしまう事態を回避するため、OTGデバイスコントローラIC200の各部へのクロックの供給を停止する。b_idleステートから他のステートに遷移するときは、まず、遷移条件に対応した割り込み(例えば、後述するChangeID割り込みやCross44V割り込み)をトリガとして発振回路及びPLL回路の動作を開始させる。その後、クロックが安定して供給されてOTGコントローラ210及びCPUインタフェース290にステートコマンドを設定可能になった後に、遷移先のステートに対応したステートコマンドが設定される。
【0142】
b_srp_initステートでは、BデバイスがSRPを開始するステートである。b_srp_initステートでは、SRPによりデータラインパルシング及びVBUSパルシングを行うために、OTGコントローラ210及びCPUインタフェース290にクロックを供給しておく必要がある。
【0143】
b_peripheralステートでは、PC230によりペリフェラル動作が行われる。したがって、ペリフェラル機能と排他的に切り替えられるホスト機能の動作制御を行うHC220についてはクロックを供給する必要がない。そのためb_peripheralステートでは、HCクロックHC_CLKのみ供給を停止させることにより、低消費電力化を図ることができる。
【0144】
ところが、b_periheralステートであっても、USB2.0規格によれば、ダウンストリームデバイス(the downstream device)としてのBデバイスは、接続相手であるアップストリームデバイス(the upstream device)としてのAデバイスが3ms以上バスをサスペンド状態にしたことを検出すると、AデバイスはUSBホストのサスペンド状態となる。この場合、ホストとして動作するAデバイスがUSBサスペンド状態であるため、Bデバイスは動作することができないため、全てのブロックへのクロックの供給を停止させることで、低消費電力化を図ることができる。
【0145】
b_wait_aconステートは、HNPによりAデバイスがペリフェラルになるのを待つステートである。したがって、OTGコントローラ210及びCPUインタフェース290のみクロックを供給させればよい。しかしながら、b_wait_aconステートは、通常の場合、b_periheralステートからb_hostステートへの遷移途中である。そこで、b_wait_aconステートの期間が短い場合には、b_peripheralステートと同じクロック供給制御を行う方が制御が簡素化される。したがって、図13ではb_peripheralステートと同じクロック制御パターンになっている。
【0146】
b_hostステートでは、HC220によりホスト動作が行われる。しかしながら、ホスト機能と排他的に切り替えられるペリフェラル機能の動作制御を行うPC230についてはクロックを供給する必要がない。そのためb_hostステートでは、PCクロックPC_CLKのみ供給を停止させることにより、低消費電力化を図ることができる。
【0147】
その他、テストモードでは全機能ブロックについて所与の検査を行うために、全機能ブロックにクロックが供給される。
【0148】
以上のようにAデバイス及びBデバイスの各ステートについて、回路ブロック単位でクロック制御を行う場合、クロック制御パターンは、Waitモード、Hostモード、Peripheralモード、AllSleepモード、AllActiveモードの5パターンである。
【0149】
Waitモードでは、OTGコントローラ210、CPUインタフェース290及びホスト/ペリフェラル切り替え回路270にのみクロック(OTGCクロックOTGC_CLK)が供給される。
【0150】
Hostモードでは、OTGコントローラ210、CPUインタフェース290及びホスト/ペリフェラル切り替え回路270及びHC220にクロック(OTGCクロックOTGC_CLK、HCクロックHC_CLK)が供給される。
【0151】
Peripheralモードでは、OTGコントローラ210、CPUインタフェース290及びホスト/ペリフェラル切り替え回路270及びPC230にのみクロック(OTGCクロックOTGC_CLK、PCクロックPC_CLK)が供給される。
【0152】
AllSleepモードでは、全機能ブロックのみならず、発振回路及びPLL回路の発振動作も停止される。
【0153】
AllActiveモードでは、全機能ブロックに対してクロックが供給される。
【0154】
このような5パターンのいずれかのパターンが、クロック制御パターンとしてファームウェアによりクロック制御回路300に設定される。クロック制御回路300では、クロック制御パターンをデコードして回路ブロック単位で、クロックの出力制御が行われる。
【0155】
3.4 具体的な構成例
図14に、クロックコントローラ294の詳細な構成例を示す。
【0156】
ただし、図11に示すクロック制御回路300と同一部分には同一符号を付し、適宜説明を省略する。
【0157】
クロック生成回路310は、発振回路312、PLL回路314、クロック分配制御回路316を含む。
【0158】
クロック生成回路310では、発振回路312から発振クロックXCLKが出力され、PLL回路314において発振クロックXCLKを逓倍したPLLクロックPLL_CLKが生成される。PLLクロックPLL_CLKは、クロック分配制御回路316に供給される。
【0159】
クロック分配制御回路316は、PLLクロックPLL_CLKを用いて、回路ブロック単位にクロック(図14ではトランシーバXcvr_CLK、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、OTGCクロックOTGC_CLK)を生成する。クロック分配制御回路316は、Xcvr_CLK生成回路350、HC_CLK生成回路352、PC_CLK生成回路354、Main_CLK生成回路356、OTGC_CLK生成回路358を含む。Xcvr_CLK生成回路350は、PLLクロックPLL_CLKを用いて所与の周波数のトランシーバクロックXcvr_CLKを生成すると共に、クロックコマンドデコーダ328からの出力制御信号XcvrSleepに基づいてトランシーバクロックXcvr_CLKの停止又はその周波数を低減する出力制御を行う。HC_CLK生成回路352は、PLLクロックPLL_CLKを用いて所与の周波数のHCクロックHC_CLKを生成すると共に、クロックコマンドデコーダ328からの出力制御信号HCSleepに基づいてHCクロックHC_CLKの出力制御を行う。PC_CLK生成回路354は、PLLクロックPLL_CLKを用いて所与の周波数のPCクロックPC_CLKを生成すると共に、クロックコマンドデコーダ328からの出力制御信号PCSleepに基づいてPCクロックPC_CLKの出力制御を行う。Main_CLK生成回路356は、PLLクロックPLL_CLKを用いて所与の周波数のメインクロックMain_CLKを生成すると共に、クロックコマンドデコーダ328からの出力制御信号MainSleepに基づいてメインクロックMain_CLKの出力制御を行う。OTGC_CLK生成回路358は、PLLクロックPLL_CLKを用いて所与の周波数のOTGCクロックOTGC_CLKを生成すると共に、クロックコマンドデコーダ328からの出力制御信号OTGCSleepに基づいてOTGCクロックOTGC_CLKの出力制御を行う。
【0160】
クロック出力制御回路320の起動回路330は、発振回路起動タイマ360、PLL回路起動タイマ362、発振回路ウェイクアップ(OSCWakeUp)回路364、PLL回路ウェイクアップ(PLLWakeUp)回路366を含む。
【0161】
発振回路起動タイマ360は、クロックコントロールレジスタ322に設定されたウェイト数を発振出力安定期間とし、タイマ起動後、該ウェイト数分を経過したときに、PLL回路起動信号を出力し、PLL回路314のPLL発振を開始させると共にPLL回路起動タイマ362を起動させる。
【0162】
PLL回路起動タイマ362は、クロックコントロールレジスタ322に設定されたウェイト数をPLL発振出力安定期間とし、タイマ起動後、該ウェイト数分を経過したときに、PLL回路ウェイクアップ信号をPLLウェイクアップ回路366に出力する。
【0163】
発振回路ウェイクアップ回路364には、クロックコマンドデコーダ328から出力される発振回路発振イネーブル信号が入力される。発振回路発振イネーブル信号によりイネーブル状態になった発振回路ウェイクアップ回路364は、レジュームトリガ信号により起動され、発振イネーブル信号OSCenを発振回路312に出力する。より具体的には、発振回路発振イネーブル信号によりイネーブル状態になった発振回路ウェイクアップ回路364は、リモートウェイクアップ(RemoteWakeUp)トリガ又はローカルウェイクアップ(LocalWakeUp)トリガにより起動され、発振イネーブル信号OSCenを発振回路312に出力する。リモートウェイクアップトリガは、Aデバイスが、a_suspendステートからa_hostステートに遷移するとき、Bデバイスがラインステートを「K」状態にしたことを検出したときにアクティブとなる。ローカルウェイクアップトリガは、ChangeID割り込み、DetnonJ割り込み又はCross44V割り込みが発生したときにアクティブとなる。ここでChangeID割り込みは、例えばb_idleステートからa_idleステートに遷移するときに、Mini−Aプラグが挿入されたときのようにID端子の変化をトリガとして発生する。DetnonJ割り込みは、b_idleステートからb_peripheralステートに遷移するときに、ラインステートが「J」状態でないことを検出したときに発生する。Cross44V割り込みは、AデバイスにおいてVBUSの電圧が所与の閾値電圧が4.4Vを境に変化したときに発生する。
【0164】
PLL回路ウェイクアップ回路366には、クロックコマンドデコーダ328から出力されるPLL回路発振イネーブル信号が入力される。PLL回路発振イネーブル信号によりイネーブル状態になったPLL回路ウェイクアップ回路366は、PLL回路起動タイマ362からのPLL回路ウェイクアップ信号により起動され、PLL回路出力イネーブル信号を生成する。
【0165】
クロックコントロールレジスタ322には、書き込みイネーブル信号CPU_Ctl_wrに基づき、ファームウェアにより発振回路又はPLL回路のウェイト数がCPU_WDataとして設定される。
【0166】
クロックコマンドレジスタ326には、ファームウェアからの書き込みイネーブル信号CPU_Cmd_wr又はOTGコントローラ210からの書き込みイネーブル信号OTGC_Cmd_wrに基づき、ファームウェアからのクロックコマンド又はOTGコントローラ210からのクロックコマンドが設定される。なお、書き込みイネーブル信号OTGC_Cmd_wrには、ラインステートの監視結果に基づいて生成されるトリガ信号(例えば、上述のリモートウェイクアップトリガやローカルウェイクアップ)も含まれる。
【0167】
クロックモニタレジスタ324には、発振回路ウェイクアップ回路364から出力される発振イネーブル信号OSCenの状態がEnOSCとして割り当てられているビットフィールドに設定される。また発振回路起動タイマ360から出力されるPLLイネーブル信号PLLenの状態が、EnPLLとして割り当てられているクロックモニタレジスタ324のビットフィールドに設定される。更にPLL回路ウェイクアップ回路366から出力されるPLL回路出力イネーブル信号の状態が、PLLClkActiveとして割り当てられているクロックモニタレジスタ324のビットフィールドに設定される。更にまた、クロックコマンドデコーダ328から出力されるクロック分配制御信号OTGCSleepの状態が、CPUClkActiveとして割り当てられているクロックモニタレジスタ324のビットフィールドに設定される。このようなクロックコマンドレジスタ326の内容は、ファームウェアからの読み出しイネーブル信号CPU_Mon_rに基づき、CPU_RDataとして読み出される。
【0168】
クロックコマンドデコーダ328は、クロックコマンドレジスタ326に設定されたクロックコマンドをデコードして、発振回路発振イネーブル信号、PLL回路発振イネーブル信号、クロック分配制御信号XcvrSleep、HCSleep、PCSleep、MainSleep、OTGCSleep(広義には出力制御信号)を生成する。クロック分配制御信号は、それぞれXcvr_CLK生成回路350、HC_CLK生成回路352、PC_CLK生成回路354、Main_CLK生成回路356、OTGC_CLK生成回路358に供給される。
【0169】
次にこのような構成のクロックコントローラ294の動作について説明する。
【0170】
図15乃至図20に、クロックコントローラ294の動作タイミングの例を示す。
【0171】
図15はリセット後のデフォルト状態から、Bデバイスのアイドル状態に遷移するときのクロック供給制御の動作タイミングの一例である。クロックコントローラ294は、リセットされると、クロックコマンドレジスタ326に、内部状態の初期化のため全機能ブロックにクロックを供給するAllActiveモードに対応するクロックコマンドが設定される。これにより、クロック分配制御信号(広義には出力制御信号)XcvrSleep、HCSleep、PCSleep、MainSleep、OTGCSleepがそれぞれ「L」レベルとしてデコード出力される。そして、発振回路発振イネーブル信号及びPLL回路発振イネーブル信号(広義には出力制御信号)が、それぞれイネーブル状態としてデコード出力される。したがって、発振回路及びPLL回路が発振動作を行い、PLLクロックPLL_CLKを出力する。そして、クロック分配制御回路316からトランシーバクロックXcvr_CLK、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、OTGCクロックOTGC_CLKが出力される。
【0172】
その後、Bデバイスのアイドル状態になると、ファームウェアはクロックコマンドレジスタ326に、AllSleepモードに対応するクロックコマンドが設定される。これにより、クロック分配制御信号(広義には出力制御信号)XcvrSleep、HCSleep、PCSleep、MainSleep、OTGCSleepがそれぞれ「H」レベルとしてデコード出力される。したがって、クロック分配制御回路316からトランシーバクロックXcvr_CLK、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、OTGCクロックOTGC_CLKの出力が停止される。そして、PLL回路発振イネーブル信号及び発振回路発振イネーブル信号(広義には出力制御信号)がディセーブル(disable)状態としてデコードされるため、発振動作を停止する。
【0173】
図16は、AデバイスでのBデバイス検知待ち状態からホスト状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、a_wait_bconステートからa_hostステートに遷移したときに、ファームウェアによりWaitモードに対応して設定されていたクロックコマンドレジスタに、Hostモードに対応するクロックコマンドが設定される。これにより、新たにHCクロックHC_CLK、トランシーバクロックXcvr_CLK及びメインクロックMain_CLKの出力が開始される。
【0174】
図17は、Aデバイスでホスト状態からサスペンド状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、a_hostステートからa_suspendステートに遷移したときに、ファームウェアによりHostモードに対応して設定されていたクロックコマンドレジスタに、Waitモードに対応するクロックコマンドが設定される。これにより、HCクロックHC_CLK、トランシーバクロックXcvr_CLK及びメインクロックMain_CLKの出力が停止される。
【0175】
図18は、Bデバイスでホスト状態からペリフェラル状態になるときのクロック供給制御の動作タイミングの一例である。Bデバイスにおいて、b_hostステートからb_peripheralステートに遷移したときに、ファームウェアによりHostモードに対応して設定されていたクロックコマンドレジスタに、Peripheralモードに対応するクロックコマンドが設定される。これにより、HCクロックHC_CLKの出力が停止され、PCクロックPC_CLKの出力が開始される。
【0176】
図19は、Aデバイスでアイドル状態からテスト状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、ファームウェアによりWaitモードに対応して設定されていたクロックコマンドレジスタに、AllActiveモードに対応するクロックコマンドが設定される。これにより、新たにHCクロックHC_CLK、PCクロックPC_CLK、トランシーバクロックXcvr_CLK及びメインクロックMain_CLKの出力が開始される。
【0177】
なおクロックコマンドレジスタには、上述した5種類のクロック制御パターンのみが設定されるものではなく、発振回路312及びPLL回路314の出力制御を行う発振回路発振イネーブル信号及びPLL回路発振イネーブル信号の少なくとも1つを、クロックコマンドをデコードさせて出力させるようにしてもよい。
【0178】
図20は、テスト状態において、PLL回路の出力を停止させるときのクロック供給制御の動作タイミングの一例である。ファームウェアによりAllActiveモードに対応して設定されていたクロックコマンドレジスタに、PLL回路出力イネーブル信号をディセーブルにするためのクロックコマンドが設定される。この場合、PLL回路発振イネーブル信号をディセーブルにすると、PLL回路出力イネーブル信号がディセーブルになる。そして、発振回路312の発振出力を除く全クロックの出力を停止している。
【0179】
なお上述したクロックコマンドは、遷移制御された遷移先のステートに対応するステートコマンドと同一タイミングで設定するようにしてもよいし、互いに時間差を設けて設定するようにしてもよく、遷移制御されるステートにおいて任意のタイミングで設定することができる。
【0180】
図21及び図22に、このようなクロック制御回路がクロックコントローラとして適用されたOTGデバイスコントローラIC200を用いたデータ転送制御の一例を示す。
【0181】
ここでは、デフォルト状態のb_idleステートからAデバイスとしてa_hostステートに遷移するまでの間で行われるファームウェアの処理と、接続相手とのやり取りを示している。
【0182】
Connect(J)Detは、接続相手と接続されたか否かを検出するためにラインステートが「J」状態であることを検出する機能をいう。Disconnect(SE0)Detは、接続相手と切断されたか否かを検出するためにラインステートが「SE0」状態であることを検出する機能をいう。
【0183】
上述したようにデュアルロールデバイスは、デフォルト状態ではb_idleステートである。このときCPU(ファームウェア)により、AllSleepモードに対応するクロックコマンドが、クロックコマンドレジスタに設定される。これにより、図15に示すように全クロックの出力が停止される。
【0184】
その後、接続相手にはMini−Bプラグが挿入され、OTGデバイスコントローラIC200にMini−Aプラグが挿入されると、ID信号が変化したことを示すChnageID割り込みがCPU(ファームウェア)に通知される。なお、CPUに通知される割り込み信号は、CPUにより非アクティブになるように制御される。
【0185】
CPUは、図5に示したように、遷移先のステートがa_idleステートであると判断して、OTGステートコマンドを設定する。したがって、OTGデバイスコントローラIC200では、a_idleステートにおけるコントロール信号に基づいて各ブロックが制御される。更にCPUは、図13に示すようにa_idleステートにおけるクロック制御パターンをWaitモードであると判断し、Waitモードに対応するクロックコマンドを、クロックコマンドレジスタに設定する。これにより、OTGCクロックOTGC_CLKのみ出力が開始され、OTGコントローラ210、CPUインタフェース290及びホスト/ペリフェラル切り替え回路270に対してクロックが供給される。
【0186】
続いて、上位アプリケーションからバスの使用要求があると(a_bus_req)、CPUは、遷移先のステートがa_wait_vriseステートであると判断して、OTGステートコマンドを設定する。更にCPUは、図13に示すようにa_wait_vriseステートにおけるクロック制御パターンがWaitモードであると判断し、Waitモードに対応するクロックコマンドをクロックコマンドレジスタに設定する。この場合、各クロックの出力状態は、a_idleステートのときと変わらない。
【0187】
a_wait_vriseステートに対応したステートコマンドが設定されてa_wait_vriseステートに遷移すると、CPUは200msのタイマを起動する。そして、VBUSの電圧が所与の閾値電圧を越えたことが検出されると、Cross44V割り込みにより、当該ステートにおけるタイマを停止すると共に、遷移先のステートがa_wait_bconステートであると判断して、OTGステートコマンドを設定する。なお、CPUは起動したタイマが200msになってタイムアウトとなった場合にも、a_wait_bconステートに遷移するものと判断し、a_wait_bconステートに対応するOTGステートコマンドを設定することができる。更にCPUは、図13に示すようにa_wait_bconステートにおけるクロック制御パターンがWaitモードであると判断し、Waitモードに対応するクロックコマンドをクロックコマンドレジスタに設定する。この場合、各クロックの出力状態は、a_wait_vriseステートのときと変わらない。
【0188】
a_wait_bconステートに遷移すると、CPUは200msのタイマを起動する。そして、ラインステートが「J」状態であることを規定時間、検出するとChangeConnStat割り込みにより、タイマを停止すると共に、遷移先のステートがa_hostステートであると判断して、OTGステートコマンドを設定する。更にCPUは、図13に示すようにa_hostステートにおけるクロック制御パターンがHostモードであると判断し、Hostモードに対応するクロックコマンドをクロックコマンドレジスタに設定する。これにより、図16に示すように、HCクロックHC_CLK、メインクロックMain_CLK及びトランシーバクロックXcrv_CLKの出力が開始される。
【0189】
3.5 他の構成例
クロック制御回路は、図14に示すように全クロック制御パターンに対応してクロックコマンドを設定する必要はなく、少なくとも1つのクロック制御パターンに対応するクロックコマンドを設定することができればよい。
【0190】
図23に、図14に示すクロックコントローラの別の構成例を示す。
【0191】
クロックコマンドデコーダ400は、クロックコマンドレジスタ402に設定されたクロックコマンドをデコードして、出力制御信号を生成する。図23では、出力制御信号として、クロック分配制御信号としてのOTGCSleepと、発振回路発振イネーブル信号とPLL回路発振イネーブル信号とが生成される。
【0192】
クロックコントロールレジスタ404には、ファームウェア若しくはOTGコントローラ210等のハードウェアにより、クロックコントロールデータが設定される。クロックコントローラ390では、図24に示すようにクロックコントロールレジスタとして、発振ウェイト数として発振回路ウェイクアップタイムOSCWakeUpTime[1:0]、PLL発振ウェイト数としてPLL回路ウェイクアップタイムPLLWakeUpTime[1:0]、回路ブロック単位にクロック供給制御を行うクロック分配制御信号XcvrSleep、HCSleep、PCSleep、MainSleepが生成される。
【0193】
クロックコマンドレジスタ402には、図24に示すように、ファームウェア若しくはOTGコントローラ210等のハードウェアにより、クロックコマンドが設定される。
【0194】
クロックモニタレジスタ406には、図24に示すように、OTGCクロックOTGC_CLKの供給有無、PLLクロックPLL_CLKの出力有無、PLL回路の有効/無効EnPLL、発振回路の有効/無効EnOSCが設定される。
【0195】
このように、少なくとも1つのクロック制御パターンを用いてクロック供給制御を行うことにより、処理を簡素化し、無駄な電力消費を抑えることができる。またクロックコントロールレジスタを用いて回路ブロック単位にクロック供給制御を併用して行うことで、より細かなクロック供給制御が可能となる。
【0196】
図25乃至図30に、クロックコントローラ390の動作タイミングの例を示す。
【0197】
例えばクロックコマンドが「55h」のときOSCウェイクアップ、[aah]のときOSCスリープ、「3ch」のときPLLウェイクアップ、「c3h」のときPLLスリープ、「69h」のときOTGC_CLKのウェイクアップ、「96h」のときOTGC_CLKスリープとする。
【0198】
図25はリセット後のデフォルト状態から、Bデバイスのアイドル状態に遷移するときのクロック供給制御の動作タイミングの一例である。クロックコントローラ390は、リセットされると、クロックコマンドレジスタ402に「00h」が設定され、全クロックの出力が行われる。その後、CPU(ファームウェア)は、クロックコントロールレジスタ404により、クロック分配制御信号Xcvr_Cleep、HCSleep、PCSleep、MainSleepを「H」レベルにして、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、トランシーバクロックXcvr_CLKの出力を停止する。
【0199】
続いて、Bデバイスのアイドル状態になると、ファームウェアは、クロックコマンドレジスタ402に「69h」、「c3h」、「aah」、「00h」を順次設定して、OTGCクロックOTGC_CLK、PLLクロックPLL_CLK、発振クロックXCLKの順に出力を停止させる。
【0200】
図26は、AデバイスでのBデバイス検知待ち状態からホスト状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、a_wait_bconステートからa_hostステートに遷移したときに、ファームウェアによりクロックコントロールレジスタ404を用いて、HCクロックHC_CLK、トランシーバクロックXcvr_CLK及びメインクロックMain_CLKの出力を開始させる。こうすることで、PCクロックPC_CLKのみクロックが供給されず、a_hostステートでの低消費電力化を図ることができる。
【0201】
図27は、Aデバイスでホスト状態からサスペンド状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、a_hostステートからa_suspendステートに遷移したときに、ファームウェアによりクロックコントロールレジスタ404を用いてクロック分配制御信号HCSleep、MainSleep、XcvrSleepを「H」レベルにして、HCクロックHC_CLK、トランシーバクロックXcvr_CLK及びメインクロックMain_CLKの出力を停止させる。こうすることで、OTGCクロックOTGC_CLKのみクロックが供給され、a_suspendステートでの低消費電力化を図ることができる。
【0202】
図28は、Bデバイスでホスト状態からペリフェラル状態になるときのクロック供給制御の動作タイミングの一例である。Bデバイスにおいて、b_hostステートからb_peripheralステートに遷移したときに、ファームウェアによりクロックコントロールレジスタ404を用い、クロック分配制御信号HCSleepを「H」レベルにしてHCクロックHC_CLKを停止させると共に、クロック分配制御信号PCSleepを「L」レベルにしてPCクロックPC_CLKの出力を開始させる。こうすることで、b_peripheralステートにおいて、HCクロックHC_CLKの供給が停止され、低消費電力化を図ることができる。
【0203】
図29は、Aデバイスでアイドル状態からテスト状態になるときのクロック供給制御の動作タイミングの一例である。Aデバイスにおいて、テスト状態に設定されると、ファームウェアによりクロックコントロールレジスタ404を用い、クロック分配制御信号HCSleep、PCSleep、MainSleep、XcvrSleepを「L」レベルにして、HCクロックHC_クロック、PCクロックPC_CLK、メインクロックMain_CLK、トランシーバクロックXcvr_CLKの出力を開始させる。こうすることで、低消費電力化を図る一方で、各機能ブロックのテストを行うことができる。
【0204】
図30は、テスト状態において、PLL回路の出力を停止させるときのクロック供給制御の動作タイミングの一例である。クロックコントローラ390は、テスト状態において、ファームウェアによりクロックコマンドレジスタ402に「00h」が設定され、全クロックの出力が行われる。その後、PLL回路を停止させる場合、CPU(ファームウェア)は、クロックコントロールレジスタ404により、クロック分配制御信号HCSleep、PCSleep、MainSleep、Xcvr_Cleepを「H」レベルにして、HCクロックHC_CLK、PCクロックPC_CLK、メインクロックMain_CLK、トランシーバクロックXcvr_CLKの出力を停止する。
【0205】
続いて、ファームウェアは、クロックコマンドレジスタ402に「69h」、「c3h」、「00h」を順次設定して、OTGCクロックOTGC_CLK、PLLクロックPLL_CLK、発振クロックXCLKの順に出力を停止させる。
【0206】
4. 電子機器
次に本実施形態のクロック制御回路が適用されたデータ転送制御装置を含む電子機器の例について説明する。
【0207】
例えば図31(A)に電子機器の1つであるプリンタの内部ブロック図を示し、図32(A)にその外観図を示す。CPU(マイクロコンピュータ)510はシステム全体の制御などを行う。操作部511はプリンタをユーザが操作するためのものである。ROM516には、制御プログラム、フォントなどが格納され、RAM517はCPU510のワーク領域として機能する。DMAC518は、CPU510を介さずにデータ転送を行うためのDMAコントローラである。表示パネル519はプリンタの動作状態をユーザに知らせるためのものである。
【0208】
USBを介してパーソナルコンピュータなどの他のデバイスから送られてきたシリアルの印字データは、データ転送制御装置500によりパラレルの印字データに変換される。そして、変換後のパラレル印字データは、CPU510又はDMAC518により、印字処理部(プリンタエンジン)512に送られる。そして、印字処理部512においてパラレル印字データに対して所与の処理が施され、プリントヘッダなどからなる印字部(データの出力処理を行う装置)514により紙に印字されて出力される。
【0209】
図31(B)に電子機器の1つであるデジタルカメラの内部ブロック図を示し、図32(B)にその外観図を示す。CPU520はシステム全体の制御などを行う。操作部521はデジタルカメラをユーザが操作するためのものである。ROM526には制御プログラムなどが格納され、RAM527はCPU520のワーク領域として機能する。DMAC528はDMAコントローラである。
【0210】
CCDなどからなる撮像部522により撮影対象の画像が読み取られ、読み取られた画像のデータは画像処理部524により処理される。そして、処理後の画像データは、CPU520又はDMAC528によりデータ転送制御装置500に送られる。データ転送制御装置500は、このパラレルの画像データをシリアルデータに変換し、USBを介してパーソナルコンピュータなどの他のデバイスに送信する。
【0211】
図31(C)に電子機器の1つであるCD−RWドライブの内部ブロック図を示し、図32(C)にその外観図を示す。CPU530はシステム全体の制御などを行う。操作部531はCD−RWをユーザが操作するためのものである。ROM536には制御プログラムなどが格納され、RAM537はCPU530のワーク領域として機能する。DMAC538はDMAコントローラである。
【0212】
レーザ、モータ、光学系などからなる読み取り&書き込み部(データの取り込み処理を行う装置又はデータの記憶処理を行うための装置)533によりCD−RW532から読み取られたデータは、信号処理部534に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、CPU530又はDMAC538によりデータ転送制御装置500に送られる。データ転送制御装置500は、このパラレルのデータをシリアルデータに変換し、USBを介してパーソナルコンピュータなどの他のデバイスに送信する。
【0213】
一方、USBを介して他のデバイスから送られてきたシリアルのデータは、データ転送制御装置500によりパラレルのデータに変換される。そして、このパラレルデータは、CPU530又はDMAC538により信号処理部534に送られる。そして、信号処理部534においてこのパラレルデータに対して所与の信号処理が施され、読み取り&書き込み部533によりCD−RW532に記憶される。
【0214】
なお、図31(A)、(B)、(C)において、CPU510、520、530の他に、データ転送制御装置500でのデータ転送制御のためのCPUを別に設けるようにしてもよい。
【0215】
本実施形態のデータ転送制御装置を電子機器に用いれば、ホスト動作を行うパーソナルコンピュータと接続することなく、USB転送を行うことができる。特に携帯型の電子機器に用いることによって、ユーザはパーソナルコンピュータを持ち歩く必要がなくなり、手軽にUSB転送を行うことができる。例えば、パーソナルコンピュータを介することなく、プリンタや、CD−RWとの間でUSB転送を行うことができる。
【0216】
また本実施形態のデータ転送制御装置を電子機器に用いれば、CPU上で動作するファームウェアの処理負荷が軽減され、安価なCPUを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【0217】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ(CD−ROM、DVD)、光磁気ディスクドライブ(MO)、ハードディスクドライブ、TV、VTR、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【0218】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【0219】
また、本発明は、OTG規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばOTG規格と同様の思想に基づく規格やOTG規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【0220】
更にまた回路ブロックの分割方法は、上述の機能ブロックの分割方法に限定されるものではない。OTGデバイスコントローラICの各機能ブロックの動作周波数、レイアウト配置及び回路規模に応じて複数の回路ブロックに適宜分割することができる。
【0221】
更にOTG規格のデータ転送として図13に示すクロック制御パターンでクロック供給制御を行うものとして説明したが、これに限定されるものではない。より多くのクロック制御パターンを設けることで、より細かなクロック供給制御を行うことができるようになる。
【0222】
更に上述した実施形態において、転送に先立ってMini−Aプラグが挿入されたデバイスをAデバイス、Mini−Bプラグが挿入されたデバイスをBデバイスであるものとして説明したが、転送制御中に、Aデバイス及びBデバイスを入れ替え、例えばVBUSの供給源を切り替えるようにした場合でも、本発明は適用できる。
【図面の簡単な説明】
【図1】図1(A)は、その両端にMini−Aプラグ及びMini−Bプラグを有するUSBケーブルの概要を示す模式図である。図1(B)は、Aデバイス及びBデバイスについて説明するための図である。図1(C)は、端子表を示す図である。
【図2】USBケーブルが接続されたデュアルロールデバイスの例を模式的に示す図である。
【図3】SRPについて説明するための図である。
【図4】HNPについて説明するための図である。
【図5】Aデバイスのステート遷移を説明するための図である。
【図6】Bデバイスのステート遷移を説明するための図である。
【図7】OTGデバイスコントローラICの機能ブロック図である。
【図8】OTGデバイスコントローラICがAデバイスのとき、HCで行われるステート遷移の一例を示すフロー図である。
【図9】OTGデバイスコントローラICがBデバイスのとき、HCで行われるステート遷移の一例を示すフロー図である。
【図10】OTGデバイスコントローラICによるHNPの動作タイミングの一例を示すタイミングチャートである。
【図11】クロック制御回路の構成の概要を示すブロック図である。
【図12】回路ブロック単位に供給されるクロックについて説明するための図である。
【図13】クロック制御パターンの一例を示す図である。
【図14】クロックコントローラの詳細な構成例を示す回路図である。
【図15】リセット後のデフォルト状態から、Bデバイスのアイドル状態に遷移するときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図16】AデバイスでのBデバイス検知待ち状態からホスト状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図17】Aデバイスでホスト状態からサスペンド状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図18】Bデバイスでホスト状態からペリフェラル状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図19】Aデバイスでアイドル状態からテスト状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図20】テスト状態において、PLL回路の出力を停止させるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図21】OTGデバイスコントローラIC200を用いたデータ転送制御の一例の前半部を示すシーケンス図である。
【図22】OTGデバイスコントローラIC200を用いたデータ転送制御の一例の後半部を示すシーケンス図である。
【図23】クロックコントローラの別の詳細な構成例を示す回路図である。
【図24】クロックモニタレジスタ、クロックコントロールレジスタ、クロックコマンドレジスタのレジスタマップの一例を示す図である。
【図25】リセット後のデフォルト状態から、Bデバイスのアイドル状態に遷移するときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図26】AデバイスでのBデバイス検知待ち状態からホスト状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図27】Aデバイスでホスト状態からサスペンド状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図28】Bデバイスでホスト状態からペリフェラル状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図29】Aデバイスでアイドル状態からテスト状態になるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図30】テスト状態において、PLL回路の出力を停止させるときのクロック供給制御の動作タイミングの一例を示すタイミングチャートである。
【図31】図31(A)、(B)、(C)は、種々の電子機器の内部ブロック図の例である。
【図32】図32(A)、(B)、(C)は、種々の電子機器の外観図の例である。
【符号の説明】
10、20 デュアルロールデバイス(Dual-Role Device)
12、22、214 ID検出回路
200 OTGデバイスコントローラIC
210 OTGコントローラ
212 OTG管理回路
216 VBUS検出回路
218 ラインステート検出回路
220 ホストコントローラ(HC)
230 ペリフェラルコントローラ(PC)
240 レジスタ部
250 パケットバッファ(FIFO)
260 バッファコントローラ
270 ホスト/ペリフェラル切り替え回路
272 ラインステートコントローラ
274 UTMIセレクタ
280 トランシーバ
290 CPUインタフェース
292 DMAハンドラ
294、390 クロックコントローラ
296 テストモジュール
300 クロック制御回路
310 クロック生成回路
312 発振回路
314 PLL回路
316 クロック分配制御回路
318 発振子
320 クロック出力制御回路
322、404 クロックコントロールレジスタ
324、406 クロックモニタレジスタ
326、402 クロックコマンドレジスタ
328、400 クロックコマンドデコーダ
330 起動回路
350 Xcvr_CLK生成回路
352 HC_CLK生成回路
354 PC_CLK生成回路
356 Main_CLK生成回路
358 OTGC_CLK生成回路
360 発振回路起動タイマ
362 PLL回路起動タイマ
364 発振回路ウェイクアップ回路
366 PLL回路ウェイクアップ回路
500 データ転送制御装置
510、520、530 CPU
511、521、531 操作部
512 印字処理部
514 印字部
516、526、536 ROM
517、527、537 RAM
518、528、538 DMAC
519 表示パネル
522 撮像部
524 画像処理部
532 CD−RW
533 読み取り&書き込み部
534 信号処理部

Claims (8)

  1. ステートの切り替え制御により、デフォルト状態においてOTG( On-The-Go )規格のホストとして動作する第1のデバイス及びデフォルト状態においてOTGのペリフェラルとして動作する第2のデバイスの動作制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、
    前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、
    前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路とを含み、
    前記クロック出力制御回路は、
    前記データ転送制御装置の各回路ブロックに供給されるクロックごとに出力停止させるか否か、又はクロック周波数を低減させるか否かを示すクロック制御パターンに対応したクロックコマンドが設定されるクロックコマンドレジスタを含み、
    前記ステートコントローラによって検出されたステートの遷移条件を、割り込み信号により処理部に通知し、
    該処理部が、該遷移条件に基づいて遷移先のステートを定めて前記ステートコントローラに対して遷移先のステートを指定すると共に、該遷移先のステートに対応して前記クロックコマンドを前記クロックコマンドレジスタに設定し、
    前記クロック出力制御回路は、
    前記クロックコマンドレジスタに設定された前記クロックコマンドに基づいて前記出力制御信号を生成すると共に、前記第2のデバイスのステート遷移においてアイドルステートのとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことを特徴とするクロック制御回路。
  2. 請求項1において、
    前記クロック出力制御回路は、
    前記第1のデバイスのステート遷移を行うとき、前記ステートコントローラへのクロックの出力制御を省略することを特徴とするクロック制御回路。
  3. 請求項1又は2において、
    前記クロック出力制御回路は、
    前記第2のデバイスのステート遷移においてアイドルステートのとき、ホストとして動作するための動作制御を行うホストコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うと共に、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うこと特徴とするクロック制御回路。
  4. ステートの切り替え制御により、デフォルト状態においてOTG( On-The-Go )規格のホストとして動作する第1のデバイス及びデフォルト状態においてOTGのペリフェラルとして動作する第2のデバイスの動作制御を行うステートコントローラを含むデータ転送制御装置のクロック制御回路であって、
    前記データ転送制御装置の回路ブロックごとにクロックを生成するクロック生成回路と、
    前記回路ブロックごとに前記クロックの出力を制御する出力制御信号を生成するクロック出力制御回路と、
    を含み、
    前記クロック出力制御回路は、
    前記データ転送制御装置の各回路ブロックに供給されるクロックごとに出力停止させるか否か、又はクロック周波数を低減させるか否かを示すクロック制御パターンに対応したクロックコマンドが設定されるクロックコマンドレジスタを含み、
    前記ステートコントローラによって検出されたステートの遷移条件を、割り込み信号により処理部に通知し、
    該処理部が、該遷移条件に基づいて遷移先のステートを定めて前記ステートコントローラに対して遷移先のステートを指定すると共に、該遷移先のステートに対応して前記クロックコマンドを前記クロックコマンドレジスタに設定し、
    前記クロック出力制御回路は、
    前記クロックコマンドレジスタに設定された前記クロックコマンドに基づいて前記出力制御信号を生成すると共に、前記第2のデバイスがペリフェラルとして動作するステートにおいて接続相手からのデータ転送がサスペンドになったとき、前記出力制御信号に基づいて、前記ステートコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行い、
    前記第1のデバイスのステート遷移において接続相手からのデータ転送がサスペンドになったとき、前記ステートコントローラへのクロックの出力制御を省略することを特徴とするクロック制御回路。
  5. 請求項4において、
    前記クロック出力制御回路は、
    前記第1のデバイスのステート遷移において接続相手からのデータ転送がサスペンドになったとき、前記出力制御信号に基づいて、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことを特徴とするクロック制御回路。
  6. 請求項1乃至5のいずれかにおいて、
    前記クロック出力制御回路は、
    ペリフェラルとして動作するとき、前記出力制御信号に基づいて、ホストとして動作するための動作制御を行うホストコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行い、
    ホストとして動作するとき、ペリフェラルとして動作するための動作制御を行うペリフェラルコントローラへのクロック出力を停止させ、又はクロック周波数を低減させる出力制御を行うことを特徴とするクロック制御回路。
  7. 請求項1乃至6のいずれか記載のクロック制御回路と、
    前記ステートの遷移条件を検出して該遷移条件を処理部に通知すると共に、ホスト及びペリフェラルのステートの切り替え制御を行うステートコントローラと、
    前記ステートコントローラからの指示によりホストとして動作するための動作制御を行うホストコントローラと、
    前記ステートコントローラからの指示によりペリフェラルとして動作するための動作制御を行うペリフェラルコントローラと、
    を含むことを特徴とするデータ転送制御装置。
  8. 請求項7記載のデータ転送制御装置と、
    前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
    を含むことを特徴とする電子機器。
JP2002127159A 2002-04-26 2002-04-26 クロック制御回路、データ転送制御装置及び電子機器 Expired - Fee Related JP3685151B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002127159A JP3685151B2 (ja) 2002-04-26 2002-04-26 クロック制御回路、データ転送制御装置及び電子機器
US10/379,686 US7039826B2 (en) 2002-04-26 2003-03-06 Circuit for controlling the clock supplied to a state controller in a data transfer control device according to states of first and second devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002127159A JP3685151B2 (ja) 2002-04-26 2002-04-26 クロック制御回路、データ転送制御装置及び電子機器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003040182A Division JP2003323400A (ja) 2003-02-18 2003-02-18 クロック制御回路、データ転送制御装置及び電子機器

Publications (2)

Publication Number Publication Date
JP2003323226A JP2003323226A (ja) 2003-11-14
JP3685151B2 true JP3685151B2 (ja) 2005-08-17

Family

ID=29541351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002127159A Expired - Fee Related JP3685151B2 (ja) 2002-04-26 2002-04-26 クロック制御回路、データ転送制御装置及び電子機器

Country Status (2)

Country Link
US (1) US7039826B2 (ja)
JP (1) JP3685151B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7413129B2 (en) * 2004-09-30 2008-08-19 Stmicroelectronics, Inc. USB device with secondary USB on-the-go function
DE102004057756B4 (de) * 2004-11-30 2009-08-06 Advanced Micro Devices Inc., Sunnyvale USB-Steuerungseinrichtung mit OTG-Steuerungseinheit
US7475262B2 (en) * 2005-06-29 2009-01-06 Intel Corporation Processor power management associated with workloads
US7533286B2 (en) * 2005-06-29 2009-05-12 Intel Corporation Regulating application of clock to control current rush (DI/DT)
US20070239924A1 (en) * 2006-03-28 2007-10-11 Toon-Jeow Foo Electronic device transmitting audio-and-video signals with USB connector
GB0614258D0 (en) * 2006-07-18 2006-08-30 Nokia Corp A method for use where a first and second device are connected
CN101136000B (zh) * 2006-09-01 2011-01-05 飞思卡尔半导体公司 实现sd主机/从属设备的应用处理器电路和电子设备
JP2008310425A (ja) * 2007-06-12 2008-12-25 Seiko Epson Corp 集積回路装置、電子機器
FR2922339B1 (fr) * 2007-10-12 2010-06-18 Sagem Monetel Echange de donnees entre un terminal de paiement electronique et un outil de maintenance par une liaison usb
US7979838B2 (en) * 2008-02-15 2011-07-12 International Business Machines Corporation Method of automating creation of a clock control distribution network in an integrated circuit floorplan
US8006079B2 (en) * 2008-02-22 2011-08-23 Netapp, Inc. System and method for fast restart of a guest operating system in a virtual machine environment
US20100082846A1 (en) * 2008-10-01 2010-04-01 Kyung Hwan Kim Usb device and method for connecting the usb device with usb host
KR20130113203A (ko) * 2012-04-05 2013-10-15 삼성전자주식회사 전자 장치 및 전자 장치의 파워 관리 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5996083A (en) * 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
US5784581A (en) * 1996-05-03 1998-07-21 Intel Corporation Apparatus and method for operating a peripheral device as either a master device or a slave device
JP4180161B2 (ja) 1998-10-15 2008-11-12 株式会社三共 遊技機
JP2000183894A (ja) 1998-12-11 2000-06-30 Toshiba Corp 伝送制御装置
JP2000196648A (ja) 1998-12-28 2000-07-14 Toshiba Corp 電子機器制御方法および電子機器制御装置
JP2000316006A (ja) * 1999-04-28 2000-11-14 Nec Corp バスマネージャ機能自動切換対応ノード、移動端末、及び、移動端末システム
JP2001202155A (ja) 2000-01-18 2001-07-27 Hitachi Ltd 低消費電力処理装置
US6546496B1 (en) * 2000-02-16 2003-04-08 3Com Corporation Network interface with power conservation using dynamic clock control
JP4403331B2 (ja) * 2000-02-22 2010-01-27 ソニー株式会社 電子機器システム、情報処理機器
JP2001238190A (ja) 2000-02-25 2001-08-31 Canon Inc 画像処理装置及びその制御処理方法
JP2002091608A (ja) 2000-09-18 2002-03-29 Matsushita Electric Ind Co Ltd クロック供給装置、及びクロック供給方法
JP2002091603A (ja) 2000-09-20 2002-03-29 Sharp Corp クロック発生回路を内蔵する集積回路

Also Published As

Publication number Publication date
US20040083400A1 (en) 2004-04-29
JP2003323226A (ja) 2003-11-14
US7039826B2 (en) 2006-05-02

Similar Documents

Publication Publication Date Title
JP3722217B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP3654274B2 (ja) データ転送制御装置、電子機器及び電源切替方法
JP3685151B2 (ja) クロック制御回路、データ転送制御装置及び電子機器
US20130061068A1 (en) Method and apparatus for dynamic power management control using serial bus management protocols
JP3974510B2 (ja) コンピュータ装置、電力管理方法、およびプログラム
JP3685150B2 (ja) クロック制御回路、データ転送制御装置及び電子機器
JP5089415B2 (ja) 周辺機器、その制御方法及びプログラム
US10564700B2 (en) Image forming apparatus and power control method for image forming apparatus
US7197578B1 (en) Power management system for bridge circuit
JP2001067156A (ja) コンピュータ周辺機器及びその制御方法、撮像装置並びに記憶媒体
JP4660140B2 (ja) データ転送制御システム、電子機器及びプログラム
JP2003122458A (ja) コンピュータ装置、コントローラ、コンピュータ装置の制御方法
JP2000357079A (ja) コンピュータシステムおよび同システムの制御方法
JP2003323400A (ja) クロック制御回路、データ転送制御装置及び電子機器
JP2005122303A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2003323227A (ja) クロック制御回路、データ転送制御装置及び電子機器
JP2003323395A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US8041846B2 (en) Apparatus with reduced latency for master and slave storage devices
JP2004094914A (ja) データ転送制御装置、電子機器及び電源切替方法
JP3769541B2 (ja) コンピュータ装置、miniPCIカード、自動電源オン回路、および自動立ち上げ方法
JP2008287578A (ja) メモリコントローラ、情報処理装置及び電子機器
JP2014048865A (ja) 情報処理装置、および画像処理装置
JP4485113B2 (ja) 小型カード用pcアダプタ
TW499636B (en) PC card controller with advanced power management reset capabilities
CN116705088A (zh) 上掉电控制电路、上电控制方法、带sram的外设和电子设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041108

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: 20050510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050523

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: 20090610

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100610

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees