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

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

Info

Publication number
JP3685150B2
JP3685150B2 JP2002126763A JP2002126763A JP3685150B2 JP 3685150 B2 JP3685150 B2 JP 3685150B2 JP 2002126763 A JP2002126763 A JP 2002126763A JP 2002126763 A JP2002126763 A JP 2002126763A JP 3685150 B2 JP3685150 B2 JP 3685150B2
Authority
JP
Japan
Prior art keywords
clock
state
circuit
control
oscillation
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
JP2002126763A
Other languages
English (en)
Other versions
JP2003323225A (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 JP2002126763A priority Critical patent/JP3685150B2/ja
Priority to US10/379,727 priority patent/US7076683B2/en
Publication of JP2003323225A publication Critical patent/JP2003323225A/ja
Application granted granted Critical
Publication of JP3685150B2 publication Critical patent/JP3685150B2/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
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • 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/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • 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

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

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

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002126763A JP3685150B2 (ja) 2002-04-26 2002-04-26 クロック制御回路、データ転送制御装置及び電子機器
US10/379,727 US7076683B2 (en) 2002-04-26 2003-03-06 Clock control circuit for controlling an oscillation circuit in a data transfer control device according to states of a first device and a second device

Applications Claiming Priority (1)

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

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2003323225A JP2003323225A (ja) 2003-11-14
JP3685150B2 true JP3685150B2 (ja) 2005-08-17

Family

ID=29541087

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US7076683B2 (ja)
JP (1) JP3685150B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4560897B2 (ja) * 2000-06-02 2010-10-13 ソニー株式会社 通信装置、通信方法及び媒体
EP1754160B1 (en) * 2004-05-28 2010-05-05 Nxp B.V. Bus connection device
US7413129B2 (en) * 2004-09-30 2008-08-19 Stmicroelectronics, Inc. USB device with secondary USB on-the-go function
US8086832B2 (en) 2006-05-19 2011-12-27 International Business Machines Corporation Structure for dynamically adjusting pipelined data paths for improved power management
US7702832B2 (en) * 2006-06-07 2010-04-20 Standard Microsystems Corporation Low power and low pin count bi-directional dual data rate device interconnect interface
US20080228291A1 (en) * 2007-03-14 2008-09-18 Nokia Corporation System and method for energy saving functionality
US7904625B1 (en) * 2007-11-15 2011-03-08 Marvell International Ltd. Power savings for universal serial bus devices
US8601186B2 (en) 2009-06-26 2013-12-03 St-Ericsson Sa Management of a USB host device
WO2011056177A1 (en) * 2009-11-06 2011-05-12 Hewlett-Packard Development Company, L.P. System and method for extending the usb power signal
US9811145B2 (en) * 2012-12-19 2017-11-07 Intel Corporation Reduction of idle power in a communication port
US10476394B2 (en) * 2016-12-28 2019-11-12 Texas Instruments Incorporated Dynamic learning of voltage source capabilities

Family Cites Families (12)

* 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 バスマネージャ機能自動切換対応ノード、移動端末、及び、移動端末システム
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
US20040010730A1 (en) 2004-01-15
JP2003323225A (ja) 2003-11-14
US7076683B2 (en) 2006-07-11

Similar Documents

Publication Publication Date Title
JP3722217B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP3654274B2 (ja) データ転送制御装置、電子機器及び電源切替方法
JP3685151B2 (ja) クロック制御回路、データ転送制御装置及び電子機器
JP3974510B2 (ja) コンピュータ装置、電力管理方法、およびプログラム
JP5089415B2 (ja) 周辺機器、その制御方法及びプログラム
JP3685150B2 (ja) クロック制御回路、データ転送制御装置及び電子機器
US10564700B2 (en) Image forming apparatus and power control method for image forming apparatus
US7337382B2 (en) Data transfer control device, electronic instrument, and data transfer control method
US7197578B1 (en) Power management system for bridge circuit
JP2001067156A (ja) コンピュータ周辺機器及びその制御方法、撮像装置並びに記憶媒体
JP4239930B2 (ja) データ転送制御システム、電子機器及びプログラム
JP4660140B2 (ja) データ転送制御システム、電子機器及びプログラム
JP2006227985A (ja) データ転送制御装置及び電子機器
JP2003122458A (ja) コンピュータ装置、コントローラ、コンピュータ装置の制御方法
JP2005122303A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2003323400A (ja) クロック制御回路、データ転送制御装置及び電子機器
JP2003323227A (ja) クロック制御回路、データ転送制御装置及び電子機器
JP2003323395A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2004094914A (ja) データ転送制御装置、電子機器及び電源切替方法
JP2014048865A (ja) 情報処理装置、および画像処理装置
TWI736434B (zh) 資料傳輸系統的前晶片
JP4485113B2 (ja) 小型カード用pcアダプタ
CN116705088A (zh) 上掉电控制电路、上电控制方法、带sram的外设和电子设备
JP2008287578A (ja) メモリコントローラ、情報処理装置及び電子機器
KR200394660Y1 (ko) 카드 검출기를 구비한 유에스비 커넥터

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 Written amendment

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