(57)【要約】【課題】データバッファの帯域を有効活用でき、適正なデータ転送処理を実現できるデータ転送制御回路、電子機器、データ転送制御方法を提供すること。【解決手段】データ転送制御回路３０は、第１〜第Ｎの領域を有する受信バッファＲＸＢ１、ＲＸＢ２を含む受信バッファ部４０と、バスを介してＫバイト単位でデータを受信し、受信したＫバイトのデータを、受信バッファの第１〜第Ｎの領域に順次書き込む制御回路５０と、受信バッファのデータをデータバッファ２０に書き込むアクセス制御回路６０を含む。アクセス制御回路６０は、受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータをデータバッファ２０に書き込み、受信バッファの第１〜第Ｎの領域のうちの第Ｊの領域までデータが書き込まれた後、所定時間が経過した場合には、第１〜第Ｊの領域のデータをデータバッファに書き込む。【選択図】        図４
2004234348.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して受信したデータをデータバッファに書き込む制御を行うデータ転送制御回路であって、
第１〜第Ｎ（Ｎは２以上の整数）の領域を有する少なくとも１つの受信バッファを含む受信バッファ部と、
バスを介してＫバイト単位でデータを受信し、受信したＫバイト（Ｋは自然数）のデータを、受信バッファの第１〜第Ｎの各領域に順次書き込む制御回路と、受信バッファのデータをデータバッファに書き込むアクセス制御回路とを含み、
前記アクセス制御回路が、
受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータをデータバッファに書き込み、
受信バッファの第１〜第Ｎの領域のうちの第Ｊ（Ｊは１≦Ｊ＜Ｎの関係を満たす整数）の領域までデータが書き込まれた後、所定時間が経過しても、次の領域に書き込むべきデータが受信されなかった場合には、第１〜第Ｊの領域のデータをデータバッファに書き込むことを特徴とするデータ転送制御回路。
【請求項２】
請求項１において、
前記受信バッファ部が第１、第２の受信バッファを含み、
前記制御回路が、
第１の受信バッファの第１〜第Ｎの領域のデータがデータバッファに書き込まれた場合には、バスを介して受信した次のデータを、第２の受信バッファの第１の領域から書き込み、
第１の受信バッファの第１〜第Ｊの領域のデータがデータバッファに書き込まれた場合には、バスを介して受信した次のデータを、第２の受信バッファの第Ｊ＋１の領域から書き込むことを特徴とするデータ転送制御回路。
【請求項３】
請求項１又は２において、
受信バッファの第１〜第Ｎの領域のうち、有効な受信データが蓄積された領域を特定するための領域特定情報を記憶する有効データレジスタを含み、
前記アクセス制御回路が、
前記有効データレジスタに記憶された前記領域特定情報に基づいて、受信バッファの第１〜第Ｎの領域のうち、有効な受信データが蓄積された領域のデータを、データバッファに書き込むことを特徴とするデータ転送制御回路。
【請求項４】
請求項３において、
前記有効データレジスタが、前記領域特定情報として第１〜第Ｎの有効データビットを有し、
前記有効データレジスタの第１〜第Ｎの各有効データビットは、受信バッファの第１〜第Ｎの各領域に有効な受信データが蓄積された場合に第１のレベルに設定され、
前記アクセス制御回路が、
受信バッファの第１〜第Ｎの領域のうち、第１のレベルに設定された有効データビットに対応する領域のデータを、データバッファに書き込むことを特徴とするデータ転送制御回路。
【請求項５】
請求項４において、
前記アクセス制御回路が、
各有効データ信号が、第１〜第Ｎの各有効データビットが第１のレベルである場合にアクティブになる第１〜第Ｎの有効データ信号を、データバッファに出力し、第１〜第Ｎの有効データ信号に基づいてデータバッファにデータを書き込むことを特徴とするデータ転送制御回路。
【請求項６】
請求項１乃至５のいずれかにおいて、
データバッファの受信領域の残りバイト数を検出する残りバイト数検出回路を含み、
前記制御回路が、
バスに接続されるデバイスに対して出力されるリクエスト信号をアクティブにした後に、データバッファの受信領域の残りバイト数がＬバイト（Ｌは自然数）になった場合に、リクエスト信号を非アクティブにすることを特徴とするデータ転送制御回路。
【請求項７】
バスを介して受信したデータをデータバッファに書き込む制御を行うデータ転送制御回路であって、
少なくとも１つの受信バッファを含む受信バッファ部と、
バスを介してデータを受信し、受信したデータを受信バッファに書き込む制御回路と、
受信バッファのデータをデータバッファの受信領域に書き込むアクセス制御回路と、
データバッファの受信領域の残りバイト数を検出する残りバイト数検出回路とを含み、
前記制御回路が、
バスに接続されるデバイスに対して出力されるリクエスト信号をアクティブにした後に、データバッファの受信領域の残りバイト数がＬバイト（Ｌは自然数）になった場合に、リクエスト信号を非アクティブにすることを特徴とするデータ転送制御回路。
【請求項８】
請求項６又は７において、
前記Ｌの値が設定される書き換え可能なレジスタを含み、
前記制御回路が、
前記残りバイト数検出回路で検出された残りバイト数と、前記レジスタに設定されたＬの値とに基づいて、リクエスト信号を制御することを特徴とするデータ転送制御回路。
【請求項９】
請求項１乃至８のいずれかのデータ転送制御回路と、
前記データ転送制御回路のバスに接続されるデバイスと、
前記データ転送制御回路を制御するプロセッサと、
を含むことを特徴とする電子機器。
【請求項１０】
バスを介してＫバイト単位（Ｋは自然数）でデータを受信し、受信したＫバイトのデータを、第１〜第Ｎ（Ｎは２以上の整数）の領域を有する受信バッファの第１〜第Ｎの各領域に順次書き込み、受信バッファのデータをデータバッファに書き込むデータ転送制御方法であって、
受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータをデータバッファに書き込み、
受信バッファの第１〜第Ｎの領域のうちの第Ｊ（Ｊは１≦Ｊ＜Ｎの関係を満たす整数）の領域までデータが書き込まれた後、所定時間が経過しても、次の領域に書き込むべきデータが受信されなかった場合には、第１〜第Ｊの領域のデータをデータバッファに書き込むことを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御回路、電子機器及びデータ転送制御方法に関する。
【０００２】
【背景技術】
近年、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）２．０やＩＥＥＥ１３９４のように高速なデータ転送を実現できる高速シリアルバスのインターフェースが着目を集めている。このようなインターフェースを備える電子機器では、高速シリアルバスとＤＭＡバス（アプリケーションデバイスが接続される汎用バス）との間のブリッジ機能を有するデータ転送制御装置が組み込まれる場合がある。このようなブリッジ機能を有するデータ転送制御装置の従来技術としては例えば以下のようなものがある。
【０００３】
【特許文献１】
特開２０００−１３４２４２号公報
【０００４】
【発明が解決しようとする課題】
このようなブリッジ機能を有するデータ転送制御装置には、アプリケーションデバイスからのデータや、ＵＳＢなどの高速シリアルバスからのデータを一時的に蓄積するデータバッファ（ＲＡＭ）が設けられる。そしてこのデータバッファは、アプリケーションデバイス（ＡＳＩＣ）、ＵＳＢ、ＣＰＵなどにより共用されてアクセスされることになる。そして、アプリケーションデバイスとデータバッファとの間には、アプリケーションデバイスからのデータを受信してデータバッファに書き込んだり、データバッファからのデータをアプリケーションデバイスに送信する機能を有するデータ転送制御回路が設けられる。
【０００５】
しかしながらデータバッファの帯域には限界がある。従って、アプリケーションデバイスとデータバッファとの間に設けられるデータ転送制御回路の設計の際には、如何にしてデータバッファの帯域を有効活用できるかが重要な技術的課題になる。
【０００６】
またデータ転送制御回路が制御するＤＭＡバス（汎用バス）には、種々のアプリケーションデバイスが接続されることが想定される。従って、このように種々のアプリケーションデバイスがＤＭＡバスに接続された場合にも、データ転送制御回路が適正なデータ転送処理を行えることが望まれる。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、データバッファの帯域を有効活用でき、適正なデータ転送処理を実現できるデータ転送制御回路、これを含む電子機器、及びデータ転送制御方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、バスを介して受信したデータをデータバッファに書き込む制御を行うデータ転送制御回路であって、第１〜第Ｎ（Ｎは２以上の整数）の領域を有する少なくとも１つの受信バッファを含む受信バッファ部と、バスを介してＫバイト単位でデータを受信し、受信したＫバイト（Ｋは自然数）のデータを、受信バッファの第１〜第Ｎの各領域に順次書き込む制御回路と、受信バッファのデータをデータバッファに書き込むアクセス制御回路とを含み、前記アクセス制御回路が、受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータをデータバッファに書き込み、受信バッファの第１〜第Ｎの領域のうちの第Ｊ（Ｊは１≦Ｊ＜Ｎの関係を満たす整数）の領域までデータが書き込まれた後、所定時間が経過しても、次の領域に書き込むべきデータが受信されなかった場合には、第１〜第Ｊの領域のデータをデータバッファに書き込むデータ転送制御回路に関係する。
【０００９】
本発明によれば、受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータがデータバッファに書き込まれる。これにより、データバッファへのアクセス時間を１／Ｎにすることができ、データバッファの帯域を有効活用できる。
【００１０】
そして本発明では、受信バッファの第１〜第Ｎの領域のうちの途中の第Ｊの領域までデータが書き込まれた後、所定時間が経過すると、第１〜第Ｊの領域のデータがデータバッファに書き込まれるようになる。従って、受信バッファに、第１〜第Ｊの領域のデータが残ったままになってしまう事態が解消され、適正なデータ転送処理を実現できる。
【００１１】
なおデータバッファは、高速シリアルバスなどの第１のバスと、プロセッサなどが使用する第２のバスとによりアクセス可能なバッファとすることができる。
【００１２】
また本発明では、前記受信バッファ部が第１、第２の受信バッファを含み、前記制御回路が、第１の受信バッファの第１〜第Ｎの領域のデータがデータバッファに書き込まれた場合には、バスを介して受信した次のデータを、第２の受信バッファの第１の領域から書き込み、第１の受信バッファの第１〜第Ｊの領域のデータがデータバッファに書き込まれた場合には、バスを介して受信した次のデータを、第２の受信バッファの第Ｊ＋１の領域から書き込むようにしてもよい。
【００１３】
このようにすれば、データバッファの受信領域に隙間領域ができるなどの事態を防止できる。なお、第２の受信バッファの第Ｊ＋１〜第Ｎの領域にデータが書き込まれた場合には、第Ｊ＋１〜第Ｎの領域のデータをデータバッファに書き込むことができる。そして次に受信したデータについては、第１の受信バッファの第１の領域から書き込むことができる。
【００１４】
また本発明では、受信バッファの第１〜第Ｎの領域のうち、有効な受信データが蓄積された領域を特定するための領域特定情報を記憶する有効データレジスタを含み、前記アクセス制御回路が、前記有効データレジスタに記憶された前記領域特定情報に基づいて、受信バッファの第１〜第Ｎの領域のうち、有効な受信データが蓄積された領域のデータを、データバッファに書き込むようにしてもよい。
【００１５】
このようにすれば、有効データレジスタに記憶された領域特定情報に基づいて受信バッファの第１〜第Ｎの領域のうち、有効な受信データが蓄積された領域を特定できるようになる。そして、その特定された領域のデータを、データバッファに書き込むことができる。これによりデータバッファへのデータの書き込み順序等を適正に制御できるようになる。
【００１６】
また本発明では、前記有効データレジスタが、前記領域特定情報として第１〜第Ｎの有効データビットを有し、前記有効データレジスタの第１〜第Ｎの各有効データビットは、受信バッファの第１〜第Ｎの各領域に有効な受信データが蓄積された場合に第１のレベルに設定され、前記アクセス制御回路が、受信バッファの第１〜第Ｎの領域のうち、第１のレベルに設定された有効データビットに対応する領域のデータを、データバッファに書き込むようにしてもよい。
【００１７】
このような第１〜第Ｎの有効データビットを用いれば、データバッファへのデータの書き込み順序の制御等を更に容易化できる。なお領域特定情報は、このような第１〜第Ｎの有効データビットに限定されない。例えばＮ＝２Ｐの関係を満たす自然数をＰとした場合に、Ｐビットの領域特定情報で、第１〜第Ｎの領域を特定してもよい。
【００１８】
また本発明では、前記アクセス制御回路が、各有効データ信号が、第１〜第Ｎの各有効データビットが第１のレベルである場合にアクティブになる第１〜第Ｎの有効データ信号を、データバッファに出力し、第１〜第Ｎの有効データ信号に基づいてデータバッファにデータを書き込むようにしてもよい。
【００１９】
また本発明では、データバッファの受信領域の残りバイト数を検出する残りバイト数検出回路を含み、前記制御回路が、バスに接続されるデバイスに対して出力されるリクエスト信号をアクティブにした後に、データバッファの受信領域の残りバイト数がＬバイト（Ｌは自然数）になった場合に、リクエスト信号を非アクティブにするようにしてもよい。
【００２０】
このようにすれば、リクエスト信号が非アクティブになった後に、バスに接続されるデバイスがデータを転送してきた場合にも、これに対処できるようになる。なおＬをＮ×Ｋ以上とすることもできる。
【００２１】
また本発明は、バスを介して受信したデータをデータバッファに書き込む制御を行うデータ転送制御回路であって、少なくとも１つの受信バッファを含む受信バッファ部と、バスを介してデータを受信し、受信したデータを受信バッファに書き込む制御回路と、受信バッファのデータをデータバッファの受信領域に書き込むアクセス制御回路と、データバッファの受信領域の残りバイト数を検出する残りバイト数検出回路とを含み、前記制御回路が、バスに接続されるデバイスに対して出力されるリクエスト信号をアクティブにした後に、データバッファの受信領域の残りバイト数がＬバイト（Ｌは自然数）になった場合に、リクエスト信号を非アクティブにするデータ転送制御回路に関係する。
【００２２】
また本発明では、前記Ｌの値が設定される書き換え可能なレジスタを含み、前記制御回路が、前記残りバイト数検出回路で検出された残りバイト数と、前記レジスタに設定されたＬの値とに基づいて、リクエスト信号を制御するようにしてもよい。
【００２３】
また本発明は上記のいずれかのデータ転送制御回路と、前記データ転送制御回路のバスに接続されるデバイスと、前記データ転送制御回路を制御するプロセッサとを含む電子機器に関係する。
【００２４】
また本発明は、バスを介してＫバイト単位（Ｋは自然数）でデータを受信し、受信したＫバイトのデータを、第１〜第Ｎ（Ｎは２以上の整数）の領域を有する受信バッファの第１〜第Ｎの各領域に順次書き込み、受信バッファのデータをデータバッファに書き込むデータ転送制御方法であって、受信バッファの第１〜第Ｎの領域の全てにデータが書き込まれた場合には、第１〜第Ｎの領域のデータをデータバッファに書き込み、受信バッファの第１〜第Ｎの領域のうちの第Ｊ（Ｊは１≦Ｊ＜Ｎの関係を満たす整数）の領域までデータが書き込まれた後、所定時間が経過しても、次の領域に書き込むべきデータが受信されなかった場合には、第１〜第Ｊの領域のデータをデータバッファに書き込むデータ転送制御方法に関係する。
【００２５】
【発明の実施の形態】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２６】
１．端数バイトの受信データ及びリクエスト終了後の受信データ
図１（Ａ）において、データ転送制御回路３０は、ＤＭＡバス（広義にはバス）に接続される外部のデバイス１０（アプリケーションデバイス）との間で、データの送受信を行う。このＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓｓ）バスは、リクエスト信号ＲＥＱ、アクノリッジ信号ＡＣＫ、ライト信号ＷＲ、リード信号ＲＤ、データＰＤ［７：０］などのラインを有するバスである。
【００２７】
そしてデータ転送制御回路３０は、ＤＭＡバスに接続されるデバイス１０から受信したデータをデータバッファ２０（ＲＡＭ）に書き込んだり、データバッファ２０のデータを読み出してデバイス１０に送信する。
【００２８】
この場合にデータバッファ２０は、データ転送制御回路３０（デバイス１０）からのみならず、ＵＳＢ（広義にはシリアルバス）やＣＰＵ（広義にはプロセッサ）によってもアクセスされる。従って、ＵＳＢやＣＰＵによりデータバッファ２０が占有されている際の待ち時間を確保するために、データ転送制御回路３０には受信バッファＲＸＢ１、ＲＸＢ２（第１、第２の受信バッファ）が設けられている。なおデータ転送制御回路３０に、図示しない送信バッファを設けることもできる。
【００２９】
さて、データバッファ２０の帯域は有限である（例えば６０Ｍｂｐｓ）。従って、デバイス１０から１バイト（広義にはＫバイト。Ｋは自然数）のデータを受信する毎に、その受信した１バイトのデータをそのままデータバッファ２０に書き込むと、データバッファ２０がデータ転送制御回路３０に占有されてしまい、ＵＳＢやＣＰＵによるアクセスが阻害される。このため図１（Ａ）では４バイト（広義にはＮ×Ｋバイト。Ｎは２以上の整数）のデータが受信バッファに蓄積される毎に、３２ビット幅のデータバスを有するデータバッファ２０（ＲＡＭ）にデータを書き込んでいる。
【００３０】
より具体的には受信バッファＲＸＢ１は領域Ｒ１１、Ｒ１２、Ｒ１３、Ｒ１４（広義には第１〜第Ｎの領域）を有し、ＲＸＢ２も領域Ｒ２１、Ｒ２２、Ｒ２３、Ｒ２４（広義には第１〜第Ｎの領域）を有している。そしてこれらのＲ１１〜Ｒ１４、Ｒ２１〜Ｒ２４の各領域は、１バイト（広義にはＫバイト）のデータを蓄積できるようになっている。そしてＤＭＡバスを介してデバイス１０から１バイト（Ｋバイト）のデータを受信する毎に、この受信した１バイトのデータが受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４に順次書き込まれてゆく。そして図１（Ａ）に示すように受信バッファＲＸＢ１の全ての領域Ｒ１１〜Ｒ１４にデータが書き込まれると、書き込まれた４バイトのデータが、３２ビット（広義にはＮ×８ビット）幅のデータバスを介してデータバッファ２０に書き込まれる。そして図１（Ｂ）に示すように、ＤＭＡバスから、次の１バイトのデータを受信すると、その１バイトのデータは受信バッファＲＸＢ２の領域Ｒ２１に書き込まれる。
【００３１】
以上のようにすれば、データバッファ２０に対して１バイト単位ではなく４バイト単位でデータを書き込まれるようになる。従って、データ転送制御回路３０によってデータバッファ２０が占有されてしまいＵＳＢやＣＰＵによるメモリアクセスが阻害されてしまうという事態を防止できる。
【００３２】
しかしながらこのような構成のデータ転送制御回路３０では、次のような課題があることが判明した。即ち図２（Ａ）のように受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１３（広義には第１〜第Ｊの領域。Ｊは１≦Ｊ＜Ｎの関係を満たす整数）までデータが書き込まれた後、図２（Ｂ）に示すように、ＤＭＡバス（デバイス１０）側から受信データが来なくなる事態が生じる場合がある。
【００３３】
そして、このような事態が生じると、次の１バイトのデータがＤＭＡバス側から来るまでの間、受信バッファＲＸＢ１のデータがデータバッファ２０に書き込まれなくなってしまう。そうすると、端数バイトの受信データが、受信バッファＲＸＢ１に蓄積されたまま残ってしまい、本来はＵＳＢ側に転送すべき受信データを転送できなくなるという問題が生じる。
【００３４】
また図１（Ａ）（Ｂ）のデータ転送制御回路３０には次のような課題もある。即ち図３（Ａ）のＡ１に示すように、データ転送制御回路３０がリクエスト信号ＲＥＱをアクティブ（例えばＨレベル）にすると、デバイス１０はアクノリッジ信号ＡＣＫやライト信号ＷＲをアクティブにして、データＰＤ［７：０］を送信する。そしてデータバッファ２０の受信領域がフルになって、図３（Ａ）のＡ２に示すようにデータ転送制御回路３０が信号ＲＥＱを非アクティブ（例えばＬレベル）にした場合に、本来は、Ａ３に示すようにデバイス１０からはデータＰＤ［７：０］が送られて来ないはずである。
【００３５】
ところが汎用のＤＭＡバスに接続されるデバイス１０には種々のものがある。このため、図３（Ｂ）のＡ４に示すように、信号ＲＥＱを非アクティブになった後も、デバイス１０が信号ＡＣＫやＷＲをアクティブにしてＰＤ［７：０］を送って来る場合があることが判明した。特にデバイス１０が、ＭＰＥＧエンコーダを有するストリームインターフェースのデバイスである場合には、その傾向が強い。
【００３６】
そして、このように信号ＲＥＱが非アクティブになった後に、データＰＤ［７：０］が送られてくると、データバッファ２０の受信領域（ＲＸＢ１、ＲＸＢ２からのデータを書き込む領域）に残り領域（空き領域）が無くなってしまい、データが消失してしまうおそれもある。また図３（Ｂ）（Ｃ）のＡ４、Ａ５に示すように、信号ＲＥＱがアクティブになった後に送られてくるデータのバイト数も、デバイス１０の種類に依存して相違する。従って、データ転送制御回路３０は、このような種々のデバイス１０がＤＭＡバスに接続された場合にも、適正な送受信処理を行わなければならないという課題がある。
【００３７】
２．構成例
以上のような課題を解決できるデータ転送制御回路３０の構成例を図４に示す。なお本実施形態のデータ転送制御回路３０は図４に示す全ての構成要素を含む必要はなく、その一部の構成要素を省略してもよい。
【００３８】
データ転送制御回路３０は受信バッファ部４０を含む。そして受信バッファ部４０は受信バッファＲＸＢ１、ＲＸＢ２を含む。また受信バッファ部４０は有効データレジスタＶＲＥＧ１、ＶＲＥＧ２を含む。なお受信バッファ部４０に含める受信バッファや有効データレジスタの個数は１個であってもよいし、３個以上であってもよい。
【００３９】
受信バッファＲＸＢ１は図５（Ａ）に示すように領域Ｒ１１〜Ｒ１４（第１〜第Ｎの領域）を有する（領域分割されている）。また受信バッファＲＸＢ２は領域Ｒ２１〜Ｒ２４（第１〜第Ｎの領域）を有する。そしてＲ１１〜Ｒ１４、Ｒ２１〜Ｒ２４の各領域には、例えば１バイト（Ｋバイト）のデータの蓄積（ｓｔｏｒｅ）が可能となっている。なお、各領域に２バイト以上のデータを蓄積できるようにしてもよい。
【００４０】
有効データレジスタＶＲＥＧ１は、受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４のうち、有効な受信データが蓄積された領域を特定するための領域特定情報を記憶する。また有効データレジスタＶＲＥＧ２は、受信バッファＲＸＢ２の領域Ｒ２１〜Ｒ２４のうち、有効な受信データが蓄積された領域を特定するための領域特定情報を記憶する。
【００４１】
より具体的には、有効データレジスタＶＲＥＧ１は、図５（Ａ）に示すように、受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４に対応する有効（Ｖａｌｉｄ）データビット（広義には領域特定情報）ＶＤ１１〜ＶＤ１４を有する。そして有効データビットＶＤ１１〜ＶＤ１４は、ＲＸＢ１の領域Ｒ１１〜Ｒ１４に有効な受信データが蓄積された場合に「１」（広義には第１のレベル。他の説明でも同様）に設定される。
【００４２】
また有効データレジスタＶＲＥＧ２は、受信バッファＲＸＢ２の領域Ｒ２１〜Ｒ２４に対応する有効データビットＶＤ２１〜ＶＤ２４を有する。そして有効データビットＶＤ２１〜ＶＤ２４は、ＲＸＢ２の領域Ｒ２１〜Ｒ２４に有効な受信データが蓄積された場合に「１」に設定される。
【００４３】
なお、領域特定情報はこのような有効データビットには限定されない。例えば有効データビットＶＤ１１〜ＶＤ１４或いはＶＤ２１〜ＶＤ２４のように４ビット（Ｎビット）のデータではなく、Ｐビット（ＰはＮ＝２Ｐの関係を満たす自然数）のデータを用いてもよい。
【００４４】
図４のデータ転送制御回路３０は制御回路５０を含む。この制御回路５０は、受信処理を制御する受信制御回路５２や、受信バッファＲＸＢ１、ＲＸＢ２のポインタを制御するポインタ制御回路５４を含む。
【００４５】
制御回路５０はデバイス１０との間のデータ転送処理（受信処理又は送信処理）を制御する。このデータ転送処理はＤＭＡバスを用いて行われる。そしてＤＭＡバスは、リクエスト信号ＲＥＱ、アクノリッジ信号ＡＣＫ、ライト信号ＷＲ、リード信号ＲＤ、データＰＤ［７：０］などのラインを有するバスである。
【００４６】
ここで信号ＲＥＱは、データ転送制御回路３０（スレーブ側）がデバイス１０（マスター側）に対してデータ転送を要求するための信号であり、信号ＡＣＫはそれに対するデバイス１０側のアクノリッジ信号である。そして信号ＲＥＱがアクティブ（例えばＨレベル）になった後、デバイス１０が信号ＷＲ又はＲＤをアクティブにすることで、１バイト（Ｋバイト）のデータＰＤ［７：０］が非同期で転送される。このようにすることで、ＤＭＡバスを介して１バイト単位（Ｋバイト単位）でデータＰＤ［７：０］が受信されるようになる。なお同期転送を行う場合には、例えばライト信号ＷＲのラインを同期転送用のクロックの入出力ラインに設定すればよい。また図４ではデバイス１０がＤＭＡ転送のマスター側となりデータ転送制御回路３０がスレーブ側となっているが、これを逆にしてもよい。
【００４７】
制御回路５０は受信バッファＲＸＢ１、ＲＸＢ２への受信データの書き込みも制御する。また図示しない送信バッファからの送信データの読み出しも制御する。
【００４８】
例えば受信バッファＲＸＢ１、ＲＸＢ２に受信データを書き込む場合には、制御回路５０はライト信号ＷＲをアクティブにしてデータＰＤ［７：０］をＲＸＢ１、ＲＸＢ２に出力する。この場合にＲＸＢ１、ＲＸＢ２の領域Ｒ１１〜Ｒ１４、Ｒ２１〜Ｒ２４のどの領域に受信データを書き込むかは、ポインタ制御回路５４により制御される信号Ｐｏｉｎｔｅｒにより決められる。例えば信号Ｐｏｉｎｔｅｒが０〜３を指示した場合には、受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４に受信データが書き込まれる。また信号Ｐｏｉｎｔｅｒが４〜７を指示した場合には、受信バッファＲＸＢ２の領域Ｒ２１〜Ｒ２４に受信データが書き込まれる。このようにすることで、ＤＭＡバスを介して受信した１バイト（Ｋバイト）のデータが、受信バッファＲＸＢ１、ＲＸＢ２の領域Ｒ１１〜Ｒ１４、Ｒ２１〜Ｒ２４に、順次（Ｒ１１〜Ｒ１４の順序、Ｒ２１〜Ｒ２４の順序で）、書き込まれるようになる。
【００４９】
データ転送制御回路３０はアクセス制御回路６０を含む。このアクセス制御回路６０はデータバッファ２０へのアクセス制御（書き込み制御、読み出し制御）を行う。より具体的には、受信バッファＲＸＢ１、ＲＸＢ２のデータをデータバッファ２０の受信領域に書き込んだり、図示しない送信バッファに書き込む送信データを、データバッファ２０から読み出す。
【００５０】
アクセス制御回路６０とデータバッファ２０との間は、ライトリクエスト信号ＷｒＲｅｑ、ライトアクノリッジ信号ＷｒＡｃｋ、ライトデータＷｒＤａｔａ［３１：０］、有効データ信号ＷｒＶａｌｉｄ［３：０］などのラインを有するバス（データバッファ側バス）で接続されている。ここで信号ＷｒＲｅｑは、データバッファ２０に対してデータの書き込みを要求する信号である。
【００５１】
より具体的には、データバッファ２０にアクセスする際にアクセス制御回路６０は、信号ＷｒＲｅｑをアクティブにして、ライトデータＷｒＤａｔａ［３１：０］及び有効データ信号ＷｒＶａｌｉｄ［３：０］をデータバッファ２０に出力する。この時、複数の書き込み要求（データ転送制御回路３０、ＵＳＢ、ＣＰＵからの要求）が発生している場合には、図示しない調停回路により調停が行われる。そしてこの調停でデータ転送制御回路３０が勝つと、データバッファ２０側からの信号ＷｒＡｃｋがアクティブになり、アクセス制御回路６０からデータバッファ２０への受信データの書き込みが許可される。その後、アクセス制御回路６０は信号ＷｒＲｅｑを非アクティブにする。
【００５２】
この場合に本実施形態では、ＲＸＢ１、ＲＸＢ２の領域Ｒ１１〜Ｒ１４、Ｒ２１〜Ｒ２４のうち、有効データビットが「１」（第１のレベル）に設定された領域のデータが、データバッファ２０に書き込まれる。
【００５３】
より具体的にはアクセス制御回路６０は、受信バッファＲＸＢ１、ＲＸＢ２に蓄積されている４バイトの受信データを信号ＢＵＦ１、ＢＵＦ２としてＲＸＢ１、ＲＸＢ２から受ける。また有効データレジスタＶＲＥＧ１、ＶＲＥＧ２の有効データビットＶＤ１１〜ＶＤ１４、ＶＤ２１〜ＶＤ２４を、信号Ｖａｌｉｄ１、Ｖａｌｉｄ２として受ける。そしてアクセス制御回路６０は、有効データビットＶＤ１１〜ＶＤ１４（信号Ｖａｌｉｄ１）、ＶＤ２１〜ＶＤ２４（Ｖａｌｉｄ２）が「１」（第１のレベル）の場合にアクティブになる有効データ信号ＷｒＶａｌｉｄ［３：０］（広義には第１〜第Ｎの有効データ信号）を、データバッファ２０に出力する。そしてアクセス制御回路６０は、この信号ＷｒＶａｌｉｄ［３：０］（チップセレクト信号）を用いて、データバッファ２０（バイト・ライト型ＲＡＭ）の受信領域（ＷｒＶａｌｉｄで指定される領域）にデータを書き込むことになる。
【００５４】
データ転送制御回路３０は残りバイト数検出回路７０を含む。ここで残りバイト数検出回路７０は、データバッファ２０の受信領域（受信バッファからの受信データが書き込まれる領域）の残りバイト数（受信データが未だ書き込まれていない残り領域のバイト数）を検出する回路である。この残りバイト数検出回路７０は、残りバイト数カウンタなどにより構成できる。
【００５５】
そして残りバイト数検出回路７０は、データバッファ２０の受信領域の残りバイト数を示すカウント値Ｌｉｍｃｏｕｎｔを制御回路５０に出力する。そして制御回路５０は、リクエスト信号ＲＥＱをアクティブ（例えばＨレベル）にした後に、データバッファ２０の受信領域の残りバイト数がＬバイト（Ｌは自然数。更に望ましくはＬ≧Ｎ×Ｋ）になった場合に、リクエスト信号ＲＥＱを非アクティブ（例えばＬレベル）にする。このようにすることで図３（Ａ）（Ｂ）（Ｃ）で説明した問題を解決できる。
【００５６】
なお、この場合のＬ（例えばＬ＝１６）の値は、Ｌ値レジスタ５３に設定される。このＬ値レジスタ５３は、ＣＰＵ（プロセッサ）などによりその値を自由に書き換えることができるレジスタである。そして制御回路５０は、残りバイト数検出回路７０で検出された残りバイト数（Ｌｉｍｃｏｕｎｔ）と、Ｌ値レジスタ５３に設定されたＬの値とに基づいて、信号ＲＥＱの制御を行う。
【００５７】
データ転送制御回路３０はタイマ回路７２を含む。このタイマ回路７２は例えばタイマ・カウンタなどを備え、受信バッファ（ＲＸＢ１、ＲＸＢ２）への書き込み制御に関する時間計測処理を行う。より具体的には、受信バッファの１つの領域（例えばＲ１２）にデータが書き込まれた後、次の領域（例えばＲ１３）にデータが書き込まれるまでの時間を計測し、その計測結果であるカウント値Ｔｃｏｕｎｔを制御回路５０に出力する。
【００５８】
そして制御回路５０は、受信バッファの１つの領域にデータを書き込んだ後、所定時間が経過したか否かを、このカウント値Ｔｃｏｕｎｔに基づいて判断する。そして、所定時間が経過しても、次の領域に書き込むべきデータが受信（蓄積）されなかった場合には、一方の受信バッファ（例えばＲＸＢ１）の領域（例えばＲ１２）を指していたポインタを、他方の受信バッファ（例えばＲＸＢ２）の領域（例えばＲ２３）を指すように制御する。
【００５９】
このようにすれば、受信バッファの領域（Ｒ１１〜Ｒ１４、或いはＲ２１〜Ｒ２４）の途中の領域（例えばＲ１１、Ｒ１２、Ｒ１３、或いはＲ２１、Ｒ２２、Ｒ２３。広義には第Ｊの領域）までデータが書き込まれた後、所定時間が経過した場合に、その途中までの領域のデータがデータバッファ２０に書き込まれるようになる。
【００６０】
３．動作
次に本実施形態のデータ転送制御回路３０の動作を図面を用いて詳細に説明する。本実施形態では図５（Ａ）のＢ１に示すように受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４（第１〜第Ｎの領域）の全てにデータが書き込まれると、図５（Ｂ）のＢ２に示すようにＲ１１〜Ｒ１４のデータがデータバッファ２０に書き込まれる。即ち４バイト（Ｎ×Ｋバイト）のデータが受信バッファに蓄積される毎にそのデータがデータバッファ２０に書き込まれる。
【００６１】
そして、このようにＲＸＢ１（第１の受信バッファ）の領域Ｒ１１〜Ｒ１４のデータがデータバッファ２０に書き込まれた場合には、次に受信したデータは、図５（Ｂ）のＢ３に示すように、ＲＸＢ２（第２の受信バッファ）の領域Ｒ２１（第１の領域）に書き込まれる。
【００６２】
次に、ＲＸＢ２の領域Ｒ２１〜Ｒ２４の全てにデータが書き込まれると、今度はこのＲ２１〜Ｒ２４のデータがデータバッファ２０に書き込まれる。このように本実施形態では、受信バッファＲＸＢ１、ＲＸＢ２に蓄積された４バイトのデータが、交互にデータバッファ２０に書き込まれる。
【００６３】
なお受信バッファからデータバッファ２０へのデータの書き込みは、有効データレジスタＶＲＥＧ１、ＶＲＥＧ２の有効データビットＶＤ１１〜ＶＤ１４、ＶＤ２１〜ＶＤ２４に基づいてアクセス制御回路６０が行う。例えば図５（Ａ）では有効データビットＶＤ１１〜ＶＤ１４の全てが「１」になっているため、全ての領域Ｒ１１〜Ｒ１４のデータがデータバッファ２０に書き込まれる。
【００６４】
さて図６（Ａ）のＣ１では、受信バッファＲＸＢ１の領域Ｒ１１〜Ｒ１４（第１〜第Ｎの領域）のうち、途中の領域Ｒ１３（広義には第Ｊの領域。Ｊは１≦Ｊ＜Ｎの関係を満たす整数）までデータが書き込まれている。この場合に図２（Ｂ）で説明したように、デバイス１０が、次の領域Ｒ１４に蓄積すべき受信データをいつまで経っても送って来ない場合がある。この場合に、受信バッファＲＸＢ１のデータをデータバッファ２０に書き込まないと、ＵＳＢ側にデータが送られないため、端数データが転送されずにＵＳＢ側のデータ転送が止まってしまうおそれがある。
【００６５】
そこで本実施形態では、途中の領域Ｒ１３（Ｒ１１、Ｒ１２でもよい）までデータが書き込まれた後、所定時間（タイマ回路７２で計測される時間）が経過しても、次の領域Ｒ１４に書き込むべきデータがＤＭＡバスを介して受信されなかった場合には、図６（Ｂ）のＣ２に示すように、領域Ｒ１１〜Ｒ１３（第１〜第Ｊの領域）のデータをデータバッファ２０に書き込む。このようにすれば、このデータバッファ２０に書き込まれたデータを、ＵＳＢ（高速シリアルバス）を介して転送できるようになり、ＵＳＢ側のデータ転送が止まってしてしまう事態を防止できる。
【００６６】
そして更に本実施形態では、ＲＸＢ１の領域Ｒ１１〜Ｒ１３（第１〜第Ｊの領域）のデータがデータバッファ２０に書き込まれた場合には、次に受信したデータを、図６のＣ３に示すように、ＲＸＢ２の領域Ｒ２４（第Ｊ＋１の領域）から書き込むようにしている。
【００６７】
このようにすれば図７（Ａ）のＤ１に示すように、データバッファ２０に隙間無くデータを格納できるようになる。即ち図６（Ｂ）のＣ３に示すように領域Ｒ２４からデータを蓄積するようにすると、Ｃ４に示すように、有効データレジスタＶＲＥＧ２の有効データビットＶＤ２４だけが「１」（第１のレベル）となり、他の有効データビットＶＤ２１、ＶＤ２２、ＶＤ２３は「０」（第２のレベル）になる。従って、これらの有効データビットＶＤ２１〜ＶＤ２４（信号Ｖａｌｉｄ２）を受けたアクセス制御回路６０は、有効データ信号ＷｒＶａｌｉｄ［３］のみをアクティブにして、ＷｒＶａｌｉｄ［２：０］を非アクティブにする。すると、データバッファ２０は、信号ＷｒＶａｌｉｄがアクティブになっている受信領域にのみ、受信バッファＲＸＢ２からのデータを格納するようになる。この結果、図７（Ａ）のＤ１に示すように、データバッファ２０に隙間無くデータを格納できるようになり、後段のＵＳＢ転送に不具合が生じる事態を防止できる。
【００６８】
そして、その後、次のデータが受信されると、図７（Ａ）のＤ２に示すように、そのデータは受信バッファＲＸＢ１の領域Ｒ１１に蓄積される。そして図７（Ｂ）のＤ３に示すように、ＲＸＢ１の全ての領域Ｒ１１〜Ｒ１４にデータが蓄積されると、そのデータは図８のＥ１に示すようにデータバッファ２０に書き込まれる。
【００６９】
以上のように本実施形態では、図６（Ａ）のＣ１い示すように受信バッファの途中までしかデータが蓄積されなかった場合にも、所定時間の経過を待った後、図６（Ｂ）のＣ２のように、端数バイト（４バイト未満）のデータがデータバッファ２０に書き込まれる。従って、後段のＵＳＢ転送が停止してしまう事態を防止できる。そして、この場合に、そのまま次の４バイトのデータをデータバッファ２０に書き込むと、データバッファ２０に隙間領域が生じてしまう。
【００７０】
しかしながら本実施形態では、図６（Ｂ）のＣ３、図７（Ａ）のＤ１に示すように、その隙間領域を埋めるようにデータがデータバッファ２０に書き込まれるため、データバッファ２０に間断無くデータを蓄積することができ、ＵＳＢ転送に不具合が生じる事態を防止できる。
【００７１】
更に本実施形態では、リクエスト信号ＲＥＱに対しても従来には無い工夫を施している。即ち図９（Ａ）のＦ１に示すように、デバイス１０の種類によっては、信号ＲＥＱを非アクティブにした後もデータＰＤ［７：０］を送ってくるデバイスがある。このようなデバイスに対処するために本実施形態では図９（Ｂ）のＦ２に示すように、データバッファ２０の受信領域がフル（ｆｕｌｌ）になる前に信号ＲＥＱを非アクティブにしている。
【００７２】
より具体的には、デバイス１０に対する信号ＲＥＱをアクティブにした後に、データバッファ２０の受信領域の残りバイト数がＬバイト（Ｌは自然数。更に望ましくはＬ≧Ｎ×Ｋ）になった場合に、信号ＲＥＱを非アクティブにする。例えば図９（Ａ）のＦ１に示すように信号ＲＥＱが非アクティブになった後に２バイトの余分なデータを送ってくるデバイス１０がＤＭＡバスに接続されている場合には、少なくともＬを２以上に設定する。このようにすると、図９（Ｂ）のＦ２に示すタイミングで信号ＲＥＱが非アクティブになる。従って、その後にデバイス１０が余分な２バイトのデータを転送してきた場合にも、データバッファ２０の受信領域が溢れ状態になってしまう事態を防止できる。これにより、適正なデータ転送を実現できる。
【００７３】
しかも、このＬの値は、図４のＬ値レジスタ５３にＣＰＵを介して書き込むことで、可変に制御できる。従って、種々のデバイス１０がＤＭＡバスに接続されても、これに対処できるようになり、ＤＭＡバスの汎用性を高めることができる。
【００７４】
図１０に本実施形態のデータ転送制御回路３０の動作や各信号の動きを説明する詳細な信号波形例を示す。
【００７５】
図１０のＧ１に示すように信号ＲＥＱがアクティブになると、Ｇ２、Ｇ３、Ｇ４に示すようにデバイス１０が信号ＡＣＫ及びＷＲをアクティブにする。これによりＧ５、Ｇ６、Ｇ７に示すように、受信バッファＲＸＢ１に１バイト単位でデータが順次書き込まれる。そしてこの時にＧ８、Ｇ９、Ｇ１０に示すように有効データビットＶＤ１１、ＶＤ１２、ＶＤ１３に、順次「１」がセットされてゆく。またＧ１１、Ｇ１２、Ｇ１３に示すように、データを書き込むべき領域Ｒ１１、Ｒ１２、Ｒ１３は、ポインタ制御回路５４からのＰｏｉｎｔｅｒにより指定される。このＰｏｉｎｔｅｒは、それが指定する領域にデータが書き込まれる毎に更新（インクリメント）される。
【００７６】
そして図１０のＧ１４、Ｇ１５では、１つの領域にデータを書き込んだ後、所定時間内に次の領域にデータが書き込まれている。即ちタイマ回路７２からのカウント値Ｔｃｏｕｎｔが「０」になる前に、次の領域にデータが書き込まれている。従って、この次の領域へのデータの書き込みにより、カウント値Ｔｃｏｕｎｔが初期値Ｍ（例えばＭ＝４）に戻される。
【００７７】
ところが図１０のＧ１６では、領域Ｒ１３にデータを書き込んだ後、所定時間が経過してしまっている。即ちカウント値Ｔｃｏｕｎｔが「０」になってしまっている。従ってこの場合にはＧ１７に示すようにデータバッファ２０へのライトリクエスト信号ＷｒＲｅｑがアクティブになり、Ｇ１８に示すように受信バッファＲＸＢ１からデータバッファ２０にデータが書き込まれる。即ち図６（Ａ）のＣ１、図６（Ｂ）のＣ２に示すように、途中の領域までのデータがデータバッファ２０に書き込まれる。
【００７８】
そしてその後、Ｇ１９に示すようにデバイス１０が信号ＡＣＫ及びＷＲをアクティブにすると、Ｇ２０に示すようにそのデータが受信バッファＲＸＢ２に書き込まれる。この時、Ｇ２１に示すようにＰｏｉｎｔｅｒは「７」を指しているため、図６（Ｂ）のＣ３に示すように、受信データはＲＸＢ２の領域Ｒ２４（第Ｊ＋１の領域）に書き込まれることになる。そして、この書き込まれたデータは、Ｇ２２、Ｇ２３に示すようにデータバッファ２０に書き込まれる。このようにすることで図７（Ａ）のＤ１に示すように隙間無くデータをデータバッファ２０に書き込むことができる。
【００７９】
また図１０のＧ２４のタイミングでは、残りバイト数検出回路７０からのカウント値Ｌｉｍｃｏｕｎｔが１６（広義にはＬ）になっている。即ちデータバッファ２０の受信領域の残りバイト数が１６バイト（１６バイト以下）になっている。従ってこの場合には、Ｇ２５に示すように信号ＲＥＱを非アクティブにする。このようにすれば、信号ＲＥＱが非アクティブになった後にＧ２６、Ｇ２７、Ｇ２８、Ｇ２９に示すようにデバイス１０がデータを転送してきても、データバッファ２０の受信領域が溢れ状態になってしまう事態を防止できる。
【００８０】
４．データ転送制御装置及び電子機器
図１１に本実施形態のデータ転送制御回路１８０を含むデータ転送制御装置１００及びデータ転送制御装置１００を含む電子機器１１０の構成例を示す。なおデータ転送制御装置１００及び電子機器１１０は、図１１の全ての構成要素を含む必要はなく、その一部を省略する構成にしてもよい。
【００８１】
データ転送制御装置１００は、トランシーバ回路１２０、ＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）１３０、エンドポイント管理回路１４０、バッファ管理回路１５０、データバッファ１６０（データバッファ２０に相当）、バルク転送管理回路１７０、データ転送制御回路１８０（データ転送制御回路３０に相当）、ＣＰＵインターフェース回路１９０を含む。
【００８２】
ここで、トランシーバ回路１２０は、ＵＳＢ（シリアルバス）のＦＳモードやＨＳモードでのデータ転送を実現するための回路である。このトランシーバ回路１２０としては、例えばＵＳＢ２．０の物理層回路や、論理層回路の一部についてのインターフェースを定義したＵＴＭＩ（ＵＳＢ２．０  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）に準拠したマクロセルを用いることができる。このトランシーバ回路１２０には、例えば、差動信号ＤＰ、ＤＭを用いてＵＳＢ上のデータを送受信するアナログフロントエンド回路（受信回路、送信回路）を含ませることができる。また、ビットスタッフィング、ビットアンスタッフィング、シリアル・パラレル変換、パラレル・シリアル変換、ＮＲＺＩデコード、ＮＲＺＩエンコード、サンプリングクロック生成などの処理を行う回路を含ませることができる。またデータ転送制御装置１００が使用する動作クロックや、サンプリングクロックの生成に使用されるクロックなどを生成するＰＬＬを含ませることができる。
【００８３】
ＳＩＥ１３０は、ＵＳＢのパケット転送処理などの種々の処理を行う回路である。このＳＩＥ１３０（広義には第１のインターフェース回路）はパケットハンドラ回路１３２、サスペンド＆レジューム制御回路１３４、トランザクション管理回路１３６を含む。ここでパケットハンドラ回路１３２は、ヘッダ及びデータからなるパケットの組み立て（生成）や分解などを行ったり、ＣＲＣの生成や解読を行う。またサスペンド＆レジューム制御回路１３４は、サスペンドやレジューム時のシーケンス制御を行う。またトランザクション管理回路１３６は、トークン、データ、ハンドシェークなどのパケットにより構成されるトランザクションを管理する。そしてトランザクション管理回路１３６は、トークンパケットを受信した場合には、自分宛か否かを確認し、自分宛の場合には、データパケットの転送処理を行い、その後に、ハンドシェークパケットの転送処理を行う。
【００８４】
エンドポイント管理回路１４０は、データバッファ１６０の各記憶領域の入り口となるエンドポイントを管理する回路であり、エンドポイントの属性情報を記憶するレジスタ（レジスタセット）などを含む。
【００８５】
バッファ管理回路１５０は、例えばＲＡＭなどで構成されるデータバッファ１６０を管理する回路である。より具体的には、書き込みアドレスや読み出しアドレスを生成し、データバッファ１６０へのデータの書き込み処理やデータバッファ１６０からのデータの読み出し処理を行う。
【００８６】
データバッファ１６０（パケットバッファ、パケット記憶手段）は、ＵＳＢを介して転送されるデータ（パケット）を一時的に記憶するものであり、ＵＳＢでのデータ転送速度と、ＤＭＡバスやＣＰＵバスでのデータ転送速度との速度差を補償する機能などを有する。
【００８７】
バルク転送管理回路１７０は、ＵＳＢにおけるバルク転送を管理するための回路である。またデータ転送制御回路１８０は、図４等で説明した回路であり、ＤＭＡバスを介して外部のデバイス２１０との間でＤＭＡ転送などを行う。またＣＰＵインターフェース回路１９０はＣＰＵバスに接続され、ＣＰＵ２２０とのインターフェース機能を実現する回路である。
【００８８】
電子機器１１０は、データ転送制御装置１００、ＡＳＩＣなどで構成されるデバイス２１０（アプリケーションデバイス）、ＣＰＵ２２０、ＲＯＭ２３０、ＲＡＭ２４０、表示部２５０、操作部２６０を含む。
【００８９】
ここでデバイス２１０は、例えばハードディスクドライブ、光ディスクドライブを制御するデバイスや、ＭＰＥＧエンコーダ、ＭＰＥＧデコーダ等を含むデバイスなどである。
【００９０】
ＣＰＵ２２０は機器全体の制御などを行う。ＲＯＭ２３０は制御プログラムや各種のデータを記憶する。ＲＡＭ２４０はＣＰＵ２２０やデータ転送制御装置１００のワーク領域やデータ格納領域として機能する。表示部２５０は種々の情報をユーザに表示する。操作部２６０はユーザが電子機器を操作するためのものである。
【００９１】
なお図１１ではＤＭＡバスとＣＰＵバスが分離されているが、これらを共通化してもよい。また本実施形態が適用できる電子機器としては、光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＴＶチューナ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなどの種々のものがある。
【００９２】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【００９３】
例えばデータ転送制御回路、データ転送制御装置、電子機器の構成は、図４、図１１等で説明した構成に限定されず、種々の変形実施が可能である。
【００９４】
また取り扱われるデータのバイト数や領域のサイズも本実施形態で説明したものに限定されない。
【００９５】
また本発明では、高速シリアルバスとしてＵＳＢ（ＵＳＢ２．０）を例にとり説明したが、これに限定されない。例えばＵＳＢと同様の思想に基づく規格や、ＵＳＢを発展させた規格に基づく送受信処理や、ＩＥＥＥ１３９４規格などの他のインターフェース規格に基づくバスであってもよい。
【００９６】
また、明細書又は図面中の記載において広義な用語（バス、シリアルバス、プロセッサ、Ｋバイト、Ｎ×Ｋバイト、第１〜第Ｎの領域、第１〜第Ｊの領域、領域特定情報等）として引用された用語（ＤＭＡバス、ＵＳＢ、ＣＰＵ、１バイト、４バイト、Ｒ１１〜Ｒ１４・Ｒ２１〜Ｒ２４、Ｒ１１〜Ｒ１３・Ｒ２１〜Ｒ２３、有効データビット等）は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【００９７】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【図１】図１（Ａ）（Ｂ）はデータ転送制御回路の受信バッファについての説明図である。
【図２】図２（Ａ）（Ｂ）もデータ転送制御回路の受信バッファについての説明図である。
【図３】図３（Ａ）（Ｂ）（Ｃ）はＤＭＡバスでの受信処理についての説明図である。
【図４】本実施形態のデータ転送制御回路の構成例である。
【図５】図５（Ａ）（Ｂ）はデータ転送制御回路の動作の説明図である。
【図６】図６（Ａ）（Ｂ）はデータ転送制御回路の動作の説明図である。
【図７】図７（Ａ）（Ｂ）はデータ転送制御回路の動作の説明図である。
【図８】データ転送制御回路の動作の説明図である。
【図９】図９（Ａ）（Ｂ）はリクエスト信号の制御手法の説明図である。
【図１０】本実施形態の詳細な動作を説明する信号波形図である。
【図１１】データ転送制御装置、電子機器の構成例である。
【符号の説明】
ＲＸＢ１、ＲＸＢ２  受信バッファ、
ＶＲＥＧ１、ＶＲＥＧ２  有効データレジスタ、
Ｒ１１〜Ｒ１４、Ｒ２１〜Ｒ２４  第１〜第Ｎの領域
ＶＤ１１〜ＶＤ１４、ＶＤ２１〜ＶＤ２４  第１〜第Ｎの有効データビット、
ＷｒＶａｌｉｄ  有効データ信号、ＲＥＱ  リクエスト信号
１０、デバイス、２０  データバッファ、３０  データ転送制御回路、
４０  受信バッファ部、５０  制御回路、５２  受信制御回路、
５３  Ｌ値レジスタ、５４  ポインタ制御回路、６０  アクセス制御回路、
７０  残りバイト数検出回路、７２  タイマ回路、
１００  データ転送制御装置、１１０  電子機器、１２０  トランシーバ回路
１３０  ＳＩＥ、１３２  パケットハンドラ回路、
１３４  サスペンド＆レジューム回路、１３６  トランザクション管理回路
１４０  エンドポイント管理回路、１５０  バッファ管理回路、
１６０  データバッファ、１７０  バルク転送管理回路、
１８０  データ転送制御回路、１９０  ＣＰＵインターフェース回路、
２１０  デバイス、２２０  ＣＰＵ、２３０  ＲＯＭ、２４０  ＲＡＭ
２５０  表示部、２６０  操作部
【図１】
2004234348.tif 000003
【図２】
2004234348.tif 000004
【図３】
2004234348.tif 000005
【図４】
2004234348.tif 000006
【図５】
2004234348.tif 000007
【図６】
2004234348.tif 000008
【図７】
2004234348.tif 000009
【図８】
2004234348.tif 000010
【図９】
2004234348.tif 000011
【図１０】
2004234348.tif 000012
【図１１】
2004234348.tif 000013