プログラマブルロジックデバイス回路に結合されるクロックデータリカバリ回路
【課題】プログラマブルロジックデバイス上またはこれと結合して設けられるクロックデータリカバリ回路の提供
【解決手段】プログラマブルロジックデバイス(“PLD”)が多数のCDRシグナリングプロトコルのうちの任意のものによって交信することを可能にするため、このPLDにプログラマブルクロックデータ復元(“CDR”)回路を装備する。CDR回路は、PLD内に内蔵するか、完全あるいは部分的に独立した集積回路とすることができる。この回路は、CDR入力、CDR出力、またはそれらの両方を行うことができる。CDR機能は、例えば非CDR低電圧作動シグナリング(“LVDS”)等のその他の非CDRシグナリング機能と組合わせて提供することができる。この回路は、大規模なシステムの一部とすることができる。
【解決手段】プログラマブルロジックデバイス(“PLD”)が多数のCDRシグナリングプロトコルのうちの任意のものによって交信することを可能にするため、このPLDにプログラマブルクロックデータ復元(“CDR”)回路を装備する。CDR回路は、PLD内に内蔵するか、完全あるいは部分的に独立した集積回路とすることができる。この回路は、CDR入力、CDR出力、またはそれらの両方を行うことができる。CDR機能は、例えば非CDR低電圧作動シグナリング(“LVDS”)等のその他の非CDRシグナリング機能と組合わせて提供することができる。この回路は、大規模なシステムの一部とすることができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はクロックデータリカバリ回路に係り、より具体的にはプログラマブルロジックデバイス上にまたはこれと結合して設けられるクロックデータリカバリ回路に関する。
【背景技術】
【0002】
重要性が増しているデバイス間のシグナリングタイプとして、クロック信号情報がシリアルデータ流の中に埋め込まれ独立したクロック信号を伝送する必要が無くなるシグナリングが挙げられる。例えば、データは所与のパターンのバイナリ1およびバイナリ0からなるいくつかのトレーニングビットを含んだシリアル“ヘッダ”が先行する連続するいくつかのシリアルデータワードのパケットとして直列に伝送することができる。クロック信号はその信号内のハイローおよび/またはローハイ転換群の中に埋め込まれ、これは特定数のクロック信号サイクルの間に少なくとも1つのハイローまたはローハイ遷移(transition)を含んでいなければならない。レシーバにおいてデータ信号内のデータを適宜に処理するためにデータ信号の中からクロック信号が“復元”される。利便性のためここではこのシグナリングを総称して“クロックデータリカバリ”または“CDR”と称する。
【0003】
CDRシグナリングは、今日多数の異なったシグナリングプロトコルの中で使用されている。これらのプロトコルは、クロック信号周波数、ヘッダ構成、パケットサイズ、パラレルチャンネル数等に従って異なるものとなる。
【0004】
プログラマブルロジックデバイス(“PLD”)は、例えばクリフ氏等の米国特許第5689195号公報、クリフ氏等の米国特許第5909126号公報、1999年3月10日出願のジェファーソン氏等の米国特許出願第09/266235号、ならびに2000年3月2日出願のガイ氏等の米国特許出願第09/516921号等によって知られている。一般的に、PLDは広範囲のロジックタスクのうちの任意のものを実行するためにプログラムすることが可能な汎用集積回路デバイスである。異なったロジックタスクを実行するために独立した回路を設計して構成するよりも、これらの多様なロジックタスクを実行するようにPLDを多様な方式でプログラムすることができる。多くの製造業者は、製造が必要な多様な構成要素を提供するためにPLDは好適な手段であると考えている。
【0005】
CDRシグナリングは、常に多数の異なったCDRプロトコルごとに固有であるCDRトランスミッタおよびレシーバを設計および構成することを避けながらPLDを使用し得るために極めて重要な部分である。
【発明の概要】
【課題を解決するための手段】
【0006】
本発明によれば、CDRレシーバ回路、CDRトランスミッタ回路、および/またはCDRレシーバ回路とCDRトランスミッタ回路の両方を備えることができるCDR回路が提供される。本発明のCDR回路は少なくともいくつかの点でプログラム可能であるとともに、より従来型のPLD回路とともに集積回路上に装備することができるか、または独立した集積回路上に少なくとも部分的に含まれるものとすることが好適である。CDR回路が独立した回路上に少なくとも部分的に含まれる場合、より従来型のPLD回路への効率的な結合を実行することができるよう構成することができる(例えば、一般的なPLDとのパッケージ)。
【0007】
本発明に係るCDRリカバリ回路は、処理すべきCDRデータ信号源あるいはその他の好適なクロック信号源から、独立したかつ追加的な基準クロック信号を受信することが好適である。基準クロック信号の周波数は、CDRデータ信号の周波数に対して既知の相関性を有しているが、CDRデータ信号と同位相である必要ことは必要ない。独立した基準クロック信号の必要性は典型的なCDRシグナリングとは相違しているが、これによって本発明に係る回路が広範なCDR周波数のうち任意のもので動作するようプログラム可能になることを補助する。独立した基準クロック信号がCDRデータ信号に対して特別な位相関係を有する必要がないため、基準クロック信号とCDRデータ信号間に生じ得るスキュー(すなわち位相シフト)に関する制限は存在しない。(スキューに関連する問題はCDRシグナリングを使用する動機の一つであり、これはCDRシグナリングによってクロック信号がデータ信号内に埋め込まれ、このためデータ信号に対してスキューが生じることがあり得ないためである。)CDRレシーバ回路はCDRデータ信号から埋め込まれたクロック信号を復元するために基準クロック信号とCDRデータ信号を使用する。このCDRデータ信号クロックの復元に使用する種々のパラメータは、プログラム可能であることが好適である。復元されたクロック信号は、好適にはワード長パラメータ等のプログラム可能なパラメータを使用してCDRデータ信号を非直列化するために使用される。その後非直列化されたデータは、異なったクロックレジームで処理するために同期化またはバッファリングされる(例えば、CDR回路に結合されているより従来型のPLD回路内のクロック信号に従って)。
【0008】
本発明に係るCDRトランスミッタ回路も、伝送されるCDRデータ信号の宛先からあるいはその他の好適な基準クロック信号源から、独立したかつ追加的な基準クロック信号を受信することが好適である。この基準クロック信号は、前述したCDRレシーバ回路によって使用される基準クロック信号と同様な特徴を有している。伝送されるデータのソースは、CDRトランスミッタ回路と結合された従来型のPLD回路とすることができる。伝送されるデータはいくつかのパラレルビットからなる連続するワードとして表示することができる。このデータの多様な特徴(ワード周波数、ワード長等々)は選択可能(すなわちプログラム可能)とすることが好適である。この段落で述べた基準クロック信号は、好適にはプログラム可能なパラメータに従って処理することができ、その後CDRトランスミッタ回路内に伝送されるデータ流を同期化するために使用することができる。処理された基準クロック信号も、好適にはプログラムによって選択可能なワード長パラメータに従って、伝送されるデータの各ワードのビットを直列化するために使用することができる。
【0009】
前述したプログラム可能の観点において、本発明に係るCDRレシーバおよび/またはトランスミッタ回路はその他の点に関してもプログラム可能とすることができる。例えば、CDR回路は任意の数のCDRデータレシーバおよび/またはトランスミッタサブ回路を並列して動作させる性能を備えることができる。別の例として、CDR回路は任意の数の異なった基準クロック信号を並列に処理し従って任意の数の異なったCDRレシーバおよび/またはトランスミッタを動作させる能力を有することができる。
【0010】
本発明の回路は、さらに非CDR低電圧差動シグナリング(“LVDS”)等の他の非CDRシグナリング形式をサポートようプログラムすることもできる。本発明の回路は、回路の種々の部分をリセットするために使用し得るロック欠如(los of lock)およびランレングス違反(violation)信号等の信号を提供するように構成することもできる。回路の様々な部分のリセットおよび/またはパワーダウンを実行するための回路も提供される。回路の様々な部分のテストを実行するために、回路内において種々のタイプのテストループを選択的に形成する回路も提供することができる。特定の動作モードにおいて基準クロック信号をプログラムによって変更するための回路を提供することもできる(特にプログラマブルロジックデバイスによる基準クロック信号出力)。
【0011】
本発明はPLDによってCDRデータを処理することを促進するため、PLDのロジックを任意のプロトコルに従って(例えば、バイト配列、カンマディテクト、ワード長、その他のレシーバ側のデータのデコーディングおよび/またはトランスミッタ側のデータのエンコーディング特性等に従って)データを処理するために使用することができる。従って、このCDRとPLDの組合せは極めて効果的なものとなる。
【0012】
本発明のその他の構成要素、特徴および種々の利点は、添付図面を参照しながら以下に記述する好適な実施例の詳細な説明によって明らかにされる。
【図面の簡単な説明】
【0013】
【図1】本発明に係るCDRシグナリング装置の説明的な実施例を示す簡略化された概略ブロック線図である。
【図1A】本発明に係るCDRシグナリング装置の別の実施例を示す簡略化された概略ブロック線図である。
【図2】図1の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図3】図2の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図4】図1の本発明に係る装置の説明的な実施例の別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図5】図1の本発明に係る装置の説明的な実施例のさらに別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図6】図1の本発明に係る装置の説明的な実施例のさらに別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図7】本発明に係るCDRシグナリング装置の別の実施例を示す簡略化された概略ブロック線図である。
【図7A】本発明に係るCDRシグナリング装置のさらに別の実施例を示す簡略化された概略ブロック線図である。
【図8】図7の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図9】図7の本発明に係る装置の説明的な実施例の別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図10】本発明の以上の図面に示された特徴ならびにその他特徴を組合わせたプログラマブルロジックデバイスの説明的な実施例の代表的な部分を示す簡略化された概略ブロック線図である。
【図10A】本発明に係る図10の回路内に含まれることができる回路の説明的な実施例を示す簡略化された概略ブロック線図である。
【図10B】本発明に係る図10の回路内に含まれることができる別の回路の説明的な実施例を示す簡略化された概略ブロック線図である。
【図10C】本発明に係る図10の回路の代表的な部分の可能な変更の説明的な実施例を示す簡略化された概略ブロック線図である。
【図11A】本発明に係る図10に示される形式の回路の代替的な実施例を示す簡略化された概略ブロック線図である。
【図11B】本発明に係る図10に示される形式の回路の別の代替的な実施例を示す簡略化された概略ブロック線図である。
【図11C】本発明に係る図10に示される形式の回路のさらに別の代替的な実施例を示す簡略化された概略ブロック線図である。
【図12】本発明に係る回路を使用するシステムの説明的な実施例を示す簡略化された概略ブロック線図である。
【図13A】図11Bの回路の代表的な部分の説明的な実施例をより詳細に示す簡略化された概略ブロック線図である。
【図13B】図11Bの回路の別の代表的な部分の説明的な実施例をより詳細に示す簡略化された概略ブロック線図である。
【発明を実施するための形態】
【0014】
図1には、本発明に係るCDRシグナリング装置10の説明的な実施例が示されている。この装置はCDR信号源(ソース)20とレシーバ40とから構成されている。要素20と40は同一の集積回路上に設けることができるが、これは一般的なケースを示したものであり、これらは集積回路または回路アセンブリのより典型的な各部分である。例えば、図12に示されているようなシステムにおいて、レシーバ40は要素500/600の一部であるのに対し、ソース20はその他の要素(要素群)1004,1006,1008および/または1010の一部とすることができる。
【0015】
CDR信号源20は基準クロック信号源22とCDRデータ信号源30を備えており、このCDRデータ信号源は従来型のものまたは実質的に従来型のものとすることができる。基準クロック信号源22は、CDRデータ信号源30によって形成されるCDRデータ信号内に埋め込まれたクロック周波数に対して正確な周波数相関性を持った基準クロック信号を形成する。例えば、基準クロック信号源22は、CDRデータ信号内に埋め込まれたクロック周波数と同じ周波数かまたは適宜な分数あるいは倍数の周波数を有する基準クロック信号を形成することができる。特に、基準クロック信号周波数REFCLKは埋め込まれたクロック周波数EMBCLKに対して以下の相関性を有し:
REFCLK*W=EMBCLK
ここでWは0.5,1,2,4等の適宜なスケールファクタとすることができる。要素22と30の間の点線はこれらの要素の出力の間に周波数相関性があることを示しており、従ってソース22によって形成される基準クロック信号の周波数(またはこの信号の任意の分数あるいは整数倍の周波数)がCDRデータ信号の周波数を確立するために要素30によって使用され得る。しかしながら、要素20と30の出力信号の間に特定の位相関係が存在する必要はない。
【0016】
基準クロック信号源22の出力信号は一般的な差動シグナリングドライバ24に付加されリード26aおよび26b上にペアの差動REFCLK出力が形成される。(オプショナルとして、必要であれば要素20と40の間において基準クロック信号を単一の信号として単一のリード上で伝送することもできる。)
【0017】
前述したように、CDRデータ信号源30は従来型のCDRデータ信号源とすることができる。この信号は一般的な差動シグナリングドライバ32に付加されリード34aおよび34b上にペアの差動CDR出力信号が形成される。(ここでも再びCDRデータ信号の差動シグナリングはオプショナルであり、CDRデータ信号は要素20と40の間において単一のリード上で伝送することもできる。)
【0018】
レシーバ40においてリード26aおよび26b上の差動REFCLKは一般的な差動ドライバ42に付加され、この受信したREFCLKを変換して単一リード上の信号に戻しCDR回路50に付加する。同様に、リード34aおよび34b上の差動CDRデータ信号は一般的な差動ドライバ44に付加され、受信したCDRデータ信号を変換して単一リード上の信号に戻しCDR回路50に付加する。
【0019】
CDR回路50は、受信したREFCLKとCDRデータ信号を使用してCDRデータ信号からクロック信号とデータ信号を抽出する。これらの信号はデシリアライザ60に付加され、これは付加された直列データを並列データに変換する。並列データ信号はCDR回路50によって形成されたクロック信号と同期させてシンクロナイザ70に付加する。シンクロナイザ70は、並列データをバッファしてPLDコア80によってシンクロナイザ70に供給される別のクロック信号82に同期させてPLDコア80に最終的に付加する。
【0020】
図1AにはCDRシグナリング装置10′の代替的実施例が示されており、これにおいてはレシーバ40によって使用される基準クロック信号源22′がCDR信号源20′から分離されている。CDR信号源20′は、基準クロック信号をレシーバ40に送信するための図1に示された要素24に相当する要素を備えていない点を除いて基本的に図1のCDR信号源20と同様なものである。これに代えて、独立した基準クロック信号源22′がリード26a′および26b′を介して基準クロック信号をレシーバ40に送信する。基準クロック信号源22′は図1の基準クロック信号源22と類似のものとすることができ、図1のソース22に対して述べた全てのものが図1Aのソース22′対して同様に適用することができる(勿論、ソース22′がソース20′から独立しておりソース30に対して入力またはクロック基準を提供しない点は除く)。加えて、ソース22と22′の間には正確で既知の周波数相関性が必要であるが(再び、これらの周波数間には0.5,1,2,4等のスケールファクタが存在し得る)、これらのソースの周波数は同一である必要は無いとともにソース22と22′の間に特定の位相相関性がある必要は無い。図1Aのレシーバ40は図1のレシーバ40と同等なものとすることができる。
【0021】
図1Aに示されているタイプの構成はソース20′とレシーバ40とが比較的遠くに離間している場合に使用することができ、大きく離れた要素20′と40との間においてCDRデータリード34と基準クロックリード26の両方を動作させることを不要にし得る。この場合、ソース22′はレシーバ40に対して比較的に近接して配置することができ、従ってリード34のみを比較的長くする必要があり、他方リード26′は比較的短いものとすることができる。特徴的な説明として、要素20′および40はそれぞれ異なった領域に設けることができ、ソース22′はレシーバ40の近くに設け従ってCDRデータ信号34自体のために領域間リンクのみが必要となる。(これに関して、リンク34,26,26′のいずれかを代替的に単一信号とすることができ、これらは代替的にワイヤ線等のその他の手段によって(全体的または部分的に)伝送することができることに着目すべきである。例えば、これらは全体的または部分的に無線、光線、またはその他の好適な方式で伝送することができる。これと同じことが、図7および図7Aに示されているようなその他の実施例においても伝送ことが必要な信号に対して有効である。)
【0022】
図2には、CDR回路50の部分100の実施例がより詳細に示されている。回路100は基本的に位相ロックループ(“PLL”)回路であり、従って場合によってそのように呼称することがある。PLL100は位相周波数検出器(“PFD”)回路110を備えており、これは図1のバッファ42によるREFCLKならびにWプリスケーラ回路の出力信号を受信する。PFD110は従来型のものとすることができ、受信した2つの信号の位相と周波数を比較してREFCLK信号の位相および周波数がより適正に一致するためにプリスケーラ140の出力信号がスピードアップすべきかまたはスローダウンすべきかを示す信号を出力する。チャージポンプ回路120(これも従来型のものとすることができる)はPFD110の出力信号を積算してVCO電流制御信号を形成し、これは電圧制御発振器(“VCO”)130の出力信号(Wプリスケーラ140によって処理された後)が位相および周波数に関してREFCLK信号により適正に一致するような方式でVCO130を制御するために適したものである。VCO130の出力信号はWプリスケーラ140に付加され、これはVCO出力信号をスケールファクタWで除算しPFD110に付加される2つの信号のうちの一つを形成する。スケールファクタWは、前述したREFCLKとEMBCLKの相関において使用したものと同一の数値とされる。Wプリスケーラ140は、いくつかのW数値のうちのいずれかを使用して動作するようプログラム可能であるか、またはその他の方式によって制御可能であることが好適である。例えば、所要のW値をレシーバ40の一部分である1つまたは複数のプログラム可能な機能制御要素(“FCEs”)内に記録することができる。
【0023】
PLL100の説明から、この回路の動作はVCO130がEMBCLK周波数に殆ど一致する周波数で動作することを誘起するものであることが明らかである。VCO130は8個のクロック信号を出力し、これらは全てEMBCLK周波数を有しているが相互に位相シフトしており、従ってこれらは全体としてEMBCLK信号の周期を8個の同等な時間インタバルに分割している。VCO130は、広範な動作周波数で動作することを補助するためにプログラム可能とするかまたはその他と方式によりD信号によって制御可能とすることができる。例えば、D信号はVCO100の“荒”調整と呼ばれるような制御を行い、一方チャージポンプ120からのVCO電流制御信号はVCOの“細密”調整のためのものである。所要のD値は、レシーバ40の一部分である1つまたは複数のプログラマブルFCE内に記憶することができる。
【0024】
図2に示されたリセット信号はPLL100をリセットして制御された方式による始動を許可することを可能にする。例えば、PLL100内において同期ロック喪失(ロス・オブ・ロック)状態が検出された場合にPLL100のリセットが必要あるいは要望されるものとなる。(種々のリセット動作のこれらおよびその他の特徴はこの明細書において後により詳細に説明される。)リセット信号はチャージポンプ120、VCO130、およびWプリスケーラ140をリセットする。W、D、およびリセット信号は全てPLDコア80から送信される(図1)。
【0025】
図2に示されているパワーダウン信号は、PLL100が使用されない場合にこれをターンオフすることを可能にする。このことはパワーダウン信号によってVCO130への電流をターンオフすることによって実施される。このことは、以下に詳細に記述する図3に示されたVCO130構成例において、電流源131をターンオフしその結果差動ドライバ132への電流をターンオフすることによって実施することができる。パワーダウン信号はPLL100に結合されたFCEから送信することができる。このようにしてPLL100をターンオフすることによってPLLが使用されない場合に電力を節約することができる。
【0026】
図3には、VCO130の説明的な構成の一部がより詳細に示されている。差動ドライバ132a−dは閉ループ列として相互接続される。このループの1つの完全な回路を作成するための信号伝達(正式なまたは補完的なパスを介して)に必要とされる時間は、クロック信号の周期の半分である。各ドライバ132が動作する速度、従ってループの信号伝達速度は、(少なくともある程度は)電流源131からドライバに提供される電流量によって決定されるものとなる。(図2に関連して前述した)D信号は、電流源131が動作するいくつかの電流レンジのいずれか1つをプログラムによって選択するために使用することができる。従ってD信号は前述した電流源131ならびにVCO130の“荒”調整を制御する。(図2のチャージポンプからの)VCO電流制御信号は、電流源131によって提供される電流の追加的な動的制御を実施する。特に、VCO電流制御信号は電流源131によって提供される電流をD信号によって選択されたいずれかのレンジ内において調節する。このようにしてVCO電流制御信号は電流源131ならびにVCO130の動的な“細密”制御を実施する。(同様に図2に関連して説明したパワーダウン信号はPLL100が全く使用されないケースにおいて電流源131をプログラムによってターンオフするよう使用し得る。)
前述した説明から、(D信号を使用して選択される、可能ないくつかの周波数レンジいずれかの範囲において)クロック信号の周波数はVCO電流制御信号を変化させることによって上昇または低下させることができることが理解される。ドライバ132の閉ループを通じた真または補のパスは、全体としてクロック信号周期を8つの等時間インタバルに有効に分割する8つの点においてタップされる。これらの8つの点における信号は、前述した8つの等間隔で位相シフトされたクロック信号として出力される。
【0027】
VCO130内において差動ドライバ132に代えてシングルエンド型のドライバを使用することもできるが、いくつかの理由のため差動ドライバの方が好適である。それらの理由のうち1つは、差動ドライバはノイズが少ない傾向があるためである。差動ドライバはより小さな入力信号振幅において動作するよう形成することがより簡単である(例えば、3Vの代わりに300mV)。差動ドライバはさらにより簡単に高速化することができ、より効果的にジッタを防止し、ノイズに対する抵抗力もより高いものである。VCO130に差動ドライバを使用することが好適である別の理由は、VCOによって差動出力信号が必要とされるからである。前述した電流制御に代えてVCO130の電圧制御を使用し得ることは勿論であるが、現状において電流制御が好適である。
【0028】
CDR回路50の別の部分150の実施例が図4に示されている。少なくとも特にアナログ回路において有利であるPLL100と異なって、図4に示された回路150はデジタル回路とすることが好適である。デジタルであるとともに位相ロックループのごとく動作するため、回路150は本明細書においてデジタル位相ロックループ(“DPLL”)回路150と称することもある。
【0029】
DPLL150は、(図1のドライバ44からの)CDRデータ信号とマルチプレクサ190によるクロック出力信号の両方を受信する位相検出器160を備えている。以下により詳細に説明するように、マルチプレクサ190の2つの出力のうちのいずれか1つはCDRデータ信号の立ち上がりエッジと比較することを目的としており、マルチプレクサ190の2つの出力のうちの他の1つはCDRデータ信号の立ち下りエッジと比較するためのものである。位相検出器160は受信した信号の位相を比較し、CDRデータ信号内のトランジション位相と共により有効に動作するためにクロック信号をスピードアップする必要がある場合にUP出力信号パルスを形成し、CDRデータ信号内のトランジション位相と共により有効に動作するためにクロック信号をスローダウンする必要がある場合にはDOWN出力信号パルスを形成する。これらのUPおよびDOWN信号パルスは位相補間ステートマシン162に付加される。
【0030】
位相補間ステートマシン162は、UPおよびDOWN信号のそれぞれに対して内部状態を変更することによって応答する。しかしながら、ステートマシン162は、受信した全てのUPまたはDOWN信号パルスに応答して出力信号を形成するわけではない。代わりに、ステートマシン162は、受信した信号内に所定の傾向が見られた後のみにさらなるUPまたはDOWN信号パルスを出力する。言い換えると、ステートマシン162はデジタルローパスフィルタのように動作し、図4の回路の残り部分が位相検出器160によって形成される極短時間の位相不整合表示に過剰に速く反応することを防止する。従ってステートマシン162は、図4に示された回路に所要の待ち時間をもたらす(回路162のデバッグ出力はオプショナルのものであり、必要であれば回路の性能を監視するために使用される。)
【0031】
ステートマシン162によって出力されるUPおよびDOWN信号パルスは、UP/DOWNカウンタおよびデコーダ回路164によってカウントおよびデコードされる。(回路164のデバッグ出力信号もオプショナルであり、さらに回路性能を監視するためのものである。)回路164の出力のうちのいくつかはクロックマルチプレクサ回路170によって使用され、(1)PLL100からの8個のクロック信号のうちCDRデータ信号の立ち上がりエッジに最も適合して動作する2つを選択し、PLL100からの8個のクロック信号のうちCDRデータ信号の立ち下がりエッジに最も適合して動作する2つを選択する。前述の説明により、選択されたクロック信号のそれぞれは位相に関して直ぐ隣接(8個のクロック信号の中にある8個の位相の中から)している信号を含むことが明らかである。さらに、各ペアの信号のうちのそれぞれが別のペアの中の信号のそれぞれ1つに対して位相が180°離れていることが理解される。従って、8個の入力クロック信号の中から、回路170は4個の出力クロック信号を動的に選択する。例えば、8個の入力クロック信号について位相順に0−7の番号を付けると、回路170は一定の時間周期の間にCDRデータ信号の立ち上がりエッジに最も適合して動作するものとしてクロック信号0および1を選択し、CDRデータ信号の立ち下がりエッジに最も適合して動作するものとしてクロック信号4および5を選択する。回路170によって選択された4つのクロック信号は、アナログ補間回路180ならびにデジタル補間回路182に付加される。デバイスの使用者は、これら2つの補間回路のうちいずれを使用するかを選択することができる。
【0032】
アナログ補間回路180は、回路170から受信した各クロック信号のペア内の2つのクロック信号間の時間インタバルを8個の等しいサブインタバルに分割するよう動作する。アナログ補間回路180はさらに回路164の出力信号を受信し、これは各ペアのクロック信号に対して前記サブインタバルのうち1つを選択するとともにこのサブインタバルと同期するシフトされたクロック信号を形成するよう補間回路を制御する。選択されたサブインタバル(およびシフトされたクロック信号)は、CDRデータ信号内の立ち上がりまたは立ち下がりエッジのうち適宜の1つに最も適合して動作するものである。従って、アナログ補間回路180によって形成された2つのシフトされたクロック信号は、それぞれCDRデータ信号内の立ち上がりエッジまたは立ち下がりエッジとともに動作するように最適化(または殆ど最適化)されたものである。マルチプレクサ190はこれらの2つの信号を位相検出器160にフィードバックするようプログラムによって制御する(FCEによって)ことができる。マルチプレクサ190の立ち上がりエッジと共に動作する信号出力は図4の回路の復元されたクロック出力信号でもある。位相検出器160は、その他の機能(前述された)に加えて、マルチプレクサ190によってフィードバックされた信号のうち1つによってクロックされるレジスタにCDRデータ信号を伝送し、図4のリタイムされたデータ出力信号を形成する。このリタイムされたデータ出力信号は、本発明の装置によってさらに(復元されたクロック信号を使用して)処理されるデータ信号である。
【0033】
次にデジタル補間回路182を参照すると、回路170によって出力された2つのペアのクロック信号を受信し、回路164からの制御信号に基づいて各ペアの中からより好適なタイミングを有する1つの信号を選択する。マルチプレクサ190は、回路182によって選択された2つの信号を前述した使用目的(回路180の出力信号の代わりに)のために出力するよう制御され得る。
【0034】
図4に示されたリセット信号は、一般的に図2のリセット信号と同じ目的を有している。従って、DPLL150をリセットすることが必要あるいは要望される(例えばロックの喪失状態が検出されて)場合、要素162,164,180および182をリセットするようリセット信号が発行される。図2のリセット信号と同様に、図4のリセット信号もPLDコア80(図1)から発信される。
【0035】
図4に示されたパワーダウン信号は、DPLL150が使用されない際に全ての8個の入力クロック信号をゲートオフするよう使用される。入力クロック信号の全てをゲートオフすることによって、図4の回路は全く動作せず従って電力を極僅かに消費するかあるいは全く消費しない。
【0036】
前述の説明から、適宜な動作周期の後、DPLL150の出力信号が図1のドライバ44によって受信されたCDRデータ信号内に埋め込まれたクロック信号と実質的に等しい位相および周波数を有することが理解される。適正な周波数はPLL100によって確立され、これはさらにその周波数を有するとともにいくつかの異なった候補位相を有するクロック信号の一群を形成する。DPLL150は最適な候補位相(マルチプレクサ170の出力信号)を取り出し、その後候補の間で適正な調節または選択を実施することによって位相選択をさらに改善する。DPLL150は、さらにPLL出力と入力されたCDRデータ信号内に埋め込まれたクロック情報との間に生じ得る比較的小さな相違にも留意することができる。言い換えると、DPLL150は、充分なCDRデータ伝送を妨害することなくこのような比較的小さな周波数相違が存在することを可能にする。この能力は、図1Aに示されているように実際のCDRクロックとREFCLK信号に対して異なったソース22および22′が使用される実施例の動作を補助するものである。
【0037】
図5には、デシリアライザ60(図1)の説明的な実施例がより詳細に示されている。この実施例において、デシリアライザ60は、マルチステージシフトレジスタ200とマルチステージパラレルバッファレジスタ210とプログラマブルディバイダ220とを備えている。例えば、レジスタ200および210のそれぞれは20のステージを有し、ディバイダ220は付加されたクロック信号を1ないし20の選択可能な複数の数値Jのいずれかによって除算する(1つまたは複数のFCEを使用して)ようプログラムすることができる。DPLL150(図4)からのリタイムされたシリアルCDRデータは、シフトレジスタ200のシリアルデータ入力に付加される。シフトレジスタ200はさらにDPLL150からの復元されたクロック信号を受信する。従って、シフトレジスタ200は、EMBCLKのレートかつCDR信号内に埋め込まれたクロック信号情報と完全に同期してシリアルデータをいくつかのステージにシフトする。
【0038】
各タイムディバイダ220はJの数値と等しい数のクロックパルスを受信し、ディバイダ220の出力信号は、バッファレジスタ210がクロック信号に応答してシフトレジスタ200の水平方向に隣接するステージの内容を記憶することを可能にするレベルに転換する。言い換えると、シフトレジスタ200はデータをシリアルに記憶し、バッファレジスタ210はシフトレジスタ200の内容を周期的かつパラレル受信および記録する。Jはデシリアライザ60によって出力される各ワードの長さ(すなわちワードごとのビット数)である。デシリアライザ60の別の出力信号は、Jによって除算されたクロック信号(すなわちCLK/J)である。
【0039】
図5に示されているJおよびリセット信号はPLDコア80(図1)から提供される。前述した他のリセット信号と同様に、図5のリセット信号は回路をリセットすることが必要あるいは要望される場合にディバイダ220をリセットするよう使用される(例えば、ロックの喪失が検出されたことによって)。
【0040】
図6には、シンクロナイザ70(図1)の説明的な実施例がより詳細に示されている。この実施例において、シンクロナイザ70はRAMアレー250と書き込みアドレスロジック260と読み取りアドレスロジック270とを備えている。これらの要素は独立した読み取りおよび書き込みを備える先入れ先出し(“FIFO”)メモリとして動作する。書き込みアドレスロジック260は、基本的にデシリアライザ60(図5)によって出力されたCLK/J信号内のパルス数を(繰り返しサイクルで)カウントするリングカウンタとすることができる。従って、書き込みアドレスロジック260は、CLK/J信号内のパルスと同期して繰り返しサイクルで、連続するワード記憶ロケーションをRAMアレー250内にアドレスする。ENW信号が適正なレベルを有していると仮定すると、RAMアレー250はデシリアライザ60からの信号内のデータを受信および蓄積するよう付勢される。このようにして、デシリアライザ60から提供された連続するパラレルデータワードは、RAMアレー250内の連続するワード記憶ロケーションに蓄積される。前述したようにRAM250への書き込みはENW信号によって選択的に付勢され、この信号はPLDコア80(図1)から提供することができるとともに、RAMアレー250がFULL出力信号(以下に説明する)を形成するまで付勢する。
【0041】
読み取りアドレスロジック270は書き込みアドレスロジック260とは別のリングカウンタとすることができる。しかしながら、読み取りアドレスロジック270は、デシリアライザ60からのクロックパルスをカウントする代わりにPLDコア80(図1)によって形成されたクロックパルス(CORECLK)をカウントする。従って、読み取りアドレスロジック260はENR信号によって読み取りが付勢されている限りRAM250内の連続するロケーション(このロケーションはCORECLKと同期して繰り返しアドレスされる)からデータワードを読み取ることを誘起する。ENW信号と同様にENR信号も通常PLDコア80(図1)から提供され、特にRAMアレー250がEMPTY出力信号(以下に説明する)を形成しない限り付勢を行う。RAMアレー250から読み取られるデータワードはPLDコア80に付加される。
【0042】
前述した説明から、RAMアレー250とこれに結合された要素が可能な2つのクロックレジーム(すなわちCDRクロックおよびPLDコアクロック)の間でデータをバッファすることが理解される。例えば、データワードのPLDコア処理は、時々入力されたCDRデータ流に遅れることがあり得る(例えば、割り込みの最中あるいはシンクロナイザ70に付加されたCORECLK信号のスローダウンに際して)。その後PLDは入力されるCDRデータ流に追いつくためにデータをより高速に処理することができる。RAMアレー250(または結合された要素)は、PLDコア80に付加されるFULLおよびEMPTY信号を形成し、RAMアレーが充満または空状態である際にこれをそれぞれPLDコアに伝達することができる。例えば、FULL信号に応答してPLDコア80はシンクロナイザ70からのデータの読み取りをスピードアップするか、および/または使用者がFULL信号に応答してENW信号を使用することによってPLDコア80にRAMアレー250への新たな書き込みを中止させることを選択できる。EMPTY信号に応答してPLDコア80はシンクロナイザ70からのデータの読み取りをスローダウンするか、および/または使用者がFULL信号に応答してENR信号を使用することによってPLDコア80にRAMアレー250からの新たな読み取りを中止させることを選択できる。
【0043】
図6に示されたリセット信号は、回路をリセットすることが必要または要望される際(例えば、ロックの喪失の検出に応答して)にRAMアレー250の内容を消去するために使用される。前述した他のリセット信号と同様に、図6のリセット信号もPLDコア80(図1)から提供することができる。
【0044】
図7には、本発明に係る別のCDRシグナリング装置300の説明的な実施例が示されている。再び、主要な構成要素310および320は同一の集積回路上に設けることができるが、これらはより典型的には分離された集積回路または回路アセンブリの一部とされる。例えば、図12において、要素320は要素500/600と結合することができ、一方要素310はその他のいずれかの要素1004,1006,1008および/または1010と結合することができる。
【0045】
装置10において、PLDコア80はCDR信号のレシーバ40と結合されている。装置300において、PLDコア80はCDR信号のトランスミッタ320に結合される。ここで再び、CDRクロック信号の周波数に関して広範なレンジが予想されるCDRレシーバ310と交信し得るプログラム可能なPLDベースのトランスミッタの提供を達成するために、装置300はレシーバ310内に基準クロック信号源22を備えている。要素22,24,26,42および100はいずれも図1および図2の同一参照符号の要素と類似のものである。従って、基準クロック信号源22の出力信号の周波数(REFCLK)は所要のCDRクロック信号周波数(EMBCLK)に対して以下の相関性を有しており:
REFCLK*W=EMBCLK
ここでWは0.5,1,2,4等の適宜なスケールファクタとすることができる。この基準クロック信号は図1に関連して記述したようにトランスミッタ320に伝送される。トランスミッタ320内のPLL100は図2に関連して記述したようにこの信号を処理し、所要のCDRクロック周波数に正確に等しい周波数を有する出力信号を形成する。この信号は図2の出力と同様に8個のクロック信号のうち1つとすることができ、これはこの信号の位相が重要ではないからである。(以下により詳細に記述するように、一般的なCDR信号レシーバ350は位相多様型であり、従って特定の位相を有する受信CDR信号に束縛されることはない。)
【0046】
PLL100によって形成されるCDRクロック信号(または以下に詳細に記述するようにこの信号の数倍のもの)は、シンクロナイザ330ならびにシリアライザ340に付加される。シンクロナイザ330もPLDコア80からデータおよびクロック信号を受信する。シンクロナイザ330は、受信した信号をコア80からのデータをCDRクロック信号に同期させて出力するために使用する。シリアライザ340は通常パラレルであるシンクロナイザ330からのデータを通常シリアルであるCDRデータに変換する。シリアライザ340によって出力されたシリアルCDRデータは、一般的な差動ドライバ342、リード344aおよび344b、ならびに一般的な差動ドライバ346を介してCDR信号レシーバ350に伝送される。(要素342,344および346は、それぞれ図1の要素24,26および42と類似のものとである。図1の場合と同様に差動シグナリングはオプショナルのものである。)一般的なCDR信号レシーバ350は、受信したCDR信号内に埋め込まれたクロック情報を使用して一般的な方式によってこの信号からデータを抽出する。
【0047】
図1に示された装置と同様に、図7の装置は広範なCDR周波数のうちいずれか1つにおいて動作することができる。CDRシグナリングにおいては一般的でないが、レシーバ310内の基準クロック信号源22を使用してトランスミッタ320に基準クロック信号を提供することにより、広範なCDR周波数をサポートするようプログラム可能な総合的なトランスミッタ装置を提供することができる。
【0048】
図7Aには図7に示された回路の代替的な実施例が示されている。図7および図7Aの実施例の関係は、図1および図1Aの実施例の関係と同様である。図7Aは、基準クロック信号源22′をレシーバ310′から分離し得ることを示している。(他の点においてソース22′はソース22と同様である。)図1Aの場合と同様に、トランスミッタ320に近接するものとし得る分離されたソース22′を提供することによって、要素310′と320を互いに比較的大きく離間して配置することができ、これはCDRデータ信号のみ(REFCLK信号は不要)を要素310′と320の間において比較的遠距離を介して伝送する必要があるためである。
【0049】
図8には、シンクロナイザ330の代替的な実施例がより詳細に示されている。この実施例においてシンクロナイザ330は、RAMアレー360、書き込みアドレスロジック370、クロックディバイダ380、および読み取りアドレスロジック390を備えている。RAMアレー360は、PLDコア80(図7)から書き込みアドレスロジック370に付加されたCORECLK信号と同期してPLDコア80からのパラレルデータワードを受信する。書き込みアドレスロジック370は図6の書き込みアドレスロジック260と同様なものとすることができ、繰り返しサイクルでRAMアレー360内に連続するデータワード記憶ロケーションをアドレスする。従ってPLDコア80によって提供された連続するデータワードは、同様にPLDコア80によって提供されるENW信号によって書き込みが付勢されている限り、CORECLK信号に同期させながら繰り返しサイクルでRAMアレー360内の連続するロケーション内に記憶される。コア80は通常RAMアレー360がFULL信号を形成しない限り書き込み付勢ENW信号を提供する。
【0050】
クロック信号周波数ディバイダ380は、PLL100(図7)によって出力されたCDRCLK信号をJによって除算する。Jの数値はプログラム可能な装置パラメータとすることが好適である(例えば、1つまたは複数のFCE内に記憶される)。図5に関連して記述したように、Jは図8の装置がPLDコア80(図7)から受信した各パラレルデータワード内のビット数に等しい整数である。ディバイダ380の出力信号は読み取りアドレスロジック390に付加される。ロジック390は図6の読み取りアドレスロジック270と同様なものとすることができる。従って、ロジック390は繰り返しサイクルでRAMアレー360内に連続するワード記憶ロケーションをアドレスし、同様にコア80から提供されたENR信号によって読み取りが付勢されている限りディバイダ380からの出力信号に同期して前記ロケーションからデータワードを読み取る。。コア80は通常RAMアレー360がEMPTY信号を形成しない限り読み取り付勢ENR信号を提供する。RAMアレー360から読み取られたデータは、シリアライザ340(図7)にパラレルで付加される。
【0051】
前述の説明から、シンクロナイザ330(図6のシンクロナイザ70と同様に)が可能な2つのクロックレジームの間でデータをバッファするFIFOメモリのように動作することが理解される。この場合、バッファされるデータはシリアライザ340へ伝送中のPLDコア80からのデータである。既に記述したように、シンクロナイザ330は、充満または空状態に際してPLDコア80に対してそれぞれFULLまたはEMPTY信号を形成することができる。
【0052】
図8に示されたリセット信号は、回路をリセットすることが必要あるいは要望される際に(例えばロックの喪失が検出されたことに応答して)、RAMアレー360の内容を消去しディバイダ380をリセットするために使用される。前述した他のリセット信号と同様に、図8のリセット信号もPLDコア80(図7)から提供することができる。
【0053】
図9にはシリアライザ340の説明的な実施例がより詳細に示されている。この実施例において、シリアライザ340はパラレルデータレジスタ400およびシフトレジスタ410を備えている。図8のクロック周波数ディバイダ380も再び使用される。RAMアレー360からのパラレルデータはレジスタ400に付加され、ディバイダ380の出力信号によってゲートされたCDRCLK信号パルスに応答してこのレジスタ内に記憶される。(図9に示されたCDRCLK信号は図8内の類似の標記のものと同等とすることができる。)レジスタ400に記憶されたデータは、ディバイダ380の出力信号がレジスタ410に対してCDRCLK信号パルスの間にデータを受信するべきであることを指示している際に、CDRCLK信号パルスに応答してシフトレジスタ410へパラレル伝送される。CDRCLKパルスの間、シフトレジスタ410はそのシリアルデータ出力リードの方向へデータをシフトさせる。特に、シフトレジスタ410は、各CDRCLKパルスに応答してその内容をそのシリアルデータ出力リードの方向に1ステージシフトさせる。従って、シリアライザ340は、Jビットの各パラレルデータワードをCDRCLK信号に同期したシリアルCDR出力に変換する。結果として得られるCDRデータ信号は差動ドライバ342に付加され、図1においてCDRデータ信号がソース30からレシーバ40へ伝送される場合と同様な方式でレシーバ310に伝送される。
【0054】
図10には、前述したレシーバ40(図1)およびトランスミッタ320(図7)の全ての機能ならびに以下に記述する追加的な機能を備えたPLD500の説明的な実施例の代表的な部分が示されている。図10内の構成要素は既に記述した同一の参照符号を有する要素と類似のものである。図10において、2つ以上使用される要素を個別に参照するために“a”および“b”添え字が付けられている。図10において、500番台の参照符号は以前の図には特に示されていないかあるいは図10において追加された要素対して使用しており、従って以前の図には対応するものは存在しない。図10において、いくつかの要素は、以前の図に関連して説明されたCDRシグナリングモードに対する代替的なシグナリングモードをサポートするためのオプショナルとして変更あるいは追加されている。例えば、図1または図7において提供されたクロック信号は差動信号でなければならないことはなく、代わりにシングルエンド信号とすることもできる。図10はこの代替方式をサポートする装置を示している。別の例として、図10は非CDR低電圧差動シグナリング(“LVDS“)をサポートする装置を示している。(非CDR−LVDSに関する追加的な技術背景は、例えば1999年6月25日提出のグエン氏等の米国特許出願第09/34022号を参照すべきである。)
【0055】
図面の過密化を防止するため、図10には以前の図の全ての回路が繰り返し示されているわけではないことは勿論である。例えば、図10には以前のいくつかの図に示された種々のリセットならびにパワーダウン信号は示されていない。さらに、図10には以前のいくつかの図に示されたENWおよびENR信号は示されていない。しかしながら、図10の回路においてもこれらの信号が好適に存在するこは勿論である。
【0056】
まず入力面について説明すると、図10には2つの代表的な入力クロックサブ回路が示されている(例えば、CDRシグナリングに関連して、代替的にLVDSクロック信号を受信するためのPLL100bおよびこれに結合された回路の場合に使用される基準クロック信号)。図10にはさらに2つの代表的なデータ入力サブ回路が示されている(例えばCDRまたはLVDS信号を受信するために)。これらの種々のサブ回路は互いに完全にまたは部分的に独立するか、または広範な組合せで統合して使用し得ることは勿論である。例えば、いくつかのサブ回路をCDRシグナリングのために使用し、その他のサブ回路をLVDS用にすることができる。デバイス500はこれらの種々のサブ回路をさらに多くまたは全て備え得ることが理解される。
【0057】
典型的なクロック入力サブ回路は要素42a,510a,512および100aからなる。要素510aは単純なドライバであり、入力されるクロック信号(例えばCDR基準クロック信号)が差動ではなくシングルエンドである際に差動ドライバ42aに代えてプログラムによって選択することができる。プログラマブルロジックコネクタ(“PLC”)512は、ドライバ42a/512aの出力信号およびPLDコア80内のいくつかのグローバルクロック信号コンダクタ520のいずれか上のクロック信号の中からPLL100aに付加されるクロック信号をプログラムによって選択することを可能にする。例えばPLL100aがLVDS伝送のためのクロック信号を形成するために使用される際にグローバルクロック信号のうちの1つを選択することができる。この目的で使用する場合、PLL100aによって形成されたクロック信号はLVDS差動ドライバ530を介して出力される。伝送(LVDS伝送を含む)については本明細書において後により詳細に説明する。PLL100bはLVDS伝送に使用することができないため、このPLL100bに結合されたPLC512は備えていない。しかしながら、PLL100bはLVDS入力に付随する必要があるクロック信号のために使用される。以前に記述したものと同様にCDRシグナリングに使用する場合、PLL100aはドライバ42aまたは510aの出力信号を受信し、8個の位相シフトされた候補CDRクロック信号を出力する。同様な8個の信号グループがPLL100bによって出力され得る。
【0058】
図10においてPLL100は以前の図には示されていない別の出力信号を有することができる。これは各PLLに結合されたリード514上の“ロックの喪失”信号である。このロック喪失信号は結合されたPLLが付加されるクロック信号にロックされているかどうかを示すフラグである。ロック状態を示すロック喪失信号数値は、例えばPFD110(図2)の出力信号が予め設定された時間インタバルにわたって比較的低振幅であった後に形成することができる。そうでない場合、ロック喪失信号はロックが喪失されたことを示す数値に伴って形成される。リード514上の信号は、PLDコア80のプログラマブルロジックが必要とするいずれかの使用目的のためにこのコアに付加される。例えば、コア80は、その時点でロックの喪失が示されているサブ回路から受信したデータを無視するか、および/またはこのサブ回路に対して前述したリセット信号を形成するようプログラムすることができる。
【0059】
各DPLL150は結合されたPLC540を備えており、これによってPLL100aまたはPLL100bによる8個の出力信号からなる2つのグループのうちのいずれかを選択してDPLLに付加することを可能にする。従って、各DPLL150はPLL100のうちのいずれかと共に使用することができる。各DPLL150はこれに結合された差動入力ドライバ44(例えばCDR信号の受信用に)を備えている。各DPLL150は、付加されたCDR信号と候補CDRクロック信号を処理して、以前の記述と同様に結合された要素60および220に付加される最終的なCDRクロック信号を形成する。各DPLL150は結合された要素60に付加するリタイムされたCDRデータ信号を形成する(図10においては過密化を防ぐためにCDRデータ入力ドライバ44から結合された要素60へ直接的な接続として示されている)。(DPLL150が全てのLVDSシグナリングに使用されるわけではないことは勿論である。このため各DPLL150は、PLL100bの8個の出力信号のうちの選択された1つをこのDPLLをバイパスさせてこのDPLLに結合された要素60および220に付加することを可能にするための結合されたPLC518を備えている。入力されたLVDSデータは、結合されたDPLL150を使用せずに、入力ドライバ44から結合されたデシリアライザ60へ直接伝送される。)
【0060】
図10に示されているように、各DPLL150は前述の説明にはない他の2つの出力を有することができる。これらは各DPLLに結合されたリード516上の“ランレングス違反(RLV)”フラグ、ならびに各DPLLに結合されたリード517上の“デジタルロックの喪失”フラグである。ランレングス違反信号は、結合されたDPLL150が付加されたCDR信号のレベルの遷移(transition)が無いまま許可された数以上のCDRクロック信号サイクルが経過したことを検出した際にランレングス違反を示す数値を有する。この種のランレングス違反信号は各DPLL150内のカウンタ/コンパレータ回路によって形成することができる。カウンタは各CDR信号パルスをカウントするが、CDR信号内の各遷移によってリセットされる。コンパレータは、カウンタ内のカウント数値を、有効なCDR信号内の遷移間において生じることが許される許容CDRクロック信号サイクル数あるいはパルス数を示す、予め設定された数値(好適にはプログラムによって)と比較する。カウンタのカウント数が許容数値を超過したことをコンパレータが示すと、ランレングス違反が生じたことを示すためにランレングス違反数値信号が形成される。
【0061】
図10AにはRLV信号516を形成するために使用することができる回路600の説明的な実施例が示されている。この回路内のアップカウンタ620は復元されたクロック信号パルスをカウントするが(図4のソース参照)、排他的OR(“XOR”)ゲート612の出力信号が高位になる度にゼロにリセットされる。XORゲート612はその入力を介してリタイムされたデータ信号(図4のソース参照)を受信し、さらに別の入力を介してレジスタ610の出力を受信する。レジスタ610は、リタイムされたデータ信号を記録するために復元されたクロック信号によってクロックされる。XORゲート612の出力は、このゲートへの入力のうち1つ(両方ではなく)が高位になる度に高位なる。リタイムされたデータ信号が立ち上がりエッジを有すると、XORゲート612の出力信号が高位になるが(これによってカウンタ620をリセットする)、レジスタ610が依然として先の低レベルのリタイムされたデータ信号を出力し続けるからである。その後、レジスタ610の出力は高位になり、リタイムされたデータ信号が立ち下がりエッジを有していなかった場合XORゲートの出力信号は低位になり、カウンタ620がカウントを開始することを可能にする。この状態(すなわちリタイムされたデータ信号内に立ち下がりエッジが存在しない)が過度に多くの復元されたクロック信号サイクル間にわたって持続した場合、カウンタ620はリード622を介してこれに提供された閾値に到達する。この閾値カウントパラメータはプログラム可能(例えばFCEを使用して)とすることが好適である。閾値カウント値に到達すると同時に、カウンタ620は、レジスタ630をセットしこれによってレジスタ630の出力信号を即座にロジック1に変更する。次のPLDクロック信号(PLDコア80(図10)からの)に対応して、レジスタ640はレジスタ630の高位の出力信号を記録し、これによってランレングス違反が発生したことを示すRLV出力信号516を形成する。レジスタ630は、カウンタ620からのセット信号が除去された後いずれかのPLDクロッ
ク信号パルスに応答してロジック0を出力する状態に回帰する。充分短い時間のうちに立ち上がりエッジが後続していない立ち下がりエッジがリタイムされたデータ信号内に存在することに対して、回路600は一般的に同様な方式で応答する。しかしながら、リタイムされたデータ信号内の立ち下がりおよび立ち上がりエッジが時間的に充分接近している場合、カウンタ622は充分に頻繁にリセットされ、従って閾値カウントには決して到達せずRLVフラグ信号516は形成されない。
【0062】
RLV検出はPLDコア80内で代替的に実行することもできるが、ここに示されるようにCDR回路内に含める方がPLDコアを他の使用目的のために保存できるため好適である。また、RLV検出にPLDコア80を使用する場合よりも早くRLVフラグ信号を得ることができる。回路600のようなRLV検出回路は、高速の復元されたクロック信号の使用を可能にし、これによってRLV状態の検出が高速化される。
【0063】
図10に戻って説明すると、前述したPLL100がロック喪失信号514を形成する場合と同様な状況においてDPLL150によってデジタルロックの喪失信号517が形成される。例えば、デジタルロック喪失信号はDPLL150が予め設定された時間周期の間比較的安定的になるまでこのDPLL150によって形成することができる。安定性のために要求される周期はプログラム可能(例えばFCEによって)とすることが好適であり、これによって回路500を広範なDPLL周波数で使用することを達成する。
【0064】
図10Bには、デジタルロック喪失(“DLOL”)信号517を形成するための回路700が示されている。この回路は、いくつかのロック喪失時間インタバルまたはウィンドウをプログラムによって選択する(例えばリード702上にマルチプレクサ制御信号を提供するFCEを介して)ことを可能にする。a−nの各グループの要素710/712/720/722/730/740は可能なDLOL時間ウィンドウのうちの1つをそれぞれ提供する。各時間ウィンドウは、基本的に要素グループ内のこの時間ウィンドウに相関する要素710および720の遅延によって実行される。例えば、代表的なグループaについて説明すると、遅延要素710aは一定量の遅延時間の後にリタイムされたデータ信号(図4のソース参照)を伝送する。遅延要素720aは復元されたクロック信号(図4のソース参照)を同じ遅延時間の後に伝送する。レジスタ712aは、遅延要素710aの出力信号をデータ信号として受信し復元されたクロック信号によってクロックされる。レジスタ722aはデータ信号としてリタイムされたデータ信号を受信し遅延要素720aの出力信号によってクロックされる。復元されたクロック信号の中の立ち上がりエッジがリタイムされたデータインタバルのそれぞれ略中央に配置されるべきである。従って適宜にタイム設定されると、レジスタ712aと722aの両方がデータを捕捉し、結合されたXORゲート730aの出力信号がロジック0となり、それによってロック喪失問題が発生していないことを示す。他方、リタイムされたデータパルスが充分に遅く要素710aの遅延がレジスタ712aによって記録されるには遅過ぎるようになると、レジスタ712aの出力信号はロジック0となり、一方レジスタ722aの出力信号はロジック1となる。このことによってXORゲートの出力信号がロジック1にされ、これはロック喪失状態を示すものである。同様に、リタイムされたデータパルスが復元されたクロックの立ち上がりエッジに対して早過ぎると、要素720aの遅延はレジスタ722aがデータパルスを記録することを妨害するために充
分なものとなる。このことによってレジスタ722aの出力信号をロジック0にすることができ、一方レジスタ712aの出力信号はロジック1となる。これによって再びXORゲート730aの出力信号がロジック1にされロック喪失問題を示すことができる。
【0065】
XORゲート730によって形成されるいずれのロジック1出力信号も、復元されたクロック信号に応答して結合されたレジスタ740によって記録される。マルチプレクサ750はリード702(前述された)上の信号によってプログラム制御され、レジスタ740の信号のうち任意の1つを出力する。従ってマルチプレクサ750の出力信号は、選択されたレジスタ740を含む要素グループに相関する遅延ウィンドウに基づいたエラー信号である。マルチプレクサ750のいずれのロジック1出力信号も即座にレジスタ760をセットする。レジスタ760のセッティングは、次のPLDクロック信号を受信した際にDLOLカウンタ770によってカウントされる。カウンタ770は、レジスタ760がセットされる限りカウントを継続する。(レジスタ760は、このレジスタ760がマルチプレクサ750からの信号を受信していない間に生じるいずれかのPLDクロックパルスによって有効にリセットされる。)カウンタ770が予め設定された閾値(リード704を介して提供され、また好適にはプログラム可能(FCEを使用して)である)に到達すると、カウンタ770はリード517を介してロック喪失フラグ信号を出力する。図10Bには示されていないが、カウンタ770は必要に応じて(例えばロック喪失の検出ステップが適宜に実行された後)常にリセットする(例えばPLDコア80からの信号によって)ことができる。
【0066】
図10Bに示された種々の異なった遅延は、いくつかのCDRクロック信号周波数レンジのいずれかにおいてロック喪失を検出するために適宜に選択することができる。従って、いくつかの遅延ウィンドウのうちいずれかをプログラムによって選択することは、本発明の回路を広範なCDRクロック周波数のうちいずれかと共に使用するために有用である。この機能は、CDRデータと復元されたCDRクロックとの間のドリフトに対してプログラムによってレベルを選択できる異なった許容差を提供することを可能にする。DLOL回路の感度も、リード704上のDLOL選択信号を介してプログラム選択することができる。
【0067】
再び図10に戻ると、ランレングス違反信号516およびデジタルロック焼失信号517は、考えられるロジックコア80のプログラマブルロジックによる使用のためこのコアに付加される。例えば、コア80は、ランレングス違反信号516がその時点でランレングス違反が発生していることを示す数値を有しているサブ回路(サブ回路群)からの入力データの使用を保留するか、および/またはこのような回路(群)に対して前述したリセット信号を形成するようプログラムすることができる。デジタルロック喪失に対しても同様な動作(あるいは複数動作)を実行することができる。
【0068】
各ドライバ44からのデータ信号(実際はCDRモードにおいて結合されたDPLL150からの)はさらに結合されたデシリアライザ60に付加される。各デシリアライザ60はさらに2つのクロック信号を受信し、1つは結合されたPLC518からのものであり、もう1つは結合されたディバイダ220からのものである。各デシリアライザ60は、入力された信号を使用して付加されたシリアルデータをそれぞれJビットからなる連続するパラレルデータに変換する。データはCDR入力データまたはLVDS等のその他の形式のデータとすることができる。
【0069】
ディバイダ220(またドライバ380)の出力信号は、これらのディバイダの信号のいずれかがPLDコア80内におけるクロック信号として必要である場合に、PLC522を介してグローバルクロック信号コンダクタ520のうちの異なったいずれかに付加される。勿論、クロック信号コンダクタ520上の信号は、ローカル発振器、クロック入力ピン、またはコア80内の出力信号ロジック要素等のその他ソースから代替的に選択することもできる。
【0070】
各デシリアライザ60からのパラレルデータ出力は、以前の図に関連して記述したものと同様に結合されたシンクロナイザ70に付加するか、またはこのデータはシンクロナイザをバイパスし結合されたPLC540を介して直接PLDコア80に付加することができる。前者のルーティングは典型的にCDRシグナリングのためのものであり(必要であればLVDSにも使用できるが)、この場合シンクロナイザ70は結合されたディバイダ220およびPLDコア80の両方からのクロック信号をCDR(またはLVDS)クロックレジームとPLDコアクロックレジーム間の一時的インタフェースを介してデータを伝送するために使用する。特に、PLC542は、PLDコア80内のいくつかのソースからのクロック信号(例えばグローバルクロック信号コンダクタ520のいずれか、またはPLDコア80内のその他の好適なソースからの)を結合されたシンクロナイザ70に対して選択することを可能にする。前述したように、各シンクロナイザ70によるパラレルデータ信号出力は、PLDがそのような選択を行うようプログラムされている場合、結合されたPLC540を介してPLDコア80に付加される。既に説明したように、結合されたPLC540がそのようなルーティングを可能にするようにプログラムされている場合、結合されたデシリアライザ60のパラレル出力を直接PLDコア80に付加するために各シンクロナイザ70をバイパスすることができる。このことは、PLDコア80内で使用されるものと同一のクロックを有するCDRまたはLVDS入力に対して実行される。
【0071】
各シンクロナイザ70の出力信号544(例えば前述したFULLおよびEMPTY信号)も考えられるPLDコア80による使用(例えばコアのプログラマブルロジックによって)のためこのコアに付加される。例えば、PLDコア80は、これらの信号を利用してその時点でEMPTY出力信号を形成しているシンクロナイザ70からの読み取りを一時的に停止することができる。これに代えてまたは追加して、PLDコア80は“ストップ”信号をトランスミッタ(例えば図1の要素20等)に送信しその時点でFULL出力信号を形成しているシンクロナイザ70へのそれ以上のデータ送信を停止することができる。
【0072】
ここで出力面について説明すると、図10には2つの代表的な出力サブ回路が示されている(例えば、CDRまたはLVDS信号の伝送用)。これらのサブ回路のそれぞれは、PLDコア80からのパラレルデータを受信するシンクロナイザ330か始まっている。他方、このデータは結合されたPLC550を介してシンクロナイザ330をバイパスすることができる。このバイパスルーティングはLVDSに使用することができ、一方シンクロナイザルートは以前の図に関連して説明したようにCDRに対して使用することができる。シンクロナイザ330を介するルーティングと仮定すると、このシンクロナイザは結合されたPLC552からのコアクロック信号も受信する。各PLC552は、いずれかのグローバルクロック信号コンダクタ520、コア80内のロジック要素等の可能ないくつかのソースの中からコアクロック信号を選択することを可能にする。各シンクロナイザ330は、さらに結合されたディバイダ380からのCDRまたはLVDSクロック信号(Jによる除算後の)を受信する。(各ディバイダ380はそのCDR/LVDSクロック信号を結合されたPLC360から受信し、これがいずれかのPLL100の出力のうちから使用するCDR/LVDSクロック信号を選択することができる。(CDRの場合、一般的に適正なPLL100の8個の出力のいずれを使用することも可能である。LVDSの場合、スキュー問題を緩和するPLL100aの1出力を選択することが好適である。))従って、各シンクロナイザ330は、以前の図に関連して説明したものと同様に、PLDコアクロックレジームと外部CDRあるいはLVDSクロックレジームとの間でデータをインタフェースすることができる。
【0073】
各シンクロナイザ330に結合されたPLC550は、このシンクロナイザによってデータを出力するか、またはこのシンクロナイザをバイパスして結合されたシリアライザ340にデータを付加することを可能にする。各シンクロナイザ330のその他の出力信号(例えば前述したFULLおよびEMPTY信号)は、結合されたリード554を介してPLDコア80に付加することができる。PLDコア80は、これらの信号を必要とされる任意の方式で使用することができる(例えば、前述したシンクロナイザ70によるFULLおよびEMPTY出力信号の使用と同様に)。
【0074】
前述したように各シリアライザ340は結合されたPLC550のパラレル出力信号をシリアルデータに変換するよう動作し、これは結合された出力ドライバ342に付加される。このため、各シリアライザ340は、結合されたディバイダ380によって導出されたファクタJを介して互いに相関するクロック信号を使用する。前述したように、これらの信号のソースはPLL100の出力信号のうちの1つである。シリアライザ340がCDR信号を処理している場合、このシリアライザに付加されるクロック信号は、ドライバ42または510のうち1つを介してPLD500に付加されたCDR基準クロック信号上で動作するPLL100から伝送される。PLL100aの場合、このPLLに付加するためにCDRクロック基準信号がPLC512によって選択される。他方、シリアライザ340がLVDS信号を処理している場合、このシリアライザに付加されるクロック信号はPLL100aから伝送され、この場合これはPLC512によって選択されたPLDコア80(例えば、いくつかのリード520のいずれか)からのクロック信号(LVDSクロック信号と呼ばれることもある)上で動作する。LVDS出力信号は特にデータとクロック信号とを別々のリード上に有するため、PLL100aはさらにリード528を介してLVDSクロック信号を出力する。この信号は、PLC360に付加されるPLL100aの出力リード上の信号に対して適宜な位相相関性を有する。周波数ディバイダ529によって可能な周波数の調節が行われた後、リード528上のLVDSクロック信号は差動ドライバ520に付加され、これは付加されたクロック信号をLVDS基準に従ってPLD500から出力するための2つの差動信号に変換する。従ってPLD500はドライバ342のいずれか1つまたは複数を介してLVDSデータ信号を出力し得るとともに、ドライバ530を介して同期LVDSクロック信号を出力することができる。
【0075】
ユーザによっては相関するLVDSデータ出力信号の形成に関わる要素100a,330および340によって使用される周波数とは異なった周波数有するLVDSクロック出力信号を要望するため、周波数ディバイダ529が設けられている。例えば、LVDSデータはPLDコア80によって42MHzおよび20ビットで提供することができる。この種のデータを処理するために、PLL100aは840MHzでクロック信号を出力する必要がある(すなわちPLL100aのREFCLKが42MHzであり、このPLL内のWが20である)。結合されたLVDSデータサブ回路内のJも20となる。しかしながら、ユーザはドライバ530から(840MHzではなく)420MHzのLVDSクロック信号を望むこともある。そのため、リード528上の840MHzの出力信号をB(前記の例においてはB=2)で分割するために周波数ディバイダ529が設けられており、その結果ドライバ520は420MHzのLVDSクロック信号を受信ならびに出力する。ディバイダ529はBに関してプログラム可能であることが好適であり(例えば1つまたは複数のFCEを使用して)、Bはその他の複数の数値とすることができる。BはPLDコア80によって周波数ディバイダ529に提供することができる。
【0076】
前述の説明から、PLD500はその入力および出力サブ回路を多様な方式で使用できることが理解される。例えば、広範なCDRおよび/またはLVDS入力および/または出力の組合せを同時に行うことができる。2つのCDRサブ回路を使用する場合、これらのサブ回路は同一または異なったクロック周波数を有することができる。同様に2つのサブ回路を使用する場合、両方が入力し両方が出力するか、または1つが入力、他方が出力を行うことができる。図10に示されたより多数のデータ回路を反復して追加することができ、その結果各クロックサブ回路は任意の数のデータサブ回路と組合わせて使用することができる。LVDSまたはデシリアライザ60および/またはシリアライザ340の使用を必要としないその他のシグナリングモードをサポートまたは実行するために、データ信号がこれらの要素をバイパスすることを可能にする別のルーティングを設けることができる。結果として、広範なCDRシグナリングプロトコルのいずれかをサポートするように回路がプログラム可能であるため、広範な非CDR−LVDSまたはその他のプロトコルに関しても同様に柔軟であることが理解される。
【0077】
必要であれば図10に示された形式の回路を図10Cに示されているように追加的な回路で拡大することができる。各データ信号レシーバサブ回路は、入力ドライバ44と残りのレシーバ回路60/ETCの間に直列接続されたPLC560を備えることができる。(ここでは便宜上プログラマブルロジックコネクタあるいはPLC560と呼称されるが、要素560は時にはPLDコア80によって動的に制御することもできる。しかしながら、便宜上PLCという用語を継続して使用する。PLC570についても同様なことが有効であり、また本明細書中に記載されているその他のPLCについても同様である。)PLC560への別の入力は、結合された出力データサブ回路内のトランスミッタ回路340/ETCの出力である。PLC560は、その入力うちのいずれかをレシーバ回路60/ETCに付加するために選択することができる。PLC560は、この選択を行うようPLC562の出力信号によって制御される。PLC562は、固定されたロジック0信号またはPLDコア80の出力信号をPLC560の制御入力端子に付加するようFCE564によってプログラム制御される。固定されたロジック0を付加する場合、PLC560は常にドライバ回路44の出力信号を回路60/ETCに付加する。PLDコア80の出力信号を付加する場合、この信号はロジック0またはロジック1のいずれかとすることができ、信号レベルは装置の動作中の異なった時点ごとに異なったものとなる。信号がロジック0である場合、PLC560はドライバ44を回路60/ETCに接続する。信号がロジック1である場合、PLC56はトランスミッタ回路340/ETCの出力を回路60/ETCに接続する。
【0078】
要素570,572および574は、図10Cに示された出力サブ回路に関して同様に動作する。従ってPLC570は、トランスミッタ回路340/ETCの出力または入力ドライバ44の出力のうちのいずれか一方をドライバ342に付加することができる。PLC570はこの選択を行うようPLC572によって制御される。PLC572の出力は、FCE574のプログラム状態に従って、固定されたロジック0またはPLDコア80の出力信号のいずれかとすることができる。PLC572の出力がロジック0(固定されたものまたはPLDコア80からのもの)である場合、PLC570は回路340/ETCをドライバ342に接続する。他方、PLC572の出力がロジック1(PLDコア80からの)である場合、PLC570は入力ドライバ44の出力をドライバ342に接続する。
【0079】
前述の説明から、要素560/570およびこれに結合された回路は種々の異なったテストループを提供するために使用し得ることが理解される。例えば、要素560は、トランスミッタ回路340/ETCの出力信号をレシーバ回路60/ETCへ戻すようにルーティングするよう制御することができる。このルーティングは、PLCコア80が回路340/ETCを介してテストデータを伝送し、回路60/ETCを介して返送されたデータを受信することを可能にするため使用し得る。PLDコア80にテストデータが正確に返送された場合、コア80は回路340/ETCおよび回路60/ETCが適正に動作していることを検知する。別の例として、要素570はドライバ44を介して受信したテストデータをドライバ342を介して返送するルーティングを行うよう制御することができる。これは、ドライバ44と342の適正な動作を検査するための便利な方式である。勿論、ドライバ44を介し要素560,60/ETC,80,340/ETCおよび570によって受信したテストデータをドライバ342によって返送する、別のテストモードも可能である。通常の(すなわち非テストモード)ルーティングは、PLC560がドライバ44を回路60/ETCに接続し、PLC570が回路340/ETCをドライバ342に接続するものである。
【0080】
本明細書に記載されている種々の状態監視信号(例えばロック喪失およびランレングス違反信号等)、ならびにユーザがPLDコア80内にプログラムすることができる種々の動作チェック、さらに種々のリセット信号をPLDコア80が使用して、多様な状況下において回路500の多様な部分を自動リセットすることができる。このような考えられるリセット手段の例として、“グローバルリセット”および“チャネルリセット”と呼ばれるものが挙げられる。グローバルリセットは、全てのPLL100、全てのDPLL150、全てのカウンタ(PLL、DPLL、シリアライザ、デシリアライザ内のカウンタ/ディバイダ/マルチプライア)、ならびに全てのFIFO(すなわちRAMアレー250および360)をリセットする。チャネルリセットは、ペアのレシーバ内と、互いに結合されたあるいはリセットされるチャネルを形成するために組合されたトランスミッタサブ回路内のFIFOをリセットする。チャネルリセットは、さらにリセットされるチャネル内のDPLLをリセットする。PLL、DPLL、シリアライザ、デシリアライザ、またはシンクロナイザFIFO等の各要素内のリセットされる構成部分は、前述した各図内のリセット信号の受信部によってより明らかにされている。
【0081】
前述したように、多様なタイプのリセットが実施される状況はPLDコア80内にプログラムすることができる。例えば、グローバルリセットはPLLによってロック喪失信号が出力された際に実行することができる。別の例として、チャネルリセットは、以下のいずれかの状況が検出された際に実行することができ:それらは(1)ランレングス違反、(2)デジタル(すなわちDPLL)ロック喪失、(3)ユーザによって定義されたエラーまたは異常状態(例えば、PLDコア80内におけるユーザのロジックがデータ伝送エラーを検出する)である。前述したように、ランレングス違反、ロック喪失、デジタルロック喪失の検出に使用されるパラメータは、勿論プログラム可能(例えばPLDコア80のプログラミングによって)とすることが好適である。
【0082】
図10においては単一の集積回路上に全てが示されているが、実施例によっては構成要素および/または機能のうちのいくつかを(完全にまたは部分的に)第2の集積回路上に設けることが好適である。例えば、図11Aには、全ての高周波PLL(図10のPLL100等)および全てのDPLL(図10のDPLL150等)がマルチチップモジュール800内の1つのチップ(集積回路)810上に設けられている説明的な実施例が示されている。図10内のその他の主要な機能要素(例えば、デシリアライザ60、シリアライザ340、シンクロナイザ70および330、ならびにPLDコア80)は、マルチチップモジュール内の第2のチップ(集積回路)820上に設けられている。チップ810および820は互いに独立しているがマルチチップモジュール800内において近接して組合わせることが好適である。例えば、チップ810と820の間において全てまたは殆どの信号ついて差動シグナリングを使用することができる。目的によっては(例えば、CDRまたは特定の高周波非CDRシグナリング等)、チップ820はシップ810を介して外部の回路と交信することができる。その他の目的において、チップ820は外部の回路と直接交信することもできる。高周波PLLおよびDPLLをPLDコア80等のその他の回路から分離することによって、このその他の回路との間の高周波干渉を低減することが可能になる。図11Aにはチップ810および820内の種々の要素がどのように相互接続されるかは示されていないが、この相互接続は基本的に図10に示されたものと同様であることが理解される。
【0083】
図11Bには、本発明に係るマルチチップモジュール800′の別の説明的な実施例が示されている。図11Bにおいて、マルチチップモジュールの1つのチップ830は、図11(チップ810)に示された全ての高周波PLL100およびDPLL150′を含んでいる。加えてこの回路チップ830は、PLL100の出力信号を2で分割してその結果をチップ840に付加する回路802を含んでいる。チップ830は、さらにデシリアライザ60′、シンクロナイザ70′、シンクロナイザ330′、シリアライザ340′を含んでいる。チップ830は、高周波外部(例えばCDR)クロックレジームと低周波PLDコアクロックレジームとの間において信号をトランスレートするために必要な動作の一部を実行する設定されている。チップ830は、特にこの機能のうちの高周波部分を実行する。チップ840は、この機能のうちの低周波部分を実行する。従って、チップ840は、PLDコア80、ならびにそれぞれ要素60′、70′、330′および340′に類似であるがより低い周波数で動作する追加的な要素60″、70″、330″および340″を備えている。図示された実施例において、チップ830は、信号によって示される情報に相関する最高(外部)周波数とこの最高周波数の半分の周波数の間で信号をトランスレートするために必要な全ての操作を実行する。チップ840は、最高周波数の半分の周波数とPLDコアクロック周波数の間において信号をトランスレートする操作を実行する。前記のことは、信号送信ならびに信号受信の両方に対して好適である。この方式により、チップ840は、最高または外部クロック信号周波数の半分よりも高い周波数有する信号を受信または処理する必要がなくなる。例えば、システムが1.25GHzのクロック信号周波数を扱っている場合、チップ830はこの周波数を625MHzにステップダウンしてチップ840に付加するために必要な全てのことを実行する。チップ840は625MHzよりも高い周波数を有するデータまたはクロック信号を取り扱うことはない。これは、高周波PLLおよびDPL
Lをオンボードに備えていないがチップ820が最高周波数のクロック信号(例えばチップ810からの)を処理する必要がある図11Aの実施例とは対照的である。
【0084】
図11Bの実施例の考えられる制限は、全周波数変換を要素802に相関する除数の倍数としなければならないことである。(この除数は2に限定されるものではなく、3または4等の数字とすることができる。)例えば、除数が2である場合、奇数ワード長(例えば3,5,7等のワード長)を簡便に非直列化または直列化することができない。図11Aの場合のように、チップ830と840の間を伝送される殆どまたは少なくとも多くの信号に対して差動シグナリングを使用することが好適である。
【0085】
図11Bの実施例について考えてみると、チップ830と840の間のデータ交信のデータ速度がチップ830から外部回路への接続に関連した最高周波数データ速度よりも低いため、チップ830の1つの外部データ接続のためにチップ830と840の間のより多数のデータ接続が必要となる。例えば、図11Bの回路802に相関する除数が2である場合、チップ830から外部回路への各データ接続のためにチップ830と840の間に2つのデータ接続が必要となる。このことは以下に記す図13Aおよび図13Bの説明によってより明らかにされる。これらの図の両方が図11Bの回路802に相関する除数が2であると仮定したものであるが、図13Aおよび図13Bの回路がその他の除数値のためにどのように変更し得るかが明らかとなっている。
【0086】
図13Aにはチップ830および840内のレシーバ回路がより詳細に示されている。デシリアライザ60′は、クロック速度CLKを有するシリアル入力データをそれぞれCLK/2のクロック速度を有するとともに元のシリアルデータ入力信号情報のそれぞれ半分を含んだ2つのパラレルデータ出力信号に変換する点を除いて、図5のデシリアライザ60に極めて類似している。(勿論、これら2つのデータ信号はなおシリアルデータ信号である。)これら2つのデータ出力信号のそれぞれは、チップ830のその他の回路(例えばシンクロナイザ70′(図11B)および出力ドライバ(図10の出力ドライバ342に類似)を分離して伝送することができ、その後チップ840に付加される。この信号経路内において、シンクロナイザ70′は、データ出力信号をリタイムしてディバイダ802のCLK/2出力信号とより良好に同期させるために使用することができ、前記の出力信号はさらに出力ドライバ(図10の出力ドライバ530に類似)等のその他の回路を介してチップ830の外部へ伝送されチップ840に付加される。(デシリアライザ60′はチップ830上のDPLL150からの復元されたCLK信号と共に動作するがディバイダ802はチップ830上のPLL100の出力信号と共に動作するため、このリタイミングが必要または有用なものとなる。これら2つの信号は同じ周波数を有するが、異なった位相を有することがあり得る。)
【0087】
図13Aのチップ840上において、各入力データは最初に入力ドライバ等(図10の入力ドライバ44に類似)のさらにその他の回路を介して伝送することができ、その後デシリアライザ60a″および60b″のうち適宜な1つにそれぞれ付加される。(デシリアライザ60a″および60b″は単一のディバイダ回路220″を共有しているように示されているが、必要であれば別々のディバイダ回路を代わりに使用することができる。)デシリアライザ60″のそれぞれは、(既に明らかなように)各デシリアライザ60″が元の入力シリアルデータの半分のみを処理する点を除いて、再び図5のデシリアライザ60に類似している。加えて、結合されたディバイダ回路220″は、J/2(Jではなく)によって受け取ったCLK/2信号を分割するためにのみ必要とされる。両方のデシリアライザ60a″および60b″のパラレル出力信号は、合わせて元のシリアルデータ入力信号の全パラレルデータ出力バージョンである。このパラレル出力信号は(例えば図10に関連して)前述したようにさらに処理される。例えば、チップ840上のシンクロナイザ70″は、パラレルデータ信号をPLDコア80に相関するクロックレジームにリタイムするために使用することができる。
【0088】
図13Bには、チップ830および840上のデータトランスミッタ回路がより詳細に示されている。シリアライザ340a″および340b″はそれぞれ図9のシリアライザ340に類似している。シリアライザ340a″および340b″はディバイダ回路380″を共有しているように示されているが、必要であれば各シリアライザがそれぞれ独自のディバイダを備えることもできる。各シリアライザ340a″および340b″は、全パラレル入力データの半分を2つのシリアル出力信号の一方にそれぞれ変換する。これらの信号は、チップ840から送出され(例えば図10の出力ドライバ342に類似する出力ドライバを介して)チップ830に付加される。チップ830上の入力ドライバ(例えば図10の44に類似)およびその他の回路がこれらの信号を受信し、シリアライザ340′の入力側にパラレル付加するために処理する。(シンクロナイザ330′は、チップ840上のシリアライザ340a″および340b″によって使用されるPLLに基づいたクロックレジームからのデータ信号をチップ830上のシリアライザ340′によって使用されるDPLLに基づいたクロックレジームにリタイムするために使用することができる。)シリアライザ340′は再び図9のシリアライザ340に類似しており、パラレルに受信した2つのデータ信号をシリアルデータ出力信号に変換する。
【0089】
このように、図13Aおよび図13Bは図11B内のチップ830および840内のいくつかの要素がどのように相互接続され得るかを示している。図11Bの要素のその他相互接続は一般的に図10に示されたものと同様にすることができる。
【0090】
図11Cには、本発明に係るマルチチップモジュール800″のさらに別の説明的な実施例が示されている。この実施例において、チップ860は、図10のデバイス500と同一かあるいは実質的に同一のものとすることができる。しかしながら、システムよって受信されたCDR信号をチップ860に伝送する前に“クリーンアップ”し、および/またはチップ860によって形成されたCDR信号を外部回路に伝送する前に同様に“クリーンアップ”するためのインタフェースチップ860が追加されている。従ってチップ850は外部回路からCDR信号を受信することができる。チップ850はPLL100′およびDPLL150′を使用してこれらの信号からクロックを復元する。チップ850はシンクロナイザ70′(これらの信号をバッファおよび/またはリタイムするために)を介してCDR信号を伝送し、また結合されたCLKREF信号を出力することもできる。これらのチップ850の出力CDR信号は、このチップ850が受信したものよりも一般的に良好な信号品質を有しているが、その他の点に関しては入力および出力CDR信号は同等なものとなる。チップ860はこのチップ850の出力信号を受信し、これらはより高い信号品質を有しているため元の信号よりも信頼性の高い処理を行うことができる。チップ850上において非直列化は必要とされず、チップ860上においてのみ実行することができる。チップ850による外向き信号処理も同様であり、チップ860からの入力CDR信号とチップ850から外部回路への出力信号との間においてバッファおよび/またはリタイムを行うためにシンクロナイザ330′を使用することを含んでいる。図11Aおよび図11Bの場合と同様に、チップ850と860の間で伝送される多くの信号(全てではない)について差動シグナリングを使用することが好適である。また、前述の説明により、チップ850と860の間において、モジュール800″によってCDR信号として受信されたものかあるいはモジュール800″によってCDR信号として出力されるもののいずれか信号に対してCDRシグ
ナリングが使用されることが少なくとも示唆されている。図11Aおよび図11Bの場合と同様に、図11Cに示された種々の要素の間の相互接続は一般的に図10に示されているものと同様である。
【0091】
以下の記述においては、既に説明した種々のマルチチップモジュール800,800′および800″の全てが参照符号800をもって総称される。
【0092】
図12には、データ処理システム1002内に設けられた本発明に係るPLD500またはマルチチップモジュール800が示されている。データ処理システム1002は以下の構成要素のうち1つまたは複数を備えており:それらはプロセッサ1004;メモリ1006;I/O回路1008;および周辺デバイス1010である。これらの構成要素はシステムバスまたはその他の相互接続要素1020を介して互いに結合され、エンドユーザシステム1040内に内蔵された回路基板1030上に装備されている。要素500/800およびその他の要素の間のいずれの相互接続も前述したCDRまたはLVDSシグナリングを使用して形成することができる。
【0093】
システム1002は、コンピュータネットワーキング、データネットワーキング、ビデオ処理、デジタル信号処理、またはプログラマブルあるいはリプログラマブルロジックデバイスの利点を活用することが望まれる、広範な適用形態で使用することができる。PLD/モジュール500/800は多様なロジック機能を広範囲に実行するために使用することができる。例えば、PLD/モジュール500/800はプロセッサ1004と組合されて動作するプロセッサまたはコントローラとして構成することができる。PLD/モジュール500/800は、さらにシステム1002内の共有リソースへのアクセスを仲介するアービタとして構成することもできる。さらに別の例として、PLD/モジュール500/800は、プロセッサ1004とシステム1002内の他の構成要素との間のインタフェースとして構成することもできる。システム1002は1つの例であり、本発明の視点ならびに精神は請求の範囲によってのみ定義されることは勿論である。
【0094】
本発明の特徴を有するPLD500またはマルチチップモジュール800、ならびにこれらのデバイスの種々の構成要素(例えば、先述したPLCおよびこのPLCを制御するプログラム可能な機能制御要素(“FCE”)を実施するために多様な技術を使用することができる。例えば、各PLCは、いくつかの入力を1つの出力に接続するためのスイッチまたはスイッチ群等の比較的単純なプログラマブルコネクタとすることができる。他方、各PLCは、接続を行うだけでなくロジック(例えば、複数の入力のロジック結合)を実行することができるより複雑な要素とすることもできる。後者において、各PLCはAND、NAND、OR、またはNOR等の機能を実施するp項ロジックとすることができる。PLCを構成するために適した要素の例としては、EPROM、EEPROM、パストランジスタ、伝達ゲート、アンチヒューズ、レーザヒューズ、メタルオプショナルリンク等が挙げられる。PLCおよびその他の回路要素は、多様なプログラマブル機能制御要素(“FCE”)によって制御することができる。(特定に実施形態(例えばヒューズおよびメタルオプショナルリンク)については独立したFCEデバイスは必要でない。)FCEもいくつかの異なった方式で実施することができる。例えば、FCEは、SRAM、DRAM、先入れ先出し(“FIFO”)メモリEPROM、EEPROM、機能制御レジスタ(例えば、ウォールストロームの米国特許第3473160号に記載)、強誘電メモリ、ヒューズ、アンチヒューズ等から構成することができる。前述の多様な例から、本発明は一回のみプログラム可能なデバイスおよびリプログラム可能なデバイスの両方に適用可能であることが理解される。
【0095】
以上の記述は単に本発明の原理を説明したものであり、当業者においては本発明の視点および精神を逸脱することなく種々の設計変更をなし得ることは勿論である。構成要素500/600上の種々のリソースの数は、図示ならびに記述された実施例とは異なった数とすることができる。
【技術分野】
【0001】
この発明はクロックデータリカバリ回路に係り、より具体的にはプログラマブルロジックデバイス上にまたはこれと結合して設けられるクロックデータリカバリ回路に関する。
【背景技術】
【0002】
重要性が増しているデバイス間のシグナリングタイプとして、クロック信号情報がシリアルデータ流の中に埋め込まれ独立したクロック信号を伝送する必要が無くなるシグナリングが挙げられる。例えば、データは所与のパターンのバイナリ1およびバイナリ0からなるいくつかのトレーニングビットを含んだシリアル“ヘッダ”が先行する連続するいくつかのシリアルデータワードのパケットとして直列に伝送することができる。クロック信号はその信号内のハイローおよび/またはローハイ転換群の中に埋め込まれ、これは特定数のクロック信号サイクルの間に少なくとも1つのハイローまたはローハイ遷移(transition)を含んでいなければならない。レシーバにおいてデータ信号内のデータを適宜に処理するためにデータ信号の中からクロック信号が“復元”される。利便性のためここではこのシグナリングを総称して“クロックデータリカバリ”または“CDR”と称する。
【0003】
CDRシグナリングは、今日多数の異なったシグナリングプロトコルの中で使用されている。これらのプロトコルは、クロック信号周波数、ヘッダ構成、パケットサイズ、パラレルチャンネル数等に従って異なるものとなる。
【0004】
プログラマブルロジックデバイス(“PLD”)は、例えばクリフ氏等の米国特許第5689195号公報、クリフ氏等の米国特許第5909126号公報、1999年3月10日出願のジェファーソン氏等の米国特許出願第09/266235号、ならびに2000年3月2日出願のガイ氏等の米国特許出願第09/516921号等によって知られている。一般的に、PLDは広範囲のロジックタスクのうちの任意のものを実行するためにプログラムすることが可能な汎用集積回路デバイスである。異なったロジックタスクを実行するために独立した回路を設計して構成するよりも、これらの多様なロジックタスクを実行するようにPLDを多様な方式でプログラムすることができる。多くの製造業者は、製造が必要な多様な構成要素を提供するためにPLDは好適な手段であると考えている。
【0005】
CDRシグナリングは、常に多数の異なったCDRプロトコルごとに固有であるCDRトランスミッタおよびレシーバを設計および構成することを避けながらPLDを使用し得るために極めて重要な部分である。
【発明の概要】
【課題を解決するための手段】
【0006】
本発明によれば、CDRレシーバ回路、CDRトランスミッタ回路、および/またはCDRレシーバ回路とCDRトランスミッタ回路の両方を備えることができるCDR回路が提供される。本発明のCDR回路は少なくともいくつかの点でプログラム可能であるとともに、より従来型のPLD回路とともに集積回路上に装備することができるか、または独立した集積回路上に少なくとも部分的に含まれるものとすることが好適である。CDR回路が独立した回路上に少なくとも部分的に含まれる場合、より従来型のPLD回路への効率的な結合を実行することができるよう構成することができる(例えば、一般的なPLDとのパッケージ)。
【0007】
本発明に係るCDRリカバリ回路は、処理すべきCDRデータ信号源あるいはその他の好適なクロック信号源から、独立したかつ追加的な基準クロック信号を受信することが好適である。基準クロック信号の周波数は、CDRデータ信号の周波数に対して既知の相関性を有しているが、CDRデータ信号と同位相である必要ことは必要ない。独立した基準クロック信号の必要性は典型的なCDRシグナリングとは相違しているが、これによって本発明に係る回路が広範なCDR周波数のうち任意のもので動作するようプログラム可能になることを補助する。独立した基準クロック信号がCDRデータ信号に対して特別な位相関係を有する必要がないため、基準クロック信号とCDRデータ信号間に生じ得るスキュー(すなわち位相シフト)に関する制限は存在しない。(スキューに関連する問題はCDRシグナリングを使用する動機の一つであり、これはCDRシグナリングによってクロック信号がデータ信号内に埋め込まれ、このためデータ信号に対してスキューが生じることがあり得ないためである。)CDRレシーバ回路はCDRデータ信号から埋め込まれたクロック信号を復元するために基準クロック信号とCDRデータ信号を使用する。このCDRデータ信号クロックの復元に使用する種々のパラメータは、プログラム可能であることが好適である。復元されたクロック信号は、好適にはワード長パラメータ等のプログラム可能なパラメータを使用してCDRデータ信号を非直列化するために使用される。その後非直列化されたデータは、異なったクロックレジームで処理するために同期化またはバッファリングされる(例えば、CDR回路に結合されているより従来型のPLD回路内のクロック信号に従って)。
【0008】
本発明に係るCDRトランスミッタ回路も、伝送されるCDRデータ信号の宛先からあるいはその他の好適な基準クロック信号源から、独立したかつ追加的な基準クロック信号を受信することが好適である。この基準クロック信号は、前述したCDRレシーバ回路によって使用される基準クロック信号と同様な特徴を有している。伝送されるデータのソースは、CDRトランスミッタ回路と結合された従来型のPLD回路とすることができる。伝送されるデータはいくつかのパラレルビットからなる連続するワードとして表示することができる。このデータの多様な特徴(ワード周波数、ワード長等々)は選択可能(すなわちプログラム可能)とすることが好適である。この段落で述べた基準クロック信号は、好適にはプログラム可能なパラメータに従って処理することができ、その後CDRトランスミッタ回路内に伝送されるデータ流を同期化するために使用することができる。処理された基準クロック信号も、好適にはプログラムによって選択可能なワード長パラメータに従って、伝送されるデータの各ワードのビットを直列化するために使用することができる。
【0009】
前述したプログラム可能の観点において、本発明に係るCDRレシーバおよび/またはトランスミッタ回路はその他の点に関してもプログラム可能とすることができる。例えば、CDR回路は任意の数のCDRデータレシーバおよび/またはトランスミッタサブ回路を並列して動作させる性能を備えることができる。別の例として、CDR回路は任意の数の異なった基準クロック信号を並列に処理し従って任意の数の異なったCDRレシーバおよび/またはトランスミッタを動作させる能力を有することができる。
【0010】
本発明の回路は、さらに非CDR低電圧差動シグナリング(“LVDS”)等の他の非CDRシグナリング形式をサポートようプログラムすることもできる。本発明の回路は、回路の種々の部分をリセットするために使用し得るロック欠如(los of lock)およびランレングス違反(violation)信号等の信号を提供するように構成することもできる。回路の様々な部分のリセットおよび/またはパワーダウンを実行するための回路も提供される。回路の様々な部分のテストを実行するために、回路内において種々のタイプのテストループを選択的に形成する回路も提供することができる。特定の動作モードにおいて基準クロック信号をプログラムによって変更するための回路を提供することもできる(特にプログラマブルロジックデバイスによる基準クロック信号出力)。
【0011】
本発明はPLDによってCDRデータを処理することを促進するため、PLDのロジックを任意のプロトコルに従って(例えば、バイト配列、カンマディテクト、ワード長、その他のレシーバ側のデータのデコーディングおよび/またはトランスミッタ側のデータのエンコーディング特性等に従って)データを処理するために使用することができる。従って、このCDRとPLDの組合せは極めて効果的なものとなる。
【0012】
本発明のその他の構成要素、特徴および種々の利点は、添付図面を参照しながら以下に記述する好適な実施例の詳細な説明によって明らかにされる。
【図面の簡単な説明】
【0013】
【図1】本発明に係るCDRシグナリング装置の説明的な実施例を示す簡略化された概略ブロック線図である。
【図1A】本発明に係るCDRシグナリング装置の別の実施例を示す簡略化された概略ブロック線図である。
【図2】図1の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図3】図2の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図4】図1の本発明に係る装置の説明的な実施例の別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図5】図1の本発明に係る装置の説明的な実施例のさらに別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図6】図1の本発明に係る装置の説明的な実施例のさらに別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図7】本発明に係るCDRシグナリング装置の別の実施例を示す簡略化された概略ブロック線図である。
【図7A】本発明に係るCDRシグナリング装置のさらに別の実施例を示す簡略化された概略ブロック線図である。
【図8】図7の本発明に係る装置の説明的な実施例の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図9】図7の本発明に係る装置の説明的な実施例の別の一部をより詳細に示したものであるがなお簡略化された概略ブロック線図である。
【図10】本発明の以上の図面に示された特徴ならびにその他特徴を組合わせたプログラマブルロジックデバイスの説明的な実施例の代表的な部分を示す簡略化された概略ブロック線図である。
【図10A】本発明に係る図10の回路内に含まれることができる回路の説明的な実施例を示す簡略化された概略ブロック線図である。
【図10B】本発明に係る図10の回路内に含まれることができる別の回路の説明的な実施例を示す簡略化された概略ブロック線図である。
【図10C】本発明に係る図10の回路の代表的な部分の可能な変更の説明的な実施例を示す簡略化された概略ブロック線図である。
【図11A】本発明に係る図10に示される形式の回路の代替的な実施例を示す簡略化された概略ブロック線図である。
【図11B】本発明に係る図10に示される形式の回路の別の代替的な実施例を示す簡略化された概略ブロック線図である。
【図11C】本発明に係る図10に示される形式の回路のさらに別の代替的な実施例を示す簡略化された概略ブロック線図である。
【図12】本発明に係る回路を使用するシステムの説明的な実施例を示す簡略化された概略ブロック線図である。
【図13A】図11Bの回路の代表的な部分の説明的な実施例をより詳細に示す簡略化された概略ブロック線図である。
【図13B】図11Bの回路の別の代表的な部分の説明的な実施例をより詳細に示す簡略化された概略ブロック線図である。
【発明を実施するための形態】
【0014】
図1には、本発明に係るCDRシグナリング装置10の説明的な実施例が示されている。この装置はCDR信号源(ソース)20とレシーバ40とから構成されている。要素20と40は同一の集積回路上に設けることができるが、これは一般的なケースを示したものであり、これらは集積回路または回路アセンブリのより典型的な各部分である。例えば、図12に示されているようなシステムにおいて、レシーバ40は要素500/600の一部であるのに対し、ソース20はその他の要素(要素群)1004,1006,1008および/または1010の一部とすることができる。
【0015】
CDR信号源20は基準クロック信号源22とCDRデータ信号源30を備えており、このCDRデータ信号源は従来型のものまたは実質的に従来型のものとすることができる。基準クロック信号源22は、CDRデータ信号源30によって形成されるCDRデータ信号内に埋め込まれたクロック周波数に対して正確な周波数相関性を持った基準クロック信号を形成する。例えば、基準クロック信号源22は、CDRデータ信号内に埋め込まれたクロック周波数と同じ周波数かまたは適宜な分数あるいは倍数の周波数を有する基準クロック信号を形成することができる。特に、基準クロック信号周波数REFCLKは埋め込まれたクロック周波数EMBCLKに対して以下の相関性を有し:
REFCLK*W=EMBCLK
ここでWは0.5,1,2,4等の適宜なスケールファクタとすることができる。要素22と30の間の点線はこれらの要素の出力の間に周波数相関性があることを示しており、従ってソース22によって形成される基準クロック信号の周波数(またはこの信号の任意の分数あるいは整数倍の周波数)がCDRデータ信号の周波数を確立するために要素30によって使用され得る。しかしながら、要素20と30の出力信号の間に特定の位相関係が存在する必要はない。
【0016】
基準クロック信号源22の出力信号は一般的な差動シグナリングドライバ24に付加されリード26aおよび26b上にペアの差動REFCLK出力が形成される。(オプショナルとして、必要であれば要素20と40の間において基準クロック信号を単一の信号として単一のリード上で伝送することもできる。)
【0017】
前述したように、CDRデータ信号源30は従来型のCDRデータ信号源とすることができる。この信号は一般的な差動シグナリングドライバ32に付加されリード34aおよび34b上にペアの差動CDR出力信号が形成される。(ここでも再びCDRデータ信号の差動シグナリングはオプショナルであり、CDRデータ信号は要素20と40の間において単一のリード上で伝送することもできる。)
【0018】
レシーバ40においてリード26aおよび26b上の差動REFCLKは一般的な差動ドライバ42に付加され、この受信したREFCLKを変換して単一リード上の信号に戻しCDR回路50に付加する。同様に、リード34aおよび34b上の差動CDRデータ信号は一般的な差動ドライバ44に付加され、受信したCDRデータ信号を変換して単一リード上の信号に戻しCDR回路50に付加する。
【0019】
CDR回路50は、受信したREFCLKとCDRデータ信号を使用してCDRデータ信号からクロック信号とデータ信号を抽出する。これらの信号はデシリアライザ60に付加され、これは付加された直列データを並列データに変換する。並列データ信号はCDR回路50によって形成されたクロック信号と同期させてシンクロナイザ70に付加する。シンクロナイザ70は、並列データをバッファしてPLDコア80によってシンクロナイザ70に供給される別のクロック信号82に同期させてPLDコア80に最終的に付加する。
【0020】
図1AにはCDRシグナリング装置10′の代替的実施例が示されており、これにおいてはレシーバ40によって使用される基準クロック信号源22′がCDR信号源20′から分離されている。CDR信号源20′は、基準クロック信号をレシーバ40に送信するための図1に示された要素24に相当する要素を備えていない点を除いて基本的に図1のCDR信号源20と同様なものである。これに代えて、独立した基準クロック信号源22′がリード26a′および26b′を介して基準クロック信号をレシーバ40に送信する。基準クロック信号源22′は図1の基準クロック信号源22と類似のものとすることができ、図1のソース22に対して述べた全てのものが図1Aのソース22′対して同様に適用することができる(勿論、ソース22′がソース20′から独立しておりソース30に対して入力またはクロック基準を提供しない点は除く)。加えて、ソース22と22′の間には正確で既知の周波数相関性が必要であるが(再び、これらの周波数間には0.5,1,2,4等のスケールファクタが存在し得る)、これらのソースの周波数は同一である必要は無いとともにソース22と22′の間に特定の位相相関性がある必要は無い。図1Aのレシーバ40は図1のレシーバ40と同等なものとすることができる。
【0021】
図1Aに示されているタイプの構成はソース20′とレシーバ40とが比較的遠くに離間している場合に使用することができ、大きく離れた要素20′と40との間においてCDRデータリード34と基準クロックリード26の両方を動作させることを不要にし得る。この場合、ソース22′はレシーバ40に対して比較的に近接して配置することができ、従ってリード34のみを比較的長くする必要があり、他方リード26′は比較的短いものとすることができる。特徴的な説明として、要素20′および40はそれぞれ異なった領域に設けることができ、ソース22′はレシーバ40の近くに設け従ってCDRデータ信号34自体のために領域間リンクのみが必要となる。(これに関して、リンク34,26,26′のいずれかを代替的に単一信号とすることができ、これらは代替的にワイヤ線等のその他の手段によって(全体的または部分的に)伝送することができることに着目すべきである。例えば、これらは全体的または部分的に無線、光線、またはその他の好適な方式で伝送することができる。これと同じことが、図7および図7Aに示されているようなその他の実施例においても伝送ことが必要な信号に対して有効である。)
【0022】
図2には、CDR回路50の部分100の実施例がより詳細に示されている。回路100は基本的に位相ロックループ(“PLL”)回路であり、従って場合によってそのように呼称することがある。PLL100は位相周波数検出器(“PFD”)回路110を備えており、これは図1のバッファ42によるREFCLKならびにWプリスケーラ回路の出力信号を受信する。PFD110は従来型のものとすることができ、受信した2つの信号の位相と周波数を比較してREFCLK信号の位相および周波数がより適正に一致するためにプリスケーラ140の出力信号がスピードアップすべきかまたはスローダウンすべきかを示す信号を出力する。チャージポンプ回路120(これも従来型のものとすることができる)はPFD110の出力信号を積算してVCO電流制御信号を形成し、これは電圧制御発振器(“VCO”)130の出力信号(Wプリスケーラ140によって処理された後)が位相および周波数に関してREFCLK信号により適正に一致するような方式でVCO130を制御するために適したものである。VCO130の出力信号はWプリスケーラ140に付加され、これはVCO出力信号をスケールファクタWで除算しPFD110に付加される2つの信号のうちの一つを形成する。スケールファクタWは、前述したREFCLKとEMBCLKの相関において使用したものと同一の数値とされる。Wプリスケーラ140は、いくつかのW数値のうちのいずれかを使用して動作するようプログラム可能であるか、またはその他の方式によって制御可能であることが好適である。例えば、所要のW値をレシーバ40の一部分である1つまたは複数のプログラム可能な機能制御要素(“FCEs”)内に記録することができる。
【0023】
PLL100の説明から、この回路の動作はVCO130がEMBCLK周波数に殆ど一致する周波数で動作することを誘起するものであることが明らかである。VCO130は8個のクロック信号を出力し、これらは全てEMBCLK周波数を有しているが相互に位相シフトしており、従ってこれらは全体としてEMBCLK信号の周期を8個の同等な時間インタバルに分割している。VCO130は、広範な動作周波数で動作することを補助するためにプログラム可能とするかまたはその他と方式によりD信号によって制御可能とすることができる。例えば、D信号はVCO100の“荒”調整と呼ばれるような制御を行い、一方チャージポンプ120からのVCO電流制御信号はVCOの“細密”調整のためのものである。所要のD値は、レシーバ40の一部分である1つまたは複数のプログラマブルFCE内に記憶することができる。
【0024】
図2に示されたリセット信号はPLL100をリセットして制御された方式による始動を許可することを可能にする。例えば、PLL100内において同期ロック喪失(ロス・オブ・ロック)状態が検出された場合にPLL100のリセットが必要あるいは要望されるものとなる。(種々のリセット動作のこれらおよびその他の特徴はこの明細書において後により詳細に説明される。)リセット信号はチャージポンプ120、VCO130、およびWプリスケーラ140をリセットする。W、D、およびリセット信号は全てPLDコア80から送信される(図1)。
【0025】
図2に示されているパワーダウン信号は、PLL100が使用されない場合にこれをターンオフすることを可能にする。このことはパワーダウン信号によってVCO130への電流をターンオフすることによって実施される。このことは、以下に詳細に記述する図3に示されたVCO130構成例において、電流源131をターンオフしその結果差動ドライバ132への電流をターンオフすることによって実施することができる。パワーダウン信号はPLL100に結合されたFCEから送信することができる。このようにしてPLL100をターンオフすることによってPLLが使用されない場合に電力を節約することができる。
【0026】
図3には、VCO130の説明的な構成の一部がより詳細に示されている。差動ドライバ132a−dは閉ループ列として相互接続される。このループの1つの完全な回路を作成するための信号伝達(正式なまたは補完的なパスを介して)に必要とされる時間は、クロック信号の周期の半分である。各ドライバ132が動作する速度、従ってループの信号伝達速度は、(少なくともある程度は)電流源131からドライバに提供される電流量によって決定されるものとなる。(図2に関連して前述した)D信号は、電流源131が動作するいくつかの電流レンジのいずれか1つをプログラムによって選択するために使用することができる。従ってD信号は前述した電流源131ならびにVCO130の“荒”調整を制御する。(図2のチャージポンプからの)VCO電流制御信号は、電流源131によって提供される電流の追加的な動的制御を実施する。特に、VCO電流制御信号は電流源131によって提供される電流をD信号によって選択されたいずれかのレンジ内において調節する。このようにしてVCO電流制御信号は電流源131ならびにVCO130の動的な“細密”制御を実施する。(同様に図2に関連して説明したパワーダウン信号はPLL100が全く使用されないケースにおいて電流源131をプログラムによってターンオフするよう使用し得る。)
前述した説明から、(D信号を使用して選択される、可能ないくつかの周波数レンジいずれかの範囲において)クロック信号の周波数はVCO電流制御信号を変化させることによって上昇または低下させることができることが理解される。ドライバ132の閉ループを通じた真または補のパスは、全体としてクロック信号周期を8つの等時間インタバルに有効に分割する8つの点においてタップされる。これらの8つの点における信号は、前述した8つの等間隔で位相シフトされたクロック信号として出力される。
【0027】
VCO130内において差動ドライバ132に代えてシングルエンド型のドライバを使用することもできるが、いくつかの理由のため差動ドライバの方が好適である。それらの理由のうち1つは、差動ドライバはノイズが少ない傾向があるためである。差動ドライバはより小さな入力信号振幅において動作するよう形成することがより簡単である(例えば、3Vの代わりに300mV)。差動ドライバはさらにより簡単に高速化することができ、より効果的にジッタを防止し、ノイズに対する抵抗力もより高いものである。VCO130に差動ドライバを使用することが好適である別の理由は、VCOによって差動出力信号が必要とされるからである。前述した電流制御に代えてVCO130の電圧制御を使用し得ることは勿論であるが、現状において電流制御が好適である。
【0028】
CDR回路50の別の部分150の実施例が図4に示されている。少なくとも特にアナログ回路において有利であるPLL100と異なって、図4に示された回路150はデジタル回路とすることが好適である。デジタルであるとともに位相ロックループのごとく動作するため、回路150は本明細書においてデジタル位相ロックループ(“DPLL”)回路150と称することもある。
【0029】
DPLL150は、(図1のドライバ44からの)CDRデータ信号とマルチプレクサ190によるクロック出力信号の両方を受信する位相検出器160を備えている。以下により詳細に説明するように、マルチプレクサ190の2つの出力のうちのいずれか1つはCDRデータ信号の立ち上がりエッジと比較することを目的としており、マルチプレクサ190の2つの出力のうちの他の1つはCDRデータ信号の立ち下りエッジと比較するためのものである。位相検出器160は受信した信号の位相を比較し、CDRデータ信号内のトランジション位相と共により有効に動作するためにクロック信号をスピードアップする必要がある場合にUP出力信号パルスを形成し、CDRデータ信号内のトランジション位相と共により有効に動作するためにクロック信号をスローダウンする必要がある場合にはDOWN出力信号パルスを形成する。これらのUPおよびDOWN信号パルスは位相補間ステートマシン162に付加される。
【0030】
位相補間ステートマシン162は、UPおよびDOWN信号のそれぞれに対して内部状態を変更することによって応答する。しかしながら、ステートマシン162は、受信した全てのUPまたはDOWN信号パルスに応答して出力信号を形成するわけではない。代わりに、ステートマシン162は、受信した信号内に所定の傾向が見られた後のみにさらなるUPまたはDOWN信号パルスを出力する。言い換えると、ステートマシン162はデジタルローパスフィルタのように動作し、図4の回路の残り部分が位相検出器160によって形成される極短時間の位相不整合表示に過剰に速く反応することを防止する。従ってステートマシン162は、図4に示された回路に所要の待ち時間をもたらす(回路162のデバッグ出力はオプショナルのものであり、必要であれば回路の性能を監視するために使用される。)
【0031】
ステートマシン162によって出力されるUPおよびDOWN信号パルスは、UP/DOWNカウンタおよびデコーダ回路164によってカウントおよびデコードされる。(回路164のデバッグ出力信号もオプショナルであり、さらに回路性能を監視するためのものである。)回路164の出力のうちのいくつかはクロックマルチプレクサ回路170によって使用され、(1)PLL100からの8個のクロック信号のうちCDRデータ信号の立ち上がりエッジに最も適合して動作する2つを選択し、PLL100からの8個のクロック信号のうちCDRデータ信号の立ち下がりエッジに最も適合して動作する2つを選択する。前述の説明により、選択されたクロック信号のそれぞれは位相に関して直ぐ隣接(8個のクロック信号の中にある8個の位相の中から)している信号を含むことが明らかである。さらに、各ペアの信号のうちのそれぞれが別のペアの中の信号のそれぞれ1つに対して位相が180°離れていることが理解される。従って、8個の入力クロック信号の中から、回路170は4個の出力クロック信号を動的に選択する。例えば、8個の入力クロック信号について位相順に0−7の番号を付けると、回路170は一定の時間周期の間にCDRデータ信号の立ち上がりエッジに最も適合して動作するものとしてクロック信号0および1を選択し、CDRデータ信号の立ち下がりエッジに最も適合して動作するものとしてクロック信号4および5を選択する。回路170によって選択された4つのクロック信号は、アナログ補間回路180ならびにデジタル補間回路182に付加される。デバイスの使用者は、これら2つの補間回路のうちいずれを使用するかを選択することができる。
【0032】
アナログ補間回路180は、回路170から受信した各クロック信号のペア内の2つのクロック信号間の時間インタバルを8個の等しいサブインタバルに分割するよう動作する。アナログ補間回路180はさらに回路164の出力信号を受信し、これは各ペアのクロック信号に対して前記サブインタバルのうち1つを選択するとともにこのサブインタバルと同期するシフトされたクロック信号を形成するよう補間回路を制御する。選択されたサブインタバル(およびシフトされたクロック信号)は、CDRデータ信号内の立ち上がりまたは立ち下がりエッジのうち適宜の1つに最も適合して動作するものである。従って、アナログ補間回路180によって形成された2つのシフトされたクロック信号は、それぞれCDRデータ信号内の立ち上がりエッジまたは立ち下がりエッジとともに動作するように最適化(または殆ど最適化)されたものである。マルチプレクサ190はこれらの2つの信号を位相検出器160にフィードバックするようプログラムによって制御する(FCEによって)ことができる。マルチプレクサ190の立ち上がりエッジと共に動作する信号出力は図4の回路の復元されたクロック出力信号でもある。位相検出器160は、その他の機能(前述された)に加えて、マルチプレクサ190によってフィードバックされた信号のうち1つによってクロックされるレジスタにCDRデータ信号を伝送し、図4のリタイムされたデータ出力信号を形成する。このリタイムされたデータ出力信号は、本発明の装置によってさらに(復元されたクロック信号を使用して)処理されるデータ信号である。
【0033】
次にデジタル補間回路182を参照すると、回路170によって出力された2つのペアのクロック信号を受信し、回路164からの制御信号に基づいて各ペアの中からより好適なタイミングを有する1つの信号を選択する。マルチプレクサ190は、回路182によって選択された2つの信号を前述した使用目的(回路180の出力信号の代わりに)のために出力するよう制御され得る。
【0034】
図4に示されたリセット信号は、一般的に図2のリセット信号と同じ目的を有している。従って、DPLL150をリセットすることが必要あるいは要望される(例えばロックの喪失状態が検出されて)場合、要素162,164,180および182をリセットするようリセット信号が発行される。図2のリセット信号と同様に、図4のリセット信号もPLDコア80(図1)から発信される。
【0035】
図4に示されたパワーダウン信号は、DPLL150が使用されない際に全ての8個の入力クロック信号をゲートオフするよう使用される。入力クロック信号の全てをゲートオフすることによって、図4の回路は全く動作せず従って電力を極僅かに消費するかあるいは全く消費しない。
【0036】
前述の説明から、適宜な動作周期の後、DPLL150の出力信号が図1のドライバ44によって受信されたCDRデータ信号内に埋め込まれたクロック信号と実質的に等しい位相および周波数を有することが理解される。適正な周波数はPLL100によって確立され、これはさらにその周波数を有するとともにいくつかの異なった候補位相を有するクロック信号の一群を形成する。DPLL150は最適な候補位相(マルチプレクサ170の出力信号)を取り出し、その後候補の間で適正な調節または選択を実施することによって位相選択をさらに改善する。DPLL150は、さらにPLL出力と入力されたCDRデータ信号内に埋め込まれたクロック情報との間に生じ得る比較的小さな相違にも留意することができる。言い換えると、DPLL150は、充分なCDRデータ伝送を妨害することなくこのような比較的小さな周波数相違が存在することを可能にする。この能力は、図1Aに示されているように実際のCDRクロックとREFCLK信号に対して異なったソース22および22′が使用される実施例の動作を補助するものである。
【0037】
図5には、デシリアライザ60(図1)の説明的な実施例がより詳細に示されている。この実施例において、デシリアライザ60は、マルチステージシフトレジスタ200とマルチステージパラレルバッファレジスタ210とプログラマブルディバイダ220とを備えている。例えば、レジスタ200および210のそれぞれは20のステージを有し、ディバイダ220は付加されたクロック信号を1ないし20の選択可能な複数の数値Jのいずれかによって除算する(1つまたは複数のFCEを使用して)ようプログラムすることができる。DPLL150(図4)からのリタイムされたシリアルCDRデータは、シフトレジスタ200のシリアルデータ入力に付加される。シフトレジスタ200はさらにDPLL150からの復元されたクロック信号を受信する。従って、シフトレジスタ200は、EMBCLKのレートかつCDR信号内に埋め込まれたクロック信号情報と完全に同期してシリアルデータをいくつかのステージにシフトする。
【0038】
各タイムディバイダ220はJの数値と等しい数のクロックパルスを受信し、ディバイダ220の出力信号は、バッファレジスタ210がクロック信号に応答してシフトレジスタ200の水平方向に隣接するステージの内容を記憶することを可能にするレベルに転換する。言い換えると、シフトレジスタ200はデータをシリアルに記憶し、バッファレジスタ210はシフトレジスタ200の内容を周期的かつパラレル受信および記録する。Jはデシリアライザ60によって出力される各ワードの長さ(すなわちワードごとのビット数)である。デシリアライザ60の別の出力信号は、Jによって除算されたクロック信号(すなわちCLK/J)である。
【0039】
図5に示されているJおよびリセット信号はPLDコア80(図1)から提供される。前述した他のリセット信号と同様に、図5のリセット信号は回路をリセットすることが必要あるいは要望される場合にディバイダ220をリセットするよう使用される(例えば、ロックの喪失が検出されたことによって)。
【0040】
図6には、シンクロナイザ70(図1)の説明的な実施例がより詳細に示されている。この実施例において、シンクロナイザ70はRAMアレー250と書き込みアドレスロジック260と読み取りアドレスロジック270とを備えている。これらの要素は独立した読み取りおよび書き込みを備える先入れ先出し(“FIFO”)メモリとして動作する。書き込みアドレスロジック260は、基本的にデシリアライザ60(図5)によって出力されたCLK/J信号内のパルス数を(繰り返しサイクルで)カウントするリングカウンタとすることができる。従って、書き込みアドレスロジック260は、CLK/J信号内のパルスと同期して繰り返しサイクルで、連続するワード記憶ロケーションをRAMアレー250内にアドレスする。ENW信号が適正なレベルを有していると仮定すると、RAMアレー250はデシリアライザ60からの信号内のデータを受信および蓄積するよう付勢される。このようにして、デシリアライザ60から提供された連続するパラレルデータワードは、RAMアレー250内の連続するワード記憶ロケーションに蓄積される。前述したようにRAM250への書き込みはENW信号によって選択的に付勢され、この信号はPLDコア80(図1)から提供することができるとともに、RAMアレー250がFULL出力信号(以下に説明する)を形成するまで付勢する。
【0041】
読み取りアドレスロジック270は書き込みアドレスロジック260とは別のリングカウンタとすることができる。しかしながら、読み取りアドレスロジック270は、デシリアライザ60からのクロックパルスをカウントする代わりにPLDコア80(図1)によって形成されたクロックパルス(CORECLK)をカウントする。従って、読み取りアドレスロジック260はENR信号によって読み取りが付勢されている限りRAM250内の連続するロケーション(このロケーションはCORECLKと同期して繰り返しアドレスされる)からデータワードを読み取ることを誘起する。ENW信号と同様にENR信号も通常PLDコア80(図1)から提供され、特にRAMアレー250がEMPTY出力信号(以下に説明する)を形成しない限り付勢を行う。RAMアレー250から読み取られるデータワードはPLDコア80に付加される。
【0042】
前述した説明から、RAMアレー250とこれに結合された要素が可能な2つのクロックレジーム(すなわちCDRクロックおよびPLDコアクロック)の間でデータをバッファすることが理解される。例えば、データワードのPLDコア処理は、時々入力されたCDRデータ流に遅れることがあり得る(例えば、割り込みの最中あるいはシンクロナイザ70に付加されたCORECLK信号のスローダウンに際して)。その後PLDは入力されるCDRデータ流に追いつくためにデータをより高速に処理することができる。RAMアレー250(または結合された要素)は、PLDコア80に付加されるFULLおよびEMPTY信号を形成し、RAMアレーが充満または空状態である際にこれをそれぞれPLDコアに伝達することができる。例えば、FULL信号に応答してPLDコア80はシンクロナイザ70からのデータの読み取りをスピードアップするか、および/または使用者がFULL信号に応答してENW信号を使用することによってPLDコア80にRAMアレー250への新たな書き込みを中止させることを選択できる。EMPTY信号に応答してPLDコア80はシンクロナイザ70からのデータの読み取りをスローダウンするか、および/または使用者がFULL信号に応答してENR信号を使用することによってPLDコア80にRAMアレー250からの新たな読み取りを中止させることを選択できる。
【0043】
図6に示されたリセット信号は、回路をリセットすることが必要または要望される際(例えば、ロックの喪失の検出に応答して)にRAMアレー250の内容を消去するために使用される。前述した他のリセット信号と同様に、図6のリセット信号もPLDコア80(図1)から提供することができる。
【0044】
図7には、本発明に係る別のCDRシグナリング装置300の説明的な実施例が示されている。再び、主要な構成要素310および320は同一の集積回路上に設けることができるが、これらはより典型的には分離された集積回路または回路アセンブリの一部とされる。例えば、図12において、要素320は要素500/600と結合することができ、一方要素310はその他のいずれかの要素1004,1006,1008および/または1010と結合することができる。
【0045】
装置10において、PLDコア80はCDR信号のレシーバ40と結合されている。装置300において、PLDコア80はCDR信号のトランスミッタ320に結合される。ここで再び、CDRクロック信号の周波数に関して広範なレンジが予想されるCDRレシーバ310と交信し得るプログラム可能なPLDベースのトランスミッタの提供を達成するために、装置300はレシーバ310内に基準クロック信号源22を備えている。要素22,24,26,42および100はいずれも図1および図2の同一参照符号の要素と類似のものである。従って、基準クロック信号源22の出力信号の周波数(REFCLK)は所要のCDRクロック信号周波数(EMBCLK)に対して以下の相関性を有しており:
REFCLK*W=EMBCLK
ここでWは0.5,1,2,4等の適宜なスケールファクタとすることができる。この基準クロック信号は図1に関連して記述したようにトランスミッタ320に伝送される。トランスミッタ320内のPLL100は図2に関連して記述したようにこの信号を処理し、所要のCDRクロック周波数に正確に等しい周波数を有する出力信号を形成する。この信号は図2の出力と同様に8個のクロック信号のうち1つとすることができ、これはこの信号の位相が重要ではないからである。(以下により詳細に記述するように、一般的なCDR信号レシーバ350は位相多様型であり、従って特定の位相を有する受信CDR信号に束縛されることはない。)
【0046】
PLL100によって形成されるCDRクロック信号(または以下に詳細に記述するようにこの信号の数倍のもの)は、シンクロナイザ330ならびにシリアライザ340に付加される。シンクロナイザ330もPLDコア80からデータおよびクロック信号を受信する。シンクロナイザ330は、受信した信号をコア80からのデータをCDRクロック信号に同期させて出力するために使用する。シリアライザ340は通常パラレルであるシンクロナイザ330からのデータを通常シリアルであるCDRデータに変換する。シリアライザ340によって出力されたシリアルCDRデータは、一般的な差動ドライバ342、リード344aおよび344b、ならびに一般的な差動ドライバ346を介してCDR信号レシーバ350に伝送される。(要素342,344および346は、それぞれ図1の要素24,26および42と類似のものとである。図1の場合と同様に差動シグナリングはオプショナルのものである。)一般的なCDR信号レシーバ350は、受信したCDR信号内に埋め込まれたクロック情報を使用して一般的な方式によってこの信号からデータを抽出する。
【0047】
図1に示された装置と同様に、図7の装置は広範なCDR周波数のうちいずれか1つにおいて動作することができる。CDRシグナリングにおいては一般的でないが、レシーバ310内の基準クロック信号源22を使用してトランスミッタ320に基準クロック信号を提供することにより、広範なCDR周波数をサポートするようプログラム可能な総合的なトランスミッタ装置を提供することができる。
【0048】
図7Aには図7に示された回路の代替的な実施例が示されている。図7および図7Aの実施例の関係は、図1および図1Aの実施例の関係と同様である。図7Aは、基準クロック信号源22′をレシーバ310′から分離し得ることを示している。(他の点においてソース22′はソース22と同様である。)図1Aの場合と同様に、トランスミッタ320に近接するものとし得る分離されたソース22′を提供することによって、要素310′と320を互いに比較的大きく離間して配置することができ、これはCDRデータ信号のみ(REFCLK信号は不要)を要素310′と320の間において比較的遠距離を介して伝送する必要があるためである。
【0049】
図8には、シンクロナイザ330の代替的な実施例がより詳細に示されている。この実施例においてシンクロナイザ330は、RAMアレー360、書き込みアドレスロジック370、クロックディバイダ380、および読み取りアドレスロジック390を備えている。RAMアレー360は、PLDコア80(図7)から書き込みアドレスロジック370に付加されたCORECLK信号と同期してPLDコア80からのパラレルデータワードを受信する。書き込みアドレスロジック370は図6の書き込みアドレスロジック260と同様なものとすることができ、繰り返しサイクルでRAMアレー360内に連続するデータワード記憶ロケーションをアドレスする。従ってPLDコア80によって提供された連続するデータワードは、同様にPLDコア80によって提供されるENW信号によって書き込みが付勢されている限り、CORECLK信号に同期させながら繰り返しサイクルでRAMアレー360内の連続するロケーション内に記憶される。コア80は通常RAMアレー360がFULL信号を形成しない限り書き込み付勢ENW信号を提供する。
【0050】
クロック信号周波数ディバイダ380は、PLL100(図7)によって出力されたCDRCLK信号をJによって除算する。Jの数値はプログラム可能な装置パラメータとすることが好適である(例えば、1つまたは複数のFCE内に記憶される)。図5に関連して記述したように、Jは図8の装置がPLDコア80(図7)から受信した各パラレルデータワード内のビット数に等しい整数である。ディバイダ380の出力信号は読み取りアドレスロジック390に付加される。ロジック390は図6の読み取りアドレスロジック270と同様なものとすることができる。従って、ロジック390は繰り返しサイクルでRAMアレー360内に連続するワード記憶ロケーションをアドレスし、同様にコア80から提供されたENR信号によって読み取りが付勢されている限りディバイダ380からの出力信号に同期して前記ロケーションからデータワードを読み取る。。コア80は通常RAMアレー360がEMPTY信号を形成しない限り読み取り付勢ENR信号を提供する。RAMアレー360から読み取られたデータは、シリアライザ340(図7)にパラレルで付加される。
【0051】
前述の説明から、シンクロナイザ330(図6のシンクロナイザ70と同様に)が可能な2つのクロックレジームの間でデータをバッファするFIFOメモリのように動作することが理解される。この場合、バッファされるデータはシリアライザ340へ伝送中のPLDコア80からのデータである。既に記述したように、シンクロナイザ330は、充満または空状態に際してPLDコア80に対してそれぞれFULLまたはEMPTY信号を形成することができる。
【0052】
図8に示されたリセット信号は、回路をリセットすることが必要あるいは要望される際に(例えばロックの喪失が検出されたことに応答して)、RAMアレー360の内容を消去しディバイダ380をリセットするために使用される。前述した他のリセット信号と同様に、図8のリセット信号もPLDコア80(図7)から提供することができる。
【0053】
図9にはシリアライザ340の説明的な実施例がより詳細に示されている。この実施例において、シリアライザ340はパラレルデータレジスタ400およびシフトレジスタ410を備えている。図8のクロック周波数ディバイダ380も再び使用される。RAMアレー360からのパラレルデータはレジスタ400に付加され、ディバイダ380の出力信号によってゲートされたCDRCLK信号パルスに応答してこのレジスタ内に記憶される。(図9に示されたCDRCLK信号は図8内の類似の標記のものと同等とすることができる。)レジスタ400に記憶されたデータは、ディバイダ380の出力信号がレジスタ410に対してCDRCLK信号パルスの間にデータを受信するべきであることを指示している際に、CDRCLK信号パルスに応答してシフトレジスタ410へパラレル伝送される。CDRCLKパルスの間、シフトレジスタ410はそのシリアルデータ出力リードの方向へデータをシフトさせる。特に、シフトレジスタ410は、各CDRCLKパルスに応答してその内容をそのシリアルデータ出力リードの方向に1ステージシフトさせる。従って、シリアライザ340は、Jビットの各パラレルデータワードをCDRCLK信号に同期したシリアルCDR出力に変換する。結果として得られるCDRデータ信号は差動ドライバ342に付加され、図1においてCDRデータ信号がソース30からレシーバ40へ伝送される場合と同様な方式でレシーバ310に伝送される。
【0054】
図10には、前述したレシーバ40(図1)およびトランスミッタ320(図7)の全ての機能ならびに以下に記述する追加的な機能を備えたPLD500の説明的な実施例の代表的な部分が示されている。図10内の構成要素は既に記述した同一の参照符号を有する要素と類似のものである。図10において、2つ以上使用される要素を個別に参照するために“a”および“b”添え字が付けられている。図10において、500番台の参照符号は以前の図には特に示されていないかあるいは図10において追加された要素対して使用しており、従って以前の図には対応するものは存在しない。図10において、いくつかの要素は、以前の図に関連して説明されたCDRシグナリングモードに対する代替的なシグナリングモードをサポートするためのオプショナルとして変更あるいは追加されている。例えば、図1または図7において提供されたクロック信号は差動信号でなければならないことはなく、代わりにシングルエンド信号とすることもできる。図10はこの代替方式をサポートする装置を示している。別の例として、図10は非CDR低電圧差動シグナリング(“LVDS“)をサポートする装置を示している。(非CDR−LVDSに関する追加的な技術背景は、例えば1999年6月25日提出のグエン氏等の米国特許出願第09/34022号を参照すべきである。)
【0055】
図面の過密化を防止するため、図10には以前の図の全ての回路が繰り返し示されているわけではないことは勿論である。例えば、図10には以前のいくつかの図に示された種々のリセットならびにパワーダウン信号は示されていない。さらに、図10には以前のいくつかの図に示されたENWおよびENR信号は示されていない。しかしながら、図10の回路においてもこれらの信号が好適に存在するこは勿論である。
【0056】
まず入力面について説明すると、図10には2つの代表的な入力クロックサブ回路が示されている(例えば、CDRシグナリングに関連して、代替的にLVDSクロック信号を受信するためのPLL100bおよびこれに結合された回路の場合に使用される基準クロック信号)。図10にはさらに2つの代表的なデータ入力サブ回路が示されている(例えばCDRまたはLVDS信号を受信するために)。これらの種々のサブ回路は互いに完全にまたは部分的に独立するか、または広範な組合せで統合して使用し得ることは勿論である。例えば、いくつかのサブ回路をCDRシグナリングのために使用し、その他のサブ回路をLVDS用にすることができる。デバイス500はこれらの種々のサブ回路をさらに多くまたは全て備え得ることが理解される。
【0057】
典型的なクロック入力サブ回路は要素42a,510a,512および100aからなる。要素510aは単純なドライバであり、入力されるクロック信号(例えばCDR基準クロック信号)が差動ではなくシングルエンドである際に差動ドライバ42aに代えてプログラムによって選択することができる。プログラマブルロジックコネクタ(“PLC”)512は、ドライバ42a/512aの出力信号およびPLDコア80内のいくつかのグローバルクロック信号コンダクタ520のいずれか上のクロック信号の中からPLL100aに付加されるクロック信号をプログラムによって選択することを可能にする。例えばPLL100aがLVDS伝送のためのクロック信号を形成するために使用される際にグローバルクロック信号のうちの1つを選択することができる。この目的で使用する場合、PLL100aによって形成されたクロック信号はLVDS差動ドライバ530を介して出力される。伝送(LVDS伝送を含む)については本明細書において後により詳細に説明する。PLL100bはLVDS伝送に使用することができないため、このPLL100bに結合されたPLC512は備えていない。しかしながら、PLL100bはLVDS入力に付随する必要があるクロック信号のために使用される。以前に記述したものと同様にCDRシグナリングに使用する場合、PLL100aはドライバ42aまたは510aの出力信号を受信し、8個の位相シフトされた候補CDRクロック信号を出力する。同様な8個の信号グループがPLL100bによって出力され得る。
【0058】
図10においてPLL100は以前の図には示されていない別の出力信号を有することができる。これは各PLLに結合されたリード514上の“ロックの喪失”信号である。このロック喪失信号は結合されたPLLが付加されるクロック信号にロックされているかどうかを示すフラグである。ロック状態を示すロック喪失信号数値は、例えばPFD110(図2)の出力信号が予め設定された時間インタバルにわたって比較的低振幅であった後に形成することができる。そうでない場合、ロック喪失信号はロックが喪失されたことを示す数値に伴って形成される。リード514上の信号は、PLDコア80のプログラマブルロジックが必要とするいずれかの使用目的のためにこのコアに付加される。例えば、コア80は、その時点でロックの喪失が示されているサブ回路から受信したデータを無視するか、および/またはこのサブ回路に対して前述したリセット信号を形成するようプログラムすることができる。
【0059】
各DPLL150は結合されたPLC540を備えており、これによってPLL100aまたはPLL100bによる8個の出力信号からなる2つのグループのうちのいずれかを選択してDPLLに付加することを可能にする。従って、各DPLL150はPLL100のうちのいずれかと共に使用することができる。各DPLL150はこれに結合された差動入力ドライバ44(例えばCDR信号の受信用に)を備えている。各DPLL150は、付加されたCDR信号と候補CDRクロック信号を処理して、以前の記述と同様に結合された要素60および220に付加される最終的なCDRクロック信号を形成する。各DPLL150は結合された要素60に付加するリタイムされたCDRデータ信号を形成する(図10においては過密化を防ぐためにCDRデータ入力ドライバ44から結合された要素60へ直接的な接続として示されている)。(DPLL150が全てのLVDSシグナリングに使用されるわけではないことは勿論である。このため各DPLL150は、PLL100bの8個の出力信号のうちの選択された1つをこのDPLLをバイパスさせてこのDPLLに結合された要素60および220に付加することを可能にするための結合されたPLC518を備えている。入力されたLVDSデータは、結合されたDPLL150を使用せずに、入力ドライバ44から結合されたデシリアライザ60へ直接伝送される。)
【0060】
図10に示されているように、各DPLL150は前述の説明にはない他の2つの出力を有することができる。これらは各DPLLに結合されたリード516上の“ランレングス違反(RLV)”フラグ、ならびに各DPLLに結合されたリード517上の“デジタルロックの喪失”フラグである。ランレングス違反信号は、結合されたDPLL150が付加されたCDR信号のレベルの遷移(transition)が無いまま許可された数以上のCDRクロック信号サイクルが経過したことを検出した際にランレングス違反を示す数値を有する。この種のランレングス違反信号は各DPLL150内のカウンタ/コンパレータ回路によって形成することができる。カウンタは各CDR信号パルスをカウントするが、CDR信号内の各遷移によってリセットされる。コンパレータは、カウンタ内のカウント数値を、有効なCDR信号内の遷移間において生じることが許される許容CDRクロック信号サイクル数あるいはパルス数を示す、予め設定された数値(好適にはプログラムによって)と比較する。カウンタのカウント数が許容数値を超過したことをコンパレータが示すと、ランレングス違反が生じたことを示すためにランレングス違反数値信号が形成される。
【0061】
図10AにはRLV信号516を形成するために使用することができる回路600の説明的な実施例が示されている。この回路内のアップカウンタ620は復元されたクロック信号パルスをカウントするが(図4のソース参照)、排他的OR(“XOR”)ゲート612の出力信号が高位になる度にゼロにリセットされる。XORゲート612はその入力を介してリタイムされたデータ信号(図4のソース参照)を受信し、さらに別の入力を介してレジスタ610の出力を受信する。レジスタ610は、リタイムされたデータ信号を記録するために復元されたクロック信号によってクロックされる。XORゲート612の出力は、このゲートへの入力のうち1つ(両方ではなく)が高位になる度に高位なる。リタイムされたデータ信号が立ち上がりエッジを有すると、XORゲート612の出力信号が高位になるが(これによってカウンタ620をリセットする)、レジスタ610が依然として先の低レベルのリタイムされたデータ信号を出力し続けるからである。その後、レジスタ610の出力は高位になり、リタイムされたデータ信号が立ち下がりエッジを有していなかった場合XORゲートの出力信号は低位になり、カウンタ620がカウントを開始することを可能にする。この状態(すなわちリタイムされたデータ信号内に立ち下がりエッジが存在しない)が過度に多くの復元されたクロック信号サイクル間にわたって持続した場合、カウンタ620はリード622を介してこれに提供された閾値に到達する。この閾値カウントパラメータはプログラム可能(例えばFCEを使用して)とすることが好適である。閾値カウント値に到達すると同時に、カウンタ620は、レジスタ630をセットしこれによってレジスタ630の出力信号を即座にロジック1に変更する。次のPLDクロック信号(PLDコア80(図10)からの)に対応して、レジスタ640はレジスタ630の高位の出力信号を記録し、これによってランレングス違反が発生したことを示すRLV出力信号516を形成する。レジスタ630は、カウンタ620からのセット信号が除去された後いずれかのPLDクロッ
ク信号パルスに応答してロジック0を出力する状態に回帰する。充分短い時間のうちに立ち上がりエッジが後続していない立ち下がりエッジがリタイムされたデータ信号内に存在することに対して、回路600は一般的に同様な方式で応答する。しかしながら、リタイムされたデータ信号内の立ち下がりおよび立ち上がりエッジが時間的に充分接近している場合、カウンタ622は充分に頻繁にリセットされ、従って閾値カウントには決して到達せずRLVフラグ信号516は形成されない。
【0062】
RLV検出はPLDコア80内で代替的に実行することもできるが、ここに示されるようにCDR回路内に含める方がPLDコアを他の使用目的のために保存できるため好適である。また、RLV検出にPLDコア80を使用する場合よりも早くRLVフラグ信号を得ることができる。回路600のようなRLV検出回路は、高速の復元されたクロック信号の使用を可能にし、これによってRLV状態の検出が高速化される。
【0063】
図10に戻って説明すると、前述したPLL100がロック喪失信号514を形成する場合と同様な状況においてDPLL150によってデジタルロックの喪失信号517が形成される。例えば、デジタルロック喪失信号はDPLL150が予め設定された時間周期の間比較的安定的になるまでこのDPLL150によって形成することができる。安定性のために要求される周期はプログラム可能(例えばFCEによって)とすることが好適であり、これによって回路500を広範なDPLL周波数で使用することを達成する。
【0064】
図10Bには、デジタルロック喪失(“DLOL”)信号517を形成するための回路700が示されている。この回路は、いくつかのロック喪失時間インタバルまたはウィンドウをプログラムによって選択する(例えばリード702上にマルチプレクサ制御信号を提供するFCEを介して)ことを可能にする。a−nの各グループの要素710/712/720/722/730/740は可能なDLOL時間ウィンドウのうちの1つをそれぞれ提供する。各時間ウィンドウは、基本的に要素グループ内のこの時間ウィンドウに相関する要素710および720の遅延によって実行される。例えば、代表的なグループaについて説明すると、遅延要素710aは一定量の遅延時間の後にリタイムされたデータ信号(図4のソース参照)を伝送する。遅延要素720aは復元されたクロック信号(図4のソース参照)を同じ遅延時間の後に伝送する。レジスタ712aは、遅延要素710aの出力信号をデータ信号として受信し復元されたクロック信号によってクロックされる。レジスタ722aはデータ信号としてリタイムされたデータ信号を受信し遅延要素720aの出力信号によってクロックされる。復元されたクロック信号の中の立ち上がりエッジがリタイムされたデータインタバルのそれぞれ略中央に配置されるべきである。従って適宜にタイム設定されると、レジスタ712aと722aの両方がデータを捕捉し、結合されたXORゲート730aの出力信号がロジック0となり、それによってロック喪失問題が発生していないことを示す。他方、リタイムされたデータパルスが充分に遅く要素710aの遅延がレジスタ712aによって記録されるには遅過ぎるようになると、レジスタ712aの出力信号はロジック0となり、一方レジスタ722aの出力信号はロジック1となる。このことによってXORゲートの出力信号がロジック1にされ、これはロック喪失状態を示すものである。同様に、リタイムされたデータパルスが復元されたクロックの立ち上がりエッジに対して早過ぎると、要素720aの遅延はレジスタ722aがデータパルスを記録することを妨害するために充
分なものとなる。このことによってレジスタ722aの出力信号をロジック0にすることができ、一方レジスタ712aの出力信号はロジック1となる。これによって再びXORゲート730aの出力信号がロジック1にされロック喪失問題を示すことができる。
【0065】
XORゲート730によって形成されるいずれのロジック1出力信号も、復元されたクロック信号に応答して結合されたレジスタ740によって記録される。マルチプレクサ750はリード702(前述された)上の信号によってプログラム制御され、レジスタ740の信号のうち任意の1つを出力する。従ってマルチプレクサ750の出力信号は、選択されたレジスタ740を含む要素グループに相関する遅延ウィンドウに基づいたエラー信号である。マルチプレクサ750のいずれのロジック1出力信号も即座にレジスタ760をセットする。レジスタ760のセッティングは、次のPLDクロック信号を受信した際にDLOLカウンタ770によってカウントされる。カウンタ770は、レジスタ760がセットされる限りカウントを継続する。(レジスタ760は、このレジスタ760がマルチプレクサ750からの信号を受信していない間に生じるいずれかのPLDクロックパルスによって有効にリセットされる。)カウンタ770が予め設定された閾値(リード704を介して提供され、また好適にはプログラム可能(FCEを使用して)である)に到達すると、カウンタ770はリード517を介してロック喪失フラグ信号を出力する。図10Bには示されていないが、カウンタ770は必要に応じて(例えばロック喪失の検出ステップが適宜に実行された後)常にリセットする(例えばPLDコア80からの信号によって)ことができる。
【0066】
図10Bに示された種々の異なった遅延は、いくつかのCDRクロック信号周波数レンジのいずれかにおいてロック喪失を検出するために適宜に選択することができる。従って、いくつかの遅延ウィンドウのうちいずれかをプログラムによって選択することは、本発明の回路を広範なCDRクロック周波数のうちいずれかと共に使用するために有用である。この機能は、CDRデータと復元されたCDRクロックとの間のドリフトに対してプログラムによってレベルを選択できる異なった許容差を提供することを可能にする。DLOL回路の感度も、リード704上のDLOL選択信号を介してプログラム選択することができる。
【0067】
再び図10に戻ると、ランレングス違反信号516およびデジタルロック焼失信号517は、考えられるロジックコア80のプログラマブルロジックによる使用のためこのコアに付加される。例えば、コア80は、ランレングス違反信号516がその時点でランレングス違反が発生していることを示す数値を有しているサブ回路(サブ回路群)からの入力データの使用を保留するか、および/またはこのような回路(群)に対して前述したリセット信号を形成するようプログラムすることができる。デジタルロック喪失に対しても同様な動作(あるいは複数動作)を実行することができる。
【0068】
各ドライバ44からのデータ信号(実際はCDRモードにおいて結合されたDPLL150からの)はさらに結合されたデシリアライザ60に付加される。各デシリアライザ60はさらに2つのクロック信号を受信し、1つは結合されたPLC518からのものであり、もう1つは結合されたディバイダ220からのものである。各デシリアライザ60は、入力された信号を使用して付加されたシリアルデータをそれぞれJビットからなる連続するパラレルデータに変換する。データはCDR入力データまたはLVDS等のその他の形式のデータとすることができる。
【0069】
ディバイダ220(またドライバ380)の出力信号は、これらのディバイダの信号のいずれかがPLDコア80内におけるクロック信号として必要である場合に、PLC522を介してグローバルクロック信号コンダクタ520のうちの異なったいずれかに付加される。勿論、クロック信号コンダクタ520上の信号は、ローカル発振器、クロック入力ピン、またはコア80内の出力信号ロジック要素等のその他ソースから代替的に選択することもできる。
【0070】
各デシリアライザ60からのパラレルデータ出力は、以前の図に関連して記述したものと同様に結合されたシンクロナイザ70に付加するか、またはこのデータはシンクロナイザをバイパスし結合されたPLC540を介して直接PLDコア80に付加することができる。前者のルーティングは典型的にCDRシグナリングのためのものであり(必要であればLVDSにも使用できるが)、この場合シンクロナイザ70は結合されたディバイダ220およびPLDコア80の両方からのクロック信号をCDR(またはLVDS)クロックレジームとPLDコアクロックレジーム間の一時的インタフェースを介してデータを伝送するために使用する。特に、PLC542は、PLDコア80内のいくつかのソースからのクロック信号(例えばグローバルクロック信号コンダクタ520のいずれか、またはPLDコア80内のその他の好適なソースからの)を結合されたシンクロナイザ70に対して選択することを可能にする。前述したように、各シンクロナイザ70によるパラレルデータ信号出力は、PLDがそのような選択を行うようプログラムされている場合、結合されたPLC540を介してPLDコア80に付加される。既に説明したように、結合されたPLC540がそのようなルーティングを可能にするようにプログラムされている場合、結合されたデシリアライザ60のパラレル出力を直接PLDコア80に付加するために各シンクロナイザ70をバイパスすることができる。このことは、PLDコア80内で使用されるものと同一のクロックを有するCDRまたはLVDS入力に対して実行される。
【0071】
各シンクロナイザ70の出力信号544(例えば前述したFULLおよびEMPTY信号)も考えられるPLDコア80による使用(例えばコアのプログラマブルロジックによって)のためこのコアに付加される。例えば、PLDコア80は、これらの信号を利用してその時点でEMPTY出力信号を形成しているシンクロナイザ70からの読み取りを一時的に停止することができる。これに代えてまたは追加して、PLDコア80は“ストップ”信号をトランスミッタ(例えば図1の要素20等)に送信しその時点でFULL出力信号を形成しているシンクロナイザ70へのそれ以上のデータ送信を停止することができる。
【0072】
ここで出力面について説明すると、図10には2つの代表的な出力サブ回路が示されている(例えば、CDRまたはLVDS信号の伝送用)。これらのサブ回路のそれぞれは、PLDコア80からのパラレルデータを受信するシンクロナイザ330か始まっている。他方、このデータは結合されたPLC550を介してシンクロナイザ330をバイパスすることができる。このバイパスルーティングはLVDSに使用することができ、一方シンクロナイザルートは以前の図に関連して説明したようにCDRに対して使用することができる。シンクロナイザ330を介するルーティングと仮定すると、このシンクロナイザは結合されたPLC552からのコアクロック信号も受信する。各PLC552は、いずれかのグローバルクロック信号コンダクタ520、コア80内のロジック要素等の可能ないくつかのソースの中からコアクロック信号を選択することを可能にする。各シンクロナイザ330は、さらに結合されたディバイダ380からのCDRまたはLVDSクロック信号(Jによる除算後の)を受信する。(各ディバイダ380はそのCDR/LVDSクロック信号を結合されたPLC360から受信し、これがいずれかのPLL100の出力のうちから使用するCDR/LVDSクロック信号を選択することができる。(CDRの場合、一般的に適正なPLL100の8個の出力のいずれを使用することも可能である。LVDSの場合、スキュー問題を緩和するPLL100aの1出力を選択することが好適である。))従って、各シンクロナイザ330は、以前の図に関連して説明したものと同様に、PLDコアクロックレジームと外部CDRあるいはLVDSクロックレジームとの間でデータをインタフェースすることができる。
【0073】
各シンクロナイザ330に結合されたPLC550は、このシンクロナイザによってデータを出力するか、またはこのシンクロナイザをバイパスして結合されたシリアライザ340にデータを付加することを可能にする。各シンクロナイザ330のその他の出力信号(例えば前述したFULLおよびEMPTY信号)は、結合されたリード554を介してPLDコア80に付加することができる。PLDコア80は、これらの信号を必要とされる任意の方式で使用することができる(例えば、前述したシンクロナイザ70によるFULLおよびEMPTY出力信号の使用と同様に)。
【0074】
前述したように各シリアライザ340は結合されたPLC550のパラレル出力信号をシリアルデータに変換するよう動作し、これは結合された出力ドライバ342に付加される。このため、各シリアライザ340は、結合されたディバイダ380によって導出されたファクタJを介して互いに相関するクロック信号を使用する。前述したように、これらの信号のソースはPLL100の出力信号のうちの1つである。シリアライザ340がCDR信号を処理している場合、このシリアライザに付加されるクロック信号は、ドライバ42または510のうち1つを介してPLD500に付加されたCDR基準クロック信号上で動作するPLL100から伝送される。PLL100aの場合、このPLLに付加するためにCDRクロック基準信号がPLC512によって選択される。他方、シリアライザ340がLVDS信号を処理している場合、このシリアライザに付加されるクロック信号はPLL100aから伝送され、この場合これはPLC512によって選択されたPLDコア80(例えば、いくつかのリード520のいずれか)からのクロック信号(LVDSクロック信号と呼ばれることもある)上で動作する。LVDS出力信号は特にデータとクロック信号とを別々のリード上に有するため、PLL100aはさらにリード528を介してLVDSクロック信号を出力する。この信号は、PLC360に付加されるPLL100aの出力リード上の信号に対して適宜な位相相関性を有する。周波数ディバイダ529によって可能な周波数の調節が行われた後、リード528上のLVDSクロック信号は差動ドライバ520に付加され、これは付加されたクロック信号をLVDS基準に従ってPLD500から出力するための2つの差動信号に変換する。従ってPLD500はドライバ342のいずれか1つまたは複数を介してLVDSデータ信号を出力し得るとともに、ドライバ530を介して同期LVDSクロック信号を出力することができる。
【0075】
ユーザによっては相関するLVDSデータ出力信号の形成に関わる要素100a,330および340によって使用される周波数とは異なった周波数有するLVDSクロック出力信号を要望するため、周波数ディバイダ529が設けられている。例えば、LVDSデータはPLDコア80によって42MHzおよび20ビットで提供することができる。この種のデータを処理するために、PLL100aは840MHzでクロック信号を出力する必要がある(すなわちPLL100aのREFCLKが42MHzであり、このPLL内のWが20である)。結合されたLVDSデータサブ回路内のJも20となる。しかしながら、ユーザはドライバ530から(840MHzではなく)420MHzのLVDSクロック信号を望むこともある。そのため、リード528上の840MHzの出力信号をB(前記の例においてはB=2)で分割するために周波数ディバイダ529が設けられており、その結果ドライバ520は420MHzのLVDSクロック信号を受信ならびに出力する。ディバイダ529はBに関してプログラム可能であることが好適であり(例えば1つまたは複数のFCEを使用して)、Bはその他の複数の数値とすることができる。BはPLDコア80によって周波数ディバイダ529に提供することができる。
【0076】
前述の説明から、PLD500はその入力および出力サブ回路を多様な方式で使用できることが理解される。例えば、広範なCDRおよび/またはLVDS入力および/または出力の組合せを同時に行うことができる。2つのCDRサブ回路を使用する場合、これらのサブ回路は同一または異なったクロック周波数を有することができる。同様に2つのサブ回路を使用する場合、両方が入力し両方が出力するか、または1つが入力、他方が出力を行うことができる。図10に示されたより多数のデータ回路を反復して追加することができ、その結果各クロックサブ回路は任意の数のデータサブ回路と組合わせて使用することができる。LVDSまたはデシリアライザ60および/またはシリアライザ340の使用を必要としないその他のシグナリングモードをサポートまたは実行するために、データ信号がこれらの要素をバイパスすることを可能にする別のルーティングを設けることができる。結果として、広範なCDRシグナリングプロトコルのいずれかをサポートするように回路がプログラム可能であるため、広範な非CDR−LVDSまたはその他のプロトコルに関しても同様に柔軟であることが理解される。
【0077】
必要であれば図10に示された形式の回路を図10Cに示されているように追加的な回路で拡大することができる。各データ信号レシーバサブ回路は、入力ドライバ44と残りのレシーバ回路60/ETCの間に直列接続されたPLC560を備えることができる。(ここでは便宜上プログラマブルロジックコネクタあるいはPLC560と呼称されるが、要素560は時にはPLDコア80によって動的に制御することもできる。しかしながら、便宜上PLCという用語を継続して使用する。PLC570についても同様なことが有効であり、また本明細書中に記載されているその他のPLCについても同様である。)PLC560への別の入力は、結合された出力データサブ回路内のトランスミッタ回路340/ETCの出力である。PLC560は、その入力うちのいずれかをレシーバ回路60/ETCに付加するために選択することができる。PLC560は、この選択を行うようPLC562の出力信号によって制御される。PLC562は、固定されたロジック0信号またはPLDコア80の出力信号をPLC560の制御入力端子に付加するようFCE564によってプログラム制御される。固定されたロジック0を付加する場合、PLC560は常にドライバ回路44の出力信号を回路60/ETCに付加する。PLDコア80の出力信号を付加する場合、この信号はロジック0またはロジック1のいずれかとすることができ、信号レベルは装置の動作中の異なった時点ごとに異なったものとなる。信号がロジック0である場合、PLC560はドライバ44を回路60/ETCに接続する。信号がロジック1である場合、PLC56はトランスミッタ回路340/ETCの出力を回路60/ETCに接続する。
【0078】
要素570,572および574は、図10Cに示された出力サブ回路に関して同様に動作する。従ってPLC570は、トランスミッタ回路340/ETCの出力または入力ドライバ44の出力のうちのいずれか一方をドライバ342に付加することができる。PLC570はこの選択を行うようPLC572によって制御される。PLC572の出力は、FCE574のプログラム状態に従って、固定されたロジック0またはPLDコア80の出力信号のいずれかとすることができる。PLC572の出力がロジック0(固定されたものまたはPLDコア80からのもの)である場合、PLC570は回路340/ETCをドライバ342に接続する。他方、PLC572の出力がロジック1(PLDコア80からの)である場合、PLC570は入力ドライバ44の出力をドライバ342に接続する。
【0079】
前述の説明から、要素560/570およびこれに結合された回路は種々の異なったテストループを提供するために使用し得ることが理解される。例えば、要素560は、トランスミッタ回路340/ETCの出力信号をレシーバ回路60/ETCへ戻すようにルーティングするよう制御することができる。このルーティングは、PLCコア80が回路340/ETCを介してテストデータを伝送し、回路60/ETCを介して返送されたデータを受信することを可能にするため使用し得る。PLDコア80にテストデータが正確に返送された場合、コア80は回路340/ETCおよび回路60/ETCが適正に動作していることを検知する。別の例として、要素570はドライバ44を介して受信したテストデータをドライバ342を介して返送するルーティングを行うよう制御することができる。これは、ドライバ44と342の適正な動作を検査するための便利な方式である。勿論、ドライバ44を介し要素560,60/ETC,80,340/ETCおよび570によって受信したテストデータをドライバ342によって返送する、別のテストモードも可能である。通常の(すなわち非テストモード)ルーティングは、PLC560がドライバ44を回路60/ETCに接続し、PLC570が回路340/ETCをドライバ342に接続するものである。
【0080】
本明細書に記載されている種々の状態監視信号(例えばロック喪失およびランレングス違反信号等)、ならびにユーザがPLDコア80内にプログラムすることができる種々の動作チェック、さらに種々のリセット信号をPLDコア80が使用して、多様な状況下において回路500の多様な部分を自動リセットすることができる。このような考えられるリセット手段の例として、“グローバルリセット”および“チャネルリセット”と呼ばれるものが挙げられる。グローバルリセットは、全てのPLL100、全てのDPLL150、全てのカウンタ(PLL、DPLL、シリアライザ、デシリアライザ内のカウンタ/ディバイダ/マルチプライア)、ならびに全てのFIFO(すなわちRAMアレー250および360)をリセットする。チャネルリセットは、ペアのレシーバ内と、互いに結合されたあるいはリセットされるチャネルを形成するために組合されたトランスミッタサブ回路内のFIFOをリセットする。チャネルリセットは、さらにリセットされるチャネル内のDPLLをリセットする。PLL、DPLL、シリアライザ、デシリアライザ、またはシンクロナイザFIFO等の各要素内のリセットされる構成部分は、前述した各図内のリセット信号の受信部によってより明らかにされている。
【0081】
前述したように、多様なタイプのリセットが実施される状況はPLDコア80内にプログラムすることができる。例えば、グローバルリセットはPLLによってロック喪失信号が出力された際に実行することができる。別の例として、チャネルリセットは、以下のいずれかの状況が検出された際に実行することができ:それらは(1)ランレングス違反、(2)デジタル(すなわちDPLL)ロック喪失、(3)ユーザによって定義されたエラーまたは異常状態(例えば、PLDコア80内におけるユーザのロジックがデータ伝送エラーを検出する)である。前述したように、ランレングス違反、ロック喪失、デジタルロック喪失の検出に使用されるパラメータは、勿論プログラム可能(例えばPLDコア80のプログラミングによって)とすることが好適である。
【0082】
図10においては単一の集積回路上に全てが示されているが、実施例によっては構成要素および/または機能のうちのいくつかを(完全にまたは部分的に)第2の集積回路上に設けることが好適である。例えば、図11Aには、全ての高周波PLL(図10のPLL100等)および全てのDPLL(図10のDPLL150等)がマルチチップモジュール800内の1つのチップ(集積回路)810上に設けられている説明的な実施例が示されている。図10内のその他の主要な機能要素(例えば、デシリアライザ60、シリアライザ340、シンクロナイザ70および330、ならびにPLDコア80)は、マルチチップモジュール内の第2のチップ(集積回路)820上に設けられている。チップ810および820は互いに独立しているがマルチチップモジュール800内において近接して組合わせることが好適である。例えば、チップ810と820の間において全てまたは殆どの信号ついて差動シグナリングを使用することができる。目的によっては(例えば、CDRまたは特定の高周波非CDRシグナリング等)、チップ820はシップ810を介して外部の回路と交信することができる。その他の目的において、チップ820は外部の回路と直接交信することもできる。高周波PLLおよびDPLLをPLDコア80等のその他の回路から分離することによって、このその他の回路との間の高周波干渉を低減することが可能になる。図11Aにはチップ810および820内の種々の要素がどのように相互接続されるかは示されていないが、この相互接続は基本的に図10に示されたものと同様であることが理解される。
【0083】
図11Bには、本発明に係るマルチチップモジュール800′の別の説明的な実施例が示されている。図11Bにおいて、マルチチップモジュールの1つのチップ830は、図11(チップ810)に示された全ての高周波PLL100およびDPLL150′を含んでいる。加えてこの回路チップ830は、PLL100の出力信号を2で分割してその結果をチップ840に付加する回路802を含んでいる。チップ830は、さらにデシリアライザ60′、シンクロナイザ70′、シンクロナイザ330′、シリアライザ340′を含んでいる。チップ830は、高周波外部(例えばCDR)クロックレジームと低周波PLDコアクロックレジームとの間において信号をトランスレートするために必要な動作の一部を実行する設定されている。チップ830は、特にこの機能のうちの高周波部分を実行する。チップ840は、この機能のうちの低周波部分を実行する。従って、チップ840は、PLDコア80、ならびにそれぞれ要素60′、70′、330′および340′に類似であるがより低い周波数で動作する追加的な要素60″、70″、330″および340″を備えている。図示された実施例において、チップ830は、信号によって示される情報に相関する最高(外部)周波数とこの最高周波数の半分の周波数の間で信号をトランスレートするために必要な全ての操作を実行する。チップ840は、最高周波数の半分の周波数とPLDコアクロック周波数の間において信号をトランスレートする操作を実行する。前記のことは、信号送信ならびに信号受信の両方に対して好適である。この方式により、チップ840は、最高または外部クロック信号周波数の半分よりも高い周波数有する信号を受信または処理する必要がなくなる。例えば、システムが1.25GHzのクロック信号周波数を扱っている場合、チップ830はこの周波数を625MHzにステップダウンしてチップ840に付加するために必要な全てのことを実行する。チップ840は625MHzよりも高い周波数を有するデータまたはクロック信号を取り扱うことはない。これは、高周波PLLおよびDPL
Lをオンボードに備えていないがチップ820が最高周波数のクロック信号(例えばチップ810からの)を処理する必要がある図11Aの実施例とは対照的である。
【0084】
図11Bの実施例の考えられる制限は、全周波数変換を要素802に相関する除数の倍数としなければならないことである。(この除数は2に限定されるものではなく、3または4等の数字とすることができる。)例えば、除数が2である場合、奇数ワード長(例えば3,5,7等のワード長)を簡便に非直列化または直列化することができない。図11Aの場合のように、チップ830と840の間を伝送される殆どまたは少なくとも多くの信号に対して差動シグナリングを使用することが好適である。
【0085】
図11Bの実施例について考えてみると、チップ830と840の間のデータ交信のデータ速度がチップ830から外部回路への接続に関連した最高周波数データ速度よりも低いため、チップ830の1つの外部データ接続のためにチップ830と840の間のより多数のデータ接続が必要となる。例えば、図11Bの回路802に相関する除数が2である場合、チップ830から外部回路への各データ接続のためにチップ830と840の間に2つのデータ接続が必要となる。このことは以下に記す図13Aおよび図13Bの説明によってより明らかにされる。これらの図の両方が図11Bの回路802に相関する除数が2であると仮定したものであるが、図13Aおよび図13Bの回路がその他の除数値のためにどのように変更し得るかが明らかとなっている。
【0086】
図13Aにはチップ830および840内のレシーバ回路がより詳細に示されている。デシリアライザ60′は、クロック速度CLKを有するシリアル入力データをそれぞれCLK/2のクロック速度を有するとともに元のシリアルデータ入力信号情報のそれぞれ半分を含んだ2つのパラレルデータ出力信号に変換する点を除いて、図5のデシリアライザ60に極めて類似している。(勿論、これら2つのデータ信号はなおシリアルデータ信号である。)これら2つのデータ出力信号のそれぞれは、チップ830のその他の回路(例えばシンクロナイザ70′(図11B)および出力ドライバ(図10の出力ドライバ342に類似)を分離して伝送することができ、その後チップ840に付加される。この信号経路内において、シンクロナイザ70′は、データ出力信号をリタイムしてディバイダ802のCLK/2出力信号とより良好に同期させるために使用することができ、前記の出力信号はさらに出力ドライバ(図10の出力ドライバ530に類似)等のその他の回路を介してチップ830の外部へ伝送されチップ840に付加される。(デシリアライザ60′はチップ830上のDPLL150からの復元されたCLK信号と共に動作するがディバイダ802はチップ830上のPLL100の出力信号と共に動作するため、このリタイミングが必要または有用なものとなる。これら2つの信号は同じ周波数を有するが、異なった位相を有することがあり得る。)
【0087】
図13Aのチップ840上において、各入力データは最初に入力ドライバ等(図10の入力ドライバ44に類似)のさらにその他の回路を介して伝送することができ、その後デシリアライザ60a″および60b″のうち適宜な1つにそれぞれ付加される。(デシリアライザ60a″および60b″は単一のディバイダ回路220″を共有しているように示されているが、必要であれば別々のディバイダ回路を代わりに使用することができる。)デシリアライザ60″のそれぞれは、(既に明らかなように)各デシリアライザ60″が元の入力シリアルデータの半分のみを処理する点を除いて、再び図5のデシリアライザ60に類似している。加えて、結合されたディバイダ回路220″は、J/2(Jではなく)によって受け取ったCLK/2信号を分割するためにのみ必要とされる。両方のデシリアライザ60a″および60b″のパラレル出力信号は、合わせて元のシリアルデータ入力信号の全パラレルデータ出力バージョンである。このパラレル出力信号は(例えば図10に関連して)前述したようにさらに処理される。例えば、チップ840上のシンクロナイザ70″は、パラレルデータ信号をPLDコア80に相関するクロックレジームにリタイムするために使用することができる。
【0088】
図13Bには、チップ830および840上のデータトランスミッタ回路がより詳細に示されている。シリアライザ340a″および340b″はそれぞれ図9のシリアライザ340に類似している。シリアライザ340a″および340b″はディバイダ回路380″を共有しているように示されているが、必要であれば各シリアライザがそれぞれ独自のディバイダを備えることもできる。各シリアライザ340a″および340b″は、全パラレル入力データの半分を2つのシリアル出力信号の一方にそれぞれ変換する。これらの信号は、チップ840から送出され(例えば図10の出力ドライバ342に類似する出力ドライバを介して)チップ830に付加される。チップ830上の入力ドライバ(例えば図10の44に類似)およびその他の回路がこれらの信号を受信し、シリアライザ340′の入力側にパラレル付加するために処理する。(シンクロナイザ330′は、チップ840上のシリアライザ340a″および340b″によって使用されるPLLに基づいたクロックレジームからのデータ信号をチップ830上のシリアライザ340′によって使用されるDPLLに基づいたクロックレジームにリタイムするために使用することができる。)シリアライザ340′は再び図9のシリアライザ340に類似しており、パラレルに受信した2つのデータ信号をシリアルデータ出力信号に変換する。
【0089】
このように、図13Aおよび図13Bは図11B内のチップ830および840内のいくつかの要素がどのように相互接続され得るかを示している。図11Bの要素のその他相互接続は一般的に図10に示されたものと同様にすることができる。
【0090】
図11Cには、本発明に係るマルチチップモジュール800″のさらに別の説明的な実施例が示されている。この実施例において、チップ860は、図10のデバイス500と同一かあるいは実質的に同一のものとすることができる。しかしながら、システムよって受信されたCDR信号をチップ860に伝送する前に“クリーンアップ”し、および/またはチップ860によって形成されたCDR信号を外部回路に伝送する前に同様に“クリーンアップ”するためのインタフェースチップ860が追加されている。従ってチップ850は外部回路からCDR信号を受信することができる。チップ850はPLL100′およびDPLL150′を使用してこれらの信号からクロックを復元する。チップ850はシンクロナイザ70′(これらの信号をバッファおよび/またはリタイムするために)を介してCDR信号を伝送し、また結合されたCLKREF信号を出力することもできる。これらのチップ850の出力CDR信号は、このチップ850が受信したものよりも一般的に良好な信号品質を有しているが、その他の点に関しては入力および出力CDR信号は同等なものとなる。チップ860はこのチップ850の出力信号を受信し、これらはより高い信号品質を有しているため元の信号よりも信頼性の高い処理を行うことができる。チップ850上において非直列化は必要とされず、チップ860上においてのみ実行することができる。チップ850による外向き信号処理も同様であり、チップ860からの入力CDR信号とチップ850から外部回路への出力信号との間においてバッファおよび/またはリタイムを行うためにシンクロナイザ330′を使用することを含んでいる。図11Aおよび図11Bの場合と同様に、チップ850と860の間で伝送される多くの信号(全てではない)について差動シグナリングを使用することが好適である。また、前述の説明により、チップ850と860の間において、モジュール800″によってCDR信号として受信されたものかあるいはモジュール800″によってCDR信号として出力されるもののいずれか信号に対してCDRシグ
ナリングが使用されることが少なくとも示唆されている。図11Aおよび図11Bの場合と同様に、図11Cに示された種々の要素の間の相互接続は一般的に図10に示されているものと同様である。
【0091】
以下の記述においては、既に説明した種々のマルチチップモジュール800,800′および800″の全てが参照符号800をもって総称される。
【0092】
図12には、データ処理システム1002内に設けられた本発明に係るPLD500またはマルチチップモジュール800が示されている。データ処理システム1002は以下の構成要素のうち1つまたは複数を備えており:それらはプロセッサ1004;メモリ1006;I/O回路1008;および周辺デバイス1010である。これらの構成要素はシステムバスまたはその他の相互接続要素1020を介して互いに結合され、エンドユーザシステム1040内に内蔵された回路基板1030上に装備されている。要素500/800およびその他の要素の間のいずれの相互接続も前述したCDRまたはLVDSシグナリングを使用して形成することができる。
【0093】
システム1002は、コンピュータネットワーキング、データネットワーキング、ビデオ処理、デジタル信号処理、またはプログラマブルあるいはリプログラマブルロジックデバイスの利点を活用することが望まれる、広範な適用形態で使用することができる。PLD/モジュール500/800は多様なロジック機能を広範囲に実行するために使用することができる。例えば、PLD/モジュール500/800はプロセッサ1004と組合されて動作するプロセッサまたはコントローラとして構成することができる。PLD/モジュール500/800は、さらにシステム1002内の共有リソースへのアクセスを仲介するアービタとして構成することもできる。さらに別の例として、PLD/モジュール500/800は、プロセッサ1004とシステム1002内の他の構成要素との間のインタフェースとして構成することもできる。システム1002は1つの例であり、本発明の視点ならびに精神は請求の範囲によってのみ定義されることは勿論である。
【0094】
本発明の特徴を有するPLD500またはマルチチップモジュール800、ならびにこれらのデバイスの種々の構成要素(例えば、先述したPLCおよびこのPLCを制御するプログラム可能な機能制御要素(“FCE”)を実施するために多様な技術を使用することができる。例えば、各PLCは、いくつかの入力を1つの出力に接続するためのスイッチまたはスイッチ群等の比較的単純なプログラマブルコネクタとすることができる。他方、各PLCは、接続を行うだけでなくロジック(例えば、複数の入力のロジック結合)を実行することができるより複雑な要素とすることもできる。後者において、各PLCはAND、NAND、OR、またはNOR等の機能を実施するp項ロジックとすることができる。PLCを構成するために適した要素の例としては、EPROM、EEPROM、パストランジスタ、伝達ゲート、アンチヒューズ、レーザヒューズ、メタルオプショナルリンク等が挙げられる。PLCおよびその他の回路要素は、多様なプログラマブル機能制御要素(“FCE”)によって制御することができる。(特定に実施形態(例えばヒューズおよびメタルオプショナルリンク)については独立したFCEデバイスは必要でない。)FCEもいくつかの異なった方式で実施することができる。例えば、FCEは、SRAM、DRAM、先入れ先出し(“FIFO”)メモリEPROM、EEPROM、機能制御レジスタ(例えば、ウォールストロームの米国特許第3473160号に記載)、強誘電メモリ、ヒューズ、アンチヒューズ等から構成することができる。前述の多様な例から、本発明は一回のみプログラム可能なデバイスおよびリプログラム可能なデバイスの両方に適用可能であることが理解される。
【0095】
以上の記述は単に本発明の原理を説明したものであり、当業者においては本発明の視点および精神を逸脱することなく種々の設計変更をなし得ることは勿論である。構成要素500/600上の種々のリソースの数は、図示ならびに記述された実施例とは異なった数とすることができる。
【特許請求の範囲】
【請求項1】
本願明細書に記載された回路。
【請求項1】
本願明細書に記載された回路。
【図1】
【図1A】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図7A】
【図8】
【図9】
【図10】
【図10A】
【図10B】
【図10C】
【図11A】
【図11B】
【図11C】
【図12】
【図13A】
【図13B】
【図1A】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図7A】
【図8】
【図9】
【図10】
【図10A】
【図10B】
【図10C】
【図11A】
【図11B】
【図11C】
【図12】
【図13A】
【図13B】
【公開番号】特開2011−142631(P2011−142631A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2011−645(P2011−645)
【出願日】平成23年1月5日(2011.1.5)
【分割の表示】特願2007−105344(P2007−105344)の分割
【原出願日】平成13年3月14日(2001.3.14)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願日】平成23年1月5日(2011.1.5)
【分割の表示】特願2007−105344(P2007−105344)の分割
【原出願日】平成13年3月14日(2001.3.14)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
[ Back to top ]