(57)【特許請求の範囲】
【請求項１】
第１クロックを使用する第１クロック・ドメインと前記第１クロックに同期された第２クロックを使用する第２クロック・ドメインとの間でデータを転送する回路であって、
前記第１クロックで動作し、前記データを受け取り、保持し、送り出すデータ保持回路と、
前記データ保持回路に接続され、前記データを前記データ保持回路が受け取ることができるようにする入力イネーブル信号および受け取った前記データを前記データ保持回路が送り出すことができるようにする出力イネーブル信号を生成するイネーブル信号生成回路であって、
前記第１クロックと前記第２クロックのエッジが一致する時にイネーブルであるように、前記入力イネーブル信号および前記出力イネーブル信号をイネーブルにし、
前記第１クロックが前記第２クロックよりも速い前記第１クロックおよび前記第２クロックに対して、
前記エッジが一致してから次にエッジが一致するまでの間における、エッジの一致後に生じる前記第２クロック各々の決められた方のエッジよりも前に生じて当該エッジに近い前記第１クロック各々の決められた方のエッジでイネーブルであるように、前記入力イネーブル信号をイネーブルにし、
前記エッジの一致後に生じる前記第２クロック各々の決められた方のエッジよりも後に生じて当該エッジに近い前記第１クロック各々の決められた方のエッジでイネーブルであるように、前記出力イネーブル信号をイネーブルにし、
前記入力イネーブル信号および前記出力イネーブル信号を前記データ保持回に印加する、前記イネーブル信号生成回路と、
を含む、データ転送回路。
【請求項２】
前記データ保持回路に接続され、前記第１クロックと前記第２クロックのエッジが一致する時に前記データ保持回路が前記データを受け取り送り出すことができるようにするエッジ信号を生成し、前記エッジ信号を前記データ保持回路に印加するエッジ信号生成回路を含む、請求項１に記載のデータ転送回路。
【請求項３】
前記エッジ信号生成回路が、前記入力イネーブル信号と前記出力イネーブル信号をＡＮＤ演算して前記エッジ信号を生成することを含む、請求項２に記載のデータ転送回路。
【請求項４】
前記イネーブル信号生成回路が、
前記第１クロックで動作し、前記第１クロックと前記第２クロックのエッジが一致する時のためのタイミング信号を受け取り、保持し、送り出すタイミング信号保持回路と、
前記第１クロックで動作し、前記第１クロックと前記第２クロックのエッジが一致してから次にエッジが一致するまでの間における前記第１クロックのクロック数Ｎ1stおよび前記第２クロックのクロック数Ｎ2nd並びに前記タイミング信号が入力され、前記入力イネーブル信号を生成する入力イネーブル信号生成器と、
前記第１クロックで動作し、前記Ｎ1st、前記Ｎ2ndおよび前記タイミング信号が入力され、前記出力イネーブル信号を生成する出力イネーブル信号生成器と、
を含む、請求項１〜３のいずれか１項に記載のデータ転送回路。
【請求項５】
前記入力イネーブル信号生成器が、
前記Ｎ1stが入力され、前記タイミング信号が入力されるとリセットされ、前記リセットされた時にＮ1st−１がセットされて、前記第１クロックで０までカウントダウン動作し、カウント値ＣＮＴｄｏｗｎを出力するカウントダウン・カウンタと、
前記カウントダウン・カウンタに接続され、前記ＣＮＴｄｏｗｎ、前記Ｎ1stおよび前記Ｎ2ndがそれぞれ入力されて、ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1stを計算し、当該計算値を出力する第１演算回路と、
前記第１クロックで動作し、前記第１演算回路に接続され、前記第１演算回路の計算値が入力され、当該入力された計算値が当該入力前の値と異なるときには１を出力し、それ以外は０を出力する第１差動回路と、
前記第１差動回路および前記タイミング信号保持回路に接続され、前記第１差動回路からの入力および前記タイミング信号保持回路からの入力をＯＲ演算して、出力を前記入力イネーブル信号として提供する第１ＯＲ回路とを含み、
前記出力イネーブル信号生成器が、
前記Ｎ1stが入力され、前記タイミング信号が入力されるとリセットされ、前記リセットされた時に０がセットされて、前記第１クロックでＮ1st−１までカウントアップ動作し、カウント値ＣＮＴｕｐを出力するカウントアップ・カウンタと、
前記カウントアップ・カウンタに接続され、前記ＣＮＴｕｐ、前記Ｎ1stおよび前記Ｎ2ndがそれぞれ入力されて、ＣＮＴｕｐ＊Ｎ2nd/Ｎ1stを計算し、当該計算値を出力する第２演算回路と、
前記第１クロックで動作し、前記第２演算回路に接続され、前記第２演算回路の計算値が入力され、当該入力された計算値が当該入力前の値と異なるときには１を出力し、それ以外は０を出力する第２差動回路と、
前記第２差動回路および前記タイミング信号保持回路に接続され、前記第２差動回路からの入力および前記タイミング信号保持回路からの入力をＯＲ演算して、出力を前記出力イネーブル信号として提供する第２ＯＲ回路とを含む、
請求項４に記載のデータ転送回路。
【請求項６】
前記データ保持回路がフリップフロップ回路を含む、請求項１〜５のいずれか１項に記載のデータ転送回路。
【請求項７】
第１クロックを使用する第１クロック・ドメインと前記第１クロックに同期された第２クロックを使用する第２クロック・ドメインとの間でデータを転送する方法であって、
データ保持回路を前記第１クロックで動作し、
前記第１クロックと前記第２クロックのエッジが一致する時にイネーブルであるように、前記データを前記データ保持回路が受け取ることができるようにする入力イネーブル信号および受け取った前記データを前記データ保持回路が送り出すことができるようにする出力イネーブル信号をイネーブルにし、
前記第１クロックが前記第２クロックよりも速い前記第１クロックおよび前記第２クロックに対して、
前記エッジが一致してから次にエッジが一致するまでの間における、エッジの一致後に生じる前記第２クロック各々の決められた方のエッジよりも前に生じて当該エッジに近い前記第１クロック各々の決められた方のエッジでイネーブルであるように、前記入力イネーブル信号をイネーブルにし、
前記入力イネーブル信号を前記データ保持回路に印加して、前記データを前記データ保持回路に受け取り、
前記エッジの一致後に生じる前記第２クロック各々の決められた方のエッジよりも後に生じて当該エッジに近い前記第１クロック各々の決められた方のエッジでイネーブルであるように、前記出力イネーブル信号をイネーブルにし、
前記出力イネーブル信号を前記データ保持回路に印加して、受け取った前記データを前記データ保持回路から送り出す、
ことを含む、データ転送方法。
【請求項８】
前記第１クロックと前記第２クロックのエッジが一致する時に前記データ保持回路が前記データを受け取り送り出すことができるようにするエッジ信号を生成し、前記エッジ信号を前記データ保持回路に印加して、前記データ保持回路に前記データを受け取り前記データ保持回路から前記データを送り出すことを含む、請求項７に記載のデータ転送方法。
【請求項９】
前記エッジ信号を生成することが、前記入力イネーブル信号と前記出力イネーブル信号をＡＮＤ演算して生成することを含む、請求項８に記載のデータ転送方法。
【請求項１０】
前記第１クロックと前記第２クロックのエッジが一致してから次にエッジが一致するまでの間における、前記第１クロックのクロック数をＮ1stおよび前記第２クロックのクロック数をＮ2ndとし、前記第１クロックと前記第２クロックのエッジが一致した時点から開始してＮ1st−１、Ｎ1st−２、・・・、１、０、Ｎ1st−１、Ｎ1st−２、・・・とカウントダウンしながら循環するカウンタの値をＣＮＴｄｏｗｎ、および当該エッジが一致した時点から開始して０、１、・・・、Ｎ1st−２、Ｎ1st−１、０、１、・・・とカウントアップしながら循環するカウンタの値をＣＮＴｕｐとし、aの値を小数点以下切捨てする関数をＩＮＴ（ａ）としたときに、
前記入力イネーブル信号を、ＩＮＴ（ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1st）の値が変化する時点および前記エッジが一致した時点ではイネーブルに、それ以外ではディスエーブルであるように生成し、
前記出力イネーブル信号を、ＩＮＴ（ＣＮＴｕｐ＊Ｎ2nd/Ｎ1st）の値が変化する時点および前記エッジが一致した時点ではイネーブルに、それ以外ではディスエーブルであるように生成する、
ことを含む、請求項７〜９のいずれか１項に記載のデータ転送方法。
【請求項１１】
前記第１クロック各々の決められた方のエッジおよび前記第２クロック各々の決められた方のエッジが、立ち上がりエッジまたは立下りエッジである、請求項７〜１０のいずれか１項に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックを使用するデータ処理に関し、特に、クロック・ドメイン（Clock Domain）間でデータを転送するクロック・ドメイン・クロッシング（Clock Domain Crossing  以下、「ＣＤＣ」と称す）の回路および方法に関する。
【背景技術】
【０００２】
様々な回路が混在したＳｏＣ（System on a Chip）等の大規模なチップには、複数のクロックが使用されることが多く、異なるクロック・ドメイン間でのデータをやり取りするＣＤＣの回路設計が必要となる。クロックのエッジが合わないことを前提とした非同期回路設計では、様々なクロックの組み合わせを選択できるが、データの受け渡し等の検討が不十分であれば、予期しない箇所で不具合を生じる可能性がある。一方、ある一定の間隔でクロックのエッジが一致することを前提とした同期回路設計では、論理シミュレーションと静的タイミング検証ＳＴＡ（Static Timing Analysis）で回路の動作を保証することができ、非同期回路設計と比べると設計しやすいというメリットがある。
【０００３】
図１に２つの同期するクロックを用いた従来の回路例を示す。イネーブル信号を用いてクロック・ドメイン間でデータを受け渡す。クロックの周波数比は１：ｎとなることが前提である。図１は、6ns周期の166.666・・・MHz（以下、単に「166MHz」と称す）と3ns周期の333.333・・・MHz（以下、単に「333MHz」と称す）の周波数比が1：2の同期クロックの例で、6ns毎にそれぞれのエッジが揃う、即ち、それぞれの立ち上がりエッジが一致またはそれぞれの立下がりエッジが一致する。333MHzのクロックの立ち上がり時に、イネーブル信号がロー（０）になる（この状態を「ディスエーブル」とする）ときには左のフリップフロップ回路（以下、「ＦＦ」と称す）のデータはそのまま保持され、イネーブル信号がハイ（１）になる（この状態を「イネーブル」とする）ときには左から受け取ったデータが右のＦＦ側に流れる。左側のマルチプレクサとＦＦの回路により、333MHz（3ns周期）で動作する回路であっても、その2倍の周期である166MHz（6ns周期）で動作するＦＦと同じ周期（6ns周期）で動作させることができる。
【０００４】
図２に示すように、333MHzのクロックの立ち上がりで、かつ333MHzと166MHzのクロックのエッジが揃うとき（丸印で示した時点参照）にイネーブル信号（１段目の波形参照）をハイになるように制御することによって、333MHzで動作のＦＦからのデータ（２段目のクロックおよびデータ参照）の受け渡しや333MHzで動作のＦＦへのデータ（４段目のクロックおよびデータ参照）の受け取りのタイミングを、166MHzで動作のＦＦ（３段目のクロックおよびデータ参照）と合わせることができる。特に、イネーブル信号がハイのときに、333MHzで動作のＦＦから発生するデータ（２段目のデータ参照）が166MHz の立ち上がりエッジの時刻（6ns毎）で変化し、166MHzで動作のＦＦへも166MHz の立ち上がりエッジの時刻（6ns毎）にデータを受け渡すことができる（実線の矢印で示す３段目のデータ参照）。また、さらに333MHzで動作のＦＦへも同様にデータを受け渡すことができる（破線の矢印で示す４段目のデータ参照）。図３に、166MHzで動作のＦＦから333MHzで動作のＦＦへのデータの受け渡しも付加した回路を示す。
【０００５】
回路のクロック周波数を上げることで動作速度の向上が期待できるが、回路設計によって各回路の最大動作周波数は異なっている。そのため、図４に示すように、クロック・ドメインＢの周波数を上げたい場合でも、クロック・ドメインＡの周波数は上限の333MHzでそれ以上は上げることができないことがある。１：ｎのクロック比を保って両クロック・ドメインのクロック周波数を上げることができれば、図１に示した従来の手法が適用できるが、図４の下段に示したクロック周波数比が５：３となる333MHzおよび200MHzの場合には、図１の手法では対応できない。
【０００６】
その場合、例えば、図５に示すように、イネーブル信号を各クロックのエッジの揃う15ns間隔でハイにしてデータを受け渡すようにすれば、データの受け渡しが可能であるが、データの転送速度は15nsに１回（66.666・・・MHzの速さ）となり、遅い方のクロック200MHzで動作するＦＦのデータ転送速度と比べても３分の１の転送速度となってしまう。
【０００７】
図６に従来の方法により200MHzのタイミングの15nsに３回でデータを転送する場合を示す。図６では、図５の回路で15nsに３回の割合でデータが転送されるようにイネーブル信号（１段目の波形参照）のハイのタイミングを調整している。この場合、イネーブル信号がハイの時に、333MHzで動作のＦＦ（２段目のクロックおよびデータ参照）から200MHzで動作のＦＦ（３段目のクロックおよびデータ参照）に向けてのデータは正しく（ａ、ｂ、ｃ、ｄ、ｅの順で）転送されるが（実線の矢印で示すデータ転送参照）、200MHzで動作のＦＦから333MHzで動作のＦＦ（４段目のクロックおよびデータ参照）では、ｂやｅのデータが消える等うまく転送できない（破線の矢印と囲みで示すデータ転送参照）。特に、200MHzで動作のＦＦで5nsにデータの受け渡しをした直後の6nsには333MHzで動作のＦＦでデータの受け渡しをすることになる、即ち、セットアップ時間は1nsや2nsとなり、データ受け渡しのタイミングが厳しくなる。
【０００８】
同期回路設計では、使用できるクロックの組み合わせは限られていて、データを速く転送しようとするとデータの消失等で正しくデータは転送できない。従来は、クロックの組み合わせに応じてデータの受け渡し方向を考えカスタマイズした専用回路を設計しなければならず、クロックの組み合わせを変える場合には、別の回路が必要になる。ダブルラッチ等の非同期回路設計では、図７に示すように、双方のクロック・ドメインを意識してそれぞれにラッチの接続回路を設ける必要があり、ダブルラッチ等の非同期処理のためにデータの受け渡し時にロスが生じ、クロックの組み合わせを変えたときには、回路を検討し、場合によっては再設計する必要がある。
【０００９】
特許文献１には、半導体集積回路装置において、簡便な方法により、非整数倍のクロックで動作するモジュール間の信号同期を実現する機能を提供することが、記載されている。
【００１０】
特許文献２には、外部システム・クロックに対して整数倍でない周波数比率のクロック信号を出力できる位相制御クロック信号生成の方法および装置が、記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００８−４１１０６号公報
【特許文献２】特開平７−３１９５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、同期回路設計での使用クロックの組み合わせが限られていてデータ転送時にデータが消失する等の正しくデータが転送できない問題を解決することができる、特に、クロックの組み合わせを柔軟に選択できて、クロック・ドメイン間でデータを消失等することなく速く転送できる回路および方法を実現することを目的とする。本発明の目的には、同期されたクロックのクロック・ドメイン間でデータを速く転送する回路および方法を提供することが、含まれる。
【課題を解決するための手段】
【００１３】
本発明により提供される１実施態様のデータ転送回路では、第１クロックを使用する第１クロック・ドメインと第１クロックに同期された第２クロックを使用する第２クロック・ドメインとの間でデータを転送するために、少なくとも次のものが含まれる。即ち、第１クロックで動作し、データを受け取り、保持し、送り出すデータ保持回路と、データ保持回路に接続されたイネーブル信号生成回路である。イネーブル信号生成回路は、データをデータ保持回路が受け取ることができるようにする入力イネーブル信号および受け取ったデータをデータ保持回路が送り出すことができるようにする出力イネーブル信号を生成する。イネーブル信号生成回路は、第１クロックと第２クロックのエッジが一致する時にイネーブルであるように、入力イネーブル信号および出力イネーブル信号をイネーブルにする。イネーブル信号生成回路は、第１クロックが第２クロックよりも速い第１クロックおよび第２クロックに対して、エッジが一致してから次にエッジが一致するまでの間における、エッジの一致後に生じる第２クロック各々の決められた方のエッジよりも前に生じて当該エッジに近い第１クロック各々の決められた方のエッジでイネーブルであるように、入力イネーブル信号をイネーブルにし、エッジの一致後に生じる第２クロック各々の決められた方のエッジよりも後に生じて当該エッジに近い第１クロック各々の決められた方のエッジでイネーブルであるように、出力イネーブル信号をイネーブルにする。イネーブル信号生成回路は、入力イネーブル信号および出力イネーブル信号をデータ保持回路に印加する。
【００１４】
好ましくは、データ転送回路は、データ保持回路に接続され、第１クロックと第２クロックのエッジが一致する時にデータ保持回路がデータを受け取り送り出すことができるようにするエッジ信号を生成し、エッジ信号をデータ保持回路に印加するエッジ信号生成回路を含む。好ましくは、エッジ信号生成回路は、入力イネーブル信号と出力イネーブル信号をＡＮＤ演算してエッジ信号を生成することを含む。好ましくは、イネーブル信号生成回路は、第１クロックで動作し、第１クロックと第２クロックのエッジが一致する時のためのタイミング信号を受け取り、保持し、送り出すタイミング信号保持回路と、第１クロックで動作し、第１クロックと第２クロックのエッジが一致してから次にエッジが一致するまでの間における第１クロックのクロック数Ｎ1stおよび第２クロックのクロック数Ｎ2nd並びにタイミング信号が入力され、入力イネーブル信号を生成する入力イネーブル信号生成器と、第１クロックで動作し、Ｎ1st、Ｎ2ndおよびタイミング信号が入力され、出力イネーブル信号を生成する出力イネーブル信号生成器とを含む。
【００１５】
好ましくは、入力イネーブル信号生成器は、Ｎ1stが入力され、タイミング信号が入力されるとリセットされ、リセットされた時にＮ1st−１がセットされて、第１クロックで０までカウントダウン動作し、カウント値ＣＮＴｄｏｗｎを出力するカウントダウン・カウンタと、カウントダウン・カウンタに接続され、ＣＮＴｄｏｗｎ、Ｎ1stおよびＮ2ndがそれぞれ入力されて、ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1stを計算し、当該計算値を出力する第１演算回路と、第１クロックで動作し、第１演算回路に接続され、第１演算回路の計算値が入力され、当該入力された計算値が当該入力前の値と異なるときには１を出力し、それ以外は０を出力する第１差動回路と、第１差動回路およびタイミング信号保持回路に接続され、第１差動回路からの入力およびタイミング信号保持回路からの入力をＯＲ演算して、出力を入力イネーブル信号として提供する第１ＯＲ回路とを含む。
【００１６】
好ましくは、出力イネーブル信号生成器は、Ｎ1stが入力され、タイミング信号が入力されるとリセットされ、リセットされた時に０がセットされて、第１クロックでＮ1st−１までカウントアップ動作し、カウント値ＣＮＴｕｐを出力するカウントアップ・カウンタと、カウントアップ・カウンタに接続され、ＣＮＴｕｐ、Ｎ1stおよびＮ2ndがそれぞれ入力されて、ＣＮＴｕｐ＊Ｎ2nd/Ｎ1stを計算し、当該計算値を出力する第２演算回路と、第１クロックで動作し、第２演算回路に接続され、第２演算回路の計算値が入力され、当該入力された計算値が当該入力前の値と異なるときには１を出力し、それ以外は０を出力する第２差動回路と、第２差動回路およびタイミング信号保持回路に接続され、第２差動回路からの入力およびタイミング信号保持回路からの入力をＯＲ演算して、出力を出力イネーブル信号として提供する第２ＯＲ回路とを含む。
【００１７】
本発明により提供される１実施態様のデータ転送方法では、第１クロックを使用する第１クロック・ドメインと第１クロックに同期された第２クロックを使用する第２クロック・ドメインとの間でデータを転送し、少なくとも次のことを行う。データ保持回路を第１クロックで動作する。第１クロックと第２クロックのエッジが一致する時にイネーブルであるように、データをデータ保持回路が受け取ることができるようにする入力イネーブル信号および受け取ったデータをデータ保持回路が送り出すことができるようにする出力イネーブル信号をイネーブルにする。第１クロックが第２クロックよりも速い第１クロックおよび第２クロックに対して、エッジが一致してから次にエッジが一致するまでの間における、エッジの一致後に生じる第２クロック各々の決められた方のエッジよりも前に生じて当該エッジに近い第１クロック各々の決められた方のエッジでイネーブルであるように、入力イネーブル信号をイネーブルにする。入力イネーブル信号をデータ保持回路に印加して、データをデータ保持回路に受け取る。そのエッジの一致後に生じる第２クロック各々の決められた方のエッジよりも後に生じて当該エッジに近い第１クロック各々の決められた方のエッジでイネーブルであるように、出力イネーブル信号をイネーブルにする。出力イネーブル信号をデータ保持回路に印加して、受け取ったデータをデータ保持回路から送り出す。
【００１８】
好ましくは、データ転送方法は、第１クロックと第２クロックのエッジが一致する時にデータ保持回路がデータを受け取り送り出すことができるようにするエッジ信号を生成し、エッジ信号をデータ保持回路に印加して、データ保持回路にデータを受け取りデータ保持回路からデータを送り出すことを含む。好ましくは、エッジ信号を生成することは、入力イネーブル信号と出力イネーブル信号をＡＮＤ演算して生成することを含む。
【００１９】
好ましくは、データ転送方法は、第１クロックと第２クロックのエッジが一致してから次にエッジが一致するまでの間における、第１クロックのクロック数をＮ1stおよび第２クロックのクロック数をＮ2ndとし、第１クロックと第２クロックのエッジが一致した時点から開始してＮ1st−１、Ｎ1st−２、・・・、１、０、Ｎ1st−１、Ｎ1st−２、・・・とカウントダウンしながら循環するカウンタの値をＣＮＴｄｏｗｎ、および当該エッジが一致した時点から開始して０、１、・・・、Ｎ1st−２、Ｎ1st−１、０、１、・・・とカウントアップしながら循環するカウンタの値をＣＮＴｕｐとし、aの値を小数点以下切捨てする関数をＩＮＴ（ａ）としたときに、入力イネーブル信号を、ＩＮＴ（ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1st）の値が変化する時点およびエッジが一致した時点ではイネーブルに、それ以外ではディスエーブルであるように生成し、出力イネーブル信号を、ＩＮＴ（ＣＮＴｕｐ＊Ｎ2nd/Ｎ1st）の値が変化する時点およびエッジが一致した時点ではイネーブルに、それ以外ではディスエーブルであるように生成することを含む。
【００２０】
好ましくは、第１クロック各々の決められた方のエッジおよび第２クロック各々の決められた方のエッジは、立ち上がりエッジまたは立下りエッジである。
【発明の効果】
【００２１】
本発明によれば、クロックの組み合わせを柔軟に選択できて、クロック・ドメイン間でデータの消失等を生ずることなくデータを速く転送できる回路および方法が実現される。特に、同期されたクロックのクロック・ドメイン間でデータを速く転送する回路および方法が提供され、回路自体を変更することなくクロックの組み合わせの選択的な変更に対応することができる。
【図面の簡単な説明】
【００２２】
【図１】同期クロックを使用してクロック・ドメイン間でデータを転送する従来の回路図である。
【図２】同期クロックを使用してクロック・ドメイン間でデータを転送する従来の方法の波形図である。
【図３】従来の回路図である。
【図４】クロック・ドメインのクロック事例を示す図である。
【図５】従来の他の回路図である。
【図６】200MHzのタイミングでデータを転送する場合の波形図である。
【図７】ダブルラッチによる従来のデータ転送の構成を示す図である。
【図８】本発明の１実施形態に係るデータ転送回路の概略図である。
【図９】データ保持回路の例を示す回路図である。
【図１０】遅いクロック（200MHz）のデータを提供したときのタイミング波形図である。
【図１１】速いクロック（333MHz）のデータを提供したときのタイミング波形図である。
【図１２】入力および出力イネーブル信号のタイミング（生成方法）例を示す図である。
【図１３】イネーブル信号生成回路の構成例を示す回路図である。
【図１４】イネーブル信号生成回路の詳細を例示する回路図である。
【図１５】特殊な場合に定められる入力および出力イネーブル信号のタイミング例を示す図である。
【図１６】特殊な場合に遅いクロック（200MHz）のデータを提供したときのタイミング波形図である。
【図１７】特殊な場合に速いクロック（266MHz）のデータを提供したときのタイミング波形図である。
【図１８】本発明の１実施形態に係るデータ転送回路を用いたデータ転送の構成例を示す図である。
【発明を実施するための形態】
【００２３】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明は多くの異なる態様で実施することが可能であり、記載された実施形態の内容に限定して解釈されるべきではない。なお、実施形態の説明の全体を通じて同じ構成部分乃至構成要素には同じ番号を付している。
【００２４】
図８は、本発明の１実施形態に係るデータ転送回路１００の概略を示す。データ転送回路１００は、データ保持回路２００とデータ保持回路２００に接続されたイネーブル信号生成回路３００を含む。データ保持回路２００は、図８に示されるように、例えば組み合わせ回路からのデータが入力され、第１クロックの例えば333MHzで動作し、第１クロックに同期された第２クロックの例えば166MHzで動作しない。データ保持回路２００では、入力としてＤより第１クロックおよび第２クロックのいずれのデータ信号も受け取られ、出力としてＱから第１クロックおよび第２クロックのどちらのクロックを用いても受け取れるデータ信号が送り出される。データ保持回路２００には、第１クロックおよび第２クロックのエッジが一致する時に用いられるエッジ信号とイネーブル信号生成回路３００からの入力イネーブル信号および出力イネーブル信号とが印加される。好ましくは、データ保持回路２００はＦＦ即ちフリップフロップ回路を含む。
【００２５】
入力イネーブル信号および出力イネーブル信号は、第１クロックと第２クロックのエッジが一致する時にはイネーブルにされている信号である。さらに、第１クロックが第２クロックよりも速い第１クロックおよび第２クロックに対して、特に、第１クロックの周波数と第２クロックの周波数の比がｍ：ｎで、ｍおよびｎがｍ＞ｎ＞１の整数となる第１クロックおよび第２クロックに対して、入力イネーブル信号は、第１クロックと第２クロックのエッジが一致してから次にエッジが一致するまでの間における、エッジの一致後に生じる第２クロック各々の決められた方のエッジよりも前に生じて当該エッジに近い第１クロック各々の決められた方のエッジで、データをデータ保持回路２００が受け取ることができるようにする信号である。また、出力イネーブル信号は、そのエッジの一致後に生じる第２クロック各々の決められた方のエッジよりも後に生じて当該エッジに近い第１クロック各々の決められた方のエッジで、受け取ったデータをデータ保持回路２００が送り出すことができるようにする信号である。入力イネーブル信号および出力イネーブル信号は、例えばイネーブルのタイミングを計算して決める場合には、イネーブル信号生成回路３００に入力されるＮ1stの値、Ｎ2ndの値、タイミング・パルスおよび第１クロックを用いて生成される。第１クロックと第２クロックのエッジが一致してから次にエッジが一致するまでの間における第１クロックのクロック数がＮ1stであり、第２クロックのクロック数がＮ2ndである。タイミング・パルスは、第１クロックと第２クロックのエッジが一致する時のためのタイミング信号として用いられる。
【００２６】
後述の特殊な場合を除けば、第１クロックと第２クロックのエッジが一致するときには、入力イネーブル信号および出力イネーブル信号は共にイネーブルになって重なるので、入力イネーブル信号および出力イネーブル信号をＡＮＤ演算してエッジ信号を生成することが可能である。しかし、第１クロックと第２クロックの組み合わせによっては、第１クロックと第２クロックのエッジが一致するとき以外でも、入力イネーブル信号および出力イネーブル信号が共にイネーブルになって重なる場合が起き得る。そのような場合が起こるクロックの組み合わせに対しては、入力イネーブル信号および出力イネーブル信号をＡＮＤ演算してエッジ信号は生成しないので、別途エッジ信号を生成する必要がある。また、通常のＦＦと同じような使用、即ち、出力Ｑをフィードバックして入力Ｄの信号とする使用はしない。
【００２７】
図９にデータ保持回路２００の回路例を示す。入力Ｄで受け取るデータのタイミングはマルチプレクサ２１０に印加する入力イネーブル信号で制御され、第１クロックの例えば333MHzで動作するＦＦ２１５にデータは取り込まれる。ＦＦ２１５に取り込まれたデータはマルチプレクサ２２０を経てマルチプレクサ２２５に達し、マルチプレクサ２２５に印加する出力イネーブル信号により、第１クロックで動作するＦＦ２３０に取り込み出力Ｑに送り出すデータのタイミングが制御される。また、第１クロックと第１クロックに同期された第２クロック（第１クロックより速くない）の例えば200MHzとのクロック・エッジが揃う、即ち一致する場合には、通常のＦＦと同じ動作となるように、マルチプレクサ２２０に印加する、クロック・エッジが一致する時のエッジ信号を使用して、ＤでのデータをそのままＱでの出力とする。エッジ信号は、クロック・エッジが揃う時にはハイ（１）となり、それ以外の時にはロー（０）となる。エッジ信号がハイ（１）のときは、入力および出力イネーブル信号もハイ（１）になるので、図９のデータ保持回路２００は１つのＦＦとして動作する（２３０のＦＦが1つだけ存在する状態になる）。即ち、入力Ｄのデータが直接出力Ｑに現れる。
【００２８】
図９の回路を第１クロック（333MHz）で動作し、入力イネーブル信号、出力イネーブル信号およびエッジ信号を適切に制御することで、第１クロック（333MHz）のクロック・ドメインと第２クロック（200MHz）のクロック・ドメイン間でデータの受け渡し（200MHz→333MHz、333MHz →200MHz）が200MHzのデータ転送速度で実現できる。
【００２９】
図１０に、第１クロックより速くない第２クロック（200MHz）のクロック・ドメインからのデータを入力Ｄに提供した際のタイミングを各信号の波形で示す。入力イネーブル信号がハイのときに、第１クロック（333MHz）の立ち上がりエッジでデータを受け取ることができる。このデータを受け取るタイミングを三角印で333MHzのクロック波形の立ち上がりエッジに示す。また、出力イネーブル信号がハイのときに、第１クロック（333MHz）の立ち上がりエッジでデータを送り出すことができる。このデータを送り出すタイミングを丸印で333MHzのクロック波形の立ち上がりエッジに示す。なお、それらのタイミングを取るのに、クロックの立ち上がりエッジを用いているが、クロックの立下りエッジを用いてそれらのタイミングを取るようにしても良い。
【００３０】
入力Ｄに200MHzのタイミング（5ns毎、縦の点線で示す時点参照）でａ、ｂ、ｃ、ｄ、・・・のデータが到着した場合に、図９に示された回路のＦＦ２１５の出力データおよびＦＦ２３０の出力Ｑのデータを示している。図１０に示されるように、200MHzのクロック・ドメインから入力Ｄへのデータを、三角印を付けたエッジでの受け取るタイミングでＦＦ２１５に受け取り、丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出すことにより、15nsに３回のデータ転送速度（200MHzのデータ転送速度）で出力Ｑに出力できる（実線の矢印で示すデータ遷移参照）。出力Ｑに出力されたデータをさらに別の200MHzのＦＦでラッチした場合でも、データの順番が変わったり、データの消失が起こったりすることがなくデータを受け渡しすることができる（破線の矢印で示すデータ遷移参照）。200MHzおよび333MHz の両クロックのクロック・エッジが一致する時は、エッジ信号がハイになり、通常のＦＦと同様の動作をする、即ち、入力ＤのデータはＦＦ２１５で一旦ラッチさせることなくＦＦ２３０の出力Ｑへ出力される（0ns および15nsでのデータ遷移参照）。
【００３１】
図９の回路は、第１クロック（333MHz）で動作するため、333MHz のクロック・ドメインでの回路とも問題なくデータの受け渡しをすることができる。図１１に、第１クロック（333MHz）のクロック・ドメインからのデータを入力Ｄに提供した際のタイミングを各信号の波形で示す。図１０で説明したとおり、データを受け取るタイミングが三角印で333MHzのクロック波形の立ち上がりエッジに示され、データを送り出すタイミングが丸印で333MHzのクロック波形の立ち上がりエッジに示されている。図９の回路は、333MHz のクロックで変化するデータを、それよりも遅い入力イネーブル信号により制御されたタイミングで受け取るので、データは選択的に受け取ることになる。入力Ｄで塗りつぶされた部分は転送の対象とはならず、ドント・ケアとされる。
【００３２】
入力Ｄのデータ（０、１、２、３、４・・・）は、三角印を付けたエッジでの受け取るタイミングでＦＦ２１５に受け取られ、丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出され、15nsに３回のデータ転送速度（200MHzのデータ転送速度）で転送され得る（実線の矢印で示すデータ遷移参照）。また、出力Ｑに出力されたデータをさらに別の333MHzのＦＦでラッチした場合でも、データは選択的に受け渡すことになるが、データの順番が変わったり、データの消失が起こったりすることがなくデータを受け渡しすることができる（破線の矢印で示すデータ遷移参照）。やはり、200MHzおよび333MHzの両クロックのクロック・エッジが一致する時は、エッジ信号がハイになり、通常のＦＦと同様の動作をする、即ち、入力ＤのデータはＦＦ２１５で一旦ラッチさせることなくＦＦ２３０の出力Ｑへ出力される（0ns および15nsでのデータ遷移参照）。
【００３３】
次に、入力イネーブル信号、出力イネーブル信号およびエッジ信号のタイミングについて述べる。図１２は、200MHzと333MHzのクロックの場合を例にとって入力イネーブル信号および出力イネーブル信号の生成方法を示したものである。それぞれの信号は速い方の第１クロック（333MHz）で制御されるが、それらの生成は遅い方の第２クロック（200MHz）での立ち上がりエッジのタイミングを基準にする。第２クロック（200MHz）の立ち上がりエッジのポイントａ、ｂ、ｃ、ｄに対応して、入力イネーブル信号ａ〜ｄおよび出力イネーブル信号ａ〜ｄのタイミングが決まる。両クロックのエッジの揃う0nsおよび15nsでは、エッジ信号がハイとなり、入力イネーブル信号および出力イネーブル信号は同時にアサートされる、即ち、イネーブルにされている。図１２の例ではポイントａとｄがそれらに該当する。
【００３４】
ポイントｂやｃのような両クロックのエッジが揃っていない時点では、第２クロック（200MHz）の立ち上がりエッジのポイントの前に生じてそのポイントに近い第１クロック（333MHz）の立ち上がりエッジのポイントが、入力データを受け取るタイミングとなるように、入力イネーブル信号はイネーブルにされる（入力イネーブル信号ｂおよびｃ参照）。また、第２クロック（200MHz）の立ち上がりエッジのポイントの後に生じてそのポイントに近い第１クロック（333MHz）の立ち上がりエッジのポイントが、出力データを送り出すタイミングとなるように、出力イネーブル信号はイネーブルにされる（出力イネーブル信号ｂおよびｃ参照）。その際、入力イネーブル信号同士および出力イネーブル信号同士の順番は重なったり、入れ替わったりしないようにする。また、前の出力イネーブル信号と後の入力イネーブル信号の順序も入れ替わらないようにする。例えば、出力イネーブル信号ｂと入力イネーブル信号ｃは重なっても良いが、順序は入れ替わることができない。なお、出力イネーブル信号ｂと入力イネーブル信号ｃが重なるような特殊な場合については後で述べる。
【００３５】
回路のセットアップ時間を稼ぐためには、図９の回路はできるだけ早くデータをラッチして、できるだけ早くデータを送出する必要がある。そのため、入力および出力イネーブル信号の選択的イネーブルのタイミングとして一番効率の良いポイントは、図１２に示すように、遅い方の第２クロック（200MHz）の立ち上がりエッジのポイントに一番近い前後に生じる速い方の第１クロック（333MHz）の立ち上がりエッジのポイントになる。
【００３６】
入力および出力イネーブル信号をそのようなポイントで選択的にイネーブルにするイネーブル信号生成方法の一例を説明する。２種類の入力および出力イネーブル信号を選択的にイネーブルにするポイント、即ち時点は、両クロックのエッジが揃うタイミングとそのクロック比率を使って計算することができる。
【００３７】
まず、以下のように 、Ｎ1st、Ｎ2nd、ＣＮＴｄｏｗｎ、ＣＮＴｕｐおよびＩＮＴ（ａ）を定義する。
・Ｎ1st：両クロックのエッジが揃ってから次に揃うまでの間での第１クロックのクロック数（例では、333MHzのクロックで、15nsの間に５回なので、Ｎ1st＝５）
・Ｎ2nd：両クロックのエッジが揃ってから次に揃うまでの間での第２クロックのクロック数（例では、200MHzのクロックで、15nsの間に３回なので、Ｎ2nd＝３）
・ＣＮＴｄｏｗｎ：両クロックのエッジが揃う時点からスタートして、Ｎ1st−１、Ｎ1st−２、・・・、１ 、０ 、Ｎ1st−１、Ｎ1st−２、・・・とカウントダウンしながら循環するカウンタ値
・ＣＮＴｕｐ：両クロックのエッジが揃う時点からスタートして、０、１、・・・、Ｎ1st−２、Ｎ1st−１、０、１、・・・とカウントアップしながら循環するカウンタ値
・ＩＮＴ（ａ）：aの値を小数点以下切捨てする関数
【００３８】
２種類の入力および出力イネーブル信号生成のタイミングは、これらの変数や関数を使って次のように定義できる。
・入力イネーブル信号：ＩＮＴ（ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1st）の値が変化する時点および両クロックのエッジが揃う時点では、１（イネーブル）、それ以外は０（ディスエーブル）
・出力イネーブル信号：ＩＮＴ（ＣＮＴｕｐ＊Ｎ2nd/Ｎ1st）の値が変化する時点および両クロックのエッジが揃う時点では、１（イネーブル）、それ以外は０（ディスエーブル）
【００３９】
以上の式を使って２種類の入力および出力イネーブル信号を作成した例（333MHzと200MHzのクロック）を表１に示す。333MHzと200MHzのクロックのエッジが一致するポイントは、0ns、15nsおよび30nsの時間の上に×印で示されている。また、入力イネーブル信号のイネーブルのタイミングが入力イネーブルのポイントに×印で示され、出力イネーブル信号のイネーブルのタイミングが出力イネーブルのポイントに×印で示されている。
0005431290.tif 000002
【００４０】
入力イネーブル信号については、ＩＮＴ（ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1st）の値が、エッジが一致するポイント（0ns、15nsおよび30ns）と3ns、9ns、18ns、24nsおよび33nsでそれぞれ変化するので、それらの時点がイネーブルのタイミングに選ばれ、入力イネーブル信号はそれらの時点にイネーブルとなるように生成される。同様に、出力イネーブル信号については、ＩＮＴ（ＣＮＴｕｐ＊Ｎ2nd/Ｎ1st）の値が、エッジが一致するポイント（0ns、15nsおよび30ns）と6ns、12ns、21ns、27nsおよび36nsでそれぞれ変化するので、それらの時点がイネーブルのタイミングに選ばれ、出力イネーブル信号はそれらの時点にイネーブルとなるように生成される。
【００４１】
なお、上記の式を使って計算しなくても、予め遅い方のクロック・エッジの前後に当たるポイントをマニュアルで適宜決定の上設定しておき、それらを循環させて使うことも可能であり、計算式に依らずにイネーブル信号を生成することができる。
【００４２】
図１３に図８のイネーブル信号生成回路３００の構成例を示す。イネーブル信号生成回路３００は入力イネーブル信号生成器３１０、出力イネーブル信号生成器３２０およびタイミング信号保持回路３３０を含む。タイミング信号保持回路３３０から出力される信号は、エッジ信号に一致する。入力イネーブル信号生成器３１０および出力イネーブル信号生成器３２０には、それぞれ、Ｎ1stの値、Ｎ2ndの値、タイミング・パルスおよび第１クロックが入力され、入力イネーブル信号生成器３１０からは入力イネーブル信号が出力され、出力イネーブル信号生成器３２０からは出力イネーブル信号が出力される。タイミング信号保持回路３３０にはタイミング・パルスおよび第１クロックが入力され、タイミング信号保持回路３３０からの出力が入力イネーブル信号生成器３１０および出力イネーブル信号生成器３２０に印加される。
【００４３】
図１４にイネーブル信号生成回路３００の詳細を例示する。入力イネーブル信号生成器３１０は、カウントダウン・カウンタ３１２、第１演算回路３１４、第１差動回路３１６および第１ＯＲ回路３１８で構成される。そして、出力イネーブル信号生成器３２０は、カウントアップ・カウンタ３２２、第２演算回路３２４、第２差動回路３２６および第２ＯＲ回路３２８で構成される。また、タイミング信号保持回路３３０は、信号保持回路３３２で構成される。
【００４４】
カウントダウン・カウンタ３１２は、第１クロックのクロック数Ｎ1st（例では４ビットの値）が入力され、タイミング・パルスが入力されるとリセットされ、リセットされた時にＮ1st−１がセットされて、速いクロックで０までカウントダウン動作し、カウント値ＣＮＴｄｏｗｎ（例では４ビットの値）を出力する。第１演算回路３１４は、カウント値ＣＮＴｄｏｗｎ、第１クロックのクロック数Ｎ1stおよび第２クロックのクロック数Ｎ2nd（例では４ビットの値）がそれぞれ入力されて、ＣＮＴｄｏｗｎ＊Ｎ2nd/Ｎ1stを計算し、計算値を出力する。第１差動回路３１６は、第１クロックで動作し、第１演算回路の計算値が入力され、入力された計算値が入力前の値と異なるときには１を出力し、それ以外は０を出力する。第１ＯＲ回路３１８は、第１差動回路３１６からの入力および信号保持回路３３２からの入力をＯＲ演算して、出力を入力イネーブル信号として提供する。
【００４５】
カウントアップ・カウンタ３２２は、第１クロックのクロック数Ｎ1stが入力され、タイミング・パルスが入力されるとリセットされ、リセットされた時に０がセットされて、第１クロックでＮ1st−１までカウントアップ動作し、カウント値ＣＮＴｕｐ（例では４ビットの値）を出力する。第２演算回路３２４は、カウント値ＣＮＴｕｐ、第１クロックのクロック数Ｎ1stおよび第２クロックのクロック数Ｎ2ndがそれぞれ入力されて、ＣＮＴｕｐ＊Ｎ2nd/Ｎ1stを計算し、計算値を出力する。第２差動回路３２６は、速いクロックで動作し、第２演算回路の計算値が入力され、入力された計算値が入力前の値と異なるときには１を出力し、それ以外は０を出力する。第２ＯＲ回路３２８は、第２差動回路３２６からの入力および信号保持回路３３２からの入力をＯＲ演算して、出力を出力イネーブル信号として提供する。
【００４６】
信号保持回路３３２は、第１クロックで動作し、タイミング・パルスが入力され、タイミング・パルスを保持して第１ＯＲ回路３１８および第２ＯＲ回路３２８に出力する。
【００４７】
さて、前に出力イネーブル信号ｂと入力イネーブル信号ｃが重なるような特殊な場合について触れたが、ここでその特殊な場合について検討する。Ｎ1st＜２Ｎ2nd−１の場合には、両クロックのエッジが揃う点以外で出力イネーブル信号と入力イネーブル信号が重なる場合がある。即ち、前の第２クロックのエッジによる出力イネーブル信号（例えば、出力イネーブル信号ｂ）とその次の第２クロックのエッジによる入力イネーブル信号（例えば、入力イネーブル信号ｃ）が同じポイントになる場合である。この場合を特殊な場合と定義する。
【００４８】
例えば、第２クロックが200MHz（周期5ns）で、第１クロックが266.666・・・MHz（周期3.75ns、単に「266MHz」と称す）のときは、Ｎ1st：Ｎ2nd＝４：３であり、４＜２＊３−１＝５より特殊な場合に相当する。図１５にこの場合に定められる入力および出力イネーブル信号のタイミングを示す。図１５の例では、第２クロック（200MHz）のエッジbの出力イネーブル信号（出力イネーブル−ｂ）とエッジcの入力イネーブル信号（入力イネーブル−ｃ）が同じポイントとなる。この特殊な場合には、図８および図９の回路において、エッジ信号を入力イネーブル信号と出力イネーブル信号のＡＮＤ演算で作成してしまうと、両クロックはエッジが揃って（一致して）いないのに、異なるデータについての入力イネーブル信号と出力イネーブル信号が同じポイントになる時点でもエッジ信号が生成され、入力イネーブル信号で受け取ったデータをそのまま送り出してしまうので、エッジ信号はＡＮＤ演算で作成できない。また、データ保持回路のフィードバック（入力Ｄに接続された組み合わせ回路の入力信号の１つとなること）はできなくなる。しかし、これまで述べた双方向のデータ転送は問題なくできる。
【００４９】
図１６に、特殊な場合における遅い方の第２クロック（200MHz）のクロック・ドメインからのデータを入力Ｄに提供した際のタイミングを各信号の波形で示す。図１６は図１０に対応する。図１６に示されるように、200MHzのクロック・ドメインから入力Ｄへのデータを、三角印を付けたエッジでの受け取るタイミングでＦＦ２１５に受け取り、丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出すことにより、15nsに３回のデータ転送速度（200MHzのデータ転送速度）で出力Ｑに出力できる（実線の矢印で示すデータ遷移参照）。
【００５０】
特に、7.5nsのポイントでは、入力イネーブル信号により三角印を付けたエッジでの受け取るタイミングでデータｄをＦＦ２１５に受け取り、同時に、前の入力イネーブル信号により受け取るタイミングで既にＦＦ２１５に取り込まれていたデータｃを、出力イネーブル信号により丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出す。このポイントでエッジ信号がハイのイネーブルにならなければ、入力Ｄから受け取ったデータｄがそのまま直ちに出力Ｑに送り出されることはないので、データの転送に問題は生じない。出力Ｑに出力されたデータをさらに別の200MHzのＦＦでラッチした場合でも、データの順番が変わったり、データの消失が起こったりすることがなくデータを受け渡しすることができる（破線の矢印で示すデータ遷移参照）。200MHzおよび266MHz の両クロックのクロック・エッジが一致する時は、エッジ信号がハイになり、通常のＦＦと同様の動作をする、即ち、入力ＤのデータはＦＦ２１５で一旦ラッチさせることなくＦＦ２３０の出力Ｑへ出力される（0ns および15nsでのデータ遷移参照）。
【００５１】
図１７に、特殊な場合における速い方の第１クロック（266MHz）のクロック・ドメインからのデータを入力Ｄに提供した際のタイミングを各信号の波形で示す。図１７は図１１に対応する。入力Ｄのデータ（０、１、２、３、４・・・）は、三角印を付けたエッジでの受け取るタイミングでＦＦ２１５に受け取られ、丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出され、15nsに３回のデータ転送速度（200MHzのデータ転送速度）で転送され得る（実線の矢印で示すデータ遷移参照）。
【００５２】
特に、7.5nsのポイントでは、入力イネーブル信号により三角印を付けたエッジでの受け取るタイミングでデータ３をＦＦ２１５に受け取り、同時に、前の入力イネーブル信号により受け取るタイミングで既にＦＦ２１５に取り込まれていたデータ２を、出力イネーブル信号により丸印を付けたエッジでの送り出すタイミングでＦＦ２３０の出力Ｑに送り出し、データの転送に問題は生じない。また、出力Ｑに出力されたデータをさらに別の266MHzのＦＦでラッチした場合でも、データは選択的に受け渡すことになるが、データの順番が変わったり、データの消失が起こったりすることがなくデータを受け渡しすることができる（破線の矢印で示すデータ遷移参照）。やはり、200MHzおよび266MHzの両クロックのクロック・エッジが一致する時は、エッジ信号がハイになり、通常のＦＦと同様の動作をする、即ち、入力ＤのデータはＦＦ２１５で一旦ラッチさせることなくＦＦ２３０の出力Ｑへ出力される（0ns および15nsでのデータ遷移参照）。
【００５３】
上記説明のとおり、本発明を実施すれば、データの転送レートを最適に保ちつつ（例では、15nsに３回転送）双方向でデータを送受信でき、どちらのクロック・ドメインにも回路の変更無しに接続することができる。そして、本発明は同期回路として実施されるので、静的タイミング検証ＳＴＡと論理シミュレーションによる機能の検証ができる。また、本発明は、異なるクロックの場合には、速い方のクロック・ドメインのクロックで動作する回路で実施されるので、図１８に示すように、速い方のクロック・ドメインＡ（ＣＬＫ−Ａ）にその回路をデータの送り出し用と受け取り用にそれぞれ設ければ、遅い方のクロック・ドメインＢ（ＣＬＫ−Ｂ）では、その回路からの出力データ（ＣＬＫ−Ｂへの入力）やその回路への入力データ（ＣＬＫ−Ｂからの出力）は、遅い方のクロック・ドメインのものとして同じように扱うことができ（ＣＬＫ−Ｂでの特別な処理は不要）、図７に示した従来のデータ転送のように遅い方のクロック・ドメインにラッチ回路等を設けることが全く必要なくなる。さらに、従来はクロックの組み合わせが変わる場合にはＣＤＣ接続回路の再検討、再設計が必要であるが、遅いクロックが速いクロックの周波数を超えない（第１クロックの周波数≧第２クロックの周波数）限り（遅い・速いという関係が変わらない限り）ＣＤＣ接続部分の回路は同一のままで使用することができる。
【００５４】
以上、実施態様を用いて本発明の説明をしたが、本発明の技術的範囲は実施態様について記載した範囲には限定されない。実施態様に種々の変更又は改良を加えることが可能であり、そのような変更又は改良を加えた態様も当然に本発明の技術的範囲に含まれる。
【図１】
0005431290.tif 000003
【図２】
0005431290.tif 000004
【図３】
0005431290.tif 000005
【図４】
0005431290.tif 000006
【図５】
0005431290.tif 000007
【図６】
0005431290.tif 000008
【図７】
0005431290.tif 000009
【図８】
0005431290.tif 000010
【図９】
0005431290.tif 000011
【図１０】
0005431290.tif 000012
【図１１】
0005431290.tif 000013
【図１２】
0005431290.tif 000014
【図１３】
0005431290.tif 000015
【図１４】
0005431290.tif 000016
【図１５】
0005431290.tif 000017
【図１６】
0005431290.tif 000018
【図１７】
0005431290.tif 000019
【図１８】
0005431290.tif 000020