(57)【特許請求の範囲】
【請求項１】
第１のクロックに同期するｎ＋１（ｎは自然数）ビットのバスデータを第２のクロックに同期化させるためのデータ同期化回路において、
前記第１のクロックに同期し且つ所定タイミング毎に入力する前記バスデータをホールドする第１の回路と、
前記第１のクロックに同期し且つ前記所定タイミングに対応した第１のタイミング信号を生成する第２の回路と、
前記第１のタイミング信号から前記第２のクロックに同期する第２のタイミング信号を生成する第３の回路と、
前記第１の回路から出力される前記バスデータを前記第２のタイミング信号に基づいて受信し、前記第２のクロックに同期して出力する第４の回路とを備えることを特徴とするデータ同期化回路。
【請求項２】
請求項１において、
前記第３の回路は、複数段のフリップフロップ回路を備えて構成されることを特徴とするデータ同期化回路。
【請求項３】
通信回線を伝送する回線データを送受信する通信インターフェース回路において、
前記回線データを内部で転送されるｎ＋１（ｎは自然数）ビットのバスデータに変換し、前記バスデータを前記回線データに変換する変換回路と、
第１のクロックに同期する前記バスデータを第２のクロックに同期化させるためのデータ同期化回路とを備え、
前記データ同期化回路は、前記第１のクロックに同期し且つ所定タイミング毎に入力する前記バスデータをホールドする第１の回路と、
前記第１のクロックに同期し且つ前記所定タイミングに対応した第１のタイミング信号を生成する第２の回路と、
前記第１のタイミング信号から前記第２のクロックに同期する第２のタイミング信号を生成する第３の回路と、
前記第１の回路から出力される前記バスデータを前記第２のタイミング信号に基づいて受信し、前記第２のクロックに同期して出力する第４の回路とを備えることを特徴とする通信インターフェース回路。
【請求項４】
請求項３において、
前記回線データは、シリアルデータであることを特徴とする通信インターフェース回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを送受信するための通信インターフェース回路に関し、特に、異なるクロック間でデータを転送するためのデータ同期化回路及びそれを含む通信インターフェース回路に関する。
【０００２】
【従来の技術】
例えばパーソナルコンピュータとその周辺装置（例えば、ハードディスクドライブなど）などの装置間のデータ通信を制御する通信インターフェースにおいて、受信側のクロックと送信側のクロックの速度が異なる場合、異なるクロック間でのデータの同期化が必要となる。特に、通信回線上を所定クロック速度で伝送する回線データを、別のクロック速度で転送される内部のバスデータに変換（又はその逆変換）する必要がある通信インターフェース回路では、その内部において、バスデータを異なるクロック間で同期させる必要がある。
【０００３】
異なるクロック間でデータを同期化し、互いに異なるクロックで動作する回路ブロック間でデータを受け渡しするには、バッファメモリを使用する方法やハンドシェイクを行う方法が知られている。バッファメモリを使用する方法は、ブロック間のクロック差を吸収するために、送信側の回路ブロックからのデータを一旦バッファメモリに蓄積し、受信側の回路ブロックのクロックに同期させて、受信側の回路ブロックにデータを出力する。ハンドシェイクを行う方法は、データの送受信前に、送信側の回路ブロックと受信側の回路ブロック間で通信方法やプロトコルなどの取り決めをあらかじめ行い、それに従ってデータを送受信する。
【０００４】
【発明が解決しようとする課題】
しかしながら、バッファメモリを使用する方法は、通信インターフェース回路内部にバッファメモリ（及びバッファメモリテスト回路など）のスペースが必要となり、通信インターフェース回路、ひいてはそれを内蔵する装置の小型化の障害となる。さらに、回路ブロック間の制御信号も必要となり、制御が複雑となる。また、ハンドシェイクを行う方法についても、そのための制御信号、制御回路が必要となる。通信インターフェース回路の小型化の障害となり、その構成が複雑となる。さらに、ハンドシェイクを行う場合、通信速度が比較的遅く、高速転送には適さない。
【０００５】
そこで、本発明の目的は、異なるクロック間でデータを転送する必要がある通信インターフェース回路において、省スペース且つ簡単な構成により異なるクロック間でデータを同期化できるデータ同期化回路を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するための本発明のデータ同期化回路の構成は、第１のクロックに同期するｎ＋１（ｎは自然数）ビットのバスデータを第２のクロックに同期化させるためのデータ同期化回路において、
前記第１のクロックに同期し且つ所定タイミング毎に入力する前記バスデータをホールドする第１の回路と、
前記第１のクロックに同期し且つ前記所定タイミングに対応した第１のタイミング信号を生成する第２の回路と、
前記第１のタイミング信号から前記第２のクロックに同期する第２のタイミング信号を生成する第３の回路と、
前記第１の回路から出力される前記バスデータを前記第２のタイミング信号に基づいて受信し、前記第２のクロックに同期して出力する第４の回路とを備えることを特徴とする。
【０００７】
上記構成により、簡易且つ省スペースな回路構成で、第１のクロックに同期したバスデータを第２のクロックに同期させるデータ同期化回路を提供することができる。また、上記データ同期化回路を含む通信インターフェース回路が提供される。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【０００９】
図１は、本発明の実施の形態のおける通信インターフェース回路を含むシステム全体の概略構成例である。例えば、パーソナルコンピュータ（ＰＣ）と外付けハードディスクドライブ（ＨＤＤ）とが、通信インターフェース回路１を介して接続し、互いにデータを送受信する。通信インターフェースは、例えば、シリアルＡＴＡ(Advanced Technology Attached)（ＳＡＴＡ）である。シリアルＡＴＡは、Giga bit Ethernet の技術を導入したシリアルインターフェースであり、従来からのパラレルＡＴＡよりも高速である。また、シリアル通信のため、信号が少なく、また、ケーブル長もパラレルＡＴＡより延長可能である。
【００１０】
シリアルＡＴＡ（ＳＡＴＡ）に対応する通信インターフェース回路１は、通信回線を介して送受信する回線データ（シリアルデータ）を、内部のｎ＋１ビットのバスデータに変換するために、アナログ部に対応する物理層（ＰＨＹ）と、ロジック部に対応するリンク層（Ｌｉｎｋ）、トランスポート層（ＴＲＳ）及びアプリケーション層（ＡＴ）を有する。
【００１１】
図１に示されるように、ＰＣ側から送信されるシリアルデータは、ハードディスクドライブ（ＨＤＤ）内の通信インターフェース回路１により受信される。通信インターフェース回路１は、その物理層（ＰＨＹ）において、受信した回線データ（シリアルデータ）を１０ビットのバスデータ（パラレルデータ）に変換し、リンク層（Ｌｉｎｋ）において、１０ビットデータを８ビットデータにエンコードしてから、その８ビットデータを４つ組み合わせた３２ビットデータを構成し、その３２ビットデータをトランスポート層（ＴＲＳ）に転送する。このとき、リンク層では、物理層のクロック(ClockA)とトランスポート層以降のクロック(ClockB)との速度差を吸収するために、Ｌｉｎｋ層内でのバスデータの同期化を行う必要がある。
【００１２】
例えば、パソコンから送信されるシリアルデータの転送速度を１．５ＧＨｚとすると、物理層でそれを１０ビットデータに変換するので、物理層側のクロック(ClockA)は１５０ＭＨｚとなる。一方、トランスポート層以降は、例えば、ハードディスクドライブのハードディスクコントローラ（ＨＤＣ）のクロック(ClockB)、例えば１００ＭＨｚで動作する。
【００１３】
ハードディスクドライブ（ＨＤＤ）からパーソナルコンピュータ（ＰＣ）へのデータ転送は、上述の反対である。すなわち、ハードディスクコントローラ（ＨＤＣ）から送信される３２ビットデータを４つの８ビットデータに分解し、それをさらに１０ビットデータにデコードし、その１０ビットデータをシリアルデータに変換して、回線データとして通信回線を介してパーソナルコンピュータに転送する。
【００１４】
図２は、図１におけるリンク層（Ｌｉｎｋ）の詳細図である。図示されるように、リンク層では、４つの８ビットデータを組み合わせて構成した３２ビットデータを、異なるクロック間で転送する場合、それぞれのクロックに同期させる必要がある。このように、複数ビットのバスデータを異なるクロック間で転送する場合、バスデータをそれぞれのクロックに同期させるためのデータ同期化回路が必要となる。以下、バスデータを単にデータと称す場合がある。
【００１５】
図３は、本発明の実施の形態におけるデータ同期化回路の構成例である。通信インターフェース回路１の一部を構成するデータ同期化回路は、例えば、ラッチタイミング生成回路（ブロックＡ）、受信タイミング生成回路（ブロックＢ）、受信側データホールド回路（ブロックＣ）、送信側データホールド回路（ブロックＤ）を備える。このとき、ブロックＡ、Ｄは、クロックCLK_Aと同期して動作し、ブロックＢ、Ｃは、クロックCLK_Bと同期して動作する。
【００１６】
クロックCLK_Aに同期してブロックＣに入力されるｎ＋１ビット（ｎは自然数）のデータは、ブロックＤのｎ＋１個のＤフリップフロップDFF_Aにホールドされ、後述するように、ブロックＣのｎ＋１個のＤフリップフロップDFF_Bが、クロックCLK_Bに同期した受信タイミング信号に従って、ブロックＣからデータを取り込み、クロックCLK_Bに同期して出力する。
【００１７】
ブロックＡは、ブロックＤからブロックＣに送信されるデータをラッチするためのラッチタイミング信号を生成するラッチタイミング生成回路であり、例えば、１つのＤフリップフロップを備えて構成される。ブロックＡは、データの入力タイミングに対応する所定タイミングで入力されるラッチ信号(Latch)に基づいて、ラッチタイミング信号(latch_trigger)を出力する。
【００１８】
ブロックＢは、クロックCLK_AとクロックCLK_Bとの速度差を吸収して、ブロックＣがブロックＤから送信されたデータを受信するための受信タイミング信号を生成する受信タイミング生成回路であり、例えば、複数段（好ましくは、３段以上）のＤフリップフロップを備えて構成される。ブロックＢは、ブロックＡからのラッチタイミング信号に基づいて、クロックCLK_Bに同期した受信タイミング信号(data_get)を生成する。
【００１９】
ブロックＣは、ブロックＤから入力されるｎ＋１ビットデータをホールドするための受信側回路であり、各ビット毎のＤフリップフロップを備えて構成される。ブロックＣは、ブロックＤからのデータdata_outを、ブロックＢにおける受信タイミング信号data_getに従って取り込み、次のクロックタイミングでデータSYNC_DATAとして出力する。
【００２０】
ブロックＤは、入力されるｎ＋１ビットデータをホールドするための送信側回路であり、各ビット毎のＤフリップフロップを備えて構成される。ブロックＤは、セレクト信号DATA_SELに従って取り込んだデータDATAをホールドし、さらにデータ信号data_outとして出力する。
【００２１】
図４は、図３に示したデータ同期化回路のタイミングチャートである。まず、クロックCLK_A側において、タイミングＴ１１でブロックＤに入力されるデータDataAは、セレクト信号DATA_SELに従って、ブロックＤのDFF_Aに取り込まれ、次のタイミングＴ１２で、DFF_Aから出力される。
【００２２】
一方、タイミングＴ１１の一つ前のタイミングＴ１０（図示せず）で入力されるラッチ信号(Latch)に従って、ブロックＡのＤフリップフロップは、タイミングＴ１２でラッチタイミング信号(latch_trigger)を出力する。本実施の形態例では、８ビットデータを４つ組み合わせて３２ビットデータを構成するので、ブロックＤには、４クロック毎にデータが入力され、ラッチ信号(Latch)もその入力タイミングに同期して４クロック周期となる。
【００２３】
次に、クロックCLK_B側において、ラッチタイミング信号(latch_trigger)がブロックＢに入力される次のタイミングＴ２２で、ブロックＢの１段目のＤフリップフロップDFF_0は、信号get_q[0]を出力し、次のタイミングＴ２３で、２段目のＤフリップフロップDFF_1から、信号get_q[1]を出力し、さらに次のタイミングＴ２４で、３段目のＤフリップフロップDFF_2から信号get_q[2]を出力する。そして、２段目のDFF_1の出力信号と３段目のDFF_2の出力信号に基づいて、タイミングＴ２３で受信タイミング信号(data_get)が生成されて、ブロックＣに供給される。このタイミングＴ２３において、ブロックＤから出力されているデータdata_outは、ブロックＣのDFF_Bに取り込まれ、次のタイミングＴ２４でクロックCLK_Bに同期したデータSYNC_DATAとして出力される。
【００２４】
ブロックＤに入力されるデータDataAに続く、データDataB、DataC、…も同様である。すなわち、クロックCLK_Aに同期した各データは、CLK_Bに同期した受信タイミング信号(data_get)に基づいてブロックＣに取り込まれ、クロックCLK_Bに同期して出力される。
【００２５】
なお、上記図３で示した回路構成例は、以下の条件で有効である。
【００２６】
（１）クロックCLK_AよりクロックCLK_Bが遅い場合（図４に示すような場合）は、クロックCLK_A側のブロックＤでデータDataA、DataB、…をホールドしている期間（ホールド期間Ｈ）（データがブロックＣに入力されてから出力されるまでの期間であって、図４の場合、５クロック）に、受信タイミング信号data_getにより、クロックCLK_B側のブロックＣにデータを取り込む必要がある。また、受信タイミング信号data_getを生成するためには、複数（ｍ）段（好ましくは３段以上）のＤフリップフロップによりｍクロックの期間必要である。従って、クロックCLK_Bは、クロックCLK_Aに対して、
CLK_B＝CLK_A×ｍ／Ｈ
以上の速度が必要となる。
【００２７】
例えば、クロックCLK_Aが１５０ＭＨｚであって、ホールド期間Ｈ＝５クロック、Ｄ−ＦＦの段数ｍ＝３の場合、クロックCLK_Bは、
１５０×３／５＝９０ＭＨｚ
以上の速度が必要である。
【００２８】
（２）クロックCLK_AよりクロックCLK_Bが速い場合は、データがブロックＣから出力されないと、クロックCLK_B側でデータを取り込めないので、受信タイミング信号data_getが、データがブロックＣに入力されたタイミングから、クロックCLK_Aの１クロック期間Ｐ経過後に出力される必要がある。受信タイミング信号data_getは、ブロックＢにおける複数（ｍ）段のDFFにおける（ｍ−１）段目のDFFからの出力信号（例えば図４における信号get_q[1]）の出力タイミング、すなわち、データがブロックＣに入力されたタイミングから、クロックCLK_Bの（ｍ−１）クロック期間Ｐ経過後に出力されるので、クロックCLK_Bは、クロックCLK_Aに対して、
CLK_B＝CLK_A×（ｍ−１）
以下の速度である必要がある。
【００２９】
例えば、クロックCLK_Aが１５０ＭＨｚであって、DFFの段数ｍ＝３の場合、クロックCLK_Bは、
１５０×（３−１）＝３００ＭＨｚ
以下の速度である必要がある。
【００３０】
上述の条件を満足しない場合（すなわち、クロックCLK_AよりクロックCLK_Bが遅い場合においては、クロックCLK_A側のデータホールド期間に受信タイミング信号data_getの生成に必要なクロックCLK_Bのクロック数を確保できない場合、そして、クロックCLK_AよりクロックCLK_Bが速い場合においては、クロックCLK_A側からデータが出力される前に、クロックCLK_B側で受信タイミング信号data_getを出力してしまう場合）は、上記図３の回路を、上記条件を満足する２以上の必要な数だけ設け、データを交互に（又は順番に）入力するようにすればよい。
【００３１】
図５は、本発明の実施の形態におけるデータ同期化回路の別の構成例であって、上記図３のデータ同期化回路を２つ組み合わせた回路構成例であり、図６は、図５の回路のタイミングチャートである。図５及び図６において、入力されるデータDATAは、セレクト信号DATA_SELH及びDATA_SELLによりＤフリップフロックDFF_AH及びDFF_ALに交互に入力され、それぞれからの出力信号data_outh及びdata_outlは、受信タイミング信号data_geth及びdata_getlに従って、クロックCLK_B側のＤフリップフロップDFF_BH及びDFF_BLに取り込まれ、クロックCLK_Bに同期したデータSYNC_DATAH及びSYNC_DATALとして出力される。
【００３２】
上述の実施の形態では、シリアルＡＴＡインターフェースを例に説明したが、本発明は他のインターフェース、例えばＳＣＳＩなどにも適用可能である。
【００３３】
また、上述の実施の形態において、通信回線上を伝送する回線データがシリアルデータの場合に、通信インターフェース回路内部のクロック差が大きくなる傾向にあるので、特に有効であるが、回線データは、シリアルデータに限らずパラレルデータであってもよい。
【００３４】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００３５】
【発明の効果】
以上、本発明によれば、バッファメモリの使用、又はハンドシェイクによらずに、異なるクロック間でのデータの同期化が可能となるので、異なるクロック間でのデータの高速転送が可能となる。また、通信インターフェース回路の小型化、コストダウンに寄与する。さらに、各種制御信号及び制御回路が不要となるため、設計が容易となり、設計時間の短縮が図れる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるシステム全体の概略構成例を示す図である。
【図２】図１におけるＬｉｎｋ層の詳細図である。
【図３】本発明の実施の形態におけるデータ同期化回路の構成例である。
【図４】図３の回路のタイミングチャートである。
【図５】本発明の実施の形態におけるデータ同期化回路の別の構成例である。
【図６】図５の回路のタイミングチャートである。
【符号の説明】
１  通信インターフェース回路
２  データ同期化回路
ブロックＡ  ラッチタイミング生成回路（第２の回路）
ブロックＢ  受信タイミング生成回路（第３の回路）
ブロックＣ  受信側データホールド回路（第４の回路）
ブロックＤ  送信側データホールド回路（第１の回路）
【図１】
0003798292.tif 000002
【図２】
0003798292.tif 000003
【図３】
0003798292.tif 000004
【図４】
0003798292.tif 000005
【図５】
0003798292.tif 000006
【図６】
0003798292.tif 000007