(57)【特許請求の範囲】
【請求項１】
シリアルデータをパラレルデータに変換するシリアル／パラレル変換回路であって、
第１のクロックで入力されるシリアルデータを受け、保持するデータ保持手段と、
前記データ保持手段に保持されるデータが有効か否かを、複数のビットで構成されるデータセル単位で判断する判断手段と、
有効と判断されたデータセルのデータを、第１のクロックよりも周波数が低い第２のクロックで前記データ保持手段から出力する手段と、
を含むことを特徴とするシリアル／パラレル変換回路。
【請求項２】
請求項１において、
前記判断手段が、
前記第２のクロックの第Ｋのクロックサイクルにおいて所与のビットのデータが有効であると判断したデータセルについては、前記第２のクロックの第Ｋ＋１のクロックサイクル以降のクロックサイクルにおいて有効なデータセルであると判断することを特徴とするシリアル／パラレル変換回路。
【請求項３】
請求項１又は２において、
前記判断手段が、
前記第２のクロックのクロックサイクル毎にデータセルが有効か否かを判断し、データセルが有効でないと判断した場合には、該データセルのデータの出力を少なくとも１クロックサイクル分だけウェイトすることを特徴とするシリアル／パラレル変換回路。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、
前記判断手段が、
前記データステータス保持手段からのデータステータスに基づいて、各データセルが有効か否かを判断することを特徴とするシリアル／パラレル変換回路。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、
前記判断手段が、
前記データステータス保持手段からのデータステータスに基づいて、各データセルのデータの出力をウェイトするか否かを判断することを特徴とするシリアル／パラレル変換回路。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、
前記判断手段が、
前記データステータス保持手段に保持されているデータステータスを、データセル単位でクリアすることを特徴とするシリアル／パラレル変換回路。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段と、
前記第１のクロックのＮクロックサイクル毎に周期的にパルスがアクティブになると共にパルスがアクティブになる期間が１クロックサイクルずつ互いにずれている第１〜第Ｎの書き込みパルス信号を生成する書き込みパルス生成手段とを含み、
前記データ保持手段が、
前記第１〜第Ｎの各書き込みパルス信号に基づいてデータを保持し、
前記データステータス保持手段が、
前記第１〜第Ｎの各書き込みパルス信号に基づいてデータのステータスを保持することを特徴とするシリアル／パラレル変換回路。
【請求項８】
シリアルデータをパラレルデータに変換するシリアル／パラレル変換回路であって、
第１のクロックで入力されるシリアルデータを受け、保持するデータ保持手段と、
前記データ保持手段からのデータを、第１のクロックよりも周波数が低い第２のクロックで出力する手段と、
前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段と、
前記第１のクロックのＮクロックサイクル毎に周期的にパルスがアクティブになると共にパルスがアクティブになる期間が１クロックサイクルずつ互いにずれている第１〜第Ｎの書き込みパルス信号を生成する書き込みパルス生成手段とを含み、
前記データ保持手段が、
前記第１〜第Ｎの各書き込みパルス信号に基づいてデータを保持し、
前記データステータス保持手段が、
前記第１〜第Ｎの各書き込みパルス信号に基づいてデータのステータスを保持することを特徴とするシリアル／パラレル変換回路。
【請求項９】
バスを介したデータ転送のためのデータ転送制御装置であって、
請求項１乃至８のいずれかのシリアル／パラレル変換回路と、
前記シリアル／パラレル変換回路からのデータを受け、データ転送のための所与の処理を行う回路と、
を含むことを特徴とするデータ転送制御装置。
【請求項１０】
請求項９において、
所与の規格に準拠してデータ転送が行われる場合において、
前記所与の規格で定義されている前記第１のクロックの周波数よりも高い周波数の第３のクロックに基づいて、前記第２のクロックが生成されることを特徴とするデータ転送制御装置。
【請求項１１】
請求項９又は１０において、
ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）の規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項１２】
請求項９乃至１１のいずれかのデータ転送制御装置と、
前記データ転送制御装置及び前記バスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シリアル／パラレル変換回路、データ転送制御装置及び電子機器に関し、特に、シリアル／パラレル変換機能とクロック周波数差を吸収（補償）するバッファ機能とを併せ持つシリアル／パラレル変換回路、及びこのシリアル／パラレル変換回路が用いられるデータ転送制御装置、電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、パーソナルコンピュータと周辺機器（広義には電子機器）とを接続するためのインターフェース規格として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が注目を集めている。このＵＳＢには、従来は別々の規格のコネクタで接続されていたマウスやキーボードやプリンタなどの周辺機器を、同じ規格のコネクタで接続できると共にいわゆるプラグ＆プレイやホットプラグも実現できるという利点がある。
【０００３】
一方、このＵＳＢには、同じくシリアルバスインターフェース規格として脚光を浴びているＩＥＥＥ１３９４に比べて、転送速度が遅いという問題点がある。
【０００４】
そこで、従来のＵＳＢ１．１の規格に対する下位互換性を持ちながら、ＵＳＢ１．１に比べて格段に高速な４８０Ｍｂｐｓ（ＨＳモード）のデータ転送速度を実現できるＵＳＢ２．０規格が策定され、注目を浴びている。また、ＵＳＢ２．０の物理層回路や論理層回路のインターフェース仕様を定義したＵＴＭＩ（ＵＳＢ２．０  Ｔｒａｎｓｃｅｉｖｅｒ  Ｍａｃｒｏｃｅｌｌ  Ｉｎｔｅｒｆａｃｅ）も策定されている。
【０００５】
さて、このＵＳＢ２．０では、ＨＳ（Ｈｉｇｈ  Ｓｐｅｅｄ）モード時には４８０Ｍｂｐｓでデータ転送が行われるため、高速な転送速度が要求されるハードディスクドライブや光ディスクドライブなどのストレージ機器のインターフェースとして用いることができるという利点がある。
【０００６】
しかしながら、その一方で、ＵＳＢバスに接続されるデータ転送制御装置（物理層回路、論理層回路）は、４８０Ｍｂｐｓの転送データを取り扱わなければならないため、４８０ＭＨｚのクロック周波数で動作可能な高速な回路部分が必要になる。そして、微細加工が可能な最新の半導体プロセスを用いれば、このような４８０ＭＨｚでの回路動作も実現可能だが、最新の半導体プロセスを使用できない場合には、このような高速な回路動作の実現は非常に困難になる。
【０００７】
また、最新の半導体プロセスを使用せずに４８０ＭＨｚの高速回路動作を実現する１つの手法として、手作業により回路を配置、配線してクロックスキューを最小化し、同期動作を保証する手法がある。
【０００８】
しかしながら、このような手作業による回路の配置、配線は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）による回路合成や自動配置配線を利用した効率的な回路設計手法に比べて、設計期間の長期化や装置の高コスト化を招くと共に、データ転送制御装置（物理層回路、論理層回路）のマクロセル化の妨げにもなる。
【０００９】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、高速バスを介して転送されてくるデータのシリアル／パラレル変換に最適なシリアル／パラレル変換回路、及びこれを用いたデータ転送制御装置、電子機器を提供することにある。
【００１０】
また本発明の他の目的は、シリアル／パラレル変換機能とクロック周波数差等を吸収するバッファ機能とを併せ持つシリアル／パラレル変換回路、及びこれを用いたデータ転送制御装置、電子機器を提供することにある。
【００１１】
【課題を解決するための手段】
上記課題を解決するために本発明は、シリアルデータをパラレルデータに変換するシリアル／パラレル変換回路であって、第１のクロックで入力されるシリアルデータを受け、保持するデータ保持手段と、前記データ保持手段に保持されるデータが有効か否かを、複数のビットで構成されるデータセル単位で判断する判断手段と、有効と判断されたデータセルのデータを、第１のクロックよりも周波数が低い第２のクロックで前記データ保持手段から出力する手段とを含むことを特徴とする。
【００１２】
本発明によれば、周波数が速い第１のクロックでシリアルデータが入力されると、データ保持手段がこれを保持する。そして、データが有効か否かがデータセル単位で判断され、有効と判断されたデータセルが、第１のクロックよりも周波数が低い第２のクロックで出力される。
【００１３】
本発明によれば、入力されたシリアルデータがデータセル単位のパラレルデータで出力されるようになるため、データのシリアル／パラレル変換機能を実現できる。また、入力されたシリアルデータはデータ保持手段により保持され、有効と判断されたデータセルだけがデータ保持手段から出力されるようになるため、クロック周波数差、位相差等を吸収（補償）するバッファ機能も実現できる。
【００１４】
このように本発明によれば、シリアル／パラレル変換機能とクロック周波数差等を吸収するバッファ機能とを併せ持つというこれまでにないタイプのシリアル／パラレル変換回路を実現できる。しかも本発明によれば、判断手段は周波数の低い第２のクロックで動作できるようになるため、これらのシリアル／パラレル変換機能やバッファ機能を実現するための種々の処理を、時間的に余裕を持って行うことが可能になり、データ転送制御装置等に最適なシリアル／パラレル変換回路を提供できる。
【００１５】
また本発明は、前記判断手段が、前記第２のクロックの第Ｋのクロックサイクルにおいて所与のビットのデータが有効であると判断したデータセルについては、前記第２のクロックの第Ｋ＋１のクロックサイクル以降のクロックサイクルにおいて有効なデータセルであると判断することを特徴とする。このようにすれば、データセルの中の所与のビット（例えば先頭ビット）のデータの有効、非有効を判断するだけで、データセルの有効、非有効を判断できるようになるため、判断手段の構成や処理の簡素化を図れるようになる。
【００１６】
また本発明は、前記判断手段が、前記第２のクロックのクロックサイクル毎にデータセルが有効か否かを判断し、データセルが有効でないと判断した場合には、該データセルのデータの出力を少なくとも１クロックサイクル分だけウェイトすることを特徴とする。このようにウェイト制御を行えば、適切なデータだけを後段に出力できるようになる。また、データ保持手段がアンダフロー状態になった場合等にも、処理に破綻が生じるのを効果的に防止できる。更に、判断手段は、周波数が低い第２のクロックのクロックサイクル期間を利用してウェイト制御を行うことが可能になるため、よりインテリジェントなウェイト制御を実現できる。
【００１７】
また本発明は、前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、前記判断手段が、前記データステータス保持手段からのデータステータスに基づいて、各データセルが有効か否かを判断することを特徴とする。このようにデータ保持手段とは別にデータステータス保持手段を設けるようにすれば、データ保持手段の構成を簡素化できるようになり、シリアルデータの取り込み処理の信頼性の向上等を図れるようになる。
【００１８】
また本発明は、前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、前記判断手段が、前記データステータス保持手段からのデータステータスに基づいて、各データセルのデータの出力をウェイトするか否かを判断することを特徴とする。このようにすれば、データステータス保持手段のデータステータスをモニタするだけでウェイト制御を実現できるようになる。そして、ウェイト制御を実現することで、適切なデータだけを後段に出力できるようになると共にアンダフロー時においても処理に破綻が生じるのを防止できるようになる。
【００１９】
また本発明は、前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段を含み、前記判断手段が、前記データステータス保持手段に保持されているデータステータスを、データセル単位でクリアすることを特徴とする。このようにすれば、出力が済んだデータセルについてのデータステータスをクリアできるようになるため、そのデータステータスを他のデータのセルのデータステータスとして再度利用できるようになる。従って、例えばデータ保持手段をリングバッファ構造にした場合にも、適切なデータステータスをデータステータス保持手段に保持できるようになる。
【００２０】
また本発明は、前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段と、前記第１のクロックのＮクロックサイクル毎に周期的にパルスがアクティブになると共にパルスがアクティブになる期間が１クロックサイクルずつ互いにずれている第１〜第Ｎの書き込みパルス信号を生成する書き込みパルス生成手段とを含み、前記データ保持手段が、前記第１〜第Ｎの各書き込みパルス信号に基づいてデータを保持し、前記データステータス保持手段が、前記第１〜第Ｎの各書き込みパルス信号に基づいてデータのステータスを保持することを特徴とする。
【００２１】
また本発明は、シリアルデータをパラレルデータに変換するシリアル／パラレル変換回路であって、第１のクロックで入力されるシリアルデータを受け、保持するデータ保持手段と、前記データ保持手段からのデータを、第１のクロックよりも周波数が低い第２のクロックで出力する手段と、前記データ保持手段に保持されるデータのステータスを保持するデータステータス保持手段と、前記第１のクロックのＮクロックサイクル毎に周期的にパルスがアクティブになると共にパルスがアクティブになる期間が１クロックサイクルずつ互いにずれている第１〜第Ｎの書き込みパルス信号を生成する書き込みパルス生成手段とを含み、前記データ保持手段が、前記第１〜第Ｎの各書き込みパルス信号に基づいてデータを保持し、前記データステータス保持手段が、前記第１〜第Ｎの各書き込みパルス信号に基づいてデータのステータスを保持することを特徴とする。
【００２２】
本発明によれば、そのパルスが第１のクロックのＮ（Ｎは、例えばデータ保持手段やデータステータス保持手段のビット数）クロックサイクル毎に周期的にアクティブになるような書き込みパルス信号が生成される。そして、データ保持手段やデータステータス保持手段は、この書き込みパルス信号に基づいて動作する。従って、データ保持手段が含む保持手段（各ビットのデータを保持する手段）や、データステータス保持手段が含む保持手段（各ビットのデータのステータスを保持する手段）を、時間的に余裕を持たせて動作させることが可能になり、これらの保持手段の動作の信頼性を高めることができる。また、Ｎクロックサイクルの期間を利用して、オーバフロー制御などの種々の処理を実現することも可能になる。なお、データステータス保持手段は、データの全てのビットのステータスを保持する必要はなく、少なくともデータセル単位でデータのステータスを保持できればよい。そして、データの一部のビットのステータスだけを保持する場合には、第１〜第Ｎの書き込みパルス信号の一部のみを使用することになる。
【００２３】
また本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、上記のいずれかのシリアル／パラレル変換回路と、前記シリアル／パラレル変換回路からのデータを受け、データ転送のための所与の処理を行う回路とを含むことを特徴とする。
【００２４】
本発明によれば、シリアル／パラレル変換機能とクロック周波数差等を吸収するバッファ機能とを併せ持つシリアル／パラレル変換回路を用いて、バスを介して転送されるデータのシリアル／パラレル変換処理を実現できる。また、データ転送制御装置内部のクロックとバスに接続される外部装置のクロックとに周波数差や位相差がある場合にも、これを吸収することが可能になり、より信頼性の高いデータ転送処理を実現できる。
【００２５】
また本発明は、所与の規格に準拠してデータ転送が行われる場合において、前記所与の規格で定義されている前記第１のクロックの周波数よりも高い周波数の第３のクロックに基づいて、前記第２のクロックが生成されることを特徴とする。このようにすれば、バスに接続される外部装置がクロック周波数の規格を遵守していないような場合にも、柔軟にこれに対処できるデータ転送制御装置を実現できるようになる。
【００２６】
また本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）の規格に準拠したデータ転送を行うことを特徴とする。このようにすれば、例えばＵＳＢ２．０で規格化されたＨＳモードでのデータ転送等についても適正に実現できるようになる。
【００２７】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及び前記バスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置とを含むことを特徴とする。
【００２８】
本発明によれば、電子機器に使用されるデータ転送制御装置の低コスト化、信頼性の向上を図れるため、電子機器の低コスト化、信頼性の向上も図れるようになる。また、本発明によれば、高速な転送モードでデータ転送を行うことができるようになるため、電子機器の処理の高速化を図れるようになる。
【００２９】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００３０】
１．構成及び動作
１．１  データ転送制御装置
図１に本実施形態のデータ転送制御装置の構成の例を示す。
【００３１】
本実施形態のデータ転送制御装置は、データハンドラ回路４００、ＨＳ（Ｈｉｇｈ  Ｓｐｅｅｄ）回路４１０、ＦＳ（Ｆｕｌｌ  Ｓｐｅｅｄ）回路４２０、アナログフロントエンド回路４３０、クロック生成回路４４０、クロック制御回路４５０を含む。なお、本発明のデータ転送制御装置は、図１に示す回路ブロックの全てを含む必要はなく、それらの一部を省略する構成としてもよい。
【００３２】
データハンドラ回路４００（広義にはデータ転送を行うための所与の回路）は、ＵＳＢ等に準拠したデータ転送のための種々の処理を行う。より具体的には、送信時には、送信データにＳＹＮＣ（ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ）、ＳＯＰ（Ｓｔａｒｔ  Ｏｆ  Ｐａｃｋｅｔ）、ＥＯＰ（Ｅｎｄ  Ｏｆ  Ｐａｃｋｅｔ）を付加する処理や、ビットスタッフィング処理などを行う。一方、受信時には、受信データのＳＹＮＣ、ＳＯＰ、ＥＯＰを検出／削除する処理や、ビットアンスタッフィング処理などを行う。更に、データの送受信を制御するための各種のタイミング信号を生成する処理も行う。
【００３３】
なお、受信データはデータハンドラ回路４００から後段の回路であるＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）に出力され、送信データはＳＩＥからデータハンドラ回路４００に入力されることになる。
【００３４】
ＨＳ回路４１０は、データ転送速度が４８０ＭｂｐｓとなるＨＳ（Ｈｉｇｈ  Ｓｐｅｅｄ）でのデータの送受信を行うためのロジック回路であり、ＦＳ回路４２０は、データ転送速度が１２ＭｂｐｓとなるＦＳ（Ｆｕｌｌ  Ｓｐｅｅｄ）でのデータの送受信を行うためのロジック回路である。
【００３５】
ここで、ＨＳモードは、ＵＳＢ２．０により新たに定義された転送モードである。一方、ＦＳモードは、従来のＵＳＢ１．１で既に定義されている転送モードである。
【００３６】
ＵＳＢ２．０では、このようなＨＳモードが用意されているため、プリンタ、オーディオ、カメラなどにおけるデータ転送のみならず、ハードディスクドライブや光ディスクドライブ（ＣＤＲＯＭ、ＤＶＤ）などのストレージ機器におけるデータ転送も実現できるようになる。
【００３７】
ＨＳ回路４１０は、ＨＳＤＬＬ（Ｈｉｇｈ  Ｓｐｅｅｄ  Ｄｅｌａｙ  Ｌｉｎｅ  ＰＬＬ）回路１０、エラスティシティバッファ（ｅｌａｓｔｉｃｉｔｙ  ｂｕｆｆｅｒ）１２を含む。
【００３８】
ここでＨＳＤＬＬ回路１０は、受信データとクロック生成回路４４０（ＰＬＬ）からのクロックとに基づいて、データの取り込みクロックを生成する回路である。
【００３９】
またエラスティシティバッファ１２は、内部装置（データ転送制御装置）と外部装置（バスに接続される外部装置）とのクロック周波数差（クロックドリフト）等を吸収するための回路である。
【００４０】
アナログフロントエンド回路４３０は、ＦＳやＨＳでの送受信を行うためのドライバやレシーバを含むアナログ回路である。ＵＳＢではＤＰ（Ｄａｔａ＋）とＤＭ（Ｄａｔａ−）を用いた差動信号によりデータを送受信する。
【００４１】
クロック生成回路４４０は、装置内部で使用する４８０ＭＨｚのクロックや、装置内部及びＳＩＥで使用する６０ＭＨｚのクロックを生成する。
【００４２】
クロック生成回路４４０は、発振回路２０、ＨＳＰＬＬ２２、ＦＳＰＬＬ２４を含む。
【００４３】
ここで発振回路２０は、例えば外部振動子との組み合わせによりベースクロックを生成する。
【００４４】
ＨＳＰＬＬ（ＨＳ  Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）２２は、発振回路２０で生成されたベースクロックに基づいて、ＨＳモードで必要な４８０ＭＨｚのクロックと、ＦＳモード、装置内部及びＳＩＥで必要な６０ＭＨｚのクロックを生成するＰＬＬである。なお、ＨＳモードで送受信を行う場合には、このＨＳＰＬＬ２２によるクロック生成を有効にする必要がある。
【００４５】
ＦＳＰＬＬ（ＦＳ  Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）２４は、発振回路２０で生成されたベースクロックに基づいて、ＦＳモード、装置内部及びＳＩＥで必要な６０ＭＨｚのクロックを生成する。なお、このＦＳＰＬＬ２４によるクロック生成を有効にしている時には、ＨＳモードでの送受信は不可となる。
【００４６】
クロック制御回路４５０は、ＳＩＥからの各種の制御信号を受け、クロック生成回路４４０を制御する処理などを行う。なお、クロック生成回路４４０により生成された６０ＭＨｚのシステムクロックはクロック制御回路４５０を介してＳＩＥに出力される。
【００４７】
１．２  シリアル／パラレル変換回路
さて、ＵＳＢ２．０の物理層回路や論理層回路のインターフェース仕様を定義したＵＴＭＩでは、内部装置（データ転送制御装置）と外部装置（バスに接続される外部装置）とのクロック周波数差等を吸収するためのバッファであるエラスティシティバッファを設けることが推奨されている。
【００４８】
図２に、エラスティシティバッファの実現例を比較例として示す。
【００４９】
図２に示すエラスティシティバッファ６００は、２４ビットのデプスのシリアルバッファ（ＦＩＦＯ）であり、ＣＬＫ１（ＨＳＤＬＬから出力される取り込みクロックであり、外部４８０ＭＨｚ同期のクロック）を用いてシリアルデータＤＩＮを順次取り込む。そして、取り込んだＤＩＮを、先に入力された順にＣＬＫ３（内部４８０ＭＨｚ同期のクロック）に同期させてシリアルデータＤＳＯとして出力する。そして、シリアル／パラレル変換回路６１０が、このシリアルデータＤＳＯを８ビットのパラレルデータに変換し、ＣＬＫ２（内部６０ＭＨｚ同期）に同期させてＤＯＵＴとして出力する。
【００５０】
そして図３（Ａ）に示すように、エラスティシティバッファ６００は、データが１２ビット分の深さだけ貯まったところで、ＣＬＫ３に同期させたデータＤＳＯの出力を開始する。
【００５１】
また図３（Ｂ）に示すように、エラスティシティバッファ６００内のデータが２４ビットを越えてフルになるとオーバフローエラーが出力される。
【００５２】
一方、図３（Ｃ）に示すように、エラスティシティバッファ６００内のデータがエンプティになるとアンダフローエラーが出力される。
【００５３】
例えば、ＵＳＢ２．０（ＵＴＭＩ）では、ＨＳモードでのクロック誤差は４８０ＭＨｚ＋／−５００ｐｐｍと定義されている。そして、外部装置及び内部装置の両方が４８０ＭＨｚ＋／−５００ｐｐｍの規格を遵守していれば、１パケット分の転送で最大で＋／−１２ビットのドリフトが生じることになる。従って、エラスティシティバッファ６００の深さを２４ビット以上に設定すると共に、データ出力開始のしきい値を図３（Ａ）のようにミッドポイント（１２ビット）に設定すれば、オーバフローエラーやアンダフローエラーの発生を防止できる。
【００５４】
さて、図２に示す比較例のエラスティシティバッファ６００は、シリアルで入力されたデータを４８０ＭＨｚのＣＬＫ３を用いてシリアルで出力する。従って、エラスティシティバッファ６００の全ての回路部分を４８０ＭＨｚのクロックで動作させる必要がある。即ち、ＦＩＦＯにおけるデータの入力ポイント（入力アドレス）や出力ポイント（出力アドレス）の設定処理、図３（Ａ）に示すようなデータ出力開始のしきい値となるミッドポイント（１２ビット）の設定処理、図３（Ｂ）、（Ｃ）に示すようなオーバフローエラーやアンダフローエラーの検出処理（フル信号やエンプティ信号の生成処理）などを、４８０ＭＨｚで動作する回路で実現しなければならない。
【００５５】
この場合、微細加工が可能な最新の半導体プロセスを採用すれば、このような４８０ＭＨｚで動作する高速な回路を実現することも可能である。
【００５６】
しかしながら、データ転送制御装置（ＵＴＭＩトランシーバ）をマクロセル化して、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などに利用する場合には、コストとの兼ね合いから、このような最新の半導体プロセスではなく、通常の半導体プロセスを採用する方が望ましい。
【００５７】
また、エラスティシティバッファの回路パターンを、配線容量が最適になるように手作業でレイアウトすれば、通常の半導体プロセスを用いながらも、４８０ＭＨｚの高速動作を実現できる可能性はある。
【００５８】
しかしながら、このような手作業のレイアウトは、設計の非効率化、開発期間の長期化、装置の高コスト化などの問題を招く。
【００５９】
そこで本実施形態では、シリアル／パラレル変換機能と、クロック周波数差を吸収（補償）するバッファ機能とを併せ持つシリアル／パラレル変換回路を創出することで、上記問題点を解決している。
【００６０】
図４に、本実施形態のシリアル／パラレル変換回路（エラスティシティバッファ）の構成例を示す。
【００６１】
図４のシリアル／パラレル変換回路は、エラスティシティバッファ１２、判断回路６０、バッファ６４、セレクタ６６を含む。なお、エラスティシティバッファ１２は、図１のＨＳ回路４１０に含まれる回路であり、判断回路６０、バッファ６４、セレクタ６６は図１の例えばデータハンドラ回路４００に含まれる回路である。
【００６２】
エラスティシティバッファ１２は、データ保持レジスタ５０（データ保持手段）、データステータスレジスタ５２（データステータス保持手段）、書き込みパルス生成回路５４（書き込みパルス生成手段）を含む。
【００６３】
ここでデータ保持（ホールド）レジスタ５０は、４８０ＭＨｚのＣＬＫ１（第１のクロック）を取り込みクロックとして入力されるシリアルデータＤＩＮを受け、これを保持する３２ビット幅のレジスタである。なお、このＣＬＫ１、ＤＩＮは、図１のＨＳＤＬＬ回路１０から入力されるものである。
【００６４】
データステータスレジスタ５２は、データ保持レジスタ５０の各ビットのデータのステータスを保持する３２ビット幅のレジスタである。
【００６５】
書き込みパルス生成回路５４は、３２ビット幅の書き込みパルス信号ＷＰ［３１：０］を生成し、データ保持レジスタ５０、データステータスレジスタ５２に出力する回路である。
【００６６】
ここで、書き込みパルス信号ＷＰ［３１：０］は、その各パルスがＣＬＫ１の３２クロックサイクル毎（広義にはＮクロックサイクル毎）に周期的にアクティブになると共に、各パルスがアクティブになる期間が１クロックサイクルずつ互いにずれている信号である。データ保持レジスタ５０は、この書き込みパルス信号ＷＰ［３１：０］に基づいて、各ビットのデータを保持する。同様にデータステータスレジスタ５２も、この書き込みパルス信号ＷＰ［３１：０］に基づいて、各ビットのデータのステータスを保持する。
【００６７】
判断回路６０（判断手段）は、データ保持レジスタ５０に保持されるデータが有効（ｖａｌｉｄ）か否かを、複数のビット（例えば８ビット）で構成されるデータセル単位で判断する回路であり、内蔵するステートマシーン６２に従って動作する。
【００６８】
より具体的には、判断回路６０は、データ保持レジスタ５０の各データセルが有効か否かを示す４ビット幅の信号ＶＡＬＩＤ［３：０］や、データ保持レジスタ５０のオーバフロー時にアクティブになる信号ＯＶＦＬＯＷを、データステータスレジスタ５２から受ける。
【００６９】
そして、判断回路６０は、各データセルが有効か否かを判断し、有効なデータセルを選択するための４ビット幅の信号ＳＥＬ［３：０］をセレクタ６６に出力する。例えば、ＳＥＬ［３］が「１」の時はＤＢＵＦ［３１：２４］がＤＯＵＴ［７：０］として選択されて出力される。同様に、ＳＥＬ［２］、ＳＥＬ［１］、ＳＥＬ［０］が「１」の時は、各々、ＤＢＵＦ［２３：１６］、ＤＢＵＦ［１５：８］、ＤＢＵＦ［７：０］がＤＯＵＴ［７：０］として選択されて出力されることになる。
【００７０】
また、判断回路６０は、セレクタ６６から出力されるデータＤＯＵＴ［７：０］が有効か否かを示すストローブ信号ＤＳＴＲＢを後段の回路に出力する。このＤＳＴＲＢはクロックＣＬＫ２に同期して変化する信号であり、ＤＯＵＴ［７：０］が有効な時にアクティブになる。
【００７１】
また、判断回路６０は、データステータスレジスタ５２に保持されているデータステータスを、データセル単位でクリアするための４ビット幅の信号ＳＴＲＢ［３：０］をデータステータスレジスタ５２に出力する。更に、ＨＳモードでのパケット受信終了時にアクティブになる信号ＴＥＲＭやＨＳモードでの受信動作をイネーブルにする信号ＨＳＥＮＢをエラスティシティバッファ１２に出力する。
【００７２】
なお、セレクタ６６、判断回路６０、データステータスレジスタ５２にデコード回路を設ければ、信号ＳＥＬ、ＶＡＬＩＤ、ＳＴＲＢを４ビット幅ではなくて２ビット幅にすることもできる。
【００７３】
バッファ６４は、データ保持レジスタ５０からの３２ビット幅のパラレルデータＤＰＡ［３１：０］を受け、６０ＭＨｚのクロックＣＬＫ２で同期化しバッファリングしたデータＤＢＵＦ［３１：０］をセレクタ６６に出力する。
【００７４】
セレクタ６６（出力手段）は、判断回路６０からの信号ＳＥＬ［３：０］に基づいて、バッファ６４からのデータＤＢＵＦ［３１：０］から、有効なデータセルのデータを選択し、８ビット幅のデータＤＯＵＴ［７：０］として出力する。
【００７５】
図５に本実施形態のシリアル／パラレル変換回路の動作概念図を示す。
【００７６】
本実施形態では例えば図５のＡ１〜Ａ５に示すように、４８０ＭＨｚのＣＬＫ１（第１のクロック）で入力されるシリアルデータＤＩＮがデータ保持レジスタ５０に順次保持される。
【００７７】
そして図５のＢ１〜Ｂ５に示すように、データ保持レジスタ５０に保持されるデータが有効か否か（出力できるデータが揃ったか否か）が、例えば８ビット（広義には複数ビット）で構成されるデータセル単位で判断される。これは、例えば図４の判断回路６０が、データステータスレジスタ５２からの信号ＶＡＬＩＤ［３：０］に基づいて判断することで実現される。
【００７８】
そして図５のＣ１〜Ｃ５に示すように、有効と判断されたデータセルが、ＣＬＫ１よりも周波数が低い６０ＭＨｚのＣＬＫ２（第２のクロック）で本実施形態のシリアル／パラレル変換回路から出力される。これは、例えば図４のセレクタ６６が、判断回路６０から信号ＳＥＬ［３：０］に基づいて、ＤＢＵＦ［３１：０］の中から有効なデータセルのデータを選択することで実現される。
【００７９】
なお、図５のＣ６に示すように、本実施形態のデータ保持レジスタ５０（エラスティシティバッファ）はリングバッファ構造になっている。
【００８０】
図５に示すように、本実施形態によれば、データセル単位（複数ビット単位）でデータの有効、非有効が判断され、データセル単位で本実施形態のシリアル／パラレル変換回路からデータが出力される。従って、データの有効、非有効の判断やオーバフローエラーの判断等を、例えば周波数が低い６０ＭＨｚのＣＬＫ２に基づいて実現できる。従って、このような判断処理を４８０ＭＨｚのＣＬＫ３で行わなければならない図２の比較例とは異なり、微細加工が可能な最新の半導体プロセスを用いることなく、ＵＴＭＩで定義されるエラスティシティバッファの機能を実現できるようになる。
【００８１】
また、手作業によるレイアウトが不要になり、回路パターンをゲートアレイなどの自動配置配線で生成できるようになるため、開発期間の短縮化、装置の低コスト化を図れる。
【００８２】
また、判断回路６０等は、６０ＭＨｚという低速のクロック周波数で動作すればよいため、クロックのスキューやジッタに対する耐性を高めることができ、データ転送の信頼性を大幅に向上できる。
【００８３】
また、図２の比較例では、ＣＬＫ１、ＣＬＫ３間での同期タイミング調整、ＣＬＫ３、ＣＬＫ２間での同期タイミング調整というように２段階の調整が必要になるが、本実施形態ではＣＬＫ１、ＣＬＫ２間の１段階のタイミング調整で済む。従って、タイミング設計が容易になると共に回路動作の信頼性も高めることができる。
【００８４】
また図２の比較例では、データが１２ビット分だけ貯まってから、データの出力処理等を開始する必要があり、処理を開始するまでのタイムラグが発生するが、図４の本実施形態によればこのようなタイムラグを解消できる。
【００８５】
１．３  詳細な回路構成
図６に、図４のデータ保持レジスタ５０の詳細な回路構成例を示す。なお、説明を簡単にするために、図６ではデータ保持レジスタ５０の主要部だけが示されている。
【００８６】
図６に示すように、データ保持レジスタ５０は、Ｄフリップフロップ（広義には保持手段）ＤＦＡ３１〜ＤＦＡ０を有する。
【００８７】
そして、これらのＤＦＡ３１〜０のデータ入力端子には、シリアルデータＤＩＮが入力される。
【００８８】
また、ＤＦＡ３１〜０の各クロック端子には、図４の書き込みパルス生成回路５４からの各書き込みパルス信号ＷＰ［３１：０］が入力される。
【００８９】
また、ＤＦＡ３１〜０のリセット端子には、制御回路６０からの信号ＴＥＲＭが入力される。
【００９０】
また、ＤＦＡ３１〜０の出力信号は、ＤＰＡ［３１：０］として図４のバッファ６４に出力される。
【００９１】
図６の構成によれば、シリアルデータＤＩＮの各ビットは、書き込みパルス信号ＷＰ［３１：０］によりＤＦＡ３１〜０に順次保持されて行く。即ち、ＤＩＮの所与のビットがＤＦＡ０に保持されると、次のビットはＤＦＡ１に保持され、その次のビットはＤＦＡ２に保持される。そして、このようにしてＤＩＮの各ビットが順次保持され、ＤＩＮの所与のビットがＤＦＡ３１に保持されると、次のビットはＤＦＡ０に保持されることになり、リングバッファが実現される。
【００９２】
また、リセット信号ＲＥＳがアクティブになると、ＤＦＡ３１〜０は全てリセットされ、ＤＰＡ［３１：０］は全て「０」（論理レベル）になる。
【００９３】
なお、信号ＲＥＳは図４の信号ＴＥＲＭなどに基づき生成される。
【００９４】
また、図６に示すように、ＤＦＡ７〜０（出力ＤＰＡ［７：０］）、ＤＦＡ１５〜８（ＤＰＡ［１５：８］）、ＤＦＡ２３〜１６（ＤＰＡ［２３：１６］）、ＤＦＡ３１〜２４（ＤＰＡ［３１：２４］）が各データセルを構成することになる。
【００９５】
図７に、図４のデータステータスレジスタ５２の詳細な回路構成例を示す。なお、説明を簡単にするために、図７ではデータステータスレジスタ５２の主要部だけが示されている。
【００９６】
図７に示すように、データステータスレジスタ５２は、ＤフリップフロップＤＦＢ３１〜ＤＦＢ０を有する。
【００９７】
そして、これらのＤＦＢ３１〜０のデータ入力端子は、電源電圧ＶＤＤが接続されて「１」（論理レベル）に設定される。
【００９８】
また、ＤＦＢ３１〜０の各クロック端子には、書き込みパルス生成回路５４からの各書き込みパルス信号ＷＰ［３１：０］が入力される。
【００９９】
また、ＤＦＢ３１〜２４、ＤＦＢ２３〜１６、ＤＦＢ１５〜８、ＤＦＢ７〜０、のリセット端子には、各々、論理和回路ＯＲ３、ＯＲ２、ＯＲ１、ＯＲ０の出力が入力される。そして、ＯＲ３〜ＯＲ０の一方の入力端子には信号ＰＳＴＲＢ［３：０］が入力され、他方の入力端子には信号ＲＥＳが入力される。
【０１００】
なお、信号ＰＳＴＲＢ［３：０］は、図４で判断回路６０から入力されるストローブ信号ＳＴＲＢ［３：０］の立ち上がりエッジで所与の時間アクティブになるパルス信号である。
【０１０１】
また、各データセルの先頭ビットに相当するＤＦＢ２４、ＤＦＢ１６、ＤＦＢ８、ＤＦＢ０の出力信号は、データセルの有効、非有効を示す信号ＶＡＬＩＤ［３：０］として図４の判断回路６０に出力される。
【０１０２】
図７の構成によれば、書き込みパルス信号ＷＰ［３１：０］の各パルスがアクティブになる毎に各ＤＦＢ３１〜０に「１」がセットされる。例えば、図６のデータ保持レジスタ５０の各ビット（ＤＦＡ３１〜０）にデータが保持されると、対応するデータステータスレジスタ５２の各ビット（ＤＦＢ３１〜０）にも「１」がセットされる。即ち、データステータスレジスタ５２の各ビットには、データ保持レジスタ５０の各ビットのデータのステータス（「１」の場合はデータが有効であることを示し、「０」の場合は非有効であることを示すステータス）が保持されることになる。
【０１０３】
また図７では、ＰＳＴＲＢ［３］、ＰＳＴＲＢ［２］、ＰＳＴＲＢ［１］、ＰＳＴＲＢ［０］がアクティブになると、各々、ＤＦＢ３１〜２４、ＤＦＢ２３〜１６、ＤＦＢ１５〜８、ＤＦＢ７〜０が「０」にリセットされる。そして、ＤＦＢ３１〜２４、ＤＦＢ２３〜１６、ＤＦＢ１５〜８、ＤＦＢ７〜０に保持されるデータステータスは、図６に示すデータセルであるＤＦＡ３１〜２４、ＤＦＡ２３〜１６、ＤＦＡ１５〜８、ＤＦＡ７〜０のステータスである。従って、ＰＳＴＲＢ［３：０］の各々をアクティブにすることで、データステータスレジスタ５２のデータステータスが、データセル単位でクリアされることになる。
【０１０４】
なお、図７において、信号ＶＡＬＩＤ［３：０］を出力するためには、ＤフリップフロップＤＦＢ３１〜０のうち、ＤＦＢ２４、ＤＦＢ１６、ＤＦＢ８、ＤＦＢ０を設ければ十分であり（データセル単位のステータスを保持する保持手段を設ければ十分であり）、その他のＤフリップフロップＤＦＢ３１〜２５、ＤＦＢ２３〜１７、ＤＦＢ１５〜９、ＤＦＢ７〜１については省略することもできる。
【０１０５】
但し、これらのＤＦＢ３１〜２５、ＤＦＢ２３〜１７、ＤＦＢ１５〜９、ＤＦＢ７〜１を単に無くしてしまうと、ＷＰ［３１：０］に寄生する負荷容量が互いに異なったものになってしまう。例えば、ＷＰ［２４］はＤＦＡ２４及びＤＦＢ２４の両方のクロック端子に接続されるのに対し、ＷＰ［３１］はＤＦＡ３１のクロック端子にのみ接続され、ＷＰ［２４］に寄生する負荷容量の方がＷＰ［３１］よりも大きくなってしまう。そして、このようにＷＰ［３１：０］に寄生する負荷容量が互いに異なってしまうと、ＷＰ［３１：０］に信号遅延差が生じ、回路動作が不安定になる問題が発生する可能性がある。
【０１０６】
そこで、このような問題を解決するために、不要なＤフリップフロップＤＦＢ３１〜２５、ＤＦＢ２３〜１７、ＤＦＢ１５〜９、ＤＦＢ７〜１の代わりに、これらのＤフリップフロップのクロック端子と同等の負荷容量を有するダミー素子を設けるようにしてもよい。このようなダミー素子としては、Ｄフリップフロップよりもトランジスタ数が少ない素子（例えばインバータ回路）を使用することが望ましい。
【０１０７】
例えば、Ｄフリップフロップのトランジスタ数をＮＤＦ、ダミー素子のトランジスタ数をＮＤＭ、取り除いたＤフリップフロップの数をＮＯＭとする。すると、このようなダミー素子を用いることで、ＮＴＲ＝（ＮＤＦ−ＮＤＭ）×ＮＯＭの数だけトランジスタ数を減らすことができ、回路を小規模化できる。
【０１０８】
図８に、図４の書き込みパルス生成回路５４の詳細な回路構成例を示す。なお、説明を簡単にするために、図８では書き込みパルス生成回路５４の主要部だけが示されている。
【０１０９】
図８に示すように、書き込みパルス生成回路５４は、ＤフリップフロップＤＦＣ３１〜ＤＦＣ０を有する。
【０１１０】
そして、これらの各ＤフリップフロップＤＦＣ３１〜０のデータ入力端子には、前段の各Ｄフリップフロップの出力が入力される。例えば、ＤＦＣ０のデータ入力端子にはＤＦＣ３１の出力が入力され、ＤＦＣ１のデータ入力端子にはＤＦＣ０の出力が入力され、ＤＦＣ２のデータ入力端子にはＤＦＣ１の出力が入力される。
【０１１１】
また、ＤＦＣ３１〜０の各クロック端子には、ＨＳＤＬＬ回路１０からの４８０ＭＨｚのクロックＣＬＫ１が入力される。
【０１１２】
また、ＤＦＣ３１のセット端子及びＤＦＣ３０〜０のリセット端子には信号ＲＥＳが入力される。
【０１１３】
そして、ＤＦＣ３１〜０の出力信号は、書き込みパルス信号ＷＰ［３１：０］としてデータ保持レジスタ５０、データステータスレジスタ５２に出力される。
【０１１４】
図８の構成によれば、信号ＲＥＳがアクティブになると、ＤＦＣ３１は「１」にセットされ、ＤＦＣ３０〜０は「０」にリセットされる。
【０１１５】
そして、この状態でＣＬＫ１が入力されると、ＤＦＣ３１〜ＤＦＣ０において「１」のパルスがＤＦＣ０からＤＦＣ３１の方に向かって順次シフトして行き、データ保持レジスタ５０、データステータスレジスタ５２への書き込みパルス信号ＷＰ［３１：０］が生成されることになる。
【０１１６】
１．４  動作の詳細
次に本実施形態の動作の詳細について図９、図１０のタイミング波形図を用いて説明する。
【０１１７】
図９のＤ１に示すように、シリアルデータＤＩＮが入力されてからしばらくした後に、ＨＳＤＬＬ回路１０からＤＩＮの取り込みクロックＣＬＫ１が入力される。
【０１１８】
すると、図９のＤ２に示すように、書き込みパルス生成回路５４がこのＣＬＫ１に基づいて書き込みパルス信号ＷＰ［３１：０］を生成する。このＷＰ［３１：０］は、ＣＬＫ１の３２クロックサイクル（Ｎクロックサイクル）毎にそのパルスがアクティブになると共に、例えばＤ３、Ｄ４に示すようにパルスがアクティブになる期間が互いに１クロックサイクルずつシフトしている信号である。
【０１１９】
そして図９のＤ５に示すように、データ保持レジスタ５０はこのＷＰ［３１：０］に基づいてＤＩＮの各ビットを保持し、ＤＰＡ［３１：０］を出力する。同様に、データステータレジスタ５２もこのＷＰ［３１：０］に基づいて各ビットのデータステータス（ＤＳＴＡＴＵＳ［３１：０］）を保持する。
【０１２０】
ＶＡＬＩＤ［３：０］は、各データセルの先頭の１ビットが保持された時に「１」（論理レベル）になり、ＰＳＴＲＢ［３：０］がアクティブになると「０」（論理レベル）になる。なお、ＰＳＴＲＢ［３：０］は、ＳＴＲＢ［３：０］の立ち上がりエッジでアクティブになるパルス信号である。
【０１２１】
例えば、データセルの先頭ビットとなるデータ保持レジスタ５０のＤＦＡ０（図６参照）にデータが保持されると、データステータスレジスタ５２のＤＦＢ０（図７参照）に「１」がセットされるため、ＶＡＬＩＤ「０」は図９のＤ７に示すように「１」になる。
【０１２２】
一方、図９のＤ８に示すようにＳＴＲＢ［０］の立ち上がりエッジによりＰＳＴＲＢ［０］のパルスがアクティブになると、データステータスレジスタのＤＦＢ７〜ＤＦＢ０（図７参照）がリセットされるため、ＶＡＬＩＤ［０］は図９のＤ９に示すように「０」に戻る。
【０１２３】
また、ＶＡＬＩＤ［１］は、次のデータセルの先頭ビットとなるデータ保持レジスタ５０のＤＦＡ８（図６参照）にデータが保持されると、図９のＤ１０に示すように「１」になり、ＰＳＴＲＢ［１］がアクティブになると「０」に戻る。
【０１２４】
同様に、ＶＡＬＩＤ［２］、ＶＡＬＩＤ［３］も、データ保持レジスタ５０のＤＦＡ１６、２４（図６参照）にデータが保持されると「１」になり、ＰＳＴＲＢ［２］、ＰＳＴＲＢ［３］がアクティブになると「０」に戻る。
【０１２５】
次に、図１０のタイミング波形図の説明に移る。図１０において、例えば「０ｘ？？？０」や「０ｘ？Ａ？？」の「？」は、無効な１バイト又は有効／無効を問わない１バイトを表し、「０」、「Ａ」などの数字やアルファベットは有効な１バイトを表す。また、「０ｂ？？？０」、「０ｂ？？？１」の「？」は無効な１ビット又は有効／無効を問わない１ビットを表し、「０」、「１」は有効な１ビットを表す。また、ＲＳＴＡＴＥはステートマシーン６２（図４参照）の状態を示すものであり、ＤＳＴＲＢはＤＯＵＴ［７：０］が有効な時に「１」になる信号である。
【０１２６】
判断回路６０は、データステータスレジスタ５２からのＶＡＬＩＤ［３：０］に基づきデータセルの先頭ビット（広義には所与のビット）のデータが有効か否かを判断し、有効と判断したデータセルを、ＣＬＫ２の次のクロックサイクルで出力する制御を行う。
【０１２７】
例えば図１０のＴ０では、０バイト目（１番目）のデータセルの先頭ビットが有効であると、ＶＡＬＩＤ［３：０］（ＶＡＬＩＤ［３：０］をＣＬＫ２に同期化した信号ＳＶＡＬＩＤ［３：０］）に基づいて判断されている。すると、次のクロックサイクルであるＴ１で、ステートマシーン６２（図４参照）のステートＲＳＴＡＴＥが「ＩＤＬＥ」から「ＧＯＴ０」に変化する。そして、判断回路６０からの信号ＳＥＬ［３：０］に基づいてセレクタ６６がその０バイト目のデータセルのデータを選択し、ＤＯＵＴ［７：０］として出力する。
【０１２８】
また、この際に、判断回路６０がＳＴＲＢ［０］を「０」から「１」に変化させる。これにより、出力された０バイト目のデータセルについてのデータステータスがクリアされる。
【０１２９】
また図１０のＴ１では、１バイト目（２番目）のデータセルの先頭ビットが有効であるとＶＡＬＩＤ［３：０］に基づいて判断されている。すると、次のクロックサイクルであるＴ２で、ステートマシーン６２のステートＲＳＴＡＴＥが「ＧＯＴ１」に変化する。そして、その１バイト目のデータセルのデータがセレクタ６６により選択されてＤＯＵＴ［７：０］として出力される。
【０１３０】
また、この際に、判断回路６０がＳＴＲＢ［１］を「０」から「１」に変化させる。これにより、出力された１バイト目のデータセルについてのデータステータスがクリアされる。
【０１３１】
また図１０のＴ２では、２バイト目（３番目）のデータセルの先頭ビットが有効であるとＶＡＬＩＤ［３：０］に基づいて判断されている。すると、次のクロックサイクルであるＴ３で、ステートマシーン６２のステートＲＳＴＡＴＥが「ＧＯＴ２」に変化する。そして、その２バイト目のデータセルのデータがセレクタ６６により選択されてＤＯＵＴ［７：０］として出力される。
【０１３２】
また、この際に、判断回路６０がＳＴＲＢ［２］を「０」から「１」に変化させる。これにより、出力された２バイト目のデータセルについてのデータステータスがクリアされる。
【０１３３】
また図１０のＴ３では、３バイト目（４番目）のデータセルの先頭ビットが非有効（ＩＮＶＡＬＩＤ）であると、ＶＡＬＩＤ［３：０］に基づいて判断されている。すると、次のクロックサイクルであるＴ４で、ステートマシーン６２のステートが、ウェイトを表す「Ｗ３」に変化する。そして、ＤＯＵＴ［７：０］の出力が１クロックサイクル期間だけウェイトされる。
【０１３４】
なお、図１０のＴ４では、前のステートが「ＧＯＴ２」であったため、３バイト目のデータセルを待つステート「Ｗ３」に変化しており、次のＴ５で３バイト目のデータセルが有効になると、ステートは「ＧＯＴ３」に変化することになる。例えば、仮に前のステートが「ＧＯＴ１」であった場合には、２バイト目のデータセルを待つステート「Ｗ２」に変化し、次のクロックサイクルで２バイト目のデータセルが有効になると、ステートは「ＧＯＴ２」に変化することになる。
【０１３５】
以上のように本実施形態では、データセル単位でデータの有効、非有効が判断されながら、シリアルデータＤＩＮが８ビットのパラレルデータＤＯＵＴ［７：０］に変換され、ＣＬＫ２に同期化されて出力される。これにより、シリアル／パラレル変換機能とクロック周波数差を吸収するバッファ機能とを併せ持つシリアル／パラレル変換回路を実現できるようになる。
【０１３６】
２．本実施形態の特徴
２．１  データセルの有効、非有効の判断
さて本実施形態では、データセルが有効か否かを、データセルの先頭ビット（広義には所与のビット）のデータをモニタすることで判断している。そして、先頭ビットが有効であると判断されたデータセルについては、ＣＬＫ２の次のクロックサイクル（広義には次のクロックサイクル以降）において有効なデータセルと見なしている。
【０１３７】
例えば図１１（Ａ）に示すように、データ保持レジスタ５０におけるデータセルＤＣ０の先頭ビット（図６のＤＦＡ０）にデータが保持され、このＤＣ０に対応するデータステータスの先頭ビット（図７のＤＦＢ０）が「１」にセットされると、信号ＶＡＬＩＤ［０］が「１」になる（図９のＤ７）。
【０１３８】
すると、このＶＡＬＩＤ［０］（ＶＡＬＩＤ［０］をＣＬＫ２で同期化したＳＶＡＬＩＤ［０］）を受けた判断回路６０は、図１１（Ｂ）、（Ｃ）に示すようにＣＬＫ２の次のクロックサイクルでこのＤＣ０を有効なデータセルと判断し、ＤＯＵＴ［７：０］として出力する。
【０１３９】
同様に、データセルＤＣ１、ＤＣ２、ＤＣ３の先頭ビットが有効になると、ＶＡＬＩＤ［１］、［２］、［３］が「１」になり、これを受けた判断回路６０は、ＣＬＫ２の次のクロックサイクルでＤＣ１、ＤＣ２、ＤＣ３を有効なデータセルと判断する。
【０１４０】
このように本実施形態では、データセルの全てのビットではなくて先頭ビット（広義には所与のビット）のデータの有効、非有効だけをモニタしてデータセルの有効、非有効を判断しているため、信号ＶＡＬＩＤのビット幅を少なくすることができ、判断回路６０の構成や処理を簡素化できる。また、データ保持レジスタ５０のビット数（深さ）を、より少ないビット数にすることも可能になる。
【０１４１】
また、判断回路６０は、４８０ＭＨｚという速い周波数のＣＬＫ１のクロックサイクルではなく、６０ＭＨｚという遅い周波数のＣＬＫ２のクロックサイクルで、データセルの有効、非有効を判断できる。従って、判断処理に時間的な余裕が持てるようになり、最新の半導体プロセスを用いなくても、外部装置とのクロック周波数差を吸収するエラスティシティバッファの機能を実現できるようになる。
【０１４２】
また本実施形態では、データ保持レジスタ５０とは別にデータステータスレジスタ５２を設け、このデータステータスレジスタ５２からの信号ＶＡＬＩＤ［３：０］に基づいてデータセルの有効、非有効を判断している。従って、データ保持レジスタ５０の構成を図６に示すような簡素な構成にすることができ、シリアルデータＤＩＮの確実な取り込み処理を実現できる。
【０１４３】
なお、データセルが有効か否かは先頭ビットで判断することが特に望ましいが、先頭ビット以外のビットで判断してもよい。
【０１４４】
また本実施形態では、例えばＣＬＫ２の第Ｋのクロックサイクルで先頭ビットが有効と判断されたデータセルを、次の第Ｋ＋１のクロックサイクルで有効と見なしているが、第Ｋ＋２のクロックサイクル以降で有効と見なすようにしてもよい。例えば、シリアルデータＤＩＮを８ビットではなくて、６０ＭＨｚに同期した１６ビットのパラレルデータに変換する場合には、データセルのビット幅を１６ビットにする。そして、第Ｋのクロックサイクルで先頭ビットが有効と判断されたデータセルを、第Ｋ＋１ではなく第Ｋ＋２のクロックサイクルで有効と見なすようにすればよい。或いは、１６ビット幅のデータセルの９ビット目を見てデータセルが有効か否かを判断してもよい。
【０１４５】
なお、本実施形態ではデータステータスレジスタ５２に保持されているデータステータスを、データセル単位でクリアしている。
【０１４６】
例えば図１２（Ａ）に示すように、データセルＤＣ０が出力されると（ＤＣ０が処理済みになると）、このデータセルＤＣ０に対応するデータステータスがクリアされる。また図１２（Ｂ）に示すように、データセルＤＣ１が出力されると、このデータセルＤＣ１に対応するデータステータスがクリアされる。同様に、データセルＤＣ２、ＤＣ３が出力されると、ＤＣ２、ＤＣ３に対応するデータステータスがクリアされる。
【０１４７】
このようにすれば、例えばデータ保持レジスタ５０をリングバッファ構造にした場合にも、データステータスレジスタ５２に適切なデータステータスを保持できるようになる。
【０１４８】
２．２  ウェイト制御
本実施形態では、データセルが有効か否かをＣＬＫ２のクロックサイクル毎に判断し、データセルが有効でないと判断した場合には、そのデータセルのデータの出力を、少なくとも１クロックサイクル分だけウェイトするようにしている。
【０１４９】
例えば図１３のＥ１では、０バイト目のデータセルが非有効と判断されたため、そのデータセルに対応するＤＯＵＴ［７：０］の出力がＥ２に示すように例えば１クロックサイクルだけウェイトされる（２クロックサイクル以上ウェイトしてもよい）。
【０１５０】
このようなウェイト制御を行うことで、適切なデータだけをＤＯＵＴ［７：０］として後段の回路に出力できるようになる。即ち、後段の回路は、信号ＤＳＴＲＢが「１」の時にＤＯＵＴ［７：０］を取り込み、ＤＳＴＲＢが「０」の時にデータの取り込みをウェイトすればよい。また、このようなウェイト制御を行えば、エラスティシティバッファ１２（データ保持レジスタ）がアンダフロー状態になった場合にも、処理に破綻が生じるのを防止できる。
【０１５１】
例えば図２の比較例では、４８０ＭＨｚという速い周波数のＣＬＫ１で全ての回路を動作させなければならないため、図１３に示すようなウェイト制御を行うことは非常に困難となる。また、図２の比較例では、入力されるシリアルデータＤＩＮを４８０ＭＨｚのＣＬＫ３で次々と出力しなければならないため、エラスティシティバッファ６００がアンダフロー状態になった場合に、処理に破綻が生じる可能性がある。
【０１５２】
これに対して本実施形態では、ウェイト制御を行う判断回路６０を６０ＭＨｚという遅い周波数のＣＬＫ２で動作させることができる。従って、図２の比較例とは異なり、処理に時間的な余裕を持たせることができ、ステートマシーン６２を用いたインテリジェントなウェイト制御を実現できる。従って、エラスティシティバッファ１２がアンダフロー状態になった場合にも、アンダフロー状態が解消されるまで待つことが可能になり、処理に破綻が生じるのを効果的に防止できる。
【０１５３】
２．３  書き込みパルス信号の利用
本実施形態では図１４に示すような書き込みパルス信号ＷＰ［３１：０］を用いて、データ保持レジスタ５０の各ビットのデータやデータステータスレジスタ５２の各ビットのデータステータスを保持するようにしている。
【０１５４】
ここで書き込みパルス信号ＷＰ［３１：０］は、例えば図１４のＦ１、Ｆ２に示すようにそのパルスがＣＬＫ１の３２クロックサイクル（広義にはＮクロックサイクル）毎に周期的にアクティブになる信号である。また、例えば図１４のＦ１、Ｆ３、Ｆ４に示すように、各パルスがアクティブになる期間がＣＬＫ１の１クロックサイクルずつ互いにずれている。
【０１５５】
このように、周波数が速いＣＬＫ１に基づいてこのような書き込みパルス信号ＷＰ［３１：０］を生成し、このＷＰ［３１：０］に基づいてデータ保持レジスタ５０、データステータスレジスタ５２を動作させるようにすれば、データ保持レジスタ５０、データステータスレジスタ５２の動作に余裕を持たせることが可能になる。即ち、図１４に示すように各書き込みパルス信号ＷＰ［３１：０］がアクティブになる周期ＴＰを長くできるため、データ保持レジスタ５０、データステータスレジスタ５２が含むＤフリップフロップのセットアップタイムやホールドタイムに余裕を持たせることが可能になる。また、周期ＴＰが長いため、この周期ＴＰの期間を利用して、オーバフロー制御処理などの各種の処理を行うことが可能になる。
【０１５６】
更に図１４に示すように周期的にアクティブになる書き込みパルス信号ＷＰ［３１：０］を用いて図６に示すようなデータ保持レジスタ５０を動作させれば、簡素な構成でリングバッファを実現できるようになる。
【０１５７】
２．４  クロック周波数の設定
さて、図１５に示すように、ＵＳＢ２．０の規格（広義には所与の規格）では、ＨＳモードでの最大クロック誤差は４８０ＭＨｚ＋／−５００ｐｐｍと定義されている。そして、外部装置及び内部装置の両方が４８０ＭＨｚ＋／−５００ｐｐｍの規格を遵守している場合には、エラスティシティバッファ１２を適切な深さ（例えば本実施形態では３２ビットデプス）に設定しておくことで、オーバフローエラーやアンダフローエラーの発生を防ぐことができる。
【０１５８】
しかしながら、バスに接続される外部装置が、このような最大クロック誤差の規格を遵守してなかった場合や何らかの不具合が生じた場合には、エラスティシティバッファ１２を適切な深さに設定しておいても、オーバフローエラーやアンダフローエラーが発生してしまうおそれがある。
【０１５９】
そこで、このような問題に対処するために、ＵＳＢ２．０のＨＳモードで定義されているＣＬＫ１の周波数よりも高い周波数のＣＬＫ３（第３のクロック）に基づいて、エラスティシティバッファ１２の後段の回路を動作させる６０ＭＨｚのＣＬＫ２（第２のクロック）を生成してもよい。例えば、ＣＬＫ１の周波数の規格が４８０ＭＨｚ＋／−５００ｐｐｍの場合に、ＣＬＫ３の周波数を、上限値である４８０ＭＨｚ＋５００ｐｐｍ以上にする。そして、このＣＬＫ３を分周することで６０ＭＨｚのＣＬＫ２を生成する。
【０１６０】
このようにすると、内部装置のクロック周波数（≧４８０ＭＨｚ＋５００ｐｐｍ）を外部装置のクロック周波数（４８０ＭＨｚ＋／−５００ｐｐｍ）以上に設定できるため、アンダフローエラーは発生しやすくなるが、オーバフローエラーが生じる可能性はほとんどなくなる。
【０１６１】
そして本実施形態では、図１３で説明したようなウェイト制御を行うことで、アンダフローエラーに対しては適正に対処できる。従って、図１５に示すようなクロック周波数の設定にすれば、外部装置がクロック周波数の規格を遵守していないような場合にも、柔軟にこれに対処できるデータ転送制御装置を実現できる。
【０１６２】
３．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【０１６３】
例えば図１６（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図１７（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１７はＣＰＵ５１０のワーク領域として機能する。ＤＭＡＣ５１８は、ＣＰＵ５１０を介さずにデータ転送を行うためのＤＭＡコントローラである。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０１６４】
ＵＳＢを介してパーソナルコンピュータなどの他のデバイスから送られてきたシリアルの印字データは、データ転送制御装置５００によりパラレルの印字データに変換される。そして、変換後のパラレル印字データは、ＣＰＵ５１０又はＤＭＡＣ５１８により、印字処理部（プリンタエンジン）５１２に送られる。そして、印字処理部５１２においてパラレル印字データに対して所与の処理が施され、プリントヘッダなどからなる印字部（データの出力処理を行う装置）５１４により紙に印字されて出力される。
【０１６５】
図１６（Ｂ）に電子機器の１つであるスキャナの内部ブロック図を示し、図１７（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はスキャナをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２７はＣＰＵ５２０のワーク領域として機能する。ＤＭＡＣ５２８はＤＭＡコントローラである。
【０１６６】
光源、光電変換器などからなる画像読み取り部（データの取り込み処理を行う装置）５２２により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部（スキャナエンジン）５２４により処理される。そして、処理後の画像データは、ＣＰＵ５２０又はＤＭＡＣ５２８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルの画像データをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１６７】
図１６（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図１７（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３７はＣＰＵ５３０のワーク領域として機能する。ＤＭＡＣ５３８はＤＭＡコントローラである。
【０１６８】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データの取り込み処理を行う装置又はデータの記憶処理を行うための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、ＣＰＵ５３０又はＤＭＡＣ５３８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルのデータをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１６９】
一方、ＵＳＢを介して他のデバイスから送られてきたシリアルのデータは、データ転送制御装置５００によりパラレルのデータに変換される。そして、このパラレルデータは、ＣＰＵ５３０又はＤＭＡＣ５３８により信号処理部５３４に送られる。そして、信号処理部５３４においてこのパラレルデータに対して所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０１７０】
なお、図１６（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０１７１】
本実施形態のデータ転送制御装置を電子機器に用いれば、ＵＳＢ２．０におけるＨＳモードでのデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、ＣＤ−ＲＷからのデータの読み取りや、ＣＤ−ＲＷへのデータの書き込みを高速に行うことができるようになる。
【０１７２】
また、本実施形態のデータ転送制御装置を電子機器に用いれば、製造コストが安い通常の半導体プロセスでデータ転送制御装置のＩＣを製造できるようになる。従って、データ転送制御装置の低コスト化を図れ、電子機器の低コスト化も図れるようになる。また、データ転送制御の中で高速で動作する部分を少なくすることができるため、データ転送の信頼性を向上でき、電子機器の信頼性も向上できるようになる。
【０１７３】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０１７４】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１７５】
例えば、本発明のデータ転送制御装置の構成は、図１に示す構成に限定されるものではない。
【０１７６】
また、シリアル／パラレル変換回路の構成も図４に示す構成が特に望ましいが、これに限定されず種々の変形実施が可能である。
【０１７７】
また、データ保持手段（データ保持レジスタ）、データステータス保持手段（データステータスレジスタ）、書き込みパルス生成手段（書き込みパルス生成回路）の構成も図６、図７、図８に示す構成に限定されるものではない。
【０１７８】
また、データセルのビット数や、第１、第２、第３のクロックの周波数や、データ保持レジスタやデータステータス保持手段や書き込みパルス生成手段のビット数なども、本実施形態ではその一例を示したものであり、これに限定されるものではない。
【０１７９】
また、本発明は、ＵＳＢ２．０でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＵＳＢ２．０と同様の思想に基づく規格やＵＳＢ２．０を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】本実施形態のデータ転送制御装置の構成例を示す図である。
【図２】比較例について説明するための図である。
【図３】図３（Ａ）、（Ｂ）、（Ｃ）も、比較例について説明するための図である。
【図４】本実施形態のシリアル／パラレル変換回路の構成例を示す図である。
【図５】本実施形態のシリアル／パラレル変換回路の動作概念図である。
【図６】データ保持レジスタの詳細な回路構成例を示す図である。
【図７】データステータスレジスタの詳細な回路構成例を示す図である。
【図８】書き込みパルス生成回路の詳細な回路構成例を示す図である。
【図９】本実施形態の動作について説明するためのタイミング波形図である。
【図１０】本実施形態の動作について説明するためのタイミング波形図である。
【図１１】図１１（Ａ）、（Ｂ）、（Ｃ）は、データセルの先頭ビットのデータが有効か否かを判断して、そのデータセルの有効、非有効を判断する手法について説明するための図である。
【図１２】図１２（Ａ）、（Ｂ）は、データステータスをデータセル単位でクリアする手法について説明するための図である。
【図１３】本実施形態のウェイト制御について説明するための図である。
【図１４】書き込みパルス信号について説明するためのタイミング波形図である。
【図１５】クロック周波数の設定手法について説明するための図である。
【図１６】図１６（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図１７】図１７（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    ＨＳＤＬＬ回路
１２    エラスティシティバッファ
２０    発振回路
２２    ＨＳＰＬＬ
２４    ＦＳＰＬＬ
５０    データ保持レジスタ（データ保持手段）
５２    データステータスレジスタ（データステータス保持手段）
５４    書き込みパルス生成回路（書き込みパルス生成手段）
６０    判断回路（判断手段）
６２    ステートマシーン
６４    バッファ
６６    セレクタ（出力手段）
４００  データハンドラ回路
４１０  ＨＳ回路
４２０  ＦＳ回路
４３０  アナログフロントエンド回路
４４０  クロック生成回路
４５０  クロック制御回路
【図１】
0003580242.tif 000002
【図２】
0003580242.tif 000003
【図３】
0003580242.tif 000004
【図４】
0003580242.tif 000005
【図５】
0003580242.tif 000006
【図６】
0003580242.tif 000007
【図７】
0003580242.tif 000008
【図８】
0003580242.tif 000009
【図９】
0003580242.tif 000010
【図１０】
0003580242.tif 000011
【図１１】
0003580242.tif 000012
【図１２】
0003580242.tif 000013
【図１３】
0003580242.tif 000014
【図１４】
0003580242.tif 000015
【図１５】
0003580242.tif 000016
【図１６】
0003580242.tif 000017
【図１７】
0003580242.tif 000018