以下に、本発明のデータリカバリ回路の実施形態について説明する。
(第1の実施形態)
図1は、本発明のデータリカバリ回路の第1の実施形態を適用したシリアル転送部の物理層部を示す概略構成図である。図1に示す物理層部100は、データの送信を行う送信部101と、データの受信を行う受信部102とを有する。
このシリアル転送部を用いてデータの送受信を行うときは、物理層部100と同等機能を有し、1組の送信部122と受信部121とを有する物理層部120を伝送路106、107を介して対向させて配置する。
物理層部100は、基準クロックRefCLK1から周波数faのクロックを生成するPLL113を、物理層部120は、基準クロックRefCLK2から周波数fbのクロックを生成するPLL123をそれぞれ備えている。物理層部100、120は、PLL113、123によってそれぞれ生成される、周波数がそれぞれfa、fbのクロックに基づいて動作する。なお、以下の説明においては、物理層部100、120の送信部と受信部とからなる各組を「ポート」という。
データのシリアル転送は、ポート相互間においてポイント・ツー・ポイントで行われる。本実施形態における伝送路106、107は、送信と受信とは別個の伝送路により同時に行うことが可能な全2重回線を構成しているが、必ずしも全2重回線である必要はなく、半2重回線により構成されている場合でも、本発明のデータリカバリ回路を適用することができる。なお、伝送路106、107は、2本の線路によりそれぞれ構成されているが、無線により構成されていてもよい。
送信部101は、上位層から供給される送信データDtxに対して所定の変換規則に従った符号化を行うエンコーダ部103と、エンコーダ部103で符号化されたデータをシリアル変換するシリアライザ104と、シリアル変換されたデータを伝送路106に送信する送信出力部105とを有する。
伝送路106上のデータは、差動信号で伝送される。また、エンコーダ部103は、送信データDtxに8B/10B変換を施す。8B/10B変換は、8ビットのデータから10ビットのデータ(以下、「シンボルデータ」という。)に変換するものであり、Kコード(またはKキャラクタ)と呼ばれる1ビットの制御用の特殊符号(DtxK)を8ビットのデータに加える。
PLL113は、供給される基準クロックRefCLK1を基に、データ転送のため、各規格に定められた転送クロックBCLKと、転送クロックBCLKを10分周(エンコーダ部103が8B/10B変換を行う場合)した内部動作のためのクロックPCLKとを生成する。例えば、データ転送が2.5Gbpsで行われる場合は、PLL113は、2.5GHzの転送クロックBCLKと、250MHzのクロックPCLKを生成する。
PLL113は、エンコーダ部103にクロックPCLKを供給し、シリアライザ104にクロックPCLKと転送クロックBCLKとを供給することにより、各部を動作させる。また、物理層部100と上位層とのデータの受け渡しも、クロックPCLKに同期して行われる。
受信部102は、伝送路107により伝送された差動信号を二値化する受信入力部108と、受信入力部108によって2値化されたデータにデジタル処理を施してイコライズするDEQ115と、受信入力部108で2値化されたデータを復元するデータリカバリ部109と、復元したデータを10ビットのシンボルデータにパラレル変換するデシリアライザ110と、送信側と受信側のクロックとの周波数差を吸収するエラスティックバッファ111と、10ビットのシンボルデータを8ビットのデータに10B/8B変換するデコーダ112とを備えている。
なお、物理層部100に対向する物理層部120においても、送信部122は、供給される基準クロックRefCLK2に基づいてPLL123で生成される周波数fbの転送クロックにデータを同期させて送信する。
エラスティックバッファ111は、例えば、特殊符号の追加または削除を行うことにより、周波数差を吸収する。なお、この周波数差の許容値は、インタフェース規格毎に定められる。また、本実施形態において、エラスティックバッファ111は、デコーダ112の前段に設けられているが、後段に設けることにしてもよい。
また、本実施形態において、受信部102のデータリカバリ部109およびデシリアライザ110が本発明のデータリカバリ回路を構成するものとして説明するが、本発明のデータリカバリ回路の構成を限定するものではない。また、物理層部100のこれ以外の構成および機能は、データリカバリ回路の第1の実施形態との組み合わせにおいて任意に変更可能である。
また、本実施形態の物理層部100は、データリカバリ部109に供給する多相クロックやエラスティックバッファ111などに供給するクロックPCLKをPLL113で生成するが、PLL113で生成されたクロックPCLKや転送クロックBCLKは、シリアライザ104やエンコーダ部103等の送信部101にも供給され、PLL113が共用化されている。これは、対向する物理層部100、120が、独立の基準クロックRefCLK1、RefCLK2から生成されたクロックによりそれぞれ動作するようにしたためである。
図2は、本発明のデータリカバリ回路の第1の実施形態を示すブロック図である。図2に示すように、第1の実施形態のデータリカバリ回路は、オーバーサンプリング部1と、多相クロック生成部2と、多相クロック制御部1000と、シンボルデータ復元部3とを備えている。
ここで、オーバーサンプリング部1およびシンボルデータ復元部3の一部は、図1に示すデータリカバリ部109を構成し、シンボルデータ復元部3の他の一部は、図1に示すデシリアライザ110を構成している。
また、多相クロック生成部2は、図1に示すPLL113の一部を構成している。また、デシリアライザ110は、必ずしもデータリカバリ回路に設ける必要はなく、別個に設けてもよい。
また、本実施形態において、オーバーサンプリング部1は、本発明におけるサンプリング部を構成し、シンボルデータ復元部3は、本発明におけるデータ復元部を構成する。
多相クロック生成部2は、基準クロックRefCLKから生成された所定周波数のクロックを所定位相ずつシフトし、ほぼ等間隔の位相差を有する多相クロックを生成する。本実施形態では、多相クロック生成部2は、周期UIが定められている転送クロックBCLKの約1/2の周波数f2を有し、位相差が例えば1/8UIの多相クロックtck0〜tck15を生成する。
例えば、データ転送速度が2.5Gbps(UIが400ps)の場合には、多相クロック生成部2は、周期が800ps(周波数が1.25GHz)で位相差が50psずつである16個のクロックを生成する。
なお、多相クロックの周波数f2は、転送クロックBCLKの周波数の1/2である必要はなく、転送クロックBCLKの周波数の1/4でもよく、転送クロックBCLKの周波数と同一でもよい。例えば、多相クロック生成部2は、周波数f2が転送クロックBCLKの周波数の1/4の32個のクロックを多相クロックとして生成してもよい。
さらに、多相クロック生成部2によって生成される多相クロックの位相差は、転送クロックBCLKの周期UIの1/8UIに限定する必要はない。また、本実施形態のデータリカバリ回路は、多相クロック生成部2を含んで構成されているが、多相クロック生成部2をデータリカバリ回路とは別個に構成してもよい。
多相クロック制御部1000は、多相クロック生成部2によって生成された多相クロックtck0〜tck15にそれぞれ対応するクロックck0〜ck15と、クロックtck0と同位相のpck0と、ck8と同位相のpck8とを出力する。
また、多相クロック制御部1000は、シンボルデータ復元部3を構成する後述する選択信号生成部7によって出力される選択信号Selと、シンボルデータ復元部3を構成する後述するデータ選択部6によって出力される遅延選択信号dSelと、データリカバリ回路の実装状態に対する最適値として不図示のレジスタに設定された値を表す制御信号Ctlとに基づいて、クロックpck0およびpck8を除くクロックck0〜ck15のうちいくつかのクロックを停止する。
なお、本実施形態においては、制御信号Ctlが2ビットで表され、選択信号Selが3ビットで表されるものとして説明するが、制御信号Ctlおよび選択信号Selをそれぞれ表すビットの数を限定するものではない。
具体的には、多相クロック制御部1000は、図3に示すように、クロック選択部1001と、セレクタ1010〜1025と、バッファ回路1020、1021とを備えている。
クロック選択部1001は、図4に示す選択テーブルに基づいて、制御信号Ctl、選択信号Selおよび遅延選択信号dSelに従った切替信号s0〜s15をセレクタ1010〜1025にそれぞれ出力する。
例えば、図4において、クロック選択部1001は、制御信号Ctl[1:0]=0の場合には、選択信号Selおよび遅延選択信号dSelの値にかかわらずクロックtck0〜tck15の何れも停止させないよう各切替信号s0〜s15を出力する。
また、クロック選択部1001は、制御信号Ctl[1:0]=1かつ選択信号Sel[2:0]=1の場合には、遅延選択信号dSelの値にかかわらず、クロックtck0、tck2、tck8およびtck10を停止させ、他のクロックを停止させないよう各切替信号s0〜s15を出力する。
また、クロック選択部1001は、制御信号Ctl[1:0]=1、選択信号Sel[2:0]=7かつ遅延選択信号dSel[2:0]=0の場合には、クロックtck6、tck8およびtck14を停止させ、他のクロックを停止させないよう各切替信号s0〜s15を出力する。
図3において、セレクタ1010は、一方の入力端子にクロックtck0が入力され、他方の入力端子には"0"(Low)が入力され、クロック選択部1001から出力された切替信号s0に応じて、クロックtck0または"0"の一方をクロックck0として出力する。
なお、本実施形態において、セレクタ1010は、切替信号s0が"0"(Low)のとき"0"(Low)を選択し、"1"(High)のときクロックtck0を選択するものとする。
各セレクタ1011〜1025も、セレクタ1010と同様に、一方の入力端子に各クロックtck1〜tck15が入力され、他方の入力端子に"0"(Low)が入力され、クロック選択部1001から出力された各切替信号s1〜s15に応じて、各クロックtck1〜tck15または"0"の一方を各クロックck1〜ck15として出力する。
バッファ回路1020は、セレクタ1010と略同じ遅延量を有し、入力されたクロックtck0を遅延させ、セレクタ1010によってクロックtck0が選択されたときに出力されるクロックck0と略同位相のクロックpck0を出力する。
バッファ回路1021は、セレクタ1018と略同じ遅延量を有し、入力されたクロックtck8を遅延させ、セレクタ1018によってクロックtck8が選択されたときに出力されるクロックck8と略同位相のクロックpck8を出力する。
図2において、オーバーサンプリング部1は、多相クロック制御部1000から供給される多相クロックck0〜ck15により受信データDataを取り込み、オーバーサンプルデータOVSDをシンボルデータ復元部3に出力する。
シンボルデータ復元部3は、オーバーサンプルデータOVSDから10ビットのシンボルデータSYMを復元し、シンボルクロックSYMCLKを生成するもので、データリカバリ機能とデシリアライザ機能とを有する。なお、シンボルデータ復元部3は、多相クロックのうちの1つのクロック(図ではpck0が例示されている)で動作する。
このように、データリカバリ回路に、転送クロックBCLKの周波数f1よりも低い周波数f2に設定された多相クロックを用いれば、多相クロック生成部2の発振周波数を下げることができるので、高速化に対応しやすい。
次に、各部の詳細について説明する。
オーバーサンプリング部1は、16個のF/F(F/F0〜F/F15)からなるF/F回路4と、入力されたデータを1つのクロック(例えば、pck0)に同期させて出力する並列化部5と、データのビットを補完するビット補完部800とを備えている。
F/F0〜F/F15には、データ端子に受信データDataがそれぞれ共通に入力され、F/F0〜F/F15は、多相クロックck0〜ck15がそれぞれ立上るタイミングで受信データDataを取り込み、Q0〜Q15をそれぞれ出力する。
並列化部5は、例えば、2段構成のF/Fを有し、Q0〜Q15を、一旦出力Q0〜Q7と出力Q8〜Q15とに分けてラッチした後に、それらを合わせ、出力Q0〜Q15を、例えば、多相クロックの1つのクロック(ここではpck0とする)に同期させたオーバーサンプルデータTOVSDを出力する。
ここで、F/F0〜F/F15にそれぞれ入力されるクロックck0〜ck15の一部が停止されるため、クロックが停止されたF/Fから出力されたビットQ0〜Q15を補完する必要がある。このため、ビット補完部800は、選択信号生成部7から入力された選択信号Selに従って、ビットの補完を行う。
図4において、制御信号Ctl[1:0]=3かつ選択信号Sel[2:0]=2の場合には、シンボルデータ復元部3でサンプリングされるビットは、「0010001000100010」のなかで1が立っているビットである。ここで、ビットの並びは左から「b0,b1,...,b15」であるものとする。ビット補完部800は、この1が立っているビットでその周りのビットを補完する。
例えば、制御信号Ctl[1:0]=3かつ選択信号Sel[2:0]=2の場合には、ビット補完部800は、オーバーサンプルデータTOVSD[15:0]の各ビットを以下に示すように補完したOVSD[15:0]を出力する。
OVSD[ 0]=TOVSD[2]
OVSD[ 1]=TOVSD[2]
OVSD[ 2]=TOVSD[2]
OVSD[ 3]=TOVSD[2]
OVSD[ 4]=TOVSD[2]
OVSD[ 5]=TOVSD[2]
OVSD[ 6]=TOVSD[6]
OVSD[ 7]=TOVSD[10]
OVSD[ 8]=TOVSD[10]
OVSD[ 9]=TOVSD[10]
OVSD[10]=TOVSD[10]
OVSD[11]=TOVSD[10]
OVSD[12]=TOVSD[10]
OVSD[13]=TOVSD[10]
OVSD[14]=TOVSD[14]
OVSD[15]=(次の)TOVSD[2]
なお、(次の)TOVSD[2]は、1クロック遅れて入力されるTOVSDのb2を意味する。また、制御信号Ctlと選択信号Selとが他の組み合わせであった場合にも、ビット補完部800は、オーバーサンプルデータTOVSD[15:0]の各ビットを図4に示した選択テーブルに基づいて補完したOVSD[15:0]を出力する。
図5は、オーバーサンプリング部1の各主要信号の信号波形の一例を示す図である。図5において、(a)は、受信データDataの波形例、(b)は、データ転送クロック(実際にはオーバーサンプリング部1には存在しないが、説明の都合上記載した。)、(c−0)〜(c−15)は、多相クロックck0〜ck15、(d−0)〜(d−15)は、多相クロックによりF/F0〜F/F15に取り込まれ、F/F0〜F/F15からそれぞれ出力されるデータQ0〜Q15、(e−0)、(e−1)は、並列化部5に一旦取り込まれたデータQ0〜Q5、データQ8〜Q15、(f)は、並列化部5から出力されるオーバーサンプルデータOVSDを表している。
なお、図5においては、多相クロック制御部1000に入力される制御信号Ctlが0の場合、すなわち、全てのクロックck0〜ck15が停止されていない場合におけるオーバーサンプリング部1の各主要信号の信号波形を示している。
多相クロック制御部1000に入力される制御信号Ctlが0以外の場合には、図4に示したように、選択信号Selの値に応じてクロックs0〜s15のうち何れかのクロックが停止される。
(c−0)〜(c−15)にそれぞれ示す多相クロックck0〜ck15の周期は、(b)に示すデータ転送クロックの周期(UI)の2倍(2UI)に設定され、各多相クロックck0〜ck15は、隣接したクロック相互の位相差が等間隔になるように位相がシフトされている。
(a)に示す受信データDataに付された黒丸は、多相クロックck0〜ck15による各サンプリング点であり、この多相クロックck0〜ck15により取り込まれた各F/F0〜F/F15の出力データQ0〜Q15は、(d−0)から(d−15)のように変化する。なお、図5において、ビット列の左側はLSBで、時間的に速いサンプル点を表している。
並列化部5は、一旦、クロックpck0でQ0〜Q7を取り込み、(e−0)に示すようにQQ[0:7]を出力し、クロックpck8でQ8〜Q15を取り込み、(e−1)に示すようにQQ[8:15]を出力する。
そして、並列化部5は、次のクロックpck0でQQ[0:7]及びQQ[8:15]を取り込んで並列同期化し、(f)に示すように、オーバーサンプルデータOVSD[0:15]を出力する。
このように、並列化部5が、クロックpck0でQ0〜Q7を取り込み、クロックpck8でQ8〜Q15を取り込んだ後、次のクロックpck0でQ0〜Q15を取り込むのは、一度にQ0〜Q15を取り込むと、Q15やQ14に対する並列化部5のセットアップ時間が不足し、それらのデータが正常に取り込まれなくなるためである。
ここで、本実施形態では、並列化部5におけるデータの取り込みを、上述のように2段階に設定しているが、より安定してデータが取り込めるよう段数をさらに増やしてもよい。
一般に、受信データDataが立上る、あるいは立下るタイミングは、ランダムに、あるいは多種多様な要因により図5の斜線部(ア)で示すように変動する、いわゆるジッタが発生する。
このため、データが遷移するタイミング付近のサンプリングデータは、変動して正確に復元できないことがある。しかし、本実施形態によれば、図3において破線で囲んで示したように、このような問題も解決することができる。
次に、オーバーサンプルデータOVSDから、受信データを復元するシンボルデータ復元部3の構成およびその作用について説明する。
図2において、シンボルデータ復元部3は、データ選択部6と、選択信号生成部7と、デシリアライザ8と、コンマ検出部9とを備え、オーバーサンプルデータOVSDから10ビットのシンボルデータSYMを復元するとともに、位相が調整させたシンボルクロックSYMCLKを生成する。
オーバーサンプルデータOVSDは、本実施形態においては、転送データ2ビットを8位相のクロックでサンプリングした、16ビット構成のデータである。したがって、シンボルデータ復元部3は、この16ビットのオーバーサンプリングデータOVSDから、所定位相のクロックで取り込んだデータ(ビット)を選択して出力すればよい。
ただし、対向する物理層部120の送信部122から送られるデータに含まれる転送クロックと、物理層部100の受信部102でサンプリングに用いる多相クロック(クロックck0〜ck15)とが全く同一の周波数(または、多相クロックの周波数が転送クロックの周波数の自然数分の1)であれば、シンボルデータ復元部3がオーバーサンプリングデータOVSDを取り込む位相は、固定されたままの状態でよい。
しかし、通常は、多相クロックと転送クロックとは、ある範囲内の周波数差を有するので、シンボルデータ復元部3は、取り込み位相を徐々にずらし、本実施形態の場合には、通常は2個で、時折1個または3個のデータを選択的に出力する必要がある。
例えば、多相クロックと転送クロックとの周波数差が0.1%(1000ppm)であるとすると、転送データ1000ビットに対して1ビットのずれが生じ、オーバーサンプリングに用いられるクロックpck0の500サイクルに1回、1個または3個のデータが出力される。
選択信号生成部7は、オーバーサンプルデータOVSDのビット取り込み位相を指示する選択信号Selを生成する。
データ選択部6は、選択信号生成部7から出力される選択信号Selに従って、オーバーサンプリング部1から出力されたオーバーサンプルデータOVSDから1〜3個の復元データ(d0、d1、d2)を選択的に出力する。また、データ選択部6は、復元データの有効部分を示す状態信号S0、S1も出力する。
コンマ検出部9は、転送データに所定間隔で挿入された特殊符号として、コンマと呼ばれるコンマ符号を検出しコンマ検出信号Detを出力する。
デシリアライザ8は、コンマ検出信号Detをもとに、データ選択部6から供給される1〜3個の復元データ(d0、d1、d2)を10ビットのシンボルデータSYMにパラレル変換する。また、デシリアライザ8は、シンボルクロックSYMCLKの生成も行う。
図6は、選択信号生成部7の構成例を示す図である。図6において、選択信号生成部7は、両エッジ検出部20と、DPLL566とを備え、多相クロック制御部1000から供給されるクロックpck0を基準にして動作するように構成されている。
両エッジ検出部20は、オーバーサンプルデータOVSDのビット列から立上り及び立下りの両エッジを検出し、そのエッジ位置を示すエッジデータRxEdgeを出力する。
具体的には、両エッジ検出部20は、オーバーサンプルデータOVSD[0:15]と、オーバーサンプルデータOVSDを、1位相差分遅らせたデータdOVSD[0:15]との排他的論理和を演算する。
なお、dOVSD[0:15]は、1クロック前のOVSD[15]をpOVSD[15]と表せば、dOVSD[0:15]={pOVSD[15],OVSD[0:14]}で求めることができる。
DPLL566は、比較部21と、ループフィルタ562と、デジタルVCO563とを備え、入力されたエッジデータRxEdgeの位相に同期した位相を表す6ビットの位相データ(本発明における位相情報)Stを出力する。
比較部21は、エッジデータRxEdgeのエッジの位相とデジタルVCO563が出力する位相データStを比較し、その位相差データPDDatを出力する。
比較部21の構成を図7に示す。図7において、比較部21は、第1位相差検出部530a、530cと、第2位相差検出部530b、530dと、クリップ回路531a〜531dと、加算回路532とを備えている。
第1位相差検出部530aは、オーバーサンプリングデータOVSDの0ビット目〜3ビット目、第2位相差検出部530bは、オーバーサンプリングデータOVSDの4ビット目〜7ビット目、第1位相差検出部530cは、オーバーサンプリングデータOVSDの8ビット目〜11ビット目、第2位相差検出部530dは、オーバーサンプリングデータOVSDの12ビット目〜15ビット目に対してそれぞれ設けられている。
比較部21が受信する信号のパルス幅は、各種のジッタの影響により狭まっている可能性があるため、1UIに相当する時間内に複数のデータエッジが存在する場合がある。そのような場合であっても、各位相差検出部530a〜530dが2つ以上のデータエッジを検出しないように、比較部21は、上述したように構成されている。
本実施形態では、オーバーサンプル時の受信信号の最短のパルス幅が1/2UI以上であるシステムを仮定し、エッジ検出を1/2UIずつ行うことにしている。実際に使用するシステムの受信信号のパルス幅がさらに狭くなる可能性がある場合には、位相検出単位を更に細かく分けて行うことにより対応することが可能である。
各位相差検出部530a〜530dは、入力されたエッジデータRxEdgeの4ビット部分にエッジが存在しない場合には0を、エッジが存在する場合には、第1位相差検出部530a、530cでは図8、第2位相差検出部530b、530dでは図9に示すようにデジタルVCO563から出力される位相データStとの位相差を表す信号を出力する。
各クリップ回路531a〜531dは、入力データを位相補正用規定値でクリップする。例えば、±8でクリップする場合には、各クリップ回路531a〜531dは、入力データの値が−8以上かつ8以下のときには入力データをそのまま出力、8を超えるときには8を出力、−8未満のときには−8を出力する。なお、各クリップ回路531a〜531dは、他の値で入力データをクリップする場合も同様である。
加算回路532は、クリップ回路531a〜531dの出力を加算し、位相差データPDDatとして出力する。このように、エッジデータRxEdgeの各4ビット部分の位相差データをクリップ後に加算した位相差データPDDatが、比較部21から出力される。
図6において、比較部21から出力された位相差データPDDatは、ループフィルタ562に入力される。ループフィルタ562は、DPLL566のループ特性を決定するフィルタであり、比較部21が出力する位相差データPDDatを平滑化したデータVCOINをデジタルVCO563に出力する。ループフィルタ562の特性を変更することにより、DPLL566の特性を変更することができる。
図10にループフィルタ562の一例を示す。図10においてループフィルタ562は乗算器570、571、加算器572、575、リミット回路573およびF/F574を備えている。
乗算器570、571は、それぞれ固定倍率a、bの乗算器であり、入力された位相差データPDDatを固定倍する。乗算器570、571の倍率a、bを図示しないレジスタにより設定できる構成とすることによりDPLL566の特性を変更することができる。
また、加算器572、リミット回路573およびF/F574は、積算器を構成している。リミット回路573は、加算器572にオーバーフローあるいはアンダーフローが発生した時に出力を最大値あるいは最小値にリミットする回路である。
図6において、デジタルVCO563は、アナログPLLのVCOに相当し、位相データStを出力する。本実施形態では、デジタルVCO563は、6ビット(64値)でデータを出力するものする。この場合には、デジタルVCO563から出力される位相データStの1LSBは、1/64サイクル(1/64UI)の位相に相当する。
図11にデジタルVCO563の構成例を示す。図11において、デジタルVCO563は、加算器580およびF/F581を備えている。加算器580は、入力データVCOINとF/F581からのフィードバックデータを加算することにより積算器を構成している。デジタルVCO563は、F/F581が保持するビットのうち、上位6ビットをデジタルVCO563の位相データStとして出力する。
この構成により、デジタルVCO563は、比較部21から出力される位相差データPDDatがループフィルタ562で平滑化されたデータを積算していくため、デジタルVCO563から出力される位相データStは、位相を表す。
ここで、位相データStのビット数を多くすればするほど、位相データStの1ビットが表す位相が小さくなり、デジタルVCO563が位相データStで表現できる位相の精度が上がる。
デジタルVCO563から出力される位相データStは、比較部21に戻され、比較部21、ループフィルタ562、デジタルVCO563によるフィードバック制御が行われる。
このため、位相データStは、エッジデータRxEdgeの位相に追従することになる。なお、本実施形態において、DPLL566から出力される選択信号Selは、位相データStの上位3ビットからなる。
図2において、データ選択部6は、オーバーサンプリング部1から出力されたオーバーサンプリングデータOVSDと、選択信号Selとにより復元データd0、d1、d2を復元するとともに、復元データの有効部分を示す状態信号S0、S1を出力する。
図12にデータ選択部6の構成を示す。図12に示すように、データ選択部6は、F/F700、データ生成部701およびデータ状態信号生成部702を備えている。F/F700は、入力された選択信号Selを1クロック分遅らせた遅延選択信号dSelを生成する。
データ生成部701は、入力されたオーバーサンプリングデータOVSDと選択信号Selおよび遅延選択信号dSelとから復元データd0、d1、d2を生成する。図13にデータ生成部701の入力信号と出力信号の関係を示す。
データ状態信号生成部702は、データ生成部701が出力するデータの有効部分を示す状態信号S0、S1を生成する。図14にデータ状態信号生成部702の入力信号と出力信号の関係を示す。
図15は、デシリアライザ8の構成例を示す図である。図15に示すように、デシリアライザ8は、復元データd0、d1、d2が入力されるシフトレジスタ36と、シンボル変換部37と、シンボル同期制御部38とを備えている。シフトレジスタ36は、復元データd0、d1、d2を状態信号S0、S1に従って逐次シフトして保持し、保持した復元データをパラレルデータPDataとして出力する。
図16は、デシリアライザ8を構成するシフトレジスタ36の詳細な構成例を示す図である。図16に示すシフトレジスタ36は、F/F40(0)〜(11)と、マルチプレクサ41(1)〜(11)とを備えている。なお、図16において、F/F40(5)より後段のものは図示が省略されている。
F/F40(0)〜(11)は、縦列接続されてシフトレジスタを構成する。マルチプレクサ41(1)〜(11)は、状態信号S0、S1に従って、F/F40(0)〜(11)へ入力させる復元データd0、d1、d2をそれぞれ選択する。
各マルチプレクサ41(1)〜(11)は、入力された復元データd1、d0、d2の3入力のうち、上から3ビットシフト、2ビットシフト、1ビットシフトに対応し、{S1、S0}={0,1}のときは1ビットシフトを行うため一番下の入力を、{S1,S0}={1,1}のときは3ビットシフトを行うため一番上の入力を、その他のときは2ビットシフトを行うため真中の入力を選択して出力する。
また、F/F40(0)〜(11)は、出力Q0〜Q11をパラレルデータPData[0:11]として出力する。これにより、1〜3個ずつ復元されるデータがパラレル変換される。
図2において、コンマ検出部9は、デシリアライザ8から出力されたパラレルデータPData中に所定のコンマ符号のパターンが含まれているか否かを検出し、その検出結果を表す検出信号Detと、検出された場合の検出位置信号DetPos(例えば、検出されたコンマ符号のパターンのLSBのビット数)をデシリアライザ8に出力する。
なお、8B/10B変換におけるコンマ符号は、左側をFRB(First Recieved Bit)とすると、「0011111010」又は「1100000101」である。ここで、シンボルの区切りを示す属性を有する他の符号として、「0011111001」や「1100000110」が検出される場合もある。
例えば、PData[11:0]が「100111110101」のときは、PData[10:1]がコンマ符号と一致するので、検出信号Detとして「H」、検出位置信号DetPosとして1がコンマ検出部9から出力される。
図17は、図15に示したシンボル同期制御部38とシンボル変換部37とを説明する信号波形図である。図17において、PData[11]は、最初に受信されたビット(FRB)であり、PData[0]は、最後に受信されたビット(LRB)である。
また、(a)は、クロックck0、(b)は、PData[11:0]、(c)は、検出信号Det、(d)は、検出位置信号DetPos、(e−0)、(e−1)は、状態信号S0'、S1'(ここで、S0'、S1'は、S0,S1をそれぞれ1クロック分遅延させた信号である。)、(g)は、パラレルデータPDataを1クロック遅延させたdPData、(h)は、シンボルクロックSYMCLK(ラッチイネーブル信号LEと同一信号)、(i)は、パラレルデータPDataのシンボル有効位置を示すシンボル位置信号LEPos、(j)は、10ビットのシンボルデータSYM信号を表している。
今、(b)に示すパラレルデータPData中にコンマ符号のパターンCOMが検出されると(拡大図の下線部)、コンマ検出部9から(c)に示す検出信号Detと(d)に示す検出位置信号DetPosとが出力される。
シンボル同期制御部38は、カウンタを内蔵しており、この検出信号Detをスタート信号、検出位置信号DetPosをカウント初期値とし、カウントを開始する。このカウンタは、デシリアライザ8に入力される1〜3個の復元データの個数分だけカウントされる。
すなわち、シンボル同期制御部38は、状態信号S0'、S1'に基づいてカウントを行い、カウント値が10ビット(1シンボル分)貯まる毎に、(h)に示すラッチイネーブル信号LEを出力(LEを「H」に)し、カウント値を−10にする。
同時に、シンボル同期制御部38は、パラレルデータPDataの有効位置を示す(i)に示すシンボル位置信号LEPosとしてカウント値を出力する。なお、状態信号は、各ブロックでの処理時間分遅延(本例では1クロック分)させた(e−1)、(e−2)にそれぞれ示すS0'、S1'を用いてカウントされる。
シンボル同期制御部38は、{S1',S0'}が{0,1}のときは、カウントを1進め、{S1',S0'}が{1,1}のときは、カウントを3進め、その他のときは、カウントを2進める。
シンボル変換部37は、パラレルデータPDataを1クロック分遅延させた(g)に示すdPDataから、ラッチイネーブル信号LEが「H」のときにシンボル位置信号LEPosにしたがって(j)に示す10ビットのシンボルデータSYM[0:9]を取り出す。
したがって、シンボル位置信号LEPosが、0、1、2であればそれぞれ、dPData[9:0][10:1][11:2]が取り出される。なお、シンボル位置信号LEPosが3以上であれば、それ以前のクロックで取り出されるので、ここで取り出すデータは、存在しない。
また、シンボル同期制御部38からは、ラッチイネーブル信号LEと同一の信号がシンボルクロックSYMCLKとして出力される。このようにすれば、シンボルクロックSYMCLKに同期させて10ビットのシンボルデータSYMが復元できる。
なお、シンボルクロックSYMCLKの周期は、通常、クロック(ck0)の5クロック分(転送用クロックの10クロック分)であるが、送信側と受信側の周波数差により、4クロック分または6クロック分になることがある。この差分は、図1を参照して説明したエラスティックバッファ111で吸収される。
図18は、PLL113の構成例を示す図である。図18に示すPLL113は、分周器50、58と、位相周波比較器51と、ローパスフィルタ52と、電圧制御発振器53と、分周回路55とを備えており、基準クロックRefCLKから、転送クロックBCLKと、内部動作用クロックPCLKと、多相クロックck0〜ck15とを生成する。
電圧制御発振器53は、4段の差動バッファ54a〜54dが接続されたリングオシレータで構成され、8位相のクロックc0〜c7を生成し、そのうちの1つを転送クロックBCLKとして出力する。
分周器50は、転送クロックBCLKを10分周し、位相周波比較器51にフィードバックする。位相周波比較器51は、基準クロックRefCLKと分周器50の出力との位相比較を行い、この位相差情報に基づき内在するチャージポンプを駆動する。
ローパスフィルタ52は、チャージポンプ出力を平滑化し制御電圧Vcを電圧制御発振器53に供給する。電圧制御発振器53内の差動バッファ54a〜54dは、この制御電圧Vcに従って遅延量が変化し、位相同期制御を行う。例えば、基準クロックRefCLKとして250MHzのクロックを供給すると、電圧制御発振器53は、2.5GHzの転送クロックBCLKを生成する。
分周器58は、転送クロックBCLKを10分周してクロックPCLKを生成する。分周回路55は、クロックc0〜c7が入力される8つの2分周器(トグルF/Fなどにより構成)56a〜56hを備え、分周回路55からは、正転及び反転信号が出力される。
また、これら2分周器56a〜56fは、リセット回路57の出力RSTBによりリセットされ、図5に示す(c−0)ck0から(c−15)ck15となるように各クロックの位相を調整する。
すなわち、8位相クロックc0〜c7が2分周されることにより、転送クロックBCLKの1/2の周波数で、16位相のクロックck0〜ck15が2分周器56a〜56hによって生成される。
図19は、複数の物理層部とPLLとの関係を示す図である。図19におけるPLL150は、多相クロック生成部2を兼ね、複数の物理層部(ここでは第1及び第2レーン物理層部151、152を示し、他は図示が省略されている。)に、転送クロックBCLKとクロックPCLKと多相クロックck0〜ck15とを共通に供給するように構成されている。
第1レーン物理層部151は、送信部101−1と、受信部102−1(本実施形態のデータリカバリ回路を有する)とを備え、第2レーン物理層部152も、第1レーン物理層部151と同様に送信部101−2と、受信部102−2(本実施形態のデータリカバリ回路を有する)とを備えている。
PLL150には、基準クロックRefCLKが供給され、PLL150は、各送信部101−1、101−2に転送クロックBCLK、クロックPCLKを供給し、各受信部102−1、102−2に多相クロックck0〜ck15を供給する。このように、PLL150を複数の物理層部で共用化することもできる。
以上に説明したように、本実施形態のデータリカバリ回路は、データリカバリに必要としないオーバーサンプリングデータOVSDのビットに対応するF/Fに供給するクロックを停止するため、従来のデータリカバリ回路と比較して消費電流を減らすことができる。
また、本実施形態のデータリカバリ回路をLSI化する場合には、発熱対策のため高価なパッケージを用いる必要や、大量の電流を回路に供給するために多数の電源用パッドを用いる必要がなくなる。
さらに、確保しなければならないパッド間隔とパッド数との関係でLSIのチップサイズが決まるため、本実施形態のデータリカバリ回路をLSI化する場合には、チップサイズを抑えることができ、コストを抑えることができる。
また、本実施形態のデータリカバリ回路は、転送クロックBCLKの1/2の周波数で16位相によるオーバーサンプリングから、例えば転送クロックBCLKの1/4の周波数で32位相によるオーバーサンプリングに容易に変更し、動作周波数をさらに下げることにより、転送データのレートをさらに高くすることもできる。
また、本実施形態のデータリカバリ回路は、受信データとは同期していないクロックによってデータを復元することができるので、多相クロックの生成は転送クロックBCLKの生成と共用化可能であり、チップサイズを抑えることができる。
(第2の実施形態)
本発明のデータリカバリ回路の第2の実施形態を図20に示す。なお、本実施形態においては、本発明のデータリカバリ回路の第1の実施形態の構成要素と同一な構成要素には、同一の符号を付して説明を省略する。
図20において、本実施形態のデータリカバリ回路は、オーバーサンプリング部2001と、多相クロック生成部2と、多相クロック選択部2000と、シンボルデータ復元部3とを備えている。
多相クロック選択部2000は、多相クロック生成部2によって生成された多相クロックtck0〜tck15のうち、データのサンプリングに使用するクロックを選択して出力する。なお、多相クロック選択部2000は、本発明のデータリカバリ回路の第1の実施形態で説明した多相クロック制御部1000と同様に、クロックpck0、pck8を出力する。
具体的には、多相クロック選択部2000は、クロックckaとしてtck0を常に選択する。また、多相クロック選択部2000は、図4に示した選択テーブルにおいて、制御信号Ctl[1:0]=3のときに、1が立っているクロックc0〜c15に対応するクロックtck0〜tck15をクロックckb〜ckeとしてそれぞれ選択する。
すなわち、多相クロック選択部2000は、選択信号Sel=0の場合には、ckbとしてtck0を選択し、ckcとしてtck4を選択し、ckdとしてtck8を選択し、ckeとしてtck12を選択する。
また、多相クロック選択部2000は、選択信号Sel=1の場合には、ckbとしてtck1を選択し、ckcとしてtck5を選択し、ckdとしてtck9を選択し、ckeとしてtck13を選択する。
また、多相クロック選択部2000は、選択信号Sel=2の場合には、ckbとしてtck2を選択し、ckcとしてtck6を選択し、ckdとしてtck10を選択し、ckeとしてtck14を選択する。
また、多相クロック選択部2000は、選択信号Sel=3の場合には、ckbとしてtck3を選択し、ckcとしてtck7を選択し、ckdとしてtck11を選択し、ckeとしてtck15を選択する。
また、多相クロック選択部2000は、選択信号Sel=4の場合には、ckbとしてtck0を選択し、ckcとしてtck4を選択し、ckdとしてtck8を選択し、ckeとしてtck12を選択する。
また、多相クロック選択部2000は、選択信号Sel=5の場合には、ckbとしてtck1を選択し、ckcとしてtck5を選択し、ckdとしてtck9を選択し、ckeとしてtck13を選択する。
また、多相クロック選択部2000は、選択信号Sel=6の場合には、ckbとしてtck2を選択し、ckcとしてtck6を選択し、ckdとしてtck10を選択し、ckeとしてtck14を選択する。
また、多相クロック選択部2000は、選択信号Sel=7の場合には、ckbとしてtck3を選択し、ckcとしてtck7を選択し、ckdとしてtck11を選択し、ckeとしてtck15を選択する。
なお、本実施例では、構成が単純になるように、多相クロック選択部2000が上述したように出力するクロックを選択するようにしたが、選択信号Sel=7かつ遅延選択信号dSel=0の場合のみ、5つのクロックが必要となる。このため、多相クロック選択部2000は、選択信号Sel=7かつ遅延選択信号dSel=0とならない場合には、クロックckaを停止するようにしてもよい。
また、多相クロック選択部2000は、選択信号Sel=0かつ遅延選択信号dSel=7の場合には、3つのクロックのみが必要となるため、クロックckaおよびckbを停止するようにしてもよい。
オーバーサンプリング部2001は、5個のF/F(F/Fa〜F/Fe)からなるF/F回路2002と、入力されたデータを1つのクロック(例えば、pck0)に同期させて出力する並列化部2003と、データのビットマッピングを行うビットマッピング部2004と、ビット補完部800とを備えている。
F/F回路2002の構成する各F/Fa〜F/Feは、それぞれ入力されるクロックのタイミングでシリアル伝送データ(Data)をサンプルする。
並列化部2003は、入力されたビットデータ(Qa〜Qe)を1つのクロック(本実ここではpck0とする)に同期させた5ビットのデータPOVSDを出力する。
並列化部2003は、図21に示すように、F/F2010a〜2010e、2011a〜2011eを有し、これら各F/Fのうち、F/F2010a〜2010c、2011a〜2011eには、pck0が入力され、F/F2010d〜2010eには、pck8が入力される。
また、F/F2010a〜2010eには、ビットデータQa〜Qeがそれぞれ入力される。F/F2010a〜2010eの出力データは、F/F2011a〜2010eにそれぞれ入力され。
このように、F/F2011a〜2011eの出力データQa〜Qeは、5ビットのデータPOVSDを構成する。
ビットマッピング部2004は、並列化部2003によって出力された5ビットのデータPOVSDを、本発明の第1の実施形態と同じように16ビットのデータTOVSDとして出力するためのマッピングを行う。
選択信号Sel=2の場合には、ビットマッピング部2004の入出力データの関係は例えば図22に示すようになる。例えば、ビットマッピング部2004は、POVSDの各ビット「00110」(左側からPOVSD[0]、POVSD[1]、POVSD[2]、POVSD[3]、POVSD[4])を16ビットのデータTOVSDにおける実際のサンプリング位置にマッピングする。
すなわち、図22においては、ビットマッピング部2004は、POVSD[0]をTOVSD[0]に、POVSD[1]をTOVSD[2]に、POVSD[2]をTOVSD[6]に、POVSD[3]をTOVSD[10]に、POVSD[4]をTOVSD[14]にそれぞれマッピングする。
上述したTOVSDの各ビット以外のビットに関しては、どのような値になっていても問題ないが、本実施形態において、ビットマッピング部2004は、これらビットに"0"をマッピングするものとする。TOVSDは、ビット補完部800に入力され、ビットが補完されたデータOVSDとして出力される。
なお、本実施形態において、オーバーサンプリング部2001は、第1の実施形態のオーバーサンプリング部1と同じオーバーサンプリングデータOVSDを得ることができるため、シンボルデータ復元部3は、第1の実施形態と同じ構成のものを使用することができる。
図23は、オーバーサンプリング部2001の各主要信号の信号波形の一例を示す図である。図23において、(a)は、受信データDataの波形例、(b)は、データ転送クロック(実際にはオーバーサンプリング部2001には存在しないが、説明の都合上記載した。)、(c−a)〜(c−e)は、多相クロックcka〜cke、(d−a)〜(d−e)は、多相クロックによりF/Fa〜F/Feに取り込まれ、F/Fa〜F/Feからそれぞれ出力されるデータQa〜Qe、(e−0)、(e−1)は、並列化部2003に一旦取り込まれたデータPQQ[0:2](F/F2010a〜F/F2010cの出力に相当)、データPQQ[3:4](F/F2010d〜F/F2010eの出力に相当)、(f−0)は、並列化部2003から出力されるオーバーサンプルデータPOVSD、(g−0)は、ビットマッピング部2004によってマッピングされたオーバーサンプルデータTOVSDを表している。
なお、図23においては、多相クロック生成部2001に入力される選択信号Selが2の場合におけるオーバーサンプリング部2001の各主要信号の信号波形を示している。
(c−a)〜(c−e)に示す多相クロックck0〜ck15の周期は、(b)に示すデータ転送クロックの周期(UI)の2倍(2UI)に設定され、各多相クロックck0〜ck15は、隣接したクロック相互の位相差が等間隔になるように位相がシフトされている。
(a)に示す受信データDataの黒丸は、多相クロックck0〜ck15による各サンプリング点であり、この多相クロックck0〜ck15により取り込まれた各F/Fa〜F/Feの出力データQa〜Qeは、(d−a)から(d−e)に示すように変化する。なお、図23において、ビット列の左側はLSBで、時間的に速いサンプル点を表している。
並列化部2003は、一旦、クロックpck0でQa〜Qcを取り込み、(e−0)に示すようにPQQ[0:2]を出力し、クロックpck8でQd〜Qeを取り込み、(e−1)に示すようにPQQ[3:4]を出力する。
そして、並列化部2003は、次のクロックpck0でPQQ[0:2]及びPQQ[3:4]を取り込んで並列同期化し、(f−0)に示すように、オーバーサンプルデータPOVSD[0:4]を出力する。
以上に説明したように、本実施形態のオーバーサンプリング部2001は、第1の実施形態のオーバーサンプリング部1と比較して、F/Fの数を48個から15個に減らすことができる。したがって、消費電流を大幅に減らすことができ、回路規模を小さくすることができる。
なお、本実施形態では、ビットマッピング部2004によって出力されるデータOVSDのデータフォーマットを第1の実施形態にあわせるようにビットマッピング部2004を構成したが、オーバーサンプリング部2001の構成からビットマッピング部2004を省き、シンボルデータ復元部3が各ビットをマッピングするようにしてもよい。
また、図20は、オーバーサンプリング部2001がサンプリングするビット数が3〜5ビットの場合に対応した構成を示しており(図4における制御信号Ctl=3の場合に相当する)、F/F回路2002には、5個のF/Fが必要となる。
また、図4に示した選択テーブルにおいて、制御信号Ctl=2の場合には、サンプリングするビット数が7〜9ビットとなるため、F/F回路2002には、9個のF/Fが必要になり、並列化部2003には、18個のF/Fが必要になる。
したがって、本実施形態では、2UIあたりのサンプリングを行うためF/Fの数を5個としているが、図4において、制御信号Ctl=2に対応した9個のF/FをF/F回路2002に設け、多相クロック選択部2000は、9本の多相クロックを出力し、制御信号Ctl信号に応じて、各クロックを停止するようにしてもよい。