(57)【特許請求の範囲】
【請求項１】
シリアルバスを介したデータ転送のためのデータ転送制御装置であって、
第１の信号レベルのビットが所与の個数だけ連続したことを条件に第２の信号レベルのビットを挿入するビット挿入回路と、
パラレルデータを前記シリアルバスで転送されるシリアルデータに変換するためのパラレル−シリアル変換回路とを含み、
前記ビット挿入回路が、
前記パラレル−シリアル変換回路の前段に設けられると共に、
前記ビット挿入回路が、
前段の回路から所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット挿入されたＮビットのパラレル出力データを出力し、
前記ビット挿入回路が、
ビット挿入によりあふれたビットを次のクロックサイクルのデータに繰り越すための処理を行うことを特徴とするデータ転送制御装置。
【請求項２】
シリアルバスを介したデータ転送のためのデータ転送制御装置であって、
第１の信号レベルのビットが所与の個数だけ連続したことを条件に第２の信号レベルのビットを挿入するビット挿入回路と、
パラレルデータを前記シリアルバスで転送されるシリアルデータに変換するためのパラレル−シリアル変換回路とを含み、
前記ビット挿入回路が、
前記パラレル−シリアル変換回路の前段に設けられると共に、
前記ビット挿入回路が、
前段の回路から所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット挿入されたＮビットのパラレル出力データを出力し、
前記ビット挿入回路が、
前記第２の信号レベルのビットの挿入位置とビット挿入によりあふれたビットの数とを演算する演算回路と、
演算されたあふれビット数を累積的に加算又は減算することで得られるあふれ累積値を記憶するあふれ累積値記憶回路とを含み、
前記ビット挿入回路が、
前記ビット挿入位置に基づいて、前記第２の信号レベルのビットを挿入しながら、前記あふれ累積値に基づいて、出力すべきパラレル出力データを決定することを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記ビット挿入回路が、
前記パラレル出力データの末尾における第１の信号レベルのビットの連続数を記憶する連続数記憶回路を含み、
前記演算回路が、
前回のクロックサイクルにおいて記憶された前記連続数に基づいて、前記ビット挿入位置を演算することを特徴とするデータ転送制御装置。
【請求項４】
請求項２又は３において、
前記ビット挿入回路が、
少なくとも１クロックサイクル前のパラレル入力データを記憶するデータ記憶回路と、
記憶された前記少なくとも１クロックサイクル前のパラレル入力データと現在のクロックサイクルのパラレル入力データとを合成した合成データを出力するデータ合成回路と、
前記あふれ累積値に基づいて、前記合成データの中から、ビット挿入されたパラレル出力データを選択するセレクタとを含むことを特徴とするデータ転送制御装置。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記ビット挿入回路が、
前記あふれ累積値が所与の値になった場合に、パラレル入力データの入力を少なくとも１クロックサイクル期間だけ停止させる信号を前段の回路に対して出力することを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記ビット挿入回路と前記パラレル−シリアル変換回路の間に設けられ、前記ビット挿入回路からのＮビットのパラレル出力データを、物理層用のＮビットのパラレルエンコードデータに変換するエンコーダを含むことを特徴とするデータ転送制御装置。
【請求項７】
シリアルバスを介したデータ転送のためのデータ転送制御装置であって、
前記シリアルバスで転送されるシリアルデータをパラレルデータに変換するためのシリアル−パラレル変換回路と、
第１の信号レベルのビットが所与の個数だけ連続したことを条件に挿入された第２の信号レベルのビットを削除するビット削除回路とを含み、
前記ビット削除回路が、
前記シリアル−パラレル変換回路の後段に設けられると共に、
前記ビット削除回路が、
前記シリアル−パラレル変換回路を介して所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット削除されたＮビットのパラレル出力データを出力し、
前記ビット削除回路が、
ビット削除によるデータ長の縮みにより足りなくなったビットを次のクロックサイクルのデータから繰り上げるための処理を行うことを特徴とするデータ転送制御装置。
【請求項８】
シリアルバスを介したデータ転送のためのデータ転送制御装置であって、
前記シリアルバスで転送されるシリアルデータをパラレルデータに変換するためのシリアル−パラレル変換回路と、
第１の信号レベルのビットが所与の個数だけ連続したことを条件に挿入された第２の信号レベルのビットを削除するビット削除回路とを含み、
前記ビット削除回路が、
前記シリアル−パラレル変換回路の後段に設けられると共に、
前記ビット削除回路が、
前記シリアル−パラレル変換回路を介して所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット削除されたＮビットのパラレル出力データを出力し、
前記ビット削除回路が、
前記第２の信号レベルのビットの削除位置とビット削除によるデータ長の縮みビット数とを演算する演算回路と、
演算された縮みビット数を累積的に加算又は減算することで得られる縮み累積値を記憶する縮み累積値記憶回路とを含み、
前記ビット削除回路が、
前記ビット削除位置に基づいて、前記第２の信号レベルのビットを削除しながら、前記縮み累積値に基づいて、出力すべきパラレル出力データを決定することを特徴とするデータ転送制御装置。
【請求項９】
請求項８において、
前記ビット削除回路が、
ビット削除される前のパラレル出力データの末尾における第１の信号レベルのビットの連続数を記憶する連続数記憶回路を含み、
前記演算回路が、
前回のクロックサイクルにおいて記憶された前記連続数に基づいて、前記ビット削除位置を演算することを特徴とするデータ転送制御装置。
【請求項１０】
請求項８又は９において、
前記ビット削除回路が、
少なくとも１クロックサイクル前のパラレル入力データを記憶するデータ記憶回路と、
記憶された前記少なくとも１クロックサイクル前のパラレル入力データと現在のクロックサイクルのパラレル入力データとを合成した合成データを出力するデータ合成回路と、
前記縮み累積値に基づいて、前記合成データの中から、ビット削除されたパラレル出力データを選択するセレクタとを含むことを特徴とするデータ転送制御装置。
【請求項１１】
請求項８乃至１０のいずれかにおいて、
前記ビット削除回路が、
前記縮み累積値が所与の値になった場合に、パラレル出力データの取り込みを少なくとも１クロックサイクル期間だけ停止させる信号を後段の回路に対して出力することを特徴とするデータ転送制御装置。
【請求項１２】
請求項７乃至１１のいずれかにおいて、
前記シリアル−パラレル変換回路と前記ビット削除回路との間に設けられ、物理層用に変換されたＮビットのパラレルエンコードデータをデコードし、Ｎビットのパラレル入力データとして前記ビット削除回路に出力するデコーダを含むことを特徴とするデータ転送制御装置。
【請求項１３】
請求項１乃至１２のいずれかにおいて、
前記第１の信号レベルのビットが所与の個数だけ連続したことを条件に前記第２の信号レベルのビットを挿入する処理が、ＵＳＢ（Universal Serial Bus)規格におけるビットスタッフィング処理であることを特徴とするデータ転送制御装置。
【請求項１４】
請求項１乃至１３のいずれかのデータ転送制御装置と、
前記データ転送制御装置及び前記シリアルバスを介して相手デバイスから受信したデータに所与の処理を施す装置と、
処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする電子機器。
【請求項１５】
請求項１乃至１３のいずれかのデータ転送制御装置と、
前記データ転送制御装置及び前記シリアルバスを介して相手デバイスに転送するデータに所与の処理を施す装置と、
処理が施されるデータを取り込むための装置とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置及び電子機器に関し、特に、ＵＳＢ規格に準じたデータ転送を行うためのデータ転送制御装置及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、パーソナルコンピュータと周辺機器（広義には電子機器）とを接続するためのインターフェース規格として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）が注目を集めている。
【０００３】
このＵＳＢには、パーソナルコンピュータとその周辺機器をシリアルバスを介して最大で１２７台まで接続できるという利点がある。また、従来は別々の規格のコネクタで接続されていたマウスやキーボードやプリンタなどの周辺機器を、同じ規格のコネクタで接続できると共に、いわゆるプラグ＆プレイやホットプラグを実現できるという利点もある。
【０００４】
さて、ＵＳＢにおいては、転送データは、ＮＲＺＩ（Ｎｏｎ  Ｒｅｔｕｒｎ  ｔｏ  Ｚｅｒｏ  Ｉｎｖｅｒｔ）と呼ばれる方式でエンコードされて転送される。このＮＲＺＩは、一般的なデータでは”０”のビットの発生比率が”１”のビットの発生比率に比べてはるかに高いことに着目し、シリアルバス上の信号レベルの変化の頻度を増やして同期はずれを防ごうとするエンコード方式である。このため、ＮＲＺＩでは、元データのビットが”１”の場合には前の信号レベルを維持し、元データのビットが”０”の場合には前の信号レベルを反転させる。
【０００５】
従って、ＮＲＺＩのエンコードを行うと、元データに”０”のビットが並んでいる場合には、エンコード後のデータはビット毎に信号レベルが変化するようになる。
【０００６】
ところが、元データに”１”のビットが並んでいる場合には、エンコード後のデータの信号レベルが変化しない状態が長時間続くことになり、同期はずれの問題が生じてしまう。
【０００７】
このためＵＳＢでは、元データに対して、ビットスタッフィング（広義にはビット挿入）と呼ばれる処理を施すようにしている。即ち、”１”のビットが連続して６回続くと、その後に必ず”０”のビットを挿入するようにする。そして、このようにビットスタッフされたデータを、上述のＮＲＺＩでエンコードする。このようにすることで、元データに”１”のビットが並んでいた場合にも、信号レベルが変化しない状態が長時間続かないようになる。
【０００８】
さて、ＵＳＢには前述のように種々の利点はあるが、同じくシリアルバスインターフェース規格として脚光を浴びているＩＥＥＥ１３９４に比べて、転送速度が遅いという不利点がある。
【０００９】
そこで、ＵＳＢ１．１規格に比べて格段に高速な４８０Ｍｂｐｓ（ハイスピードモード）のデータ転送速度を実現できるＵＳＢ２．０規格の策定が、現在急ピッチで進められている。
【００１０】
ところが、このようにデータ転送速度が高速化されると、前述のビットスタッフィングやＮＲＺＩの処理を１クロックサイクル内で完了することが難しいという問題があることが判明した。
【００１１】
即ち、ビットスタッフィングやＮＲＺＩはシリアルデータ処理（シリアルデータで行う処理）に適している。従って、パラレルデータをパラレル−シリアル変換回路によりシリアルデータに変換し、変換後のシリアルデータに対してビットスタッフィング処理が行われ、その後にＮＲＺＩのエンコードが行われることになる。このため、データ転送速度が前述のように４８０Ｍｂｐｓである場合には、ビットスタッフィングやＮＲＺＩの処理に使用されるクロックの周波数も４８０ＭＨｚにしなければならない。従って、微細加工が可能な最新の半導体プロセスが必要となり、このような半導体プロセスを使用できない場合には、データ転送速度が４８０ＭＨｚとなるハイスピードモードでのビットスタッフィングやＮＲＺＩの処理を実現するのは非常に困難になる。
【００１２】
また、配線遅延が信号タイミングのクリティカルパスの支配的な要因になる微細半導体プロセスでは、４８０ＭＨｚで動作する論理回路を構成するためには、クロックスキューを最小化して同期動作を保証するために手作業による配置、配線が必要になるという問題もある。
【００１３】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ビット挿入、エンコード、デコード、ビット削除処理を低速のクロック周波数で実現できるデータ転送制御装置及び電子機器を提供することにある。
【００１４】
【課題を解決するための手段】
上記課題を解決するために本発明は、シリアルバスを介したデータ転送のためのデータ転送制御装置であって、第１の信号レベルのビットが所与の個数だけ連続したことを条件に第２の信号レベルのビットを挿入するビット挿入回路と、パラレルデータを前記シリアルバスで転送されるシリアルデータに変換するためのパラレル−シリアル変換回路とを含み、前記ビット挿入回路が、前記パラレル−シリアル変換回路の前段に設けられると共に、前記ビット挿入回路が、前段の回路から所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット挿入されたＮビットのパラレル出力データを出力することを特徴とする。
【００１５】
本発明によれば、ビット挿入回路がパラレル−シリアル変換回路の前段に設けられる。従って、シリアルデータに変換される前のパラレルデータの状態で、ビット挿入処理を行うことができるようになる。これにより、シリアルデータの状態のままで処理する場合に比べて、例えば１／Ｎのクロック周波数でビット挿入回路は動作すればよいことになる。従って、微細加工が可能な最新の半導体プロセスを使う必要が無くなるため、データ転送制御装置の低コスト化を図れる。また、信号タイミングに関するクリティカルパスが減るため、データ転送制御装置の開発期間を短縮化できると共に、データ転送制御装置の動作の信頼性を高めることが可能になる。また、データ転送制御装置の回路パターンの生成に、既存の自動配置配線手法を使用できるようになる。更に、演算に要する時間に余裕が生まれるため、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いた回路合成により論理回路を生成する手法も使用できるようになる。
【００１６】
また本発明は、前記ビット挿入回路が、ビット挿入によりあふれたビットを次のクロックサイクルのデータに繰り越すための処理を行うことを特徴とする。
【００１７】
このようにすれば、所与のクロックサイクルでＮビットのパラレル入力データが順次入力されてきた場合に、ビット挿入されたＮビットのパラレル出力データを、例えば同一のクロックサイクルで適正に順次出力できるようになる。
【００１８】
また本発明は、前記ビット挿入回路が、前記第２の信号レベルのビットの挿入位置とビット挿入によりあふれたビットの数とを演算する演算回路と、演算されたあふれビット数を累積的に加算又は減算することで得られるあふれ累積値を記憶するあふれ累積値記憶回路とを含み、前記ビット挿入回路が、前記ビット挿入位置に基づいて、前記第２の信号レベルのビットを挿入しながら、前記あふれ累積値に基づいて、出力すべきパラレル出力データを決定することを特徴とする。
【００１９】
このようにすれば、ビット挿入位置や出力すべきパラレル出力データの範囲を簡素な処理で決めることができるようになる。
【００２０】
また本発明は、前記ビット挿入回路が、前記パラレル出力データの末尾における第１の信号レベルのビットの連続数を記憶する連続数記憶回路を含み、前記演算回路が、前回のクロックサイクルにおいて記憶された前記連続数に基づいて、前記ビット挿入位置を演算することを特徴とする。
【００２１】
このようにすれば、適正なビット挿入位置に第２の信号レベルのビットを挿入できるようになる。
【００２２】
また本発明は、前記ビット挿入回路が、少なくとも１クロックサイクル前のパラレル入力データを記憶するデータ記憶回路と、記憶された前記少なくとも１クロックサイクル前のパラレル入力データと現在のクロックサイクルのパラレル入力データとを合成した合成データを出力するデータ合成回路と、前記あふれ累積値に基づいて、前記合成データの中から、ビット挿入されたパラレル出力データを選択するセレクタとを含むことを特徴とする。
【００２３】
このようにすれば、前段の回路から所与のクロックサイクルでパラレル入力データが順次入力されてきた場合にも、これらのパラレル入力データをデータ記憶回路に一時的に保持しながら、ビット挿入処理を行うことができるようになる。
【００２４】
また本発明は、前記ビット挿入回路が、前記あふれ累積値が所与の値になった場合に、パラレル入力データの入力を少なくとも１クロックサイクル期間だけ停止させる信号を前段の回路に対して出力することを特徴とする。
【００２５】
このようにすれば、前段の回路から所与のクロックサイクルでパラレル入力データが次々と入力されることで、処理が追いつかなくなった場合にも、前段の回路によるパラレル入力データの出力を停止させることができるようになる。これにより、前段の回路からのパラレル入力データが喪失されてしまう事態を防止できる。
【００２６】
また本発明は、前記ビット挿入回路と前記パラレル−シリアル変換回路の間に設けられ、前記ビット挿入回路からのＮビットのパラレル出力データを、物理層用のＮビットのパラレルエンコードデータに変換するエンコーダを含むことを特徴とする。
【００２７】
このようにすれば、シリアルデータに変換される前のパラレルデータの状態で、データのエンコード処理を行うことができるようになる。これにより、シリアルデータの状態で処理する場合に比べて、例えば１／Ｎのクロック周波数でエンコーダは動作すればよいことになる。従って、データ転送制御装置の低コスト化、開発期間の短縮化、信頼性の向上を図れるようになる。
【００２８】
また本発明は、シリアルバスを介したデータ転送のためのデータ転送制御装置であって、前記シリアルバスで転送されるシリアルデータをパラレルデータに変換するためのシリアル−パラレル変換回路と、第１の信号レベルのビットが所与の個数だけ連続したことを条件に挿入された第２の信号レベルのビットを削除するビット削除回路とを含み、前記ビット削除回路が、前記シリアル−パラレル変換回路の後段に設けられると共に、前記ビット削除回路が、前記シリアル−パラレル変換回路を介して所与のクロックサイクルで入力されたＮビットのパラレル入力データを受け、ビット削除されたＮビットのパラレル出力データを出力することを特徴とする。
【００２９】
本発明によれば、ビット削除回路がシリアル−パラレル変換回路の後段に設けられる。従って、パラレルデータの状態で、ビット削除処理を行うことができるようになる。これにより、シリアルデータの状態のままで処理する場合に比べて、例えば１／Ｎのクロック周波数でビット削除回路は動作すればよいことになる。従って、微細加工が可能な最新の半導体プロセスを使う必要が無くなるため、データ転送制御装置の低コスト化を図れる。また、信号タイミングに関するクリティカルパスが減るため、データ転送制御装置の開発期間を短縮化できると共に、データ転送制御装置の動作の信頼性を高めることができるようになる。
【００３０】
また本発明は、前記ビット削除回路が、ビット削除によるデータ長の縮みにより足りなくなったビットを次のクロックサイクルのデータから繰り上げるための処理を行うことを特徴とする。
【００３１】
このようにすれば、所与のクロックサイクルでＮビットのパラレル入力データが順次入力されてきた場合に、ビット削除されたＮビットのパラレル出力データを、例えば同一のクロックサイクルで適正に順次出力できるようになる。
【００３２】
また本発明は、前記ビット削除回路が、前記第２の信号レベルのビットの削除位置とビット削除によるデータ長の縮みビット数とを演算する演算回路と、演算された縮みビット数を累積的に加算又は減算することで得られる縮み累積値を記憶する縮み累積値記憶回路とを含み、前記ビット削除回路が、前記ビット削除位置に基づいて、前記第２の信号レベルのビットを削除しながら、前記縮み累積値に基づいて、出力すべきパラレル出力データを決定することを特徴とする。
【００３３】
このようにすれば、ビット削除位置や出力すべきパラレル出力データの範囲を簡素な処理で決めることができるようになる。
【００３４】
また本発明は、前記ビット削除回路が、ビット削除される前のパラレル出力データの末尾における第１の信号レベルのビットの連続数を記憶する連続数記憶回路を含み、前記演算回路が、前回のクロックサイクルにおいて記憶された前記連続数に基づいて、前記ビット削除位置を演算することを特徴とする。
【００３５】
このようにすれば、ビット削除位置にある第２の信号レベルのビットを適正に削除できるようになる。
【００３６】
また本発明は、前記ビット削除回路が、少なくとも１クロックサイクル前のパラレル入力データを記憶するデータ記憶回路と、記憶された前記少なくとも１クロックサイクル前のパラレル入力データと現在のクロックサイクルのパラレル入力データとを合成した合成データを出力するデータ合成回路と、前記縮み累積値に基づいて、前記合成データの中から、ビット削除されたパラレル出力データを選択するセレクタとを含むことを特徴とする。
【００３７】
このようにすれば、シリアル−パラレル変換回路を介して所与のクロックサイクルでパラレル入力データが順次入力されてきた場合にも、これらのパラレル入力データをデータ記憶回路に一時的に保持しながら、ビット削除処理を行うことができるようになる。
【００３８】
また本発明は、前記ビット削除回路が、前記縮み累積値が所与の値になった場合に、パラレル出力データの取り込みを少なくとも１クロックサイクル期間だけ停止させる信号を後段の回路に対して出力することを特徴とする。
【００３９】
このようにすれば、ビット削除により、後段の回路に出力すべきパラレル出力データが無くなった場合にも、後段の回路によるパラレル出力データの取り込みを停止させることができるようになる。これにより、誤ったパラレル出力データが後段の回路に出力される事態を防止できる。
【００４０】
また本発明は、前記シリアル−パラレル変換回路と前記ビット削除回路との間に設けられ、物理層用に変換されたＮビットのパラレルエンコードデータをデコードし、Ｎビットのパラレル入力データとして前記ビット削除回路に出力するデコーダを含むことを特徴とする。
【００４１】
このようにすれば、パラレルデータの状態で、エンコードデータのデコード処理を行うことができるようになる。これにより、シリアルデータの状態で処理する場合に比べて、例えば１／Ｎのクロック周波数でデコーダは動作すればよいことになる。従って、データ転送制御装置の低コスト化、開発期間の短縮化、信頼性の向上を図れるようになる。
【００４２】
なお本発明では、前記第１の信号レベルのビットが所与の個数だけ連続したことを条件に前記第２の信号レベルのビットを挿入する処理が、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格におけるビットスタッフィング処理であることが望ましい。
【００４３】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及び前記シリアルバスを介して相手デバイスから受信したデータに所与の処理を施す装置と、処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする。また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及び前記シリアルバスを介して相手デバイスに転送するデータに所与の処理を施す装置と、処理が施されるデータを取り込むための装置とを含むことを特徴とする。
【００４４】
本発明によれば、電子機器に使用されるデータ転送制御装置の低コスト化、信頼性の向上を図れるため、電子機器の低コスト化、信頼性の向上も図ることができるようになる。また、本発明によれば、高速な転送モードでデータ転送を行うことができるようになるため、電子機器の処理の高速化を図れるようになる。
【００４５】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００４６】
１．全体構成
図１に本実施形態のデータ転送制御装置の全体構成の例を示す。
【００４７】
本実施形態のデータ転送制御装置は、データ処理回路２００、パケット処理回路２０２、ＨＳ（ハイスピードモード）用エンコーダ＆デコーダ２０４、ＦＳ（フルスピードモード）用エンコーダ＆デコーダ２０６、シグナリング回路２０８を含む。なお、データ処理回路２００、パケット処理回路２０２、ＦＳ用エンコーダ＆デコーダ２０６は任意の構成要素であり、本実施形態のデータ転送制御装置は、これらの構成要素を全て含む必要はない。
【００４８】
データ処理回路２００は、ＵＳＢ規格のトランザクション層の処理や、ＦＩＦＯ（送受信バッファ）を用いたエンドポイントの管理処理などを行う回路である。また、データ処理回路２００は、外部のＣＰＵやＤＭＡコントローラとのインターフェース回路としての機能も有する。
【００４９】
パケット処理回路２０２は、ＵＳＢにより送受信されるパケットを組み立てたり分解したりする処理を行う回路である。より具体的には、送信時には、ＳＯＰ（Ｓｔａｒｔ  Ｏｆ  Ｐａｃｋｅｔ）やＥＯＰ（Ｅｎｄ  Ｏｆ  Ｐａｃｋｅｔ）を付加する処理などを行い、受信時には、ＳＯＰやＥＯＰを削除する処理などを行う。またパケット処理回路２０２は、データの送受信を制御するための各種のタイミング信号を生成する処理も行う。
【００５０】
ＨＳ用エンコーダ＆デコーダ２０４、ＦＳ用エンコーダ＆デコーダ２０６は、ＵＳＢで転送されるデータのエンコード（送信時）やデコード（受信時）を行う回路である。そして、ＨＳ用エンコーダ＆デコーダ２０４は、データ転送速度が４８０Ｍｂｐｓとなるハイスピードモード用のエンコーダ、デコーダであり、ＦＳ用エンコーダ＆デコーダ２０６は、データ転送速度が１２Ｍｂｐｓとなるフルスピードモード用のエンコーダ、デコーダである。
【００５１】
ここで、ハイスピードモードは、ＵＳＢ２．０により規格化される予定の転送モードである。一方、フルスピードモードは、従来のＵＳＢ１．１で規格化されている転送モードである。
【００５２】
ＵＳＢ２．０では、このようなハイスピードモードが用意されているため、プリンタ、オーディオ、カメラなどにおけるデータ転送のみならず、ハードディスクドライブや光ディスクドライブ（ＣＤＲＯＭ、ＤＶＤ）などのストレージ機器におけるデータ転送も実現できるようになる。
【００５３】
シグナリング回路２０８は、ＵＳＢを介して他のデバイスに送信する信号の波形を調整したり、ＵＳＢを介して他のデバイスから受信した信号の同期化処理や、データやクロックを抽出する処理などを行う。
【００５４】
そして、シグナリング回路２０８は、送信時にＨＳ用エンコーダ＆デコーダ２０４又はＦＳ用エンコーダ＆デコーダ２０６から出力されるパラレルデータを、シリアルデータに変換するパラレル−シリアル変換回路２１０を含む。また、受信時にＵＳＢを介して転送されるシリアルデータをパラレルデータに変換し、ＨＳ用エンコーダ＆デコーダ２０４又はＦＳ用エンコーダ＆デコーダ２０６に出力するシリアル−パラレル変換回路２１２を含む。
【００５５】
図２に、本実施形態の要部であるＨＳ用エンコーダ＆デコーダ２０４の構成例を示す。
【００５６】
ＨＳ用エンコーダ＆デコーダ２０４は、ビットスタッフィング回路１０（広義にはビット挿入回路）、ＮＲＺＩエンコーダ１２（広義には、パラレルデータを物理層用のパラレルエンコードデータに変換するエンコーダ）、ＮＲＺＩデコーダ１４（広義には、物理層用に変換されたパラレルエンコードデータをデコードし、パラレルデータを出力するデコーダ）、ビットアンスタッフィング回路１６（広義にはビット削除回路）を含む。
【００５７】
ここで、ビットスタッフィング回路１０、ＮＲＺＩエンコーダ１２は、データの送信（ＴＸ）時に動作する回路であり、ＮＲＺＩデコーダ１４、ビットアンスタッフィング回路１６は、データの受信（ＲＸ）時に動作する回路である。
【００５８】
まず、ＮＲＺＩ（Ｎｏｎ  Ｒｅｔｕｒｎ  ｔｏ  Ｚｅｒｏ  Ｉｎｖｅｒｔ）、ビットスタッフィング（Ｂｉｔ
Ｓｔｕｆｆｉｎｇ）について図３（Ａ）、（Ｂ）を用いて簡単に説明する。
【００５９】
ＮＲＺＩでは、図３（Ａ）のＡ１、Ａ２に示すように、元データのビットが”０”である場合には信号レベルを反転させ、Ａ３に示すように、元データのビットが”１”である場合には信号レベルを維持する。このようなエンコード方式を採用すれば、元データに”０”のビットが続くことで、信号レベルが長時間変化しなかった場合にも、ＮＲＺＩ後のデータの信号レベルはビット毎に信号レベルが変化するようになる。従って、元データの”０”のビットの発生比率が”１”のビットの発生比率に比べて十分に高い場合には、クロック抽出に最適なデータにエンコードできるようになる。
【００６０】
しかしながら、図３（Ａ）のＡ３から明らかなように、元データに”１”のビットが連続して並ぶと、ＮＲＺＩ後のデータの信号レベルが変化しない状態が長時間続くことになり、ＰＬＬの同期はずれの問題が生じてしまう。
【００６１】
このためＵＳＢでは、ビットスタッフィング（広義にはビット挿入）と呼ばれる処理を採用している。即ち図３（Ｂ）のＡ４に示すように、”１”のビットが連続して６個続くと、その後に必ず”０”のビットを挿入するようにする。そしてＡ５に示すように、ビットスタッフ後のデータをＮＲＺＩでエンコードする。
【００６２】
このようにすることで、元データに”１”のビットが並んでいた場合にも、図３（Ｂ）のＡ６に示すようにＮＲＺＩエンコードデータの信号レベルが反転するようになる。従って、信号レベルが長時間変化しない状態が続く問題を解決でき、クロック抽出に最適なデータを得ることができる。
【００６３】
なお、受信側においては、送信側のビットスタッフィングにより挿入された”０”のビットを削除するビットアンスタッフィング処理を行う。即ち、”１”のビットが連続して６個続き、その後に”０”のビットが挿入されていた場合には、その”０”のビットを削除する。
【００６４】
さて、このようなＮＲＺＩやビットスタッフィングやビットアンスタッフィングは、前のビットの信号レベルの状態を見て現在のビットの信号レベルの状態を決めるため、シリアルデータ処理に最適な処理となる。
【００６５】
このため送信側においては、図４の比較例に示すように、ビットスタッフィング回路３０２やＮＲＺＩエンコーダ３０４は、通常、パラレル−シリアル変換回路３００の後段に設けられる。そして、パラレル−シリアル変換回路３００による変換により得られたシリアルデータに対して、ビットスタッフィングやＮＲＺＩエンコードの処理が行われる。
【００６６】
一方、受信側においては、ＮＲＺＩデコーダ３０６やビットアンスタッフィング回路３０８は、通常、シリアル−パラレル変換回路３１０の前段に設けられる。そして、シリアルデータの状態でビットアンタッフィングやＮＲＺＩデコードの処理を行い、処理後のシリアルデータをシリアル−パラレル変換回路３１０に入力して、パラレルデータを得る。
【００６７】
ところが、ＵＳＢ２．０で採用予定のハイスピードモードでは、データ転送速度が４８０Ｍｂｐｓとなるため、図４の構成では、Ｂ１、Ｂ２に示すシリアルデータ処理（ＮＲＺＩ、ビットスタッフィング、ビットアンスタッフィング）を４８０ＭＨｚのクロック周波数で実現しなければならなくなる。
【００６８】
この場合、微細加工が可能な最新の半導体プロセスを採用すれば、Ｂ１、Ｂ２に示すシリアルデータ処理を４８０ＭＨｚで実現することも可能である。
【００６９】
しかしながら、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などでは、コストとの兼ね合いから、このような最新の半導体プロセスではなく、通常の半導体プロセスを採用する方が望ましい。
【００７０】
また、例えば、ビットスタッフィング回路３０２、ＮＲＺＩエンコーダ３０４、ＮＲＺＩデコーダ３０６、ビットアンスタッフィング回路３０８の回路パターンを、配線容量が最適になるように手作業でレイアウトすれば、通常の半導体プロセスを用いても、これらの回路を４８０ＭＨｚで動作させ得る可能性はある。
【００７１】
しかしながら、このような手作業レイアウトは、ＩＣの開発期間の長期化の問題やＩＣの誤動作の問題を招く。
【００７２】
そこで、本実施形態では図２に示すように、送信側においては、ビットスタッフィング回路１０（ビット挿入回路）を、パラレル−シリアル変換回路（図１の２１０）の前段に設けるようにしている。そして、このビットスタッフィング回路１０が、前段のパケット処理回路（図１の２０２）から所与のクロックサイクルで入力された８ビット（広義にはＮビット）のｔｘ＿ｄａｔａ（パラレル入力データ）を受け、ビットスタッフ（ビット挿入）された８ビットのｔｘ＿ｂｓ＿ｄａｔａ（パラレル出力データ）を例えば上記クロックサイクルで出力するようにしている。
【００７３】
更に、ビットスタッフィング回路１０からの８ビットのｔｘ＿ｂｓ＿ｄａｔａを、８ビットのｔｘ＿ｅｎ＿ｄａｔａ（物理層用のパラレルエンコードデータ）に変換するＮＲＺＩエンコーダ１２を、ビットスタッフィング回路１０とパラレル−シリアル変換回路の間に設けるようにしている。
【００７４】
一方、受信側においては、ビットアンスタッフィング回路１６（ビット削除回路）を、シリアル−パラレル変換回路（図１の２１２）の後段に設けるようにしている。そして、このビットアンスタッフィング回路１６が、シリアル−パラレル変換回路を介して所与のクロックサイクルで入力された８ビット（Ｎビット）のｒｘ＿ｂｓ＿ｄａｔａ（パラレル入力データ）を受け、ビットアンスタッフ（ビット削除）された８ビットのｒｘ＿ｄａｔａ（パラレル出力データ）を例えば上記クロックサイクルで出力するようにしている。
【００７５】
更に、８ビットのｒｘ＿ｅｎ＿ｄａｔａ（物理層用に変換されたパラレルエンコードデータ）をデコードし、８ビットのｒｘ＿ｂｓ＿ｄａｔａ（パラレル入力データ）としてビットアンスタッフィング回路１６に出力するＮＲＺＩデコーダ１４を、シリアル−パラレル変換回路とビットアンスタッフィング回路１６との間に設けるようにしている。
【００７６】
以上のような構成にすることで、ＮＲＺＩ、ビットスタッフィング、ビットアンスタッフィングの処理をパラレルデータの状態のままで実現できるようになる。従って、例えばＮ＝８ビットの場合には４８０ＭＨｚ／８＝６０ＭＨｚという低いクロック周波数で、ビットスタッフィング回路１０、ＮＲＺＩエンコーダ１２、ＮＲＺＩデコーダ１４、ビットアンスタッフィング回路１６は動作すればよいことになる。
【００７７】
従って、微細加工が可能な最新の半導体プロセスを用いなくても、ＮＲＺＩ、ビットスタッフィング、ビットアンスタッフィングの処理を実現できるようになる。この結果、データ転送制御装置の低コスト化を図れる。
【００７８】
また、これらの回路１０〜１６のパターンを手作業でレイアウトしなくても済むようになる。従って、回路１０〜１６のパターンをゲートアレイなどの自動配置配線で生成できるようになり、開発期間の短縮化、データ転送制御装置の低コスト化を図れる。
【００７９】
また、回路１０〜１６は、６０ＭＨｚという低速のクロック周波数で動作すればよいため、データのスキューやジッタに対する耐性を高めることができ、データ転送の信頼性を大幅に向上できる。
【００８０】
図５に、送信側におけるビットスタッフィング及びＮＲＺＩエンコードの様子を示す。
【００８１】
なお、ＵＳＢにおいてはＬＳＢファーストでデータが入出力される。また、ＵＳＢ２．０においてはＥＯＰ（ＦＥｈ）についてはビットスタッフされない。
【００８２】
また、説明を簡単にするために、ＳＯＰとして３バイトの（０００００００８ｈ）が付加され、ＥＯＰとして１バイトの（ＦＥｈ）が付加された場合について示してある。また、ＵＳＢのパケット書式ではあり得ないデータではあるが、パケット本体として８バイトの（ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦｈ）のデータが入力された場合について示してある。
【００８３】
また、図５において、点網掛け部分はその値が不問であることを意味する。
【００８４】
例えば図５のＣ１に示すようにｔｘ＿ｄａｔａとして（ＦＦｈ）が図２のビットスタッフィング回路１０に入力された場合を考える。この場合には、前のクロックサイクルでの末尾（ＭＳＢ側）の”１”のビットの連続数はＣ２に示すように１であるため、”１”のビットの連続数が５になったところでＣ３に示すようにビットスタッフィングにより”０”のビットが挿入される。
【００８５】
従って、図２のビットスタッフィング回路１０から出力されるｔｘ＿ｂｓ＿ｄａｔａは、Ｃ４に示すように（ＤＦｈ）になる。そして、この（ＤＦｈ）はＮＲＺＩエンコーダ１２にエンコードされ、ｔｘ＿ｅｎ＿ｄａｔａとしてＣ５に示すように（１Ｆｈ）が出力されることになる。即ち、Ｃ６に示すように”０”のビットがビットスタッフィングにより挿入されることで、Ｃ７に示すようにｔｘ＿ｅｎ＿ｄａｔａの信号レベルが反転する。従って、”１”のビットが続いた場合にも、ｔｘ＿ｅｎ＿ｄａｔａの信号レベルが反転するようになり、受信側でのクロックの抽出が容易になる。
【００８６】
なお、Ｃ３に示すように”０”のビットが挿入されると、Ｃ８に示すビットがあふれることになる。そこで本実施形態では、このあふれたビットを、Ｃ９に示すように次のクロックサイクルのデータに繰り越すようにしている。
【００８７】
また図５のＣ１０では、前のクロックサイクルでの末尾の”１”のビットの連続数は２（Ｃ８のビットが繰り越されているため）であるため、”１”のビットの連続数が４になったところでＣ１１に示すように”０”のビットが挿入される。
【００８８】
従って、ビットスタッフィング回路１０から出力されるｔｘ＿ｂｓ＿ｄａｔａは、Ｃ１２に示すように（ＥＦｈ）になる。またＮＲＺＩエンコーダ１２から出力されるｔｘ＿ｅｎ＿ｄａｔａはＣ１３に示すように（Ｆ０ｈ）になる。即ち、Ｃ１４に示すように”０”のビットが挿入されることで、Ｃ１５に示すようにｔｘ＿ｅｎ＿ｄａｔａの信号レベルが反転し、受信側でのクロックの抽出が容易になる。
【００８９】
また図５のＣ１６では、ビットの挿入数の累積値（あふれビット数の累積値）が８個以上になったため、前段のパケット処理回路（図１の２０２）からのｔｘ＿ｄａｔａの入力が停止される。これは、前段のパケット処理回路に出力される図２の信号ｔｘ＿ｒｅａｄｙを非アクティブにすることで実現される。
【００９０】
図６に、受信側におけるＮＲＺＩデコード及びビットアンスタッフィングの様子を示す。
【００９１】
図６では、図５と同様に、ＵＳＢのパケット書式ではあり得ないデータではあるが、パケット本体として８バイトの（ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦｈ）のデータが入力された場合について示してある。
【００９２】
また、図６において点網掛け部分はその値が不問であることを意味し、斜線網掛け部分はビットスタッフィングにより”０”が挿入されているビットを表す。
【００９３】
例えば図６のＤ１に示すようにｒｘ＿ｅｎ＿ｄａｔａとして（１Ｆｈ）が図２のＮＲＺＩデコーダ１４に入力された場合には、ＮＲＺＩデコーダ１４から出力されるｒｘ＿ｂｓ＿ｄａｔａはＤ２に示すように（ＤＦｈ）になる。この（ＤＦｈ）は、送信側のビットスタッフィングによりＤ３に示す位置に”０”が挿入されたデータである（図５のＣ６参照）。
【００９４】
そして、この（ＤＦｈ）が図２のビットアンスタッフィング回路１６に入力されると、Ｄ３に示す”０”のビットが削除される。即ち、この場合には、前のクロックサイクルでの末尾の”１”のビットの連続数はＤ４に示すように１であるため、”１”のビットの連続数が５になったところでビットアンスタッフィングにより次の”０”のビットが削除される。これにより、ビットアンスタッフィング回路１６から出力されるｒｘ＿ｄａｔａはＤ５に示すように（ＦＦｈ）になる。
【００９５】
なお、Ｄ３に示すように”０”のビットが削除されると、データ長が縮んでしまい、データ長が８ビットに満たなくなってしまう。そこで本実施形態では、Ｄ６に示すビットを次のクロックサイクルのデータから繰り上げるようにしている。
【００９６】
また図６のＤ７に示すようにｒｘ＿ｅｎ＿ｄａｔａとして（Ｆ０ｈ）がＮＲＺＩデコーダ１４に入力された場合には、ＮＲＺＩデコーダ１４から出力されるｒｘ＿ｂｓ＿ｄａｔａはＤ８に示すように（ＥＦｈ）になる。この（ＥＦｈ）は、送信側のビットスタッフィングによりＤ９に示す位置に”０”が挿入されたデータである（図５のＣ１４参照）。
【００９７】
そして、この（ＥＦｈ）がビットアンスタッフィング回路１６に入力されると、Ｄ９に示す”０”のビットが削除される。即ち、この場合には、前のクロックサイクルでの末尾の”１”のビットの連続数は３（Ｄ６に示すビットが繰り上げられているため）であるため、”１”のビットの連続数が３になったところで次の”０”のビットが削除される。これにより、ビットアンスタッフィング回路１６から出力されるｒｘ＿ｄａｔａはＤ１０に示すように（ＦＦｈ）になる。
【００９８】
また図６のＤ１１では、ビットの削除数の累積値（縮みビット数の累積値）が８以上になったため、後段のパケット処理回路（図１の２０２）によるｒｘ＿ｄａｔａの取り込み処理が停止される。これは、後段のパケット処理回路に出力される図２の信号ｒｘ＿ｓｔｒｂを非アクティブにすることで実現される。
【００９９】
２．詳細な構成例
次に、図２の各回路ブロックの詳細な構成例について説明する。
【０１００】
２．１  ビットスタッフィング回路
図７に、図２のビットスタッフィング回路１０の構成例を示す。
【０１０１】
ビットスタッフィング回路１０は、ビットスタッフィング処理回路２０と、データ記憶回路３２と、データ合成回路３４と、プリセレクタ３６（プリシフター）及びポストセレクタ３８（ポストシフター）を有するセレクタ３５を含む。
【０１０２】
ここで、ビットスタッフィング処理回路２０は、ビット挿入によりあふれたビットを次のクロックサイクルのデータに繰り越すための処理を行うものであり、送信シーケンサ２２、ビットスタッフ位置＆あふれ演算回路２４、あふれ累積値記憶回路２６、連続数演算回路２８、連続数記憶回路３０を含む。
【０１０３】
送信シーケンサ２２は、ビットスタッフィング処理や送信処理のための各種の信号を生成する。具体的には、ビットスタッフィング処理回路２０内の各回路ブロックに対する制御信号を生成する。また、前段のパケット処理回路（図１の２０２）からの送信要求信号ｔｘ＿ｒｅｑやビットスタッフィングの禁止指示信号ｄｉｓ＿ｂｓを受け、送信レディ信号ｔｘ＿ｒｅａｄｙを出力する。また、後段のＮＲＺＩエンコーダ（図２の１２）に対して、ｔｘ＿ｂｓ＿ｄａｔａが有効か否かを表す信号ｔｘ＿ｖａｌｉｄやクリア信号ｃｌｅａｒを出力する。
【０１０４】
ビットスタッフ位置＆あふれ演算回路２４は、ビットスタッフ位置（第２の信号レベルのビットの挿入位置）と、ビットスタッフィング（ビット挿入）によりあふれたビットの数を演算する処理を行う。
【０１０５】
あふれ累積値記憶回路２６は、ビットスタッフ位置＆あふれ演算回路２４により演算されたあふれビット数を累積的に加算（減算でもよい）することで得られるあふれ累積値を記憶する。
【０１０６】
本実施形態では、演算されたビットスタッフ位置に基づいて、ビットスタッフィングのための”０”のビットが挿入される。また、記憶されたあふれ累積値に基づいて、出力すべきｔｘ＿ｂｓ＿ｄａｔａの範囲が決定される。
【０１０７】
連続数演算回路２８は、ｔｘ＿ｂｓ＿ｄａｔａの末尾における”１”のビットの連続数を演算し、この連続数を連続数記憶回路３０が記憶する。
【０１０８】
ビットスタッフ位置＆あふれ演算回路２４は、前回のクロックサイクルにおいて連続数記憶回路３０に記憶された末尾の”１”の連続数に基づいて、ビットスタッフ位置を演算することになる。
【０１０９】
データ記憶回路３２は、１クロックサイクル前のｔｘ＿ｄａｔａの全ビットを記憶する回路である。なお、必要であれば、２クロックサイクル前のｔｘ＿ｄａｔａの一部又は全部のビットや、３〜Ｍ（Ｍ＞４）クロックサイクル前のｔｘ＿ｄａｔａの一部又は全部のビットを記憶するようにしてもよい。
【０１１０】
データ合成回路３４は、データ記憶回路３２に記憶された１クロックサイクル前のｔｘ＿ｄａｔａの全ビットと、現在のクロックサイクルのｔｘ＿ｄａｔａの全ビットとを合成し、１６ビットの合成データを出力する。
【０１１１】
プリセレクタ３６は、あふれ累積値記憶回路２６からのあふれ累積値に基づいて、この１６ビットの合成データから８ビットのデータを選択して、ポストセレクタ３８に出力する。
【０１１２】
ポストセレクタ３８は、プリセレクタ３６からの８ビットのデータを受け、ビットスタッフ位置＆あふれ演算回路２４により演算されたビットスタッフ位置に”０”のビットを挿入し、ビット挿入された８ビットのｔｘ＿ｂｓ＿ｄａｔａを出力する。
【０１１３】
次に図８を用いて、図７の回路の動作について詳細に説明する。
【０１１４】
例えば図８のＥ１では、現在のクロックサイクルのｔｘ＿ｄａｔａであるＩ２＝（ＦＦｈ）と、１クロックサイクル前のｔｘ＿ｄａｔａであり、データ記憶回路３２に記憶されているＩ１＝（８０ｈ）とが、データ合成回路３４に入力される。データ合成回路３４は、これらの（ＦＦｈ）と（８０ｈ）からなる合成データをプリセレクタ３６に出力する。
【０１１５】
この時、あふれ累積値記憶回路２６に記憶されるあふれ累積値は図８のＥ２に示すように０になっている。従って、このあふれ累積値をあふれ累積値記憶回路２６から受けたプリセレクタ３６は、合成データの中から、Ｅ３に示す位置を先頭ビットとする８ビットのデータを選択して出力する。
【０１１６】
また、連続数記憶回路３０に記憶される末尾の”１”の連続数は図８のＥ４、Ｅ５に示すように１であるため、ビットスタッフ位置＆あふれ演算回路２４は、６−１＝５の計算を行い、Ｅ６に示す位置をビットスタッフ位置としてポストセレクタ３８に知らせる。
【０１１７】
すると、プリセレクタ３６からの８ビットのデータとビットスタッフ位置＆あふれ演算回路２４からのビットスタッフ位置を受けたポストセレクタ３８は、指定されたビットスタッフ位置に”０”のビットを挿入する。これにより、Ｅ７に示す８ビットのデータ（ＤＦｈ）が、Ｅ８に示すようにｔｘ＿ｂｓ＿ｄａｔａとして出力されるようになる。
【０１１８】
なお、この場合、プリセレクタ３６から出力された８ビットのデータのうちＥ９に示すビットは、ビットスタッフィングによりあふれビットになるため、Ｅ１０に示すように次のクロックサイクルのデータに繰り越されることになる。
【０１１９】
図８のＥ１１では、データ合成回路３４は、Ｉ３＝（ＦＦｈ）とＩ２＝（ＦＦｈ）を合成し、プリセレクタ３６に出力する。
【０１２０】
この時、あふれ累積値は１つ加算されて図８のＥ１２に示すように１になっている。従って、プリセレクタ３６は、合成データの中から、Ｅ１３に示す位置を先頭ビットとする８ビットのデータを選択して出力する。
【０１２１】
また、末尾の”１”の連続数はＥ１４に示すように２であるため、Ｅ１５に示す位置がビットスタッフ位置としてポストセレクタ３８に知らされる。
【０１２２】
すると、ポストセレクタ３８は、指定されたビットスタッフ位置に”０”のビットを挿入する。これにより、Ｅ１６に示す（ＥＦｈ）が、Ｅ１７に示すようにｔｘ＿ｂｓ＿ｄａｔａとして出力されるようになる。
【０１２３】
以上のようにして、ビットスタッフされたｔｘ＿ｂｓ＿ｄａｔａがクロックサイクル毎に順次出力される。そして、ビットスタッフィングにより”０”のビットが挿入される毎に、あふれ累積値が例えばＥ１８、Ｅ１９、Ｅ２０、Ｅ２１、Ｅ２２に示すように増加して行く。そして、これに伴い、８ビットのデータを取り出す位置もＥ２３、Ｅ２４、Ｅ２５、Ｅ２６、Ｅ２７に示すように変化して行く。
【０１２４】
そして、Ｅ２８に示すようにあふれ累積値が８になると、あふれ累積値は０に初期化される（９の場合には１に初期化される）。すると、図７の送信シーケンサ２２が、前段のパケット処理回路に出力する送信レディ信号ｔｘ＿ｒｅａｄｙを、図８のＥ２９に示すように１クロックサイクル期間だけ非アクティブにする。これにより、Ｅ３０、Ｅ３１に示すように、ｔｘ＿ｄａｔａの入力が、１クロックサイクル期間だけ停止される。また、Ｅ３２、Ｅ３３に示すように、図７のデータ記憶回路３２へのデータの取り込みも停止される。
【０１２５】
そして、次のＥ３４のクロックサイクルでは、あふれ累積値が０に初期化されているため、Ｅ３５に示す位置から８ビットのデータが取り出されることになる。
【０１２６】
以上のようにすることで、本実施形態では、あふれ累積値が８又は９（所与の値）になった場合にも合成データの中から８ビットのデータを矛盾無く取り出すことに成功している。
【０１２７】
２．２  ＮＲＺＩエンコーダ
図９に、図２のＮＲＺＩエンコーダ１２の構成例を示す。
【０１２８】
ＮＲＺＩエンコーダ１２は、ＮＲＺＩエンコード演算回路５０と末尾ビット記憶回路５２を含む。
【０１２９】
ここで、ＮＲＺＩエンコード演算回路５０は、前段のビットスタッフィング回路１０からのｔｘ＿ｂｓ＿ｄａｔａと末尾ビット記憶回路５２からのｌａｓｔ１ｂｉｔを受け、エンコード後のｔｘ＿ｅｎ＿ｄａｔａを出力する回路である。
【０１３０】
末尾ビット記憶回路５２は、ｔｘ＿ｅｎ＿ｄａｔａの末尾の１ビットの信号レベルを記憶し、これをｌａｓｔ１ｂｉｔとしてＮＲＺＩエンコード演算回路５０に出力する回路である。
【０１３１】
なお、末尾ビット記憶回路５２は、前段のビットスタッフィング回路１０からの信号ｃｌｅａｒがアクティブになるとリセットされる。また、信号ｔｘ＿ｖａｌｉｄに１が立っていることを条件に、ｔｘ＿ｅｎ＿ｄａｔａの末尾の１ビットを記憶する。
【０１３２】
図１０に、ＮＲＺＩエンコード演算回路５０の動作を表すフローチャートを示す。
【０１３３】
まず、前段のビットスタッフィング回路１０からのｔｘ＿ｂｓ＿ｄａｔａ［０］（ｔｘ＿ｂｓ＿ｄａｔａのビット０）が１か否かを判断する（ステップＳ１）。
【０１３４】
そして、ｔｘ＿ｂｓ＿ｄａｔａ［０］＝１の場合には、ｔｘ＿ｅｎ＿ｄａｔａ［０］の信号レベルをｌａｓｔ１ｂｉｔと同一信号レベルに設定する（ステップＳ２）。例えば図１１のＦ１では、ｔｘ＿ｂｓ＿ｄａｔａ［０］＝１でありｌａｓｔ１ｂｉｔ＝１であるため、ｔｘ＿ｅｎ＿ｄａｔａ［０］＝１（ｌａｓｔ１ｂｉｔ＝１と同一信号レベル）になる。
【０１３５】
一方、ｔｘ＿ｂｓ＿ｄａｔａ［０］＝０の場合には、ｔｘ＿ｅｎ＿ｄａｔａ［０］の信号レベルをｌａｓｔ１ｂｉｔの反転信号レベルに設定する（ステップＳ３）。例えば図１１のＦ２では、ｔｘ＿ｂｓ＿ｄａｔａ［０］＝０でありｌａｓｔ１ｂｉｔ＝０であるため、ｔｘ＿ｅｎ＿ｄａｔａ［０］＝１（ｌａｓｔ１ｂｉｔ＝０の反転信号レベル）になる。
【０１３６】
次に、ｎ＝１に設定し、ｔｘ＿ｂｓ＿ｄａｔａ［ｎ］が１か否かを判断する（ステップＳ４、Ｓ５）。
【０１３７】
そして、ｔｘ＿ｂｓ＿ｄａｔａ［ｎ］＝１の場合には、ｔｘ＿ｅｎ＿ｄａｔａ［ｎ］の信号レベルをｔｘ＿ｅｎ＿ｄａｔａ［ｎ−１］と同一信号レベルに設定する（ステップＳ６）。例えば図１１のＦ３では、ｔｘ＿ｂｓ＿ｄａｔａ［１］＝１でありｔｘ＿ｅｎ＿ｄａｔａ［０］＝１であるため、ｔｘ＿ｅｎ＿ｄａｔａ［１］＝１（ｔｘ＿ｅｎ＿ｄａｔａ［０］＝１と同一信号レベル）になる。
【０１３８】
一方、ｔｘ＿ｂｓ＿ｄａｔａ［ｎ］＝０の場合には、ｔｘ＿ｅｎ＿ｄａｔａ［ｎ］の信号レベルをｔｘ＿ｅｎ＿ｄａｔａ［ｎ−１］の反転信号レベルに設定する（ステップＳ７）。例えば図１１のＦ４では、ｔｘ＿ｂｓ＿ｄａｔａ［１］＝０でありｔｘ＿ｅｎ＿ｄａｔａ［０］＝１であるため、ｔｘ＿ｅｎ＿ｄａｔａ［１］＝０（ｔｘ＿ｅｎ＿ｄａｔａ［０］＝１の反転信号レベル）になる。
【０１３９】
次に、ｎを１つインクリメントする（ステップＳ８）。そして、ステップＳ５〜Ｓ８の処理をｎ＞８になるまで繰り返すことで（ステップＳ９）、全てのｔｘ＿ｅｎ＿ｄａｔａ［ｎ］を得る。
【０１４０】
図１２に、ビットスタッフィング回路１０、ＮＲＺＩエンコーダ１４において入出力される各種の信号の波形例を示す。なお、図１２のｔｘ＿ｂｓ＿ｄａｔａは、波形を整えるためにクロックでサンプリングされているため、図８のｔｘ＿ｂｓ＿ｄａｔａよりも１クロックサイクルだけ遅れた信号になっている。
【０１４１】
図１２のＧ１、Ｇ２に示すように、あふれ累積値が８又は９になると、送信レディ信号ｔｘ＿ｒｅａｄｙが非アクティブになり、ｔｘ＿ｄａｔａの入力が１クロックサイクル期間だけ停止する（図８のＥ２９、Ｅ３０、Ｅ３１参照）。
【０１４２】
また、図１２のＧ３に示すように、ＥＯＰ＝（ＦＥｈ）の入力時にｄｉｓ＿ｂｓがアクティブになり、ビットスタッフィングが禁止される。
【０１４３】
また、Ｇ４、Ｇ５に示すように、送信要求信号ｔｘ＿ｒｅｑが非アクティブになってから、例えば２クロックサイクル後に信号ｃｌｅａｒがアクティブになり、図９の末尾ビット記憶回路５２がリセットされる。
【０１４４】
また、Ｇ６に示す信号ｔｘ＿ｖａｌｉｄは、ｔｘ＿ｂｓ＿ｄａｔａが有効な時にだけ１になる。
【０１４５】
２．３  ＮＲＺＩデコーダ
図１３に、図２のＮＲＺＩデコーダ１４の構成例を示す。
【０１４６】
ＮＲＺＩデコーダ１４は、ＮＲＺＩデコード演算回路６０と末尾ビット記憶回路６２を含む。
【０１４７】
ここで、ＮＲＺＩデコード演算回路６０は、前段のシリアル−パラレル変換回路（図１の２１２）からのｒｘ＿ｅｎ＿ｄａｔａと末尾ビット記憶回路６２からのｌａｓｔ１ｂｉｔを受け、デコード後のｒｘ＿ｂｓ＿ｄａｔａを出力する回路である。
【０１４８】
末尾ビット記憶回路６２は、ｒｘ＿ｅｎ＿ｄａｔａの末尾の１ビットの信号レベルを記憶し、これをｌａｓｔ１ｂｉｔとしてＮＲＺＩデコード演算回路６０に出力する回路である。
【０１４９】
なお、末尾ビット記憶回路６２は、信号ｃｌｅａｒがアクティブになるとリセットされる。また、信号ｒｘ＿ｖａｌｉｄに１が立っていることを条件に、ｒｘ＿ｅｎ＿ｄａｔａの末尾の１ビットを記憶する。
【０１５０】
図１４に、ＮＲＺＩデコード演算回路６０の動作を表すフローチャートを示す。
【０１５１】
まず、前段のシリアル−パラレル変換回路からのｒｘ＿ｅｎ＿ｄａｔａ［０］（ｒｘ＿ｅｎ＿ｄａｔａのビット０）の信号レベルがｌａｓｔ１ｂｉｔの信号レベルと等しいか否かを判断する（ステップＳ１１）。
【０１５２】
そして、ｒｘ＿ｅｎ＿ｄａｔａ［０］の信号レベルがｌａｓｔ１ｂｉｔと等しい場合には、ｒｘ＿ｂｓ＿ｄａｔａ［０］＝１にする（ステップＳ１２）。例えば図１５のＧ１では、ｒｘ＿ｅｎ＿ｄａｔａ［０］＝ｌａｓｔ１ｂｉｔ＝１であるため、ｒｘ＿ｂｓ＿ｄａｔａ［０］＝１になる。
【０１５３】
一方、ｒｘ＿ｅｎ＿ｄａｔａ［０］の信号レベルがｌａｓｔ１ｂｉｔと等しくない場合には、ｒｘ＿ｂｓ＿ｄａｔａ［０］＝０にする（ステップＳ１３）。例えば図１５のＧ２では、ｒｘ＿ｅｎ＿ｄａｔａ［０］＝１、ｌａｓｔ１ｂｉｔ＝０であるため、ｒｘ＿ｂｓ＿ｄａｔａ［０］＝０になる。
【０１５４】
次に、ｎ＝１に設定し、ｒｘ＿ｅｎ＿ｄａｔａ［ｎ］の信号レベルがｒｘ＿ｅｎ＿ｄａｔａ［ｎ−１］の信号レベルに等しいか否かを判断する（ステップＳ１４、Ｓ１５）。
【０１５５】
そして、ｒｘ＿ｅｎ＿ｄａｔａ［ｎ］の信号レベルがｒｘ＿ｅｎ＿ｄａｔａ［ｎ−１］と等しい場合には、ｒｘ＿ｂｓ＿ｄａｔａ［ｎ］＝１にする（ステップＳ１６）。例えば図１５のＧ３では、ｒｘ＿ｅｎ＿ｄａｔａ［１］＝ｒｘ＿ｅｎ＿ｄａｔａ［０］＝１であるため、ｒｘ＿ｂｓ＿ｄａｔａ［１］＝１になる。
【０１５６】
一方、ｒｘ＿ｅｎ＿ｄａｔａ［ｎ］の信号レベルがｒｘ＿ｅｎ＿ｄａｔａ［ｎ−１］と等しくない場合には、ｒｘ＿ｂｓ＿ｄａｔａ［ｎ］＝０にする（ステップＳ１７）。例えば図１５のＧ４では、ｒｘ＿ｅｎ＿ｄａｔａ［１］＝０、ｒｘ＿ｅｎ＿ｄａｔａ［０］＝１であるため、ｒｘ＿ｂｓ＿ｄａｔａ［１］＝０になる。
【０１５７】
次に、ｎを１つインクリメントする（ステップＳ１８）。そして、ステップＳ１５〜Ｓ１８の処理をｎ＞８になるまで繰り返すことで（ステップＳ１９）、全てのｒｘ＿ｂｓ＿ｄａｔａ［ｎ］を得る。
【０１５８】
２．４  ビットアンスタッフィング回路
図１６に、図２のビットアンスタッフィング回路１６の構成例を示す。
【０１５９】
ビットアンスタッフィング回路１６は、ビットアンスタッフィング処理回路７０と、データ記憶回路８２と、データ合成回路８４と、プリセレクタ８６（プリシフター）及びポストセレクタ８８（ポストシフター）を有するセレクタ８５を含む。
【０１６０】
ここで、ビットアンスタッフィング処理回路７０は、ビット削除によるデータ長の縮みにより足りなくなったビットを次のクロックサイクルのデータから繰り上げるための処理を行うものであり、受信シーケンサ７２、ビットアンスタッフ位置＆縮み演算回路７４、縮み累積値記憶回路７６、連続数演算回路７８、連続数記憶回路８０を含む。
【０１６１】
受信シーケンサ７２は、ビットアンスタッフィング処理や受信処理のための各種の信号を生成する。具体的には、ビットアンスタッフィング処理回路７０内の各回路ブロックに対する制御信号を生成する。また、前段のシリアル−パラレル変換回路（図１の２１２）から信号ｒｘ＿ｖａｌｉｄを受け、信号ｃｌｅａｒ、ｒｘ＿ｉｎ、ｒｘ＿ｓｔｒｂを出力する。
【０１６２】
ビットアンスタッフ位置＆縮み演算回路７４は、ビットアンスタッフ位置（第２の信号レベルのビットの削除位置）と、ビットアンスタッフィング（ビット削除）によるデータ長の縮みビット数を演算する処理を行う。
【０１６３】
縮み累積値記憶回路７６は、ビットアンスタッフ位置＆縮み演算回路７４により演算された縮みビット数を初期値から累積的に減算（加算でもよい）することで得られる縮み累積値を記憶する。
【０１６４】
本実施形態では、演算されたビットアンスタッフ位置に基づいて、送信側のビットスタッフィングにより挿入された”０”のビットが削除される。また、記憶された縮み累積値に基づいて、出力すべきｒｘ＿ｄａｔａの範囲が決定される。
【０１６５】
連続数演算回路７８は、ビットアンスタッフされる前のｒｘ＿ｄａｔａの末尾における”１”のビットの連続数（プリセレクタ８６の出力のうちポストセレクタ８８により選択されるデータの末尾における”１”のビットの連続数）を演算し、この連続数を連続数記憶回路８０が記憶する。
【０１６６】
ビットアンスタッフ位置＆縮み演算回路７４は、前回のクロックサイクルにおいて連続数記憶回路８０に記憶された末尾の”１”の連続数に基づいて、ビットアンスタッフ位置を演算することになる。
【０１６７】
データ記憶回路８２は、２クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａのｂｉｔ７（末尾ビット）と１クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａの全ビットを記憶する回路である。なお、必要であれば、２クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａの全部のビットや、３〜Ｍ（Ｍ＞４）クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａの一部又は全部のビットを記憶するようにしてもよい。
【０１６８】
データ合成回路８４は、データ記憶回路８２に記憶された２クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａのｂｉｔ７及び１クロックサイクル前のｒｘ＿ｂｓ＿ｄａｔａの全ビットと、現在のクロックサイクルのｒｘ＿ｂｓ＿ｄａｔａの全ビットとを合成し、１７ビットの合成データを出力する。
【０１６９】
プリセレクタ８６は、縮み累積値記憶回路７６からの縮み累積値に基づいて、この１７ビットの合成データから１０ビットのデータを選択して、ポストセレクタ８８に出力する。
【０１７０】
ポストセレクタ８８は、プリセレクタ８６からの１０ビットのデータを受け、ビットアンスタッフ位置＆縮み演算回路７４により演算されたビットアンスタッフ位置にある”０”のビットを削除し、ビット削除された８ビットのｒｘ＿ｄａｔａを出力する。
【０１７１】
次に図１７を用いて、図１６の回路の動作について詳細に説明する。
【０１７２】
例えば図１７のＨ１では、現在のクロックサイクルのｒｘ＿ｂｓ＿ｄａｔａであるＩ３＝（ＥＦｈ）と、１クロックサイクル前のＩ２＝（ＤＦｈ）と、２クロックサイクル前のＩ１の末尾ビットである”１”が、データ合成回路８４により合成され、その合成データがプリセレクタ８６に出力される。
【０１７３】
この時、縮み累積値記憶回路７６に記憶される縮み累積値は図１７のＨ２に示すように８（初期値）になっている。従って、この縮み累積値を受けたプリセレクタ８６は、合成データの中から、Ｈ３に示す位置を先頭ビットとする１０ビットのデータを選択して出力する。
【０１７４】
また、連続数記憶回路８０に記憶される末尾の”１”の連続数は図１７のＨ４、Ｈ５に示すように１であるため、ビットアンスタッフ位置＆縮み演算回路７４は、６−１＝５の計算を行い、Ｈ６に示す位置をビットアンスタッフ位置としてポストセレクタ８８に知らせる。
【０１７５】
すると、プリセレクタ８６からの１０ビットのデータとビットアンスタッフ位置＆縮み演算回路７４からのビットアンスタッフ位置を受けたポストセレクタ８８は、指定されたビットアンスタッフ位置にある”０”のビットを削除する。これにより、Ｈ７に示す８ビットのデータ（ＦＦｈ）が、Ｈ８に示すようにｒｘ＿ｄａｔａとして出力されるようになる。
【０１７６】
なお、この場合に、ビット削除により足りなくなったＨ９に示すビットは、データＩ２の次のクロックサイクルのデータＩ３から繰り上げられることになる。
【０１７７】
図１７のＨ１０では、データ合成回路８４は、Ｉ４＝（Ｆ７ｈ）、Ｉ３＝（ＥＦｈ）、Ｉ２の末尾ビットである”１”を合成し、プリセレクタ８６に出力する。
【０１７８】
この時、縮み累積値は１つ減算されてＨ１１に示すように７になっている。従って、プリセレクタ８６は、合成データの中から、Ｈ１２に示す位置を先頭ビットとする１０ビットのデータを選択して出力する。
【０１７９】
また、末尾の”１”の連続数はＨ１３に示すように３であるため、Ｈ１４に示す位置がビットアンスタッフ位置としてポストセレクタ８８に知らされる。
【０１８０】
すると、ポストセレクタ８８は、指定されたビットアンスタッフ位置にある”０”のビットを削除する。これにより、Ｈ１５に示す（ＦＦｈ）が、Ｈ１６に示すようにｒｘ＿ｄａｔａとして出力されるようになる。
【０１８１】
以上のようにして、ビットアンスタッフされたｒｘ＿ｄａｔａがクロックサイクル毎に順次出力される。そして、ビットアンスタッフィングにより”０”のビットが削除される毎に縮み累積値が例えばＨ１７、Ｈ１８、Ｈ１９に示すように減少して行く。そして、これに伴い、１０ビットのデータを取り出す位置もＨ２０、Ｈ２１、Ｈ２２に示すように変化して行く。
【０１８２】
そして、Ｈ２３に示すように縮み累積値が０になると、縮み累積値は８に初期化される（１の場合には９に初期化される）。すると、図１６の受信シーケンサ７２が、後段のパケット処理回路に出力する受信ストローブ信号ｒｘ＿ｓｔｒｂを、図１７のＨ２４に示すように１クロックサイクル期間だけ非アクティブにする。これにより、Ｈ２５に示すように、ｒｘ＿ｄａｔａの取り込みが、１クロックサイクル期間だけ停止される。
【０１８３】
そして、次のＨ２６のクロックサイクルでは、縮み累積値が８に初期化されているため、Ｈ２７に示す位置から１０ビットのデータが取り出されることになる。
【０１８４】
以上のようにすることで、本実施形態では、縮み累積値が０又は１（所与の値）になった場合にも合成データの中から１０ビットのデータを矛盾無く取り出すことに成功している。
【０１８５】
図１８に、ＮＲＺＩデコーダ１４、ビットアンスタッフィング回路１６で入出力される各種の信号の波形例を示す。なお、図１８のｒｘ＿ｄａｔａ、ｒｘ＿ｓｔｒｂは、波形を整えるためにクロックでサンプリングされているため、図１７のｒｘ＿ｄａｔａ、ｒｘ＿ｓｔｒｂよりも１クロックサイクルだけ遅れた信号になっている。
【０１８６】
図１８のＪ１、Ｊ２に示すように、縮み累積値が８又は９になると、受信ストローブ信号ｒｘ＿ｓｔｒｂが非アクティブになり、ｒｘ＿ｄａｔａの取り込みが１クロックサイクル期間だけ停止する（図１７のＨ２４、Ｈ２５参照）。
【０１８７】
また、図１２のＧ３で説明したように送信側ではＥＯＰに対するビットスタッフィング処理が行われない。従って、ＥＯＰを受け取った時に受信側ではビットスタッフィングエラーが生じ、図１８のＪ３に示すように、受信エラー信号ｒｘ＿ｅｒｒがアクティブになる。即ち、受信側は、ビットスタッフィングエラーを検出することで、ＥＯＰを検出することになる。
【０１８８】
３．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【０１８９】
例えば図１９（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図２０（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１７はＣＰＵ５１０のワーク領域として機能する。ＤＭＡＣ５１８は、ＣＰＵ５１０を介さずにデータ転送を行うためのＤＭＡコントローラである。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０１９０】
ＵＳＢを介してパーソナルコンピュータなどの他のデバイスから送られてきたシリアルの印字データは、データ転送制御装置５００によりパラレルの印字データに変換される。そして、変換後のパラレル印字データは、ＣＰＵ５１０又はＤＭＡＣ５１８により、印字処理部（プリンタエンジン）５１２に送られる。そして、印字処理部５１２においてパラレル印字データに対して所与の処理が施され、プリントヘッダなどからなる印字部（データを出力するための装置）５１４により紙に印字されて出力される。
【０１９１】
図１９（Ｂ）に電子機器の１つであるスキャナの内部ブロック図を示し、図２０（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はスキャナをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２７はＣＰＵ５２０のワーク領域として機能する。ＤＭＡＣ５２８はＤＭＡコントローラである。
【０１９２】
光源、光電変換器などからなる画像読み取り部（データを取り込むための装置）５２２により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部（スキャナエンジン）５２４により処理される。そして、処理後の画像データは、ＣＰＵ５２０又はＤＭＡＣ５２８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルの画像データをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１９３】
図１９（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図２０（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３７はＣＰＵ５３０のワーク領域として機能する。ＤＭＡＣ５３８はＤＭＡコントローラである。
【０１９４】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データを取り込むための装置又はデータを記憶するための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、ＣＰＵ５３０又はＤＭＡＣ５３８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルのデータをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１９５】
一方、ＵＳＢを介して他のデバイスから送られてきたシリアルのデータは、データ転送制御装置５００によりパラレルのデータに変換される。そして、このパラレルデータは、ＣＰＵ５３０又はＤＭＡＣ５３８により信号処理部５３４に送られる。そして、信号処理部５３４においてこのパラレルデータに対して所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０１９６】
なお、図１９（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０１９７】
本実施形態のデータ転送制御装置を電子機器に用いれば、ＵＳＢ２．０におけるハイスピードモードでのデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、ＣＤ−ＲＷからのデータの読み取りや、ＣＤ−ＲＷへのデータの書き込みを高速に行うことができるようになる。
【０１９８】
また、本実施形態のデータ転送制御装置を電子機器に用いれば、製造コストが安い通常の半導体プロセスでデータ転送制御装置のＩＣを製造できるようになる。従って、データ転送制御装置の低コスト化を図れ、電子機器の低コスト化も図れるようになる。また、データ転送制御の中で高速で動作する部分を少なくすることができるため、データ転送の信頼性を向上でき、電子機器の信頼性も向上できるようになる。
【０１９９】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０２００】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２０１】
例えば、本発明のデータ転送制御装置の構成は、図１や図２に示す構成に限定されるものではない。
【０２０２】
また、ビット挿入回路、エンコーダ、デコーダ、ビット削除回路の構成も、図７、図９、図１３、図１６で説明した構成が特に望ましいが、これらと均等な種々の構成を採用できる。
【０２０３】
また、本発明は、ＵＳＢ２．０でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＵＳＢ２．０と同様の思想に基づく規格やＵＳＢ２．０を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】本実施形態のデータ転送制御装置の全体構成例を示す図である。
【図２】本実施形態の要部であるＨＳ用エンコーダ＆デコーダの構成例を示す図である。
【図３】図３（Ａ）、（Ｂ）は、ＮＲＺＩ及びビットスタッフィングについて説明するための図である。
【図４】比較例について説明するための図である。
【図５】送信側におけるビットスタッフィング及びＮＲＺＩエンコードの様子について示す図である。
【図６】受信側におけるビットアンスタッフィング及びＮＲＺＩデコードの様子について示す図である。
【図７】ビットスタッフィング回路（ビット挿入回路）の構成例を示す図である。
【図８】ビットスタッフィング回路の動作について説明するための図である。
【図９】ＮＲＺＩエンコーダの構成例を示す図である。
【図１０】ＮＲＺＩエンコーダの動作について説明するためのフローチャートである。
【図１１】ＮＲＺＩエンコーダの動作について説明するための図である。
【図１２】ビットスタッフィング回路、ＮＲＺＩエンコーダで入出力される各種の信号の波形例である。
【図１３】ＮＲＺＩデコーダの構成例を示す図である。
【図１４】ＮＲＺＩデコーダの動作について説明するためのフローチャートである。
【図１５】ＮＲＺＩデコーダの動作について説明するための図である。
【図１６】ビットアンスタッフィング回路（ビット削除回路）の構成例を示す図である。
【図１７】ビットアンスタッフィング回路の動作について説明するための図である。
【図１８】ビットアンスタッフィング回路、ＮＲＺＩデコーダで入出力される各種の信号の波形例である。
【図１９】図１９（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図２０】図２０（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    ビットスタッフィング回路（ビット挿入回路）
１２    ＮＲＺＩエンコーダ
１４    ＮＲＺＩデコーダ
１６    ビットアンスタッフィング回路（ビット削除回路）
２０    ビットスタッフィング処理回路
２２    送信シーケンサ
２４    ビットスタッフ位置＆あふれ演算回路
２６    縮み累積値記憶回路
２８    連続数演算回路
３０    連続数記憶回路
３２    データ記憶回路
３４    データ合成回路
３５    セレクタ
３６    プリセレクタ
３８    ポストセレクタ
５０    ＮＲＺＩエンコード演算回路
５２    末尾ビット記憶回路
６０    ＮＲＺＩデコード演算回路
６２    末尾ビット記憶回路
７０    ビットアンスタッフィング処理回路
７２    受信シーケンサ
７４    ビットアンスタッフ位置＆縮み演算回路
７６    縮み累積値記憶回路
７８    連続数演算回路
８０    連続数記憶回路
８２    データ記憶回路
８４    データ合成回路
８５    セレクタ
８６    プリセレクタ
８８    ポストセレクタ
【図１】
0003603732.tif 000002
【図２】
0003603732.tif 000003
【図３】
0003603732.tif 000004
【図４】
0003603732.tif 000005
【図５】
0003603732.tif 000006
【図６】
0003603732.tif 000007
【図７】
0003603732.tif 000008
【図８】
0003603732.tif 000009
【図９】
0003603732.tif 000010
【図１０】
0003603732.tif 000011
【図１１】
0003603732.tif 000012
【図１２】
0003603732.tif 000013
【図１３】
0003603732.tif 000014
【図１４】
0003603732.tif 000015
【図１５】
0003603732.tif 000016
【図１６】
0003603732.tif 000017
【図１７】
0003603732.tif 000018
【図１８】
0003603732.tif 000019
【図１９】
0003603732.tif 000020
【図２０】
0003603732.tif 000021