JP2009026165A - コントローラ、電子機器及び電子機器の制御方法 - Google Patents
コントローラ、電子機器及び電子機器の制御方法 Download PDFInfo
- Publication number
- JP2009026165A JP2009026165A JP2007190406A JP2007190406A JP2009026165A JP 2009026165 A JP2009026165 A JP 2009026165A JP 2007190406 A JP2007190406 A JP 2007190406A JP 2007190406 A JP2007190406 A JP 2007190406A JP 2009026165 A JP2009026165 A JP 2009026165A
- Authority
- JP
- Japan
- Prior art keywords
- event
- register
- controller
- data
- host
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】通信の主導権を有するホスト側回路に対してイベントの発生を通知することが可能なコントローラ等を提供する。
【解決手段】データ転送制御装置50は、通信の主導権を有するメインCPU30との間でATABUS1を介してデータ転送を行うATAデバイス側I/F60を含む。ATAデバイス側I/F60は、ホストCPU30にデータを提供するためにATA規格において規定されており、ATABUS1を介してホストCPU30が読み出し可能なタスクレジスタを含み、ホストCPU30に対してイベントの発生を通知するデータ及び/又はイベントの内容に関するデータをタスクレジスタに設定する。また、データ転送制御装置50は、メインCPU30に対してイベントの発生を通知する信号をATABUS1とは別に設けられた信号線を介して出力するためのイベント通知部130を含んでも良い。
【選択図】図2
【解決手段】データ転送制御装置50は、通信の主導権を有するメインCPU30との間でATABUS1を介してデータ転送を行うATAデバイス側I/F60を含む。ATAデバイス側I/F60は、ホストCPU30にデータを提供するためにATA規格において規定されており、ATABUS1を介してホストCPU30が読み出し可能なタスクレジスタを含み、ホストCPU30に対してイベントの発生を通知するデータ及び/又はイベントの内容に関するデータをタスクレジスタに設定する。また、データ転送制御装置50は、メインCPU30に対してイベントの発生を通知する信号をATABUS1とは別に設けられた信号線を介して出力するためのイベント通知部130を含んでも良い。
【選択図】図2
Description
本発明は、ホスト側回路との間でバスを介してデータ転送を行うコントローラ、そのようなコントローラを含む電子機器及びそのような電子機器の制御方法に関する。
近年、USB(Universal Serial Bus)やIEEE1394などの高速シリアルインターフェースが脚光を浴びている。そしてUSB等の高速シリアルインターフェースバスと、HDD(Hard Disk Drive)等のストレージが接続されるATA(AT Attachment)バスとの間のバスブリッジ機能を有するデータ転送制御装置も知られている。この従来技術のデータ転送制御装置によれば、USBを介してHDDに高速にデータを書き込んだり、HDDから高速にデータを読み出したりすることが可能になる。
しかしながら、ATA規格においては、ATAのホスト側装置が通信の主導権を有することとして規定されており、ATAのデバイス側装置(データ転送制御装置)からATAのホスト側装置へイベントの発生を通知することが規定されていない。そのため、USBインタフェースやIEEE1394インタフェースにおいて何らかのイベントが発生した場合であっても、ATAのデバイス側装置(データ転送制御装置)からATAのホスト側装置へイベントの発生を通知することができないという問題があった。
関連する技術として、下記の特許文献1には、IDEインタフェースをストレージデバイス接続用としてのみならず、ユーザインタフェースや内蔵デバイスの構成制御用にも利用可能とするIDEインタフェースの汎用入出力ポート化装置が掲載されている。
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、通信の主導権を有するホスト側回路に対してイベントの発生を通知することが可能なコントローラを提供することにある。また、本発明は、そのようなコントローラを含む電子機器及びそのような電子機器の制御方法を提供することにある。
本発明は、通信の主導権を有するホスト側回路との間で第1のバスを介してデータ転送を行うデバイス側の第1のインタフェースを含み、ホスト側回路に対してイベントの発生を通知することを特徴とするコントローラに関係する。
本発明によれば、通信の主導権を有するホスト側回路に対してイベントの発生を通知することが可能となる。
また、本発明では、デバイス側の第1のインタフェースが、ホスト側回路にデータを提供するために第1のバスの規格又は仕様において規定されており、第1のバスを介してホスト側回路が読み出し可能なレジスタを含み、ホスト側回路に対してイベントの発生を通知するデータ及び/又はイベントの内容に関するデータをレジスタに設定するようにしても良い。
このようにすれば、ホスト側回路がレジスタを読み出すだけで、イベントの発生を通知するデータ及び/又はイベントの内容に関するデータを受け取ることができるようになる。
また、本発明では、レジスタが、ホスト側回路がコマンドを書き込むこと及びコントローラがステータスを返答することに共用可能なレジスタであることとしても良い。
このようにすれば、ホスト側回路がステータスを読み出す手法と同様の手法で、イベントの発生の通知を受けることができるようになる。
また、本発明では、ホスト側回路に対してイベントの発生を通知する信号を第1のバスとは別に設けられた信号線を介して出力するためのイベント通知部を更に含むようにしても良い。
このようにすれば、第1のバスにホスト側回路に対してイベントの発生を通知する信号線が含まれていない場合であっても、イベントの発生をホスト側回路に通知することができるようになる。
また、本発明では、デバイス側の第1のインタフェースが、ホスト側回路にデータを提供するために第1のバスの規格又は仕様において規定されており、第1のバスを介してホスト側回路が読み出し可能なレジスタを含み、イベントの内容に関するデータを前記レジスタに設定するようにしても良い。
このようにすれば、イベントの内容をホスト側回路に通知することができるようになる。
また、本発明では、規格又は仕様において規定されていないイベントが発生した場合に、ホスト側回路に対してイベントの発生を通知するようにしても良い。
このようにすれば、第1のバスの規格又は仕様において規定されていないイベントが発生した場合であっても、そのようなイベントの発生をホスト側回路に通知することができるようになる。
また、本発明では、規格がATA/ATAPI規格であり、レジスタがATA/ATAPI規格で規定されているタスクレジスタであり、デバイス側の第1のインタフェースが、タスクレジスタの中のATA/ATAPI規格で使用されていないビットをアクティブな状態に設定することにより、ホスト側回路に対してイベントの発生を通知するようにしても良い。
このようにすれば、ATA/ATAPI規格においては規定されていないイベントの発生をATA/ATAPIのホスト側装置に通知することができるようになる。
また、本発明では、ベンダによって定義されたイベント通知読み込みコマンドがタスクレジスタに書き込まれた場合に、イベントの内容に関するデータをタスクレジスタに設定するようにしても良い。
このようにすれば、ホスト側装置は、ベンダ定義コマンドとして割り当てられたイベント通知読み込みコマンドを利用して、イベントの内容に関するデータを読み出すことができるようになる。
また、本発明では、第2のバスを介してデータ転送を行う第2のインタフェースと、デバイス側の第1のインタフェース、第2のインタフェースの間でのデータ転送を制御する転送コントローラと、を更に含むようにしても良い。
このようにすれば、インタフェース間のデータ転送を効率的に行うことができるようになる。
また、本発明では、第2のインターフェースに関して発生したイベントをホスト側回路に対して通知するようにしても良い。
このようにすれば、第1のバスの規格又は仕様に規定されていないイベントが第2のインターフェースにおいて発生し得る場合であっても、そのようなイベントの発生をホスト側回路に対して通知することができるようになる。
また、本発明では、第2のバスを介したデータ転送のプロトコル制御処理を行う処理部を更に含むようにしても良い。
このようにすれば、第2のバスを介したデータ転送のプロトコル制御をホスト側装置が行わなくても済むようになり、ホスト側回路の処理負荷を軽減することができるようになる。
また、本発明では、転送コントローラは、デバイス側の第1のインタフェースを介してリードされたデータを、第2のインターフェースに転送し、第2のインターフェースは、転送されたデータを第2のバスを介して前記第2のバスに接続されるホスト又はデバイスに送信するようにしても良い。
このようにすれば、インタフェース間のデータ転送を効率的に行うことができるようになる。
また、本発明では、第2のインターフェースは、シリアルバスを介してデータの受信及び送信の少なくとも一方を行う物理層回路を含むようにしても良い。
また、本発明では、第2のバスはUSBであり、第2のインターフェースはUSBインターフェースであっても良い。
また、本発明では、第2〜第K(K≧3)のバスを介してデータ転送を行う第2〜第Kのインターフェースを含み、転送コントローラが、デバイス側の第1のインタフェース、第2〜第Kのインタフェースの間でのデータ転送を制御し、イベントの内容に関するデータが、第2〜第Kのインタフェースのいずれにおいてイベントが発生したかを表すデータを含むようにしても良い。
このようにすれば、様々なインタフェースを容易に組み込むことができるとともに、いずれのインタフェースにおいてイベントが発生したのかをホスト側回路に通知することができるようになる。
また、本発明は、本発明に係るコントローラと、第1のバスを介してコントローラに接続されるホスト側回路と、を含む電子機器に関係する。
また、本発明は、本発明に係るコントローラと、第1のバスを介してコントローラに接続されるホスト側回路と、を含む電子機器においてホスト側回路が実行する方法であって、レジスタをポーリングすることにより、コントローラからイベントの発生を通知するデータ及び/又はイベントの内容に関するデータを受けることを特徴とする電子機器の制御方法に関係する。
このようにすれば、ホスト側回路がレジスタをポーリングするだけで、イベントの発生を通知するデータ及び/又はイベントの内容に関するデータを受けることができるようになる。
また、本発明は、本発明に係るコントローラと、第1のバスを介してコントローラに接続されるホスト側回路と、を含む電子機器においてホスト側回路が実行する方法であって、コントローラからイベントの発生の通知を受けた場合に、イベント通知読み込みコマンドをタスクレジスタに書き込み、イベント通知読み込みコマンドへの応答としてタスクレジスタに設定されたイベントの内容に関するデータを読み出すことを特徴とする電子機器の制御方法に関係する。
このようにすれば、ホスト側装置は、ベンダ定義コマンドとして割り当てられたイベント通知読み込みコマンドを利用して、イベントの内容に関するデータを読み出すことができるようになる。
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1. 比較例
図1(A)(B)に本実施形態の比較例を示す。図1(A)の第1の比較例では、データ転送制御装置550が、ATA(AT Attachment)のホスト側I/F(インターフェース)570とUSBI/F580を含む。この図1(A)の第1の比較例によれば、USB(Universal Serial Bus)を介して転送されてきたデータをHDD540に書き込んだり、HDD540に書き込まれたデータをUSBを介してPC(Personal Computer)等に転送でき、ATAバスとUSBの変換ブリッジ機能を実現できる。
図1(A)(B)に本実施形態の比較例を示す。図1(A)の第1の比較例では、データ転送制御装置550が、ATA(AT Attachment)のホスト側I/F(インターフェース)570とUSBI/F580を含む。この図1(A)の第1の比較例によれば、USB(Universal Serial Bus)を介して転送されてきたデータをHDD540に書き込んだり、HDD540に書き込まれたデータをUSBを介してPC(Personal Computer)等に転送でき、ATAバスとUSBの変換ブリッジ機能を実現できる。
この第1の比較例では、データ転送制御装置550はメインCPU530により制御されて動作する。従って、ROM520(マスクROM、EEPROM)に記憶されメインCPU530上で動作するファームウェア(ソフトウェア)に対して、USBのプロトコル制御のためのプログラムを組み込む必要がある。
しかしながら、USBのプロトコル制御は複雑であり、電子機器の設計者にこのプロトコル制御の理解を強要すると、設計作業が繁雑化する。またデータ転送制御装置550のメーカにおいても、プロトコル制御の説明が必要になったり、不具合発生時のサポートが必要になり、サポート業務が繁雑化する。
また、USB以外のインターフェース(例えばIEEE1394、シリアルATA等)が組み込まれたデータ転送制御装置550を開発しようとすると、上記と同様の問題が生じるため、データ転送制御装置550の機能拡張や商品展開が制限されるなどの問題も生じる。
一方、図1(B)の第2の比較例では、メインCPU530に対してUSBI/F580がIPコアとして組み込まれている。このようにUSBI/F580をメインCPU530に組み込めば、メインCPU530は、USBを介して直接にUSBホストとの間でデータ転送を行うことが可能になる。
しかしながら、差動信号を用いた高速のシリアルインターフェース回路であるUSBI/F580には、データの送受信を行う物理層の高速アナログ回路が設けられており、この高速アナログ回路は、設計も難しく、プロセス変動の影響も受けやすい。従って、メインCPU530のコア回路には問題が無いのに、高速アナログ回路が原因となってメインCPU530の設計開発が失敗したり、歩留まりが低下する。またUSBI/F580の回路設計にはノウハウが必要であるため、USB2.0の規格が想定する転送レートを実現できない事態も生じる。そしてこのような事態が生じると、HDD540に対する高速なデータの書き込み、読み出しができなくなり、ユーザの利便性を阻害する。
2. 構成
図2に、以上のような問題を解決できる本実施形態のデータ転送制御装置50(広義にはコントローラ)及びこれを含む電子機器20の構成例を示す。本実施形態では、メインCPU30(広義にはホスト側回路)が有するATAのホスト側I/F32の存在に着目し、このホスト側I/F32に対応するATAのデバイス側I/F60(広義にはデバイス側インタフェース又は第1のインタフェース)をデータ転送制御装置50に設けている。即ち図1(A)の第1の比較例では設けられていなかったデバイス側I/F60を設けている。またHDD40を接続するためのATAのホスト側I/F70(広義には第2のインターフェース)もデータ転送制御装置50に設けている。即ち、通常はどちらか一方しか設けられていないデバイス側I/F60とホスト側I/F70の両方を、データ転送制御装置50に内蔵させている。こうすることで、メインCPU30からのデータを、デバイス側I/F60、ホスト側I/F70を介してHDD40に書き込むことが可能になる。また本実施形態では、HDD40に書き込まれたデータをUSB機器10に転送するためのUSBI/F80(広義には第2のインターフェース)を設けている。こうすることで、図1(A)の第1の比較例と同様に、ATAバスとUSBの間のバスブリッジ機能も実現できる。
図2に、以上のような問題を解決できる本実施形態のデータ転送制御装置50(広義にはコントローラ)及びこれを含む電子機器20の構成例を示す。本実施形態では、メインCPU30(広義にはホスト側回路)が有するATAのホスト側I/F32の存在に着目し、このホスト側I/F32に対応するATAのデバイス側I/F60(広義にはデバイス側インタフェース又は第1のインタフェース)をデータ転送制御装置50に設けている。即ち図1(A)の第1の比較例では設けられていなかったデバイス側I/F60を設けている。またHDD40を接続するためのATAのホスト側I/F70(広義には第2のインターフェース)もデータ転送制御装置50に設けている。即ち、通常はどちらか一方しか設けられていないデバイス側I/F60とホスト側I/F70の両方を、データ転送制御装置50に内蔵させている。こうすることで、メインCPU30からのデータを、デバイス側I/F60、ホスト側I/F70を介してHDD40に書き込むことが可能になる。また本実施形態では、HDD40に書き込まれたデータをUSB機器10に転送するためのUSBI/F80(広義には第2のインターフェース)を設けている。こうすることで、図1(A)の第1の比較例と同様に、ATAバスとUSBの間のバスブリッジ機能も実現できる。
なおデータ転送制御装置50、電子機器20は図2の構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図2とは異なる構成要素を追加する変形実施が可能である。例えばデータ転送制御装置50において処理部120やUSBI/F80やホスト側I/F70(広義には第2のインタフェース)等の構成を省く変形実施も可能である。また電子機器20においてHDD(Hard Disk Drive)40の構成を省いたり、図2に示されるもの以外の構成要素(例えば操作部、表示部、ROM、RAM、撮像部又は電源等)を追加してもよい。
また本実施形態の電子機器20としては、ビデオカメラ、デジタルカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、光ディスクドライブ装置、ハードディスクドライブ装置、オーディオ機器、携帯電話機、携帯型ゲーム機、電子手帳、電子辞書又は携帯型情報端末等の種々のものが考えられる。
電子機器20は、メインCPU30と、HDD40と、データ転送制御装置50を含む。なお、データ転送制御装置50を半導体集積回路として実現するようにしても良い。
メインCPU30は電子機器20の全体的な処理、制御を行う。例えば電子機器20がビデオカメラである場合には、メインCPU30はカメラプロセッサとして機能し、撮像デバイスの制御や画像のエフェクト処理や画像の圧縮処理などを行う。このメインCPU30はATAのホスト側I/F(インターフェース)32を含む。なおホスト側I/F32は、モード設定によりCF+インターフェースからATAインターフェースに切り替わるCF+のインターフェース規格のものであってもよい。
HDD40には種々のデータが書き込まれる。例えば電子機器20がビデオカメラである場合には、撮影された映像(画像)データが、メインCPU30からデータ転送制御装置50を介してHDD40に書き込まれる。そしてHDD40に書き込まれた映像データは、データ転送制御装置50、USBを介してUSB機器10に転送できる。こうすればユーザは、HDD40の使用記憶容量が満杯になった場合に、HDD40の映像データをUSB機器10に転送して保存することが可能になり、ユーザの利便性を向上できる。
データ転送制御装置50は、ATA(IDE)のデバイス側I/F60を含む。またATAのホスト側I/F70やUSBI/F80や転送コントローラ100やスイッチング回路110や処理部120やイベント通知部130を含むことができる。
ここでデバイス側I/F60は、ATABUS1(広義には第1のバス)を介してメインCPU30(ATAホスト)との間でデータ転送(通信)を行うためのインターフェースである。またホスト側I/F70は、ATABUS2(広義には第2のバス)を介してHDD40(ATAデバイス)との間でデータ転送を行うためのインターフェースである。なお本実施形態におけるATAは、ATAPI(AT Attachment with Packet Interface)を含むことができる。また、シリアルATAやCE−ATAなどの従来のATA規格を発展した規格を含むこともできる。またデータ転送制御装置50に、複数のATAのホスト側I/Fを設けてもよいし、UART(Universal Asynchronous Receiver Transmitter)を設けてもよい。
デバイス側I/F60はレジスタ62を含む。このレジスタ62には、ATABUS1を介してメインCPU30が発行したコマンドが書き込まれる。具体的には、このレジスタ62として、ATAのデバイス側I/Fが含むタスクレジスタを使用できる。そして本実施形態では、ATAのコマンドのうちベンダ定義コマンド(Vender specific command)として割り当てられたコマンドが、レジスタ62(タスクレジスタ)に書き込まれる。転送コントローラ100、処理部120は、このベンダ定義コマンドに基づいて動作することができる。例えば転送コントローラ100は、レジスタ62に設定されたベンダ定義の転送制御コマンド(転送方向や転送データ量を指定するコマンド)に基づいて、デバイス側I/F60、ホスト側I/F70、USBI/F80のうちのいずれのインターフェース間でデータ転送を行うかを決定する。また転送コントローラ100は、インターフェース間で転送するデータ量を決定する。また処理部120は、レジスタ62に設定されたベンダ定義のモード設定コマンドに基づいて、データ転送制御装置50の動作モードを判断する。具体的には、動作モードがハードワイヤードモード(Hard wired mode)に設定された否かを判断する。また処理部120は、レジスタ62に設定されたベンダ定義のイベント通知読み込みコマンドに基づいて、データ転送制御装置50において発生したイベントの内容を表す値をレジスタ62(タスクレジスタ)に書き込む。メインCPU30は、レジスタ62(タスクレジスタ)からイベントの内容を表す値を読み出すことで、データ転送制御装置50において発生したイベントの内容を取得することができる。
USBI/F80(広義には第2のインターフェース)は、USB(広義には第2のバス)を介してデータ転送(高速シリアル転送)を行うためのインターフェースである。具体的にはUSBI/F80は、USB(シリアルバス)を介してデータの受信や送信を行う物理層回路を含み、USB機器10との間のデータ転送を行う。
なおUSBI/F80がホスト機能を有する場合には、USBにUSBデバイスを接続し、そのUSBデバイスとの間でデータ転送を行うようにしてもよい。また第2のインターフェースは、USBインターフェースに限定されず、IEEE1394、SD(登録商標)、MMC(登録商標)、UARTなどの他の規格のインターフェースであってもよい。また第2のインターフェースがATAやCF+やシリアルATAやCE−ATAであってもよい。また第2〜第K(K≧3)のバスを介してデータ転送を行う複数の第2〜第Kのインターフェースをデータ転送制御装置50に設けてもよい。また本実施形態におけるバスは有線であってもよいし、無線であってもよい。
転送コントローラ100は、デバイス側I/F60、ホスト側I/F70、USBI/F80の間でのデータ転送を制御する。
具体的には転送コントローラ100は、デバイス側I/F60、ホスト側I/F70の間でのデータ転送を制御する。これにより、メインCPU30から転送されてきたデータをHDD40に書き込んだり、HDD40に書き込まれたデータをメインCPU30に転送することが可能になる。また転送コントローラ100は、ホスト側I/F70、USBI/F80の間でのデータ転送を制御する。これにより、HDD40に書き込まれたデータをUSBを介してUSB機器10に転送したり、USB機器10から転送されてきたデータをHDDに書き込むことが可能になる。また転送コントローラ100は、デバイス側I/F60、USBI/F80の間でのデータ転送を制御することも可能である。これにより、メインCPU30から転送されてきたデータをUSBを介してUSB機器10に転送したり、USB機器10から転送されてきたデータをメインCPU30に転送することが可能になる。
なお転送コントローラ100は、レジスタ62に書き込まれたコマンドに基づいて、デバイス側I/F60、ホスト側I/F70、USBI/F80のうちのいずれかのインターフェース間でデータ転送を行うかを制御(決定)することができる。
転送コントローラ100はデータバッファ102(例えばFIFO)を含む。データバッファ102は、転送コントローラ100により転送されるデータを一時的に格納するためのバッファである。このデータバッファ102は、RAMなどのメモリにより実現できる。
転送コントローラ100はポートセレクタ104を含む。このポートセレクタ104は、転送コントローラ100のポートに接続されるデバイス側I/F60、ホスト側I/F70、USBI/F80(第2〜第Kのインターフェース)のうち、いずれのインターフェース間でデータ転送を行うかを選択するための回路である。例えばデバイス側I/F60、ホスト側I/F70の間でデータ転送を行う場合には、デバイス側I/F60のポートとホスト側I/F70のポートを選択し、これらのポート間でのデータ転送を行う。またホスト側I/F70、USBI/F80の間でデータ転送を行う場合には、ホスト側I/F70のポートとUSBI/F80のポートを選択し、これらのポート間でのデータ転送を行う。またデバイス側I/F60、USBI/F80の間でデータ転送を行う場合には、デバイス側I/F60のポートとUSBI/F80のポートを選択し、これらのポート間でのデータ転送を行う。
スイッチング回路110は、ATABUS1とATABUS2の接続、非接続を行う回路である。具体的にはATABUS1の複数の第1〜第N(N≧2)の信号線とATABUS2の複数の第1〜第Nの信号線との間の接続、非接続を行う複数の第1〜第Nのスイッチング素子を有する。ここで第1〜第Nの信号線は、例えばCS[1:0]、DA[2:0]、DD[15:0]、DASP、DIOR、DIOW、DMACK、DMARQ、INTRQ、IORDY、PDIAG、RESETなどの信号線である。そして第1〜第Nのスイッチング素子は、ハードワイヤードモードの場合に、ATABUS1の第1〜第Nの信号線とATABUS2の第1〜第Nの信号線との間を接続する。こうすることで、メインCPU30のホスト側I/F32(ATABUS1)とHDD40(ATABUS2)を直結することができ、ハードワイヤードモードを実現できる。なおスイッチング回路110の第1〜第Nのスイッチング素子のオン、オフ制御は、例えば処理部120(スイッチング信号生成部)からのスイッチング信号に基づき行われる。
処理部120は、データ転送制御装置50の全体的な処理、制御を行ったり、データ転送制御装置50が含む各回路ブロックの制御を行う。この処理部120の機能の一部又は全部は、例えばCPUとCPU上で動作するファームウェアにより実現したり、専用のハードウェア回路により実現できる。
具体的には処理部120は、ATABUS1、ATABUS2を介してメインCPU30(ATAホスト)、HDD40(ATAデバイス)の間でデータ転送を行うためのエミュレーション処理を行う。また処理部120は、スイッチング回路110の制御を行う。そしてハードワイヤードモードに設定されたと判断した場合に、スイッチング回路110の第1〜第Nのスイッチング素子をオンにして、ATABUS1の第1〜第Nの信号線とATABUS2の第1〜第Nの信号線との間を接続する処理を行う。また処理部120は、USBを介したUSBのプロトコル制御処理(広義には、第2のバスを介したデータ転送のプロトコル制御処理)を行うこともできる。
なお処理部120をデータ転送制御装置50に内蔵させず、メインCPU30との間のインターフェース処理を行うCPUI/Fを設けるようにしてもよい。この場合には、データ転送制御装置50やデータ転送制御装置50が含む各回路ブロックの制御は、CPUI/Fを介してメインCPU30が行うことになる。
なお処理部120を動作させるためのプログラムは、メインCPU30側のメモリ(EEPROM等)に記憶しておき、電源投入後にメインCPU30がダウンロードコマンドを発行し、ATABUS1を介してデータ転送制御装置50(データ転送制御装置が有するメモリ)にダウンロードするようにしてもよい。
イベント通知部130(イベント通知回路)は、メインCPU30(ATAホスト)に対してイベントの発生を通知するための処理を行う。具体的にはイベント通知部130は、USBI/F80(第2のインターフェース)について発生したイベントをメインCPU30に対して通知する。例えばUSBにUSB機器10が活線挿抜された場合に、USB機器10が挿抜されたことをメインCPU30に通知する。或いは、転送コントローラ100のデータ転送にエラーが生じた場合に、このエラーの発生をメインCPU30に通知する。或いは、ATABUS2に接続されるATA(ATAPI)デバイスが光ディスクドライブであり、光ディスクドライブに光ディスクがロードされた場合に、光ディスクがロードされたことをメインCPU30に通知する。
即ち本実施形態ではメインCPU30とデータ転送制御装置50の間のインターフェースは、ATABUS1になる。従ってATAのデータ転送に関するイベントの発生については、ATABUS1を介してメインCPU30に通知できるが、それ以外のイベントの発生については通知することが難しい。
この点、図2のイベント通知部130を設ければ、ATAのデータ転送に関するイベント以外のイベントについても、そのイベントの発生をメインCPU30に対して通知できるようになる。
なお、メインCPU30へのイベント発生の通知は、ATABUS1の信号線とは別に設けられた割り込み信号線などを用いて実現できる。或いは、メインCPU30のホスト側I/F32がCF+規格のI/Fである場合には、ATAモードの場合に使用されない端子(例えばカード・ディテクト端子CD)の信号線を用いて、メインCPU30にイベント発生を通知してもよい。
また、イベント通知部130及び割り込み信号線を利用することに代えて、レジスタ62(タスクレジスタ)内のATA規格において未使用とされているビット(後述)をイベント発生通知用ビットとして利用することにより、イベントの発生をメインCPU30に通知することもできる。イベントが発生した場合には、デバイス側I/F60は、レジスタ62(タスクレジスタ)内のイベント発生通知用ビットをセットする。メインCPU30は、レジスタ62(タスクレジスタ)内のイベント発生通知用ビットをポーリング(監視)することにより、イベントの発生を検知することができる。
3. 変形例
図3(A)(B)に本実施形態のデータ転送制御装置50の変形例を示す。例えば図3(A)では、データ転送制御装置50が、ATABUS3を介してHDD41(ATAデバイス)との間でデータ転送を行うATAの第2のホスト側I/F71を含む。そして転送コントローラ100は、デバイス側I/F60、ホスト側I/F70、第2のホスト側I/F71、USBI/F80の間でのデータ転送を制御する。
図3(A)(B)に本実施形態のデータ転送制御装置50の変形例を示す。例えば図3(A)では、データ転送制御装置50が、ATABUS3を介してHDD41(ATAデバイス)との間でデータ転送を行うATAの第2のホスト側I/F71を含む。そして転送コントローラ100は、デバイス側I/F60、ホスト側I/F70、第2のホスト側I/F71、USBI/F80の間でのデータ転送を制御する。
図3(A)の構成によれば、2台のHDD40、41をデータ転送制御装置50に接続できるようになる。そして例えばメインCPU30からのデータをHDD40に書き込んでいる最中に、HDD41に書き込まれているデータを、USBI/F80を介してUSB機器10に転送できる。またHDD40に書き込まれたデータをHDD41に転送して書き込んだり、HDD41に書き込まれたデータをHDD40に転送して書き込むことも可能になる。なお図3(A)では、2つのホスト側I/F70、71を設けた例を示しているが、3つ以上のホスト側I/Fを設けてもよい。
また図3(B)では、USBI/F80に加えて、SD(登録商標)/MMC(登録商標)/CE−ATAのホスト側I/F90が設けられている。即ち図3(B)ではデータ転送制御装置50が、USB、ATABUS2、BUS(広義には第2〜第Kのバス)を介してデータ転送を行うホスト側I/F70、USBI/F80、SD/MMC/CE−ATAホスト側I/F90(広義には第2〜第Kのインターフェース)を含む。そして転送コントローラ100は、デバイス側I/F60、ホスト側I/F70、USBI/F80、SD/MMC/CE−ATAホスト側I/F90の間でのデータ転送を制御する。これにより、例えばメインCPU30からのデータをSD(登録商標)メモリカード42に書き込み、SD(登録商標)メモリカード42に書き込んだデータをUSBI/F80を介してUSB機器10に転送できる。或いは、HDD40に書き込んだデータをSD(登録商標)メモリカード42に書き込むことも可能になる。
なお本実施形態においてデータ転送制御装置50に設ける第2〜第Kのインターフェースは、USBやSD(登録商標)のインターフェースに限定されない。例えばIEEE1394、シリアルATAなどの種々のインターフェースを採用できる。即ち、シリアルバスなどを介してデータの受信及び送信の少なくとも一方を行う物理層回路を含む種々のインターフェースを、第2〜第Kのインターフェースとして設けることができる。
4. 動作
次に本実施形態の動作について説明する。
4.1 イベント通知動作
まず、データ転送制御装置50においてイベントが発生した場合に、イベントをメインCPU30に通知するための電子機器20の動作について、説明する。
次に本実施形態の動作について説明する。
4.1 イベント通知動作
まず、データ転送制御装置50においてイベントが発生した場合に、イベントをメインCPU30に通知するための電子機器20の動作について、説明する。
4.1.1 割り込み信号によるイベント通知動作
再び図2を参照すると、例えばUSBにUSB機器10が活線挿抜された場合に、USBI/F80は、そのことをイベント通知部130に通知する。イベント通知部130は、USBI/F80から通知を受けると、メインCPU30との間にATABUS1とは別に設けられた割り込み信号線に割り込み信号をアサートする。メインCPU30は、この割り込み信号を受信することにより、データ転送制御装置50において何らかのイベントが発生したことを検知することができる。なお、USBにUSB機器10が活線挿抜された場合に、USBI/F80は、そのことを処理部120に通知し、処理部120が、そのことをイベント通知部130に通知するようにしても良い。
再び図2を参照すると、例えばUSBにUSB機器10が活線挿抜された場合に、USBI/F80は、そのことをイベント通知部130に通知する。イベント通知部130は、USBI/F80から通知を受けると、メインCPU30との間にATABUS1とは別に設けられた割り込み信号線に割り込み信号をアサートする。メインCPU30は、この割り込み信号を受信することにより、データ転送制御装置50において何らかのイベントが発生したことを検知することができる。なお、USBにUSB機器10が活線挿抜された場合に、USBI/F80は、そのことを処理部120に通知し、処理部120が、そのことをイベント通知部130に通知するようにしても良い。
また、転送コントローラ100のデータ転送にエラーが生じた場合に、転送コントローラ100は、そのことをイベント通知部130に通知する。イベント通知部130は、転送コントローラ100から通知を受けると、メインCPU30との間に設けられた割り込み信号線に割り込み信号をアサートする。メインCPU30は、この割り込み信号を受信することにより、データ転送制御装置50において何らかのイベントが発生したことを検知することができる。なお、転送コントローラ100のデータ転送にエラーが生じた場合に、転送コントローラ100は、そのことを処理部120に通知し、処理部120が、そのことをイベント通知部130に通知するようにしても良い。
また、ATABUS2に接続されるATA(ATAPI)デバイスが光ディスクドライブであり、光ディスクドライブに光ディスクがロードされた場合に、ATAホスト側I/F70は、そのことをイベント通知部130に通知する。イベント通知部130は、ATAホスト側I/F70から通知を受けると、メインCPU30との間に設けられた割り込み信号線に割り込み信号をアサートする。メインCPU30は、この割り込み信号を受信することにより、データ転送制御装置50において何らかのイベントが発生したことを検知することができる。なお、光ディスクドライブに光ディスクがロードされた場合に、ATAホスト側I/F70は、そのことを処理部120に通知し、処理部120が、そのことをイベント通知部130に通知するようにしても良い。
なお、メインCPU30が割り込み信号に対して何らかの処理をデータ転送制御装置50に行った場合(例えば、何らかのコマンドをレジスタ62のCommandレジスタに書き込んだ場合等)には、イベント通知部130が割り込み信号をネゲートするようにしても良い。
4.1.2 レジスタによるイベント通知動作
割込み信号を用いることに代えて、レジスタ62を用いてイベントの発生をメインCPU30に通知することもできる。この場合に、レジスタ62としては、デバイス側I/F60が含むATAのタスクレジスタを使用できる。
割込み信号を用いることに代えて、レジスタ62を用いてイベントの発生をメインCPU30に通知することもできる。この場合に、レジスタ62としては、デバイス側I/F60が含むATAのタスクレジスタを使用できる。
図4にATAのレジスタ構成を示す。図4は、チップセレクト信号CS1、CS0(#は負論理を示す)が、各々、H、Lレベルの場合にアドレス選択されるコマンドブロックレジスタを示している。図4において、チップセレクト信号CS1、CS0、アドレス信号DA2、DA1、DA0が、各々、H、L、H、H、Hレベルであり、ホストによるレジスタライトの場合には、A1に示すCommandレジスタにアクセスされ、ホストによるレジスタリードの場合には、A1に示すStatusレジスタにアクセスされる。
図5は、Statusレジスタ及び/又はAlternate Statusレジスタのビット構成を示す図である。Statusレジスタのビット構成とAlternate Statusレジスタのビット構成は同じであるものとして規定されている。
Statusレジスタのビット7は、ユニットデバイスがビジー状態であることを示すBSYビットとして、ビット6は、ドライブレディを示すDRDYビットとして、ビット5は、デバイスフォルトを示すDFビットとして、ビット3は、データ・リクエスト・レディを示すDRQビットとして、ビット0は、ユニットデバイスのエラーの発生有無を示すERRビットとして、ATA/ATAPI−6規格で規定されている。
一方、Statusレジスタのビット4は、コマンドの違いでビット定義が異なるものとして規定(naで表記)されている。また、ビット2及びビット1は、以前の規格では使用されていたが、現在のATA/ATAPI−6規格では利用廃止(obsで表記)されている。
そこで、本実施形態においては、図5に示すように、ATA/ATAPI−6規格では利用されていないStatusレジスタ及び/又はAlternate Statusレジスタのビット1を、データ転送制御装置50におけるイベントの発生の有無を示すEventビットとして利用することとした。
図6は、レジスタ62を用いてイベントの発生をメインCPU30に通知する場合における電子機器20の動作例を示すシーケンス図である。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しているが、図6のS11では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しているが、図6のS11では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
その後、データ転送制御装置50は、何らかのイベントが発生すると、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットする。
そして、メインCPU30は、図6のS12では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされているので、データ転送制御装置50におけるイベントの発生を検知することができる。なお、その後、メインCPU30が、イベントの発生に対処するための処理を実行するようにすれば良い。
なお、ここでは、イベントの発生を通知するためのビットとして、Statusレジスタのビット1を利用することとしているが、他のレジスタ(例えば、Dataレジスタ等)の他のビットを利用するようにしても良い。
また、メインCPU30がイベント発生に対して何らかの処理をデータ転送制御装置50に行った場合(例えば、何らかのコマンドをレジスタ62のCommandレジスタに書き込んだ場合等)には、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をクリアするようにしても良い。
4.2 イベント内容通知動作
次に、イベントの内容をメインCPU30に通知するための電子機器20の動作について、説明する。
次に、イベントの内容をメインCPU30に通知するための電子機器20の動作について、説明する。
4.2.1 Statusレジスタによるイベント内容通知動作
上記したように、割り込み信号若しくはStatusレジスタ及び/又はAlternate Statusレジスタのビット1を利用することにより、データ転送制御装置50において何らかのイベントが発生したことをメインCPU30に通知することができる。データ転送制御装置50において発生し得るイベントが1つしかない場合には、イベントの発生の有無をメインCPU30に通知できれば十分である。しかしながら、データ転送制御装置50において発生し得るイベントが複数の場合には、どのようなイベントが発生したのかというイベントの内容をもメインCPU30に通知する必要がある。
上記したように、割り込み信号若しくはStatusレジスタ及び/又はAlternate Statusレジスタのビット1を利用することにより、データ転送制御装置50において何らかのイベントが発生したことをメインCPU30に通知することができる。データ転送制御装置50において発生し得るイベントが1つしかない場合には、イベントの発生の有無をメインCPU30に通知できれば十分である。しかしながら、データ転送制御装置50において発生し得るイベントが複数の場合には、どのようなイベントが発生したのかというイベントの内容をもメインCPU30に通知する必要がある。
そこで、本実施形態においては、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタを用いて発生したイベントの内容に関するデータをメインCPU30に通知することとした。
図7は、Statusレジスタ及び/又はAlternate Statusレジスタのビット構成を示す図である。
先に説明したように、Statusレジスタ及び/又はAlternate Statusレジスタのビット4は、コマンドの違いでビット定義が異なるものとして規定されている。また、ビット2は、以前の規格では使用されていたが、現在のATA/ATAPI−6規格では利用廃止されている。
そこで、本実施形態においては、図7に示すように、Statusレジスタ及び/又はAlternate Statusレジスタのビット4及び2を、データ転送制御装置50において発生したイベントの内容を示すビットとして利用することとした。
ここでは、Statusレジスタ及び/又はAlternate Statusレジスタのビット4を、メインCPU30がデータ転送制御装置50に送信した非同期コマンドの処理が終了したというイベントを表すためのCmdReadyビットとして利用し、ビット2を、USB機器10がUSBに活線挿抜されたというイベントを表すためのIns/Extビットとして利用している。なお、ここでは、Statusレジスタ及び/又はAlternate Statusレジスタのビット4及びビット2を、非同期コマンドの処理の終了及びUSB機器10の活線挿抜というイベントを表すために利用することとしているが、その他のイベントを表すために利用するようにしても良い。
4.2.1.1 動作例1
図8は、USB機器10が活線挿抜された場合における電子機器20の動作例を示すシーケンス図である。なお、図8では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
図8は、USB機器10が活線挿抜された場合における電子機器20の動作例を示すシーケンス図である。なお、図8では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しているが、図8のS21では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
その後、データ転送制御装置50は、USB機器10が活線挿抜されるというイベントが発生すると、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットするとともに、Statusレジスタ及び/又はAlternate Statusレジスタのビット2(Ins/Extビット)をセットする。
そして、メインCPU30は、図8のS22では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされているので、データ転送制御装置50におけるイベントの発生を検知することができるとともに、Statusレジスタ及び/又はAlternate Statusレジスタのビット2(Ins/Extビット)がセットされているので、イベントの内容がUSB機器10の活線挿抜であることを検知することができる。なお、その後、メインCPU30が、USB機器10の活線挿抜に対処するための処理(例えば、USB機器10がどのようなUSB機器であるかを確認するためのコマンドであるIDENTIFY DEVICEコマンド(ECh)をレジスタ62のCommandレジスタに書き込む処理等。)を実行するようにしても良い。
また、メインCPU30がイベント発生に対して何らかの処理をデータ転送制御装置50に行った場合(例えば、何らかのコマンドをレジスタ62のCommandレジスタに書き込んだ場合等)には、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット4、ビット2及び/又はビット1をクリアするようにしても良い。
ATAの規格においては、デバイスの活線挿抜は規定されていない。逆に言えば、ATAの規格においては、デバイスの活線挿抜が規定されていないので、ATAのデバイス側からホスト側にイベントを通知する手段が不要であるため、ATAのデバイス側からホスト側にイベントを通知する手段が設けられていない。しかしながら、本実施形態によれば、デバイスの活線挿抜というイベントをメインCPU30に通知することが可能となる。
4.2.1.2 動作例2
図9は、非同期コマンド発行時における電子機器20の動作例を示すシーケンス図である。なお、図9では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
図9は、非同期コマンド発行時における電子機器20の動作例を示すシーケンス図である。なお、図9では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
まず、メインCPU30は、図9のS31において、非同期コマンド(ここでは、ベンダ定義コマンドとしてベンダにより定義されたUSBH_PORT_CONTROLコマンド(USB機器10をSUSPENDさせるための処理をデータ転送制御装置50に行わせるためのコマンド)とする。)をレジスタ62に書き込む。データ転送制御装置50は、USBH_PORT_CONTROLコマンドがレジスタ62に書き込まれると、USBH_PORT_CONTROLコマンドを受け付けたことを表すステータスをレジスタ62に書き込み、メインCPU30は、図9のS32において、レジスタ62をリードすることにより、そのステータスを読み取る。
次に、データ転送制御装置50は、図9のS33において、レジスタ62に書き込まれたUSBH_PORT_CONTROLを実行し、USB機器10をSUSPENDさせるための処理を開始する。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しており、図9のS34ではStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
その後、データ転送制御装置50は、USB機器10をSUSPENDさせる処理を完了するというイベントが発生すると、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットするとともに、Statusレジスタ及び/又はAlternate Statusレジスタのビット4(CmdReadyビット)をセットする。
そして、メインCPU30は、図9のS35において、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされているので、データ転送制御装置50におけるイベントの発生を検知するとともに、Statusレジスタ及び/又はAlternate Statusレジスタのビット4(CmdReadyビット)がセットされているので、イベントの内容が非同期コマンドの完了、すなわちUSBH_PORT_CONTROLコマンドの完了であることを検知することができる。
ATAの規格においては、同期コマンドのみが定義されており、非同期コマンドは定義されていない。逆に言えば、ATAの規格においては、非同期コマンドが定義されていないので、ATAのデバイス側からホスト側にイベントを通知する手段が不要であるため、ATAのデバイス側からホスト側にイベントを通知する手段が設けられていない。しかしながら、本実施形態によれば、非同期コマンドの完了というイベントをメインCPU30に通知することができ、そのため非同期コマンドをベンダ定義コマンドとしてベンダ定義することが可能となる。これにより、メインCPU30は、非同期コマンドをデータ転送制御装置50に発行してからデータ転送制御装置50が非同期コマンドの処理を完了するまでの時間を他の処理に利用することができ、メインCPU30の処理効率を向上させることが可能となる。
なお、ここでは、Statusレジスタ及び/又はAlternate Statusレジスタのビット4を非同期コマンドの完了というイベントの内容を表すものとして、Statusレジスタ及び/又はAlternate Statusレジスタのビット2をUSB機器10の活線挿抜というイベントの内容を表すものとして、別個に利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット4とビット2とを合わせて符号化して利用するようにしても良い。そのようにすれば、ビット4とビット2の2つのビットで計4つのイベントの内容を表すことができるようになる。
また、ここでは、イベントの内容を表すためのビットとして、Statusレジスタのビット4及びビット2を利用することとしているが、他のレジスタ(例えば、Dataレジスタ等)の他のビットを利用するようにしても良い。
また、メインCPU30がイベント発生に対して何らかの処理をデータ転送制御装置50に行った場合(例えば、何らかのコマンドをレジスタ62のCommandレジスタに書き込んだ場合等)には、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット4、ビット2及び/又はビット1をクリアするようにしても良い。
4.2.2 レジスタによるイベント内容の詳細通知動作
上記したように、Statusレジスタ及び/又はAlternate Statusレジスタのビット4及びビット2を利用することにより、イベントの内容をメインCPU30に通知することができる。しかしながら、データ転送制御装置50においてより多くの種類のイベントが起こり得る場合に対処することや、イベントに関するより詳細な情報をメインCPU30に通知することが望まれる。
上記したように、Statusレジスタ及び/又はAlternate Statusレジスタのビット4及びビット2を利用することにより、イベントの内容をメインCPU30に通知することができる。しかしながら、データ転送制御装置50においてより多くの種類のイベントが起こり得る場合に対処することや、イベントに関するより詳細な情報をメインCPU30に通知することが望まれる。
そこで、本実施形態においては、Statusレジスタ及び/又はAlternate Statusレジスタの他のレジスタをも利用して、イベントの内容の詳細をメインCPU30に通知することができるようにした。すなわち、イベントの内容の詳細を読み取るためのベンダ定義コマンドをベンダ定義し、そのようなベンダ定義コマンドがメインCPU30から発行された場合には、データ転送制御装置50がイベントの内容の詳細な情報をレジスタ62(タスクレジスタ)に書き込み、メインCPU30がレジスタ62をリードすることによりイベントの内容の詳細な情報を取得することができるようにした。
なお、ここでは、イベントの内容の詳細を読み取るためのベンダ定義コマンドとして、イベント通知読み込みコマンド(EVENT_READ(ここでは、88hとする))をベンダ定義しておくものとする。
図10は、イベント通知読み込みコマンド(EVENT_READ)が発行された場合における、Dataレジスタ、Errorレジスタ、Sector Countレジスタ(Interrupt Reasonレジスタ)、Sector Numberレジスタ、Cylinder Lowレジスタ(Byte Count LSBレジスタ)、Cylinder Highレジスタ(Byte Count MSBレジスタ)、Device/Headレジスタ、Statusレジスタ及びAlternate Statusレジスタのビット構成を示す図である。
図10に示すように、イベント通知読み込みコマンド(EVENT_READ)が発行された場合において、Dataレジスタは使用されない(Not Usedで表記)。
また、Errorレジスタでは、データ転送制御装置50において発生したイベントの種類を表す8ビットのEventCodeを読み出すことが可能である。
また、Errorレジスタでは、データ転送制御装置50において発生したイベントの種類を表す8ビットのEventCodeを読み出すことが可能である。
Sector Countレジスタ、Sector Numberレジスタ、Cylinder Lowレジスタ、Cylinder Highレジスタは、ATA/ATAPI−6において、1バイト(8ビット)から2バイト(16ビット)に拡張された。それとともに、1バイト目(Previous)と2バイト目(Current)のいずれを読み出すかを指定するHOB(High Order Byte)ビットも追加された。なお、HOBビットは、Device Controlレジスタ(書き込み専用のレジスタ(図4参照))のビット7である。
Sector Countレジスタでは、HOBが0の場合、データ転送制御装置50内のイベントが発生したユニット(例えば、USBI/F80、ホスト側I/F70、転送コントローラ100等)を表す8ビットのUnitTypeを読み出すことが可能であり、HOBが1の場合、イベントの詳細な情報を表す8ビットのEventInfo3を読み出すことが可能である。
Sector Numberレジスタでは、HOBが0の場合、イベントの詳細な情報を表す8ビットのEventInfo0を読み出すことが可能であり、HOBが1の場合、イベントの詳細な情報を表す8ビットのEventInfo4を読み出すことが可能である。
Cylinder Lowレジスタでは、HOBが0の場合、イベントの詳細な情報を表す8ビットのEventInfo1を読み出すことが可能であり、HOBが1の場合、イベントの詳細な情報を表す8ビットのEventInfo5を読み出すことが可能である。
Cylinder Highレジスタでは、HOBが0の場合、イベントの詳細な情報を表す8ビットのEventInfo2を読み出すことが可能であり、HOBが1の場合、イベントの詳細な情報を表す8ビットのEventInfo6を読み出すことが可能である。
Device/Headレジスタのビット7〜ビット5及びビット3〜ビット0は、予約されており(Reservedで表記)、ここでは0固定とする。ビット4は、ATA/ATAPI規格で規定され、ATAデバイスがマスタであるかスレーブであるかを表すDEVビットである。
Statusレジスタ(Alternate Statusレジスタも同様)のビット7は、BSYビットであり、コマンド完了時には0とする。ビット6は、DRDYビットであり、ここでは1とする。ビット5は、DFビットであり、ここでは0とする。ビット4は、先に説明したようにCmdReadyビットとして利用可能であるが、図10においては0としている。ビット3は、DRQビットであり、ここでは0とする。ビット2は、先に説明したようにIns/Extビットとして利用可能であるが、図10においては0としている。ビット0は、ERRビットである。
4.2.2.1 動作例1
ここでは、データ転送制御装置50のUSBI/F80がUSB規格で規定されているPTP(Picture Transfer Protocol)によるファイル転送要求コマンドをUSB機器10から受けるというイベントが発生した場合の動作例について説明する。
ここでは、データ転送制御装置50のUSBI/F80がUSB規格で規定されているPTP(Picture Transfer Protocol)によるファイル転送要求コマンドをUSB機器10から受けるというイベントが発生した場合の動作例について説明する。
図11は、この場合における電子機器20の動作例を示すシーケンス図である。なお、図11では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しているが、図11のS41では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
その後、データ転送制御装置50は、図11のS42において、USBI/F80がUSB機器10からPTPによるファイル転送要求コマンドを受けるというイベントが発生すると、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットする。
そして、メインCPU30は、図11のS43では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされているので、データ転送制御装置50においてイベントが発生したことを検知する。そして、メインCPU30は、図11のS44において、イベントの内容の詳細を表すデータを取得するために、ベンダ定義コマンドであるEVENT_READコマンドをレジスタ62のCommandレジスタに書き込む。
なお、メインCPU30がEVENT_READコマンド(ベンダ定義コマンド)をレジスタ62のCommandレジスタに書き込んだときに、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット1をクリアするようにしても良い。
データ転送制御装置50は、図11のS44において、EVENT_READコマンドを受けると、イベントの内容の詳細を表すデータをレジスタ62に書き込む。
図12は、このときのレジスタ62の内容を示す図である。ここでは、イベントの内容の詳細を表すデータの量がEventInfo3〜EventInfo6を利用する程多くなく、従ってEventInfo3〜EventInfo6を利用する必要がなく、HOBビット(Device Controlレジスタのビット7)は0固定で良いものとする。
ここでは、データ転送制御装置50は、発生したイベントがコマンドの受信(ここでは、PTPによるファイル転送要求コマンド)であることを表すRECEIVE_COMMANDという8ビットの値(予め定義しておく)をEventCodeとしてErrorレジスタに書き込む。
また、データ転送制御装置50は、イベントが発生したユニット(ここでは、USBI/F80)を表すUSB_HOSTという8ビットの値(予め定義しておく)をUnitTypeとしてSector Countレジスタに書き込む。
また、データ転送制御装置50は、PTPのオペレーション/レスポンスの情報を表すPTP_CODE_L及びPTP_CODE_Hという8ビット×2の値(予め定義しておく)をEventInfo0及びEventInfo1としてSector Numberレジスタ及びCylinder Lowレジスタに書き込む。
再び図11を参照すると、データ転送制御装置50は、イベントの内容の詳細を表すデータをレジスタ62に書き込み終えると、図11のS45において、ATABUS1を介してINTRQ信号をメインCPU30にアサートする。なお、INTRQ信号は、ATA/ATAPI規格に規定されている信号であり、ATAホスト側装置から発行されたコマンドに対する応答時等にATAデバイス側装置からアサートすることができる信号である。
メインCPU30は、INTRQ信号を受けると、レジスタ62にリードアクセスし、EventCode(ここでは、RECEIVE_COMMAND)、UnitType(ここでは、USB_HOST)、EventInfo0(ここでは、PTP_CODE_L)、EventInfo1(ここでは、PTP_CODE_H)を取得する。なお、その後、メインCPU30が、USB機器10との間のPTPによるファイル転送を行うための処理(例えば、データ転送制御装置50にUSB機器10との間のPTPによるファイル転送を行わせるためのコマンドをレジスタ62のCommandレジスタに書き込む処理等。)を実行するようにすれば良い。
また、メインCPU30がイベント発生に対して何らかの処理をデータ転送制御装置50に行った場合(例えば、EVENT_READコマンド(ベンダ定義コマンド)をレジスタ62のCommandレジスタに書き込んだ場合等)には、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット1をクリアするようにしても良い。
4.2.2.2 動作例2
ここでは、図13に示すように、データ転送制御装置50がUSBI/F80の他にもう1つのUSBI/F81を含んでおり、USBI/F80に複数のポートを有するUSBハブ11が接続されている場合に、USBハブ11が有する複数のポートの内の1つのポートにUSB機器12が活線挿入されたときの動作例について説明する。
ここでは、図13に示すように、データ転送制御装置50がUSBI/F80の他にもう1つのUSBI/F81を含んでおり、USBI/F80に複数のポートを有するUSBハブ11が接続されている場合に、USBハブ11が有する複数のポートの内の1つのポートにUSB機器12が活線挿入されたときの動作例について説明する。
図14は、この場合における電子機器20の動作例を示すシーケンス図である。なお、図14では、イベントの発生の通知に、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)を利用しているが、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)に代えてイベント通知部130及び割り込み信号を利用しても良い。
メインCPU30は、レジスタ62のStatusレジスタ及び/又はAlternate Statusレジスタをポーリング(監視)しているが、図14のS51では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされていないので、イベントの発生を検知しない。
その後、データ転送制御装置50は、図14のS52において、USBハブ11にUSB機器12が活線挿入されるというイベントが発生すると、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットする。
そして、メインCPU30は、図14のS53では、Statusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされているので、データ転送制御装置50においてイベントが発生したことを検知する。そして、メインCPU30は、図14のS54において、イベントの内容の詳細を表すデータを取得するために、ベンダ定義コマンドであるEVENT_READコマンドをレジスタ62のCommandレジスタに書き込む。
なお、メインCPU30がEVENT_READコマンド(ベンダ定義コマンド)をレジスタ62のCommandレジスタに書き込んだときに、データ転送制御装置50がStatusレジスタ及び/又はAlternate Statusレジスタのビット1をクリアするようにしても良い。
データ転送制御装置50は、図14のS54において、EVENT_READコマンドを受けると、イベントの内容の詳細を表すデータをレジスタ62に書き込む。
図16は、このときのレジスタ62の内容を示す図である。ここでは、イベントの内容の詳細を表すデータの量がEventInfo3〜EventInfo6を利用する程多くなく、従ってEventInfo3〜EventInfo6を利用する必要がなく、HOBビット(Device Controlレジスタのビット7)は0固定とする。
ここでは、データ転送制御装置50は、発生したイベント(ここでは、USB機器12の活線挿入)を表すDEVICE_INSERTという8ビットの値(予め定義しておく)をEventCodeとしてErrorレジスタに書き込む。なお、もし発生したイベントがUSB機器12の抜去である場合には、DEVICE_EXTRACTという8ビットの値(予め定義しておく)をEventCodeとしてErrorレジスタに書き込めば良い。
また、データ転送制御装置50は、イベントが発生したユニット(ここでは、USBI/F80)を表すUSB_HOST_1という8ビットの値(予め定義しておく)をUnitTypeとしてSector Countレジスタに書き込む。なお、もしイベントが発生したユニットがUSBI/F81である場合には、USB_HOST_2という8ビットの値(予め定義しておく)をUnitTypeとしてSector Countレジスタに書き込むようにすれば良い。また、もしイベントが発生したユニットがATAホスト側I/F70である場合には、ATA_HOSTという8ビットの値(予め定義しておく)をUnitTypeとしてSector Countレジスタに書き込むようにすれば良い。
また、データ転送制御装置50は、活線挿入されたUSB機器12がデータ転送制御装置50に接続されている何台目のUSB機器であるか(ここでは、1台目)を表すDEVICE_FIRSTという8ビットの値(予め定義しておく)をEventInfo0としてSector Numberレジスタに書き込む。なお、もしUSB機器12がデータ転送制御装置50に接続されている2台目のUSB機器である場合には、DEVICE_SECONDという8ビットの値(予め定義しておく)をEventInfo0としてSector Numberレジスタに書き込めば良い。
また、データ転送制御装置50は、活線挿入されたUSB機器12のクラス(ここでは、マスストレージクラスとする。)を表すCLASS_MASS_STORAGEという8ビットの値(予め定義しておく)をEventInfo1としてCylinder Lowレジスタに書き込む。
再び図14を参照すると、データ転送制御装置50は、イベントの内容の詳細を表すデータをレジスタ62に書き込み終えると、図14のS55において、INTRQ信号をアサートする。
メインCPU30は、INTRQ信号を受けると、レジスタ62にリードアクセスし、EventCode(ここでは、DEVICE_INSERT)、UnitType(ここでは、USB_HOST_1)、EventInfo0(ここでは、DEVICE_FIRST)、EventInfo1(ここでは、CLASS_MASS_STORAGE)を取得する。なお、その後、メインCPU30が、USB機器12の活線挿入に対処するための処理(例えば、USB機器12がどのようなマスストレージ機器であるかを確認するためのIDENTIFY DEVICEコマンドをレジスタ62のCommandレジスタに書き込む処理等。)を実行するようにすれば良い。
なお、図15に示す情報が既知の場合、例えば、データ転送制御装置50内にイベントが発生し得るユニットが1つだけ(例えば、USBI/F80だけ)しかなく、USBハブの接続は不可であり接続可能なUSB機器が1つだけであり、接続可能なUSB機器のクラスが1つだけ(例えば、マスストレージクラスだけ)であり、現在の挿抜状態をメインCPU30が記憶していてUSB機器挿入状態→USB機器抜去、USB機器未接続状態→USB機器挿入を判断できる場合には、図7及び図8に示すように、Statusレジスタ内の情報だけで十分であり、EVENT_READコマンド(ベンダ定義コマンド)の発行や図15に示す情報は不要である。
4.3 イベントの多重発生
イベントが発生してイベント通知部130が割り込み信号をアサートしている間又はイベントが発生してStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされている間に、新たなイベントが発生することもあり得る。その場合には、データ転送制御装置50は、新たに発生したイベントに関する情報(イベントが発生したユニット、発生したイベントの種類等)を一時記憶しておく(キャッシュしておく)。そして、先に発生したイベントに対する割り込み信号をネゲートするタイミング又は先に発生したイベントに対するStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をクリアするタイミングにおいて、新たに発生したイベントに対する割り込み信号をアサートし又は新たに発生したイベントに対するStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットすれば良い。メインCPU30は、先に発生したイベントに対する処理(例えば、IDENTIFY DEVICEコマンドの発行やその結果の読み出し、EVENT_READコマンドの発行やその結果の読み出し等)の後に、新たに発生したイベントに対する処理を行うようにすれば良い。
イベントが発生してイベント通知部130が割り込み信号をアサートしている間又はイベントが発生してStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)がセットされている間に、新たなイベントが発生することもあり得る。その場合には、データ転送制御装置50は、新たに発生したイベントに関する情報(イベントが発生したユニット、発生したイベントの種類等)を一時記憶しておく(キャッシュしておく)。そして、先に発生したイベントに対する割り込み信号をネゲートするタイミング又は先に発生したイベントに対するStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をクリアするタイミングにおいて、新たに発生したイベントに対する割り込み信号をアサートし又は新たに発生したイベントに対するStatusレジスタ及び/又はAlternate Statusレジスタのビット1(Eventビット)をセットすれば良い。メインCPU30は、先に発生したイベントに対する処理(例えば、IDENTIFY DEVICEコマンドの発行やその結果の読み出し、EVENT_READコマンドの発行やその結果の読み出し等)の後に、新たに発生したイベントに対する処理を行うようにすれば良い。
5. ATAのデバイス側I/F、ホスト側I/F
図16(A)にATAのデバイス側I/F60の構成例を示す。図16(A)に示すようにデバイス側I/F60は、タスクレジスタ200、MDMA/PIO制御部202、UltraDMA制御部204、データバッファ206、転送制御部208を含む。
図16(A)にATAのデバイス側I/F60の構成例を示す。図16(A)に示すようにデバイス側I/F60は、タスクレジスタ200、MDMA/PIO制御部202、UltraDMA制御部204、データバッファ206、転送制御部208を含む。
タスクレジスタ200は、ATA(IDE)で規格化されているレジスタであり、図4に示すようなコマンドブロックレジスタや、コントロールブロックレジスタを含む。ここでコマンドブロックレジスタは、コマンドを発行したりステータスを読み込むのに使用されるレジスタである。またコントロールブロックレジスタは、デバイスをコントロールしたり、代替えステータスを読み込むのに使用されるレジスタである。
MDMA/PIO制御部202は、ATAのマルチワードDMA転送やPIO転送についてのデバイス側の制御処理を行う。UltraDMA制御部204は、ATAのUltraDMA転送についてのデバイス側の制御処理を行う。データバッファ206(FIFO)は、データ転送の転送レートの差を調整(緩衝)するためのバッファである。転送制御部208は後段の回路(転送コントローラ100、データバッファ102)との間のデータ転送を制御する。
図16(B)にATAのホスト側I/F70の構成例を示す。図16(B)に示すようにホスト側I/F70は、タスクレジスタ・アクセスアービタ210、MDMA/PIO制御部212、UltraDMA制御部214、データバッファ216、転送制御部218を含む。
タスクレジスタ・アクセスアービタ210は、デバイス側に設けられるタスクレジスタ(図16(A)の200)に対するアクセスの調停処理を行う。MDMA/PIO制御部212は、ATAのマルチワードDMA転送やPIO転送についてのホスト側の制御処理を行う。UltraDMA制御部214は、ATAのUltraDMA転送についてのホスト側の制御処理を行う。データバッファ216(FIFO)は、データ転送の転送レートの差を調整(緩衝)するためのバッファである。転送制御部218は後段の回路(転送コントローラ100、データバッファ102)との間のデータ転送を制御する。
次に、ATAのデータ転送について図17(A)〜図18(B)の信号波形を用いて説明する。図17(A)〜図18(B)においてCS[1:0]は、ATAの各レジスタにアクセスするために使用するチップセレクト信号である。DA[2:0]は、データ又はデータポートにアクセスするためのアドレス信号である。DMARQ、DMACKは、DMA転送に使用される信号である。データ転送の準備が整った時にデバイス側がDMARQをアクティブ(アサート)にし、これに応答して、ホスト側がDMACKをアクティブにする。
DIOW(STOP)は、レジスタ又はデータポートの書き込み時に使用するライト信号である。なお、UrtraDMA転送中はSTOP信号として機能する。DIOR(HDMARDY、HSTROBE)は、レジスタ又はデータポートの読み出し時に使用するリード信号である。なお、UrtraDMA転送中はHDMARDY、HSTROBE信号として機能する。IORDY(DDMARDY、DSTROBE)は、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。なお、UrtraDMA転送中はDDMARDY、DSTROBE信号として機能する。
INTRQは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このINTRQがアクティブになった後、ホスト側がデバイス側のタスクレジスタのステータスレジスタの内容を読むと、所定時間後にデバイス側はINTRQを非アクティブ(ネゲート)にする。このINTRQを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
図17(A)、(B)は、PIO(Parallel I/O)リード、PIOライト時の信号波形例である。ATAのステータスレジスタのリードは図17(A)のPIOリードにより行い、コマンドレジスタへのライトは図17(B)のPIOライトにより行う。例えば、メインCPU30によるベンダ定義のコマンドの発行は、PIOライトにより実現できる。
図18(A)、(B)は、DMAリード、DMAライト時の信号波形例である。データ転送の準備ができると、デバイス側が、DMARQをアクティブにする。そして、それを受けて、ホスト側が、DMACKをアクティブにして、DMA転送を開始する。その後、DIOR(リード時)又はDIOW(ライト時)を使用して、データDD[15:0]のDMA転送を行う。
6. USBI/F
USBでは、図19(A)に示すようなエンドポイント(EP0〜15)がUSBデバイス側に用意される。またUSBでは、転送(transfer)のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送などが定義されており、各転送は一連のトランザクションにより構成される。そしてトランザクションは図19(B)に示すように、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
USBでは、図19(A)に示すようなエンドポイント(EP0〜15)がUSBデバイス側に用意される。またUSBでは、転送(transfer)のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送などが定義されており、各転送は一連のトランザクションにより構成される。そしてトランザクションは図19(B)に示すように、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
OUTトランザクションでは、図19(C)に示すように、まず、USBホストがUSBデバイスに対してOUTトークン(トークパケット)を発行する。次に、USBホストはUSBデバイスに対してOUTデータ(データパケット)を送信する。そして、USBデバイスは、OUTデータの受信に成功すれば、USBホストに対してACK(ハンドシェークパケット)を送信する。一方、INトランザクションでは、図19(D)に示すように、まず、USBホストがUSBデバイスに対してINトークンを発行する。そしてINトークンを受信したUSBデバイスは、USBホストに対してINデータを送信する。そしてUSBホストは、INデータの受信に成功すると、USBデバイスに対してACKを送信する。
なお"D←H"は、USBホストからUSBデバイスに対して情報が転送されることを意味し、"D→H"は、USBデバイスからUSBホストに対して情報が転送されることを意味する。
次に、USBのバルクオンリートランスポートのプロトコルについて説明する。ハードディスクドライブや光ディスクドライブなどの大容量記憶装置は、マスストレージと呼ばれるクラスに属する。このマスストレージクラスには、バルクオンリートランスポートというプロトコルが規格化されている。
バルクオンリートランスポートでは、バルクIN、バルクOUTの2つのエンドポイントを用いてパケット転送が行われる。即ち、コマンドには、CBW(Command Block Wrapper)と呼ばれる31バイトのデータが使用され、バルクOUTのエンドポイントを用いて転送される。データ転送には、転送方向に応じてバルクIN、バルクOUTのエンドポイントが使用される。コマンドに対するステータスには、CSW(Command Status Wrapper)と呼ばれる13バイトのデータが使用され、バルクINのエンドポイントを用いて転送される。
次に、バルクオンリートランスポートの送受信処理(プロトコル制御)について、図20(A)、(B)を用いて説明する。図20(A)に示すように、USBホストがUSBデバイスにデータを送信する場合には、まずUSBホストがCBWをUSBデバイスに送信するコマンドトランスポートが行われる。具体的には、USBホストが、エンドポイントEP1を指定するトークンパケットをUSBデバイスに送信し、次に、CBWをUSBデバイスのエンドポイントEP1に送信する。このCBWはライトコマンドを含む。そして、USBデバイスからUSBホストにACKのハンドシェークパケットが返却されると、コマンドトランスポートが終了する。
コマンドトランスポートが終了するとデータトランスポートに移行する。このデータトランスポートでは、まずUSBホストが、エンドポイントEP1を指定するトークンパケットをUSBデバイスに送信し、次に、OUTデータをUSBデバイスのエンドポイントEP1に送信する。そして、USBデバイスからUSBホストにACKのハンドシェークパケットが返却されると、1つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、CBWで指定されるデータ長の分だけデータが送信されると、データトランスポートが終了する。
データトランスポートが終了するとステータストランスポートに移行する。このステータストランスポートでは、まず、USBホストが、エンドポイントEP2を指定するトークンパケットをUSBデバイスに送信する。すると、USBデバイスが、エンドポイントEP2にあるCSWをUSBホストに送信する。そして、USBホストからUSBデバイスにACKのハンドシェークパケットが返却されると、ステータストランスポートが終了する。
USBホストがUSBデバイスからデータを受信する場合は、図20(B)に示すように処理が行われる。図20(B)が図20(A)と異なるのは、コマンドトランスポートのCBWがリードコマンドを含む点と、データトランスポートにおいてINデータの転送が行われる点である。
図21にUSBI/F80の構成例を示す。USBI/F80は、トランシーバ220、転送コントローラ250、データバッファ290を含む。
トランシーバ220(デュアルトランシーバ)は、差動信号(DP、DM)を用いてUSB(広義にはバス或いはシリアルバス)のデータを送受信するための回路であり、ホストトランシーバ230、デバイストランシーバ240を含む。
ホストトランシーバ230は、アナログフロントエンド回路(物理層回路)及び高速ロジック回路を有し、USBのHSモード(480Mbps)、FSモード(12Mbps)、LSモード(1.5Mbps)をサポートする。デバイストランシーバ240は、アナログフロントエンド回路(物理層回路)及び高速ロジック回路を有し、USBのHSモード、FSモードをサポートする。このデバイストランシーバ240としてはUTMI(USB2.0 Transceiver Macrocell Interface)仕様に準拠した回路を用いることができる。
転送コントローラ250は、USBを介したデータ転送を制御するためのコントローラであり、トランザクション層やリンク層などのデータ転送制御を行う。この転送コントローラ250は、ホストコントローラ260、デバイスコントローラ270、ポートセレクタ280を含む。なおこれらの一部を省略する構成としてもよい。
ホストコントローラ260(ホストSerial Interface Engine)は、ホストモード時のデータ転送を制御する。具体的にはホストコントローラ260は、トランザクションのスケジューリング(発行)やトランザクションの管理やパケットの生成&解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを生成する。更にバスの接続・切断状態の検出やVBUSの制御などを行う。
デバイスコントローラ270(デバイスSerial Interface Engine)は、デバイスモード時のデータ転送を制御する。具体的にはデバイスコントローラ270は、トランザクションの管理やパケットの生成&解析などを行う。またサスペンド、レジューム、リセット等のバスイベントを制御する。
ポートセレクタ280は、ホストモードとデバイスモードのいずれかを選択して有効にするためのセレクタである。例えばレジスタ等の設定によりホストモードが選択されると、ポートセレクタ280はホストコントローラ260、ホストトランシーバ230を選択(イネーブル)する。一方、レジスタ等の設定によりデバイスモードが選択されると、ポートセレクタ280はデバイスコントローラ270、デバイストランシーバ240を選択(イネーブル)する。
データバッファ290(FIFO、パケットバッファ)は、USB(シリアルバス)を介して転送されるデータ(送信データ、受信データ)を一時的に格納(バッファリング)するためのバッファである。このデータバッファ290は、RAMなどのメモリにより実現できる。
なお、転送コントローラ250やデータバッファ290の一部の機能を、図2の転送コントローラ100やデータバッファ102により実現してもよい。また図21では、ホスト動作とデバイス動作の両方の動作を行うUSBI/F80の例を示したが、デバイス動作だけを行うものであってもよい。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(ホスト側回路、デバイス側回路、デバイス側インターフェース、第2〜第Kのインタフェース等)と共に記載された用語(メインCPU、ATAデバイス側I/F、USBI/F等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置や電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。例えばATAバスは、シリアルATAやCE−ATAのバスであってもよい。また第2〜第Kのインターフェースは、USB、IEEE1394、SD(登録商標)以外のインターフェースであってもよく、例えばデータの受信及び送信の少なくとも一方を行う物理層回路を含む様々なインターフェースを採用できる。
ATABUS1、ATABUS2 ATAバス、
10 USB機器、20 電子機器、30 メインCPU、
32 ATAのホスト側I/F、40、41 HDD、
50 データ転送制御装置、60 ATAのデバイス側I/F、
62 レジスタ、70、71 ATAのホスト側I/F、
80 USBI/F、90 SD/MMC/CE−ATAホスト側I/F、
100 転送コントローラ、102 データバッファ、
104 ポートセレクタ、110 スイッチング回路、
120 処理部、130 イベント通知部
10 USB機器、20 電子機器、30 メインCPU、
32 ATAのホスト側I/F、40、41 HDD、
50 データ転送制御装置、60 ATAのデバイス側I/F、
62 レジスタ、70、71 ATAのホスト側I/F、
80 USBI/F、90 SD/MMC/CE−ATAホスト側I/F、
100 転送コントローラ、102 データバッファ、
104 ポートセレクタ、110 スイッチング回路、
120 処理部、130 イベント通知部
Claims (18)
- 通信の主導権を有するホスト側回路との間で第1のバスを介してデータ転送を行うデバイス側の第1のインタフェースを含み、
前記ホスト側回路に対してイベントの発生を通知することを特徴とするコントローラ。 - 請求項1において、
前記デバイス側の第1のインタフェースが、
前記ホスト側回路にデータを提供するために前記第1のバスの規格又は仕様において規定されており、前記第1のバスを介して前記ホスト側回路が読み出し可能なレジスタを含み、
前記ホスト側回路に対してイベントの発生を通知するデータ及び/又はイベントの内容に関するデータを前記レジスタに設定することを特徴とするコントローラ。 - 請求項2において、
前記レジスタが、
前記ホスト側回路がコマンドを書き込むこと及び前記コントローラがステータスを返答することに共用可能なレジスタであることを特徴とするコントローラ。 - 請求項1において、
前記ホスト側回路に対してイベントの発生を通知する信号を前記第1のバスとは別に設けられた信号線を介して出力するためのイベント通知部を更に含む、コントローラ。 - 請求項4において、
前記デバイス側の第1のインタフェースが、
前記ホスト側回路にデータを提供するために前記第1のバスの規格又は仕様において規定されており、前記第1のバスを介して前記ホスト側回路が読み出し可能なレジスタを含み、
イベントの内容に関するデータを前記レジスタに設定することを特徴とするコントローラ。 - 請求項2、3又は5のいずれかにおいて、
前記規格又は仕様において規定されていないイベントが発生した場合に、前記ホスト側回路に対してイベントの発生を通知することを特徴とするコントローラ。 - 請求項2、3、5又は6のいずれかにおいて、
前記規格がATA/ATAPI規格であり、
前記レジスタがATA/ATAPI規格で規定されているタスクレジスタであり、
前記デバイス側の第1のインタフェースが、
前記タスクレジスタの中のATA/ATAPI規格で使用されていないビットをアクティブな状態に設定することにより、前記ホスト側回路に対してイベントの発生を通知することを特徴とするコントローラ。 - 請求項7において、
ベンダによって定義されたイベント通知読み込みコマンドが前記タスクレジスタに書き込まれた場合に、前記イベントの内容に関するデータを前記タスクレジスタに設定することを特徴とするコントローラ。 - 請求項1乃至8のいずれかにおいて、
第2のバスを介してデータ転送を行う第2のインタフェースと、
前記デバイス側の第1のインタフェース、前記第2のインタフェースの間でのデータ転送を制御する転送コントローラと、
を更に含む、コントローラ。 - 請求項9において、
前記第2のインターフェースに関して発生したイベントを前記ホスト側回路に対して通知することを特徴とするコントローラ。 - 請求項9又は10において、
前記第2のバスを介したデータ転送のプロトコル制御処理を行う処理部を更に含むことを特徴とするコントローラ。 - 請求項9乃至11のいずれかにおいて、
前記転送コントローラは、
前記デバイス側の第1のインターフェースを介してリードされたデータを、前記第2のインターフェースに転送し、
前記第2のインターフェースは、
転送されたデータを前記第2のバスを介して前記第2のバスに接続されるホスト又はデバイスに送信することを特徴とするコントローラ。 - 請求項9乃至12のいずれかにおいて、
前記第2のインターフェースは、
シリアルバスを介してデータの受信及び送信の少なくとも一方を行う物理層回路を含むことを特徴とするコントローラ。 - 請求項9乃至13のいずれかにおいて、
前記第2のバスはUSBであり、前記第2のインターフェースはUSBインターフェースであることを特徴とするコントローラ。 - 請求項8において、
第2〜第K(K≧3)のバスを介してデータ転送を行う第2〜第Kのインターフェースを含み、
前記転送コントローラが、
前記デバイス側の第1のインタフェース、前記第2〜第Kのインタフェースの間でのデータ転送を制御し、
前記イベントの内容に関するデータが、
前記第2〜第Kのインタフェースのいずれにおいてイベントが発生したかを表すデータを含むことを特徴とするコントローラ。 - 請求項1乃至15のいずれかに記載のコントローラと、
前記第1のバスを介して前記コントローラに接続される前記ホスト側回路と、
を含むことを特徴とする電子機器。 - 請求項2又は3のいずれかに記載のコントローラと、
前記第1のバスを介して前記コントローラに接続される前記ホスト側回路と、
を含む電子機器において前記ホスト側回路が実行する方法であって、
前記レジスタをポーリングすることにより、前記コントローラから前記イベントの発生を通知するデータ及び/又は前記イベントの内容に関するデータを受けることを特徴とする電子機器の制御方法。 - 請求項8又は15に記載のコントローラと、
前記第1のバスを介して前記コントローラに接続される前記ホスト側回路と、
を含む電子機器において前記ホスト側回路が実行する方法であって、
前記コントローラからイベントの発生の通知を受けた場合に、前記イベント通知読み込みコマンドを前記タスクレジスタに書き込み、前記イベント通知読み込みコマンドへの応答として前記タスクレジスタに設定された前記イベントの内容に関するデータを読み出すことを特徴とする電子機器の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007190406A JP2009026165A (ja) | 2007-07-23 | 2007-07-23 | コントローラ、電子機器及び電子機器の制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007190406A JP2009026165A (ja) | 2007-07-23 | 2007-07-23 | コントローラ、電子機器及び電子機器の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009026165A true JP2009026165A (ja) | 2009-02-05 |
Family
ID=40397899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007190406A Withdrawn JP2009026165A (ja) | 2007-07-23 | 2007-07-23 | コントローラ、電子機器及び電子機器の制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009026165A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235421B2 (en) | 2012-03-30 | 2016-01-12 | Brother Kogyo Kabushiki Kaisha | Systems, methods, and non-transitory, computer-readable media for performing image processing using controllers that perform distinct functions |
JP2016158327A (ja) * | 2015-02-23 | 2016-09-01 | ローム株式会社 | 電力供給装置、acアダプタ、acチャージャ、電子機器および電力供給システム |
-
2007
- 2007-07-23 JP JP2007190406A patent/JP2009026165A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235421B2 (en) | 2012-03-30 | 2016-01-12 | Brother Kogyo Kabushiki Kaisha | Systems, methods, and non-transitory, computer-readable media for performing image processing using controllers that perform distinct functions |
JP2016158327A (ja) * | 2015-02-23 | 2016-09-01 | ローム株式会社 | 電力供給装置、acアダプタ、acチャージャ、電子機器および電力供給システム |
WO2016136387A1 (ja) * | 2015-02-23 | 2016-09-01 | ローム株式会社 | 電力供給装置、acアダプタ、acチャージャ、電子機器および電力供給システム |
US10536080B2 (en) | 2015-02-23 | 2020-01-14 | Rohm Co., Ltd. | Power delivery device, AC adapter, AC charger, electronic apparatus and power delivery system, each capable of controlling output voltage value and available output current value |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423169B (zh) | 用于测试高速外围设备互连设备的方法和系统 | |
JP4799417B2 (ja) | ホストコントローラ | |
US7058748B1 (en) | ATA device control via a packet-based interface | |
US7272676B2 (en) | Data transmission controller that restarts data transmission when reconstruction is completed | |
US7069350B2 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
TW556090B (en) | Data transmission control device, electronic machine, and control method for data transmission | |
US7739419B2 (en) | Data transfer control device and electronic instrument | |
US7225288B2 (en) | Extended host controller test mode support for use with full-speed USB devices | |
US20100023669A1 (en) | Host controller disposed in multi-function card reader | |
EP3382567B1 (en) | Multiple storage devices implemented using a common connector | |
JP4434218B2 (ja) | データ転送制御装置及び電子機器 | |
JP4404023B2 (ja) | データ転送制御装置及び電子機器 | |
US7469304B2 (en) | Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation | |
US20110072168A1 (en) | Data transfer system with different operating modes | |
JP2009048444A (ja) | Usbデバイスの制御方法、コントローラ及び電子機器 | |
CN112988637A (zh) | 促进与i2c的向后兼容性的i3c集线器 | |
JP4442523B2 (ja) | データ転送制御装置及び電子機器 | |
JP2009026165A (ja) | コントローラ、電子機器及び電子機器の制御方法 | |
US20050005039A1 (en) | Data transfer control device, electronic instrument, and data transfer control method | |
JP3714420B2 (ja) | データ転送制御装置、電子機器、プログラム及び電子機器の製造方法 | |
JP4337783B2 (ja) | データ転送制御装置及び電子機器 | |
JP2009037479A (ja) | データ転送制御装置及び電子機器 | |
JP5287112B2 (ja) | データ転送制御装置及び電子機器 | |
JP2008293154A (ja) | データ転送制御装置及び電子機器 | |
JP2019128696A (ja) | 通信支援装置及び通信支援プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20101005 |