次に、本発明の実施形態を図に基づいて詳細に説明する。
本発明の実施形態に係るデータ転送装置は相手装置との間にデータの転送を行うデータ転送装置であって、図1,図10,図11及び図12に示すように、基本的な構成として、転送用クロック信号CLK(ExCLK)を相手装置(2)に送信するクロック送出部400と、前記相手装置(2)から前記転送用クロック信号CLK(ExCLK)に同期したデータMDIを受信するデータ受信部500とを有しており、前記データ受信部500は、前記転送用クロック信号CLKを遅延し且つその遅延量を可変とした遅延クロック信号DCLKの立ち上がりエッジまたは立ち下りエッジのいずれかで前記データをラッチする第1のラッチ回路21と、前記第1のラッチ回路21の出力信号を受信データとして処理することを特徴とする。
本発明の実施形態では、システム全体でのタイミング同期を取るため、相手装置(2)にのみ転送用クロック信号CLK(ExCLK)を転送し、相手装置(2)との相互間でのデータ転送を前記転送用クロック信号CLK(ExCLK)に共通に同期して行う。また、前記転送用クロック信号CLK(ExCLK)のクロック周波数は、データ転送のスループットを低下させないために実装置における要求性能を満たすクロック周波数に設定することが望ましいものである。
本発明の実施形態では、相手装置(2)のみに転送用クロック信号CLKを転送し、全てのデータ転送を前記転送用クロック信号に同期させること、及び相手装置から入力したデータをラッチするタイミングを、配線遅延等に依存せずにシステム全体の時計や転送タイミングを合わせることが可能となる。具体的には、相手装置(2)へは転送データと共に転送用クロック信号CLKを出力し、データ転送用に用いた転送クロック信号のエッジと相手装置(2)側でデータ入力用に用いるクロック信号のエッジとを逆にすることにより、データ転送の遅延時間に依存せず、セットアップ時間およびホールド時間のマージンを確保することが可能となる。また、相手装置(2)からのデータ転送時には、そのデータを受信する際に最適なラッチタイミングを選択でき、どのラッチタイミングが選択されても、データ受信部500からのデータ入力時には同じ転送タイミングにできるため、データ転送の遅延時間に依存せず同期したデータ転送を行うことができる。したがって、シミュレーションのような事前検証やボード評価において、ビット精度およびサイクル精度で実装置での動作と等価に行うことができることとなり、検証精度が高くなることも期待できる。
また、実装置のみの配線遅延を考慮してクロック周波数を決定できることにより転送スループットの低下も防ぐことができる。さらに、位相可変クロック信号の使用によりラッチタイミングの判定基準が転送クロックの数倍の精度で得られるため、より最適なラッチタイミングを選択することも可能となる。
次に、本発明の実施形態を具体例に基づいて更に詳細に説明する。本発明の実施形態をマスタLSI及びスレーブLSIのインタフェースに実装した例を本発明の実施形態1として説明する。また、スレーブLSIが複数存在し、且つそのスレーブLSI間でデータバス信号を共有してデータ転送を行う場合のインタフェース回路の例を本発明の実施形態2として説明する。さらに、実施形態1および実施形態2において示したスレーブLSIの1つを、マスタLSI内にスレーブコアとして1チップ化して接続した場合の例を本発明の実施形態3として説明する。最後に、スレーブLSIとのインタフェースを1種類に限定することで構成を簡単化する例を本発明の実施形態4として説明する。
(実施形態1)
図1は、本発明の実施形態1に係るデータ転送装置の構成を示すブロック図である。以下の各実施形態での説明では、本発明の実施形態に係るデータ転送装置をマスタLSIに組込み、その相手装置としてスレーブLSIを用いた例を示している。
マスタLSI1は、フリップフロップ10(FF(OH))、11(FF(OL))、20(FF(IH))、21(FF(IL))、22(FF(IM))、選択回路(セレクタ)30、31、ゲート回路32、位相調整レジスタ40a(ADJREG0)、40b(ADJREG1)、40c(ADJREG2)、・・・、入出力バッファ41、43、46、遅延レジスタ(DLY)34、制御プロセッサ(CPU)100を備える。また、スレーブLSI2は、入出力バッファ42、44、45、フリップフロップ50(FF(SDI))、60(FF(SDO))、PLL回路70、RAMや論理回路などの内部回路65を備える。
図1に示す実施形態1では、ゲート回路32などが、転送用クロック信号CLK(ExCLK)を相手装置(スレーブLSI2)に送信するクロック送出部400を構成している。なお、クロック送出部400は、入出力バッファ43が含まれていてもよい。また、前記転送用クロック信号CLKを遅延し且つその遅延量を可変とした遅延クロック信号DCLKの立ち上がりエッジまたは立ち下りエッジのいずれかでデータMDIをラッチするデータ受信部500の第1のラッチ回路をフリップフロップ21で構成している。また、前記転送用クロック信号CLKの立ち上がりエッジまたは立ち下がりエッジのいずれかで前記データMDIをラッチする第2のラッチ回路をフリップフロップ20で構成している。なお、前記データMDIは、相手装置であるスレーブLSIから前記転送用クロック信号CLKに同期させてデータ転送装置であるマスタLSI1に送信されるデータである。また、転送クロック信号CLKの立ち上がりエッジまたは立ち下がりエッジのいずれかに同期して送信データDOを相手装置であるスレーブLSI2に出力するデータ出力回路600を、フリップフロップ10,フリップフロップ11などにより構成している。なお、データ出力回路600の構成は図1に示すものに限られるものではない。
また、第1のラッチ回路であるフリップフロップ21の出力信号と第2のラッチ回路であるフリップフロップ20の出力信号とのいずれかを受信データとして選択する第1の選択部を選択回路(セレクタ)30で構成している。また、前記転送クロック信号CLKの立ち上がりエッジまたは立ち下がりエッジのいずれかで前記第1の選択部である選択回路30が出力する前記データMDIをラッチする第3のラッチ回路をフリップフロップ22で構成している。また、第2のラッチ回路であるフリップフロップ20の出力信号と前記第3のラッチ回路であるフリップフロップ22の出力信号とのいずれかを受信データとして選択する第2の選択部を選択回路(セレクタ)31で構成している。
なお、図1に示す実施形態1では、ラッチ回路及び選択部を多段に接続した例を示したが、これに限られるものではない。本発明の実施形態1では基本的な構成として、第1のラッチ回路21の出力信号を受信データとして処理する構成であれば、第1のラッチ回路21のみを設けた回路構成としてもよいものである。また、その応用例としてデータMDIをラッチするタイミングを最適化するために、第1のラッチ回路21に加えて、第2のラッチ回路20を設け、これに伴って第1のラッチ回路21の出力信号と第2のラッチ回路20の出力信号とのいずれかを第1の選択部30で受信データとして選択するようにしてもよい。さらには、第1のラッチ回路21及び第2のラッチ回路20に加えて、第3のラッチ回路22を付加し、第2のラッチ回路20の出力信号と第3のラッチ回路22の出力信号とのいずれかを第2の選択部31で受信データとして選択するようにしてもよいものである。
フリップフロップ10は、出力データDOを転送用のクロック信号CLKの立ち上がりエッジでラッチし、フリップフロップ11に出力する。フリップフロップ11は、フリップフロップ10の出力データをクロック信号CLKの立ち下りエッジでラッチし、出力データMDOを入出力バッファ41を介してスレーブLSI2に送信する。なお、出力データDOのビット幅は、1ビットであっても、データバスとして複数ビット化されていてもどちらであってもよい。ここでは、1ビットとして図示している。また、フリップフロップ11、入出力バッファ41間などに他の図示されない論理回路が存在していてもかまわない。
また、ゲート回路32は、クロック信号CLKを制御信号CNTによってオンオフされるクロック信号ExCLKとして入出力バッファ43を介してスレーブLSI2に送信する。
さらに、スレーブLSI2からの受信データは、入出力バッファ46を介してデータMDIとしてフリップフロップ20、21に入力される。なお、受信データのビット幅は、1ビットであっても、データバスとして複数ビット化されていてもどちらであってもよい。ここでは、1ビットとして図示している。また、入出力バッファ46、フリップフロップ20、21間などに他の図示されない論理回路が存在していてもかまわない。
フリップフロップ20は、データMDIをクロック信号CLKの立ち上がりエッジでラッチし、位相調整用の選択回路30、31に出力する。フリップフロップ21は、データMDIを位相可変なクロック信号DCLKの立ち上がりエッジでラッチし、選択回路30に出力する。遅延レジスタ34は、制御プロセッサ100からの設定値DSETに基づいてクロック信号CLKを遅延してクロック信号DCLKを出力する。選択回路30は、選択信号SEL0=1の時、フリップフロップ20の出力信号をフリップフロップ22に出力し、選択信号SEL0=0の時、フリップフロップ21の出力信号をフリップフロップ22に出力する。フリップフロップ22は、選択回路30の出力信号をクロック信号CLKの立ち上がりエッジでラッチし、選択回路31に出力する。選択回路31は、選択信号SEL0=1の時、フリップフロップ20の出力信号を受信データDIとして出力し、選択信号SEL0=0の時、フリップフロップ22の出力信号を受信データDIとして出力する。
位相調整レジスタ40a、40b、40c、・・・は、それぞれ制御プロセッサ100からの取り込み許可信号EN0、EN1、EN2、・・・によって受信データDIをクロック信号CLKの立ち上がりエッジで取り込む。
制御プロセッサ100は、選択部30,31がデータをラッチするタイミングの設定と前記遅延クロック信号の遅延量とを変更させて、前記相手装置2に出力する転送クロック信号に同期したデータを受信データとして取得するラッチタイミングの選択を制御するものである。具体的に説明すると、制御プロセッサ100は、制御信号CNTをゲート回路32に出力すると共に、位相調整時における位相調整レジスタ40a、40b、40c、・・・の値を必要に応じて読み出し、読み出し結果に応じて選択信号SEL0、SEL1を出力し、フリップフロップ20、21、22におけるラッチタイミングの選択を行う。また、遅延レジスタ34の遅延量を定める設定値DSETを設定する。
スレーブLSI2において、PLL回路70は、クロック信号ExCLKを入出力バッファ43、44を介してクロック信号REFCLKとして入力し、基準のクロック信号CTSをフリップフロップ50、60、内部回路65に出力する。なお、クロック信号REFCLKが安定的に供給される場合には、PLL回路70を廃し、クロック信号REFCLKをクロック信号CTSとしてもよい。
フリップフロップ50は、出力データMDOを入出力バッファ41、42を介してデータSDIとしてクロック信号REFCLKの立ち上がりエッジでラッチし、内部回路65等に出力する。なお、入出力バッファ42、フリップフロップ50間などに他の図示されない論理回路が存在していてもかまわない。
フリップフロップ60は、内部回路65等からのデータをクロック信号REFCLKの立ち上がりエッジでラッチし、入出力バッファ45、46を介してデータMDIとしてマスタLSI1に出力する。なお、フリップフロップ60、入出力バッファ45間などに他の図示されない論理回路が存在していてもかまわない。
図2は、図1において示されるクロック信号CLK、DCLK、ExCLKの波形と位相関係について示した図である。ここで、図2のfは、クロック信号CLKの周波数(単位:Hz)を示す。クロック信号CLKは、転送クロックまたは内部動作クロックの基準となるクロック信号である。また、クロック信号DCLKは、クロック信号CLKと周波数は同じであって、遅延レジスタ34の設定値DSETにより位相を可変にできる位相可変クロックである。図2ではクロック信号CLKの4倍の周波数を持つクロック信号CLKHを用いてシフトすることで4相にシフト可能なクロック信号DCLK(DSET=0〜3)を実現している。しかし、これは複数の位相を選択できるクロックであれば特に4相に限定されない。また、クロック信号ExCLKは、クロック信号CLKと周波数も位相も同じであって、制御プロセッサ100からの信号CNTによってON/OFFが可能な外部転送クロックである(CNT=0でOFF、CNT=1でON)。
本発明の実施形態1に係るデータ転送装置の動作について図1を用いて説明する。マスタLSI1側の転送用のクロックとしてクロック信号CLKを使用し、スレーブLSI2用の転送クロックの基準としてクロック信号ExCLKを出力する。スレーブLSI2ではクロック信号ExCLKに同期してマスタLSI1とのデータ転送の入出力を行う。
マスタLSI1からスレーブLSI2へのデータ転送時には、マスタLSI1側でクロック信号CLKの立ち下りエッジに同期させて転送データを出力し(フリップフロップ11)、スレーブLSI2側でクロック信号REFCLKと同相のクロック信号CTSの立ち上がりエッジに同期してデータをラッチする(フリップフロップ50)。また、これとは逆に、図12に示す実施形態4において後述するように、マスタLSI1側では立ち上がりエッジに同期して出力し、スレーブLSI2側では立ち下りエッジに同期してラッチする構成であってもよい。つまり、マスタLSI1側で出力データ用に用いたクロックエッジに対して、スレーブLSI2側ではそれとは逆のクロックエッジを用いて入力データをラッチする構成である。
スレーブLSI2からマスタLSI1へのデータ転送時には、スレーブLSI2側でクロック信号CTSの立ち上がりエッジに同期してデータを出力し、マスタLSI1側ではクロック信号CLKの立ち上がりエッジと立ち下りエッジの両方に同期してデータをラッチする。すなわち、フリップフロップ20を使用することで立ち上がりエッジに同期してラッチし、位相可変なクロック信号DCLKとフリップフロップ21を使用することで立ち下りエッジに同期してラッチする。例えば、フリップフロップ21がクロック信号DCLKの立ち上がりで動作するフリップフロップである場合には、クロック信号DCLKの設定値DSETを”2”に設定してクロック信号CLKの逆位相となるようにする。さらに、内部回路に入力データDIを転送する際にはLSI間の遅延時間に依存して以下の3つの転送方法から最適な方法を選択する。
第1の転送方法は、クロック信号CLKの立ち上がりエッジでラッチしたデータ(フリップフロップ20)を、再度立ち上がりエッジ(フリップフロップ22)でラッチし直してから転送する方法である(SEL1=0、SEL0=1)。マスタLSIとスレーブLSI間の往復の遅延時間が転送クロックの1サイクル以内に収まる場合にはこの方法を選択する。
第2の転送方法は、クロック信号CLKの立ち下がりエッジすなわちクロック信号DCLKの立ち上がりエッジでラッチしたデータ(フリップフロップ21)を、今度は立ち上がりエッジ(フリップフロップ22)でラッチし直してから転送する方法である(SEL1=0、SEL0=0)。マスタLSIとスレーブLSI間の往復の遅延時間が転送クロックの0.5サイクルから1.5サイクルの間の場合にはこの方法を選択する。
第3の転送方法は、クロック信号CLKの立ち上がりエッジでラッチしたデータ(フリップフロップ20)を、そのまま転送する方法である(SEL1=1、SEL0=1)。マスタLSIとスレーブLSI間の往復の遅延時間が転送クロックの1サイクルから2サイクルの間の場合にはこの方法を選択する。
図3、4、5は、上記の第1、第2、第3の転送方法のそれぞれの場合における転送タイミングを示した図である。ここで、fは転送クロックの周波数(単位:Hz)、TCLKはマスタLSI1からスレーブLSI2への転送クロックの遅延時間、TDMSはマスタLSI1からスレーブLSI2への転送データの遅延時間、TDSMはスレーブLSI2からマスタLSI1への転送データの遅延時間を示す。ここで、LSI間の遅延時間とは、フリップフロップとフリップフロップの間に存在する途中の回路、配線遅延、入出力バッファ等の動作遅延等を全て含んだ時間のことである。
マスタLSI1からスレーブLSI2へのデータ転送は、LSI間の遅延時間に依存せず図3から図5で同じ動作となる。本発明の実施形態ではマスタLSI1からスレーブLSI2に転送用のクロック信号を出力しており、配線遅延が変化しても、クロック信号の遅延時間TCLKと転送データの遅延時間TDMSは、ほぼ同じ割合で増減する。したがって、スレーブLSI2側でのクロック信号と入力データのタイミング関係は、ほぼ一定となる。また、マスタLSI1側でクロック信号の立ち下りエッジに同期させて(0.5サイクル遅らせて)転送データを出力する。これにより、スレーブLSI2側での入力データ用フリップフロップ50に対するセットアップ時間とホールド時間へのマージンを共に転送クロックの0.5サイクル分(1/2f sec)確保することができる。したがって、LSI間の遅延時間に依存せず1サイクルでの確実な同期転送が可能である。
スレーブLSI2からマスタLSI1へのデータ転送は、LSI間の遅延時間に依存して図3から図5のいずれかの場合に対応する転送方法を選択する。マスタLSI1からスレーブLSI2へのクロック信号の遅延時間TCLKとスレーブLSI2からマスタLSI1への転送データの遅延時間TDSMの和(TCLK+TDSM:LSI間の往復の遅延時間)がクロック信号の1サイクル以内に収まる場合には、図3に示すように、マスタLSI1側において選択回路31、30の制御をSEL1=0、SEL0=1とする。この場合、クロック信号CLKの立ち上がりエッジに同期してラッチしたデータ(フリップフロップ20)を再度立ち上がりエッジでラッチして(フリップフロップ22)データDIとして内部回路に転送する。
LSI間の往復の遅延時間TCLK+TDSMが転送クロックの0.5サイクルから1.5サイクルの間の場合には、図4に示すように、選択回路31、30の制御をSEL1=0、SEL0=0とする。この場合、クロック信号CLKの立ち下りエッジ(クロック信号DCLKの立ち上がりエッジ)に同期してラッチしたデータ(フリップフロップ21)を、今度はクロック信号CLKの立ち上がりエッジに同期してラッチして(フリップフロップ22)データDIとして内部回路に転送する。
また、LSI間の往復の遅延時間TCLK+TDSMが転送クロックの1サイクルから2サイクルの間の場合には、図5に示すように、選択回路31、30の制御をSEL1=1、SEL0=1とする。この場合、クロック信号CLKの立ち上がりエッジに同期してラッチしたデータ(フリップフロップ20)をそのままデータDIとして内部回路に転送する。
このように、LSI間の往復の遅延時間に対応してマスタLSI1側の選択回路31、30を選択制御することで、様々な入力データタイミングに対して内部回路へは一定のタイミング(図3から図5におけるDI)に同期化して転送することが可能となる。
また、本実施形態では、3つの転送方法の中から最適な転送方法を選択する場合の例を示した。しかしこれに限定することなく、図1の内部回路へのデータDIの生成時に、後段にクロック信号CLKの立ち上がり又は立ち下りエッジに同期して動作するフリップフロップ及び選択回路などを必要な段数分更に追加することによって、LSI間の往復の遅延時間TCLK+TDSMが1.5サイクルから2.5サイクルの間の場合や2サイクルから3サイクルの間の場合などにも対応する構成とすることもできる。
次に、位相調整方法について説明する。スレーブLSI2からマスタLSI1へのデータ転送において、マスタLSI側で入力データの最適なラッチタイミングを選択するために、位相調整モードを準備する。位相調整モードをON、すなわち取り込み許可信号EN0、EN1、EN2、・・・をアクティブにすることにより、ラッチしてセレクトした入力データDIを図1に示す位相調整レジスタ40a、40b、40c、・・・に順次格納することが可能である。なお、位相調整モードをOFFにした場合に、低消費電力化のために位相調整レジスタ用のクロック信号をクロックゲーティングにより停止させるようにしてもよい。
図6は、本発明の実施形態における位相調整方法のシーケンスの例を示した図である。CPUは、図6の手順にしたがって、各フェーズの処理を実行する。フェーズ(A)で位相調整モードをONにし、フェーズ(B)、(C)で選択回路30、31の設定(信号SEL0、SEL1の出力)と位相可変のクロック信号DCLKの位相を変更(DSETの設定)する。また、フェーズ(D)でマスタLSI1側からスレーブLSI2に対してデータのリード要求やデータ転送要求を行う。この要求によって、フェーズ(E)において、スレーブLSI2からマスタLSI1への所望のデータ転送が生ずる。これにより、位相調整レジスタ40a、40b、40c、・・・に入力データDIがラッチされるため、フェーズ(F)においてラッチされた値を確認する。
フェーズ(B)からフェーズ(F)までを位相調整の設定組合せ数分だけ繰り返し、フェーズ(G)において、どの設定組合せによるラッチタイミングが最適かを判定する。
図7は、位相調整の設定組合せと設定組合せによって得られたデータ取得判定結果(OK/NG)によるラッチタイミングを示した図である。図7中の(1)、(2)、(3)のラッチタイミングは、それぞれ図3、図4、図5に示したラッチタイミングに対応する。また、位相可変のクロック信号DCLKに、図2に示したような4相可変クロックを使用することで、クロック信号DCLKの設定値DSETを1や3に設定することにより、(4)や(5)のような中間のラッチタイミングにおける判定データ取得も可能としている。
本実施の形態の場合、図7の(1)から(5)の組合せに対して図6のフェーズ(B)〜(F)のシーケンスを繰り返す。そして、(1)から(3)の中でデータ取得判定結果がOKである設定組合せを最適なラッチタイミングとして選択する。ただし、(1)から(3)の中に判定結果がOKである設定組合せが2つ以上存在した場合は、(4)や(5)の中間のラッチタイミングにおける判定結果も考慮し、両隣の位相における判定結果もOKであるような(判定結果がNGとなる位相タイミングからできるだけ離れた)より適切なラッチタイミングの方を選択する。
このように、評価ボードや実装置などその動作環境に応じて事前に最適ラッチタイミングの選択を行った結果を、実動作ではLSI間におけるデータ転送が発生する前に、選択回路30、31の選択値として固定的に設定する。また、実動作におけるシステム起動時などに制御プロセッサ100が自律的に最適ラッチタイミングの選択および設定を実施するようなシステムであってもよい。さらに、制御プロセッサ100から各ラッチタイミングにおけるデータ取得判定結果(図7に示したOK/NG判定の結果)をLSI外部に出力することにより、評価ボードや実装置などその動作環境におけるLSI間の遅延時間の目安(実測値)を、LSI外部において細かい精度で観測することもできる。
次に、位相調整モードのためのデータ返送機構について説明する。位相調整モードで位相調整を実施する場合、設定の組合せによっては転送データを正しく取得できない可能性がある。したがって、例えば、図6に示した位相調整シーケンスのフェーズ(D)において、マスタLSI1からスレーブLSI2に対してリード要求を実施し、判定結果がNGとなるような場合には、リードデータやそれに伴う制御信号が正しく返送されず、制御プロセッサ100がフリーズするなど異常な動作をしてしまう可能性がある。
図8は、位相調整モードにおいてデータを所望のタイミングで取得できない場合でも、システムをダウンさせないためのデータ返送回路の実装例を示した図である。位相調整モードの際に、マスタLSI1側の制御プロセッサ100がスレーブLSI2からの転送データを基にした制御信号(WAIT信号やREADY信号、INTERRUPT信号など)を待つような場合は、インタフェース回路200(図1のマスタLSI1内の制御プロセッサ100を除く構成部分)がスレーブLSI2からの転送データを正しく取得できなくても該当する制御信号を生成する回路を実装する。具体的には、位相調整モードがONの場合に限って動作するような擬似的な返送信号生成回路110を実装する。
このような返送信号生成回路110を実装することにより、制御プロセッサ100がフリーズしたり異常動作したりすることを防ぐことが可能となる。また、この返送信号生成回路110に、リードデータ値の変換など判定結果の成否(OK/NG)がわかるような機能を実装することにより、位相調整レジスタ40a、・・・を用いなくても最適なラッチタイミングの判定を行うことも可能となる。
以上のようなデータ転送装置によれば、以下のような効果が期待できる。
第1の効果は、評価ボードや実装置などLSI間の遅延時間の差には依存せず、サイクル精度でLSI間のデータ同期転送を実現できること、すなわち、システム全体のタイミング同期を取れることである。
その理由は、本発明の実施形態では、マスタLSIからスレーブLSI方向に転送する共通のクロック信号に同期してLSI間のデータ転送を行い、マスタLSIからスレーブLSIへのデータ転送については、マスタLSI側でデータ出力用に用いたクロックエッジに対して、スレーブLSI側ではそれとは逆のクロックエッジを用いて入力データをラッチする構成としている。このため、セットアップ時間およびホールド時間へのマージンをLSI間の遅延時間に依存せずに確保できるためである。また、スレーブLSIからマスタLSIへのデータ転送については、スレーブLSI側から転送クロックの立ち上がりまたは立ち下りエッジに同期して出力したデータに対して、マスタLSI側では複数のラッチタイミング(立ち上がりエッジ、立ち下りエッジ、1サイクル遅れの立ち上がりエッジなど)を選択できる仕組みを実装している。このため、LSI間の遅延時間に依存してどのラッチタイミングが選択された場合であっても、マスタLSI側の内部回路へデータ転送する際には全て同じ転送タイミングになるようにデータ入力回路を構成しているためである。
また、システム全体のタイミング同期を取れることにより、シミュレーションのような事前検証やボード評価において、ビット精度およびサイクル精度で実装置と等価な動作検証ができるため、検証精度が高くなることも期待できる。
第2の効果は、実装置上でのLSI間データ同期転送を前提とした転送クロック周波数を選択でき、転送スループットの低下を防止できることである。
その理由は、本発明の実施形態では、マスタLSIからスレーブLSIへは転送クロックと転送データを一緒に出力しており、スレーブLSIからマスタLSIへのデータ転送については最適なラッチタイミングを選択できる。したがって、LSI間の往復の遅延時間が1サイクル以上となった場合でも正常にLSI間データ転送を実現できる。このため、実装置などを前提として転送クロック周波数や転送データビット幅などを決定すれば、評価ボードなどにおけるLSI間の遅延時間を厳密には考慮しなくても良いためである。
第3の効果は、マージンをできるだけ確保したことにより最適なラッチタイミングを選択でき、安定したLSI間データ転送を実現できることである。
その理由は、本発明の実施形態では、ラッチタイミングの組合せ(転送クロックの立ち上がりエッジ、立ち下りエッジなど)に比較してより細かい精度でクロックの位相を変更できる位相可変クロックを用いることにより、最適ラッチタイミングの判定時(位相調整時)に、各ラッチタイミングの間のタイミングにおけるデータ取得結果も活用しているためである。また、ラッチタイミングよりも精度の細かい位相可変クロックを使用し、各位相タイミングにおける判定結果をLSI外部でモニタリングすることで、細かい精度でLSI間の遅延時間の目安を観測することができる。そして、時間マージンの大きさ等から現状の転送クロック周波数の妥当性について検証したり、その向上可能性について次期のシステム開発にフィードバックできたりするという効果もある。
第4の効果は、マスタLSI側もスレーブLSI側も回路実現性が高く、設計および製造が非常に容易であることである。
その理由は、本発明の実施形態におけるLSI間同期回路および位相調整回路は、一般的なフリップフロップ素子とセレクタ回路の組合せのみで実現でき、位相調整も制御プロセッサがプログラム的に実施するため、フィードバックループや特殊な遅延素子を用いるクロックデータリカバリ回路のような複雑な回路的仕組みが必要ないからである。さらに、マスタLSI側のデータ入力回路を第1の実施の形態や後述する第3の実施例で示すような構成にすることによって、内部回路は位相可変クロックの位相設定を考慮せずに設計できるという利点もある。
また、特にスレーブLSI側については拡張性や流用性が高いという利点もある。本発明に特化した回路的工夫を特に必要とせず、全ての転送クロックの立ち上がりエッジに同期した回路構成のみで実現可能なためである。さらに、システム全体としてスレーブLSIの将来的なマスタLSIへの1チップ化にも容易に対応できるという大きな利点もある。後述する第3の実施例で説明するように、1チップ化した場合の回路的変更が比較的容易であることと、スレーブコアをLSIとして別チップ化した場合と1チップ化した場合とでシステム全体のタイミングが変わらず検証や動作の等価性を保障できるためである。
(実施例1)
図9は、図1に示す本発明の実施形態1に係るデータ転送装置を、複数のLSIを用いたアクセラレータ拡張システムの1つの例であるHSDPA(High Speed
Downlink Packet Access)機能拡張を有するW−CDMA(Wideband Code Division Multiple Access)ディジタルベースバンド(DBB)LSIシステムに適用した例を示している。
マスタLSI1aであるWCDMA DBB LSIには、W−CDMAディジタルベースバンドLSIシステム全体を制御するプロセッサ(CPU)100aと、クロック制御回路300(CLK Ctrl)と、スレーブLSI2aとのデータ転送を行うバスコントローラ回路201、202(BUSC1、BUSC2)とが存在する。クロック制御回路300からバスコントローラ回路201、202に対して転送用のクロック信号CLKと位相調整用のクロック信号DCLKとを供給する。また、スレーブLSI2aであるHSDPA DBB LSIには、マスタLSI1aとのデータ転送を行うバスインタフェース回路203、204(BUSIF1、BUSIF2)と、マスタLSI1aから送られるクロック信号REFCLKを元に内部動作用のクロック信号CTSを生成するPLL回路70と、RAMや論理回路で構成される内部回路65が存在する。マスタLSI1aからスレーブLSI2aに向け、スレーブLSI2a内でクロック信号REFCLKとなるシステム同期用の外部のクロック信号ExCLKを出力する。
マスタLSI1aとスレーブLSI2a間におけるデータ転送は、例えば4ビット幅のデータバス信号を用いたバス転送によって実現し、用途に分けて2種類存在する。ここで、マスタLSI1a内のバスコントローラ回路201、202(BUSC1、BUSC2)およびスレーブLSI2a内のバスインタフェース回路203、204(BUSIF1、BUSIF2)には、LSIの入出力端に最も近い部分に、図1に示した本発明の第1の実施の形態であるLSI間同期回路及び位相調整回路(図1の制御プロセッサ100、PLL回路70、内部回路65を除く構成部分に相当)が実装されている。また、クロック信号CLK、DCLK、ExCLKのタイミング関係は、図2に示した通りで、クロック信号DCLKは4相の位相可変クロックである。
マスタLSI1aからスレーブLSI2aにクロック信号ExCLKを転送し、スレーブLSI2aでは、本クロック信号に同期して動作することで、通信システムとしては重要なシステム全体としてのタイミング同期を容易に確立することが可能である。ここで、マスタLSI1aとスレーブLSI2a間における主な通信は、LSI間同期回路を実装したマスタLSI1a側のバスコントローラ回路201、202(BUSC1、BUSC2)と、スレーブLSI2a側のバスインタフェース回路203、204(BUSIF1、BUSIF2)とを用いて行われる。具体的には、制御情報データの書き込み、読み出し、送受信データのバースト転送などである。また、マスタLSI1a側のバスコントローラ回路201、202(BUSC1、BUSC2)の各々に位相調整回路を実装し、それぞれのバスごとに最適ラッチタイミングの選択設定を行う。このため、評価ボード上や実装置上などにおけるLSI間の配線遅延差に依存せず、常に同期したデータ転送を実現することができる。
(実施形態2)
図10は、本発明の実施形態2に係るデータ転送装置の構成を示すブロック図である。図10に示す実施形態2は、データ出力回路600が複数の相手装置2に共通のデータバスDBを介して転送データを転送し、データ受信部500が、複数の相手装置2の内どの相手装置がデータバスDBを使用しているかに基づいて前記ラッチタイミングの選択を行うようにしたものである。なお、図10に示す例では、データ出力回路600が、フリップフロップ10,11などにより構成されている。また、データ受信部500は図1に示すものと同じにように構成されている。また、クロック送出部400はゲート回路32a,32bなどにより構成されている。なお、クロック送出部400には、入出力バッファ43a,43bが含まれていてもよいものである。
以下に、本発明の実施形態2を具体的に説明する。図10において、図1と同一の符号は同一構成を表し、その説明を省略する。図10のデータ転送装置は、スレーブLSIが複数存在し(図10ではスレーブLSI2b、2cの2個)、且つそのスレーブLSI間で双方向のデータバス信号を共有してマスタLSI1bとの間のデータ転送を行う。
図10において、マスタLSI1bは、図1の入出力バッファ41、46を、スレーブLSI2b、2cに共通の入出力可能な双方向データバスにインタフェースする入出力バッファ47aとして備える。なお、入出力バッファ47aは、イネーブル信号OENによって出力バッファ機能がアクティブとされる。また、それぞれ信号CNT1、CNT2でON/OFF制御されるゲート回路32a、32bを備える。さらに、ゲート回路32aから出力されるクロック信号ExCLK1は、入出力バッファ43aを介してスレーブLSI2bに出力される。ゲート回路32bから出力されるクロック信号ExCLK2は、入出力バッファ43bを介してスレーブLSI2cに出力される。クロック信号ExCLK1、ExCLK2は、それぞれゲート回路32a、32bがONの場合に周波数も位相もクロック信号CLKと同じとなる。
制御プロセッサ100bは、制御信号CNT1、CNT2をそれぞれゲート回路32a、32bに出力する。また、位相調整時における位相調整レジスタ40a、40b、40c、・・・の値を読み出し、読み出し結果に応じて選択信号LSI1_SEL0、LSI1_SEL1、LSI2_SEL0、LSI2_SEL1を選択回路33に出力する。アービタ120は、スレーブLSI2b、2cのいずれかから出力されるデータのラッチタイミングの設定を行うかを示す選択信号Slave2_GRANTを選択回路33に出力する。選択回路33は、Slave2_GRANT=0の場合、選択信号LSI1_SEL0、LSI1_SEL1をそれぞれ選択信号SEL0、SEL1として選択回路30、31に出力し、Slave2_GRANT=1の場合、選択信号LSI2_SEL0、LSI2_SEL1をそれぞれ選択信号SEL0、SEL1として選択回路30、31に出力する。すなわち、選択信号Slave2_GRANTによって、選択信号LSI1_SEL0、LSI1_SEL1または選択信号LSI2_SEL0、LSI2_SEL1のいずれかで、フリップフロップ20、21、22におけるラッチタイミングの選択を行う。ここで、選択信号Slave2_GRANTは、アービタ120からではなく、制御プロセッサ100bから出力されるような構成であってもよい。
各々のスレーブLSI2b、2cにおいて、図1の入出力バッファ42、45を双方向データバスにインタフェースする入出力バッファ47b、47cとして備える。そして、マスタLSI1b側と同様、双方向データバス信号の入出力バッファを制御するための出力イネーブル信号OENが存在する。また、図1と同様、マスタLSI1b側から転送されてきたクロック信号の立ち上がりエッジで動作するデータ入力用フリップフロップ50及びデータ出力用フリップフロップ60が存在する。さらに、スレーブLSI側の転送クロックや内部動作クロックの生成のために、マスタLSI側からの転送用のクロック信号REFCLKの位相を参照して動作するPLL回路70が存在してもよい。なお、図10は、接続されるスレーブLSIが2つの場合の例を示しているが、3つ以上の場合であっても同様に適用することができる。
本実施形態に係るデータ転送装置の動作について図10を用いて説明する。実施形態1と同様に、マスタLSI1b側の転送用のクロックとしてクロック信号CLKを使用し、スレーブLSI2b、2c用の転送クロックの基準としてそれぞれクロック信号ExCLK1、ExCLK2を出力している。ここで、スレーブLSI用の転送クロック信号は、スレーブLSIごとにクロック信号ExCLK1、ExCLK2などのように別々に制御および出力しても良いし、クロック信号ExCLKとして共通に出力してもよい。実施形態1と同様に、スレーブLSI側ではこのクロック信号ExCLK1、ExCLK2に同期してマスタLSIとのデータ転送の入出力を行う。
マスタLSIからスレーブLSIへのデータ転送時には、実施形態1と同様、マスタLSI1b側でクロック信号CLKの立ち下りエッジに同期させて転送データを出力し(フリップフロップ11)、スレーブLSI2b、2c側で転送クロックの立ち上がりエッジに同期してデータをラッチする(フリップフロップ50)。ここで、図10のようにデータバス信号を複数のスレーブLSIで共有している場合には、どのスレーブLSIへのアクセスかを示すようなスレーブLSIごとに個別の制御信号をデータバス信号と合わせて出力し、その制御信号を元にスレーブLSI側でデータバス信号をラッチするかどうかを判断するような回路構成や動作であってもよい。また、双方向のデータバス信号の出力時にはマスタLSI側の出力イネーブル信号OENをアクティブにする。このように、実施形態1と同様、マスタLSIからの出力時に0.5サイクル分タイミングを遅らせて転送データを出力することで、LSI間の遅延時間に依存せず1サイクルでの確実な同期転送が可能である。
スレーブLSI2b、2cからマスタLSI1bへのデータ転送時も、実施形態1と同様に、スレーブLSI側でクロック信号の立ち上がりエッジに同期してデータを出力し(フリップフロップ60)、マスタLSI側ではクロック信号CLKの立ち上がりエッジと立ち下りエッジの両方に同期してデータをラッチする(フリップフロップ20、21)。そして、内部回路に入力データDIを転送する際には、LSI間の遅延時間に依存して実施形態1で示した3つの転送方法から最適な方法を選択する。ここで、双方向のデータバス信号を複数のスレーブLSIで共有している場合は、データを出力する1つのスレーブLSIのみが出力イネーブル信号OENをアクティブにする。また、マスタLSI側で3つの転送方法から最適な方法を選択する際も、スレーブLSIごとにLSI間の遅延時間は異なる可能性がある。そこで、どのスレーブLSIがデータバスを使用しているかを示す選択信号Slave2_GRANTの値を用いて選択回路33の出力値(SEL1、SEL0)を切り替える。
以上のように、LSI間の往復の遅延時間に依存してマスタLSI1b側の選択回路30、31を選択制御し、またスレーブLSIごとにその値を切り替えられるような回路構成にする。この回路構成により、複数のスレーブLSIからの様々な入力データタイミングに対して内部回路へは一定のタイミング(図3から図5におけるデータDIのタイミング)に同期化して転送することが可能となる。
次に、位相調整方法について説明する。あるスレーブLSIからマスタLSIへのデータ転送において、マスタLSI側で入力データの最適なラッチタイミングを選択するための位相調整方法については、実施形態1と同様である。ただし、本実施形態2の場合は、接続される複数のスレーブLSIについてそれぞれ個別に位相調整を実施することにより、スレーブLSIごとに最適なラッチタイミングを求める。その結果に従って位相調整セレクタ値(図10におけるLSI1_SEL[1:0]、LSI2_SEL[1:0])を設定する。
(実施形態3)
図11は、本発明の実施形態3に係るデータ転送装置の構成を示すブロック図である。図11に示す実施形態3は、転送用クロック信号を受信し、前記受信した転送用クロック信号に同期するデータを送信する装置内転送部5を含み、データ受信部500が、前記装置内転送部5からのデータを転送用クロック信号CLKに同期してラッチする縦続接続された第5及び第6のラッチ回路をさらに有しており、データ受信部500が第6のラッチ回路の出力信号を受信データとして取得するものである。図11の例では、第5のラッチ回路をフリップフロップ20aで構成し、第6のラッチ回路をフリップフロップ22aで構成している。
以下に、本発明の実施形態3を具体的に説明する。図11において、図10と同一の符号は同一構成を表し、その説明を省略する。図11のデータ転送装置は、スレーブLSIの1つを、マスタLSI1c内にスレーブコア5として1チップ化して接続した場合を示す。なお、スレーブコア5は、装置内部転送部に相当する。
実施形態1に係るデータ転送装置である図1および実施形態2に係るデータ転送装置である図10と、実施形態3に係るデータ転送装置である図11との差分について説明する。スレーブLSIの1つをスレーブコア5としてマスタLSI1c内に1チップ化して接続した場合、転送用のクロック信号CLK2は直接そのままスレーブコア5に接続する。また、マスタコア4からスレーブコア5への転送データ出力用には、クロック信号CLKの立ち上がりエッジで動作するフリップフロップ10と、クロック信号CLKの立ち下りエッジで動作するフリップフロップ11が存在し、その出力データMDOを直接スレーブコア5側の入力データSDIとする。この場合、1チップ化することによりマスタコア4内のクロック信号CLKとスレーブコア5内のクロック信号CLK2間の同期転送を保障することが可能となる。したがって、クロック信号CLKの立ち下りエッジで動作するフリップフロップ11を使用せず、クロック信号CLKの立ち上がりエッジで動作するフリップフロップ10に同期した転送データを直接スレーブコア5側に接続することも可能である。
同様に、スレーブコア5からマスタコア4へのデータ転送については、同期転送が保障されることでマスタコア4側での位相調整(最適ラッチタイミングの選択)が不要となる。このため、マスタコア4側ではクロック信号CLKの立ち上がりエッジで動作し、直列接続されるフリップフロップ20a(FF(IH2))、22a(FF(IM2))だけが存在し、入力データMDI2をフリップフロップ20aで一度ラッチしたものを再度フリップフロップ22aでラッチして内部回路に入力データDI2を転送する。
このような構成にすることにより、スレーブコア5をマスタLSI1c内に1チップ化して接続しても、スレーブLSI2bとして別チップ化して接続しても同一の転送タイミングでデータ転送を実現することが可能となる。スレーブコア5として1チップ化した場合は、図3に示したような第1の転送方法が選択された場合と同じ転送タイミングとなる。ここで、図11に示すように、スレーブコア5とスレーブLSI1bが複数混在するような場合には、アービタ120aは、選択信号Slave2_GRANT2を選択回路35に出力し、どのスレーブがアクセスしているかによって内部回路へ出力される最終的なデータDIを決定する。すなわち、選択信号Slave2_GRANT2=0の場合、スレーブLS12bからのデータがデータDIとして内部回路に出力され、選択信号Slave2_GRANT2=1の場合、スレーブコア5からのデータがデータDIとして内部回路に出力される。ここで、選択信号Slave2_GRANT2は、アービタ120aからではなく、図示されない制御プロセッサなどから出力されるような構成であってもよい。
(実施形態4)
図12は、本発明の実施形態4に係るデータ転送装置の構成を示すブロック図である。図12に示す実施形態4は、第1のラッチ回路21の出力信号を転送用クロック信号CLKの立ち上がりエッジまたは立ち下がりエッジのいずれでラッチする第4のラッチ回路22と、第4のラッチ回路22の出力信号を受信データとして選択する第3の選択部31とをデータ受信部500に有している。なお、実施形態4では、第1のラッチ回路21をフリップフロップで構成し、第4のラッチ回路をフリップフロップ22で構成し、第3の選択部を選択回路(セレクタ)31で構成している。
以下、本発明の実施形態4について具体的に説明する。図12において、図1と同一の符号は同一構成を表し、その説明を省略する。図12のデータ転送装置は、スレーブLSIとのインタフェースが1種類に限定できることで構成を簡単化できる場合を示す。
マスタLSI1d側には転送データ出力用にクロック信号CLKの立ち上がりエッジで動作するフリップフロップ10が存在する。転送データ入力用に、位相可変のクロック信号DCLKの立ち上がりエッジ又は立ち下りエッジのどちらかで動作するフリップフロップ21と、クロック信号CLKの立ち上がりエッジで動作するフリップフロップ22が存在し、フリップフロップ21、22の出力を選択する選択回路31が存在する。
スレーブLSI2d側には、マスタLSI1d側から転送されてきたクロック信号ExCLKの立ち下りエッジで動作するデータ入力用のフリップフロップ51(FF(SDIL))、クロック信号ExCLKの立ち上がりエッジで動作するデータ入力用のフリップフロップ50(FF(SDI))が存在する。また、クロック信号ExCLKの立ち上がりエッジで動作するデータ出力用のフリップフロップ60(FF(SDO))が存在する。なお、スレーブLSI2d側の転送クロックや内部動作クロックの生成のために、マスタLSI1d側からのクロック信号REFCLKの位相を参照して動作するPLL回路が存在してもよい。
実施形態1を示した図1との違いは、マスタLSI1d側でフリップフロップ11が不要となり、スレーブLSI2d側でフリップフロップ51が存在すること、および、マスタLSI1d側でフリップフロップ20と選択回路30が不要となっていることである。
本実施形態4に係るデータ転送装置の動作について図12を用いて説明する。マスタLSI1dからスレーブLSI2dへのデータ転送時には、マスタLSI1d側でクロック信号CLKの立ち上がりエッジに同期させて転送データを出力し(フリップフロップ10)、スレーブLSI2d側でクロック信号REFCLKの立ち下りエッジに同期してデータをラッチする(フリップフロップ51)。これは、実施形態1において説明したように、マスタLSI側で出力データ用に用いたクロックエッジに対して、スレーブLSI側ではそれとは逆のクロックエッジを用いて入力データをラッチすることが重要であり、実施形態1でも本実施形態4でもかまわないことを示している。
スレーブLSI2dからマスタLSI1dへのデータ転送時には、スレーブLSI2d側でクロック信号の立ち上がりエッジに同期してデータを出力し、マスタLSI1d側ではクロック信号DCLKの立ち上がりまたは立ち下りエッジに同期してデータをラッチする(フリップフロップ21)。さらに、内部回路に入力データDIを転送する際には、LSI間の遅延時間に依存して、第1の実施の形態において示した3つの転送方法と等価な以下の転送方法の中から最適な方法を選択する。
第1の転送方法は、クロック信号CLKの立ち上がりエッジでラッチしたデータを再度立ち上がりエッジでラッチし直して(フリップフロップ22)から転送する方法である(DSET=0、SEL1=0)(図3と等価)。
第2の転送方法は、クロック信号CLKの立ち下りエッジ、すなわちクロック信号DCLKの立ち上がりエッジでラッチしたデータを今度はクロック信号CLKの立ち上がりエッジでラッチし直して(フリップフロップ22)から転送する方法である(DSET=2、SEL1=0)(図4と等価)。
第3の転送方法は、クロック信号CLKの立ち上がりエッジでラッチしたデータをそのまま転送する方法である(DSET=0、SEL1=1)(図5と等価)。
本実施形態4では、実動作時にクロック信号DCLKの位相をインタフェースごとに個別に設定できる。したがって、実施形態1において示したマスタLSI側のデータ入力用フリップフロップ20と選択回路30が不要となり、回路構成を簡単にすることができる。ただし、この構成はLSI間のインタフェース回路が1種類の場合に適した構成であり、実施例1(図9)のようにLSI間に複数のインタフェース回路が存在する場合は、インタフェースごとに個別設定できる複数のクロック信号DCLKが必要となる。一方、実施形態1(図1)に示したようにマスタLSI側にデータ入力用フリップフロップ20と選択回路30を使用するような構成の場合は、実動作時の位相可変のクロック信号DCLKは固定的に位相設定される。したがって、LSI間に複数のインタフェースが存在し、インタフェースごとに最適なラッチタイミングが異なる場合でも、1種類のクロック信号DCLKを共通に使用することが可能であり、汎用性の高い構成と言える。
また、本実施形態4の場合は、マスタLSI側の内部回路への転送データDIへのパスとしてクロック信号DCLKの立ち上がり又は立ち下りエッジに同期したデータパスも含まれる。したがって、内部回路にはクロック信号DCLKの全ての位相を想定したセットアップ時間およびホールド時間を満たすような設計が求められる。一方、実施形態1の場合は、マスタLSI側のデータ入力回路を図1に示したような構成にすることによって、内部回路へのデータDIは必ずクロック信号の立ち上がりエッジに同期したデータパスとして出力される。このため、内部回路はクロック信号DCLKの位相設定に依存することなく、クロック信号の立ち上がりエッジに同期した転送データ入力を基準にして設計することができるという利点もある。
次に、本発明の他の実施形態について説明する。
本発明の他の実施形態に係るデータ転送装置は、転送用クロック信号を相手装置に送信するクロック送出部と、相手装置から転送用クロック信号に同期したデータを受信するデータ受信部と、を備え、データ受信部は、転送用クロック信号を所定量遅延した遅延クロック信号の立ち上がりエッジまたは立ち下りエッジでデータをラッチする第1のラッチ回路と、第1のラッチ回路の出力信号を受信データとして選択可能とするように構成される選択部と、を備える構成であってもよい。
本発明の他の実施形態に係るデータ転送装置において、データ受信部は、第1のラッチ回路の出力信号を転送用クロック信号の立ち上がりエッジまたは立ち下りエッジでラッチする第2のラッチ回路をさらに含み、選択部は、第2のラッチ回路の出力信号を受信データとしてさらに選択可能とするように構成されてもよい。
本発明の他の実施形態に係るデータ転送装置において、データ受信部は、転送用クロック信号の立ち上がりエッジまたは立ち下りエッジでデータをラッチする第3のラッチ回路をさらに含み、選択部は、第3のラッチ回路の出力信号を受信データとしてさらに選択可能とするように構成されてもよい。
本発明の他の実施形態に係るデータ転送装置において、選択部は、第1のラッチ回路の出力信号と第3のラッチ回路の出力信号とを選択する第1の選択回路と、第2のラッチ回路は、第1の選択回路の選択結果をラッチし、第2のラッチ回路の出力信号と第3のラッチ回路の出力信号とを選択する第2の選択回路と、を備えてもよい。
本発明の他の実施形態に係るデータ転送装置において、選択部におけるラッチタイミングの選択の設定と所定量とを変えながら、相手装置においてデータを出力させて受信データを取得することで該ラッチタイミングの選択を行う制御プロセッサを備えてもよい。
本発明の他の実施形態に係るデータ転送装置において、受信データを格納する位相調整用レジスタを備え、制御プロセッサは、位相調整時における位相調整用レジスタの値を読み出すことでラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送装置において、制御プロセッサの位相調整時における異常動作を防止する信号生成を行う返送信号生成回路を備えてもよい。
本発明の他の実施形態に係るデータ転送装置において、データ受信部は、複数の相手装置に対し共通のデータバスを介して接続され、複数の相手装置中のどの相手装置がデータバスを使用しているかに基づいてラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送装置において、データ受信部は、複数の相手装置のそれぞれに対応した受信データが相手装置に関わらず一定のタイミングで取得可能となるようにラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送装置において、クロック送出部は、データバスを使用している相手装置にのみ転送用クロック信号を送信してもよい。
本発明の他の実施形態に係るデータ転送装置において、転送用クロック信号を受信し、受信した転送用クロック信号に同期するデータを送信する装置内転送部を含み、データ受信部は、装置内転送部からのデータを転送クロック信号に同期してラッチする縦続接続される第4及び第5のラッチ回路をさらに備え、第5のラッチ回路の出力から受信データを取得するようにしてもよい。
本発明の他の実施形態に係るデータ転送装置において、転送用クロック信号の立ち上がりまたは立ち下りエッジに同期して送信データを相手装置に出力するデータ出力回路をさらに備えてもよい。
本発明の他の実施形態に係るデータ転送装置において、転送用クロック信号の立ち上がりまたは立ち下りエッジに同期して送信データを装置内転送部に出力するデータ出力回路をさらに備えてもよい。
本発明の他の実施形態に係るデータ転送方法は、転送用クロック信号を相手装置に送信するクロック送出部と、該相手装置から該転送用クロック信号に同期したデータを受信するデータ受信部と、を備えるデータ転送装置におけるデータ転送方法であって、転送用クロック信号を所定量遅延した遅延クロック信号の立ち上がりエッジまたは立ち下りエッジでデータをラッチし、ラッチ結果を受信データとして選択可能とする構成としてもよい。
本発明の他の実施形態に係るデータ転送方法において、データのラッチタイミングの選択の設定と所定量とを変えながら、相手装置においてデータを出力させて受信データを取得することで該ラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送方法において、データ転送装置は、複数の相手装置に対し共通のデータバスを介して接続され、該複数の相手装置中のどの相手装置が該データバスを使用しているかに基づいてラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送方法において、複数の相手装置のそれぞれに対応した受信データが相手装置に関わらず一定のタイミングで取得可能となるようにラッチタイミングの選択を行ってもよい。
本発明の他の実施形態に係るデータ転送方法において、データバスを使用している相手装置にのみ転送用クロック信号を送信してもよい。
本発明の更に他の実施形態に係るデータ転送装置は、スレーブLSIとの間にデータ転送を行うのマスタLSIと前記スレーブLSIとの間に介在させるデータ転送回路及び位相調整回路として構築してもよいものである。この場合、本発明の更に他の実施形態に係るデータ転送装置は前記マスタLSIに組み込まれるものである。本発明の更に他の実施形態に係るデータ転送装置は、マスタLSIからスレーブLSIに転送用のクロックを出力し、マスタLSIには転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、転送クロックの立ち上がりエッジに同期してデータをラッチしたものと立ち下りエッジに同期してデータをラッチしたものとを位相調整セレクタにより選択できるデータ入力回路と、を備えている。なお、スレーブLSIには、転送クロックのマスタLSI側のデータ出力回路とは逆の立ち下りまたは立ち上がりエッジに同期してデータをラッチするデータ入力回路と、転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、を備える。
また、本発明の更に他の実施形態に係るデータ転送装置は、マスタLSIからスレーブLSIに転送用のクロックを出力し、マスタLSIには転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、位相可変クロックの立ち上がりまたは立ち下りエッジに同期してデータをラッチするデータ入力回路と、を備える構成として構築してもよいものである。なお、スレーブLSIには転送クロックのマスタLSI側のデータ出力回路とは逆の立ち下りまたは立ち上がりエッジに同期してデータをラッチするデータ入力回路と、転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、を備える。
さらに、本発明の更に他の実施形態に係るデータ転送装置は、マスタLSIからスレーブLSIに転送用のクロックを出力し、マスタLSIには転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、転送クロックの立ち上がりまたは立ち下りエッジに同期してデータをラッチしたものと位相可変クロックの立ち上がりまたは立ち下りエッジに同期してデータをラッチしたものとを位相調整セレクタにより選択できるデータ入力回路と、を備える構成として構築してもよいものである。なお、スレーブLSIには転送クロックのマスタLSI側のデータ出力回路とは逆の立ち下りまたは立ち上がりエッジに同期してデータをラッチするデータ入力回路と、転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路と、を備える。
マスタLSI内データ入力回路が、マスタLSI内データ入力回路からのデータと、そのデータを転送クロックの立ち上がりエッジまたは立ち下りエッジに同期してラッチしたデータを位相調整セレクタにより再度選択できるようにしてもよい。
マスタLSI内の制御プロセッサが、マスタLSI内データ入力回路のラッチタイミング選択設定と、位相可変クロックを用いる場合はその位相設定とを変えながら、スレーブLSIからマスタLSIへのデータ転送を発生させ、データ入力回路からの出力を取得することで最適なラッチタイミング判定を行うようにしてもよい。
マスタLSI側のデータ入力回路からのデータを、位相調整時に順次格納する位相調整用レジスタを備えるようにしてもよい。
マスタLSI内の制御プロセッサが、マスタLSI内データ入力回路のラッチタイミング選択設定と、位相可変クロックを用いる場合はその位相設定とを変えながら、スレーブLSIからマスタLSIへのデータ転送を発生させ、位相調整用レジスタの値を読み出すことで最適なラッチタイミング判定を行うようにしてもよい。
位相調整時に、マスタLSI内に制御プロセッサの異常動作を防止する処理を行うデータ返送回路を備えるようにしてもよい。
複数のスレーブLSIを備え、LSI間のデータバスを複数のスレーブLSIで共用しているシステムにおいて、マスタLSI内データ入力回路が、どのスレーブLSIが前記データバスを使用しているかによって前記位相調整セレクタの設定値を切り替えるようにしてもよい。
マスタLSI内にもスレーブコアを備えるシステムにおいて、マスタLSI内データ入力回路が、スレーブコアからの転送データを転送クロックに同期して2回ラッチする回路を備えるようにしてもよい。
より具体的には、データ転送装置において、システム全体でのタイミング同期を取るため、マスタLSIから各スレーブLSI方向のみにクロック信号を転送し、LSI間のデータ転送はこの共通のクロック信号に同期して行う。また、このクロック周波数は、転送スループットを落とさないために実装置における要求性能を満たすクロック周波数を選択する。
マスタLSIからスレーブLSIへのデータ転送については、セットアップ時間およびホールド時間をLSI間の遅延時間に依存せずに確保できるように、マスタLSI側には転送クロックの立ち下りエッジに同期して出力するデータ出力回路を実装し、スレーブLSI側には転送クロックの立ち上がりエッジに同期して入力するデータ入力回路を実装する。また、これとは逆にマスタLSI側では立ち上がりエッジに同期して出力し、スレーブLSI側では立ち下りエッジに同期してラッチする回路構成であってもよい。つまり、マスタLSI側で出力データ用に用いたクロックエッジに対して、スレーブLSI側ではそれとは逆のクロックエッジを用いて入力データをラッチする回路構成を実装する。
スレーブLSIからマスタLSIへのデータ転送については、評価ボード等において配線遅延が想定値を越えてしまう場合に備え、スレーブLSI側から転送クロックの立ち上がりまたは立ち下りエッジに同期してデータを出力するデータ出力回路に対して、マスタLSI側では転送クロックの立ち上がりエッジ、立ち下りエッジ、1サイクル遅れの立ち上がりエッジなど複数のラッチタイミングを選択できる仕組みを実装し、どのラッチタイミングが選択されてもマスタLSI側内部回路へのデータ転送時には全て同じ転送タイミングになるようにデータ入力回路を構成する。
スレーブLSIからマスタLSIへのデータ転送における最適ラッチタイミングの選択(位相調整)時には、前述した複数のラッチタイミングより精度の細かい位相可変クロックを使用し、LSI外部において位相調整の判定結果(LSI間配線遅延)を、転送クロック周波数の数倍の精度でモニタできる仕組みも実装する。この位相可変クロックを用いてラッチした入力データを、制御プロセッサが読み出すことで最適ラッチタイミングの判定を実施する。
このようなデータ転送装置において、マスタLSIからスレーブLSI方向のみにクロックを転送し、全てのLSI間データ転送をこの転送クロックに同期させること、およびマスタLSI側の立ち下りエッジに同期したデータ出力回路、入力データのラッチタイミング選択回路によって、LSI間の配線遅延等に依存せずにシステム全体の時計や転送タイミングを合わせることが可能となる。
また、マスタLSIからスレーブLSIへは転送データと共に転送用のクロックも出力し、マスタLSI側でデータ出力用に用いたクロックエッジとスレーブLSI側でデータ入力用に用いるクロックエッジを逆にすることにより、LSI間の遅延時間に依存せずセットアップ時間およびホールド時間のマージンを確保することが可能となる。
さらに、スレーブLSIからマスタLSIへのデータ転送時には、マスタLSI側で入力データの最適なラッチタイミングを複数のタイミングから選択することができ、どのラッチタイミングが選択されてもマスタLSIの内部回路への転送時には同じ転送タイミングにできる。このようなデータ入力回路の構成により、LSI間の遅延時間に依存せず同期したデータ転送が可能となる。また、このようなデータ転送装置によれば、シミュレーションのような事前検証やボード評価において、ビット精度およびサイクル精度で実装置での動作と等価に行うことが可能となるため、検証精度が高くなることも期待できる。
また、実装置のみの配線遅延を考慮してクロック周波数を決定できることにより転送スループットの低下も防ぐことができる。さらに、位相可変クロックの使用によりラッチタイミングの判定基準が転送クロックの数倍の精度で得られるため、より最適なラッチタイミングを選択することも可能となる。
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は2007年7月24日に出願された日本出願特願2007−192025を基礎とする優先権を主張し、その開示の全てをここに取り込む。