(57)【要約】【課題】小規模の回路でパラレルＡＴＡとシリアルＡＴＡのブリッジ機能を実現できるデータ転送制御装置、電子機器を提供すること。【解決手段】データ転送制御装置は、ＰＡＴＡバスに接続されるＰＡＴＡＩ／Ｆ１０と、ＳＡＴＡバスに接続されるＳＡＴＡＩ／Ｆ５０と、転送シーケンス制御を行うシーケンスコントローラ３０を含む。ＳＡＴＡＩ／Ｆ５０は、ホスト２がＡＴＡコマンドを発行した場合に、発行されたＡＴＡコマンドを含むレジスタＦＩＳをＳＡＴＡバスを介してデバイス４に送信する。シーケンスコントローラ３０は、レジスタＦＩＳに対応するＦＩＳをＳＡＴＡＩ／Ｆ５０がデバイス４から受信した場合に、ホスト２から発行されたＡＴＡコマンドの転送シーケンス制御として、受信したＦＩＳの種類に応じた転送シーケンス制御を行う。【選択図】図２
2008204048.tif 000002
【特許請求の範囲】
【請求項１】
パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を有するデータ転送制御装置であって、
パラレルＡＴＡバスに接続され、ホストとの間のインターフェースを行うパラレルＡＴＡインターフェースと、
シリアルＡＴＡバスに接続され、シリアルＡＴＡのデバイスとの間のインターフェースを行うシリアルＡＴＡインターフェースと、
転送シーケンス制御を行うシーケンスコントローラを含み、
前記シリアルＡＴＡインターフェースは、
前記パラレルＡＴＡバスを介して前記ホストがＡＴＡコマンドを発行した場合に、発行された前記ＡＴＡコマンドを含むレジスタＦＩＳを前記シリアルＡＴＡバスを介して前記デバイスに送信し、
前記シーケンスコントローラは、
前記レジスタＦＩＳに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合に、前記ホストから発行された前記ＡＴＡコマンドの転送シーケンス制御として、受信したＦＩＳの種類に応じた転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記シーケンスコントローラは、
前記デバイスから受信したＦＩＳがＰＩＯセットアップＦＩＳであり、ＰＩＯセットアップＦＩＳにより指定される転送方向がリード方向である場合には、ＰＩＯリードの転送シーケンス制御を行い、ＰＩＯセットアップＦＩＳにより指定される転送方向がライト方向である場合には、ＰＩＯライトの転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記シーケンスコントローラは、
受信したＰＩＯセットアップＦＩＳのパラメータに基づいて、転送方向、転送種別を設定することを特徴とするデータ転送制御装置。
【請求項４】
請求項２又は３において、
前記ホスト、前記デバイス間で転送されるデータのバッファリングを行うデータバッファを含み、
前記パラレルＡＴＡインターフェースは、タスクファイル・レジスタを有し、
前記シリアルＡＴＡインターフェースは、シャドウ・タスクファイル・レジスタを有し、
前記シーケンスコントローラは、
前記データバッファに対して少なくとも１セクタ分のデータが蓄積された場合に、前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタに転送し、前記タスクファイル・レジスタのステータスレジスタのビジービットをクリアすることを特徴とするデータ転送制御装置。
【請求項５】
請求項４において、
前記シーケンスコントローラは、
前記シリアルＡＴＡインターフェース、前記パラレルＡＴＡインターフェースでのデータ転送が完了した後に、受信したＰＩＯセットアップＦＩＳのエンドステータスを前記タスクファイル・レジスタのステータスレジスタに設定することを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記シーケンスコントローラは、
前記デバイスから受信したＦＩＳがデータＦＩＳである場合には、ＤＭＡリードの転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記シーケンスコントローラは、
前記デバイスから受信したＦＩＳがＤＭＡアクティベートＦＩＳである場合には、ＤＭＡライトの転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記シーケンスコントローラは、
前記デバイスから受信したＦＩＳが、デバイスからホストへのレジスタＦＩＳである場合には、ノーデータコマンドであると判断することを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記シーケンスコントローラは、
受信したＦＩＳの種類に応じた前記転送シーケンス制御として、総データ転送数を管理しないフリーラン転送を行うことを特徴とするデータ転送制御装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記シリアルＡＴＡインターフェースは、
前記デバイスから受信したＦＩＳをデコードし、デコード結果に基づいて、ＦＩＳの種類を前記シーケンスコントローラに知らせるための割り込み信号を生成して出力し、
前記シーケンスコントローラは、
前記シリアルＡＴＡインターフェースからの前記割り込み信号に基づいてＦＩＳの種類を判別して、転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記シーケンスコントローラは、
転送開始信号、転送停止信号、転送方向設定信号を前記パラレルＡＴＡインターフェース、前記シリアルＡＴＡインターフェースに対して出力することで、転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項１２】
請求項１１において、
前記ホスト、前記デバイス間で転送されるデータのバッファリングを行うデータバッファを含み、
前記シーケンスコントローラは、
転送方向設定信号を前記データバッファに対して出力することで、転送シーケンス制御を行うことを特徴とするデータ転送制御装置。
【請求項１３】
請求項１乃至１２のいずれかに記載のデータ転送制御装置と、
前記データ転送制御装置に接続される前記ホストと、
前記データ転送制御装置に接続される前記デバイスと、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置及び電子機器に関する。
【背景技術】
【０００２】
近年、ストレージデバイス等のシリアルインターフェースとして、シリアルＡＴＡ（Serial AT Attachment）と呼ばれる規格が脚光を浴びている。このシリアルＡＴＡは、パラレルＡＴＡ（ＩＤＥ）との間のソフトウェアレベルでの互換性を備えた規格である。そして最初の規格であるシリアルＡＴＡ Iのデータ転送速度は１．５Ｇｂｐｓであったが、次の規格であるシリアルＡＴＡ II  Ｇｅｎ２ではデータ転送速度が３．０Ｇｂｐｓに高速化している。このシリアルＡＴＡを用いれば、電子機器が内蔵する回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
【０００３】
ところが、電子機器のホスト（ホストデバイス、ホスト基板）は、パラレルＡＴＡ（以下、適宜、ＰＡＴＡと呼ぶ）のインターフェース（以下、適宜、Ｉ／Ｆと呼ぶ）は備えているが、シリアルＡＴＡ（以下、適宜、ＳＡＴＡと呼ぶ）のＩ／Ｆについては備えていないものが多い。従って、このようＰＡＴＡＩ／Ｆのみを備えた既存のホストに対しては、ＳＡＴＡのデバイスを接続できないという問題がある。
【０００４】
またＨＤＤ（ハードディスクドライブ）などのデバイスは、その大部分が、ＰＡＴＡＩ／ＦからＳＡＴＡＩ／Ｆに置き換わっており、ＰＡＴＡＩ／Ｆを備えるＨＤＤの入手が困難になっている。このため、ＰＡＴＡＩ／Ｆのみを備えるホストに対して接続可能なＨＤＤの種類が限定されてしまい、電子機器の内蔵ＨＤＤの大容量化等が妨げられるという問題がある。
【０００５】
なお特許文献１、２には、ＳＡＴＡとＰＡＴＡのブリッジＩＣが開示されている。しかしながらこの特許文献１、２は、ブリッジＩＣを使用した回路基板などに関する発明であり、ブリッジＩＣの具体的な構成に関する発明ではない。
【０００６】
また特許文献３には、ＳＡＴＡブリッジを内蔵するＨＤＤが開示されている。しかしながら、この特許文献３のＳＡＴＡブリッジは、ＳＡＴＡ側にホストが接続されＰＡＴＡ側にデバイスが接続されるブリッジであり、ＰＡＴＡ側にホストが接続されＳＡＴＡ側にデバイスが接続されるブリッジに関する発明ではない。また特許文献３は、ファームウェアによるプロトコル制御に特徴がある発明であり、回路構成に特徴がある発明ではない。
【特許文献１】特開２００５−３４６１２３号公報
【特許文献２】特開２００６−１２１６２１号公報
【特許文献３】特開２００６−１８４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、小規模の回路でパラレルＡＴＡとシリアルＡＴＡのブリッジ機能を実現できるデータ転送制御装置及びこれを含む電子機器を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、パラレルＡＴＡとシリアルＡＴＡのバスブリッジ機能を有するデータ転送制御装置であって、パラレルＡＴＡバスに接続され、ホストとの間のインターフェースを行うパラレルＡＴＡインターフェースと、シリアルＡＴＡバスに接続され、シリアルＡＴＡのデバイスとの間のインターフェースを行うシリアルＡＴＡインターフェースと、転送シーケンス制御を行うシーケンスコントローラを含み、前記シリアルＡＴＡインターフェースは、前記パラレルＡＴＡバスを介して前記ホストがＡＴＡコマンドを発行した場合に、発行された前記ＡＴＡコマンドを含むレジスタＦＩＳを前記シリアルＡＴＡバスを介して前記デバイスに送信し、前記シーケンスコントローラは、前記レジスタＦＩＳに対応するＦＩＳを前記シリアルＡＴＡインターフェースが前記デバイスから受信した場合に、前記ホストから発行された前記ＡＴＡコマンドの転送シーケンス制御として、受信したＦＩＳの種類に応じた転送シーケンス制御を行うデータ転送制御装置に関係する。
【０００９】
本発明では、ホストがＡＴＡコマンドを発行すると、そのＡＴＡコマンドを含むレジスタＦＩＳがデバイスに送信される。そしてデバイスが送信したＦＩＳを受信すると、受信したＦＩＳの種類に応じた転送シーケンス制御が行われる。このようにすれば、データ転送制御装置は、ホストが発行したＡＴＡコマンドの詳細な内容をデコードすることなく、ＡＴＡコマンドを含むレジスタＦＩＳをそのままデバイスに送信できる。そしてレジスタＦＩＳに対してデバイスが返却して来たＦＩＳの種類によって、転送シーケンスが制御される。従って、ＡＴＡコマンドのデコーダ回路を節約でき、データ転送制御装置の小規模化を図れる。また、新規コマンドの追加が発生しても、これに容易に対応できるようになる。
【００１０】
また本発明では、前記シーケンスコントローラは、前記デバイスから受信したＦＩＳがＰＩＯセットアップＦＩＳであり、ＰＩＯセットアップＦＩＳにより指定される転送方向がリード方向である場合には、ＰＩＯリードの転送シーケンス制御を行い、ＰＩＯセットアップＦＩＳにより指定される転送方向がライト方向である場合には、ＰＩＯライトの転送シーケンス制御を行ってもよい。
【００１１】
このようにすれば、受信したＦＩＳがＰＩＯセットアップか否かや、ＰＩＯセットアップＦＩＳで指定される転送方向を判断するだけで、ＰＩＯリードやＰＩＯライトの転送シーケンスを制御できるようになる。
【００１２】
また本発明では、前記シーケンスコントローラは、受信したＰＩＯセットアップＦＩＳのパラメータに基づいて、転送方向、転送種別を設定してもよい。
【００１３】
このようにすれば、転送方向、転送種別を設定した適正な転送シーケンス制御を実現できる。
【００１４】
また本発明では、前記ホスト、前記デバイス間で転送されるデータのバッファリングを行うデータバッファを含み、前記パラレルＡＴＡインターフェースは、タスクファイル・レジスタを有し、前記シリアルＡＴＡインターフェースは、シャドウ・タスクファイル・レジスタを有し、前記シーケンスコントローラは、前記データバッファに対して少なくとも１セクタ分のデータが蓄積された場合に、前記シャドウ・タスクファイル・レジスタのレジスタ値を前記タスクファイル・レジスタに転送し、前記タスクファイル・レジスタのステータスレジスタのビジービットをクリアしてもよい。
【００１５】
このようにすれば、データバッファに少なくとも１セクタ分のデータが蓄積された後に、ビジービットがクリアされるため、ホストによる適正なデータリード動作を保証できる。
【００１６】
また本発明では、前記シーケンスコントローラは、前記シリアルＡＴＡインターフェース、前記パラレルＡＴＡインターフェースでのデータ転送が完了した後に、受信したＰＩＯセットアップＦＩＳのエンドステータスを前記タスクファイル・レジスタのステータスレジスタに設定してもよい。
【００１７】
このようにすれば、データ転送が完了していないのにホストによるデータのリード動作、ライト動作が停止してしまい、データ転送装置にデータが残ってしまうなどの事態を防止できる。
【００１８】
また本発明では、前記シーケンスコントローラは、前記デバイスから受信したＦＩＳがデータＦＩＳである場合には、ＤＭＡリードの転送シーケンス制御を行ってもよい。
【００１９】
このようにすれば、受信したＦＩＳがデータＦＩＳか否かを判断するだけで、ＤＭＡリードの転送シーケンスを制御できるようになる。
【００２０】
また本発明では、前記シーケンスコントローラは、前記デバイスから受信したＦＩＳがＤＭＡアクティベートＦＩＳである場合には、ＤＭＡライトの転送シーケンス制御を行ってもよい。
【００２１】
このようにすれば、受信したＦＩＳがＤＭＡアクティベートＦＩＳか否かを判断するだけで、ＤＭＡライトの転送シーケンスを制御できるようになる。
【００２２】
また本発明では、前記シーケンスコントローラは、前記デバイスから受信したＦＩＳが、デバイスからホストへのレジスタＦＩＳである場合には、ノーデータコマンドであると判断してもよい。
【００２３】
また本発明では、前記シーケンスコントローラは、受信したＦＩＳの種類に応じた前記転送シーケンス制御として、総データ転送数を管理しないフリーラン転送を行ってもよい。
【００２４】
このようにフリーラン転送を行えば、総データ転送数のカウント回路が不要になるため、回路の小規模化を図れる。
【００２５】
また本発明では、前記シリアルＡＴＡインターフェースは、前記デバイスから受信したＦＩＳをデコードし、デコード結果に基づいて、ＦＩＳの種類を前記シーケンスコントローラに知らせるための割り込み信号を生成して出力し、前記シーケンスコントローラは、前記シリアルＡＴＡインターフェースからの前記割り込み信号に基づいてＦＩＳの種類を判別して、転送シーケンス制御を行ってもよい。
【００２６】
このようにすれば、シリアルＡＴＡインターフェースに元々必要なＦＩＳのデコード回路を有効活用して、ＦＩＳの種類を判別できるため、回路の小規模化を図れる。
【００２７】
また本発明では、前記シーケンスコントローラは、転送開始信号、転送停止信号、転送方向設定信号を前記パラレルＡＴＡインターフェース、前記シリアルＡＴＡインターフェースに対して出力することで、転送シーケンス制御を行ってもよい。
【００２８】
このようにすれば、パラレルＡＴＡインターフェースやシリアルＡＴＡインターフェースは、転送開始タイミングや転送停止タイミングや転送方向を認識することができ、適正なデータ転送を実現できる。
【００２９】
また本発明では、前記ホスト、前記デバイス間で転送されるデータのバッファリングを行うデータバッファを含み、前記シーケンスコントローラは、転送方向設定信号を前記データバッファに対して出力することで、転送シーケンス制御を行ってもよい。
【００３０】
また本発明は、上記のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置に接続される前記ホストと、前記データ転送制御装置に接続される前記デバイスとを含む電子機器に関係する。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３２】
１．データ転送制御装置の構成
図１に本実施形態のデータ転送制御装置の構成例を示す。このデータ転送制御装置はＰＡＴＡ（Parallel AT Attachment）とＳＡＴＡ（Serial AT Attachment）のバスブリッジ機能を有する。なお本実施形態のデータ転送制御装置は図１の構成に限定されず、その構成要素の一部（例えばデータバッファ）を省略したり、他の構成要素（例えば外部Ｉ／Ｆ回路、ＣＰＵ、タイマ）を追加するなどの種々の変形実施が可能である。
【００３３】
ＰＡＴＡＩ／Ｆ１０（パラレルＡＴＡインターフェース）は、ＰＡＴＡバス（ＡＴＡバス、ＩＤＥバス）に接続され、ホスト２（ホストデバイス）との間のインターフェースを行う。具体的にはＰＡＴＡＩ／Ｆ１０は、ホスト２が有するホスト側のＰＡＴＡＩ／ＦにＰＡＴＡバスを介して接続される。そしてＡＴＡで規格化された後述する各種信号によりやり取りを行い、ＰＡＴＡ（ＩＤＥ）のデータ転送を実現する。またＰＡＴＡＩ／Ｆ１０は、データバッファ７０を介したＳＡＴＡＩ／Ｆ５０との間のデータ転送制御も行う。このＰＡＴＡＩ／Ｆ１０は、ＰＡＴＡとＳＡＴＡのブリッジ用に擬似的（仮想的）に設けられたタスクファイル・レジスタを含むことができる。
【００３４】
なおホスト２としては、例えばＣＰＵ、ＭＰＵ、ＤＳＰなどのプロセッサや、専用制御ＩＣや、これらのプロセッサ又は専用制御ＩＣが実装されたホスト回路基板などが考えられる。またデバイス４としては、ハードディスクドライブ（ＨＤＤ）、光ディスクドライブ（ＣＤ、ＤＶＤ）、磁気ディスクドライブなどのＳＡＴＡＩ／Ｆを備える各種デバイスが考えられる。
【００３５】
ＳＡＴＡＩ／Ｆ５０（シリアルＡＴＡインターフェース）は、ＳＡＴＡバス（高速シリアルバス）に接続され、ＳＡＴＡのデバイス４との間のインターフェースを行う。具体的にはＳＡＴＡＩ／Ｆ５０は、デバイス４が有するデバイス側のＳＡＴＡＩ／Ｆに接続され、小振幅の差動信号によりやり取りを行い、ＳＡＴＡのデータ転送を実現する。またＳＡＴＡＩ／Ｆ５０は、データバッファ７０を介したＰＡＴＡＩ／Ｆ１０との間のデータ転送制御も行う。このＳＡＴＡＩ／Ｆ５０は、ＳＡＴＡ規格のシャドウ・タスクファイル・レジスタを含むことができる。
【００３６】
シーケンスコントローラ３０は転送のシーケンス制御を行う。具体的には、ＰＡＴＡとＳＡＴＡのブリッジ機能を実現するために、ＰＡＴＡＩ／Ｆ１０、ＳＡＴＡＩ／Ｆ５０、データバッファ７０の間のデータ転送のシーケンス制御を行ったり、レジスタ値の転送シーケンス制御を行う。
【００３７】
データバッファ７０は、ホスト２（ＰＡＴＡＩ／Ｆ）、デバイス４（ＳＡＴＡＩ／Ｆ）の間で転送されるデータのバッファリングを行う。そしてＰＡＴＡ側とＳＡＴＡ側のクロック周波数の差を吸収するための緩衝用のバッファ（ＦＩＦＯ）として機能する。即ちＰＡＴＡ側のクロック周波数が例えば５０ＭＨｚ（或いは６０ＭＨｚ）で、ＳＡＴＡ側のクロック周波数が例えば３７．５ＭＨｚである場合に、データバッファ７０を設けることでこのクロック周波数の差を吸収できる。このデータバッファ７０は、例えば５０ＭＨｚ（第１の周波数）でデータが入出力されるＰＡＴＡＩ／Ｆ１０側の第１のポートと、例えば３７．５ＭＨｚ（第２の周波数）でデータが入出力されるＳＡＴＡＩ／Ｆ５０側の第２のポートとを有するデュアルポートのメモリ（ＲＡＭ）などにより実現できる。
【００３８】
図１の構成によれば、ホスト２がＰＡＴＡＩ／Ｆしか備えていない場合にも、ＳＡＴＡＩ／Ｆを有するデバイス４をデータ転送制御装置を介してホスト２に接続できる。従って、ホスト２のファームウェア、ソフトウェアとして、既存のＰＡＴＡ（ＩＤＥ）用のファームウェア、ソフトウェアを使用できる。これにより電子機器の開発期間の短縮化や低コスト化を図れる。またデバイス４として、市場供給量が多い大容量のＨＤＤをホスト２に接続できるようになり、電子機器の内蔵ＨＤＤの大容量化を図れる。
【００３９】
またホスト２が搭載される回路基板とデバイス４が搭載される回路基板の間を、シリアルバスであるＳＡＴＡバスで接続できるため、回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
【００４０】
２．受信ＦＩＳの種類による転送シーケンス制御
図１に示すようなブリッジ機能を有するデータ転送制御装置では、ホスト２が発行したＡＴＡコマンドに応じた転送シーケンス制御を行う必要がある。そして転送シーケンス制御の内容をデータ転送制御装置が知るためには、ＡＴＡコマンドをデコードする必要があり、そのために、コマンドデコーダやパラメータテーブルが必要になる。即ちホスト２が発行したコマンドをデコードし、転送方向（リード、ライト）や転送種別（ＰＩＯ、ＤＭＡ）を判別し、内部転送シーケンスを決定する。
【００４１】
しかしながら、このようなコマンドデコーダを設けると、データ転送制御装置のロジック回路の大規模化やメモリ容量の増加に繋がる。またＡＴＡコマンドのデコードを行うためには、デコードのためのコマンドテーブルを持たなければならないが、データ転送制御装置の開発終了後に、規格において新規コマンドの追加が発生した場合には、データ転送制御装置の回路修正を行わない限り、新規コマンドをサポートできなくなる。例えばＡＴＡＰＩでは、ブルーレイディスクなどの新しい規格の光ディスクドライブが追加されると、パラメータテーブルの変更が必要になる。従って、開発が終了している既存のデータ転送制御装置を使用できず、パラメータテーブル（テーブルメモリ）を変更するための回路修正が必要になり、余分な開発期間や開発コストがかかってしまう。更にベンダーにユニークな特殊コマンドに対しても、対応することが難しい。
【００４２】
この場合にデータ転送制御装置にＣＰＵ（処理部）を内蔵させ、パラメータテーブルの変更をファームウェア等の書き換えにより実現すれば、新規コマンドが増えたり、コマンドの内容が変更された場合にも、これに対応できる。
【００４３】
しかしながら、データ転送制御装置にＣＰＵを内蔵させると、ＣＰＵ上で動作するファームウェアの開発や、ＣＰＵの動作確認のためのデバッグツールの開発などが必要になってしまい、開発期間の長期化や高コスト化を招く。
【００４４】
このような問題を解決するための本実施形態では、ホストが発行したコマンドをデコードすることなくデバイスに転送し、デバイスから返送されてきたＦＩＳ(Frame Information Structure)の情報に基づいて、発行されたコマンドについての転送シーケンスを制御する。即ちＡＴＡコマンドのデコードを、データ転送制御装置が行うのではなく、ＳＡＴＡデバイスに行わせる。そしてデータ転送制御装置は、ＡＴＡコマンドをデコードせずに（一部をデコードしてもよい）、ＳＡＴＡデバイスにそのまま転送し、ＳＡＴＡデバイスの反応を観察することで、自身の転送シーケンスを決定して実行する。
【００４５】
具体的には図２（Ａ）に示すようにホスト２がＰＡＴＡバスを介してＡＴＡコマンド（転送コマンド）を発行すると、ＰＡＴＡＩ／Ｆ１０がこのコマンドを受ける。そしてＳＡＴＡＩ／Ｆ５０は、発行されたＡＴＡコマンドを含むレジスタＦＩＳ（Host to Device）を作成して、ＳＡＴＡバスを介してデバイス４に送信する。
【００４６】
デバイス４側のＳＡＴＡＩ／Ｆ（図示せず）は、レジスタＦＩＳを受信すると、デコード処理を行い、レジスタＦＩＳ（ＡＴＡコマンド）に対応するＦＩＳを送信し、このＦＩＳをＳＡＴＡＩ／Ｆ５０が受信する。
【００４７】
シーケンスコントローラ３０（転送シーケンサ、ブリッジシーケンサ）は、レジスタＦＩＳに対応するＦＩＳをＳＡＴＡＩ／Ｆ５０がデバイス４から受信すると、ホスト２から発行されたＡＴＡコマンドの転送シーケンス制御として、受信したＦＩＳの種類に応じた転送シーケンス制御を行う。
【００４８】
より具体的には図２（Ｂ）ではホスト２はＰＩＯリードのＡＴＡコマンドを発行している。この場合にはデバイス４は、転送方向がリード方向であるＰＩＯセットアップＦＩＳを送信する。即ちＰＩＯのデータ転送の直前にデバイス４がホスト２に転送するＦＩＳであるＰＩＯセットアップＦＩＳを、デバイス４が送信し、ＳＡＴＡＩ／Ｆ５０が受信する。このＰＩＯセットアップＦＩＳは、データ転送の初期ステータス（Status）及びステータス終了値（E_Status）を有する。
【００４９】
このように受信ＦＩＳがＰＩＯセットアップＦＩＳであり、ＰＩＯセットアップＦＩＳにより指定される転送方向がリード方向である場合には、シーケンスコントローラ３０は、ＰＩＯリードの転送シーケンス制御を行う。即ちシーケンスコントローラ３０は、ＰＩＯリードの転送シーケンスのための制御信号（転送方向設定信号、転送開始信号、転送停止信号等）をＳＡＴＡＩ／Ｆ５０、データバッファ７０、ＰＡＴＡＩ／Ｆ１０に出力する。これにより、デバイス４から読み出されたデータが、ＳＡＴＡＩ／Ｆ５０、データバッファ７０、ＰＡＴＡＩ／Ｆ１０を介してホスト２に転送される。
【００５０】
図２（Ｃ）では、ホスト２はＰＩＯライトのＡＴＡコマンドを発行している。この場合にはデバイス４は、転送方向がライト方向であるＰＩＯセットアップＦＩＳを送信し、ＳＡＴＡＩ／Ｆ５０が受信する。
【００５１】
このように受信ＦＩＳがＰＩＯセットアップＦＩＳであり、ＰＩＯセットアップＦＩＳにより指定される転送方向がライト方向である場合には、シーケンスコントローラ３０は、ＰＩＯライトの転送シーケンス制御を行う。即ちシーケンスコントローラ３０は、ＰＩＯライトの転送シーケンスのための制御信号をＰＡＴＡＩ／Ｆ１０、データバッファ７０、ＳＡＴＡＩ／Ｆ５０に出力する。これにより、ホスト２からのデータが、ＰＡＴＡＩ／Ｆ１０、データバッファ７０、ＳＡＴＡＩ／Ｆ５０を介してデバイス４に転送される。
【００５２】
図３（Ａ）では、ホスト２はＤＭＡリードのＡＴＡコマンドを発行している。この場合にはデバイス４はデータＦＩＳを送信する。即ちデバイス４はデータ転送のためのＦＩＳであるデータＦＩＳを送信し、ＳＡＴＡＩ／Ｆ５０が受信する。
【００５３】
このように受信ＦＩＳがデータＦＩＳである場合には、シーケンスコントローラ３０は、ＤＭＡリードの転送シーケンス制御を行う。これにより、デバイス４から読み出されたデータが、ＳＡＴＡＩ／Ｆ５０、データバッファ７０、ＰＡＴＡＩ／Ｆ１０を介してホスト２にＤＭＡ転送される。
【００５４】
図３（Ｂ）では、ホスト２はＤＭＡライトのＡＴＡコマンドを発行している。この場合にはデバイス４はＤＭＡアクティベートＦＩＳを送信する。即ちＤＭＡの実行準備が出来ていることをホスト２に知らせるためのＤＭＡアクティベートＦＩＳを、デバイス４が送信し、ＳＡＴＡＩ／Ｆ５０が受信する。
【００５５】
このように受信ＦＩＳがＤＭＡアクティベートＦＩＳである場合には、シーケンスコントローラ３０は、ＤＭＡライトの転送シーケンス制御を行う。これにより、ホスト２からのデータが、ＰＡＴＡＩ／Ｆ１０、データバッファ７０、ＳＡＴＡＩ／Ｆ５０を介してデバイス４にＤＭＡ転送される。
【００５６】
図３（Ｃ）では、ホスト２はノーデータコマンドのＡＴＡコマンドを発行している。この場合にはデバイス４はレジスタＦＩＳ（Device to Host）を送信し、ＳＡＴＡＩ／Ｆ５０が受信する。このように、ＡＴＡコマンドに対応する受信ＦＩＳが、デバイス４からホスト２へのレジスタＦＩＳである場合には、シーケンスコントローラ３０は、ホスト２から発行されたＡＴＡコマンドはノーデータコマンドであると判断する。そしてレジスタＦＩＳのレジスタ値を、ＳＡＴＡＩ／Ｆ５０のシャドウ・タスクファイル・レジスタからＰＡＴＡＩ／Ｆ１０のタスクファイル・レジスタに反映させる。
【００５７】
以上の本実施形態のデータ転送制御装置によれば、ホスト２が発行したＡＴＡコマンドをデコードしなくても、デバイス４からの受信ＦＩＳ情報に基づいて、発行されたＡＴＡコマンドの種別を判断して、そのＡＴＡコマンドに対応する転送シーケンス制御を実現できる。従って、コマンドデコーダの回路を節約でき、データ転送制御装置の小規模化を図れる。また、規格において新規コマンドの追加が発生しても、データ転送制御装置の回路修正を行うことなく、これに対応できる。またデータ転送制御装置にＣＰＵを内蔵させなくても済むため、ＣＰＵ上で動作するファームウェアの開発やデバッグツールの開発が不要になり、開発期間を短縮化でき、開発コストを低減できる。なおデータ転送制御装置にＡＴＡコマンドの一部をデコードする回路を設けたり、ＣＰＵ（処理部）を内蔵させる変形実施も可能である。
【００５８】
３．詳細な構成例
図４にデータ転送制御装置の詳細な構成例を示す。ＰＡＴＡＩ／Ｆ１０はタスクファイル・レジスタ（以下、適宜、ＴＦＲと呼ぶ）１２、転送コントローラ１４を含む。ここでＴＦＲ１２は、ＰＡＴＡとＳＡＴＡのバスブリッジ用に擬似的に設けられたレジスタである。このＴＦＲ１２を設けることで、ホスト２は、ＳＡＴＡのデバイス４を、あたかもＰＡＴＡのデバイスのように扱ってデータのリードやライトを行うことが可能になる。即ちホスト２は、既存のＰＡＴＡ用のファームウェアやソフトウェアを使用して、ＳＡＴＡのデバイス４を制御できるようになる。
【００５９】
転送コントローラ１４は、ＰＡＴＡ用の信号ＸＣＳ〜ＸＰＤＩＡＧを用いてＰＡＴＡ（ＩＤＥ）のインターフェースを実現したり、データ転送用の制御信号を用いて、データバッファ７０との間のデータ転送を制御する。
【００６０】
データバッファ７０は、メモリコントローラ７２、ＦＩＦＯメモリ（ＦＩＦＯＲＡＭ）７４を含む。メモリコントローラ７２は、ＦＩＦＯメモリ７４のデータの書き込み制御や読み出し制御を行う。またＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０との間で、例えばＲＥＱ信号やＡＣＫ信号などの制御信号を用いたデータ転送制御を行う。
【００６１】
ＳＡＴＡＩ／Ｆ５０は、シャドウ・タスクファイル・レジスタ（以下、適宜、ＳＦＲと呼ぶ）５２、トランスポートコントローラ１１０、リンクコントローラ１５０、物理層回路２００を含む。
【００６２】
トランスポートコントローラ１１０、リンクコントローラ１５０、物理層回路２００は、各々、ＳＡＴＡ規格のトランスポート層、リンク層、物理層の処理を行う回路である。
【００６３】
シャドウ・タスクファイル・レジスタ（ＳＦＲ）５２はＳＡＴＡで規格化されているレジスタである。即ちＳＡＴＡでは、従来のＰＡＴＡ（ＩＤＥ）との間でソフトウェアレベルでの互換性が維持されており、タスクファイル・レジスタが２つ存在することが特徴になっている。即ちホスト（ＨＢＡ）側のシャドウ・タスクファイル・レジスタ５２とデバイス側の本来のタスクファイル・レジスタ５である。
【００６４】
一方、ＰＡＴＡＩ／Ｆ１０に設けられたタスクファイル・レジスタ（ＴＦＲ）１２はＳＡＴＡで規格化されるレジスタではなく、ＰＡＴＡとＳＡＴＡのブリッジ用に設けられた擬似的なレジスタである。ホスト２は、レジスタ１２をＰＡＴＡのタスクファイル・レジスタとして認識してアクセスし、レジスタ値を書き込んだり、レジスタ値を読み出す。すると本実施形態のデータ転送制御装置が、タスクファイル・レジスタ１２のレジスタ値をシャドウ・タスクファイル・レジスタ５２に転送したり、シャドウ・タスクファイル・レジスタ５２のレジスタ値をタスクファイル・レジスタ１２に転送するなどの処理を行う。
【００６５】
このようにすれば、ホスト２が、ＰＡＴＡのタスクファイル・レジスタ１２にレジスタ値を書き込むと、そのレジスタ値がＳＡＴＡのシャドウ・タスクファイル・レジスタ５２に転送されて書き込まれ、ＳＡＴＡバスを介してＦＩＳによりデバイス４に転送されるようになる。またデバイス４からのＦＩＳによりシャドウ・タスクファイル・レジスタ５２に書き込まれたレジスタ値が、タスクファイル・レジスタ１２に転送されてホスト２に読み出されるようになる。従ってホスト２は、ＳＡＴＡのデバイス４を、あたかもＰＡＴＡのデバイスのように扱ってデータのリードやライトを行うことが可能になり、ＰＡＴＡとＳＡＴＡのブリッジ機能を効率良く実現できる。
【００６６】
なおタスクファイル・レジスタ（ＴＦＲ）１２とシャドウ・タスクファイル・レジスタ（ＳＦＲ）５２の間のレジスタ値の転送は次のような手法により実現できる。即ちＴＦＲ１２のレジスタ群のビット（全ビット）とＳＦＲ５２のレジスタ群のビット（全ビット）を、シーケンスコントローラ３０を介して信号線により接続しておく。そしてレジスタ値の転送を行う場合には、シーケンスコントローラ３０が転送トリガ信号を生成し、この転送トリガ信号に基づいて、ＴＦＲ１２のレジスタ値をＳＦＲ５２に転送したり、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送すればよい。
【００６７】
４．ＰＡＴＡＩ／Ｆ
次に、ＰＡＴＡＩ／Ｆ１０のデータ転送処理について、図４の構成及び図５（Ａ）〜図６（Ｂ）の信号波形を用いて説明する。
【００６８】
ＸＣＳ［１：０］は、ＰＡＴＡの各レジスタにアクセスするために使用するチップセレクト信号である。ＤＡ［２：０］は、データ又はデータポートにアクセスするためのアドレス信号である。ＤＭＡＲＱ、ＤＭＡＣＫは、ＤＭＡ転送に使用される信号である。データ転送の準備が整った時にデバイス側がＤＭＡＲＱをアクティブ（アサート）にし、これに応答して、ホスト側がＤＭＡＣＫをアクティブにする。
【００６９】
ＸＤＩＯＷは、レジスタ又はデータポートの書き込み時に使用するライト信号である。ＸＤＩＯＲは、レジスタ又はデータポートの読み出し時に使用するリード信号である。ＩＯＲＤＹは、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。
【００７０】
ＩＮＴＲＱは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このＩＮＴＲＱがアクティブになった後、ホスト側がデバイス側のＴＦＲ１２のステータスレジスタの内容を読むと、所定時間後にデバイス側はＩＮＴＲＱを非アクティブ（ネゲート）にする。このＩＮＴＲＱを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
【００７１】
図５（Ａ）、図５（Ｂ）は、ＰＩＯ（Programmed I/O）リード、ＰＩＯライトの信号波形例である。ＰＡＴＡのＴＦＲ１２のステータスレジスタのリードは図５（Ａ）のＰＩＯリードにより行い、コマンドレジスタへのライトは図５（Ｂ）のＰＩＯライトにより行う。例えばホスト２によるＡＴＡコマンドの発行は、ＰＩＯライトにより実現できる。
【００７２】
図６（Ａ）、図６（Ｂ）は、ＤＭＡリード、ＤＭＡライトの信号波形例である。データ転送の準備ができると、デバイス側（データ転送制御装置）が、ＤＭＡＲＱをアクティブにする。そして、それを受けて、ホスト側が、ＤＭＡＣＫをアクティブにして、ＤＭＡ転送を開始する。その後、ＸＤＩＯＲ（リード時）又はＸＤＩＯＷ（ライト時）を使用して、データＤＤ［１５：０］のＤＭＡ転送を行う。
【００７３】
５．ＳＡＴＡＩ／Ｆ
次にＳＡＴＡＩ／Ｆ５０のデータ転送処理について説明する。図７はＳＡＴＡの送信側のデータ転送処理の流れを示し、図８は受信側のデータ転送処理の流れを示している。
【００７４】
図７に示すように送信側のトランスポートコントローラ（トランスポート層）では、シャドウ・タスクファイル・レジスタに書き込まれたコマンドやデータポートに入力されたデータによりＦＩＳが生成される。ここでＦＩＳは、フレームのペイロード部であり、Ｄｗｏｒｄ（３２ビット）単位で構成される。またフレームは、ホストとデバイスの間で交換される情報ユニットであり、ＳＯＦ（Start Of Frame）プリミティブと、ＦＩＳと、ＦＩＳに対して計算されたＣＲＣ（Cyclic Redundancy Check）と、ＥＯＦ（End Of Frame）プリミティブにより構成される。
【００７５】
送信側のリンクコントローラでは、ＦＩＳに対するＣＲＣが演算されてＦＩＳの最後尾に付加される。そしてＦＩＳ及びＣＲＣとスクランブルデータとの排他的論理和（ＸＯＲ）をとるスクランブル処理が行われる。このようにスクランブルされたＦＩＳ及びＣＲＣに対して、８ｂ／１０ｂのエンコードが行われる。ここで８ｂ／１０ｂエンコードは、８ビットのデータを１０ビットの伝送キャラクタに変換するデータ伝送符号化のアルゴリズムであり、符号列内の１と０の数を揃え、連続的な伝送を保証する。そして８ｂ／１０ｂエンコード後のＦＩＳ及びＣＲＣに対してＳＯＦ、ＥＯＦなどのプリミティブが付加される。
【００７６】
送信側の物理層回路では、リンクコントローラからのパラレルデータがシリアルデータに変換され、小振幅の差動信号としてＳＡＴＡバスに送信される。
【００７７】
図８に示すように受信側の物理層回路では、ＳＡＴＡバスを介して受信したシリアルデータがパラレルデータに変換される。
【００７８】
受信側のリンクコントローラでは、ＦＩＳ及びＣＲＣに付加されたプリミティブに対するデコードが行われる。またＦＩＳ及びＣＲＣに対する８ｂ／１０ｂのデコードが行われる。即ち１０ビットの伝送キャラクタが８ビットのデータに変換される。次に、スクランブルされたＦＩＳ及びＣＲＣとスクランブルデータとの排他的論理和をとるデスクランブル処理が行われる。そしてＦＩＳの最後尾に付加されたＣＲＣがチェックされる。
【００７９】
受信側のトランスポートコントローラでは、ＦＩＳのコマンドがシャドウ・タスクファイル・レジスタに書き込まれ、ステータスや割り込みが出力されると共に、データがデータポートを介して出力される。
【００８０】
図９にＳＡＴＡＩ／Ｆ５０の構成例を示す。なおＳＡＴＡＩ／Ｆ５０の構成は図９に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば物理層回路２００を設けない構成としてもよい。
【００８１】
ＳＡＴＡでは、データは３２ビット単位で処理される。この３２ビットのデータが、リンクコントローラ１５０により８ｂ／１０ｂでエンコードされて４０ビットのデータになり、物理層回路２００に送られる。物理層回路２００は、この４０ビットのデータをシリアル化してＳＡＴＡのケーブルに送信する。受信も逆の手順で、シリアルデータが物理層回路２００で４０ビットのデータに変換され、リンクコントローラ１５０で３２ビットのデータに変換され、トランスポートコントローラ１１０に送られる。
【００８２】
トランスポートコントローラ１１０はトランスポート層の制御を行うものである。具体的にはトランスポートコントローラ１１０は、上位層（アプリケーション層）からＦＩＳの送信要求が来た時に、以下の処理を行う。
【００８３】
まずトランスポートコントローラ１１０は、ＦＩＳタイプの要件に基づいてＦＩＳの内容を収集する。また送信する情報をＦＩＳのタイプ毎に定義フォーマットに配置する。次にリンクコントローラ１５０に対して送信要求を通知する。これによりリンクコントローラ１５０はＸ＿ＲＤＹの送信処理を行う。そして相手ノードからのＲ＿ＲＤＹを受信し、リンクコントローラ１５０から受信のアクノリッジが来ると、トランスポートコントローラ１１０はＦＩＳをリンクコントローラ１５０に転送する。そして送信ＦＩＦＯ１２０のフロー管理を行い、必要なフロー制御をリンクコントローラ１５０に通知する。その後、リンクコントローラ１５０から送信結果を受信すると、必要に応じて上位層に送信結果を通知する。
【００８４】
トランスポートコントローラ１１０は、リンクコントローラ１５０からＦＩＳを受信した時には、以下の処理を行う。
【００８５】
トランスポートコントローラ１１０は、リンクコントローラ１５０からＦＩＳを受信すると、受信したＦＩＳのタイプを判別する。そしてＦＩＳのタイプに応じた適切なレジスタやＦＩＦＯにデータを転送する。そして受信ＦＩＦＯ１２２のフロー管理を行い、必要なフロー制御をリンクコントローラ１５０に通知する。その後、リンクコントローラ１５０及び上位層（アプリケーション層）に受信結果を通知する。
【００８６】
リンクコントローラ１５０はリンク層の制御を行うものである。具体的にはリンクコントローラ１５０は、送信時には以下の処理を行う。
【００８７】
まずリンクコントローラ１５０はトランスポートコントローラ１１０からのデータ（ＦＩＳ）を受け取る。そしてＦＩＳのＣＲＣを生成し、ＦＩＳの最後尾に付加する。次にデータのスクランブルを行い、その後、８ｂ／１０ｂのエンコードを行う。そしてＳＡＴＡ通信のプロトコルにしたがったプリミティブ、ＦＩＳの送信を行う。そして送信結果をトランスポートコントローラ１１０に通知する。
【００８８】
リンクコントローラ１５０は受信時には以下の処理を行う。即ちリンクコントローラ１５０は物理層回路２００から、８ｂ／１０ｂエンコードキャラクタを受信する。そして８ｂ／１０ｂエンコードキャラクタをデコードし、デコードしたプリミティブを処理部等に通知する。次にデコードしたＦＩＳのデスクランブル処理を行い、ＣＲＣをチェックする。そしてトランスポートコントローラ１１０にデータを渡す。またデコード結果やＣＲＣのチェック結果をトランスポートコントローラ１１０に通知する。
【００８９】
物理層回路２００は物理層を実現するアナログフロントエンド回路である。この物理層回路２００は、シリアルデータ（シリアルストリーム）の送受信や、シリアルデータからパラレルデータへの変換や、パラレルデータからシリアルデータへの変換を行う。また８ｂ／１０ｂのＫ２８．５キャラクタの検出や、ＯＯＢ(Out Of Band）信号の検出と送信を行う。またデバイスステータス（デバイスの有無、転送状態、パワー状態）の提供や、通信制御用のインターフェース（転送レート制御、ループバック）の提供を行う。またオプションでパワーマネージメントも行う。
【００９０】
物理層回路（ＰＨＹ）２００はトランスミッタ（ドライバ）２１０、レシーバ２２０、ＯＯＢ検出回路２３０などを含む。
【００９１】
トランスミッタ２１０は、差動信号線（差動信号線ペア）ＴＸ＋／−を介してシリアルデータ（パケット）の送信を行い、レシーバ２２０は、差動信号線（差動信号線ペア）ＲＸ＋／−を介してシリアルデータ（パケット）の受信を行う。ＴＸ＋／−、ＲＸ＋／−のＳＡＴＡバス（広義にはシリアルバス）では、振幅電圧＋／−２５０ｍＶのＮＲＺ差動信号によるシリアルストリーム転送が行われる。
【００９２】
ＯＯＢ検出回路２３０はＯＯＢ信号の検出処理を行う。このＯＯＢ信号は、ＳＡＴＡインターフェースのリセット／初期化、通信の確立や、スピード・ネゴシエーションをつかさどる信号である。
【００９３】
リンクコントローラ１５０は、リンクステート制御回路１６０、フレーム生成回路１９０、フレームデコード回路１９２を含む。
【００９４】
リンクステート制御回路１６０は、リンクコントローラ１５０のステート制御を行う。例えばリセットステート、アイドルステート、送信ステート、受信ステート等のステート間の遷移処理等を行う。
【００９５】
フレーム生成回路１９０は、トランスポートコントローラ１１０からの送信データ（ＦＩＳ）や、リンクステート制御回路１６０からの送信制御信号などに基づいてフレームの生成処理を行う。具体的には、トランスポートコントローラ１１０からのＦＩＳのＣＲＣを演算したり、スクランブル処理を行ったり、８ｂ／１０ｂエンコード処理を行ったり、プリミティブを生成して付加する処理などを行う。
【００９６】
フレームデコード回路１９２は、受信したフレームの解析（分解）処理を行い、受信解析信号（パワーダウンリクエスト信号等）をリンクステート制御回路１６０に出力する。具体的には、ＦＩＳに付加されたプリミティブを解析したり、８ｂ／１０ｂのデコード処理を行ったり、デスクランブル処理を行ったり、ＣＲＣを演算してチェックする処理などを行う。
【００９７】
トランスポートコントローラ１１０は、割りこみコントローラ１１８、ＤＭＡ制御回路１１９、送信ＦＩＦＯ１２０、受信ＦＩＦＯ１２２、ＦＩＳ生成回路１３０、ＦＩＳデコード回路１３２、トランスポートステート制御回路１４０を含む。
【００９８】
割り込みコントローラ１１８は、デバイス４からの受信ＦＩＳ情報などを知らせるための割り込み信号を生成する。ＤＭＡ制御回路１１９は、ＦＩＳに含まれる送信データや受信データ（コンテンツ・データ）のＤＭＡ転送を制御する。送信ＦＩＦＯ１２０は、ＤＭＡ制御回路１１９からの送信データのバッファとなるＦＩＦＯである。受信ＦＩＦＯ１２２は、リンクコントローラ１５０からの受信データのバッファとなるＦＩＦＯである。ＦＩＳ生成回路１３０はＦＩＳの生成を行う回路であり、ＦＩＳデコード回路１３２はＦＩＳの解析を行う回路である。トランスポートステート制御回路１４０は、トランスポートコントローラ１１０のステート制御を行う。
【００９９】
なお図１０（Ａ）〜図１０（Ｄ）に、ＳＡＴＡＩ／Ｆ５０により送受信されるＦＩＳのフォーマット例を示す。図１０（Ａ）はホストからデバイスへのレジスタＦＩＳ、図１０（Ｂ）はデバイスからホストへのレジスタＦＩＳ、図１０（Ｃ）はＰＩＯセットアップＦＩＳ、図１０（Ｄ）はＤＭＡアクティベートＦＩＳのフォーマットである。
【０１００】
６．シーケンスコントローラ
図１１にシーケンスコントローラ３０の構成例を示す。シーケンスコントローラ３０はレジスタ更新部３２、初期化シーケンス管理部３４、パラメータ書き換え部３６、ＤＭＡモード設定記憶部３８、転送制御部４０を含む。なおシーケンスコントローラ３０の構成は図１１に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【０１０１】
レジスタ更新部３２はＴＦＲ１２（タスクファイル・レジスタ）、ＳＦＲ５２（シャドウ・タスクファイル・レジスタ）のレジスタ値の更新処理を行う。具体的にはＴＦＲ１２のレジスタ値をＳＦＲ５２に転送してＳＦＲ５２のレジスタ値を更新したり、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送してＴＦＲ１２のレジスタ値を更新する。
【０１０２】
例えばＴＦＲ１２にホスト２によりＡＴＡコマンドが書き込まれると、ＰＡＴＡＩ／Ｆ１０はコマンドライト検出信号をアクティブにする。そしてコマンドライト検出信号がアクティブになると、レジスタ更新部３２はＴＦＲ１２のレジスタ値をＳＦＲ５２に転送する処理を行う。
【０１０３】
またＳＡＴＡＩ／Ｆ５０は、デバイス４から受信したＦＩＳをデコードし、デコード結果に基づいて、ＦＩＳの種類を知らせるための割り込み信号（広義には受信ＦＩＳ情報）を生成して出力する。レジスタ更新部３２は、この割り込み信号に基づいて受信ＦＩＳの種類を判別して、ＳＦＲ５２からＴＦＲ１２へのレジスタ値の転送処理などを行って、レジスタ値の更新処理を行う。
【０１０４】
初期化シーケンス管理部３４は、ＨＲＳＴ（ハードリセット）、ＳＲＳＴ（ソフトリセット）に伴う初期化シーケンスを管理する。具体的には、マスター、スレーブなどの設定をモニタして、ＰＡＴＡの初期化シーケンスを管理する。
【０１０５】
パラメータ書き換え部３６は、ホスト２がデバイス４に対してアイデンティファイ・デバイス・コマンドを発行し、デバイス４からデバイス情報のパラメータを受信した場合に、パラメータの書き換え処理を行う。即ち転送速度などのパラメータを自身が対応可能なパラメータに書き換える。
【０１０６】
ＤＭＡモード設定記憶部３８は、ホスト２がセットフューチャー・コマンドを発行した場合に、セットフューチャー・コマンドを解析して、ＤＭＡ転送のモード設定を記憶する。
【０１０７】
転送制御部４０はデータ転送制御装置の転送シーケンスを制御するものであり、モニタ部４２、制御信号生成部４４を含む。モニタ部４２は、ＰＡＴＡＩ／Ｆ１０からのコマンドライト検出信号や、ＳＡＴＡＩ／Ｆ５０からの割り込み信号（受信ＦＩＳ情報）などの信号をモニタする。そして制御信号生成部４４は、モニタ結果に基づいて、転送方向設定信号、転送開始信号、転送停止信号などの制御信号を生成し、ＰＡＴＩ／Ｆ１０、データバッファ７０、ＳＡＴＡＩ／Ｆ５０に出力して、転送シーケンス制御を実行する。なおデータバッファ７０に対しては転送開始信号、転送停止信号は出力せず、転送方向設定信号を出力する。
【０１０８】
図１２にＡＴＡのタスクファイル・レジスタのフォーマット例を示す。タスクファイル・レジスタはコントロールブロックレジスタとコマンドブロックレジスタを有し、チップセレクト信号ＸＣＳ０、ＸＣＳ１が、Ｈレベル（ネゲート）、Ｌレベル（アサート）である場合にはコントロールブロックレジスタが選択され、Ｌレベル、Ｈレベルである場合にはコマンドブロックレジスタが選択される。またコマンドブロックレジスタには、ステータスレジスタ（Status）やＡＴＡコマンドレジスタ（ATA Command）が設けられる。
【０１０９】
７．ＰＩＯ転送、ＤＭＡ転送
次に本実施形態のデータ転送制御装置により実現されるＰＩＯ転送、ＤＭＡ転送の詳細について図１３〜図１６を用いて説明する。
【０１１０】
図１３はＰＩＯリードの転送シーケンス図である。ホスト２によりＰＩＯリードのコマンドが発行されると、図１３のＡ１に示すようにＴＦＲ１２のステータスレジスタがＤ０ｈに設定される。即ちＰＡＴＡＩ／Ｆ１０によりＢＵＳＹビットが１にセットされ、デバイス４がビジー状態であることがホスト２に知らされる。そしてシーケンスコントローラ３０によりＴＦＲ１２のレジスタ値がＳＦＲ５２に転送（コピー）される。するとＡ２に示すように、ＳＡＴＡＩ／Ｆ５０は、ＳＦＲ５２のレジスタ値に基づいてＰＩＯリードコマンドを含むレジスタＦＩＳ（Host to Device）を作成し、ＳＡＴＡバスを介してデバイス４に送信する。
【０１１１】
このレジスタＦＩＳを受信したデバイス４は、Ａ３に示すようにＰＩＯセットアップＦＩＳを送信する。この場合に図１０（Ｃ）のＰＩＯセットアップＦＩＳのステータス（Status）には５８ｈが設定され、エンドステータス（E_Status）にはＤ０ｈが設定される。ここで図１７に示すように、Ｄ０ｈではＢＵＳＹビットが１にセットされ、５８ｈではＤＲＱビットが１にセットされる。また５０ｈではＢＵＳＹビット及びＤＲＱビットが共に０にクリア（解除）される。またエンドステータスは例えばＳＡＴＡＩ／Ｆ５０の一時保存レジスタに保存される。
【０１１２】
シーケンスコントローラ３０は、デバイス４からＰＩＯセットアップＦＩＳを受信し、その方向パラメータＤ（図１０（Ｃ）参照）がデバイスからホストへの方向である場合には、ホスト２が発行したコマンドはＰＩＯリードであると判断する。そしてＳＦＲ５２からＴＦＲ１２にレジスタ値を転送し、Ａ４に示すようにＴＦＲ１２のステータスレジスタを５８ｈに設定して、ＤＲＱビットを１にセットする。これによりホスト２に対する割り込みＩＮＴＲＱが発生する。なおＩＮＴＲＱの代わりにホスト２によるポーリングを採用してもよい。
【０１１３】
そしてデバイス４からデータＦＩＳを受信し、ホスト２がデータをリードすると、Ａ５に示すように、ＰＩＯセットアップＦＩＳのエンドステータスであるＤ０ｈがＴＦＲ１２のステータスレジスタに設定され、ＢＵＳＹビットが１にセットされる。即ちＳＡＴＡＩ／Ｆ５０の一時保存レジスタに保存されたエンドステータス（Ｄ０ｈ）が、ＴＦＲ１２のステータスレジスタに転送されて書き込まれる。これにより、デバイス４がビジー状態であることがホスト２に知らされる。
【０１１４】
以上のようにして各セクタのＰＩＯリードが繰り返される。そしてＡ６に示すように最後のセクタのＰＩＯセットアップＦＩＳではエンドステータスが５０ｈ又は５１ｈになっている。従ってＡ７に示すようにこのエンドステータス５０ｈ又は５１ｈがＴＦＲ１２のステータスレジスタに設定され、ＤＲＱビットがクリアされる。これにより、全てのデータ転送が完了したことがホスト２に知らされる。
【０１１５】
図１４はＰＩＯライトの転送シーケンス図である。ホスト２によりＰＩＯライトのコマンドが発行されると、Ｂ１に示すようにＢＵＳＹビットが１にセットされる（Ｄ０ｈ）。そしてＴＦＲ１２のレジスタ値がＳＦＲ５２に転送され、Ｂ２に示すようにＰＩＯライトコマンドを含むレジスタＦＩＳがデバイス４に送信される。
【０１１６】
このレジスタＦＩＳを受信したデバイス４は、Ｂ３に示すようにＰＩＯセットアップＦＩＳを送信する。そしてシーケンスコントローラ３０は、デバイス４からＰＩＯセットアップＦＩＳを受信し、その方向パラメータＤ（図１０（Ｃ）参照）がホストからデバイスへの方向である場合には、ホスト２が発行したコマンドはＰＩＯライトであると判断する。そしてＳＦＲ５２からＴＦＲ１２にレジスタ値を転送し、Ｂ４に示すようにＴＦＲ１２のステータスレジスタを５８ｈに設定して、ＤＲＱビットを１にセットする。これによりホスト２に対する割り込みＩＮＴＲＱが発生する。
【０１１７】
そしてホスト２がデータをライトすると、Ｂ５に示すように、ＰＩＯセットアップＦＩＳのエンドステータスであるＤ０ｈがＴＦＲ１２のステータスレジスタに設定される。
【０１１８】
以上のようにして各セクタのＰＩＯライトが繰り返される。そしてＢ６に示すように最後のセクタの転送が終わると、デバイス４がレジスタＦＩＳを送信する。するとこのレジスタＦＩＳのステータス（５０ｈ又は５１ｈ）が、ＳＦＲ５２からＴＦＲ１２に転送されて、Ｂ７に示すようにＤＲＱビットがクリアされる。
【０１１９】
図１５はＤＭＡリードの転送シーケンス図である。ホスト２によりＤＭＡリードのコマンドが発行されると、Ｃ１に示すようにＢＵＳＹビットが１にセットされる（Ｄ０ｈ）。ＰＩＯ転送とは異なりＤＭＡ転送では、データ転送中にＢＵＳＹビットが１にセットされたままになる。そしてＴＦＲ１２のレジスタ値がＳＦＲ５２に転送され、Ｃ２に示すようにＤＭＡリードコマンドを含むレジスタＦＩＳがデバイス４に送信される。
【０１２０】
このレジスタＦＩＳを受信したデバイス４は、Ｃ３に示すようにデータＦＩＳを送信する。シーケンスコントローラ３０は、デバイス４から受信したＦＩＳがデータＦＩＳである場合には、ホスト２が発行したコマンドはＤＭＡリードであると判断する。そしてＣ４に示すようにＤＭＡＲＱ（図６（Ａ）参照）がアサートされて、ＤＭＡ転送が開始し、デバイス４のデータがホスト２にリードされる。
【０１２１】
そしてＤＭＡ転送が終了し、デバイス４がレジスタＦＩＳを送信すると、Ｃ５に示すように、ＳＦＲ５２のレジスタ値がＴＦＲ１２に転送されて、ＢＵＳＹビットがクリアされる（５０ｈ又は５１ｈ）。
【０１２２】
図１６はＤＭＡライトの転送シーケンス図である。ホスト２によりＤＭＡライトのコマンドが発行されると、Ｄ１に示すようにＢＵＳＹビットが１にセットされる（Ｄ０ｈ）。そしてＴＦＲ１２のレジスタ値がＳＦＲ５２に転送され、Ｄ２に示すようにＤＭＡライトコマンドを含むレジスタＦＩＳがデバイス４に送信される。
【０１２３】
このレジスタＦＩＳを受信したデバイス４は、Ｄ３に示すようにＤＭＡアクティベートＦＩＳを送信する。シーケンスコントローラ３０は、デバイス４から受信したＦＩＳがＤＭＡアクティベートＦＩＳである場合には、ホスト２が発行したコマンドはＤＭＡライトであると判断する。そしてＤ４に示すようにＤＭＡＲＱ（図６（Ｂ）参照）がアサートされて、ＤＭＡ転送が開始し、ホスト２のデータがデバイス４にライトされる。
【０１２４】
そしてＤＭＡ転送が終了し、デバイス４がレジスタＦＩＳを送信すると、Ｄ５に示すように、ＳＦＲ５２のレジスタ値がＴＦＲ１２に転送され、ＢＵＳＹビットがクリアされる（５０ｈ又は５１ｈ）。
【０１２５】
８．詳細な動作
次に本実施形態のデータ転送制御装置の詳細な動作について図１８〜図２１のフローチャートを用いて説明する。
【０１２６】
図１８は、図１３で説明したＰＩＯリードの場合のフローチャートである。ホスト２がＰＩＯリードコマンドを発行すると、発行されたコマンドがＴＦＲ１２のコマンドレジスタに書き込まれる（ステップＳ１）。するとデータ転送制御装置（ＰＡＴＡＩ／Ｆ）は、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝１（Ｄ０ｈ）に設定する（ステップＳ２）。またＴＦＲ１２のレジスタ値をＳＦＲ５２に転送（コピー）し、レジスタＦＩＳ（Host to Device）をデバイスに送信する（ステップＳ３）。
【０１２７】
次にデータ転送制御装置は、ＰＩＯセットアップＦＩＳをデバイス４から受信する（ステップＳ４）。すると、受信したＰＩＯセットアップＦＩＳのパラメータに基づき、転送方向（リード、ライト）、転送種別（ＰＩＯ）、各セクタの転送バイト数（例えば５１２バイト）を設定し、総データ転送数（総セクタ数。Total sector count）を管理しないフリーラン転送を開始する（ステップＳ５）。
【０１２８】
次に、デイバイス４からデータＦＩＳを受信し、データバッファ７０（ＦＩＦＯ）に少なくとも１セクタ分のデータが蓄積されたか否かを判断する（ステップＳ６）。そしてデータが蓄積されると、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送し、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝０、ＤＲＱ＝１（５８ｈ）に設定する（ステップＳ７）。
【０１２９】
このようにＤＲＱ（データリクエスト）が１にセットされると、ホスト２がＰＩＯのデータリードを開始する（ステップＳ８）。そしてデータ転送制御装置（シーケンスコントローラ）は、ＳＡＴＡＩ／Ｆ５０、ＰＡＴＡＩ／Ｆ１０の転送完了割り込みが発生したか否かを判断する（ステップＳ１０）。
【０１３０】
転送完了割り込みが発生した場合には、ＰＩＯセットアップＦＩＳのエンドステータスがＢＵＳＹ＝０、ＤＲＱ＝０（５０ｈ又は５１ｈ）か否かを判断する（ステップＳ１１）。そしてＢＵＳＹ＝０、ＤＲＱ＝０ではない場合には、ＰＩＯセットアップＦＩＳのエンドステータス（Ｄ０ｈ）をＴＦＲ１２のステータスレジスタに設定する（ステップＳ１２）。そしてＰＩＯセットアップＦＩＳをデバイスから受信すると（ステップＳ１５）、受信したＰＩＯセットアップＦＩＳのパラメータに基づき、転送方向（リード、ライト）、転送種別（ＰＩＯ）、セクタ転送バイト数を設定し（ステップＳ１６）、ステップＳ６に戻る。
【０１３１】
一方、エンドステータスがＢＵＳＹ＝０、ＤＲＱ＝０（５０ｈ）である場合には、フリーラン転送の終了処理を行う（ステップＳ１３）。そして、ＢＵＳＹ＝０、ＤＲＱ＝０（５０ｈ）のエンドステータスをＴＦＲ１２のステータスレジスタに設定する（ステップＳ１４）。
【０１３２】
図１９は、図１４で説明したＰＩＯライトの場合のフローチャートである。図１９のステップＳ２１〜Ｓ２５は図１８のステップＳ１〜Ｓ５と同様である。図１９では、フリーラン転送を開始した後、データバッファ７０のデータ蓄積を確認することなく、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送し、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝０、ＤＲＱ＝１（５８ｈ）に設定する（ステップＳ２７）。
【０１３３】
このようにＤＲＱが１にセットされると、ホスト２がＰＩＯのデータライトを開始する（ステップＳ２８）。これによりデータ転送制御装置はデバイス４に対してデータＦＩＳを送信する（ステップＳ２９）。そしてデータ転送制御装置は、ＳＡＴＡＩ／Ｆ５０、ＰＡＴＡＩ／Ｆ１０の転送完了割り込みが発生したか否かを判断する（ステップＳ３０）。
【０１３４】
転送完了割り込みが発生した場合には、レジスタＦＩＳ（Device to Host）の受信割り込みが発生したか否かを判断する（ステップＳ３１）。即ちＳＡＴＡＩ／Ｆ５０はレジスタＦＩＳを受信すると、割り込み信号をシーケンスコントローラ３０に出力し、レジスタＦＩＳを受信したことを知らせる。
【０１３５】
レジスタＦＩＳの受信割り込みが発生しなかった場合には、ＰＩＯセットアップＦＩＳのエンドステータス（Ｄ０ｈ）をＴＦＲ１２のステータスレジスタに設定する（ステップＳ３２）。そしてＰＩＯセットアップＦＩＳをデバイスから受信すると（ステップＳ３５）、受信したＰＩＯセットアップＦＩＳのパラメータに基づき、転送方向（リード、ライト）、転送種別（ＰＩＯ）、セクタ転送バイト数を設定し（ステップＳ３６）、ステップＳ２７に戻る。
【０１３６】
一方、レジスタＦＩＳの受信割り込みが発生した場合には、フリーラン転送の終了処理を行う（ステップＳ３３）。そしてＳＦＲ５２のレジスタ値をＴＦＲ１２に転送し、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝０、ＤＲＱ＝０（５０ｈ、５１ｈ）に設定する（ステップＳ３４）。
【０１３７】
図２０は、図１５で説明したＤＭＡリードの場合のフローチャートである。ホスト２がＤＭＡリードコマンドを発行すると、発行されたコマンドがＴＦＲ１２のコマンドレジスタに書き込まれる（ステップＳ４１）。するとデータ転送制御装置は、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝１（Ｄ０ｈ）に設定する（ステップＳ４２）。またＴＦＲ１２のレジスタ値をＳＦＲ５２に転送（コピー）し、レジスタＦＩＳ（Host to Device）をデバイス４に送信する（ステップＳ４３）。
【０１３８】
次にデータ転送制御装置は、データＦＩＳをデバイス４から受信すると（ステップＳ４４）、転送方向を設定し、総データ転送数（総ＤＭＡ転送カウント）を管理しないフリーラン転送を開始する（ステップＳ４５）。
【０１３９】
次にデータ転送制御装置は、レジスタＦＩＳ（Device to Host）の受信割り込みが発生したか否かを判断する（ステップＳ４６）。受信割り込みが発生した場合には、ＰＡＴＡＩ／Ｆ１０の転送完了割り込み（ホストへのデータ出力の完了）が発生したか否かを判断する（ステップＳ４７）。具体的には、ＳＡＴＡＩ／Ｆ５０の受信ＦＩＦＯやデータバッファ７０のＦＩＦＯがエンプティになったか否かを確認した後、ＰＡＴＡＩ／Ｆ１０の転送完了割り込みを確認する。
【０１４０】
ＰＡＴＡＩ／Ｆ１０の転送完了割り込みが発生した場合には、フリーラン転送の終了処理を行う（ステップＳ４８）。そしてＳＦＲ５２のレジスタ値をＴＦＲ１２に転送し、ＴＦＲ１２のステータスレジスタをＢＵＳＹ＝０、ＤＲＱ＝０（５０ｈ、５１ｈ）に設定する（ステップＳ４９）。
【０１４１】
図２１は、図１６で説明したＤＭＡライトの場合のフローチャートである。図２１が図２０と異なる点は、図２０ではＰＡＴＡＩ／Ｆの転送完了割り込みを判断するのに対して、図２１ではこのような判断は行わない点である。ＤＭＡライトの場合には、デバイス４からレジスタＦＩＳを受信した場合（ステップＳ５６）には、フリーラン転送を終了してもよいと判断できるからである。
【０１４２】
本実施形態では図１８のステップＳ４、Ｓ５、図１９のステップＳ２４、Ｓ２５、図２０のステップＳ４４、Ｓ４５、図２１のステップＳ５４、Ｓ５５に示すように、デバイス４から受信したＦＩＳの種類に応じた転送シーケンス制御を実行している。
【０１４３】
具体的には図１８のステップＳ４、図１９のステップＳ２４のようにＰＩＯセットアップＦＩＳを受信した場合には、ＰＩＯリード、ＰＩＯライトの転送シーケンス制御を行う。また図２０のステップＳ４４のようにデータＦＩＳを受信した場合には、ＤＭＡリードの転送シーケンス制御を行う。また図２１のステップＳ５４のようにＤＭＡアクティベートＦＩＳを受信した場合には、ＤＭＡライトの転送シーケンス制御を行う。これにより、ホスト２からのＡＴＡコマンドをデコードすることなく、適正な転送シーケンス制御を実現できる。
【０１４４】
また本実施形態では図１８のステップＳ５、図１９のステップＳ２５に示すように、デバイス４から受信したＰＩＯセットアップＦＩＳのパラメータに基づいて、転送方向、転送種別等が設定される。具体的にはＳＡＴＡＩ／Ｆ５０が、ＦＩＳのデコード結果に基づいて受信ＦＩＳ情報（転送方向信号、転送種別信号、ＦＩＳの割り込み信号）を生成し、シーケンスコントローラ３０が、この受信ＦＩＳ情報に基づいて転送方向、転送種別等を判別する。このようにすれば、ホスト２が発行したコマンドをデコードしなくても、デバイス４からのＰＩＯセットアップＦＩＳを有効活用して、転送方向、転送種別等を取得して、転送シーケンス制御を行うことが可能になる。従って、シーケンスコントローラ３０の回路の大規模化を最小限に抑えながら、適正な転送シーケンス制御を実現できる。
【０１４５】
また本実施形態では図１８のステップＳ６、Ｓ７に示すように、データバッファ７０（ＦＩＦＯメモリ）に対して少なくとも１セクタ分のデータが蓄積された場合に、ＳＦＲ５２のレジスタ値をＴＦＲ１２に転送し、ＴＦＲ１２のステータスレジスタのＢＵＳＹビットをクリアしている。このようにすればホスト２による適正なデータリードを実現できる。
【０１４６】
即ち本実施形態ではホスト２は、デバイス４を、ＳＡＴＡではなくＰＡＴＡのデバイスとして扱っているため、デバイス４があたかもＰＡＴＡのデバイスであるかのように見せかける必要がある。このために本実施形態では、ＳＡＴＡ規格には定義されていない擬似的なＴＦＲ１２を設け、ＴＦＲ１２とＳＦＲ５２の間でレジスタ値を転送している。
【０１４７】
この場合に、データバッファ７０にデータが蓄積されていないのに、ＢＵＳＹビットをクリアし、ＤＲＱビットをセットしてしまうと、データが蓄積されていないデータバッファ７０から、ホスト２がデータをリードすることになってしまい、適切なデータリード動作を実現できない。
【０１４８】
この点、本実施形態では、データバッファ７０に少なくとも１セクタ分のデータが蓄積された後に、ＢＵＳＹビットがクリアされ、ＤＲＱビットがセットされるため、ホスト２による適正なデータリード動作を保証できる。
【０１４９】
また本実施形態では図１８のステップＳ１０〜Ｓ１２、図１９のＳ３０〜Ｓ３２に示すように、ＳＡＴＡＩ／Ｆ５０、ＰＡＴＡＩ／Ｆ１０でのデータ転送が完了した後に、受信したＰＩＯセットアップＦＩＳのエンドステータス（図１０（Ｃ）のE_Status）をＴＦＲ１２のステータスレジスタ（図１２のStatus）に設定している。即ちＳＡＴＡＩ／Ｆ５０は、ＳＡＴＡバスへのデータ出力（ＦＩＳ転送）やデータバッファ７０へのデータ出力が完了すると、シーケンスコントローラ３０に対して割り込みを発生する（割り込み信号をアクティブにする）。またＰＡＴＡＩ／Ｆ１０は、ＰＡＴＡバスへのデータ出力やデータバッファ７０へのデータ出力が完了すると、シーケンスコントローラ３０に対して割り込みを発生する。シーケンスコントローラ３０は、このような割り込みが発生して、データ転送が完了したことを確認してから、ＰＩＯセットアップＦＩＳのエンドステータスをＴＦＲ１２のステータスレジスタに設定する。具体的にはＳＡＴＡＩ／Ｆ５０の一時保存レジスタに保存しておいたエンドステータスを、ＴＦＲ１２に転送して書き込む。このようにすれば、全てのデータ転送が完了して、データ転送制御装置に残りデータが無いことが確認された後に、ステータスレジスタのＤＲＱビットがクリアされる。従って、データ転送が完了していないのにホスト２によるデータのリード動作、ライト動作が停止してしまい、データ転送装置にデータが残ってしまう事態を防止できる。
【０１５０】
また本実施形態では、図１８のステップＳ５、図１９のステップＳ２５、図２０のステップＳ４５、図２１のステップＳ５５に示すように、受信したＦＩＳの種類に応じた転送シーケンス制御として、総データ転送数を管理しないフリーラン転送を行っている。即ちシーケンスコントローラ３０は、転送開始信号（Tran Go）をアクティブにした後、総データ転送数のカウント処理を行わないフリーラン転送を開始する。そしてフリーラン転送を終了する場合には、転送停止信号（Tran Stop）をアクティブにする。このようなフリーラン転送を行えば、総データ転送数のカウント回路が不要になるため、データ転送制御装置の回路の小規模化を図れる。またカウント回路の動作制御（例えばポインタ制御）も不要になるため、データ転送制御装置の回路や処理を簡素化できる。
【０１５１】
９．割りこみ信号、制御信号
図２２（Ａ）に示すように本実施形態では、ＳＡＴＡＩ／Ｆ５０は、デバイス４から受信したＦＩＳをデコード（解析）する。具体的にはＳＡＴＡＩ／Ｆ５０が有するＦＩＳデコード回路１３２（図９参照）がＦＩＳのデコード処理を行う。そしてＳＡＴＡＩ／Ｆ５０が有する割りこみコントローラ１１８が、デコード結果に基づいて、ＦＩＳの種類をシーケンスコントローラ３０に知らせるための割り込み信号を生成して出力する。具体的には、例えばＰＩＯセットアップＦＩＳ、データＦＩＳ、ＤＭＡアクティベートＦＩＳ、レジスタＦＩＳなどの受信を知らせる割りこみ信号を出力する。
【０１５２】
するとシーケンスコントローラ３０は、ＳＡＴＡＩ／Ｆ５０からの割り込み信号に基づいてＦＩＳの種類を判別して、転送シーケンス制御を行う。例えばＰＩＯセットアップＦＩＳの割り込み信号をＳＡＴＡＩ／Ｆ５０から受け、ＰＩＯセットアップＦＩＳの転送方向がリード方向である場合には、図２（Ｂ）のようにＰＩＯリードの転送シーケンス制御を行い、ライト方向である場合には、図２（Ｃ）のようにＰＩＯライトの転送シーケンス制御を行う。またデータＦＩＳの割り込み信号を受けた場合には、ＤＭＡリードの転送シーケンス制御を行い、ＤＭＡアクティベートＦＩＳの割り込み信号を受けた場合には、ＤＭＡライトの転送シーケンス制御を行う。
【０１５３】
このようにすれば、シーケンスコントローラ３０は、ＳＡＴＡＩ／Ｆ５０に元々必要なＦＩＳデコード回路１３２を有効活用して、ＦＩＳの種類を判別できる。従ってシーケンスコントローラ３０にＦＩＳのデコード回路を設けなくても済むため、回路の小規模化を図れる。特に本実施形態では、ホスト２が発行したコマンドのデコード回路もシーケンスコントローラ３０に設ける必要がないため、データ転送制御装置の更なる小規模化を図れる。なおＳＡＴＡＩ／Ｆ５０は、ＦＩＳの割り込み信号以外にも、転送方向を知らせる転送方向信号をシーケンスコントローラ３０に出力してもよい。このようにすればシーケンスコントローラ３０は、ＰＩＯリードなのかＰＩＯライトなのかを、この転送方向信号をモニタするだけで判断できるようになり、回路を簡素化できる。
【０１５４】
また図２２（Ｂ）に示すように本実施形態では、シーケンスコントローラ３０は、転送開始信号、転送停止信号、転送方向設定信号を、ＰＡＴＡＩ／Ｆ１０、ＳＡＴＡＩ／Ｆ５０に出力することで、転送シーケンス制御を行っている。
【０１５５】
具体的にはＳＡＴＡＩ／Ｆ５０からの受信ＦＩＳ情報（ＦＩＳの割り込み信号、転送方向信号等）に基づいて、転送方向を決定し、その転送方向を設定するための信号をＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０に出力する。これによりＰＡＴＡＩ／Ｆ１０、ＳＡＴＡＩ／Ｆ５０は、転送方向を認識することができ、シーケンスコントローラ３０の制御の下で適正なデータ転送を実現できる。
【０１５６】
またシーケンスコントローラ３０は、転送を開始する場合には転送開始信号（Tran Go）をＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０に出力し、転送を停止する場合には転送停止信号（Tran Stop）をＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０に出力する。これによりＰＡＴＡＩ／Ｆ１０やＳＡＴＡＩ／Ｆ５０は、転送の開始タイミングや停止タイミングを認識することができ、シーケンスコントローラ３０の制御の下で適正なデータ転送を実現できる。
【０１５７】
なお図２２（Ｂ）ではシーケンスコントローラ３０は、データバッファ７０に対しては転送方向設定信号を出力して、転送シーケンス制御を行っている。即ちデータバッファ７０に対しては転送開始信号や転送停止信号を出力しない。このようにした場合にも、ＰＡＴＡＩ／Ｆ１０とデータバッファ７０との間やＳＡＴＡＩ／Ｆとデータバッファ７０との間の制御信号（ＲＥＱ、ＡＣＫ）を用いて、データ転送（ＦＩＦＯ制御）を適正に実現できる。従って、転送シーケンス制御を簡素化でき、回路を小規模化できる。
【０１５８】
１０．電子機器
図２３に本実施形態の電子機器の構成例を示す。この電子機器は、本実施形態で説明したデータ転送制御装置３１０とホスト３０２とデバイス３０４を含む。ホスト３０２とデータ転送制御装置３１０はＰＡＴＡバスを介して接続され、データ転送制御装置３１０とデバイス３０４はＳＡＴＡバスを介して接続される。なお本実施形態の電子機器の構成は図２３に限定されず、その構成要素の一部を省略したり、他の構成要素を付加する変形実施が可能である。
【０１５９】
同図においてデバイス３０４は、ＨＤＤ（ハードディスクドライブ）等のストレージデバイスである。但しデバイス３０４はＨＤＤ等のストレージデバイスに限定されず、例えば光ディスクドライブ（ＣＤ、ＤＶＤ）等であってもよい。
【０１６０】
ホスト３０２は、処理部３３０（ＣＰＵ）、ＲＯＭ３４０、ＲＡＭ３５０、表示部３６０、操作部３７０を含むことができる。処理部３３０（ＣＰＵ）はデータ転送制御装置３１０や電子機器の全体制御を行う。なおデータ転送制御装置３１０を制御する処理部と、電子機器を制御する処理部とを別々に設けてもよい。ＲＯＭ３４０は制御プログラムや各種データを記憶する。ＲＡＭ３５０は処理部３３０やデータ転送制御装置３１０のワーク領域やデータ格納領域として機能する。表示部３６０は種々の情報をユーザに表示する。操作部３７０はユーザが電子機器を操作するためのものである。
【０１６１】
本実施形態の電子機器によれば、ホスト３０２がＳＡＴＡＩ／Ｆを有していない場合にも、データ転送制御装置３１０を介してＳＡＴＡのデバイス３０４をホスト３０２に接続して、あたかもＰＡＴＡのデバイスのように扱うことが可能になる。
【０１６２】
なお、本実施形態を適用できる電子機器としては、カーナビゲーションシステム、車載用オーディオ機器、ＨＤＤレコーダ、ビデオカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、ゲーム装置、又は携帯型ゲーム装置等の種々のものが考えられる。
【０１６３】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語（シリアルバス、処理部、受信ＦＩＳ情報等）と共に記載された用語（ＳＡＴＡ、ＣＰＵ、割りこみ信号等）は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置、電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。また本実施形態では、ＳＡＴＡへの本発明の適用例について説明したが、本発明は、ＳＡＴＡと同様の思想に基づく規格や、ＳＡＴＡ（ＳＡＴＡ Ｉ、ＳＡＴＡ II、ＳＡＳ）を発展させた規格等にも適用できる。
【図面の簡単な説明】
【０１６４】
【図１】本実施形態のデータ転送制御装置の構成例。
【図２】図２（Ａ）〜図２（Ｃ）は本実施形態のシーケンス制御手法の説明図。
【図３】図３（Ａ）〜図３（Ｃ）は本実施形態のシーケンス制御手法の説明図。
【図４】本実施形態のデータ転送制御装置の詳細な構成例。
【図５】図５（Ａ）、図５（Ｂ）はＰＩＯリード、ＰＩＯライトの信号波形例。
【図６】図６（Ａ）、図６（Ｂ）はＤＭＡリード、ＤＭＡライトの信号波形例。
【図７】ＳＡＴＡの送信側のデータ処理の説明図。
【図８】ＳＡＴＡの受信側のデータ処理の説明図。
【図９】ＳＡＴＡＩ／Ｆの構成例。
【図１０】図１０（Ａ）〜図１０（Ｄ）はＦＩＳのフォーマット例。
【図１１】シーケンスコントローラの構成例。
【図１２】タスクファイル・レジスタのフォーマット例。
【図１３】ＰＩＯリードの転送シーケンス図。
【図１４】ＰＩＯライトの転送シーケンス図。
【図１５】ＤＭＡリードの転送シーケンス図。
【図１６】ＤＭＡライトの転送シーケンス図。
【図１７】ステータスの各ビットの説明図。
【図１８】ＰＩＯリードの動作を説明するためのフローチャート。
【図１９】ＰＩＯライトの動作を説明するためのフローチャート。
【図２０】ＤＭＡリードの動作を説明するためのフローチャート。
【図２１】ＤＭＡライトの動作を説明するためのフローチャート。
【図２２】図２２（Ａ）、図２２（Ｂ）は割り込み信号、制御信号の説明図。
【図２３】電子機器の構成例。
【符号の説明】
【０１６５】
２  ホスト、４  デバイス、１０  ＰＡＴＡＩ／Ｆ、
１２  タスクファイル・レジスタ（ＴＦＲ）、１４  転送コントローラ、
３０  シーケンスコントローラ、３２  レジスタ更新部、
３４  初期化シーケンス管理部、
３６  パラメータ書き換え部、３８  ＤＭＡ転送設定記憶部、４０  転送制御部、
４２  モニタ部、４４  制御信号生成部、５０  ＳＡＴＡＩ／Ｆ、
５２  シャドウ・タスクファイル・レジスタ（ＳＦＲ）、７０  データバッファ、
７２  メモリコントローラ、７４  ＦＩＦＯメモリ、
１１０  トランスポートコントローラ、１１８  割りこみコントローラ、
１２０  送信ＦＩＦＯ、１２２  受信ＦＩＦＯ、１３０  ＦＩＳ生成回路、
１３２  ＦＩＳデコード回路、１５０  リンクコントローラ、
１６０  リンクステート制御回路、１９０  フレーム生成回路、
１９２  フレームデコード回路、２００  物理層回路、２１０  トランスミッタ、
２２０  レシーバ、２３０  ＯＯＢ検出回路
【図１】
2008204048.tif 000003
【図２】
2008204048.tif 000004
【図３】
2008204048.tif 000005
【図４】
2008204048.tif 000006
【図５】
2008204048.tif 000007
【図６】
2008204048.tif 000008
【図７】
2008204048.tif 000009
【図８】
2008204048.tif 000010
【図９】
2008204048.tif 000011
【図１０】
2008204048.tif 000012
【図１１】
2008204048.tif 000013
【図１２】
2008204048.tif 000014
【図１３】
2008204048.tif 000015
【図１４】
2008204048.tif 000016
【図１５】
2008204048.tif 000017
【図１６】
2008204048.tif 000018
【図１７】
2008204048.tif 000019
【図１８】
2008204048.tif 000020
【図１９】
2008204048.tif 000021
【図２０】
2008204048.tif 000022
【図２１】
2008204048.tif 000023
【図２２】
2008204048.tif 000024
【図２３】
2008204048.tif 000025